cd Command Linux y banderas misteriosas

cd Command Linux y banderas misteriosas

Plataforma: CentOS 6.2Carcasa:tcsh

Estoy jugando con cdun script BASH y noté lo maravillosocd -opción, pero me quedé con muchas preguntas...

  1. Porqué el cd -? ¿No es esto redundante cd ..?

    EDITAR
    [Como señala FatalError, estos dos comandos no hacen lo mismo... así que la respuesta es "no"]

  2. ¿Puedes profundizar más en tu historial con -flag, como en un navegador?

    Por ejemplo, cuando escribo cd -, 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 con cd .., pero esperaba que esto pudiera ser una puerta de entrada a una parte posterior menos detallada, por ejemplo, cd -3vs cd ../../../.... 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 integrado cden el terminal no pueda usar una abreviatura, por ../../ ... ../ejemplo, cd ..5o por qué el integrado tampoco pueda tener un historial (un la auto pushd/ popd) que podría activarse y usarse como cd -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.

  3. La página de manual de cd, accesible a través de man cdy help cd(es la misma para cualquiera de los comandos), solo enumera -Ly -Pmarca.

    Sin embargo, cuando escribo, cd --helpsale Usage: cd [-plvn][-|<dir>]..

    ¿Estoy en lo cierto al suponer que las otras banderas y la opción - (atrás) no son estándar?

  4. ¿Para qué sirven las banderas -ny -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 cdsolo 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

  1. cd -no es lo mismo que cd ... El cd -comando va alanteriordirectorio en el que estaba. Por ejemplo, si está /home/boby luego ejecuta cd /var/log, ejecutarlo cd -lo llevará de regreso a /home/bob. cd ..por otro lado, siempre va al directorio principal.
  2. Si desea mantener un historial como ese, le sugiero que consulte pushdy popdque 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.

  3. cdes un comando integrado, por lo que sus indicadores y su uso pueden variar según el shell. Pero, en general, las opciones para cdparticipar bashen un sistema deberían ser las mismas que en otro sistema.

  4. Mi bashshell no incluye ninguna de estas banderas... ¿estás experimentando con basho tcsh? Si estás usando, tcshesencialmente estás usando un comando totalmente diferente, por lo que probablemente quieras ejecutarlo bashy jugar cdallí.

EDITAR:

Según la tcshpá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 dirssi 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 -vparecen 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 popduna vez, y así sucesivamente.

información relacionada