ᛉ
  • ✦ infraestructura
    • ✦ linux
      • ✦ fundamentos
        • 📄 01_comandos_basicos_nivel_1
        • 📄 02_standard_streams_y_redireccion
      • ⟡ micro_labs
        • 📄 lab_01_navegacion_y_manipulacion
        • 📄 lab_021_fontaneria_de_datos
        • 📄 lab_02_fontaneria_de_datos
Descender a la Tierra
✦ Tipo: teoria-core
✧ Estado: 🟢 Completado
✥ Materia: cortex_core
🏷 Runas: ##Linux
ᛞ

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 -L por 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.

FlagSignificadoDescripciónEjemplo de salida
-lLong 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
-aAll (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
-AAlmost 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
-hHuman-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
-tTime (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 -ltdrwxrwxr-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
-rReverse (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
-RRecursive (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
-SSize (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
-dDirectory (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/
-FClassify (Clasificar), asociable a File typeEsta 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/
-1One entry per line (Una entrada por línea)Te muestra una lista vertical de solo los nombresFCarp
log.txt
Obsidian-1.11.4.AppImage
ObsidianVaults
-iinode (Nodo Índice)Te muestra el número de identidad del archivo que ocupa el disco duro4328947 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…

BanderaSignificadoDescripción
-LLogicalNavega un directorio respetando los symlink, y supone que está en ella
-PPhysicalNavega y resuelve el symlink y te lleva a la dirección real física
ArgumentosExplicació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.

BanderaSignificadoDescripción
-pParents (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.
-vVerbose (Detallado)Esta bandera te muestra los detalles de lo que está creando, es decir, muestra lo que se está creando.
-mMode (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 dir3Con 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]].

BanderaSignificadoDescripciónEjemplo de uso
-aAccess (Acceso)Actualiza el atime del archivo.touch -a notas.txt
-mModification (Modificación)Actualiza el mtime del archivo.touch -m notas.txt
-cNo-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
-dDate (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
-tTime (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
-rReference (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.

BanderaSignificadoDescripción
-r o -Rrecursive (Recursivo)Esta bandera sirve para tener de origen un directorio, y los elementos dentro de ello.
-aArchive (archivar)Esta bandera hace que al duplicar un archivo este se duplique tambien sus permisos, dueño, timestamp y todos sus demás atributos.
-uUpdate (Actualizar)Esta bandera hace que al duplicar solo se copien los archivos que en el origen son más nuevos que en el destino.
-iInteractive (Interactivo)Esta bandera hace que cuando tenga que sobrescribir algo, antes de hacerlo, te pregunte si deseas sobrescribir
-lHard 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.
-vVerbose (Detallado)Esta bandera te muestra los detalles de lo que está copiando.
-fForce (A la fuerza)Esta bandera, copia a la fuerza en el destino, y si no se puede sobrescribir, lo elimina y lo copia.
-pPreserve (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

BanderaSignificadoDescripción
-fForce (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.
-iinteractive (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.
-nno-clobber (no sobrescribir)Esta bandera evita que los archivos se sobreescriban y los cancela en silencio
-uupdate (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.
-ttarget-directory (Directorio objetivo)Esta bandera cambia el orden a mv -bandera destino origenes también sirve para mandar como origen varios archivos al destino
-vverbose (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.
-bbackup (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

BanderaSignificadoDescripción
-r o -Rrecursive (Recursivo)Elimina el directorio, sus subdirectorios y archivos, es decir hace una eliminación recursiva
-fForce (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.
-iinteractive (Interactivo)Esta bandera hace que al eliminar un archivo, te pregunte si deseas realmente eliminar el archivo (lo hace con todos los archivos).
-IInteractive 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.
-vverbose (Detallado)Esta bandera te avisa que archivos se están eliminando.
--one-file-systemone 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-rootpreserve 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

BanderaSignificadoDescripción
-xno 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 MANPATH la 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ónDescripciónEjemplo de uso
1Comandos de usuario (programas ejecutables o del shell)man 1 ls
2Llamadas al sistema (funciones provistas por el kernel)man 2 chown
3Llamadas de biblioteca (funciones de bibliotecas C)man 3 printf
4Archivos especiales (usualmente dispositivos en /dev)man 4 tty
5Formatos de archivos y convenciones (ej. /etc/passwd)man 5 passwd
6Juegos (y programas recreativos)man 6 tetris
7Miscelánea (paquetes de macros, protocolos, convenciones)man 7 regex
8Comandos de administración del sistema (solo para root)man 8 fdisk

Opciones de Búsqueda y Configuración

BanderaPalabra origenTraducciónSintaxisComportamientoEscenario real
-kkeywordpalabra claveman -k sshBusca en descripciones de todas las páginasLocalizar comandos relacionados con “ssh”
-fwhatisqué esman -f lsMuestra breve descripción del comandoIdentificación rápida de utilidades
-aalltodasman -a passwdMuestra todas las páginas disponibles para un términoDiferenciar entre passwd de usuario y archivo
-wwheredóndeman -w lsMuestra la ruta del archivo de manualVerificar integridad de documentación
-Ppagerpaginadorman -P cat lsDefine qué programa usar para mostrar la páginaEn entornos sin less
-Mmanpathruta de manualesman -M /usr/local/man lsEspecifica un directorio alternativo de manualesAuditorías en sistemas con rutas personalizadas
-Llocaleidioma/localizaciónman -L es lsFuerza el idioma de la página del manualÚtil en entornos multilingües
-Cconfigconfiguraciónman -C ~/.manrc lsUsa un archivo de configuración distintoPersonalización avanzada del entorno
-Ksearchbúsqueda globalman -K LD_PRELOADBusca dentro del contenido de todas las páginasForense: localizar variables sospechosas

📝 Apuntes bajo CC BY 4.0 por Jhoel Villca.