如何在Bash中检查文件或目录是否存在?代码示例

2021年11月21日04:04:45 发表评论 1,334 次浏览

介绍

Linux 中有几个函数仅在特定文件或目录存在时才起作用。Bash 是一个解释命令的 shell。你可以使用一个

Bash如何检查文件或目录是否存在?在本指南中,了解如何使用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中检查文件或目录是否存在?代码示例

Bash检查文件或目录是否存在示例:现在尝试创建一个文件,然后对其进行测试:

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

由于我们事先创建了文件,现在的结果是 0:

如何在Bash中检查文件或目录是否存在?代码示例

你还可以使用方括号代替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 脚本文件的功能。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: