在 FreeBSD 和 Linux 中,如何获取chmod
文件的数值?例如,644
而不是-rw-r--r--
? 我需要一个 Bash 脚本的自动方式。
在查看我的系统上的man
页面ls
并搜索 Google 之后,我发现有一种方法可以使用awk
或perl
在使用时显示八进制权限ls
,但是bash
还有什么更原生的吗?
$ ll
total 0
drwxr-xr-x 5 user group 170B May 20 20:03 .
drwxr-xr-x 17 user group 578B May 20 20:03 ..
-rw-r--r-- 1 user group 0B May 20 20:03 example
-rw-r--r-- 1 user group 0B May 20 20:03 example-1
-rw-r--r-- 1 user group 0B May 20 20:03 example-3
Run Code Online (Sandbox Code Playgroud)
$ ll
total 0
drwxr-xr-x 1775 5 user group 170B …
Run Code Online (Sandbox Code Playgroud) 我是根。我想知道非 root 用户是否对某些文件具有写访问权限 - 其中有数千个。如何在避免流程创建的同时有效地做到这一点?
我不小心将/var
所有者/组更改为我的用户名,然后将其更改回 root,但并非所有/var
文件夹的所有者都是 root,那么无论如何将所有者/文件/文件夹组更改回默认状态?或者至少那些由包创建的文件/文件夹?
我想将 的输出转换ls
为八进制权限位。
我想到了实现该练习的最短和最清晰的方法:假设我们有输入:
total 1
drwxr----x 1 user2 workers 1024 May 26 22:22 dir
-rwx-wxrw- 2 user2 workers 1024 May 26 22:22 file.txt
Run Code Online (Sandbox Code Playgroud)
我们的输出应该是:
741 dir
736 file.txt
Run Code Online (Sandbox Code Playgroud) 我创建了 512 个文件,名称由权限组合 ( r
, w
, x
) 组成。
我这样创建它们:
touch ./{r,-}{w,-}{x,-}{r,-}{w,-}{x,-}{r,-}{w,-}{x,-}
Run Code Online (Sandbox Code Playgroud)
并且我希望文件具有与其名称指示相同的r-x--xrwx
权限,例如,文件应该具有权限r-x--xrwx
。
我试着这样做:
for i in *
do
u=${i:0:3};g=${i:3:3};o=${i:6:3}
chmod u=$u,g=$g,o=$o -- $i
done
Run Code Online (Sandbox Code Playgroud)
某些文件最终具有正确的权限,但对于其他文件,权限与名称不匹配。我怎样才能解决这个问题?
谁能告诉 AIX 上 ksh 的等效命令,还是我必须使用脚本将 rwxrwxrwx 值计算为 777?