📂2.3.2.1 Comandos de navegación
Last updated
Last updated
Es importante que cada una de las funciones o comandos que se invoquen en la terminal incluyan exactamente los caracteres en su posición, en la mayoría de los casos contando los espacios necesarios y en minúscula (o mayúscula) según se especifique, para que corresponda con las cadenas de caracteres reservadas por el lenguaje de programación para referirse a la función en mención.
A continuación se presentan algunas funciones útiles para la navegación entre carpetas.
Para ejecutar cada uno de estos comandos se presiona la tecla Enter después de escribirlos en la consola, esto aplica para todos los demás comandos.
En este caso, la ejecución del comando pwd
arroja un resultado en consola y posteriormente se muestra de nuevo el prompt, indicando que la terminal se encuentra dispuesta para recibir una nueva instrucción.
El resultado de ejecutar algunos comandos arroja múltiples líneas de texto, mientras que otras no arroja nada, sino que la función se ejecutó correctamente en un segundo plano.
Como se indicó anteriormente, cada comando debe escribirse con una sintaxis exacta, puesto que un error de tipo puede dar lugar a una respuesta de error en consola, o en el peor de los casos, a la ejecución de un programa que no se quería invocar, lo que puede resultar en modificaciones en nuestros archivos.
El resultado específico de ejecutar el comando pwd
consiste en imprimir en la consola la ruta de ubicación de archivo en que nos encontramos trabajando. Es decir, la ejecución del cascarón shell requiere de un directorio en que se alojen los archivos sobre los que se esté trabajando, y en el que se guarden los archivos finales, un directorio de operación.
Para cambiar de directorio de operación se utiliza el comando cd
. La instrucción de cambiar de directorio puede ser absoluta o relativa. Se puede indicar el ingreso a una subcarpeta, o subdirección dentro del directorio en que se está trabajando, así como se puede indicar una dirección por fuera de este directorio, indicando la ubicación exacta, incluyendo carpetas y subcarpetas.
El anterior conjunto de instrucciones indicó el cambio de directorio cd
hacia el lugar "/". La posterior consulta de directorio de trabajo pwd
indicó que la dirección de trabajo es "/". Para sistemas operativos basados en Unix como lo es Linux, las unidades de disco duro o memoria no se encuentran fragmentadas, como en el caso de Windows (recordemos C:/, D:/, etc.), en cambio se accede a la memoria como un todo, y la base o carpeta madre se conoce como directorio raíz (no confundir con el superusuario root).
Es importante notar que las letras en color azul en el prompt indican la ubicación del directorio de trabajo.
Dentro del directorio raíz se encuentran múltiples subcarpetas por defecto, y tradicionalmente la que se define para el almacenamiento de archivos se denomina home. Dentro del directorio home, se encuentran las subcarpetas dedicadas para cada uno de los usuarios instalados en el sistema operativo.
Usando el comando cd ..
es posible regresar al directorio que contiene a la carpeta en que nos encontramos trabajando, regresar un nivel en el árbol de ramificación de las carpetas.
Usando el comando cd
por sí solo, se puede redirigir el directorio de trabajo hasta la carpeta del usuario (en este caso el usuario ejemplo), dentro del directorio home.
Empleando múltiples secuencias de ..
es posible regresarse varios niveles en el árbol de direcciones.
Otra subcarpeta dentro del directorio raíz "/" es "etc". Para dirigirnos hacia el directorio "etc" podemos indicar la instrucción cd ../../etc
, que indica "subir un nivel, luego subir otro nivel, y dentro de éste dirigirse al directorio 'etc'".
El uso de direcciones relativas hace que el resultado final dependa de la ubicación de trabajo de donde se inicia. Todos los ejemplos de uso hasta ahora han sido instrucciones relativas. Por ejemplo, dentro de la carpeta raíz "/" se puede dirigir de forma relativa a la carpeta "etc" con el comando cd etc
, pero si nos encontramos en el directorio de usuario e indicamos el comando cd etc
obtendremos seguramente el error "No se encontró el directorio o archivo", y no se ejecutará la acción.
Sin embargo, se puede usar direcciones absolutas, en las que se indica la ubicación completa a partir del directorio raíz hasta llegar al directorio. Siempre que la ubicación se indique iniciando con el símbolo "/" se tratará de una dirección absoluta en la que se parte del directorio raíz.
El ejemplo a continuación introduce un nuevo comando whoami que arroja el resultado de consultar el usuario desde el que se está trabajando. Esta información es necesaria para acceder a la carpeta de trabajo del usuario, puesto que a partir de ahí se inicia la navegación por la carpeta de trabajo. Después se indica la forma de ir al "escritorio" de trabajo, la carpeta "Desktop", desde el directorio raíz.
Tal como el símbolo "/" indica que la dirección absoluta inicia desde el directorio raíz, el símbolo "~" al inicio de la dirección absoluta, indica que la carpeta de partida es la de trabajo del usuario.
Por medio de este conjunto de instrucciones llegamos al mismo directorio que en el caso anterior, acortando la dirección por medio del símbolo "~". En este caso el símbolo "/" hace las veces de divisor entre las carpetas, y no se refiere a la carpeta raíz.
En este punto, sabemos que el prompt nos indica el nombre de usuario con que se está ingresado al sistema, el nombre de la computadora a la que se ingresa y el directorio de trabajo. En caso de encontrarse en la carpeta de trabajo del usuario, la ubicación se indicará por medio de la abreviación o símbolo "~".
Por medio del siguiente conjunto de comandos se creará una carpeta de prueba llamada "tutorial" en la carpeta de archivos temporales "tmp" que se encuentra dentro del directorio raíz. El comando utilizado para esta tarea es mkdir
, que es una abreviatura para "make directory". La finalidad de crear esta carpeta temporal es la de no realizar modificaciones en los archivos de trabajo con que puedas contar en tu carpeta de usuario. En este caso el símbolo "/" indica que la ubicación desde la que parte la dirección absoluta es la carpeta raíz.
A continuación, dentro de la carpeta "tutorial" vamos a crear tres subcarpetas por medio de un único comando. Es decir, invocar la función mkdir
permite suministrarle múltiples argumentos en una sola línea. En este caso las carpetas "dir1", "dir2" y "dir3".
Con el comando ls
(abreviatura de "list") se consultan, se listan los objetos (en este caso subcarpetas) dentro del directorio de trabajo "tutorial".
En este caso mkdir
creó las tres subcarpetas dentro del directorio "tutorial", pero por medio de la siguiente sintaxis se crean carpetas y subcarpetas dentro de ellas, usando el símbolo "/" para determinar que una contiene a la otra. En la instrucción mkdir -p dir4/dir5/dir6
, los caracteres -p
("parent directory") indican que la carpeta madre "dir4" debe ser creada. Si estuviéramos incluyendo una nueva carpeta en el directorio existente (por ejemplo "dir3") no sería necesario especificar la opción -p
.
La importancia de especificar esta opción se demuestra a continuación, en el error que se indica en el primer intento de crear el directorio. Posteriormente se demuestra la navegación a través de estas subcarpetas.
En caso de que el nombre de la carpeta a crear requiera la inclusión del carácter "espacio", no puede utilizarse como en los ejemplos anteriores, dado que tomará los caracteres separados como argumentos independientes. En cambio debe especificarse que el carácter "espacio" se va a tratar de forma diferente a la usual. Los siguientes son ejemplos en los que se incluyen espacios en los nombres de los directorios a crear.
En este caso la tercera línea usa el símbolo "\" (no visto hasta ahora) para evitar que el carácter "espacio" sea interpretado como una separación entre dos argumentos.
Entonces, si bien es posible incluir espacios en los nombres de carpetas y archivos, manipularlos por medio de la terminal resulta más complicado al necesitar incluir caracteres adicionales, por lo que lo más recomendable es implementar símbolos como "-" y "_" en su lugar.
En lugar de imprimir en pantalla el resultado de ejecutar el comando ls
, es posible almacenarlo en un archivo de texto que posteriormente sea posible visualizar o manipular. La sintaxis consiste en invocar ls
seguido del símbolo "mayor que" >
(redirección) y finalmente el nombre del archivo de salida y su extensión.
Ejecutando el comando cat
es posible visualizar el contenido del archivo creado, aunque con una estructura diferente a la que originalmente se presentaba al invocar ls
en consola.
Utilizando el comando echo
es posible imprimir un texto en pantalla, que se suministra entre comillas, simples o dobles (independientes en cada caso). Redireccionando con el carácter "mayor que" >
se pueden crear archivos de texto fácilmente.
En el ejemplo a continuación se usa el comando cat ("concatenate") para imprimir en pantalla los archivos de texto creados, todos en un mismo bloque de texto.
Así mismo, el comando cat permite su ejecución sobre múltiples argumentos (archivos) acortando su invocación a partir de comandos genéricos. El carácter "?" indica que "cualquier carácter" puede aparecer en lugar de él. El carácter "*" indica que "ninguno, o más caracteres" pueden seguir al texto escrito. A continuación algunos ejemplos de uso.
La reserva del sistema de estos caracteres "?" y "*" implica que no sea conveniente su uso al nombrar archivos, si es que posteriormente se requiere su manipulación a través de la terminal.
El carácter de redirección >
puede ser utilizado en conjunto con cat
para crear un nuevo archivo que contenga el resultado de concatenar todos los archivos cuyo nombre empieza con la letra t*
dentro de la carpeta de trabajo.
Si la primera línea se llegara a invocar nuevamente, o se usa el comando redireccionar sobre el mismo archivo de salida "combined.txt", el intérprete sobrescribirá el archivo de texto creado, por lo que es de cuidar su uso.
En caso de que se quiera añadir nuevo texto sobre un archivo existente y no sobrescribirlo, se utiliza doble símbolo de redirección.
Por otro lado, para invocar nuevamente una línea de código previamente utilizada, por medio de las flechas de navegación del teclado puede irse hacia arriba ↑ o abajo ↓ en el historial.
Valiéndonos de esta posibilidad, añadimos múltiples veces la línea cat t* >> combined.txt
hasta que la extensión del documento sea considerable (al menos 50 veces). Lo siguiente será ejecutar cat
para visualizar el texto del documento, con lo que la consola será insuficiente para visualizar el documento de forma controlada al exceder el tamaño de la misma. En este caso es más conveniente utilizar los comandos more
and less
para que el texto en el archivo aparezca de manera controlada. La ejecución tomará más tiempo pero es posible visualizar en su totalidad el archivo para una correcta exploración del mismo.
Mientras se visualizan archivos de texto con less
, es posible navegar a lo largo del texto con las flechas del teclado, y las teclas RePág
, AvPág
, Inicio
y Fin
. Para salir de la visualización presiona la tecla q
("quit").
En el siguiente ejemplo, tras ejecutar el comando ls es notorio que los nombres que aparecen en color blanco corresponden a archivos de texto, mientras que aquellos en color azul son carpetas o directorios. A continuación vamos a ejecutar el comando mv ("move") para mover el archivo "combined.txt" (que se encuentra en el directorio de trabajo) al directorio dir1.
Una alternativa que representa un ahorro en instrucciones es proveer al comando ls
con una dirección sobre la que se quiere consultar su contenido:
En caso de querer regresar el archivo a su directorio original existen varias opciones que realizan la misma función. En el conjunto de instrucciones a continuación se cambia el directorio de trabajo a "dir1", y se mueve el archivo a la carpeta designada por ..
, es decir el directorio madre.
Con la siguiente instrucción, sin cambiar el directorio de trabajo, sino directamente desde la carpeta "tutorial", se accede a la carpeta "dir1", con "/" se accede y el "*" representa a cualquier archivo dentro de la carpeta. En este caso sólo contiene al archivo de interés. Seguidamente se deja un espacio y el .
representa a la carpeta de trabajo.
Igualmente es posible mover múltiples archivos si se entregan varios argumentos a la función mv
. El último argumento se considerará el directorio de destino, y todos los demás serán movidos a éste.
Para mover el archivo "combined.txt" de su nueva ubicación "dir2" a "dir6", la instrucción adecuada se describe a continuación. En este caso se indica a la función mv que acceda a "dir2/" y el archivo en cuestión se mueva a la carpeta "dir4/dir5/dir6".
En caso de querer copiar el archivo en lugar de moverlo de ubicación, el comando a utilizar será cp
("copy").
Al comando cp se puede alimentar con un segundo argumento que corresponda a un nombre diferente para el archivo a copiar en lugar de un segundo directorio al que ser copiado.
El comando mv también funciona para mover el contenido de un archivo de un nombre de archivo a otro. Con la siguiente línea se modifica el nombre del archivo, del primero al segundo argumento especificado.
Igualmente puede aplicarse a renombrar carpetas.
Para eliminar archivos es muy útil el comando rm
("remove"). Igualmente puede proveérsele múltiples argumentos y los va a borrar todos definitivamente. Sin embargo no funciona para eliminar carpetas (directorios), debido a su gran capacidad para eliminar objetos definitivamente, a modo de precaución.
En caso de que el directorio a eliminar se encuentre vacío utilizamos el comando rmdir
. Pero nuevamente el sistema previene que se eliminen archivos importantes, por lo que sólo funciona para eliminar carpetas vacías.
Es posible indicar opciones a las funciones rm
o rmdir
, para aplicarlas a tareas específicas
Para eliminar carpetas, incluyendo su directorio madre se usa rmdir
y la opción -p
(carpeta madre y subcarpetas deben encontrarse vacías al momento de eliminarlas).
Para eliminar carpetas y archivos dentro de ellas se usa rm
y la opción -r
para que se ejecute recursivamente (si bien este es un comando poderoso, se recomienda cuidado a la hora de usarse puesto que se pueden eliminar archivos importantes que luego no puedan recuperarse).