Arsenal de Comandos Básicos (Nivel 1)
Navegación (Moverse)
pwd
Es la abreviación de Print Working Directory, que significa “imprimir el directorio de trabajo”.
El comando pwd nos muestra la ruta absoluta del directorio en el que nos encontramos.
pwd -L: Muestra la dirección lógica, respetando enlaces simbólicos. Generalmente es la opción por defecto.pwd -P: Muestra la dirección física, resolviendo enlaces simbólicos y mostrando la ruta real en disco. Si no se especifica una bandera, asume-Lpor defecto, obedeciendo al estándar POSIX.
ls
Este comando significa listar los archivos y/o directorios que se encuentran en un directorio. En caso de que no se le indique un directorio, este asume el directorio actual y los muestra en columnas.
Recordatorio: las flags son combinables.
| Flag | Significado | Descripción | Ejemplo de salida |
|---|---|---|---|
-l | Long Listing (Formato Largo) | Te muestra los archivos y directorios en una columna más datos como permisos, conteo de hard links, propietario, grupo, tamaño, fecha y hora de modificación, además del nombre | -rw-rw-r— 1 cypher cypher 1751 ene 20 19:30 log.txt |
-a | All (todos) | Te muestra todas los directorios y archivos incluyendo las que comienzan por un punto (las directorios ocultas). | . .. log.txt Obsidian-1.11.4.AppImage ObsidianVaults |
-A | Almost all (Casi todos) | Te muestra todas las directorios y archivos incluyendo las ocultas, menos las referencias al directorio actual (. y ..). | log.txt Obsidian-1.11.4.AppImage ObsidianVaults |
-h | Human-readable (Legible por humanos) | Este cambia cómo se muestra el tamaño del archivo o directorio… por defecto suelen venir en bytes, pero con esta bandera los podemos ver expresados en K (Kilobytes), M (Megabytes) o G (Gigabytes). Su efecto no se puede apreciar a menos que lo combinemos con otra flag que nos permita ver el tamaño. En el ejemplo usaremos ls -lh | -rw-rw-r— 1 cypher cypher 1,8K ene 20 19:30 log.txt -rwx—x—x 1 cypher cypher 120M ene 20 16:53 Obsidian-1.11.4.AppImage drwxrwxr-x 3 cypher cypher 4,0K ene 27 19:40 ObsidianVaults |
-t | Time (Tiempo) | Este ordena la salida usando la fecha de modificación, del más reciente modificado hasta el más antiguo. En el ejemplo usaremos ls -lt | drwxrwxr-x 3 cypher cypher 4096 ene 27 19:40 ObsidianVaults -rw-rw-r— 1 cypher cypher 1751 ene 20 19:30 log.txt -rwx—x—x 1 cypher cypher 125036147 ene 20 16:53 Obsidian-1.11.4.AppImage |
-r | Reverse (Al revés) | Este invierte el orden en el que se muestra la salida. Es decir, lo que saldría al principio esta vez saldrá al final, y lo que salía al final esta vez saldrá al principio. En el ejemplo usaremos ls -ltr | -rwx—x—x 1 cypher cypher 125036147 ene 20 16:53 Obsidian-1.11.4.AppImage -rw-rw-r— 1 cypher cypher 1751 ene 20 19:30 log.txt drwxrwxr-x 3 cypher cypher 4096 ene 27 19:40 ObsidianVaults |
-R | Recursive (Recursivo) | Este no solo muestra las directoriosios y archivos que se encuentran en el directorio actual, sino también los archivos y directorios que se encuentran en todas las subdirectorios del directorio actual | .: carp1 carp2 ./carp1: ./carp2: Archivo Final.txt |
-S | Size (Tamaño) | Este ordena la salida de acuerdo al tamaño del archivo, del más pesado al más liviano. En el ejemplo usaremos ls -lS | -rwx—x—x 1 cypher cypher 125036147 ene 20 16:53 Obsidian-1.11.4.AppImage drwxrwxr-x 4 cypher cypher 4096 ene 28 12:51 FCarp drwxrwxr-x 3 cypher cypher 4096 ene 27 19:40 ObsidianVaults -rw-rw-r— 1 cypher cypher 1751 ene 20 19:30 log.txt |
-d | Directory (Directorio) | Muestra la información del directorio en sí mismo, en lugar de mostrar su contenido, es decir sin expandir ni listar lo que contiene. En el ejemplo usaremos ls -ld */donde el * significa todos los directorios, y / significa ese directorio | drwxrwxr-x 2 cypher cypher 4096 ene 28 12:51 carp1/ drwxrwxr-x 2 cypher cypher 4096 ene 28 12:51 carp2/ |
-F | Classify (Clasificar), asociable a File type | Esta bandera nos clasifica los nombres de las salidas de acuerdo al tipo de elemento que es, es decir agrega un símbolo al final:/ -> Si es una directorio* -> Si es un ejecutable@ -> Si es un enlace simbólico= -> Si es un socket(nada) -> Si es un archivo cualquiera. | -> pipe o FIFO es el simbolo de canalizacion. | FCarp/ log.txt Obsidian-1.11.4.AppImage* ObsidianVaults/ |
-1 | One entry per line (Una entrada por línea) | Te muestra una lista vertical de solo los nombres | FCarp log.txt Obsidian-1.11.4.AppImage ObsidianVaults |
-i | inode (Nodo Índice) | Te muestra el número de identidad del archivo que ocupa el disco duro | 4328947 FCarp 4198428 log.txt 4064560 Obsidian-1.11.4.AppImage 4197750 ObsidianVaults |
En resumen, la bandera para ver la mayor información posible de un directorio sería -lahiFR.
cd
Significa Change Directory. Este comando nos sirve para navegar entre directorios.
Normalmente tiene la estructura de cd -banderas directorio donde el directorio puede ser relativo o absoluto.
Recordatorio: Symlink es más o menos como un atajo que se encuentra en un directorio y que te puede llevar a otro…
| Bandera | Significado | Descripción |
|---|---|---|
-L | Logical | Navega un directorio respetando los symlink, y supone que está en ella |
-P | Physical | Navega y resuelve el symlink y te lleva a la dirección real física |
| Argumentos | Explicación |
|---|---|
.. | Navega al directorio padre del directorio actual |
. | Navega al directorio actual |
~ | Navega a la directorio que indica la variable de entorno $HOME que normalmente apunta al que inició sesión (/home/usuario). En caso de que el usuario sea root entonces navega a /root.tambien es bueno recordar que para esta accion tambien se puede simplemente poner cd sin ninguna bandera, siendo mas rapido de escribir. |
/ | Navega al directorio raíz (/), el nivel más alto y la base estructural de todo el sistema. |
- | Navega al directorio previo leyendo la variable de entorno $OLDPWD. Funciona como un botón de ‘atrás’ entre tus dos últimas ubicaciones. |
../../ | Cada .. significa un nivel arriba. |
Manipulación (Crear y Destruir)
mkdir
Make Directory, significa crear directorio. Este comando sirve para crear directorios.
| Bandera | Significado | Descripción |
|---|---|---|
-p | Parents (Padres) | Esta bandera verifica si existe el directorio que deseamos crear y, si no existe, lo crea. Si ya existe, solo crea lo que falta, y en caso de que no falte nada, entonces no pasa nada. Esta bandera crea incluso los directorios padres si es que no existen. Evita que la terminal devuelva un error si el directorio ya existe. |
-v | Verbose (Detallado) | Esta bandera te muestra los detalles de lo que está creando, es decir, muestra lo que se está creando. |
-m | Mode (Permisos) | Esta bandera debe venir acompañada de un código de 3 dígitos, en el que se le pasan los permisos con los que se está creando el directorio. Ejemplo: mkdir -m 700 Directorio1. Sobre el manejo de permisos lo veremos en [[02_Linux_File_Permissions]]. |
mkdir es muy útil cuando lo combinas con Brace Expansion. |
| Brace Expansion [[05_Bash_Tips_Expansiones]] | Explicación |
|---|---|
mkdir dir1 dir2 dir3 | Con este comando estamos creando 3 directorios a la vez con nombres dir1, dir2 y dir3. Se puede hacer lo mismo si ponemos rutas. |
mkdir -p proyecto/{bin,src,logs,doc/html} | Con este comando creamos la directorio proyecto si es que no existe, y 4 subdirectorios: bin, src, logs, doc; y dentro de doc otra directorio llamada html. |
mkdir -p curso/{bash,python,git}/{basico,avanzado} | Aquí creamos una directorio llamada curso, y dentro de ella 3 subdirectorios llamadas bash, python y git. Dentro de cada una de estas directorios se crean dos subdirectorios llamadas basico y avanzado. |
touch
Significa tocar, y sirve para actualizar los timestamps, es decir, las marcas de tiempo de un archivo como ser cuándo se modificó el archivo o cuándo se abrió.
En caso de que el archivo no exista, crea un archivo con 0 bytes para darle el timestamp. Aunque su función técnica a nivel de kernel es actualizar los timestamps, en la práctica operativa diaria es el método estándar y más rápido para crear archivos vacíos al instante.
Recordatorio:
En Linux existen 3 tipos de timestamps que son:
atime-> Access time -> última vez en la que se accedió al archivo.mtime-> Modification time -> última vez en la que se modificó el archivo.ctime-> Change time -> última vez en la que se cambiaron los metadatos del archivo.
Esto lo veremos a más profundidad en [[06_File_System_Internals]].
| Bandera | Significado | Descripción | Ejemplo de uso |
|---|---|---|---|
-a | Access (Acceso) | Actualiza el atime del archivo. | touch -a notas.txt |
-m | Modification (Modificación) | Actualiza el mtime del archivo. | touch -m notas.txt |
-c | No-create (No crear) | Verifica si existe el archivo a tocar. Si no existe, no lo crea; si existe, ejecuta el comando sobre él. | touch -c notas.txt |
-d | Date (Fecha legible) | Permite pasar el tiempo usando el formato año-mes-día hora:minuto:segundos (los segundos son opcionales). | touch -d "2020-05-12 22:32:15" notas.txt |
-t | Time (Tiempo específico) | Permite pasar el tiempo usando el formato [[CC]YY]MMDDhhmm[.ss]. Es el mismo de la bandera -t pero ignorando los -, el espacio y :. Los segundos se pasan como decimales, es decir, con un . a la izquierda. | touch -t 202005122232.15 notas.txt |
-r | Reference (Referencia) | Copia el timestamp de otro archivo. | touch -r deDondecopiar.txt aDondeCopiar.txt |
Si no se utiliza ninguna bandera, el comando asume que deseas cambiar el atime y el mtime.
touch no tiene una bandera para cambiar el ctime, al menos no directamente, y tampoco para la fecha de creación.
cp
Viene de Copy, que sirve para copiar un archivo o directorio de un lugar origen o otro que sería destino.
tiene esta estructura:
cp -bandera origen destino
Este comando puede duplicar el contenido de un directorio, o el contenido de un archivo.
este comando por defecto no duplica el contenido de los directorios, a menos que se use junto con la bandera de recursividad.
| Bandera | Significado | Descripción |
|---|---|---|
-r o -R | recursive (Recursivo) | Esta bandera sirve para tener de origen un directorio, y los elementos dentro de ello. |
-a | Archive (archivar) | Esta bandera hace que al duplicar un archivo este se duplique tambien sus permisos, dueño, timestamp y todos sus demás atributos. |
-u | Update (Actualizar) | Esta bandera hace que al duplicar solo se copien los archivos que en el origen son más nuevos que en el destino. |
-i | Interactive (Interactivo) | Esta bandera hace que cuando tenga que sobrescribir algo, antes de hacerlo, te pregunte si deseas sobrescribir |
-l | Hard link (Enlace duro) | Esta bandera no copia nada, solo crea un enlace con un nuevo nombre al archivo de origen, en el de destino, útil, para no desperdiciar espacio de memoria. |
-v | Verbose (Detallado) | Esta bandera te muestra los detalles de lo que está copiando. |
-f | Force (A la fuerza) | Esta bandera, copia a la fuerza en el destino, y si no se puede sobrescribir, lo elimina y lo copia. |
-p | Preserve (preservar) | Esta bandera preserva los atributos del archivo como permisos, propiedad, timestamp, etc. |
mv
Sirve para mover archivos o renombrarlos, si es que el origen y el destino se encuentran en el mismo directorio simplemente los renombra, y si el origen y destino se encuentran en distintos directorios cambia su inodo y de esa forma cambia su ruta, y si es en distintos sistemas de montaje entonces copia el archivo y elimina el original.
mv -bandera origen destino
| Bandera | Significado | Descripción |
|---|---|---|
-f | Force (Fuerza) | Esta bandera hace que todo el trabajo se intente hacer a la fuerza sin preguntar, esto asumiendo que se tiene los permiso sobre el directorio, ya que si no dará un error, básicamente, este comando quita toda la interacción del humano sobre el comando. |
-i | interactive (Interactivo) | Esta bandera te ayuda a no sobrescribir algo por accidente, cuando hay un archivo que sobrescribir, con esta bandera te pedirá una confirmación si deseas sobrescribir el archivo. |
-n | no-clobber (no sobrescribir) | Esta bandera evita que los archivos se sobreescriban y los cancela en silencio |
-u | update (Actualizar) | Esta bandera hace que se muevan las archivos si es que estos no existen, o tienen el timestamp más viejo que el que queremos mover. |
-t | target-directory (Directorio objetivo) | Esta bandera cambia el orden a mv -bandera destino origenes también sirve para mandar como origen varios archivos al destino |
-v | verbose (Detallado) | Esta bandera te ayuda a saber cada operación, es decir ayuda a saber que archivo se está moviendo, que se está sobreescribiendo, etc. |
-b | backup (Respaldo) | Esta bandera crea un archivo extra en el destino que termina con ~ que significa que es el respaldo del archivo origen. |
rm
Este comando ejecuta la llamada al sistema unlink, desvinculando el nombre del archivo de su inodo. Si ningún proceso lo está utilizando, los bloques del disco que ocupaba se marcan como libres para ser sobrescritos. En resumen, sirve para eliminar archivos o directorios (utilizando la bandera de recursividad -r).
rm -bandera archivo
| Bandera | Significado | Descripción |
|---|---|---|
-r o -R | recursive (Recursivo) | Elimina el directorio, sus subdirectorios y archivos, es decir hace una eliminación recursiva |
-f | Force (forzar) | Este quita las preguntas que a veces puede aparecer como a la hora de eliminar un archivo protegido, y simplemente ejecuta el unlink en ellas, y en el caso en el que no puede borrar a la fuerza, es porque no se tiene permisos de escritura en el directorio que se desea escribir. |
-i | interactive (Interactivo) | Esta bandera hace que al eliminar un archivo, te pregunte si deseas realmente eliminar el archivo (lo hace con todos los archivos). |
-I | Interactive once (Interactivo una vez) | Esta bandera te pedirá la confirmación de borrado si es que estás eliminando más de 3 archivos, y borrando carpetas enteras. |
-v | verbose (Detallado) | Esta bandera te avisa que archivos se están eliminando. |
--one-file-system | one file system (un sistema de archivos) | Esta bandera evita borrar directorios que son de otros montajes, y solo borra los que son del propio montaje |
--preserve-root | preserve root (Preservar raíz) | Esta bandera evita que se elimine el directorio raíz / (si lo borras pierdes todo el sistema operativo), aunque en algunas distribuciones Linux , ya lo usan por defecto. |
clear
Este comando limpia la terminal, no elimina ni modifica nada.
clear -bandera
| Bandera | Significado | Descripción |
|---|---|---|
-x | no alternate screen (sin pantalla alterna) | Limpia la pantalla pero no lo que hiciste antes, es decir te deja volver a ver que había haciendo scroll (Desplazamiento) hacia arriba |
Ayuda (El salvavidas)
man
man (de manual, traducido como “manual”) es el visor de páginas de manual en sistemas Unix/Linux.
- Busca en las rutas configuradas en
MANPATHla página correspondiente al comando o función. - Usa
less(u otro pager) para mostrar el contenido, lo que permite desplazamiento y búsqueda interactiva. - Es una utilidad de espacio de usuario que accede a documentación almacenada en formato troff/groff.
Sintaxis:
man [sección] comando
man [opciones] palabra_clave
Secciones del Manual
El manual se divide en 8 secciones principales. Esto es vital cuando un comando y un archivo comparten el mismo nombre (por ejemplo, man 1 passwd para el comando vs. man 5 passwd para el archivo de configuración).
| Sección | Descripción | Ejemplo de uso |
|---|---|---|
| 1 | Comandos de usuario (programas ejecutables o del shell) | man 1 ls |
| 2 | Llamadas al sistema (funciones provistas por el kernel) | man 2 chown |
| 3 | Llamadas de biblioteca (funciones de bibliotecas C) | man 3 printf |
| 4 | Archivos especiales (usualmente dispositivos en /dev) | man 4 tty |
| 5 | Formatos de archivos y convenciones (ej. /etc/passwd) | man 5 passwd |
| 6 | Juegos (y programas recreativos) | man 6 tetris |
| 7 | Miscelánea (paquetes de macros, protocolos, convenciones) | man 7 regex |
| 8 | Comandos de administración del sistema (solo para root) | man 8 fdisk |
Opciones de Búsqueda y Configuración
| Bandera | Palabra origen | Traducción | Sintaxis | Comportamiento | Escenario real |
|---|---|---|---|---|---|
-k | keyword | palabra clave | man -k ssh | Busca en descripciones de todas las páginas | Localizar comandos relacionados con “ssh” |
-f | whatis | qué es | man -f ls | Muestra breve descripción del comando | Identificación rápida de utilidades |
-a | all | todas | man -a passwd | Muestra todas las páginas disponibles para un término | Diferenciar entre passwd de usuario y archivo |
-w | where | dónde | man -w ls | Muestra la ruta del archivo de manual | Verificar integridad de documentación |
-P | pager | paginador | man -P cat ls | Define qué programa usar para mostrar la página | En entornos sin less |
-M | manpath | ruta de manuales | man -M /usr/local/man ls | Especifica un directorio alternativo de manuales | Auditorías en sistemas con rutas personalizadas |
-L | locale | idioma/localización | man -L es ls | Fuerza el idioma de la página del manual | Útil en entornos multilingües |
-C | config | configuración | man -C ~/.manrc ls | Usa un archivo de configuración distinto | Personalización avanzada del entorno |
-K | search | búsqueda global | man -K LD_PRELOAD | Busca dentro del contenido de todas las páginas | Forense: localizar variables sospechosas |