如何使umask
输出为 22 而不是 0022?
服务器1:
user@vxs-app01> umask
22
服务器2
user@vxs-app02> umask
0022
答案1
我:
我有 1 美分,我想兑换 0.01 美元。货币兑换收银员:
嗯,……,它们是一样的。
您知道 22 和 0022 是相同的数字(如果假设它们具有相同的基数),对吧?如果没有,我说
22 和 0022 是相同的数字(如果假设它们具有相同的基数)。
这能回答你的问题吗?如果不,
你展示
user@vxs-app01$ umask 22
你明白吗?请告诉我们发生这种情况的系统。
好的,显然您不想告诉我们您正在处理的系统。那么我的答案是,您可能会看到我在以下段落中讨论的任何内容(或组合):
- 服务器 1 可能已
umask
使用别名,或重新定义为 shell 函数。键入type umask
进行检查。 - 这两个系统可以有不同的 shell,或者不同版本的 shell。
zsh
似乎显示 umask 时只有一个前导零。所以这可以解释022
,但不仅仅是解释22
。csh
并且tcsh
似乎显示没有前导零的umask。但是csh
和与、、和其他 POSIX 友好的 shelltcsh
完全不同;如果服务器 1 正在运行或,您就会知道。bash
ksh
zsh
csh
tcsh
- 服务器 1 可能正在运行本地修改的 shell。
- 服务器 1 可能已
如果您只是将
22
Server1 上的输出显示为假设的示例,则可以通过键入 来获取该结果printf '%o\n' "$(umask)"
,这会获取原始输出umask
(带前导零)并以八进制整数的默认格式显示它(没有前导零)。然后您可以将其放入别名或 shell 函数中。如果您希望 shell 准确地记住 umask 值,就像您键入的那样:
$ umask 0022 $ umask 0022 $ umask 22 $ umask 22 $ umask 022 $ umask 022
那会更难。更简单的方法是编写一个 shell 函数来包装
umask
。如果那是你想要的,- 尝试弄清楚如何做,
- 如果你失败了,请编辑你的问题,以便更清楚地了解你想要什么和你尝试过什么,我可能会为你设计一个答案。
一种更困难(但更可靠)的方法是获取源代码bash
并对其进行修改。