知らないことが結構あったのでメモ
いろいろな実行方法
パイプライン
前のコマンドの出力(標準出力)が次のコマンドに入力(標準入力)されます。
コマンド1 | コマンド2 | ...
コマンドリスト
- 「;」(セミコロン)で区切ることで、1行に複数のコマンドを書くことができます。
- コマンドを「&&」で区切って書くと、前のコマンドが成功した場合(終了コードが0の場合)のみ、後ろのコマンドが実行されます。
- コマンドを「||」で区切って書くと、コマンド1が正常終了以外(終了コードが0以外)だったら、コマンド2を実行されます。
コマンド置換
「$()」で囲まれた部分は、そのコマンドの実行結果に置き換えられます。
$ touch $(date +%F) $ ls
2008-09-05
ブレース展開
$ mkdir {dir1,dir2,dir3} $ ls
dir1/ dir2/ dir3/
シェルの変数展開
変数から値を取り出すときに使われるのが変数展開です。「$変数名」または「${ 変数名 }」のように使います。
変数展開 | 説明 |
${パラメータ#パターン} | パラメータ前方から、パターンに最短一致した部分を除く |
${パラメータ##パターン} | パラメータ前方から、パターンに最長一致した部分を除く |
${パラメータ%パターン} | パラメータ後方から、パターンに最短一致した部分を除く |
${パラメータ%%パターン} | パラメータ後方から、パターンに最長一致した部分を除く |
$ mypath=/home/hoge/foo.txt $ echo ${mypath%.*} → 拡張子を除く
/home/hoge/foo
$ echo ${mypath##/*/} → ファイル名のみを得る
foo.txt