¿Por qué deberías ejecutar cd? antes de hacer algo?

Respuestas:

32

Usted no

Al menos no solo así. La línea anterior en el documento citado es importante:

  • Configure su solicitud para hacer un pwdcada vez que cree un CD.
  • Siempre haz un cd .antes de hacer cualquier cosa.

De esta manera, usted como operador verifica su directorio de trabajo actual antes de hacer algo importante, ya que se imprime con cada cambio. cd .no tiene ningún sentido lo contrario.

Esta "verificación" es algo bueno, y debe adaptar una forma de ella. Una variación más común (en mi humilde opinión) de este tema es imprimir siempre el directorio de trabajo en el indicador.

romano
fuente
11
Probablemente sea mejor pensar en esto como "siempre escribe 'pwd' antes de hacer algo importante para asegurarte de que estás en el directorio que crees que estás"
Rod MacPherson
44
¿Por qué no simplemente hacer un pwdantes de hacer algo?
Martin Konecny
15
En realidad, tiene un uso. Si ha ingresado a un directorio a través de un enlace simbólico, y el enlace luego se elimina y se vuelve a crear en otro lugar, como durante una implementación de servidor donde las versiones se controlan con un enlace simbólico a "current_release", entonces cd .cambiaría el subyacente real directorio en el que se encuentra.
Stewart
1
+1 para " imprimir siempre el directorio de trabajo en el indicador". Eso es lo que hago.
Paddy Landau
44
@Stewart Desafortunadamente, esto no ayudará si el enlace simbólico cambia después cd . pero antes de hacer cualquier otra cosa. Simplemente reduce la probabilidad de estar en el directorio incorrecto, pero no resuelve el problema general. A menos que cambie al directorio real utilizando algo como cd $(readlink -f .)dado que realmente desea permanecer allí.
scai 01 de
18

Si se elimina el directorio de trabajo actual de su shell, es posible perder datos.

Por ejemplo,

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

La salida de some_commandno se escribió en el disco.

Escribir cd .antes de ejecutar un comando revelaría el problema.

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

Si el directorio actual del directorio de trabajo se eliminó y se volvió a crear, la escritura cd ."actualizaría" la referencia a ese directorio.

$ 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

fuente
13

Creo que es más importante mostrar su directorio actual.

En cada servidor Linux, modifico el mensaje /etc/bashrccambiando "W" a "w".

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

a

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

El efecto de esto es:

[root@xt include]#

versus

[root@xt /usr/src/spl-0.6.1/include]# 
ewwhite
fuente
es PS1específico de bash?
qdii
Creo que sí ... Es todo lo que uso.
ewwhite
1
Sus cambios pueden perderse con la próxima actualización del sistema, aunque.
ott--
2
@ ott-- El palo es tu ~/.profileo ~/.bash_profileasí como la actualización/etc/skel/.profile
jscott