GNU/Linux: Introducción a la línea de comandos

Unix es un sistema operativo nacido hacia los años 70 por programadores buscando un ambiente de trabajo menos frustrante, hacia los años 80 comenzó a utilizarse por círculos más informales como un sistema operativo universal.

El diseño del sistema está inspirado en la experiencia de trabajo de sus programadores, Ken Thomson y Dennis Ritchie, quienes produjeron un legado aún vigente en los sistemas operativos modernos. Diseñaron un sistema en base a principios filosófico-técnicos (llamados en su conjunto “filosofía Unix”) usando como base el minimalismo y la modularidad, consistente en producir programas simples que hagan una cosa bien y que puedan trabajar en conjunto, esto se hace posible usando el texto como interfaz universal, esto es, como método de comunicación entre los programas.

En el tiempo varios sistemas operativos han sido creados basados en estos principios y las herramientas que existían originalmente en Unix (llamados sistemas Unix-like), entre ellos GNU/Linux, el cual es una implementación libre. Esto signfica que un usuario puede ejecutar, estudiar, modificar y distribuir la copia del software que recibió.

Las herramientas que utilizaremos en su mayoría son POSIX (Portable Operating System Interface), esto significa que su funcionalidad básica debiera funcionar igual en todos los sistemas Unix-like.

Nomenclatura:

* no es una funcionalidad POSIX

** no es una expresión específica de un comando

Manejo de la terminal *

  • <tab>: autocompletar
  • Ctrl + Shift + c: copiar
  • Ctrl + Shift + v: pegar
  • Ctrl + r: buscar en historial
  • Up and down: explorar historial
  • Ctrl + _: deshacer
  • Ctrl + c: detener la ejecución de un comando
  • Ctrl + l, clear: limpiar la terminal
  • reset: limpiar en serio
  • mkdir: crear directorio
    • -p: crear todos los directorios necesarios
    • {,..}: brace expansion * **
  • <tab>: autocompletar nombres de archivos y directorios
  • rmdir: borrar directorio
  • -f o –flag: cambiar opciones de un comando
  • man: manual de un comando

  • pwd: directorio actual

  • cd: cambiar de directorio

    • …: ruta relativa **
    • /…: ruta absoluta **
    • -: directorio anterior
    • <sin opciones>: home del usuario
    • ~: home del usuario **
  • touch: crear archivo vacío o modificar sus fechas

  • ls: listar los contenidos de un directorio

    • ?: cualquier caracter **
    • *: múltiples caracteres **
    • -l: vista avanzada
    • -a: incluir archivos ocultos
  • tree: árbol del sistema de archivos *

  • cp: copiar archivo

    • .: directorio actual
    • -r: recursivo, copia directorios
  • mv: mover o renombrar

  • rm: borrar archivo

    • -r: recursivo
    • -f: forzar sin preguntar nada (mala idea)
  • du -sh: peso de un directorio

  • ln: crear link duro

    • -s: crear link simbólico

mención honrosa: rsync **

Intermedio: RTFM. (man, info, help y –help)

Manipulación y visualización

  • variable=“asignación”: asignar un valor a una variable
  • echo: imprimir a STDOUT
  • |: conectar comandos pasándolos de STDOUT a STDIN
  • tee: leer de STDIN y escribir en archivos, > tiene el mismo efecto
    • -a: agregar a archivo en lugar de sobreescribir, >> tiene el mismo efecto
  • cat (y zcat): concatenar e imprimir archivos a STDOUT
    • -: es un “archivo” especial, corresponde a STDIN
  • sort, uniq y wc: ordenar, no-repetir y contar
  • head y tail: mostrar el inicio o término de un archivo o STDIN
    • -n, -<n>: primeras o últimas <n> líneas
  • &&: ejecutar comandos consecutivamente hasta que falle o termine
  • ;: ejecutar comandos consecutivamente sin detenerse

  • grep: buscar dentro de archivos

  • find: buscar nombres de archivo

  • xargs: añadir argumentos desde STDIN

  • watch: ejecutar comandos cada cierto tiempo

  • ps -e: ver comandos en ejecución

    • -f: mayor detalle
  • pstree: ver árbol de procesos *

  • kill -9 …: matar comando

  • sudo: ejecutar un comando como otro usuario

  • su: ejecutar más de un comando como otro usuario

  • chown: cambiar dueño:grupo de un archivo

  • chgrp: cambiar grupo de un archivo

  • chmod: cambiar permisos de archivo

mención honrosa: sed y awk

Intermedio: export, alias y funciones

Herramientas interactivas

  • more: ver archivo o STDOUT paginado

    • <espacio>: avanzar una pantalla completa
    • <enter>: avanzar una línea
    • /…: buscar
    • n: buscar siguiente
    • .: repetir comando previo
    • =: info en línea actual
    • v: abrir en $EDITOR
    • ^L: redibujar pantalla
    • q: salir
  • less (y zless): less is more (than more). Puede abrir archivos más grandes, es más amigable, maneja mejor múltiples archivos y tiene muchas más opciones.

    • ?…: buscar hacia atrás
    • &…: mostrar sólo lineas coincidentes, y volver de ahí
    • N: búsqueda en dirección reversa
    • :n: anterior archivo
    • :p: siguiente archivo
    • :x: primer archivo
    • :d: cerrar archivo
    • :e <archivo>: abrir archivo
    • <n>G: ir a línea <n>
  • vi: editor de texto

    • h, j, k, l o flechas: movimiento
    • i, I, a, A, o, O: modo edición
    • <esc>: modo comandos
    • /…, n, N: buscar
    • u: deshacer
    • yy copiar línea
    • dd borrar línea
    • x: borrar un caracter
    • p, P: pegar
    • !: ejecutar comando
    • :w guardar
    • :q salir
    • :q!: salir sin guardar

Recursos

Felix Freeman < sir a-rro-ba hacktivista pun-to com > releases this document on 2019 under the CC0 terms.

Share your love too <3