检查目录是否存在,并在一个unix命令中删除
在Unix中,是否可以使用单个命令检查目录是否存在,如果存在则删除?我有一种情况,我使用ANT'sshexec'任务,在远程机器上只能运行一个命令。我需要检查目录是否存在并删除它…尝试:检查目录是否存在,并在一个unix命令中删除,unix,Unix,在Unix中,是否可以使用单个命令检查目录是否存在,如果存在则删除?我有一种情况,我使用ANT'sshexec'任务,在远程机器上只能运行一个命令。我需要检查目录是否存在并删除它…尝试: bash -c '[ -d my_mystery_dirname ] && run_this_command' 如果您可以在远程计算机上运行bash,这将起作用 在bash中,[-dsomething]检查是否有名为“something”的目录,如果它存在并且是一个目录,则返回一个成功代码。使
bash -c '[ -d my_mystery_dirname ] && run_this_command'
如果您可以在远程计算机上运行bash,这将起作用
在bash中,
[-dsomething]
检查是否有名为“something”的目录,如果它存在并且是一个目录,则返回一个成功代码。使用&&链接命令仅当第一个命令成功时才运行第二个命令。因此[-dsomedir]&&command
仅在目录存在时运行该命令。为什么不直接使用rm-rf/some/dir
?这将删除目录(如果存在),否则什么也不做。与rm-r/some/dir
不同,如果文件夹不存在,这种风格的命令不会崩溃。假设$WORKING\u dir
设置为目录。。。这一班轮应该做到:
if[-d“$WORKING_DIR”];然后rm-Rf$WORKING_DIR;fi
(否则只需替换为您的目录)这里是另一行:
[[ -d /tmp/test ]] && rm -r /tmp/test
- &&表示仅当前面的 语句已成功执行(返回的退出代码为零)
[-d/test]&&rmdir/test
(如果它不是空的,并且您想要删除所有内容,则需要rm-rf/test)@SineLaw:NOTE-当我的目录存在时,并尝试创建一个目录时,它没有出错!(再次测试)。但对于DELETE来说,它确实有效。沙玛:你在用bash吗?“echo$SHELL”是什么意思?为什么不直接使用rmdir呢?如果目录不存在,它将失败。它将失败。以及我的ANT脚本中的错误。这将导致我的构建崩溃。如果错误已经存在,则使用mkdir-p
将忽略该错误。@Ferruccio-使用rm-rf/dir\u name不会引发错误,但rm-rf/dir\u name throws表示未找到此类文件或目录。(刚刚测试)@remo bro您刚刚发布了相同的命令twiceI我认为原始问题的意思是:仅当文件/目录存在或不存在时执行删除。此命令可能工作并产生类似的结果,但实际上在该命令更有意义之前进行了测试。@AnkurChauhan+1,如果目录不存在,我会收到警告。这不是问题的答案。如上所述,这不是答案。删除前进行测试的一个原因是Jenkins作业内部。如果目录不存在,而您尝试删除它,则作业将失败。事先检查是更好的选择。我认为这是正确的答案。它执行@remo所需的操作,即仅在目录存在时删除目录,如果目录不存在,则不会给出错误。也许这个问题不是很清楚,因为当这个命令不在乎的时候,为什么你需要检查它的存在?!