创建目录时,mkdir -m <mode> <dir>提供使用给定模式/权限集(原子地)创建一个或多个目录。
在命令行上是否有创建文件的等价物?
类似于:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
Run Code Online (Sandbox Code Playgroud)
使用touch后面是chmod我唯一的选择吗?
编辑:在尝试了 teppic 的使用建议后install,我运行了它strace以查看它与原子的接近程度。答案是,不是很:
$ strace install -m 777 /dev/null newfile
...
open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4
fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0
...
fchmod(4, 0600) = 0
close(4) = 0
...
chmod("newfile", 0777) = 0
...
Run Code Online (Sandbox Code Playgroud)
尽管如此,这是一个单一的 shell 命令,我以前不知道。
我知道在 GNU/Linux 中,文件权限也称为文件模式,并且术语掩码至少可以表示以下不同的含义:
umask。可以通过执行带有适当参数的命令来使用内置的umask shell umask:
通过这样做,我们为当前的shell 进程树设置了一个掩码;
要么针对当前 shell 进程树中的所有用户,要么仅针对我们自己的用户;
然而,一般来说,任何此类更改都将继承到新进程,可能是另一个 shell)。
我知道数学逻辑包括连接AKA anding ( ?)的操作,它是内置umask shell的基础。因此:
一组操作数的 and 为真,当且仅当,其所有操作数为真
我进一步了解到,有一个基于该逻辑的同名按位运算。Anding 与数字相加 ( x + y ? z) 或字符串串联 ( …