Я пытаюсь посмотреть количество файлов в моем /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
неправильно. Команда, которую вы передаете, watch
в свою очередь подаетсяwatch
, чтобы sh -c
, таким образом вы фактически делаете sh -c
дважды.
/tmp
аргумент sh
, в этом случае не аргумент ls
.
watch "sh -c 'ls /tmp | wc -l'"
выполнение этой команды должно получить желаемый эффект. Это не ошибка часов, попробуйте,sh -c ls /tmp
и вы получите свой домашний каталог (но я понятия не имею, почему ...)