Które polecenie w powłoce sh Linux / UNIX zwraca mój bieżący katalog?

37

Które polecenie w systemie Linux / UNIX wypisuje mój bieżący katalog za pomocą shpowłoki (nie bash)?

$ *showmewhereiam*
/sys/kernel/debug
$
Hieu Nguyen
źródło
4
Proste wyszukiwanie w Google dałoby odpowiedź, prawda?
Szalony naukowiec
9
@ Szalony naukowiec Chociaż może to być prawda, nie wystarcza to, by witryna z pytaniami / odpowiedziami zachęcała użytkowników do korzystania z Google. 90% naszego ruchu pochodzi z wyszukiwarek internetowych .
slhck
2
Dla SEO nie ma nic prostszego!
Kenzo,
To zabawne, to pytanie jest odpowiedzią na proste wyszukiwanie w Googleunix whereami
Jay Killeen

Odpowiedzi:

60

Spróbować pwd.

$ pwd
/home/<username>
głośno i wyraźnie
źródło
6
kiedy po raz pierwszy dotknąłem Linuksa, pomyślałem, że jest to polecenie dotyczące hasła i /devjest coś o rozwoju (kody źródłowe lub coś w tym stylu)
LiuYan
2
Och, dev oznacza urządzenie ?! Zawsze przemyślane do tej pory oznaczało po prostu dev ... Myślałem, że dev / null to miejsce, w którym programiści Linuksa umieszczają specjalny obiekt null. Dzięki @LiuYan 刘 研
1owk3y
@LiuYan 刘 研 - Całkowicie zgadzam się, że jest to mylące, jeśli nie wiesz. Musiałem to sprawdzić. Oznacza „Drukuj katalog roboczy” dla każdego, kto jest zaskoczony, dlaczego wybrał to polecenie dla tej funkcji.
squarecandy
1
@squarecandy, Dlatego unikam używania akronimów, jak to możliwe, kiedy się starzeję, nawet akronim nie ma w tej chwili dwuznacznego znaczenia - nigdy nie wiesz, jakie znaczenie będzie miało w przyszłości. Walter powiedział żart lalki Jeffa Dunhama : To, co dzieje się w Waszyngtonie, pozostaje na YouTube! , Gdzie środki DC D igital C Amera ale oznacza również, Washington, D istrict od C olumbia w żart.
LiuYan 研 研
11

Chociaż ogólna odpowiedź brzmi pwd: pamiętaj, że może to dać różne wyniki w zależności od tego, w jaki sposób dotarłeś do danego katalogu i czy trasa zawierała dowiązania symboliczne.

Na przykład, jeśli masz nazwany katalog reali dowiązanie symboliczne do tego katalogu virtual, a ty cddo virtualkatalogu, to pwdpokaże tę virtualnazwę katalogu, nawet jeśli katalog, w którym aktualnie się znajdujesz, to real.

Aby pokazać prawdziwy katalog bazowy, użyj albo pwd -Plub readlink -f(dla dowolnej ścieżki):

$ mkdir prawdziwy
$ ln -s prawdziwy wirtualny
$ cd virtual
$ pwd
/ home / nazwa użytkownika / tmp / virtual
$ pwd -P
/ home / nazwa użytkownika / tmp / real
$ readlink -f.
/ home / nazwa użytkownika / tmp / real

Zauważ, że powłoki często zastępują pwdpolecenie własną wersją wewnętrzną, więc w moim systemie (RHEL6), mimo że pwd(1)strona podręcznika sugeruje, że --physicalto zadziała, a -Pponieważ działam, bashnie:

$ pwd - fizyczny
bash: pwd: -: niepoprawna opcja
pwd: wykorzystanie: pwd [-LP]
$ / bin / pwd --physical
/ home / nazwa użytkownika / tmp / real
$ / usr / bin / env pwd --physical
/ home / nazwa użytkownika / tmp / real
Mark Booth
źródło
1

Jak powiedzieli inni, pwdzwykle wykonuje to dobrze. Chciałbym jednak dodać pomysł, który mi pomógł.

We wszystkich powszechnie używanych dziś powłokach można dostosować wygląd wiersza polecenia. Lubię dostosowywać mój, aby wyświetlał mi zarówno nazwę komputera, na którym pracuję, jak i mój katalog roboczy. W ten sposób zawsze wiem, gdzie jestem. (Część nazwy komputera pomaga mi zrozumieć, czy okno terminala, którego używam, zostało użyte do SSH do zdalnego serwera.) Na przykład, kiedy otwieram nowe okno terminala na moim laptopie, który nazywam Plastico, widzę to:

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

Widać, że to skrót mojego katalogu domowego jako ~. Uważam, że robienie tego dla moich podpowiedzi terminalowych jest niezwykle przydatne - zawsze wiem na pierwszy rzut oka dokładnie, gdzie jestem, nawet bardziej niż gdybym patrzył w okno Findera.

W tcsh robię to, dodając set prompt = 'Plastico %~%# ' do mojego pliku .tcshrc w moim katalogu domowym. Zrobiłem to również na ksh, dodając export PS1="Plastico $PWD $ "do mojego pliku .profile. Ale będąc użytkownikiem Linuksa, prawdopodobnie używasz Basha, z którym nie mam dużego doświadczenia (jestem takim dziwakiem). Ale wygląda na to, że mogę to zrobić, dodając PS1="Plastico \w $ "do mojego pliku .bashrc.

Edycja: Właśnie zauważyłem stany OP, którymi jesteś zainteresowany sh, a nie bash. No cóż; mam nadzieję, że ludzie uznają to za przydatne niezależnie.

Garrett Albright
źródło
To fajny pomysł. Może działać dobrze w przypadku prostego komputera stacjonarnego. Wygląda na to, że bardzo rzadko może się to przydać w przypadku bardzo głębokich katalogów, jeśli sam monit jest Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >lub coś takiego.
squarecandy
1
$ pwd
/your/current/directory
$

pwdpochodzi z katalogu roboczego drukowania .

Ze strony podręcznika systemu Linux:

Imię

pwd - wypisuje nazwę bieżącego / roboczego katalogu

Streszczenie

pwd [OPCJA] ...

Opis

Wydrukuj pełną nazwę pliku bieżącego katalogu roboczego.

-L , --logiczne

używaj PWD ze środowiska, nawet jeśli zawiera dowiązania symboliczne

-P , --fizyczne

unikaj wszystkich dowiązań symbolicznych

--Wsparcie

wyświetl tę pomoc i wyjdź

--wersja

wyświetla informacje o wersji i kończy działanie

UWAGA: twoja powłoka może mieć własną wersję pwd, która zwykle zastępuje opisaną tutaj wersję. Zapoznaj się z dokumentacją powłoki, aby uzyskać szczegółowe informacje na temat obsługiwanych przez nią opcji.

(...)

simhumileco
źródło
To powiela informacje w zaakceptowanej odpowiedzi sprzed ponad pięciu lat . Czy możesz dodać coś jeszcze?
bertieb