Hoja de Referencia de Bash - Comandos de Linux para Ubuntu, Mint y Debian
Algunos parámetros de línea de comandos de herramientas
No es una lista muy completa, solo algunas útiles para mí

Para más herramientas de desarrollo y flujos de trabajo, consulte Herramientas para desarrolladores: La guía completa de flujos de trabajo modernos.
Si necesita un patrón de prompt interactivo en scripts, consulte Pausar scripts con Presiona cualquier tecla en Bash CMD PowerShell y macOS.
Cómo verificar la versión de Linux Ubuntu
Para más detalles sobre cómo verificar la versión de Ubuntu, consulte Verificar versión de Linux Ubuntu.
Método 1
lsb_release -a
generaría algo como
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Método 2
cat /etc/os-release
generaría algo como
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
Archivado y desarchivado con Tar en Bash
Compresión
tar -zcvf nombre-archivo.tgz nombre-directorio
Descompresión
tar -zxvf nombre-archivo.tgz
Acceso a servidor remoto con SSH y SCP en Bash
Enviar identidad de usuario al servidor remoto
ssh-copy-id user@10.0.0.225
De este modo, permitirá iniciar sesión sin contraseña la próxima vez como
ssh user@10.0.0.225
Subir archivo
scp ~/archivo.ext user@host-ip:/home/user/archivo.ext
Descargar carpeta con contenido anidado de forma recursiva
scp -r user@host-ip:/home/user/dir ~/dir
Gestión de carpetas y archivos en Bash
Comprobar existencia
# crear una carpeta si no existe, con todas las carpetas intermedias
[ -d $repdir ] || mkdir -p $repdir
# o
if [ -d $fname ]; then
echo "El archivo no existe: $fname"
return
fi
Crear carpeta para un usuario en particular
sudo mkdir dir1
sudo chown usuario_especifico dir1
sudo chown :grupo_especifico dir1
Iterar sobre archivos en la carpeta
# este convierte todos los archivos jpg en una carpeta a fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Unir todos los archivos en uno
cat ./* > merged.txt
Añadir comandos a Crontab
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
aquí:
- */15 - ejecutar cada 15 minutos
- control-marker-1 - es el identificador de este comando en la configuración de cron para actualizarlo la próxima vez con el mismo script
- /bin/bash - comando a ejecutar
- /home/user/stest/stest.sh - parámetro de bash - bash ejecutará este script
- /home/user/stest - parámetro del script - a ser accedido por $1
- /home/user/stest/stest.log - archivo de registro con la salida de consola de stest.sh
Verificar
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Observar archivos de registro en Bash
Observar archivo de registro en vivo
sudo tail -f /var/log/megalog.log
Obtener código de estado HTTP con curl en Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# o
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo restarting ${url} # lógica de inicio/reinicio
Mantener el comando SSH ejecutándose después del cierre de sesión
Asumiendo que tiene un programa ejecutándose en primer plano, presione
- ctrl-Z, luego:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Generar JSON en Bash con jo
Instalar jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
generaría
{"model":"a", "prompt":"b", "stream":false}
Un poco más complejo:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
Formatear JSON en Bash con jq
Usar
| jq .
Para formatear el json generado anteriormente:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
El json formateado será:
{
"model": 123,
"prompt": 456,
"stream": false
}
Analizar JSON y extraer valores de campos en Bash
Instalar jq primero
sudo apt-get install jq
Usar
| jq -r '.fieldName'
Como al analizar la salida de una llamada a Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Contar palabras en un archivo con Bash
Recuento de palabras:
wc -w filename.txt
devolverá algo como
261 filename.txt
Si solo quiere un entero, puede cortar la primera palabra, que es un número
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
O usar wc como:
words=`wc -w < filename.txt`
echo "$words words"
Verificar el uso de disco del directorio
du ~/dirname
Obtener la ruta del directorio del script en Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Medir el tiempo de ejecución del script en Bash
Una opción es usar la función time
time your_script.sh
Otra forma es un poco más complicada:
start=`date +%s`
# código muy importante
# va aquí
end=`date +%s`
runtime=$((end-start))
Comparar dos archivos con VS Code
code -d <archivo 1> <archivo 2>
Verificar paquetes disponibles en el repositorio de Ubuntu
sudo apt-cache policy <packageName>
Enlaces útiles
- Rama de Git en el prompt de Bash
- Hoja de trucos de Python
- Hoja de trucos de Conda
- Sincronización de marcadores con Floccus
- Reinstalar Linux
- Hoja de trucos de Ollama
- Hoja de trucos de Docker
- Hoja de trucos de Kubernetes
- Hoja de trucos de Markdown
- Codificación - decodificación Base64 en Windows, Linux y Mac
- Decodificar e imprimir token JWT
- Hoja de trucos de parámetros de línea de comandos de MinIO