- sedの正規表現
- 実行ユーザがあるグループに属しているか。
id -nG | awk '{ for(i = 1; i <= NF; i = i + 1) if($i ~ /^wheel$/) print $0 }'
- awk
- 無限ループ
while :
do
# cmd
# :
done
- シェルの特殊変数
- $0
- $1,...,$9
- "$@"
- $*
- $#
- $$
- $?
- $!
- 最後に実行したバックグラウンドプロセスのプロセスID
-
{ ls /var && echo reachable } && echo success
{ ls /notfound && echo unreachable } || echo fail
- dig
- ShellScript?
リダイレクト
cmd1 2>&1 | cmd2
range loop
i=0; while [ $i -lt 100 ]; do
echo $i
i=$(expr $i + 1)
done
パスワード確認
while :
do
echo "main db reader user passwd:"
stty -echo
read DB_READER_PASSWD
stty echo
echo "main db reader user passwd(please retype):"
stty -echo
read DB_READER_PASSWD2
stty echo
[ $DB_READER_PASSWD = $DB_READER_PASSWD2 ] && break
done
環境変数
export
unset
シェル内で実行
(...)
. source-file
UNIXは-文化
ps
ps (){
ps aux | grep $1 | grep -v grep
}
シンボリックリンクの解決
realpath(){
if [ -L $1 ]; then
return $(stat -c %N $1 | awk '{print $3}' | sed -e "s:[\`]::" -e "s:.$::")
else
return $1
fi
}
sed
sed -i 対象のファイル -e "コマンド" -e "コマンド"
自身のパスを取得する
# resolve simbolic link
if [ -L $0 ]; then
SELF=$(stat -c %N $0 | awk '{print $3}' | sed -e "s:[\`]::" -e "s:.$::")
else
SELF=$0
fi
SELF_DIR=$(cd $(dirname $SELF);pwd)
BASE_DIR=$(cd $SELF_DIR/../;pwd)
test
test num1 -eq num2 num1 = num2
test num1 -ne num2 num1 != num2
test num1 -lt num2 num1 < num2
test num1 -le num2 num1 <= num2
test num1 -gt num2 num1 > num2
test num1 -ge num2 num1 >= num2
test str1 = str2 str1 == str2
test str1 != str2 str1 != str2
test -z str 0 == len(str)
test -n str 0 < len(str)
test file1 -nt file2 file1.time > file2.time
test file1 -ot file2 file1.time < file2.time
test -d file isdir(file)
test -f file isfile(file)
test -s file 0 < size(file)
test -e file isexist(file)
test -r file isreadable(file)
test -w file iswritable(file)
test -x file isexecutable(file)
test -L file islink(file)
test exp1 -a exp2 exp1 and exp2
test exp1 -o exp2 exp1 or exp2
test \( exp1 -o exp2 \) -a exp3 (exp1 or exp2) and exp3
[ ! -e file ] で否定
http://www.geocities.jp/geo_sunisland/if_and_test.html
リファレンス
[http://cyberam.dip.jp/linux_command/shellscript/shellscript_main.html シェルスクリプト(Bash)]
- 時刻設定
- GNU date -s 0700
- BSD date 0700
- サブシェル
(
cd tmp
touch test
)
- 末尾は&&でつながなくてもいいが、つないでおけばエラーで中断する。
- statはBSDとGNUで引数が違う
- zshで環境変数を設定するのはexport、削除するにはunset
- 株式会社 アドバンスソフト - PukiWiki : /etc/profile.d
- cygwin
- 入れるもの
- chere
- 指定のフォルダをカレントディレクトリとしてcygwinを開く機能をエクスプローラーに追加できる
- diffutils
- make
- openssh
- subversion
- zsh
- ディレクトリはMakeのターゲットにできない
- Makefileの中で$をつかいたいときは$$とエスケープ
- zshの$~の環境変数展開は\でエスケープできる
- makeのコマンドでcdしたいときは以下の行を; \でつなぐ
- ディレクトリのpermissionで、xはディレクトリのファイルのリストを取得する権限に当たる。xがない場合、ディレクトリ内のファイルへアクセスすることができなくなる気がする。
- 教えて!goo シェルスクリプト内のcdで、カレントディレクトリを変えるには?
- ディレクトリを丸ごと移動
- ファイル検索
find ディレクトリ -name "検索するファイル名"
- viを使い倒そう
- killで死なないコマンドを殺す
kill -KILL pid
- @IT:Linux起動の仕組みを理解しよう[rcスクリプト編]
- SYONテクニカル: 「daemontools」を利用したサービス監視
- 再帰的にchmodする