Linuxコマンドラインにディレクトリが存在するかどうかを確認する方法は?


28

Linuxコマンドラインにディレクトリが存在するかどうかを確認する方法は?

溶液: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
それを解決策としてマークしてください。
BlueRaja-ダニーPflughoeft

回答:


40
$ if test -d /the/dir; then echo "exist"; fi 

スクリプトではなく、コマンドラインで必要です。

5
それがコマンドラインです。あなたは直接のbashにそのを入力することもできますし、それを再開することができますtest -d /the/dirtest -d /the/dir && echo "exist" || echo "does not exist"しかし、彼らは実際には同じです。
デビッドロドリゲス-ドリベス

みんなのシェルがそうではありませんbash
reinierpost

あなたに@reinierpostその後、幸運...
ステファノBorini

@Stefano Borini:私はまだ使用しtcshてい.tcshrcます。しかし、もっと重要なことは、これがOPの問題を説明したかもしれないということです。
reinierpost

11

シェルがBASHであると仮定します。

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi

予期しないトークン「then」付近の構文エラー

次に、シェルが何であるかを把握します。おそらくcshまたはtcsh
reinierpost

8
[ -d /home/bla/ ] && echo "exits"

ディレクトリが存在しない場合でもテキストを表示するために、ELSEのようなものを使用できますか?

回避策:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop

7

標準的な方法は、test(1)ユーティリティを使用することです。

test -d path

ここで、「パス」は問題のディレクトリのパス名です。


コマンドは単独では実行されていないように見えますが、で結合された場合echo "Directory Exists"
エハズ

2

[ -d "YOUR_DIR" ] && echo "is a dir"

例えば:

[ -d / ] && echo "root dir

出力されますroot dir


[-d:コマンドが見つかりません、これは私が得るものです

「[」と「-」の間はスペースでなければなりません。これは、BourneおよびBashシェルで動作するはずです。

0

シェルスクリプトにディレクトリが存在するかどうかを確認するには、次を使用できます。

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

反対をチェックするには、!前に追加します-d ->[ ! -d ....]


スーパーユーザーへようこそ!これは別の回答を複製し、新しいコンテンツを追加しません。実際に何か貢献できるものがない限り、回答を投稿しないでください。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.