Frage Warum solltest du cd laufen lassen? bevor du etwas tust?


Im Diese Zusammenstellung von Systemadmin Horrors, schreibt einer der Autoren als Faustregel:

Mach immer a cd . bevor du etwas tust.

Warum willst du das machen?


22
2018-06-30 11:28


Ursprung




Antworten:


Du nicht.

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

  • Richten Sie Ihre Eingabeaufforderung ein pwd Jedes Mal, wenn Sie cd.
  • Mach immer a cd . bevor du etwas tust.

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

Diese "Verifikation" ist eine gute Sache, und Sie sollten eine Form davon anpassen. Eine weitere (IMHO) gemeinsame Variante dieses Themas ist es immer Drucken Sie das Arbeitsverzeichnis an der Eingabeaufforderung aus.


32
2018-06-30 11:52



Es ist wahrscheinlich besser, dies als "Geben Sie immer 'pwd', bevor Sie etwas Wichtiges tun, um sicherzustellen, dass Sie in dem Verzeichnis sind, von dem Sie denken, dass Sie sind" - Rod MacPherson
Warum tust du nicht einfach ein? pwd bevor du etwas tust? - Martin Konecny
Eigentlich hat es einen Nutzen. Wenn Sie über einen symbolischen Link in ein Verzeichnis gegangen sind und der Link dann gelöscht und an anderer Stelle erneut erstellt wird, z. B. während einer Serverbereitstellung, bei der Versionen mit einem Symlink auf "current_release" gesteuert werden, tun Sie dies cd . würde das eigentliche zugrunde liegende Verzeichnis ändern, in dem Sie sich befinden. - Stewart
+1 für "immer Drucken Sie das Arbeitsverzeichnis an der Eingabeaufforderung aus. "Das ist, was ich tue. - Paddy Landau
@Stewart Leider hilft das nicht, wenn sich der symbolische Link ändert nach dem  cd . aber Vor etwas anderes tun. Es reduziert nur die Wahrscheinlichkeit, dass es sich im falschen Verzeichnis befindet, löst jedoch nicht das allgemeine Problem. Es sei denn, Sie wechseln in das reale Verzeichnis mit etwas wie cd $(readlink -f .) vorausgesetzt, dass Sie tatsächlich dort bleiben wollen. - scai


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

Zum Beispiel,

$ 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_command wurde nicht auf die Festplatte geschrieben.

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 Arbeitsverzeichnisverzeichnis entfernt und neu erstellt wurde, tippen Sie ein cd . würde den Verweis auf dieses Verzeichnis "aktualisieren".

$ 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

18
2018-06-30 18:56





Ich denke, es ist wichtiger, Ihr aktuelles Verzeichnis zu zeigen.

Auf jedem Linux-Server ändere ich die Eingabeaufforderung in /etc/bashrc durch Ändern von "W" zu "w".

 [ "$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]# 

13
2018-06-30 14:00



ist PS1 Bash-spezifisch? - qdii
Ich denke schon ... Es ist alles was ich benutze. - ewwhite
Ihre Änderungen können mit dem nächsten Systemupgrade verloren gehen, tho. - ott--
@ ott-- Der Stick es dein ~/.profile oder ~/.bash_profile sowie Aktualisierung /etc/skel/.profile - jscott