Jon*_*ley 171 unix permissions command-line
是否可以在列出目录时查看数字unix权限,例如644而不是符号输出-rw-rw-r--
谢谢.
mik*_*iku 328
使用此选项可显示八进制值(数字chmod权限)和文件名:
stat -c '%a %n' *
Run Code Online (Sandbox Code Playgroud)
有关更多选项,请参阅stat.
有关使用别名执行此操作的更有效方法,请参阅下面的评论.
JB.*_*JB. 139
我能想到的最近(保持简单)就是stat
假设您知道要查找哪些文件.如果你不这样做,*
可以找到大部分:
/usr/bin$ stat -c '%a %n' *
755 [
755 a2p
755 a2ps
755 aclocal
...
Run Code Online (Sandbox Code Playgroud)
它处理粘性,suid和公司开箱即用:
$ stat -c '%a %n' /tmp /usr/bin/sudo
1777 /tmp
4755 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 55
你可以使用GNU find.
find . -printf "%m:%f\n"
Run Code Online (Sandbox Code Playgroud)
Moh*_*jib 31
您可以使用以下命令
stat -c "%a %n" *
Run Code Online (Sandbox Code Playgroud)
您也可以使用任何filename
或directoryname
代替*
获得特定结果.
在Mac上,您可以使用
stat -f '%A %N' *
Run Code Online (Sandbox Code Playgroud)
小智 16
@The MYYN
哇,好awk!但是suid,sgid和sticky bit怎么样?
您必须使用s和t扩展过滤器,否则它们将无法计数并且您得到错误的结果.要计算此特殊标志的八进制数,过程是相同的,但索引位于4 7和10. ---s--s--t
对于没有执行位设置的文件,执行位设置的文件的可能标志是amd---S--S--T
ls -l | 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
}'
Run Code Online (Sandbox Code Playgroud)
测试:
touch blah
chmod 7444 blah
Run Code Online (Sandbox Code Playgroud)
将导致:
7444 -r-Sr-Sr-T 1 cheko cheko 0 2009-12-05 01:03 blah
Run Code Online (Sandbox Code Playgroud)
和
touch blah
chmod 7555 blah
Run Code Online (Sandbox Code Playgroud)
会给:
7555 -r-sr-sr-t 1 cheko cheko 0 2009-12-05 01:03 blah
Run Code Online (Sandbox Code Playgroud)
Eri*_*lez 15
使用它来显示 Unix 数字权限值(八进制值)和文件名。
stat -c '%a %n' *
Run Code Online (Sandbox Code Playgroud)
使用它来显示 Unix 数字权限值(八进制值)和文件夹的 sgid 和粘滞位、所有者的用户名、组名、总大小(以字节为单位)和文件名。
stat -c '%a %A %U %G %s %n' *
Run Code Online (Sandbox Code Playgroud)
%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;}'"
Run Code Online (Sandbox Code Playgroud)
文件夹树
当您编辑 bashrc 或 custom.sh 时,请包含以下别名以查看图形表示,其中键入lstree
将显示您当前的文件夹树结构
alias lstree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'"
Run Code Online (Sandbox Code Playgroud)
它会显示:
|-scripts
|--mod_cache_disk
|--mod_cache_d
|---logs
|-run_win
|-scripts.tar.gz
Run Code Online (Sandbox Code Playgroud)
您不使用 ls 来获取文件的权限信息。您使用 stat 命令。它会给你你想要的数值。“Unix Way”说您应该使用 ls (或“echo *”)和 stat 以及您喜欢的任何其他命令来发明自己的脚本,以您想要的格式提供信息。