Какая команда в оболочке Linux / UNIX sh возвращает мой текущий каталог?


37

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

$ *showmewhereiam*
/sys/kernel/debug
$

4
Простой поиск в Google дал бы ответ, не так ли?
Безумный ученый

9
@ Mad-scholist Хотя это может быть правдой, цель сайта вопросов / ответов побуждает людей идти в Google. 90% нашего трафика от веб-поиска .
slhck


2
Нет ничего слишком простого для SEO!
Кензо

Как ни странно, этот вопрос является ответом на простой поиск в Googleunix whereami
Jay Killeen

Ответы:


60

Попробуй pwd.

$ pwd
/home/<username>

6
когда я впервые коснулся linux, я подумал, что это команда о пароле и /devчто-то о разработке (исходные коды или что-то в этом роде)
LiuYan 研 研

2
О, dev означает устройство ?! Всегда думал до сих пор, что это просто означало dev ... Я думал, что dev / null - это место, где разработчики linux помещают специальный нулевой объект. Спасибо @LiuYan 刘 研
1owk3y

@LiuYan 刘 研 - Я полностью согласен, что это сбивает с толку, если вы не знаете. Я должен был посмотреть это. Он обозначает «Рабочий каталог печати» для всех, кто озадачен тем, почему они выбрали эту команду для этой функции.
SquareCandy

1
@squarecandy, поэтому я буду избегать использования аббревиатур, насколько это возможно, когда становлюсь старше и старше, даже акроним в настоящее время не имеет двусмысленного значения - вы никогда не знаете, какое значение это будет иметь в будущем. Уолтер, кукла Джеффа Данхэма, рассказывает шутку : что происходит в Вашингтоне, остается на YouTube! , Где DC означает D igital C Amera , но также означает , что Вашингтон, D istrict из C olumbia в анекдоте.
LiuYan 研 研

11

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

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

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

$ mkdir real
$ ln -s реальный виртуальный
$ cd virtual
$ pwd
/ home / имя пользователя / tmp / virtual
$ pwd -P
/ home / имя пользователя / tmp / real
$ readlink -f.
/ home / имя пользователя / tmp / real

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

$ pwd --physical
bash: pwd: -: неверная опция
pwd: использование: pwd [-LP]
$ / bin / pwd --physical
/ home / имя пользователя / tmp / real
$ / usr / bin / env pwd --physical
/ home / имя пользователя / tmp / real

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. Ну что ж; Надеюсь, что люди найдут это полезным независимо.


Это классная идея. Может хорошо работать для простого варианта использования на рабочем столе. Похоже, это может быть слишком громоздким для очень глубоких каталогов, если ваша подсказка одна Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >или что-то в этом роде.
SquareCandy

1
$ pwd
/your/current/directory
$

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

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

название

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

конспект

pwd [ВАРИАНТ] ...

Описание

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

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

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

-P , --physical

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

--Помогите

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

--версия

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

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

(...)


Это дублирует информацию в принятом ответе более пяти лет назад . Вы можете добавить что-нибудь еще?
бертиб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.