如何检查Linux命令行中是否存在目录?


Answers:


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

我需要在命令行中,而不是在脚本中。

5
那就是命令行。您可以直接将其输入bash,也可以将其恢复为test -d /the/dir:,test -d /the/dir && echo "exist" || echo "does not exist"但是它们实际上是相同的。
DavidRodríguez-dribeas 2010年

不是每个人的外壳都是bash
reinierpost

@reinierpost,然后祝您好运……
Stefano 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

其中“ path”是相关目录的路径名。


该命令似乎不是单独执行的,而是与一起使用时echo "Directory Exists"
Ejaz

2

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

例如:

[ -d / ] && echo "root dir

将输出:root dir


[-d:找不到命令,这就是我得到的

在“ [”和“-”之间必须有一个空格。这应该适用于Bourne和Bash shell。

0

要检查shell脚本中是否存在目录,可以使用以下命令:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

要检查相反的情况,请!-d ->[ ! -d ....]


欢迎来到超级用户!这将重复另一个答案,并且不添加任何新内容。除非您确实有新贡献,否则请不要发布答案。
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.