在列出目录时,是否可以查看数字Unix权限,如644,而不是符号输出-rw-rw-r——?
谢谢。
在列出目录时,是否可以查看数字Unix权限,如644,而不是符号输出-rw-rw-r——?
谢谢。
当前回答
根据选择的答案和使用别名的建议,我将其转换为一个函数,以便将目录传递给list。
# ls, with chmod-like permissions and more.
# @param $1 The directory to ls
function lls {
LLS_PATH=$1
ls -AHl $LLS_PATH | awk "{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/) \
*2^(8-i));if(k)printf(\"%0o \",k);print}"
}
其他回答
它几乎可以。
ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/) \
*2^(8-i));if(k)printf("%0o ",k);print}'
考虑到这个问题指定的是UNIX,而不是Linux,因此没有必要使用统计二进制。下面的解决方案可以在一个非常旧的UNIX上工作,尽管sh以外的shell(即bash)是必要的。它是格伦杰克曼的perl状态解的推导。这似乎是一种值得探索的简洁的选择。
$ alias lls='llsfn () { while test $# -gt 0; do perl -s -e \
'\''@fields = stat "$f"; printf "%04o\t", $fields[2] & 07777'\'' \
-- -f=$1; ls -ld $1; shift; done; unset -f llsf; }; llsfn'
$ lls /tmp /etc/resolv.conf
1777 drwxrwxrwt 7 sys sys 246272 Nov 5 15:10 /tmp
0644 -rw-r--r-- 1 bin bin 74 Sep 20 23:48 /etc/resolv.conf
这个别名是根据这个答案中的信息开发的
整个答案是这个答案的一个修改版本
解决方案
奇怪的是仍然没有人提到(引用)ls的现代替代品-一个替代的和相当强大的工具。
通过使用exa命令和-l(相当于ls的-l)以及——octal-permissions选项,可以轻松实现所需的输出。
例子
下面是一个简单的例子,使用exa命令和——octal-permissions选项列出macOS机器上用户根目录(/)的内容:
exa -lh --octal-permissions /
结果:
注意,除了漂亮的彩色输出,exa还可以显示每个列的标题,这要归功于-h选项(长格式为——header)。
阅读man exa或官方在线文档,了解如何根据您的特定需求定制所需的输出。
你可以使用GNU find。
find . -printf "%m:%f\n"
我能想到的最接近的方法(保持简单)是stat,假设您知道要查找哪些文件。如果你没有,*可以找到大部分:
/usr/bin$ stat -c '%a %n' *
755 [
755 a2p
755 a2ps
755 aclocal
...
它处理粘性,suid和公司的盒子:
$ stat -c '%a %n' /tmp /usr/bin/sudo
1777 /tmp
4755 /usr/bin/sudo