Introducción al uso de la terminal con Bash pt. 2

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


Bash práctico


¿Como puedo practicar bash?

Windows

  • GitBash
  • WSL "Windows subsystem for linux"

Android


wsl_meme3b


Uso básico de la terminal


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.

  • Prompt común
usuario@host directorio_actual  $ <comando> -<flag>
  • Prompt recortada para ejemplos
$ <comando> -<flag>

Los 3 tipos básicos de interacción


  • stdin: Standard Input, que hace referencia a la entrada información a la shell, esta puede ser del usuario o de otro programa
  • stdout: 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.

Flujo de datos

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

Rutas absolutas y rutas relativas


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 ~

  • La ruta relativa sería la siguiente
./descargas/memes/
  • La ruta absouta sería
/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

../../
  • Un punto ./ hace referencia al directorio actual
  • Dos puntos ../ hacen referencia al directorio superior
  • El / hacer referencia a un directorio (no es obligatorio)

Comandos y programas básicos de terminal


pwd

Print working directory, imprime la ruta absoluta del directorio actual.

Uso:

$ pwd
/home/<usuario>

man

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>

ls

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 ocultos
  • l 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.

touch

Toca el archivo pasado como argumento, y actualiza su fecha de modificación, si el archivo no existe, lo crea.

$ touch mi_archivo.txt

cd

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/

mkdir

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/

cp

Copiar archivo(s) y/o directorio(s)

$ cp mi_archivo.txt copia_archivo.txt

Flags comunes

  • i: interactivo, pregunta antes de sobrescribir
  • r: recursivo
  • v: verboso
$ cp -iv mi_archivo.txt copia_archivo.txt

mv

Mover archivo(s) o directorio(s), también es usado para renombrar

$ mv copia_archivo.txt ./documentos/

Flags comunes

  • i: interactivo, pregunta antes de sobrescribir
  • v: verboso
$ mv mi_archivo.txt ./documentos/archivo.txt

rm

Remover, elimina permantentemente archivos y/o directorios

$ rm ./documentos/copia_archivo.txt

Flags comunes

  • i: interactivo, pregunta antes de sobrescribir
  • v: verboso
  • f: forzar
  • R: recursivo

Eliminar recursivamente el directorio ~/documentos

$ rm -Rfv ./documentos

rmdir

Remove directory, borrar directorio, solo si está vacío

$ rmdir ./borrame/

echo

Imprime en pantalla (stdout) los argumentos pasados

$ echo "Hola Pianola"

redirección

Se usa el signo > para redirigir la stdout

  • Ejemplo redirección de la salida del comando echo a un archivo, se crea si no existe, sobrescribe si es que existe
$ echo "Hola Pianola!!!" > mi_archivo.txt
  • Ejemplo de redirección anexando a archivo
$ echo "Segunda linea" >> mi_archivo.txt
  • Ejemplo de redirección de stderr a /dev/null (agujero negro)
$ ls directorio_inexistente 2&>/dev/null

cat

Concatena archivos y e imprime en la salida standar (stdout)

$ cat mi_archivo.txt

grep

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úsculas
  • R recursivo
  • V modo inverso

  • Ejemplo de busqueda de la palabra "linea" en archivo mi_archivo.txt

$ grep "linea" ./mi_archivo.txt
  • Ejemplo de busqueda de la palabra "hola" sin distingir entre mayúsculas y minúsculas
$ grep -i "hOLA" ./mi_archivo.txt

sed

Stream editor, filtra y transfora texto

  • Reemplaza solo en la salida
$ sed 's/Hola/HOLA/' ./mi_archivo.txt
  • Reemplaza en el archivo
$ sed -i 's/Hola/HOLA/' ./mi_archivo.txt

curl

Transfiere datos desde/hacia un sevidor

  • Ejemplo para obtener una página web (http, sin seguir redirecionamiento)
$ curl devfzn.kickto.net
  • Ejemplo para obtener una página web, con redireccionamiento
$ curl -L devfzn.kickto.net

pipeline

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

subshell

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)"

alias

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"

Otras herramientas

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 programas

Saitama revela el secreto para volverse un maestro de la terminal


Secret of getting good with Linux terminal by Saitama.
by in linuxmemes


Esta es la continuación de:
- Introducción a la Terminal con Bash pt. 1



  • Categoría(s):
  • Desarrollo
  • -
  • Herramientas

  • Volver al blog