Terminal: Comandos básicos

Introducción

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

Navegación y movimiento

  • 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

RTFM

  • man
  • info
  • help
  • --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 <pid> 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

Shell scripting

  • variables
  • export
  • alias
  • funciones
  • loops
  • condicionales

Herramientas interactivas

  • more ver archivo o STDOUT paginado
    • <espacio> avanzar una pantalla completa
    • <enter> avanzar una línea
    • /<texto> buscar
    • n buscar siguiente
    • . repetir comando previo
    • = info en línea actual
    • v abrir en $EDITOR
    • Ctrl+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.
    • ?<texto> buscar hacia atrás
    • &<texto> 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
    • :!<comando> ejecutar comando
    • :<numero de línea>!<comando> insertar resultado de comando
    • :w guardar
    • :q salir
    • :q! salir sin guardar

Notas

Felix Freeman < sir arroba hacktivista punto com > libera este documento bajo los términos de la CC0 https://creativecommons.org/publicdomain/zero/1.0/