Возьмите последнюю часть пути к папке в оболочке

Если вы наберете pwd, вы получите что-то вроде:

/home/username/Desctop/myfolder/

Как пройти последнюю часть?myfolder дорожка.

Это должно быть просто, но я не могу найти легкого решения в оболочке. Я знаю, как позаботиться об этом в Java, но не в оболочке.

Спасибо

 Jens20 авг. 2015 г., 10:19
Я не думаю, что это правильно: выводpwd делаетnot содержать конечный/.

Ответы на вопрос(6)

dirname а такжеbasename. dirname извлекает все, кроме последней части пути, иbasename извлекает только последнюю часть пути.

В этом случае, используяbasename буду делать что хочешь

basename $(pwd)

basename для этого при условии, что последняя часть действительно является компонентом каталога (а не файлом):

$ basename /home/username/Desctop/myfolder/
myfolder
Решение Вопроса

Вы правы - это быстрая команда:

basename "$PWD"
 05 июн. 2014 г., 08:24
Это по крайней мере одна бесполезная дорогая вилка. Как насчет использования$PWD?
function basename {
    shopt -s extglob
    __=${1%%+(/)}
    [[ -z $__ ]] && __=/ || __=${__##*/}
}

basename "$PWD"
echo "$__"

С помощьюbasename $(pwd) являютсяtwo useless and expensive forks.

echo ${PWD##*/}

следует полностью выполнить трюк в оболочке без дорогих форков (загвоздка: для корневого каталога это пустая строка).

 05 июн. 2014 г., 08:29
Единственное, что последнее/ удаляется вbasename (Возможно, не pply с $ PWD, но в других пользовательских путях это может. Тем не менее, я бы выбрал этот метод поверх него. Другой${VAR%/} (до) не сложно. +1 за ответ, а также упоминание словаexpensive.

basename...

basename $(pwd);

Ваш ответ на вопрос