2011-06-21 10:31:01 +0000 2011-06-21 10:31:01 +0000
37
37

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

Używając powłoki sh (nie bash), które polecenie w systemie Linux/UNIX wypisuje mój bieżący katalog?

$ *showmewhereiam*
/sys/kernel/debug
$

Odpowiedzi (4)

60
60
60
2011-06-21 10:32:09 +0000

Spróbuj pwd.

$ pwd
/home/<username>
```.
11
11
11
2011-06-21 12:48:02 +0000

Ogólną odpowiedzią jest pwd, ale zauważ, że może to dać różne wyniki w zależności od tego, jak dotarłeś do danego katalogu i czy trasa zawierała dowiązania symboliczne.

Na przykład, jeśli masz katalog o nazwie real i dowiązanie symboliczne do tego katalogu o nazwie virtual, a ty cd do katalogu virtual, to pwd pokaże nazwę katalogu virtual, nawet jeśli faktyczny katalog, w którym jesteś, to real.

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

$ 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

Zauważ, że powłoki często zastępują komendę pwd swoją własną wewnętrzną wersją, więc w moim systemie (RHEL6), mimo że strona podręcznika pwd(1) sugeruje, że --physical będzie działać tak samo jak -P, ponieważ używam bash, nie działa:

$ 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
1
1
2017-02-20 09:13:21 +0000
$ pwd
/your/current/directory
$

pwd pochodzi z drukuj katalog roboczy.

Ze strony man Linuxa:

Nazwa

pwd - print name of current/working directory

Synopsis

pwd [OPTION]…

Opis

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

-L , –logiczny

użyj PWD ze środowiska, nawet jeśli zawiera symlinki

-P , –physical

unikaj wszystkich symlinków

–help

wyświetl tę pomoc i zakończ

–version

podaj informację o wersji i zakończ

UWAGA: twoja powłoka może mieć swoją własną wersję pwd, która zwykle zastępuje wersję opisaną tutaj. Proszę zapoznać się z dokumentacją swojej powłoki po szczegóły dotyczące obsługiwanych przez nią opcji.

(…)

1
1
1
2011-06-21 13:24:23 +0000

Jak powiedzieli inni, pwd zwykle wykonuje pracę wystarczająco dobrze. Jednakże, chciałbym dodać pomysł, który mi pomógł.

We wszystkich powszechnie używanych dziś powłokach, jesteś w stanie dostosować wygląd wiersza poleceń. Ja lubię dostosowywać swój tak, aby pokazywał mi zarówno nazwę komputera na którym jestem, jak i mój katalog roboczy. W ten sposób zawsze wiem, gdzie jestem. (Część z nazwą komputera pomaga mi zorientować się, 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 monitów w terminalu jest niesamowicie poręczne - zawsze wiem na pierwszy rzut oka, gdzie dokładnie jestem, nawet bardziej niż patrząc na okno Findera.

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

Edit: Właśnie zauważyłem, że OP stwierdza, że jesteś zainteresowany sh, a nie bash. Och, dobrze; mam nadzieję, że ludzie znajdą to użyteczne bez względu na wszystko.