¿Cómo cambio los directorios en la terminal y sé en qué directorio estoy?

15

Estoy siguiendo las instrucciones @ Ayuda de la comunidad Ubuntu ; Sin embargo, todavía estoy confundido acerca de algunas cosas. Lo investigué y encontré esta publicación: uso de la terminal para cambiar el directorio , pero está por encima de mí y todavía no estoy seguro de cómo hacerlo. Soy nuevo y necesito un poco más de dirección, ¡así que quédate conmigo! ;-) El siguiente es el script de mi terminal:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

¿Cómo puedo saber qué hay en qué directorio y cómo navego por el directorio? Sé que debo estar dejando de lado algo simple.

usuario74713
fuente
44
Siempre necesita un espacio después del comando como "cd". Su comando funcionaría si ingresa "cd /", y se movería al directorio raíz.
Marty Fried
Fantástico, Marty! Su asistencia es muy apreciada. ;-)
user74713

Respuestas:

19

En su sesión lsmuestra el contenido del directorio actual (pero no los archivos ocultos que comienzan con un punto en el nombre del archivo). Navegas a otro directorio escribiendo cd dirname. Aquí debe sustituir "dirname" por el nombre del directorio al que desea cambiar. Normalmente comienza con su directorio de inicio como directorio de trabajo actual. En su caso, es muy probable /home/christy. Si le lsmuestra un directorio llamado "Plantilla", puede cambiar a "Plantilla" (= convertirlo en su directorio de trabajo actual) escribiendo (tenga en cuenta el espacio) el comando:

cd Templates

cambiará su directorio de trabajo actual a "Plantillas" o imprimirá "No existe tal archivo o directorio", si no existe un directorio con ese nombre en su directorio actual. Escribir pwdsiempre le dará el parche completo a su directorio de trabajo actual, incluidos los padres.

Puede proporcionar argumentos opcionales para cada comando. Para cdla cadena "Plantillas" era un argumento tan opcional. Si escribe, ls -apor ejemplo, el lscomando también imprimirá archivos ocultos. O con ls Templatesél imprimirá el contenido del directorio Tempaltes en lugar del contenido del directorio de trabajo actual. Los argumentos deben estar separados por al menos un espacio del nombre del comando y entre sí. La falta de espacio entre los dos fue la razón por la cual su comando no funcionó.

Dado que el carácter de espacio tiene un significado especial, deberá citarlo o escapar de él, si es parte de una discusión. Entonces, por ejemplo, si desea cambiar su directorio de trabajo actual a "Archivos de origen", debe escribir uno de estos comandos:

cd Source\ Files
cd "Source Files"

La línea superior se "escapa" mientras que la línea inferior se "cita".

Si desea obtener más información, la mejor guía para usted podría ser: Introducción a Linux ( pdf ) ( html )


Editar :

Bien, lo siento, no vi tu enlace allí. Tu publicación fue un poco engañosa, ahora creo que te tengo:

Por lo tanto, desea instalar tex-live desde el archivo fuente que está vinculado en la guía "Introducción" que publicó. Para hacerlo, primero debe eliminar cualquier instalación preexistente de tex-live. Lo haces abriendo una terminal haciendo esto:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

En este punto, debe ingresar su contraseña y se le recompensará con algunos mensajes aburridos, que omitiré aquí. Luego tendrá que descargar el archivo llamado install-tl-unx.tar.gz(ya lo hizo y no tiene que volver a descargarlo, pero le muestro cómo hacerlo, por si acaso):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

Ahora que ha descargado el archivo, puede descomprimirlo

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

Ahora que ha desempaquetado el archivo puede cambiar al directorio que fue desempaquetado.

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

El número "20120701" es una marca de tiempo que indica qué versión de tex-live tiene. Este número puede ser diferente para usted, pero el comando ls | grep install-t1-le indicará qué usar en su lugar. Si todo esto funcionó, puede ejecutar el script de instalación desde aquí:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

A partir de aquí, solo responda las preguntas que le hace el script de instalación y debería estar bien.

