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

Welcher Befehl in der Linux/UNIX-Shell sh gibt mein aktuelles Verzeichnis zurück?

Welcher Befehl in Linux/UNIX gibt bei Verwendung der Shell sh (nicht bash) mein aktuelles Verzeichnis aus?

$ *showmewhereiam*
/sys/kernel/debug
$

Antworten (4)

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

Versuchen Sie pwd.

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

Die allgemeine Antwort ist pwd, aber beachten Sie, dass dies unterschiedliche Ergebnisse liefern kann, je nachdem, wie Sie ein bestimmtes Verzeichnis erreicht haben und ob die Route symbolische Links enthält.

Wenn Sie beispielsweise ein Verzeichnis mit dem Namen real und einen symbolischen Link zu diesem Verzeichnis mit dem Namen virtual haben und mit cd in das Verzeichnis virtual wechseln, zeigt pwd den Namen des Verzeichnisses virtual an, auch wenn das tatsächliche Verzeichnis, in dem Sie sich befinden, real ist.

Um das tatsächliche darunter liegende Verzeichnis anzuzeigen, verwenden Sie entweder pwd -P oder readlink -f (für einen beliebigen Pfad):

$ 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

Beachten Sie, dass Shells den Befehl pwd oft durch ihre eigene interne Version ersetzen, so dass auf meinem System (RHEL6), obwohl die pwd(1)-Handbuchseite nahelegt, dass --physical genauso gut funktioniert wie -P, weil ich bash verwende, dies nicht der Fall ist:

$ 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 kommt aus dem Arbeitsverzeichnis drucken.

Aus der Linux-Manpage:

Name

pwd - Name des aktuellen/Arbeitsverzeichnisses drucken

Synopse

pwd [OPTION]…

Beschreibung

Druckt den vollständigen Dateinamen des aktuellen Arbeitsverzeichnisses.

-L , –logisch

PWD aus Umgebung verwenden, auch wenn es Symlinks enthält

-P , –physikalisch

alle Symlinks vermeiden

–help diese Hilfe anzeigen und beenden

–version

Versionsinformationen ausgeben und beenden

HINWEIS: Ihre Shell hat möglicherweise eine eigene Version von pwd, die in der Regel die hier beschriebene Version übertrifft. Bitte lesen Sie in der Dokumentation Ihrer Shell nach, welche Optionen sie unterstützt.

(…)

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

Wie andere schon sagten, erledigt pwd die Aufgabe normalerweise gut genug. Ich möchte jedoch eine Idee hinzufügen, die mir geholfen hat.

Auf allen heute gebräuchlichen Shells können Sie das Aussehen der Eingabeaufforderung anpassen. Ich passe meine gerne so an, dass sie mir sowohl den Namen des Computers, auf dem ich mich befinde, als auch mein Arbeitsverzeichnis anzeigt. Auf diese Weise weiß ich immer, wo ich bin. (Der Teil mit dem Computernamen hilft mir zu erkennen, ob das Terminalfenster, das ich verwende, für SSH mit einem entfernten Server verwendet wurde.) Wenn ich zum Beispiel ein neues Terminalfenster auf meinem Laptop öffne, das ich Plastico nenne, sehe ich folgendes:

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

Sie können sehen, dass es mein Home-Verzeichnis als ~ abkürzt. Ich finde es unglaublich praktisch, dies für meine Terminal-Eingabeaufforderungen zu tun - ich weiß immer auf einen Blick genau, wo ich bin, sogar mehr, als wenn ich in ein Finder-Fenster schauen würde.

Bei tcsh mache ich das, indem ich set prompt = 'Plastico %~%# ' zu meiner .tcshrc-Datei in meinem Heimatverzeichnis hinzufüge. Ich habe es auch bei ksh gemacht, indem ich export PS1="Plastico $PWD $ " zu meiner .profile-Datei hinzufügte. Aber da Sie ein Linux-Benutzer sind, benutzen Sie wahrscheinlich die Bash, mit der ich nicht viel Erfahrung habe (ich bin so ein komischer Kauz). Aber es sieht so aus Ich könnte es schaffen, indem ich PS1="Plastico \w $ " zu meiner .bashrc-Datei hinzufüge.

Edit: Ich habe gerade bemerkt, dass der OP sagt, dass Sie an sh interessiert sind, nicht an bash. Nun gut; ich hoffe, die Leute finden das trotzdem nützlich.