Zachary explicou a origem do problema.
Enquanto você pode contornar isso com
tty=$(tty)
tty_without_dev=${tty#/dev/}
who | grep -v "$tty_without_dev"
Isso seria errado, por exemplo, se esse tty for pts/1
, você acabaria excluindo todas as linhas contendo pts/10
. Algumas implementações grep
têm uma opção -w
para fazer uma pesquisa de palavras
who | grep -vw pts/1
não corresponderia a pts/10
porque o pts/1
não é seguido por um caractere que não seja de palavra.
Ou você pode usar awk
para filtrar o valor exato do segundo campo, como:
who | awk -v "tty=$tty_without_dev" '$2 != tty'
Se você quiser fazer isso em um comando:
{ who | awk -v "tty=$(tty<&3)" '$2 != substr(tty,6)'; } 3<&0
O stdin original sendo duplicado no descritor de arquivo 3 e restaurado para o comando tty
.