ファイルが存在することを確認し(カスタム)、メッセージをstdoutに印刷する単一のコマンドは何ですか?

ファイルが存在することを確認し(カスタム)、メッセージをstdoutに印刷する単一のコマンドは何ですか?

今この問題を発見したことを願っています。次の点に注意してください。

test私は()コマンドを使用して[ファイルが存在するかどうかをテストできることをすでに知っています。

$ touch exists.file
$ if [ -f exists.file ] ; then echo "yes" ; else echo "no" ; fi
yes
$ if [ -f noexists.file ] ; then echo "yes" ; else echo "no" ; fi
no

...しかし、ここでは少し入力が必要なので、ファイル存在の結果を?:)として返す「基本」単一のコマンドがあるかどうか疑問に思います。stdout

test終了ステータスを使用することもできます$?

$ test -f exists.file ; echo $?
0
$ test -f noexists.file ; echo $?
1

...しかし、まだ2つのコマンドです。論理も「反対」です(0は成功を意味し、0以外の場合は失敗を意味します)。

gnuplot私が尋ねる理由は、ファイルが次の場所にあるかどうかをテストする必要があるためです。system("command")stdout の結果の文字ストリームを文字列として返します。";gnuplot私ができることは次のとおりです。

gnuplot> if (0) { print "yes" } else { print "no" }
no
gnuplot> if (1) { print "yes" } else { print "no" }
yes

だから私は基本的に次のようなものを書くことができるようにしたいです(医師)。

gnuplot> file_exists = system("check_file --stdout exists.file")
gnuplot> if (file_exists)  { print "yes" } else { print "no" }
yes

test...残念ながら、以下では直接使用できません$?

gnuplot> file_exists = system("test -f exists.file; echo $?")
gnuplot> if (file_exists)  { print "yes" } else { print "no" }
no

...論理を裏返す必要があります。

だから私は基本的にカスタムスクリプトソリューションを考えなければなりません(またはインラインスクリプトを1行で書く必要があります)...ファイルが存在することを知るために、stdoutのデフォルトコマンド(またはカスタムメッセージ)がすでにあると思いました。 。だから私はする必要はありません。:)

(これはls候補かもしれませんが、標準出力出力が長すぎます。これを避けるには、すべての出力を抑制して現在の状態を返す必要があります。

$ ls exists.file 1>/dev/null 2>/dev/null ; echo $? 
0
$ ls noexists.file 1>/dev/null 2>/dev/null ; echo $? 
2

...しかし、これは2つのコマンド(そしてより多くの入力)と「リバース」ロジックです...)

それでは、Linuxでこれを行うための基本的なコマンドはありますか?

ベストアンサー1

次の単一の bash コマンドを使用します。

 [ -f /home/user/file_name ]

[]テストを実行し、成功した場合は0を返します。

おすすめ記事