November 2023
Intermediate to advanced
336 pages
3h 40m
Japanese
「まえがき」で紹介した、次のような長くて複雑なコマンドを覚えていますか?
$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}.jpg1.jpg 2.jpg 3.jpg ... 10.jpg $echo {0..9}.jpg0.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つのリストを、あたかもファイルであるかのように読み込むことができます。 ...
Read now
Unlock full access