引数チェック
for文でn回繰り返し
2つ飛ばしで1から10まで繰り返したい場合などは,
とする. 一行で書こうと思ったら,
のように,セミコロンで改行を表現する.'''do'''の直後には不要.
bcでちょっとした計算も
とすると,3.0から5.0まで0.2刻みで出力される.
書式付き出力
printfを用いる.
などとすれば二桁で出力される.
1から100までの連番ディレクトリを作りたい時など
上記のテクニックを用いて,
などとすれば,hoge001からhoge100までの連番ファイルが作成される.ここで「円マーク」はバックスラッシュ. これはもっと簡単に,
や
で実現できるようだ.
Here doc
EOF
のみの行までのテキストをcommand
への入力とすることができる.
その結果の出力は,そのcommand
と同じ行に> out.txt
のように書く.
実行スクリプトの絶対パス
tarで特定のディレクトリやファイルを除いてまとめる
とすると,hoge1.txt
を除いてhoge
ディレクトリがtarされる.
複数ファイルを除外したい場合
とすると,exclude.txt
内に記載されているhoge1.txt
とhoge2.txt
が除外されてtarされる.
この-X FILE
オプションは,--exclude-from FILE
と同等.
多量のファイル/ディレクトリをsshで転送する
00001
から00500
までの500個のディレクトリを送る場合を考える.
のようにして,tar
でまとめたデータを転送して,リモートで展開するという手順.
xargsを用いた並列処理
xargsコマンドはパイプから引数を受け取って,受け取ったすべてに対して同じ処理をする.
例えば次の例では,あるディレクトリ内に,smpl
から始まるディレクトリがたくさんあり,その全てのディレクトリ内で some_command
を実行する.
-I {}
で,xargsのコマンド(ここではbash -c 'cd {}; some_command; cd ..'
)内の{}
をパイプから渡される文字列に変換.-P 4
で並列数を指定.- xargs コマンドの引数に,bashを渡して,bash の引数として
-c 'cd {}; some_command; cd ..'
とすることでコマンドの組み合わせを xargs に与えることができる.
上記のコマンドは,
ともできるが,逐次処理されるので大量のディレクトリに対して作業する場合などは遅い.