0

假设我在/var/www/foo其中并且想创建/tmp/foo. 有没有办法我可以通过编程方式做到这一点并最终得到类似的命令mkdir /tmp/[insert something here]

4

2 回答 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 回答