Perché dovresti eseguire cd. prima di fare qualcosa?


Risposte:


32

Non

Almeno non proprio così. La riga precedente nel documento citato è importante:

  • Imposta il tuo prompt per fare pwdogni volta che fai un cd.
  • Fai sempre un cd .prima di fare qualsiasi cosa.

In questo modo, come operatore, verifichi la directory di lavoro corrente prima di fare qualcosa di importante, poiché viene stampato con ogni modifica. cd .non ha alcun senso altrimenti.

Questa "verifica" è una buona cosa e dovresti adattarne una forma. Una variante più (IMHO) comune di questo tema è quella di stampare sempre la directory di lavoro al prompt.


11
Probabilmente è meglio pensare a questo come "digita sempre 'pwd' prima di fare qualcosa di importante per assicurarti di essere nella directory che pensi di essere"
Rod MacPherson,

4
Perché non fare semplicemente un pwdprima di fare qualcosa?
Martin Konecny,

15
In realtà, ha un uso. Se sei entrato in una directory tramite un link simbolico e il link viene quindi cancellato e ricreato altrove, ad esempio durante una distribuzione del server in cui le versioni sono controllate con un link simbolico a "current_release", allora cd .farebbe cambiare il sottostante directory in cui ti trovi.
Stewart,

1
+1 per " stampare sempre la directory di lavoro al prompt." Questo è quello che faccio.
Paddy Landau,

4
@Stewart Purtroppo questo non aiuta se il collegamento simbolico cambia dopo cd . ma prima di fare qualsiasi altra cosa. Riduce solo la probabilità di trovarsi nella directory sbagliata, ma non risolve il problema generale. A meno che non passi alla directory reale usando qualcosa di simile cd $(readlink -f .)dato che in realtà vuoi rimanere lì.
scai,

18

Se l'attuale directory di lavoro della shell viene rimossa, è possibile perdere dati.

Per esempio,

$ 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>

L'output di some_commandnon è stato scritto sul disco.

Digitare cd .prima di eseguire un comando rivelerebbe il problema.

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

Se la directory corrente della directory di lavoro fosse rimossa e ricreata, digitando cd .si "aggiorna" il riferimento a quella directory.

$ 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

13

Penso che sia più importante mostrare la tua directory attuale.

Su ogni server Linux, modifico il prompt /etc/bashrccambiando "W" in "w".

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

a

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

L'effetto di questo è:

[root@xt include]#

contro

[root@xt /usr/src/spl-0.6.1/include]# 

è PS1specifico per bash?
qdii,

Penso di sì ... È tutto ciò che uso.
ewwhite,

1
Tuttavia, le tue modifiche potrebbero andare perse con il prossimo aggiornamento del sistema.
ott--

2
@ ott-- Il bastone è tuo ~/.profileo ~/.bash_profileoltre all'aggiornamento/etc/skel/.profile
jscott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.