存在するこれ記事で次のコマンドを見つけました。
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32}
Bashではこの表現を見たことがありません。特に、<
最初にとのつながりが私を驚かせました。このコマンドを解釈するとき、私たちはコマンドからデータを読み取ることです。しかし、なぜ最初のコマンドですか?/dev/urandom
tr
/dev/urandom
tr
< /dev/urandom
答え1
リダイレクト演算子は、単純なコマンドの任意の場所に配置できます(参照:シェルの制御およびリダイレクト演算子は何ですか?— ここでは、複合ではなく POSIX の意味で「単純」です。
入力リダイレクトを最初に配置すると、データフローをより明確にするのに役立ちます。つまり、左から右に読み込み、データをから読み/dev/urandom
、から処理しtr
てからパイプしますhead
。
読む
tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c${1:-32}
tr
その逆は、引数が出るまでデータをどこから取得するのかわからないということです。これには多くのコマンドがありませんが、より複雑なコマンドを使用すると大きな違いが生じる可能性があります。