/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は順番にwatchto によって供給されるsh -cので、あなたは事実上sh -c2回やっています。
/tmp引数でshあり、その場合、の引数ではありませんls。
watch "sh -c 'ls /tmp | wc -l'"このコマンドを実行すると、目的の効果が得られます。これは監視のせいではありません。試してみてsh -c ls /tmp、ホームディレクトリを取得します(しかし、理由は