Ich habe ein seltsames Problem im Zusammenhang mit grep -v
Abfragen. Lassen Sie mich erklären:
So zeigen Sie Verbindungen an, die ich verwende who
:
$ who
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
Der Strom tty
meines Terminals istpts/0
$ tty
/dev/pts/0
$ tty | cut -f3-4 -d'/'
pts/0
Ich versuche meine eigene Verbindung mit auszuschließen grep -v $(tty | cut -f3-4 -d'/')
. Die erwartete Ausgabe dieses Befehls sollte who
ohne meine Verbindung sein. Die Ausgabe ist jedoch höchst unerwartet:
$ who | grep -v $(tty | cut -f3-4 -d'/')
grep: a: No such file or directory
grep: tty: No such file or directory
Ich füge die $(...)
in Anführungszeichen und das scheint das Problem "Keine solche Datei oder Verzeichnis" zu beheben. Meine Verbindung wird jedoch weiterhin gedruckt, obwohl mein tty ( pts/0
) hätte ausgeschlossen werden sollen:
$ who | grep -v "$(tty | cut -f3-4 -d'/')"
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
Zum jetzigen Zeitpunkt habe ich absolut keine Ahnung, warum die grep
Abfrage fehlerhaft ist.
grep
"kein bisschen" bin . Wie würden Sie vorschlagen, dass ich das umgehen soll?
set -x
zuerst mit ... Dann führen Sie Ihren Befehl und sehen, was Sie tatsächlich versuchengrep
...