在列出目录时,是否可以查看数字Unix权限,如644,而不是符号输出-rw-rw-r——?

谢谢。


当前回答

考虑到这个问题指定的是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

这个别名是根据这个答案中的信息开发的

整个答案是这个答案的一个修改版本

其他回答

我能想到的最接近的方法(保持简单)是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

你可以使用GNU find。

find . -printf "%m:%f\n"

根据选择的答案和使用别名的建议,我将其转换为一个函数,以便将目录传递给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来获取文件的权限信息。使用stat命令。它会给你你想要的数值。“Unix方式”说的是,你应该使用ls(或'echo *')、stat和其他任何你喜欢的东西来创建你自己的脚本,以你想要的格式提供信息。

使用此命令显示Unix数字权限值(八进制值)和文件名。

stat -c '%a %n' *

使用此命令显示Unix数字权限值(八进制值)和文件夹的sgid和sticky位、所有者的用户名、组名、以字节为单位的总大小和文件名。

stat -c '%a %A %U %G %s %n' *

如果需要人类可读格式的最后一次修改时间,则添加%y。有关更多选项,请参见stat。

使用别名的更好版本

使用别名是一种更有效的方式来完成你所需要的,它还包括颜色。下面将首先显示按组目录组织的结果,以彩色显示,以人类可读的格式打印大小(例如,1K 234M 2G)编辑~/。Bashrc,并通过编辑/etc/profile.d/custom.sh为您的帐户或全局添加别名

输入cls将显示新的LS命令结果。

alias cls="ls -lha --color=always -F --group-directories-first |awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"

文件夹树

在编辑bashrc或custom.sh时,包括以下别名以查看图形表示,其中键入lstree将显示当前文件夹树结构

alias lstree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'"

它将显示:

   |-scripts
   |--mod_cache_disk
   |--mod_cache_d
   |---logs
   |-run_win
   |-scripts.tar.gz