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 lsnie 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 lsi /tmp/? W jaki sposób polecenie jest przekształcane, watchaby lsdane wyjściowe były podawane do wc, ale /tmp/nie były przekazywane jako argument do ls?
watchniewłaściwie .Powierzchnia polecenie, które przechodzą do watchz kolei jest zasilany przez watchdo sh -c, więc jesteś w efekcie robi sh -cdwa razy.
/tmpJest to argument, aby shw 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 /tmpa dostaniesz swój katalog domowy (ale nie mam pojęcia, dlaczego ...)