ファイルリダイレクトエラーを抑制する方法は?

ファイルリダイレクトエラーを抑制する方法は?

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/nullFIRSTにリダイレクトします。

%% <file.txt 2>/dev/null
bash: file.txt: No such file or directory
%% 2>/dev/null <file.txt
%%

リダイレクトは常に左から右に行われていることを覚えておいてください。リダイレクトが失敗した場合、stderrはすでに予測されています。


しかし、私が知っている限り、(または、それらとオプションの影響を受ける)と同等のもののみをzsh使用できます。<filecat filemore fileNULLCMDREADNULLCMD

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

おすすめ記事