/tmp/
ディレクトリ内のファイルの数を監視しようとしています。このため、私はこのコマンドが機能すると思った:
watch sh -c 'ls /tmp/|wc -l'
しかしls
、引数がないかのように動作するようです。つまり、私はにいて~
、そこに多数のファイルを取得します/tmp/
。私は回避策を見つけましたが、それはうまくいくようです:
watch sh -c 'ls\ /tmp/|wc -l'
しかし、なぜls
との間のスペースをエスケープする必要があるの/tmp/
ですか?どのようにコマンドがによって変換されるwatch
ように、ls
出力がにfeededされwc
ますが、/tmp/
に引数として渡されていませんかls
?
watch
間違って使用しています。あなたが渡すコマンドwatch
は順番にwatch
to によって供給されるsh -c
ので、あなたは事実上sh -c
2回やっています。
/tmp
引数でsh
あり、その場合、の引数ではありませんls
。
watch "sh -c 'ls /tmp | wc -l'"
このコマンドを実行すると、目的の効果が得られます。これは監視のせいではありません。試してみてsh -c ls /tmp
、ホームディレクトリを取得します(しかし、理由は