介绍
Linux 中有几个函数仅在特定文件或目录存在时才起作用。Bash 是一个解释命令的 shell。你可以使用一个
Bash如何检查文件或目录是否存在?在本指南中,了解如何使用bash 命令检查文件或目录是否存在。
先决条件
- 一个 Linux 操作系统
- 访问终端窗口/命令行 (Ctrl-Alt-T / Ctrl-Alt-F2)
注意:你可能会遇到术语bash script。这是对 shell 的几个命令的序列。script可以被保存为一个文件,并经常被用于多个系统命令自动化成单个动作。
如何检查文件是否存在
Bash检查文件或目录是否存在的方法:要测试文件/tmp/test.log,请从命令行输入以下内容:
test –f /tmp/test.txt
第一行执行测试以查看文件是否存在。第二个命令echo显示结果 0 表示文件存在,1 表示未找到文件。
echo $?
在我们的示例中,结果为 1。
Bash检查文件或目录是否存在示例:现在尝试创建一个文件,然后对其进行测试:
touch /tmp/test.txt
test –f /tmp/test.txt
echo $?
由于我们事先创建了文件,现在的结果是 0:
你还可以使用方括号代替test命令:
[ –f /tmp/test.txt ]
echo $?
如何检查目录是否存在
Bash如何检查文件或目录是否存在?要检查目录是否存在,请在–d(用于目录)的测试命令中关闭–f选项:
test –d /tmp/test
echo $?
创建该目录,然后重新运行测试:
touch /tmp/test
test –d /tmp/test
echo $?
此命令的工作方式与文件相同,因此使用方括号代替test命令也适用于此。
注意:如果你正在搜索文件或目录,因为你需要删除它,请参阅我们的使用 Linux 命令行删除文件和目录的指南。
如何检查文件是否不存在
Bash检查文件或目录是否存在的方法:通常,如果文件存在,则对文件的测试返回 0(真),如果文件不存在,则返回 1(假)。对于某些操作,你可能需要颠倒逻辑。如果你编写脚本以仅在特定文件不存在时创建该文件,这将很有帮助。
要创建一个不存在的文件,请在命令行中输入以下内容:
[ ! –f /tmp/test.txt ] && touch /tmp/test.txt
感叹号!代表不。此命令可以确保有没有一个文件名为test.txt的在/ tmp目录目录。你不会看到任何事情发生。
要查看系统是否创建了该文件,请输入以下内容:
ls /tmp
Bash检查文件或目录是否存在示例:你应该会看到列出的test.txt。你可以对目录使用类似的命令 - 将-f选项替换为-d:
[ ! –d /tmp/test ] && touch /tmp/test
如何检查多个文件
Bash如何检查文件或目录是否存在?要同时测试两个文件,请使用&&选项添加第二个文件:
[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”
要使用通配符测试多个文件,例如星号*代表各种字符:
[ -f /tmp/*.jpg ] && echo “Files were found”
像往常一样,将–f选项更改为–d可以让你对多个目录运行相同的测试。
文件测试运算符以查找特定类型的文件
以下是用于测试以查找特定类型文件的几个命令:
- -f –文件
- -d –目录
- – L – 符号链接
- -r -可读
- -x – 可执行文件
- - w ^ -写
还有许多其他选项可用。请查阅主页 (test ––help) 以获取其他选项。
使用代码片段
Bash检查文件或目录是否存在的方法:前面的命令适用于命令提示符下的简单两行命令。你还可以将bash与多个命令一起使用。当多个命令串在一起时,它们被称为脚本。
一个脚本通常保存为文件并执行。脚本还使用逻辑运算符来测试条件,然后根据测试结果采取行动。
要创建脚本文件,请使用Nano 编辑器 打开一个新文件:
sudo nano bashtest.sh
输入下面的片段之一,包括#!/bin/bash标识符。使用Ctrl-o保存文件,然后使用Ctrl-x退出 Nano。然后,输入以下命令运行脚本:
bash bashtest.sh
Bash如何检查文件或目录是否存在?以下代码片段测试特定文件的存在。如果文件存在,脚本会在屏幕上显示文件存在。
#!/bin/bash
if [ -f /tmp/test.txt ]
then
echo “File exists”
fi
Bash检查文件或目录是否存在示例:如果你正在检查目录,这也是一样的。只需将-f选项替换为-d:
#!/bin/bash
if [ -d /tmp/test ]
then
echo “File exists”
fi
此命令检查目录/tmp/test。如果存在,系统显示文件存在。
结论
你现在可以使用 bash 来检查文件和目录是否存在。你还可以创建简单的测试脚本,因为你现在已经了解了基本 bash 脚本文件的功能。