为什么 Unix 允许名称末尾带有句点的文件?这有什么用吗?
例如:
filename.
我问是因为我有一个简单的函数来回显文件的扩展名。
ext() {
echo ${1##*.}
}
Run Code Online (Sandbox Code Playgroud)
但是知道如果文件名以 a 结尾它不会打印任何内容.
,我想知道这样写是否更可靠:
ext() {
extension=${1##*.}
if [ -z "$extension" ]; then
echo "$1"
else
echo "$extension"
fi
}
Run Code Online (Sandbox Code Playgroud)
显然,这取决于您要完成的任务,但是如果.
不允许文件名末尾的a ,我一开始就不会想知道任何事情。
根据几个 来源,UNIX 实用程序指南指定操作数应始终在选项之后处理:
utility_name[OPTIONS][operands...]
Run Code Online (Sandbox Code Playgroud)
众所周知,一些较旧的 UNIX 实用程序并不完全遵循这些约定,例如 ,find
但较新的和完善的实用程序也违反了规则而没有明显的解释,例如curl <url>
。
我想知道这是否有充分的理由以及社区对此的普遍共识是什么。