confundir
fuente
@ con-f-use: ¡Gran información! Ahora, refiriéndome al script de terminal en mi publicación original: ¿En qué directorio está el archivo install-tl-unx.tar.gz y cómo lo ejecuto? Estoy familiarizado con los comandos de instalación, pero supongo que necesito instalar paquetes. Los comandos para descomprimir el tarball son @ ubuntu-manual.org/getinvolved/editors . Si puedes señalarme en la dirección correcta ... Muchas gracias; Has sido extremadamente informativo.
user74713
No hay problema. No estoy seguro, cuál es exactamente su objetivo al final, por lo que es un poco difícil ayudarlo sin más información. Aparentemente estás intentando instalar TeX-Live desde el archivo 'install-tl-unx.tar.gz'. Para hacerlo, primero debe descomprimir el archivo comprimido y luego ejecutar el script de instalación. Editaré mi publicación anterior con algunas instrucciones para hacerlo pronto.
con-f-use
10

Resumen ejecutivo (TL; DR)

  • Úselo pwdpara saber dónde se encuentra (o mire entre el :y el $en su solicitud).
  • Use cdpara cambiar el directorio en otro lugar. A diferencia de Windows, siemprecd debe ir seguido de un espacio; comandos como y no funcionarán, pero y lo hará.cd/cd..cd /cd ..

Saber dónde estás

Camino 1: correr pwd.

El directorio en el que se encuentra actualmente es específico del shell (y, en general, específico de la aplicación). Podrías estar ejecutando un shell donde estás en un directorio y otro shell donde estás en otro directorio.

Para saber en qué directorio se encuentra actualmente, ejecute:

pwd

Por ejemplo (desde un shell que tengo abierto ahora, en mi máquina):

ek@Kip:~$ pwd
/home/ek

Esto me dice que estoy en el directorio /home/ek. /homees (algo confuso) el directorio que contiene los directorios de inicio de los usuarios humanos (no es en sí el directorio de inicio de ningún usuario). El usuario humano usernametiene directorio de inicio ./home/username

El rootusuario no tiene un directorio de inicio en /home. En cambio, rootel directorio de inicio es /root. Esto no debe confundirse con el directorio raíz , que es /.

Camino 2: Examina tu solicitud.

La configuración predeterminada para su solicitud es que le indica en qué directorio se encuentra actualmente. Su solicitud es el texto que parece notificarle que el shell está listo para aceptar un comando.

En el ejemplo que nos mostró en su pregunta, su mensaje es:

christy@ubuntu:~$

christyes tu nombre de usuario El @carácter lo separa ubuntudel nombre de host de su computadora. (Si está ejecutando un CD en vivo, su nombre de host será ubuntu, y algunas personas también lo eligen como el nombre de su computadora durante la instalación).

