今この問題を発見したことを願っています。次の点に注意してください。
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を返します。