Unix:创建一个与工作目录同名的目录

时间:2012-07-04 04:12:45

标签: shell unix mkdir

假设我在/var/www/foo,我想创建/tmp/foo。有没有办法以编程方式执行此操作,最终得到mkdir /tmp/[insert something here]等命令?

2 个答案:

答案 0 :(得分:3)

mkdir /tmp/`basename $(pwd)`

(请注意,它们是反叛,而不是前锋。)

这是有效的,因为反引号会执行命令替换。它基本上运行反引号中的东西,并用命令运行中的标准替换它。在这种情况下,basename命令具有当前工作路径。并且$(…)与反引号完全相同。

basename命令“strip目录和文件名后缀”。 (见http://unixhelp.ed.ac.uk/CGI/man-cgi?basename

您也可以使用(如果您不想使用反引号):

mkdir /tmp/$(basename $(pwd))

请注意,如果当前目录的路径包含空格或其他特殊字符,则需要将命令替换为双引号:

mkdir "/tmp/$(basename "$(pwd)")"

答案 1 :(得分:0)

$PWD始终包含当前目录的完整路径。因此${PWD##*/}$PWD除了最后一个/之外的部分)是当前目录的名称。

mkdir "/tmp/${PWD##*/}"

如果您知道当前目录的名称不包含任何空格或任何字符*?\[,则可以省略双引号。

在zsh中,有一种更简单的方法来提取路径的最后一个组件:

mkdir -- /tmp/$PWD:t