列出具有读取、写入和执行权限的文件的 Shell 脚本
在本文中,我们将学习如何列出当前目录中具有 Red、Write 和 Execute 权限的所有文件。
假设,我们当前目录中有以下文件:
在这里,我们当前目录中共有 8 个文件。在 8 个文件中,我们有 6 个文件的读取、写入和执行权限,2 个只有读取和写入权限。
让我们为列出具有读、写和执行权限的文件编写脚本
方法 :
- 我们必须检查当前目录中的每个文件并显示具有读取、写入和执行权限的名称,
- 为了遍历所有文件,我们将使用for循环
for file in *
Here, we are using * which represent all files in current working directory and we are storing the current file name on file variable.
- 现在我们将使用if语句检查所选文件是否实际上是一个文件
- 如果它是一个文件,那么我们将检查它是否具有读、写和执行权限,
- 我们将使用if语句来检查所有权限。
- 如果文件具有所有权限,那么我们将把文件名打印到控制台。
- 关闭if语句
- 如果它不是一个文件,那么我们将关闭 if 语句并移动到下一个文件。
在继续之前,我们将看到这些运算符的作用:
- -f $file -> 如果文件存在则返回真。
- -r $file -> 如果文件具有读取权限,则返回 true
- -w $file -> 如果文件具有写权限,则返回 true。
- -x $file -> 如果文件具有 Executed 权限,则返回 true。
- -a -> 用于检查多个条件,与&&运算符相同。
下面是实现:
# Shell script to display list of file names
# having read, Write and Execute permission
echo "The name of all files having all permissions :"
# loop through all files in current directory
for file in *
do
# check if it is a file
if [ -f $file ]
then
# check if it has all permissions
if [ -r $file -a -w $file -a -x $file ]
then
# print the complete file name with -l option
ls -l $file
# closing second if statement
fi
# closing first if statement
fi
done
现在,我们的代码编写工作已经完成,但是我们仍然无法运行我们的程序,因为当我们在 Linux 中创建一个文件时,它有两个权限,即创建该文件的用户的读取和写入权限。要执行我们的文件,我们必须授予该文件的执行权限。
为 main.sh 分配执行权限:
$ chmod 777 main.sh
使用以下命令运行脚本:
$ bash main.sh