grep -v
クエリに関連する奇妙な問題があります。説明させてください:
私が使用する接続を表示するには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)
tty
私の端末の電流はpts/0
$ tty
/dev/pts/0
$ tty | cut -f3-4 -d'/'
pts/0
を使用して自分の接続を除外しようとしましたgrep -v $(tty | cut -f3-4 -d'/')
。このコマンドの期待される出力はwho
、接続なしでになります。ただし、出力は最も予期しないものです。
$ who | grep -v $(tty | cut -f3-4 -d'/')
grep: a: No such file or directory
grep: tty: No such file or directory
私$(...)
は引用符で囲み、それは「そのようなファイルまたはディレクトリがありません」問題を修正するようです。ただし、tty(pts/0
)を除外する必要がある場合でも、接続は引き続き印刷されます。
$ 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)
この時点で、grep
クエリが誤動作している理由はまったくわかりません。
@don_crisstiああ、なるほど。私は実際には
—
多分16
grep
「ttyではない」と言っています。これを回避するにはどうすればいいですか?
set -x
次に、あなたのコマンドを実行して、あなたが実際にしようとしているか見て...最初のgrep
...