考虑以下 bash 脚本:
#!/bin/bash
echo "${1##*.}"
Run Code Online (Sandbox Code Playgroud)
如果文件名作为第一个命令行参数提供,此脚本将打印文件的扩展名,如下所示:
$ ./script.sh ./file.pdf
Run Code Online (Sandbox Code Playgroud)
在上述情况下pdf
是打印的。
请解释表达式如何${1##*.}
能够提取文件的扩展名。
(我了解 $0、$1、$2、$# 在 bash 中的作用,并且在某种程度上也了解正则表达式)
当我们设置setuid
为文件时,我们在终端中执行以下操作:
chmod u+s filename
Run Code Online (Sandbox Code Playgroud)
这工作正常。但是八进制数 4000 总是与 setuid 相关联(在书籍等中)。
我了解(在一定程度上)文件权限、umask、setuid 的概念以及使用八进制数和chmod
. 但是我仍然无法弄清楚八进制数4000和setuid之间的关系。请解释。