37

Какая команда в Linux/UNIX распечатывает мой текущий каталог с помощью оболочки sh (не bash)?

$ *showmewhereiam*
/sys/kernel/debug
$

4 ответа4

59

Попробуйте pwd .

$ pwd
/home/<username>
11

Хотя общим ответом является pwd , обратите внимание, что это может дать разные результаты в зависимости от того, как вы достигли данного каталога, и от того, включены ли в маршрут символические ссылки.

Например, если у вас есть каталог с именем real и символическая ссылка на этот каталог с именем virtual , и вы cd на virtual каталог, то pwd покажет имя этого virtual каталога, даже если фактический каталог, в котором вы находитесь, является real .

Чтобы показать реальный базовый каталог, используйте либо pwd -P либо readlink -f (для произвольного пути):

$ mkdir real
$ ln -s real virtual
$ cd virtual
$ pwd
/home/username/tmp/virtual
$ pwd -P
/home/username/tmp/real
$ readlink -f .
/home/username/tmp/real

Обратите внимание, что оболочки часто заменяют команду pwd своей собственной внутренней версией, поэтому в моей системе (RHEL6), хотя страница справочника pwd(1) предполагает, что --physical будет работать так же, как и -P , потому что я использую bash это не так:

$ pwd --physical
bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
$ /bin/pwd --physical
/home/username/tmp/real
$ /usr/bin/env pwd --physical
/home/username/tmp/real
1
$ pwd
/your/current/directory
$

pwd происходит из рабочего каталога печати.

Из справочной страницы Linux:

название

pwd - вывести имя текущего / рабочего каталога

конспект

pwd [ОПЦИЯ] ...

Описание

Напечатайте полное имя файла текущего рабочего каталога.

-L, - логический

использовать PWD из среды, даже если он содержит символические ссылки

-P, --physical

избегать всех символических ссылок

--Помогите

показать эту помощь и выйти

--версия

вывести информацию о версии и выйти

ПРИМЕЧАНИЕ: ваша оболочка может иметь свою собственную версию pwd, которая обычно заменяет версию, описанную здесь. Пожалуйста, обратитесь к документации вашей оболочки для деталей о поддерживаемых опциях.

(...)

1

Как говорили другие, pwd обычно выполняет свою работу достаточно хорошо. Тем не менее, я хотел бы добавить идею, которая помогла мне.

На всех общеупотребительных оболочках сегодня вы можете настроить внешний вид командной строки. Мне нравится настраивать мой так, чтобы он отображал как имя компьютера, на котором я работаю, так и мой рабочий каталог. Таким образом, я всегда знаю, где я. (Часть имени компьютера помогает мне понять, использовалось ли используемое мной окно терминала для SSH на удаленном сервере.) Например, когда я открываю новое окно терминала на моем ноутбуке, которое я называю Plastico, я вижу это:

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr> 

Вы можете видеть, что это сокращает мой домашний каталог как ~ . Я считаю, что делать это для моих терминальных подсказок невероятно удобно - я всегда с первого взгляда точно знаю, где я нахожусь, даже больше, чем когда бы я смотрел в окно Finder.

На tcsh я делаю это, добавляя set prompt = 'Plastico %~%# ' в мой файл .tcshrc в моем домашнем каталоге. Я также сделал это для ksh, добавив export PS1="Plastico $PWD $ " в мой файл .profile. Но, будучи пользователем Linux, вы, вероятно, используете Bash, с которым у меня не так много опыта (я странный, как этот). Но похоже, что я мог бы сделать это, добавив PS1="Plastico \w $ " в мой файл .bashrc.

Редактировать: только что заметил, что ОП заявляет, что вы заинтересованы sh, а не bash. Ну что ж; надеюсь, что люди найдут это полезным, независимо от того.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .