Próbuję oglądać liczbę plików w moim /tmp/
katalogu. W tym celu myślałem, że to polecenie zadziała:
watch sh -c 'ls /tmp/|wc -l'
Ale wydaje się, że działa tak, jakby ls
nie miał żadnych argumentów. Mianowicie, jestem w ~
środku i zamiast tego otrzymuję tam liczbę plików /tmp/
. Znalazłem obejście, które wydaje się działać:
watch sh -c 'ls\ /tmp/|wc -l'
Ale dlaczego muszę uciec z przestrzeni między ls
i /tmp/
? W jaki sposób polecenie jest przekształcane, watch
aby ls
dane wyjściowe były podawane do wc
, ale /tmp/
nie były przekazywane jako argument do ls
?
watch
niewłaściwie .Powierzchnia polecenie, które przechodzą do watch
z kolei jest zasilany przez watch
do sh -c
, więc jesteś w efekcie robi sh -c
dwa razy.
/tmp
Jest to argument, aby sh
w tym przypadku nie argumentować ls
.
watch "sh -c 'ls /tmp | wc -l'"
Wykonanie tego polecenia powinno uzyskać pożądany efekt. To nie jest wina, spróbuj,sh -c ls /tmp
a dostaniesz swój katalog domowy (ale nie mam pojęcia, dlaczego ...)