Ich versuche, die Anzahl der Dateien in meinem /tmp/Verzeichnis zu überwachen . Dafür dachte ich, dass dieser Befehl funktionieren würde:
watch sh -c 'ls /tmp/|wc -l'
Aber es scheint zu funktionieren, als ob lses keine Argumente gäbe . Ich bin nämlich dabei ~und erhalte stattdessen die Anzahl der Dateien /tmp/. Ich habe eine Problemumgehung gefunden, die zu funktionieren scheint:
watch sh -c 'ls\ /tmp/|wc -l'
Aber warum muss ich dem Raum zwischen lsund entfliehen /tmp/? Wie wird der Befehl von transformiert, watchsodass die lsAusgabe an geleitet wc, aber /tmp/nicht als Argument an übergeben wird ls?
watchfalsch. Der Befehl, an den Sie übergeben werden, watchwird wiederum watchan weitergeleitet sh -c, sodass Sie tatsächlich sh -czweimal vorgehen .
/tmpist ein Argument dafür sh, in diesem Fall kein Argument dafür ls.
watch "sh -c 'ls /tmp | wc -l'"Das Ausführen dieses Befehls sollte den gewünschten Effekt erzielen. Dies ist kein Uhrenfehler, versuchensh -c ls /tmpSie es und Sie erhalten Ihr Home-Verzeichnis (aber ich habe keine Ahnung warum ...)