私は今日素晴らしいshufコマンドを学びました:
ls | shuf
は作業中のディレクトリのリストを表示しますが、このパイプコマンド式を別の順序で実行するたびにshufのおかげで.
だから、この表現を毎秒繰り返してみたらどうだろうと思い、やってみました
watch -n1 ls | shuf (and got no output)
watch -n1 (ls | shuf) (and got an error)
watch -n1 {ls | shuf} (and got an error)
それから私はlsを置きます|独自のファイルにshufし、それからスクリプトfooを作成しました。
watch -n1 ./foo (this times it worked)
式をスクリプトファイルにせずに、監視コマンドをパイプコマンド式に適用することはできますか?
ウォッチコマンドにはいくつかのバリエーションがあり、watch
に渡された引数の連結で作成されたコマンドラインを解釈するためにシェルを生成するものもあります(間にスペース文字があります)。あなたができるものでは:
watch 'ls | shuf'
と同じ:
watch ls '|' shuf
(これらのwatch
は実際に実行されます:"/bin/sh", ["sh", "-c", "ls | shuf"]
そして、2番目のレベルの解釈が予期しないときにバグやセキュリティ問題への扉を開く可能性があるという点で非常に危険です。procps-ngのウォッチは、 -x
オプション)。
そして、すべての引数を引数として、最初の引数に名前が指定されているコマンドを実行するだけのものもあります。それらの中で:
watch sh -c 'ls | shuf'