26 de Agosto de 2023 - ed. hace: 11 meses, 3 semanas
Programas y comandos básicos para el uso de la terminal. Sus flags mas comúnes y algunos ejemplos de uso para comenzar a familiarizarse con estas poderosas herramientas
Comandos e instrucciones de bash básicas para el uso de la terminal, casi la totalidad de estas ordenes (programas) tienen diversas opciones de operación, conocidas como flags.
uso: <comando> -<flag>
Para representar la entrada de usuario se utiliza generalmente el simbolo $
.
Que hace referencia al último segmento del prompt.
usuario@host directorio_actual $ <comando> -<flag>
$ <comando> -<flag>
stdin
: Standard Input, que hace referencia a la entrada información a la
shell, esta puede ser del usuario o de otro programastdout
: Standard Output, es la información que retorna un programa, por lo
general hacia el mismo terminal (mas adelante se muestran otras opciones,
redirección)stderr
: Es la salida de error de un programa, por lo general incluye
información de este.Data stream: Linux asocia un número (file descriptor) para cada uno estos (cada programa tiene su propio data stream)
File descriptor | Standard stream | Descripción | |
---|---|---|---|
0 | Standard Input | stdin |
Entrada de información |
1 | Standard Output | stdout |
Salida de información |
2 | Standard Error | stderr |
Salida de error |
Una ruta absoluta es aquella que considera desde la raíz del sistema
de archivos hasta el destino. Ejemplo de ruta absoluta típica del directorio de
usuario, para un usuario con nombre fuzan
en linux.
/home/fuzan/
Una ruta relativa es la que considera la ubicación de destino relativa
al directorio actual (current working directory), siempre denotado como ./
.
Para este ejemplo considerar la ruta absoluta /home/fuzan/descargas/memes/
, y como
directorio actual, el home del usuario fuzan
, /home/fuzan/
, o ~
.
home puede ser representado con el caracter
~
./descargas/memes/
/home/fuzan/descargas/memes/
# o también
~/descargas/memes/
Si nuestro directorio actual (working directory) es /home/fuzan/descargas/memes/
, la ruta relativa del home del usuario fuzan
seria esta
../../
./
hace referencia al directorio actual../
hacen referencia al directorio superior/
hacer referencia a un directorio (no es obligatorio)Print working directory, imprime la ruta absoluta del directorio actual.
Uso:
$ pwd
/home/<usuario>
man
es un programa clave para aprender a utilizar otras herramientas de
terminal, man diminutivo de manual, son páginas con documentación.
Dependiendo de la aplicación mas o menos completas, incluyendo o no ejemplos de
Uso.
Uso: man <comando/programa>
List files, imprime nombres de directorios y archivos que se encuentran
en el directorio actual, por defecto no muestra archivos/directorios ocultos
(aquellos cuyo nombre comienza con un punto .
).
Las flags mas comunes son:
a
muestra archivos ocultosl
imprime como lista,h
formato de tamaño humanamente legible (K, M, G, etc).$ ls -lh
drwxr-xr-x dueño grupo tamaño fecha hora un_directorio/
-rw-r--r-- dueño grupo tamaño fecha hora un_archivo.txt
La salida como lista muestra mas información, en orden segun las columnas del ejemplo, permisos, usuario dueño del archivo/directorio, grupo del usuario, tamaño del archivo, fecha de modificación, hora de modificación, nombre del archivo/directorio.
Toca el archivo pasado como argumento, y actualiza su fecha de modificación, si el archivo no existe, lo crea.
$ touch mi_archivo.txt
Cambiar directorio, cambia el directorio de trabajo actual, al directorio pasado como argumento, puede ser una ruta absoluta o relativa.
Estando en el home del usuario fuzan
, para cambiar al directorio
~/descargas/memes
se ejecuta la orden:
$ cd ./descargas/memes/
Y para volver al home:
$ cd ~
# o también
$ cd ../../
# y también funciona
$ cd /home/fuzan/
Make directory, crea directorio(s) según argumento(s), si no existen
los directorios anteriores al último, hay que utilizar el flag -p
(create
parents).
Estando en ~/documentos/
queremos crear los directorios proyectos/
,
manuales/
, ejemplos/java/
y ~/borrame/
$ mdkir -p proyectos manuales ejemplos/java ~/borrame/
Copiar archivo(s) y/o directorio(s)
$ cp mi_archivo.txt copia_archivo.txt
Flags comunes
i
: interactivo, pregunta antes de sobrescribirr
: recursivov
: verboso$ cp -iv mi_archivo.txt copia_archivo.txt
Mover archivo(s) o directorio(s), también es usado para renombrar
$ mv copia_archivo.txt ./documentos/
Flags comunes
i
: interactivo, pregunta antes de sobrescribirv
: verboso$ mv mi_archivo.txt ./documentos/archivo.txt
Remover, elimina permantentemente archivos y/o directorios
$ rm ./documentos/copia_archivo.txt
Flags comunes
i
: interactivo, pregunta antes de sobrescribirv
: verbosof
: forzarR
: recursivoEliminar recursivamente el directorio ~/documentos
$ rm -Rfv ./documentos
Remove directory, borrar directorio, solo si está vacío
$ rmdir ./borrame/
Imprime en pantalla (stdout) los argumentos pasados
$ echo "Hola Pianola"
Se usa el signo >
para redirigir la stdout
$ echo "Hola Pianola!!!" > mi_archivo.txt
$ echo "Segunda linea" >> mi_archivo.txt
/dev/null
(agujero negro)$ ls directorio_inexistente 2&>/dev/null
Concatena archivos y e imprime en la salida standar (stdout)
$ cat mi_archivo.txt
Encuentra patrones en archivos, utliza expresiones regulares
$ grep "patron de busqueda" ./ruta/a/archivo
Algunas flags son:
i
ignora distinción entre mayúsculas y minúsculasR
recursivoV
modo inverso
Ejemplo de busqueda de la palabra "linea" en archivo mi_archivo.txt
$ grep "linea" ./mi_archivo.txt
$ grep -i "hOLA" ./mi_archivo.txt
Stream editor, filtra y transfora texto
$ sed 's/Hola/HOLA/' ./mi_archivo.txt
$ sed -i 's/Hola/HOLA/' ./mi_archivo.txt
Transfiere datos desde/hacia un sevidor
$ curl devfzn.kickto.net
$ curl -L devfzn.kickto.net
Es una secuencia de uno mas comandos separados por de los operadores de control
|
(stdout) o |&
(stdout & stderr)
$ curl devfzn.kickto.net | grep "301" | sed 's/Moved/MOVED/'
Redirección de la salida de esta linea de comandos
$ curl devfzn.kickto.net | grep "301" | sed 's/Moved/MOVED/' >> mi_archivo.txt
Ejecutar un comando en una subshell, para utlizar la salida de este por el comando que la llama
$ echo "Estamos en el año $(date +%Y)"
Pseudonimos de comandos, utlizados como atajos de terminal, idealmente
se crean en un archivo ~/.bash_aliases
y se carga como source desde
~/.bashrc
alias ls="ls -a"
alias ll="ls -lah"
alias cp="cp -ivr"
alias mv="mv -iv"
Comando | Descripción |
---|---|
whereis |
Imprime la ruta donde se encuentra un programa |
df |
Imprime el uso de las unidades montadas en el sistema |
du |
Imprime el tamaño en disco de una ruta |
clear |
Limpia la terminal |
git |
Herramientas de control de versiones |
vim |
Editor de texto |
awk |
lenguage de programación para trabajar con archivos |
ffmpeg |
Suite de librerias y programas para manejar video, audio y otros formatos multimedia |
tldr |
Ayuda simple, con ejemplos de uso |
Recuerda que puedes consultar las páginas
man
para ver mas información sobre estos programasSaitama revela el secreto para volverse un maestro de la terminal
Esta es la continuación de:
- Introducción a la Terminal con Bash pt. 1