Я намагаюся переглянути кількість файлів у своєму /tmp/
каталозі. Для цього я думав, що ця команда спрацює:
watch sh -c 'ls /tmp/|wc -l'
Але, схоже, він працює так, ніби ls
не мав аргументів. А саме я перебуваю там ~
, і я отримую замість них кількість файлів /tmp/
. Я знайшов рішення, яке, здається, працює:
watch sh -c 'ls\ /tmp/|wc -l'
Але чому мені потрібно уникати місця між ls
і /tmp/
? Як команда перетворюється на watch
так, що ls
вихід подається wc
, але /tmp/
не передається як аргумент ls
?
watch
неправильно .the команду, ви передаєте watch
в свою чергу , харчується , watch
щоб sh -c
, таким чином ви фактично робите sh -c
двічі.
/tmp
це аргумент sh
, а в цьому випадку не аргумент ls
.
watch "sh -c 'ls /tmp | wc -l'"
виконання цієї команди має отримати бажаний ефект. Це не помилка годинника, спробуйте,sh -c ls /tmp
і ви отримаєте свій домашній каталог (але я поняття не маю, чому ...)