
Plataforma: CentOS 6.2
Carcasa:tcsh
Estoy jugando con cd
un script BASH y noté lo maravillosocd -
opción, pero me quedé con muchas preguntas...
- Porqué el
cd -
? ¿No es esto redundantecd ..
?
EDITAR
[Como señala FatalError, estos dos comandos no hacen lo mismo... así que la respuesta es "no"] - ¿Puedes profundizar más en tu historial con
-
flag, como en un navegador?
Por ejemplo, cuando escribocd -
, me lleva a mi directorio anterior, pero luego, si vuelvo a ingresar ese comando, me lleva al directorio del que acabo de llegar, creando una especie de bucle.
¿Se admite una abreviatura para retroceder varios niveles?
EDITAR
Me doy cuenta de que puedo volver concd ..
, pero esperaba que esto pudiera ser una puerta de entrada a una parte posterior menos detallada, por ejemplo,cd -3
vscd ../../../
.... espero que eso aclare lo que estoy preguntando...
EDITAR2
En cuanto a los comentarios actuales, si bien..
es un directorio especial, no veo ninguna razón por la cual el integradocd
en el terminal no pueda usar una abreviatura, por../../ ... ../
ejemplo,cd ..5
o por qué el integrado tampoco pueda tener un historial (un la autopushd
/popd
) que podría activarse y usarse comocd -3
. Entiendo que esto podría representar un riesgo para la seguridad/privacidad, pero no veo que sea peor que almacenar un historial de comandos, lo que hacen la mayoría de los shells/terminales. - La página de manual de
cd
, accesible a través deman cd
yhelp cd
(es la misma para cualquiera de los comandos), solo enumera-L
y-P
marca.
Sin embargo, cuando escribo,cd --help
saleUsage: cd [-plvn][-|<dir>].
.
¿Estoy en lo cierto al suponer que las otras banderas y la opción - (atrás) no son estándar? - ¿Para qué sirven las banderas
-n
y-v
?
Ambos parecen llevarme de regreso a mi directorio de inicio, eso es todo lo que he podido descubrir mediante la experimentación.
Una lectura rápida sobre recursos web.[1][2]Ofreció el mismo tipo de información que la página de manual y no respondió a mis preguntas.
Nota: El segundo recurso centrado en Linux mencionado anteriormente cd
solo tenía dos opciones (obviamente no es cierto en la actualidad CentOS
), de ahí mi suposición de que esta funcionalidad podría no ser estándar.
Respuesta1
cd -
no es lo mismo quecd ..
. Elcd -
comando va alanteriordirectorio en el que estaba. Por ejemplo, si está/home/bob
y luego ejecutacd /var/log
, ejecutarlocd -
lo llevará de regreso a/home/bob
.cd ..
por otro lado, siempre va al directorio principal.Si desea mantener un historial como ese, le sugiero que consulte
pushd
ypopd
que le permitirá usar una "pila de directorios":user@host:/etc/init.d$ pushd /var/log /var/log /etc/init.d user@host:/var/log$ pushd /tmp /tmp /var/log /etc/init.d user@host:/tmp$ popd /var/log /etc/init.d user@host:/var/log$ popd /etc/init.d
En cuanto a retroceder varios niveles en el árbol de directorios, no existe una forma común que yo sepa.
..
no es una característica del shell, en realidad es un enlace de directorio especial en *nix que hace referencia al directorio principal.cd
es un comando integrado, por lo que sus indicadores y su uso pueden variar según el shell. Pero, en general, las opciones paracd
participarbash
en un sistema deberían ser las mismas que en otro sistema.Mi
bash
shell no incluye ninguna de estas banderas... ¿estás experimentando conbash
otcsh
? Si estás usando,tcsh
esencialmente estás usando un comando totalmente diferente, por lo que probablemente quieras ejecutarlobash
y jugarcd
allí.
EDITAR:
Según la tcsh
página de manual:
Con -p, imprime la pila de directorios final, al igual que los directorios. Los indicadores -l, -n y -v tienen el mismo efecto en cd que en dirs, e implican -p.
(Puedes consultar el apartado sobre dirs
si quieres leer los detalles). Parece que básicamente hace que imprima la pila de directorios después de que se ejecuta el comando:
host:43> pushd /etc/init.d
/etc/init.d ~
host:44> pushd /var/log
/var/log /etc/init.d ~
host:45> pushd /tmp
/tmp /var/log /etc/init.d ~
host:46> cd -p
~ /var/log /etc/init.d ~
host:47> cd -v
0 ~
1 /var/log
2 /etc/init.d
3 ~
host:48> popd
/var/log /etc/init.d ~
host:49> cd -v
0 ~
1 /etc/init.d
2 ~
Ambos muestran la pila de directorios, pero -v
parecen un poco más fáciles de leer. La parte superior de la pila (elemento 0) es el directorio actual, y 1 es donde irías si ejecutas popd
una vez, y así sucesivamente.