29

如果你输入 pwd 你会得到类似的东西:

/home/username/Desctop/myfolder/

最后一部分怎么接?myfolder路径。

这一定很简单,但我在 shell 中找不到简单的解决方案。我知道如何在 java 中解决这个问题,但在 shell 中却不知道。

谢谢

4

6 回答 6

30

你是对的 - 这是一个快速命令:

basename "$PWD"
于 2012-05-18T14:10:08.547 回答
13

使用basename $(pwd)的是两个无用且昂贵的叉子

echo "${PWD##*/}"

应该在没有昂贵的分叉的情况下完全在 shell 中完成这个技巧(障碍:对于根目录,这是空字符串)。

于 2012-05-19T11:36:38.167 回答
2

在 Linux 中,有一对命令dirnamebasename. dirname提取路径的最后部分以外的所有部分,并且basename只提取路径的最后部分。

在这种情况下, usingbasename将做你想做的事:

basename $(pwd)

于 2012-05-19T11:33:02.960 回答
1

您可以使用basename它,前提是最后一部分确实是目录组件(不是文件):

$ basename /home/username/Desctop/myfolder/
myfolder
于 2012-05-18T14:09:01.867 回答
0

要提取路径的最后一部分,请尝试使用basename...

basename $(pwd);
于 2012-05-18T14:09:14.350 回答
0
function basename {
    shopt -s extglob
    __=${1%%+(/)}
    [[ -z $__ ]] && __=/ || __=${__##*/}
}

basename "$PWD"
echo "$__"
于 2014-06-05T06:39:22.510 回答