En el anterior artículo de ésta seria hablé de la importancia de la consola en los sistemas operativos modernos, a pesar de las avanzadísimas interfaces gráficas, y en ocasiones táctiles, de que disponen. En el presente artículo voy a entrar un poco en materia y a ir aprendiendo algunos comandos que te acompañaran siempre que utilices la consola de Linux, que es de la cual trata la serie. En concreto vamos a ver los comandos más básicos que se utilizan para moverse por el árbol de directorios de Linux.
Antes de comenzar observa la imagen inferior nuevamente, ya que es importante sabes la forma en que se estructuran los directorios en Linux. Los directorios de la parte superior contienen a los de la parte inferior, de forma que para entrar en los directorios del nivel 3 se tiene que haber entrado en los de nivel 2.
Vamos ahora a comenzar con los comandos. Comenzaremos describiendo la estructura de un comando. La primera parte es el comando propiamente, a continuación vienen las opciones con su argumento (si lo llevan) y por último los argumentos:
comando argumentos
Cuando describa un comando, utilizaré conchetes ( [, ] ) para las partes opcionales, y los símbolos ‘<‘, ‘>’ cuando se deba elegir entre las opciones propuestas separadas por ‘|’. Las opciones se pueden combinar, y, si no llevan argumento, no hace falta separarlas, pudiendo combinarlos en cualquier orden tras un solo símbolo ‘-‘.
Por último, aclarar que se puede acceder al manual completo de los comandos mendiante el comando: man comando. Aquí, por cuestiones de espacio, no pondré todas las opciones de cada comando, solo las más comunes.
- cd directorio
Éste comando sirve para cambiar de directorio (change directory). No tiene opciones. Al indicar el directorio tenemos dos opciones: podemos indicar la ruta relativa (desde el directorio en que nos encontramos) o absoluta (desde la raíz, empezando por ‘/’). Tiene algunas opciones especiales:- cd .. → Ir al directorio del nivel superior.
- cd . → Ir al directorio actual.
- cd – → Ir al directorio en que nos encontrábamos anteriormente al actual.
- ls [<opciones> directorio]
Éste comando lista el contenido de un directorio. Si no se especifica cual lo hará del actual en que nos encontramos. La ruta del directorio también puede ser absoluta o relativa. Tiene varias opciones:- -a → muestra todos los archivos, incluso los ocultos (en Linux empiezan por un ‘.’).
- -A → muestra igual que el anterior, pero omite los metadirectorios ‘.’ y ‘..’
- -B → omite los directorios de backup (terminan por ‘~’).
- -c → ordena por fecha, de más actual a más antigua.
- -l → muestra en formato largo con mucha información extra del archivo o directorio:
tipo : permisos : dueño : grupo : tamaño(en bytes) : fecha y hora : nombre archivo - -r → lista en orden inverso.
- -R → lista el Contenido del directorio y los subdirectorios de forma recursiva.
- -s → imprime en tamaño en Kbytes junto a cada archivo.
- -S → lista los ficheros ordenados de mayor a menor tamaño.
- -t → lista los ficheros ordenados por fecha de creación.
- -1 → lista un archivo por línea.
- pwd
Muestra la absoluta hasta el directorio actual. - clear
Limpia la pantalla de texto. - touch [<opciones>] fichero
Actualiza la fecha de ultimo acceso y modificación del fichero indicado. Si el archivo no existe lo crea.- -a → cambia solo la hora de acceso.
- -c → evita crear el fichero si no existe.
- -m → cambia solo la hora de modificación.
- rm [<opciones>] fichero
Elimina un archivo o un directorio.- -d → elimina directorios vacíos.
- -f → fuerza la eliminación ignorando los no existentes. Nunca pregunta.
- -i → pregunta antes de eliminar un archivo o directorio.
- -I → pregunta una sola vez antes de eliminar más de tres archivos.
- -r o -R → elimina directorios y su contenido de forma recursiva.
- mkdir directorio
Crea un directorio. Se pueden crear varios a la vez separándolos por un espacio. - rmdir directorio
Elimina un directorio vacío. Se pueden escribir varios directorios separados por un espacio. - mv [<opciones>] fuente destino
Mueve el fichero o directorio fuente al directorio destino o renombra el fichero o directorio fuente con el nombre del destino.- -f → sobrescribe sin preguntar los ficheros del mismo nombre.
- -i → pregunta antes de sobrescribir los ficheros del mismo nombre.
- -u → mueve solo si el fichero fuente es más nuevo que el destino.
- -v → verbose, escribe en pantalla todos los ficheros que se van moviendo.
- cp [<opciones>] fuente destino
Copia el fichero o directorio fuente al directorio destino o renombra el fichero o directorio fuente con el nombre del destino.- -f → sobrescribe sin preguntar los ficheros del mismo nombre.
- -i → pregunta antes de sobrescribir los ficheros del mismo nombre.
- -l → en vez de copiar los ficheros crea enlaces duros (hard links-lo explicaré en otros capítulos)
- -r o -R → copia directorios de forma recursiva.
- -s → en vez de copiar los ficheros crea enlaces simbólicos (symbolic links-lo explicaré en otros capítulos)
- -u → mueve solo si el fichero fuente es más nuevo que el destino.
- -v → verbose, escribe en pantalla todos los ficheros que se van moviendo.
- cat fichero1 fichero2 …
Concatena uno o más ficheros y los imprime por la salida estándar (saca el resultado por pantalla). - more fichero
Muestra el contenido de un fichero por pantalla. - less fichero
Muestra el contenido de un fichero por pantalla paginado, de forma que se puede volver atrás, a diferencia del more. - tail [<opciones>] fichero
Muestra las 10 últimas líneas de un fichero. Es útil para ver los ficheros del log.- -c K o –bytes= K → muestra los K últimos bytes del fichero.
- -n K o –lines= K → muestra las K últimas lineas del fichero.
- head [<opciones>] fichero
Funciona como el anterior, incluso las mismas opciones, solo que muestra las primeras líneas del fichero.
Los comandos superiores permitirán explorar ficheros y directorios de forma básica, pero se pueden realizar cosas mucho mas avanzadas, que es donde sacamos mayor provecho a la consola, mediante los caracteres especiales o reservados. Éstos caracteres son interpretados de una forma diferente que su transcripción literal:
- * → El asterisco se utiliza para representar cualquier cadena de caracteres.
Ejemplos:- Así, si queremos referenciar a todos los archivos que comiencen por ‘ab’, pondremos: ab*.
- Para los archivos que contengan una ‘o': *o*.
- Todos los archivos: *.
- ? → La interrogación sustituye a un único carácter que puede ser cualquiera.
Ejemplo:- Queremos seleccionar todos los archivos que empiezan por ‘ab’ y tienen 3 caracteres más: ab???.
- & → Se utiliza al final del comando para ejecutarlo en background. Es decir, la terminal no se bloqueará mientras el comando se ejecuta, podremos seguir introduciendo nuevas órdenes.
- $ → Se utiliza para referirse a variables de entorno, variables de usuario y parámetros de entrada en los scripts. No lo usaremos de momento, ya que aún no vamos a crear scripts, pero es bueno conocer que es un carácter especial para no usarlo de forma indebida.
- > → Redirige la salida de un comando a un archivo sobrescribiendo el contenido del mismo.
- >> → Redirige la salida de un comando a un archivo sin sobrescribirlo.
- < → Redirige la entrada de un comando desde un archivo.
- ; → Permite escribir varios comandos en una línea y que se ejecuten uno tras otro.
- | →Concatena la salida de un comando como la entrada del siguiente. Permite que un comando determine los parámetros del siguiente.
- `…` → Los comandos escritos entre acentos invertidos son el argumento de otra línea de comandos.
- ‘…’ → el texto escrito entre comillas simples tiene deshabilitados todos los caracteres especiales.
- “…” → como el anterior, pero sin deshabilitar los caracteres ‘$’ y ‘`’ (dólar y acento invertido).
- \ → la barra invertida se utiliza para escapar el siguiente carácter. Es decir, se interpreta como un literal. Se debe utilizar cuando un nombre de archivo lleva espacios justo antes de éstos.
- [conjunto] → uno de los caracteres del conjunto.
Ejemplos:- Todos los archivos que empiecen por ‘a’ o por ‘b': [ab]*
- Todos los archivos que se llamen vídeo con mayúscula o minúscula: [vV]ideo*. Hay que tener en cuenta que Linux es case sensitive, por lo que no es lo mismo el archivo ‘texto.txt’ que ‘Texto.txt’.
[!conjunto] → un carácter que no esté en el conjunto.
Con éste repaso a los caracteres especiales de la consola Linux termino éste segundo artículo de la serie de la consola Linux. Espero que seáis capaces de seguirlo y os recomiendo practicar un poco, y hacer pruebas, ya que no es fácil de coger al principio. Si necesitáis más aclaraciones o creéis que no está suficientemente explicado podéis preguntar en los comentarios dejado un correo o por las redes sociales
Otros artículos de ésta serie:
Consola Linux I – ¿Por que la consola?
El artículo Consola Linux (II): Navegar el árbol de directorios de Linux apareció por primera vez en Instinto Binario.