11

Получить имя текущей директории или папки (без полного пути)

8

Вопрос: Как получить имя текущего рабочего каталога в bash-скрипте или, ещё лучше, просто с помощью команды в терминале?

Команда pwd возвращает полный путь к текущему рабочему каталогу, например, /opt/local/bin, но мне нужно только имя каталога, то есть bin. Как это сделать?

5 ответ(ов)

1

Команда echo "${PWD##*/}" выводит имя последнего каталога из текущего рабочего пути. Давайте разберем это по частям.

  • PWD — это переменная окружения, содержащая полный путь к текущему рабочему каталогу.
  • ${PWD##*/} — здесь используется параметрическая подстановка. Двойной символ ## означает "удалить все символы до последнего слэша (/) включительно", что позволяет получить только имя последнего каталога.

Таким образом, если вы находитесь в, например, /home/user/documents, выполнение команды выведет documents.

Если у вас есть дополнительные вопросы или нужна помощь с другой командой, не стесняйтесь спрашивать!

0

Вы можете использовать комбинацию команд pwd и basename. Например:

#!/bin/bash

CURRENT=`pwd`
BASENAME=`basename "$CURRENT"`

echo "$BASENAME"

exit;

Этот скрипт сначала получает текущую директорию с помощью pwd, а затем извлекает имя директории с помощью basename. В результате будет выведено имя текущей директории.

0

Для получения имени текущего каталога в Linux можно использовать следующие команды:

Вы можете применить следующую команду:

basename "$PWD"

ИЛИ

IFS=/ 
var=($PWD)
echo ${var[-1]} 

Важно отметить, что после данной операции стоит вернуть разделитель IFS к пробелу:

IFS=

Обратите внимание, что в этой строке после IFS= должен быть один пробел.

0

Можно использовать grep для получения имени текущей директории следующим образом:

pwd | grep -o '[^/]*$'

В этом примере команда pwd выводит полный путь к текущей директории, а grep -o '[^/]*$' извлекает только последнее имя директории из этого пути.

  • -o заставляет grep выводить только совпадения, а не всю строку.
  • Регулярное выражение [^/]*$ означает "все символы, не являющиеся /, до конца строки". Таким образом, оно эффективно захватывает последнее имя директории в пути.
0

Этот поток обсуждения просто отличный! Вот еще один вариант:

pwd | awk -F / '{print $NF}'

Этот код использует pwd для получения текущего каталога, а затем с помощью awk извлекает последнее поле (имя текущей директории) из пути, разделяя его по символу /.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь