Warum sollten Sie cd ausführen? bevor Sie etwas tun?

Antworten:

32

Das tust du nicht.

Zumindest nicht einfach so. Die vorhergehende Zeile im zitierten Dokument ist von Bedeutung:

  • pwdRichten Sie Ihre Eingabeaufforderung so ein, dass bei jeder CD eine neue erstellt wird.
  • Mach immer ein, cd .bevor du etwas tust.

Auf diese Weise überprüfen Sie als Bediener Ihr aktuelles Arbeitsverzeichnis, bevor Sie etwas Wichtiges tun, da es bei jeder Änderung ausgedruckt wird. cd .macht sonst keinen Sinn.

Diese "Überprüfung" ist eine gute Sache, und Sie sollten eine Form davon anpassen. Eine (IMHO) gemeinsame Variation dieses Themas ist zu immer an der Eingabeaufforderung das Arbeitsverzeichnis ausdrucken.

römisch
quelle
11
Es ist wahrscheinlich besser, dies als "immer" pwd "zu betrachten, bevor Sie etwas Wichtiges tun, um sicherzustellen, dass Sie sich in dem Verzeichnis befinden, von dem Sie glauben, dass Sie es sind"
Rod MacPherson
4
Warum nicht einfach pwdvorher etwas tun?
Martin Konecny
15
Eigentlich hat es einen Nutzen. Wenn Sie über einen symbolischen Link in ein Verzeichnis gegangen sind und der Link dann gelöscht und an einer anderen Stelle neu erstellt wird, z. B. während einer Serverbereitstellung, bei der Versionen mit einem Symlink auf "current_release" gesteuert werden, cd .würde dies den tatsächlichen zugrunde liegenden Wert ändern Verzeichnis, in dem Sie sich befinden.
Stewart
1
+1 für " Arbeitsverzeichnis immer an der Eingabeaufforderung ausdrucken." Das ist was ich mache.
Paddy Landau
4
@Stewart Leider hilft dies nicht, wenn sich der symbolische Link nach, cd . aber vor einer anderen Aktion ändert . Dies verringert lediglich die Wahrscheinlichkeit, dass Sie sich im falschen Verzeichnis befinden, löst jedoch nicht das allgemeine Problem. Es sei denn, Sie wechseln in das reale Verzeichnis mit etwas cd $(readlink -f .), das Sie tatsächlich dort bleiben möchten.
Scai
18

Wenn das aktuelle Arbeitsverzeichnis Ihrer Shell entfernt wird, können Daten verloren gehen.

Beispielsweise,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

Die Ausgabe von some_commandwurde nicht auf die Festplatte geschrieben.

Die Eingabe cd .vor dem Ausführen eines Befehls würde das Problem aufdecken.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

Wenn das aktuelle Arbeitsverzeichnis entfernt und neu erstellt wurde, wird durch Eingabe cd .der Verweis auf dieses Verzeichnis "aktualisiert".

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

quelle
13

Ich denke, es ist wichtiger, Ihr aktuelles Verzeichnis anzuzeigen.

Auf jedem Linux-Server ändere ich die Eingabeaufforderung, /etc/bashrcindem ich "W" in "w" ändere.

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

zu

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

Die Wirkung davon ist:

[root@xt include]#

gegen

[root@xt /usr/src/spl-0.6.1/include]# 
ewwhite
quelle
ist PS1bash-spezifisch?
QDII
Ich denke schon ... Es ist alles was ich benutze.
ewwhite
1
Ihre Änderungen gehen möglicherweise beim nächsten System-Upgrade verloren.
ott--
2
@ ott-- The Stick it Your ~/.profileoder ~/.bash_profilesowie die Aktualisierung/etc/skel/.profile
jscott