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


37

Welcher Befehl in Linux / UNIX druckt über die shShell (nicht bash) mein aktuelles Verzeichnis aus?

$ *showmewhereiam*
/sys/kernel/debug
$

4
Eine einfache Google-Suche hätte die Antwort gegeben, nicht wahr?
Mad-Scientist

9
@ Mad-scientist Auch wenn dies zutrifft, wird der Zweck einer Frage- / Antwort-Website außer Kraft gesetzt, die den Nutzern sagt, dass sie zu Google gehen sollen. 90% unserer Zugriffe stammen aus Websuchen .
Slhck


2
Nichts ist zu einfach für SEO!
Kenzo

Witzigerweise ist diese Frage die Antwort auf die einfache Google-Suche nachunix whereami
Jay Killeen

Antworten:


60

Versuchen Sie es pwd.

$ pwd
/home/<username>

6
als ich linux zum ersten mal berührte, dachte ich, es sei ein befehl über kennwörter und /devetwas über entwicklung (
quellcodes

2
Oh, dev bedeutet Gerät ?! Bisher immer gedacht, dass es nur dev bedeutet ... Ich dachte, dev / null ist der Ort, an dem Linux- Entwickler das spezielle Null-Objekt platzieren. Thanks @LiuYan 刘 研
1owk3y

@LiuYan 刘 刘 - Ich stimme vollkommen zu, es ist verwirrend, wenn Sie es nicht wissen. Ich musste es nachschlagen. Es steht für "Arbeitsverzeichnis drucken" für alle, die sich wundern, warum sie diesen Befehl für diese Funktion auswählen würden.
Squarecandy

1
@squarecandy, Deshalb vermeide ich die Verwendung von Akronymen so weit wie möglich, wenn ich älter und älter werde. Selbst das Akronym hat zu diesem Zeitpunkt keine mehrdeutige Bedeutung - Sie wissen nie, welche Bedeutung es in Zukunft haben wird. Jeff Dunhams Puppe Walter hat einen Witz erzählt : Was in DC passiert, bleibt auf YouTube! , wobei DC D igital C amera bedeutet, aber auch Washington, D istrict of C olumbia im Witz.
LiuYan 刘 研

11

Während die allgemeine Antwort ist pwd, dass Notiz kann dies zu unterschiedlichen Ergebnissen führen , je nachdem , wie Sie ein bestimmtes Verzeichnis erreicht, und ob die Route enthalten symbolische Links.

Wenn Sie beispielsweise ein Verzeichnis mit dem Namen realund eine symbolische Verknüpfung zu diesem Verzeichnis virtualund cdzu dem virtualVerzeichnis haben, pwdwird dieser virtualVerzeichnisname angezeigt, obwohl sich das aktuelle Verzeichnis in dem Sie befinden real.

Verwenden Sie zum Anzeigen des tatsächlichen zugrunde liegenden Verzeichnisses entweder pwd -Poder readlink -f(für einen beliebigen Pfad):

$ mkdir real
$ ln -s echt virtuell
$ cd virtual
$ pwd
/ home / benutzername / tmp / virtual
$ pwd -P
/ home / benutzername / tmp / real
$ readlink -f.
/ home / benutzername / tmp / real

Beachten Sie, dass Schalen oft den ersetzen pwdBefehl mit ihrer eigenen internen Version, so auf meinem System (RHEL6), auch wenn die pwd(1)manuelle Seite , dass deutet darauf hin , --physicalwie gut funktionieren wie -P, weil ich laufe bash, tut es nicht:

$ pwd --physical
bash: pwd: -: ungültige Option
pwd: usage: pwd [-LP]
$ / bin / pwd --physical
/ home / benutzername / tmp / real
$ / usr / bin / env pwd --physical
/ home / benutzername / tmp / real

1

Wie andere sagten, pwderledigt die Arbeit in der Regel gut genug. Ich möchte jedoch eine Idee hinzufügen, die mir geholfen hat.

Auf allen heute gebräuchlichen Shells können Sie das Erscheinungsbild der Eingabeaufforderung anpassen. Ich passe meine gerne so an, dass sowohl der Name des Computers, auf dem ich mich befinde, als auch mein Arbeitsverzeichnis angezeigt werden. So weiß ich immer, wo ich bin. (Der Teil mit dem Computernamen hilft mir zu erkennen, ob das von mir verwendete Terminalfenster für SSH auf einem Remote-Server verwendet wurde.) Wenn ich beispielsweise 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 Ausgangsverzeichnis als abkürzt ~. Ich finde es unglaublich praktisch, dies für meine Terminal-Eingabeaufforderungen zu tun - ich weiß immer auf einen Blick, wo ich mich gerade befinde, und das noch mehr, als wenn ich in ein Finder-Fenster schaue.

Unter tcsh set prompt = 'Plastico %~%# ' füge ich dies zu meiner .tcshrc-Datei in meinem Ausgangsverzeichnis hinzu . Ich habe es auch auf ksh gemacht, indem ich export PS1="Plastico $PWD $ "es meiner .profile-Datei hinzugefügt habe. Aber als Linux-Benutzer verwenden Sie wahrscheinlich Bash, mit dem ich nicht viel Erfahrung habe (ich bin so ein Verrückter). Aber es sieht so aus, als könnte ich es schaffen, indem ich PS1="Plastico \w $ "es meiner .bashrc-Datei hinzufüge .

Edit: Ich habe gerade die OP-Zustände bemerkt, die dich interessieren, sh, nicht bash. Naja; Ich hoffe, die Leute finden das trotzdem nützlich.


Das ist eine coole Idee. Könnte für einen einfachen Desktop-Anwendungsfall gut funktionieren. Scheint, als würde es für supertiefe Verzeichnisse unhandlich werden, wenn nur Ihre Eingabeaufforderung lautet Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >oder so.
SquareCandy

1
$ pwd
/your/current/directory
$

pwdkommt aus dem Druck-Arbeitsverzeichnis .

Aus der Linux-Manpage:

Name

pwd - druckt den Namen des aktuellen / Arbeitsverzeichnisses

Zusammenfassung

pwd [OPTION] ...

Beschreibung

Gibt den vollständigen Dateinamen des aktuellen Arbeitsverzeichnisses aus.

-L , --logisch

Verwenden Sie PWD aus der Umgebung, auch wenn es Symlinks enthält

-P , --physikalisch

Vermeiden Sie alle Symlinks

--Hilfe

Diese Hilfe anzeigen und beenden

--Ausführung

Versionsinformationen ausgeben und beenden

ANMERKUNG: Ihre Shell verfügt möglicherweise über eine eigene Version von pwd, die normalerweise die hier beschriebene Version ersetzt. Weitere Informationen zu den unterstützten Optionen finden Sie in der Dokumentation Ihrer Shell.

(...)


Dies dupliziert Informationen in der akzeptierten Antwort von vor über fünf Jahren . Können Sie noch etwas hinzufügen?
Bertieb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.