La terminal de Linux es una interfaz de línea de comandos que permite a los usuarios interactuar con programas mediante la ejecución de comandos escritos en texto, proporcionando un medio eficiente y versátil para realizar tareas de administración, gestión de archivos y programación.
Entre las principales ventajas de trabajar con una terminal se encuentran:
- Flexibilidad y personalización
- Eficiencia en gestión de archivos y tareas
- Automatización
- Acceso remoto
Un comando de terminal tiene la siguiente estructura
comando argumento1 argumento2 --flag1 --flag2 -f1
- Comando: El nombre del programa que se ejecuta.
- argumento[12]: Los argumentos que recibe el programa.
- --flag1: Se llaman "flags" o "switches", suelen ser opciones particulares.
- -f: Las flags suelen tener abreviaciones.
A modo de ejemplo podemos ejecutar el comando de calendario:
cal
cal -3
cal --help
Aquí se enumeran con alguna breve descripción los comandos más imporatntes
para "tener a mano".
Información detallada de los mismos puede verse ejecutando man <comando>
aunque recomendamos buscarlos en la página tldr (too long, didn't read)
Instalar `tldr`
Si bien es suficientemente cómodo usar `tldr` desde la web. Aún mejor sería tenerlo a mano en la misma terminal, para eso podemos simplemente ejecutarpip install --user tldr
De no tener pip ver Curso Python Bien
pwd
: Nos muestran donde estamos parados.ls
: Nos muestra los archivos de donde estamos.cd
: "Cambiar directorio"
mkdir <ruta_directorio_nuevo>
: Crear directoriomv <desde> <hacia>
: Mover/Renombrarcp <desde> <hacia>
: Copiar (para copiar directorios se añade la flag-r
)rm <ruta_archivo>
: Remover (para remover directorios se añade la flag-r
)cat <archivo>
: Mostrar contenido de archivohead <archivo>
ytail <archivo>
: Mostrar comienzo o fin de un archivogrep <texto> <archivo>
: Buscar texto en archivo
En el caso de
mkidr
,mv
,cp
yrm
siempre es bueno agregar la flag-v
(de "verboso"), la cual devuelve un texto que confirma la acción realizada.
sort
: Ordenar (usarsort -n
para números)uniq
: Dejar solo valores únicoswc
: Contar palabras, líneas y letrassed
: Modificar textoawk
: Manipular columnas
>
: Enviar los prints a un archivo. Lo crea si no existe y sobreescribe lo que exista (>>
añade al final de un archivo)|
: Redirigir los prints a un comando.<
: Redirigir los contenidos de un archivo a un comando.
Cada vez que se abre una terminal nueva, se corre automáticamente una secuencia
de comandos de configuración previa, esta secuencia se encuentra en el archivo
~/.bashrc
y puede ser modificada (preferentemente no tocar nada pero si
agregar pasos extra al final).
Una simple prueba es abrir el archivo y agregar una nueva línea al final:
echo "Hola desde .bashrc!"
A veces un comando se utiliza mucho y tiene sentido resumirlo. Esto se hace
mediante un alias. Por ejemplo quiero un comando que abra vscode
en un lugar
particular.
alias eos="code docs/research/thermo/algos/yaeos"
Los aliases solo duran durante la sesión de la terminal. Para hacerlos permanentes
es necesario agregarlos al archivo .bashrc
. El archivo donde se guardan
las configuraciones de la terminal.
# Se agregan escapes a las comillas
echo alias eos=\"code docs/research/thermo/algos/yaeos\" > ~/.bashrc
A veces queremos resumir una secuencia de comandos, no un único comando. Para esto se puede realizar un script. Un script es un archivo que contiene una secuencia de comandos a realizar.
#!/bin/bash
# ~/.local/bin/fortran_project.sh
nombre=$1 # Primer argumento
# Crea una carpeta
fpm new "$nombre"
# Ir a la nueva carpeta
cd "$nombre"
# Añade configuraciones generales de vscode al proyecto
git submodule add "[email protected]:ipqa-research/vscode-fortran.git" .vscode
Teniendo la secuencia en un archivo
Crear una carpeta de trabajo para todas las cosas del curso. Dentro del
directorio ~
del usuario.
Usando los comandos fortune
, cowsay
y figlet
(de no estar instalados
instalarlos con sudo apt-get install fortune cowsay figlet
.
- Correr
fortune
- Guardar el output en un archivo
- Redirigir el contenido del archivo a
cowsay
- Usar la imaginación con
figlet
Generar un script que lleve a esa carpeta (nota: los scripts pueden luego
moverse a ~/.local/bin
para volverlos accesibles en cualquier momento desde
la terminal, para eso es necesario volverlo ejecutable con chmod +x ~/.local/bin/nombre_archivo_script
)
- Hacer que los comandos
mkdir
,mv
,cp
,rm
siempre sean verbosos. - Correr esos comandos con la flag de ayuda (
--help
) y ver si no hay alguna flag extra que estaría bueno que esté siempre.Ayuda
Buscar alguna flag relacionada a sobreescribir (overwrite) archivos. - Hacer que la terminal muestre el calendario cada vez que la abro.