Saya mencoba menonton sejumlah file di /tmp/
direktori saya . Untuk ini saya pikir perintah ini akan berhasil:
watch sh -c 'ls /tmp/|wc -l'
Tetapi tampaknya berfungsi seolah-olah ls
tidak punya argumen. Yaitu, saya masuk ~
, dan saya mendapatkan jumlah file di sana, bukan /tmp/
. Saya menemukan solusi, yang tampaknya berhasil:
watch sh -c 'ls\ /tmp/|wc -l'
Tetapi mengapa saya harus lari dari ruang antara ls
dan /tmp/
? Bagaimana perintah diubah oleh watch
sehingga ls
output diumpankan wc
, tetapi /tmp/
tidak diteruskan sebagai argumen ls
?
watch
salah. Perintah yang Anda berikan watch
pada gilirannya diumpankan watch
ke sh -c
, jadi Anda sebenarnya melakukan sh -c
dua kali.
/tmp
Argumen untuk sh
, dalam hal ini, bukan argumen untuk ls
.
watch "sh -c 'ls /tmp | wc -l'"
melakukan perintah ini harus mendapatkan efek yang diinginkan. Ini bukan kesalahan jam tangan, cobalahsh -c ls /tmp
dan Anda akan mendapatkan direktori rumah Anda (tapi saya tidak tahu mengapa ...)