どこかでリダイレクトを使うのを見て誤字だと思いました。
grep root < /etc/passwd
ただし、実行した後は同じ出力が表示されることがあります
grep root /etc/passwd
。
$ grep root < /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
同じことが起こりました。
cat < /etc/passwd
cat /etc/passwd
ただし、次のコマンドと組み合わせて使用すると、リダイレクトは無視されますls
。
ls < /etc/passwd
同じ出力を印刷しない
ls /etc/passwd
何が問題なの?
答え1
ファイルで動作する多くのユーティリティは、標準入力(標準入力)をストリーム入力として使用するか、ファイル名を引数として受け入れます。あなたの< file
例では、ファイル出力をユーティリティにリダイレクトします。ファイルはシェルによって開き、以下を介してユーティリティに渡されます。標準入力..
一方 cat file
、猫オープンと読み取り処理文書で、リダイレクトは含まれません。
ls
ファイルは読み込まれないため、ファイル名を引数として使用しません。開いて読むfile..(ファイル名マスクを許可します)... の場合、ls
シェルの開いているファイルを読み取るプロセスがないため、リダイレクト操作は実際に無視されます。
ユーティリティがどのように機能するかを確認するには、man utility-name
ターミナル...と入力します。男性は略語です手動...例えば。man cat
あなたへの贈り物猫ハンドブック