catを使用すると、次のように「該当するファイルやディレクトリがありません」というエラーを隠すことができます。
cat file.txt 2>/dev/null
しかし、これはエラーを示しています
< file.txt 2>/dev/null
bash: file.txt: No such file or directory
ファイルが見つかった場合はファイルの内容を印刷し、ファイルが見つからない場合はエラーを隠すにはどうすればよいですか?
注:意図的にcatコマンドを使用しないでください。:https://stackoverflow.com/questions/11710552/useless-use-of-cat
ベストアンサー1
順序を変更してstderrを/dev/null
FIRSTにリダイレクトします。
%% <file.txt 2>/dev/null
bash: file.txt: No such file or directory
%% 2>/dev/null <file.txt
%%
リダイレクトは常に左から右に行われていることを覚えておいてください。リダイレクトが失敗した場合、stderrはすでに予測されています。
しかし、私が知っている限り、(または、それらとオプションの影響を受ける)と同等のもののみをzsh
使用できます。<file
cat file
more file
NULLCMD
READNULLCMD
Bashと他のいくつかのシェルは$(<file)
特別な形式のコマンド置換を欺くようにサポートしますが、正確な形式だけをサポートし、それ以上はサポートしません。
bash% echo text > file
bash% <file
bash% echo $(<file)
text
bash% echo $(<file;<file)
bash%
zshから:
zsh$ <file
text
zsh$ <file >out
zsh$ <out
text
zsh$ echo $(<file;<file)
text text