Mam dziwny problem związany z grep -v
zapytaniami. Pozwól mi wyjaśnić:
Do wyświetlania połączeń używam 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)
Obecny tty
mój terminal topts/0
$ tty
/dev/pts/0
$ tty | cut -f3-4 -d'/'
pts/0
Próbuję wykluczyć własne połączenie za pomocą grep -v $(tty | cut -f3-4 -d'/')
. Oczekiwany wynik tego polecenia powinien być who
bez mojego połączenia. Jednak wynik jest najbardziej nieoczekiwany:
$ who | grep -v $(tty | cut -f3-4 -d'/')
grep: a: No such file or directory
grep: tty: No such file or directory
Załączam $(...)
cytaty i wydaje się, że to rozwiązuje problem „Brak takiego pliku lub katalogu”. Jednak moje połączenie jest nadal drukowane, mimo że moja tty ( pts/0
) powinna zostać wykluczona:
$ 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)
W tej chwili nie mam pojęcia, dlaczego grep
zapytanie działa nieprawidłowo.
grep
„nie jestem tty”. Jak sugerowałbyś, żebym to obejść?
set -x
najpierw użyjesz ... Następnie uruchom polecenie i zobacz, co tak naprawdę próbujeszgrep
...