El :carácter lo separa del nombre del directorio en el que se encuentra actualmente. En este caso, eso está representado por ~. ~es la abreviatura de su directorio de inicio. Cuando no está en su directorio de inicio, debería ver un nombre de directorio completo. Por ejemplo:

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(Para finalizar lo que significa cada parte de la solicitud: para las solicitudes que siguen esta convención, aparece $un #carácter o un . $, Como en este caso, significa que es un shell de usuario normal. Un #carácter significaría que es un rootshell).

Cambiando donde estás

Por qué su comando "cd" no funcionó.

Para cambiar el directorio, use el cdcomando.

Se ejecutó cd/. Esto no funciona porque en realidad no ejecutó el cdcomando. En Ubuntu y otros sistemas operativos similares a Unix (en realidad, en shells de estilo Unix como bash, el shell que está utilizando), el nombre de un comando se considera que termina solo en un espacio o al final de la línea.

Entonces, a diferencia del símbolo del sistema en Windows (donde cd\se interpreta igual cd \y cd..se interpreta igual que cd ..), en bash(el shell que está utilizando en Ubuntu), cd/no es un comando válido. Debes usar cd /.

cd/significa "la entrada en el directorio actual cuyo nombre es cdy que también es un directorio". Exista o no un subdirectorio tal, no se puede ejecutar como un comando, por lo que en cualquier caso, obtendrá un error (aunque lo error que se obtiene será diferente):

ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory

Mudarse a su directorio de inicio

Para ir a su directorio de inicio, ejecute cdsolo sin ningún argumento:

cd

Algunas personas prefieren nombrar su directorio de inicio explícitamente. Puedes usar su nombre completo o

cd ~

Pero cdpor sí solo es suficiente.

Subiendo un directorio

Para cambiar el directorio al directorio principal del directorio actual (es decir, el directorio que lo contiene), use:

cd ..

..representa el directorio principal del directorio actual. Si está en el directorio raíz ( /), hay una excepción: ..solo representa /. Entonces, ejecutar cd ..movimientos de un solo directorio cuando se ejecuta en cualquier lugar, pero /; cuando corres /, te quedas adentro /.

Cada directorio contiene una ..entrada. También contienen una .entrada que se refiere al directorio actual en sí. Sin cd .embargo , no es muy fácil correr . Siempre te quedas donde estás.

Caminos absolutos y relativos

Si hace cdalgo que no comienza con a /, entonces intenta ir a ese directorio dentro del directorio actual .

Por ejemplo, si corriste

cd var/log

Luego intentaría ir al varsubdirectorio de donde se encuentra actualmente, y al logsubdirectorio de eso. A menos que ambos existan, y en esos lugares, ese cdcomando fallará (y usted permanecerá donde estaba originalmente).

Si desea ir al logsubdirectorio del varsubdirectorio del directorio raíz , ejecute esto en su lugar:

cd /var/log

Solo si actualmente estás en /es cd var/logequivalente a cd /var/log.

Un camino que comienza /es absoluto. La forma en que se resuelve no depende de dónde se encuentre actualmente.

La ruta también ~es absoluta, porque es (esencialmente) una forma abreviada de $HOME. HOMEes una variable de entorno , y la expresión se $HOMEexpande a la ruta completa y absoluta del directorio de inicio del usuario actual.

~La notación también se puede utilizar para representar el directorio de inicio de otro usuario. Si escribe , esto representa el directorio de inicio de.~usernameusername

Volver a donde estabas antes

El directorio en el que se encuentra actualmente se almacena en la PWDvariable de entorno. El último directorio en el que estuvo se almacena en la OLDPWDvariable de entorno. Puede ver de OLDPWDla misma manera que vería cualquier variable de entorno:

echo $OLDPWD

Debido a que esta información se almacena, cdpuede tener una forma especial, rápida y fácil de volver a donde estaba antes. Como dice pst007x , para ir al último directorio en el que estaba, ejecute:

cd -

Si nunca hubo un directorio anterior en el que se encontraba en ese shell , entonces la OLDPWDvariable de entorno no se habrá configurado e intentar ejecutarla cd -dará como resultado un error (y permanecerá donde está):

ek@Kip:~$ cd -
bash: cd: OLDPWD not set

Cambiar dónde estás como un jefe

pushdy popd: la pila de directorios

Imagine una pila de nombres de directorio. Por una pila , me refiero a algo donde cuando agregas algo va en la parte superior, y solo puedes eliminar una cosa a la vez, y lo que eliminas es siempre lo que está actualmente en la parte superior.

Puede insertar cualquier directorio diren la pila ejecutando:

pushd dir

Si desea empujar el directorio actual a la parte superior de la pila, puede usar .(que, como se explicó anteriormente, siempre representa el directorio actual):

pushd .

Luego puede continuar con su negocio, cambiando los directorios tanto como desee. Cuando desee volver al último directorio que introdujo en la pila pushd, ejecute:

popd

Esto va a ese directorio, y también aparece fuera de la pila. Ahora la pila es un directorio más corto. Si ese era el único directorio en la pila, entonces la pila ahora está vacía.

Puede tener una pila de tamaño mayor que 1. Es decir, puede usar pushdcomandos separados para insertar múltiples directorios en la pila. Cada popdcomando subsiguiente irá (y emergerá, es decir, eliminará de la pila ) al directorio empujado más reciente que aún no ha aparecido.

Aquí hay un ejemplo:

ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$

pushdy popdse usan con mucha menos frecuencia que cd. También tienen otros usos, incluso más avanzados. Corre help pushdy help popdpara más detalles.

Aprender más y acceder a la documentación

cdy pwdtienen usos más avanzados también. Para aprender sobre ellos, corre help cdy man pwd.

helpes para conchas incorporadas . manes para comandos independientes: comandos que se ejecutan como procesos separados y existen como ejecutables separados. El typecomando revela si un comando es un shell integrado o no y, si no, dónde se encuentra el programa que ejecuta. Por ejemplo, usted podría funcionar type help, type typeo type man.

Eliah Kagan
fuente
5

Por ejemplo:

cd Desktop/ Va al directorio de escritorio si está en su directorio de inicio.

cd - Regresa al directorio anterior.

cd / Llevarte al directorio raíz.

cd ~/Desktop Lo llevará a su Directorio de escritorio sin importar dónde se encuentre.

pst007x
fuente