Я намагаюся переглянути кількість файлів у своєму /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і ви отримаєте свій домашній каталог (але я поняття не маю, чому ...)