假设我在/var/www/foo
其中并且想创建/tmp/foo
. 有没有办法我可以通过编程方式做到这一点并最终得到类似的命令mkdir /tmp/[insert something here]
?
问问题
181 次
2 回答
3
mkdir /tmp/`basename $(pwd)`
(请注意,它们是反引号,而不是正引号。)
这是有效的,因为反引号做命令替换。它基本上运行反引号中的内容,并用命令运行中的标准替换它。在这种情况下,该basename
命令具有当前工作路径。并且$(…)
与反引号完全相同。
命令“basename
从文件名中去除目录和后缀”。(见http://unixhelp.ed.ac.uk/CGI/man-cgi?basename)
你也可以使用(如果你不想有反引号):
mkdir /tmp/$(basename $(pwd))
请注意,如果当前目录的路径包含空格或其他特殊字符,则需要将命令替换放在双引号中:
mkdir "/tmp/$(basename "$(pwd)")"
于 2012-07-04T04:17:07.797 回答
0
$PWD
始终包含当前目录的完整路径。因此${PWD##*/}
($PWD
直到最后的部分除外/
)是当前目录的名称。
mkdir "/tmp/${PWD##*/}"
如果您知道当前目录的名称不包含任何空格或任何字符,则可以省略双引号*?\[
。
在 zsh 中,有一种更简单的方法可以提取路径的最后一个组件:
mkdir -- /tmp/$PWD:t
于 2012-07-04T20:57:13.863 回答