Ctrl+r
入力履歴から後方検索
Enter
検索したものを実行
Ctrl+g
検索を中止
Ctrl+a
行頭へ移動
Ctrl+e
行末へ移動
Ctrl+u
カーソルから行頭の文字列を切り取り
Ctrl+k
カーソルから行末の文字列を切り取り
Ctrl+y
ペースト
Alt+f, Alt+b
単語単位で移動
ファイル名を指定してその中身を置換
history番号を指定して実行 !<番号>番号>
特定のディレクトリを除外してzip
zip -r foo.zip foo_dir -x bar/**\/* hoge/**\/*
名前つきパイプ
<(コマンド)
はコマンドの出力結果を持つ擬似ファイルのパスに置き換わる。
cd -
は直前のディレクトリに移動する
cp foo{,.txt}
はcp foo foo.txt
と同じ
(コマンド)
はサブシェルで親シェルの環境変数やカレントディレクトリを変更しない
$変数名
で展開
`who`
と${who}
はwho
が実行される
単なる変数はシェルのプロセス内でのみ利用することができる
環境変数はシェルから生じたプロセスから利用することができる
export 変数名
で変数名を環境変数にすることができる
alias foo='git status'
関数の引数 $1, $2
for
for a in cat foo.txt
; do echo $a; done
for a in *.txt; do echo $a; done
for a in a b c; do echo $a; done
for ((i = 0; i < 5; i++)); do echo $i; done
for ((i = 0; i < 5; i++)); do echo $i; done > file_name
while [$i -lt 0]
do
...
done
until [$i -lt 0]
do
...
done
if
if [ -e file_name ] then
...
elif [-d foo ]
...
else
...
fi
-e A Aが存在している
-d A Aがディレクトリ
string1 = string2 文字列が等しい
string1 = string2 文字列が異なる
-gt -ne -ge -lt -le -eq 数値の比較
-a AND
-o OR
(条件) 条件のグループ
&& ||
.bash_profileは起動時に読み込まれる環境変数の定義
.bashrcはシェルの起動時に読み込まれる
sourceで反映する
export HISTCONTROL=ignoredups
で重複している履歴を保存しない
export HISTSIZE=2000
で履歴を2000件保存する
export HISTFILESIZE=2000
で2000行分の履歴を保存する
'
と"
で囲まれた文字列は展開しない
foo=bar
echo $foo
// => bar
echo ${foo}hoge
// => barhoge
// 値があるかどうか
echo ${a:-b}
// => b
a=c
echo ${a:-b}
// => c
a=
echo ${a:=b}
// => b
echo ${a:=c}
// => b
echo ${a:+c}
// => c
a=
echo ${a:+c}
// =>
a=b
echo ${a:?ABC}
// => b
a=
echo ${a:?ABC}
ABC
// 後ろから文字列を取り除く
a=1a2a3
echo ${a%a*}
// => 1a2
echo ${a%%a*}
// => 3
// 前から文字を取り除く
echo ${a#*a}
// => 2a3
echo ${a##*a}
// => 3
文字列の長さ
${#foo}
ファイルディスクリプタ
標準入力 0
標準出力 1
標準エラー出力 2
bar.txtと標準エラー出力をつなげる
foo 2> bar.txt
foo 10< bar.txt 80> hoge
標準エラー出力の出力先を標準出力にする
foo 2>&1
下記の2つは同じではない
foo 1> bar 2>&1
foo 2>&1 1> bar
exit <終了ステータス>
処理をやめる
exec
コマンドの起動、標準入力と標準出力の切り替え
trap
シグナルハンドラの登録