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-posix: no es una funcionalidad POSIX
- :general: no es una expresión específica de un comando
Manejo de la terminal :no-posix:
- <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
- {,..}
- brace expansion :no-posix:general:
- -p
- crear todos los directorios necesarios
- <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 :general:
- /…
- ruta absoluta :general:
- -
- directorio anterior
- <sin opciones>
- home del usuario
- ~
- home del usuario :general:
- touch
- crear archivo vacío o modificar sus fechas
- ls
- listar los contenidos de un directorio
- ?
- cualquier caracter :general:
- *
- múltiples caracteres :general:
- -l
- vista avanzada
- -a
- incluir archivos ocultos
- tree
- árbol del sistema de archivos :no-posix:
- 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 :no-posix:
RTFM
- man
- info :no-posix:
- 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
mención honrosa: sed y awk
- watch
- ejecutar comandos cada cierto tiempo
- ps -e
- ver comandos en ejecución
- -f
- mayor detalle
- pstree
- ver árbol de procesos :no-posix:
- kill -9 <pid>
- matar comando
- sudo
- ejecutar un comando como otro usuario :no-posix:
- su
- ejecutar más de un comando como otro usuario :no-posix:
- chown
- cambiar dueño:grupo de un archivo
- chgrp
- cambiar grupo de un archivo
- chmod
- cambiar permisos de archivo
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. 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