Как распечатать ТОЛЬКО текущий каталог, в котором я сейчас нахожусь

Я пытаюсь найти способ правильно получить только имя каталога, в котором я сейчас нахожусь. Если я в каталоге с именем HW04, и pwd распечатывает home/zachary/HW04как бы распечатать только HW04? Или использует pwd для того, чтобы получить имя многим? какие-нибудь более простые методы?

Заранее спасибо.

3 ответа

Вы могли бы использовать echo $(basename $(pwd)) (или просто basename $(pwd) если вы хотите распечатать его); см. basename (1), pwd (1) (возможно, встроенная оболочка) и раздел подстановки команд bash справочное руководство.

Вы могли бы найти некоторую конфигурацию приглашения bash, чтобы настроить ваше приглашение сообщать вам такие вещи.

Можно также использовать awk,

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

Это даст вам только имя текущей папки.

Пример это даст вам, как это

Эй, попробуйте использовать basename home/zachary/HW04

Использование basename Использование команды basename - это самый простой и простой способ извлечь текущий каталог:

basename /usr/local/bin

OutPut будет binОднако это не полезно в сценарии оболочки с изменением переменных каталога. Вы можете комбинировать его с pwd внутри обратных кавычек, чтобы сделать его более динамичным:

cd / usr / local / binbasename pwdbin Использование подстановки параметров с помощью echo Язык сценариев bash полон приятных трюков, включая подстановку параметров, которая позволяет вам манипулировать или расширять переменные. Вы можете использовать подстановку параметров с помощью синтаксиса ${var##pattern}, который удаляет из $var самую длинную часть $Pattern, соответствующую внешнему концу $var. Взгляните на пример:

cd / var / log / squidecho $ {PWD ## * /} squid PWD - это переменная окружения, которая содержит текущий путь, а ## - это инструкция, которая указывает сценарию удалить все, что он находит до * /. Другими словами, он удаляет все до последнего /, оставляя только последнюю строку, которая здесь является текущим каталогом, squid. Вы можете узнать больше о замене параметров и других способах управления переменными в Расширенном руководстве по написанию сценариев.

Использование awk и rev Более сложное решение использует комбинацию awk (утилита сканирования шаблонов) и rev (утилита, которая переворачивает строки из файла или из stdin):

cd / usr / share / cups / datapwd | рев | awk ââ¬âF / '{print $1}' | rev data Шаг за шагом гораздо проще понять этот вид скрипта:

pwd / usr / share / cups / data pwd | rev atad / supc / erahs / rsu / pwd | рев | awk à â â¬âF / '{print $ 1}' atad pwd | рев | awk ââ¬âF / '{print $1}' | rev data Опция -F указывает, что вы должны разделять по полям, где разделитель полей равен /, и что вы должны напечатать поле 1.

Использование sed Наконец, вы можете проанализировать вывод pwd в редакторе потоков sed, используя тщательно продуманное регулярное выражение. Этот подход может быть образовательным, но это не практично:

cd / home / smith / musicpwd | sed 's, ^ (./) \? ([^ /]), \ 2,' music Для лучшего понимания того, как это работает, удалите escape-символ (), который требуется для специальных символов, таких как "(":

sed 's, ^ (./)? ([^ /]), \ 2,'

PWD. В Unix-подобных и некоторых других операционных системах команда pwd (рабочий каталог печати) записывает полный путь текущего рабочего каталога в стандартный вывод. Команда представляет собой оболочку, встроенную в большинство оболочек Unix, таких как оболочка Bourne, ash, bash, ksh и zsh.

pwd Показать текущий рабочий каталог. Пример: / home / foobar

pwd -P Показать физический путь текущего рабочего каталога - без имени символической ссылки, если есть. Пример: если вы находитесь в dir / home / symlinked, то есть в символической ссылке на / home / realdir, это будет показывать / home / realdir

pwd -L Вывести логический путь к текущему рабочему каталогу - с символьным именем ссылки, если есть. Пример: если вы находитесь в dir / home / symlinked, то есть символической ссылке на / home / realdir, это будет показывать / home / symlinked

https://en.wikipedia.org/wiki/Pwd

Другие вопросы по тегам