答案 0 :(得分:0)
当您将任何特殊字符或任何带有其参数的命令放在 ""
(双引号)内时,它会将其视为一个完整的字符串,然后尝试进行计算。
下面的例子会更清楚:-
以下参考来自here(这是一个很棒的参考,请尝试了解ubuntu如何对待'
和"
):-
用单引号 (') 括起来的字符会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠也是如此。
<块引用>用双引号 (") 括起来的字符会保留引号内所有字符的字面值,除了 $、
特殊参数 * 和 @ 在双引号中具有特殊含义(参见 Shell Parameter Expansion)。
对于命令 "$(dirname "~")"
:- Ubuntu 将首先将 $(dirname "~")
视为一个完整的字符串并尝试计算,然后进一步分解它,ubuntu 将尝试将命令 dirname "~"
执行为 { {1}} 位于 ~
内,它被视为单个字符串,并且由于下面解释的 ""
的愚蠢行为,它将返回 dirname
,即当前工作目录>
dirname 命令的简单语法 -- .
使用带有文件绝对路径的 dirname 命令将给出目录路径:
dirname OPTION PATH
dirname 命令实际上也很愚蠢。它并不真正识别文件路径。它只是查找斜杠 (/) 并打印最后一个斜杠之前的内容。基本上,你可以给它任何带有/在里面的字符串,它会起作用。
例如,我在这里使用了一个没有文件名的随机字符串。您可以看到它仍然工作相同,并输出一个字符串,删除最后一个 / 及其后面的文本。
答案 1 :(得分:0)
也许您可以通过执行 man
使用 dirname
命令获取有关 man dirname
的详细信息。
NAME
dirname - strip last component from file name
SYNOPSIS
dirname [OPTION] NAME...
DESCRIPTION
Output each NAME with its last non-slash component and trailing slashes removed;
if NAME contains no /'s, output '.' (meaning the current directory).
-z, --zero
end each output line with NUL, not newline
--help display this help and exit
--version
output version information and exit
EXAMPLES
dirname /usr/bin/
-> "/usr"
dirname dir1/str dir2/str
-> "dir1" followed by "dir2"
dirname stdio.h
-> "."