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
$
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
$
Spróbuj pwd
.
$ pwd
/home/<username>
```.
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
$ pwd
/your/current/directory
$
pwd
pochodzi z drukuj katalog roboczy.
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.
(…)
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.