gpt4 book ai didi

linux - 从 Bash 脚本中的文件参数打印权限

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:37 26 4
gpt4 key购买 nike

我在读取文件参数的权限时遇到问题。我看起来好像与隐藏文件有关,但我不确定为什么。

当前代码:

#!/bin/bash

if [ $# = 0 ]
then
echo "Usage ./checkPerm filename [filename2 ... filenameN]"
exit 0
fi

for file in $@
do
ls -l | grep $file | cut -f1 -d' '

# Do Something

done

我可以获得每个输入的权限,但是当一个隐藏文件通过循环运行时,它会重新打印所有文件的权限。

-bash-4.1$ ll test*
-rw-r--r-- 1 user joe 0 Nov 11 19:07 test1
-r-xr-xr-x 1 user joe 0 Nov 11 19:07 test2*
-r--r----- 1 user joe 0 Nov 11 19:07 test3
-rwxr-x--- 1 user joe 0 Nov 11 19:07 test4*
-bash-4.1$ ./checkPerm test*
-rw-r--r--
-rw-r--r--
-r-xr-xr-x
-r--r-----
-rwxr-x---
-r--r-----
-rw-r--r--
-r-xr-xr-x
-r--r-----
-rwxr-x---
-bash-4.1$

循环中发生了什么?

最佳答案

这是你的 grep:

ls -l | grep 'test2*'

这将清除所有以 test 开头的内容,因为您基本上是在请求以 test 开头的可能以 0 或更多 2 结尾的内容>在其中,由 2* 指定。

要获得预期结果,只需删除循环并将其替换为:

ls -l "$@" | cut -d' ' -f1

或者保留循环,但删除 grep:

ls -l $file | cut -d' ' -f1

此外,从技术上讲,这些文件都不是隐藏的。 bash 中的隐藏文件以 . 开头,例如 .bashrc.

关于linux - 从 Bash 脚本中的文件参数打印权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com