Получить имя текущей директории или папки (без полного пути)
Вопрос: Как получить имя текущего рабочего каталога в bash-скрипте или, ещё лучше, просто с помощью команды в терминале?
Команда pwd
возвращает полный путь к текущему рабочему каталогу, например, /opt/local/bin
, но мне нужно только имя каталога, то есть bin
. Как это сделать?
5 ответ(ов)
Команда echo "${PWD##*/}"
выводит имя последнего каталога из текущего рабочего пути. Давайте разберем это по частям.
PWD
— это переменная окружения, содержащая полный путь к текущему рабочему каталогу.${PWD##*/}
— здесь используется параметрическая подстановка. Двойной символ##
означает "удалить все символы до последнего слэша (/) включительно", что позволяет получить только имя последнего каталога.
Таким образом, если вы находитесь в, например, /home/user/documents
, выполнение команды выведет documents
.
Если у вас есть дополнительные вопросы или нужна помощь с другой командой, не стесняйтесь спрашивать!
Вы можете использовать комбинацию команд pwd
и basename
. Например:
#!/bin/bash
CURRENT=`pwd`
BASENAME=`basename "$CURRENT"`
echo "$BASENAME"
exit;
Этот скрипт сначала получает текущую директорию с помощью pwd
, а затем извлекает имя директории с помощью basename
. В результате будет выведено имя текущей директории.
Для получения имени текущего каталога в Linux можно использовать следующие команды:
Вы можете применить следующую команду:
basename "$PWD"
ИЛИ
IFS=/
var=($PWD)
echo ${var[-1]}
Важно отметить, что после данной операции стоит вернуть разделитель IFS к пробелу:
IFS=
Обратите внимание, что в этой строке после IFS=
должен быть один пробел.
Можно использовать grep
для получения имени текущей директории следующим образом:
pwd | grep -o '[^/]*$'
В этом примере команда pwd
выводит полный путь к текущей директории, а grep -o '[^/]*$'
извлекает только последнее имя директории из этого пути.
-o
заставляетgrep
выводить только совпадения, а не всю строку.- Регулярное выражение
[^/]*$
означает "все символы, не являющиеся/
, до конца строки". Таким образом, оно эффективно захватывает последнее имя директории в пути.
Этот поток обсуждения просто отличный! Вот еще один вариант:
pwd | awk -F / '{print $NF}'
Этот код использует pwd
для получения текущего каталога, а затем с помощью awk
извлекает последнее поле (имя текущей директории) из пути, разделяя его по символу /
.
Как выводить команды оболочки по мере их выполнения
Назначение значений по умолчанию для переменных оболочки одной командой в bash
Как указать приватный SSH-ключ для выполнения команды shell в Git?
Как сделать паузу в shell-скрипте на одну секунду перед продолжением?
Как использовать 'grep' для непрерывного потока?