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

Welk commando in de Linux/UNIX sh shell geeft mijn huidige directory terug?

Welk commando in Linux/UNIX, gebruikmakend van de sh shell (niet bash), print mijn huidige directory uit?

$ *showmewhereiam*
/sys/kernel/debug
$

Antwoorden (4)

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

Probeer pwd.

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

Het algemene antwoord is pwd, maar merk op dat dit verschillende resultaten kan geven, afhankelijk van hoe je een bepaalde map bereikt hebt, en of de route symbolische links bevatte.

Bijvoorbeeld, als je een map hebt die real heet en een symbolische link naar die map die virtual heet, en je cd naar de virtual map, dan zal pwd die virtual mapnaam laten zien, ook al is de echte map waar je in zit real.

Om de echte onderliggende directory te tonen, gebruik je pwd -P of readlink -f (voor een willekeurig pad):

$ 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

Merk op dat shells vaak het pwd commando vervangen door hun eigen interne versie, dus op mijn systeem (RHEL6), ook al suggereert de pwd(1) manual pagina dat --physical net zo goed zal werken als -P, omdat ik bash draai, doet het dat niet:

$ 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 komt uit de print werkdirectory.

Van Linux man page:

Naam

pwd - naam van huidige/werkdirectory afdrukken

Synopsis

pwd [OPTION]…

Beschrijving

Druk de volledige bestandsnaam van de huidige werkdirectory af.

-L , –logisch

gebruik PWD van omgeving, ook als die symlinks bevat

-P , –physical

vermijd alle symlinks

–help

toon deze help en verlaat

–version

uitvoer versie-informatie en verlaat

OPMERKING: uw shell kan zijn eigen versie van pwd hebben, die gewoonlijk de hier beschreven versie vervangt. Raadpleeg de documentatie van uw shell voor details over de opties die hij ondersteunt.

(…)

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

Zoals anderen al zeiden, pwd doet het werk meestal goed genoeg. Ik wil echter een idee toevoegen dat mij geholpen heeft.

Op alle shells die tegenwoordig veel gebruikt worden, kun je het uiterlijk van de opdrachtprompt aanpassen. Ik pas de mijne graag zo aan dat hij zowel de naam van de computer waar ik op zit als mijn werkdirectory laat zien. Op die manier weet ik altijd waar ik ben. (Het computer naam deel helpt me te realiseren of het terminal venster dat ik gebruik is gebruikt om te SSH-en op een server op afstand). Bijvoorbeeld, als ik een nieuw terminal venster open op mijn laptop, die ik Plastico noem, dan zie ik dit:

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

Je kunt zien dat het mijn home directory afkort als ~. Ik vind het ongelooflijk handig om dit te doen voor mijn terminal prompts - ik weet altijd in een oogopslag precies waar ik ben, zelfs meer dan wanneer ik in een Finder venster zou kijken.

Op tcsh doe ik dit door set prompt = 'Plastico %~%# ' toe te voegen aan mijn .tcshrc bestand in mijn home directory. Ik heb het ook met ksh gedaan door export PS1="Plastico $PWD $ " aan mijn .profile bestand toe te voegen. Maar omdat je een Linux gebruiker bent, gebruik je waarschijnlijk Bash, waar ik niet veel ervaring mee heb (ik ben zo'n mafkees). Maar het lijkt erop ik zou het kunnen doen door PS1="Plastico \w $ " aan mijn .bashrc bestand toe te voegen.

Edit: Ik zie net dat de OP zegt dat je geïnteresseerd bent in sh, niet in bash. Oh wel; hoop dat mensen dit hoe dan ook nuttig vinden.