8章ブラッシュワンライナーの作成
「まえがき」で紹介した、次のような長くて複雑なコマンドを覚えていますか?
$paste <(echo {1..10}.jpg | sed 's/ /\n/g') \
<(echo {0..9}.jpg | sed 's/ /\n/g') \
| sed 's/^/mv /' \
| bash
このような「魔法の呪文」は、ブラッシュワンライナー(brash one-liner)と呼ばれています†1。これが何を行い、どのように機能するかを理解するために、これを分解してみましょう。最も内側にあるecho
コマンドは、ブレース展開を使って、JPEGファイル名のリストを生成します。
[†1] 筆者が知るかぎり、この用語が使われている最も古いものは、BSD Unix 4.xでのlorder(1)のmanページです(https://oreil.ly/ro621)。Bob Byrnesさん、見つけてくれてありがとう。
$echo {1..10}.jpg
1.jpg 2.jpg 3.jpg ... 10.jpg $echo {0..9}.jpg
0.jpg 1.jpg 2.jpg ... 9.jpg
これらのファイル名をsed
にパイプで渡し、スペースを改行に置き換えます。
$echo {1..10}.jpg | sed 's/ /\n/g'
1.jpg 2.jpg ⋮ 10.jpg $echo {0..9}.jpg | sed 's/ /\n/g'
0.jpg 1.jpg ⋮ 9.jpg
paste
コマンドは、2つのリストを横に並べて表示します。プロセス置換を使うと、paste
は2つのリストを、あたかもファイルであるかのように読み込むことができます。 ...
Get Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.