Scheda di Riepilogo Bash - Comandi Linux per Ubuntu, Mint e Debian
Alcuni parametri della riga di comando degli strumenti
Non una lista molto completa, solo alcune utili per me

Per ulteriori strumenti e flussi di lavoro per sviluppatori, consulta Developer Tools: La guida completa ai flussi di lavoro di sviluppo moderni.
Se hai bisogno di un pattern di prompt interattivo nei script, vedi [Pausa script con “Premi un tasto” in Bash, CMD, PowerShell e macOS](https://www.glukhov.org/it/developer-tools/terminals-shell/press-any-key-pause-bash-powershell-cmd/ “Pausa script con “Premi un tasto” in Bash, CMD, PowerShell e macOS con esempi pratici e pattern TTY-safe”).
Come verificare la versione di Linux Ubuntu
Per ulteriori dettagli sulla verifica della versione di Ubuntu, consulta Verifica la versione di Linux Ubuntu.
Metodo 1
lsb_release -a
produrrebbe qualcosa come
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Metodo 2
cat /etc/os-release
produrrebbe qualcosa come
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
Archiviazione e decompressione con Tar in Bash
Compressione
tar -zcvf nome-archivio.tgz nome-directory
Decompressione
tar -zxvf nome-archivio.tgz
Accesso al server remoto in Bash con SSH e SCP
Invia l’identità dell’utente al server remoto
ssh-copy-id user@10.0.0.225
In questo modo, la prossima volta potrai accedere senza password come segue
ssh user@10.0.0.225
Carica un file
scp ~/file.ext user@host-ip:/home/user/file.ext
Scarica una cartella con contenuto nidificato in modo ricorsivo
scp -r user@host-ip:/home/user/dir ~/dir
Gestione di cartelle e file in Bash
Verifica l’esistenza
# crea una cartella se non esiste, con tutte le cartelle intermedie
[ -d $repdir ] || mkdir -p $repdir
# oppure
if [ -d $fname ]; then
echo "Il file non esiste: $fname"
return
fi
Crea una cartella per un utente specifico
sudo mkdir dir1
sudo chown utente_specifico dir1
sudo chown :gruppo_specifico dir1
Itera sui file nella cartella
# questo converte tutti i file jpg in una certa cartella in fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Unisci tutti i file in uno
cat ./* > merged.txt
Aggiunta di comandi 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 -
dove:
- */15 - esegui ogni 15 minuti
- control-marker-1 - è l’identificatore di questo comando nella configurazione cron per aggiornarlo la prossima volta con lo stesso script
- /bin/bash - comando da eseguire
- /home/user/stest/stest.sh - parametro bash - bash eseguirà questo script
- /home/user/stest - parametro script - da accedere tramite $1
- /home/user/stest/stest.log - file di log con l’output della console di stest.sh
Verifica
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Monitoraggio dei file di log in Bash
Osserva il file di log in tempo reale
sudo tail -f /var/log/megalog.log
Ottenimento del codice di stato HTTP con curl in Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# oppure
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} # logica di avvio/riavvio
Mantenere un comando SSH in esecuzione dopo il disconnessione
Assumendo che tu abbia un programma in esecuzione in primo piano, premi
- ctrl-Z, poi:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Generazione di JSON in Bash con jo
Installa jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
produrrebbe
{"model":"a", "prompt":"b", "stream":false}
Un po’ più complesso:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
Formattazione di JSON in Bash con jq
Usa
| jq .
Per formattare il JSON generato sopra:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
Il JSON formattato sarà:
{
"model": 123,
"prompt": 456,
"stream": false
}
Analisi del JSON ed estrazione dei valori dei campi in Bash
Installa prima jq
sudo apt-get install jq
Usa
| jq -r '.fieldName'
Come l’analisi dell’output di una chiamata a Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Conteggio delle parole in un file con Bash
Conteggio parole:
wc -w filename.txt
restituirà qualcosa come
261 filename.txt
Se vuoi solo un intero, puoi tagliare la prima parola, che è un numero
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
Oppure usa wc come:
words=`wc -w < filename.txt`
echo "$words words"
Controllo dell’utilizzo del disco per una directory
du ~/dirname
Ottenimento del percorso della directory dello script in Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Misurazione del tempo di esecuzione dello script in Bash
Un’opzione è usare la funzione time
time your_script.sh
Un altro modo è un po’ più complicato:
start=`date +%s`
# codice molto importante
# va qui
end=`date +%s`
runtime=$((end-start))
Confronto di due file con VS Code
code -d <file 1> <file 2>
Controllo dei pacchetti disponibili nel repository Ubuntu
sudo apt-cache policy <packageName>
Link utili
- Git Branch nel prompt di Bash
- Cheat sheet Python
- Cheat sheet Conda
- Sincronizzazione dei segnalibri con Floccus
- Reinstallazione di Linux
- Cheat sheet Ollama
- Cheat sheet Docker
- Cheat sheet Kubernetes
- Cheat sheet Markdown
- Codifica - decodifica Base64 su Windows, Linux e Mac
- Decodifica e stampa token JWT
- Cheat sheet parametri da riga di comando MinIO