Fiche de référence Bash - Commandes Linux pour Ubuntu, Mint et Debian

Certains paramètres de ligne de commande des outils

Sommaire

Pas une liste très complète, juste quelques éléments utiles pour moi

Anniversaire de bash et shell !

Pour plus d’outils et de flux de travail pour les développeurs, consultez Outils de développement : Le guide complet des flux de travail modernes.

Si vous avez besoin d’un motif de prompt interactif dans vos scripts, consultez Mettre en pause les scripts avec “Appuyez sur une touche” dans Bash, CMD, PowerShell et macOS.

Comment vérifier la version de Linux Ubuntu

Pour plus de détails sur la vérification de la version d’Ubuntu, consultez Vérifier la version Linux Ubuntu.

Méthode 1

lsb_release -a

produirait quelque chose comme

No LSB modules are available.
Distributor ID:	Linuxmint
Description:	Linux Mint 22.1
Release:	22.1
Codename:	xia

Méthode 2

cat /etc/os-release

produirait quelque chose comme

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

Archivage et désarchivage avec Tar dans Bash

Compression

tar -zcvf nom-archivage.tgz nom-répertoire

Décompression

tar -zxvf nom-archivage.tgz

Accès à un serveur distant avec SSH et SCP dans Bash

Pousser l’identité de l’utilisateur vers le serveur distant

ssh-copy-id user@10.0.0.225

Cela permettra de se connecter sans mot de passe la prochaine fois, comme ceci

ssh user@10.0.0.225

Télécharger un fichier

scp ~/fichier.ext user@ip-hôte:/home/user/fichier.ext

Télécharger un dossier avec son contenu imbriqué de manière récursive

scp -r user@ip-hôte:/home/user/dir ~/dir

Gestion des dossiers et fichiers dans Bash

Vérifier l’existence

# créer un dossier s'il n'existe pas, avec tous les dossiers intermédiaires
[ -d $repdir ] || mkdir -p $repdir

# ou
if [ -d $fname ]; then
  echo "Le fichier n'existe pas : $fname"
  return
fi

Créer un dossier pour un utilisateur particulier

sudo mkdir dir1
sudo chown utilisateur_spécifique dir1
sudo chown :groupe_spécifique dir1

Itérer sur les fichiers dans un dossier

# celui-ci convertit tous les fichiers jpg d'un certain dossier en fits
for f in some-folder/*.jpg
do
  convert "$f" "${f/.jpg/.fits}"
done

Fusionner tous les fichiers en un seul

cat ./* > merged.txt

Ajout de commandes à 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 -

ici :

  • */15 - exécuter toutes les 15 minutes
  • control-marker-1 - est l’identifiant de cette commande dans la configuration cron pour la mettre à jour la prochaine fois avec le même script
  • /bin/bash - commande à exécuter
  • /home/user/stest/stest.sh - paramètre bash - bash exécutera ce script
  • /home/user/stest - paramètre du script - à accéder via $1
  • /home/user/stest/stest.log - fichier journal avec la sortie console de stest.sh

Vérifier

grep /home/user/stest/stest.sh /var/log/syslog
crontab -e

Surveillance des fichiers journaux dans Bash

Surveiller un fichier journal en direct

sudo tail -f /var/log/megalog.log

Obtention du code de statut HTTP avec curl dans Bash

response=$(curl --write-out '%{http_code}' --silent --output /dev/null nomserveur)
  
# ou

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 redémarrage ${url} # logique de démarrage/redémarrage

Maintenir une commande SSH en cours d’exécution après la déconnexion

https://stackoverflow.com/questions/954302/how-to-make-a-program-continue-to-run-after-log-out-from-ssh

En supposant que vous avez un programme qui s’exécute au premier plan, appuyez sur

  • ctrl-Z, puis :

[1]+ Arrêté monprogramme

  • disown -h %1
  • bg 1

[1]+ monprogramme &

  • logout

Génération de JSON dans Bash avec jo

Installer jo

sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"

produirait

{"model":"a", "prompt":"b", "stream":false}

Un peu plus complexe :

jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
   "name": "Jane",
   "point": [
      1,
      2
   ],
   "geo": {
      "lat": 10,
      "lon": 20
   }
}

Mise en forme de JSON dans Bash avec jq

Utiliser

| jq .

Pour mettre en forme le JSON généré ci-dessus :

a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .

Le JSON mis en forme sera :

{
  "model": 123,
  "prompt": 456,
  "stream": false
}

Analyse de JSON et extraction de valeurs de champ dans Bash

Installer jq en premier

sudo apt-get install jq

Utiliser

  | jq -r '.fieldName'

Comme l’analyse de la sortie d’un appel à Ollama :

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Pourquoi le ciel est bleu ?",
  "stream": false
}'  | jq -r '.response'

Compter les mots dans un fichier avec Bash

Comptage des mots :

wc -w nomfichier.txt

renverra quelque chose comme

261 nomfichier.txt

Si vous voulez juste un entier, vous pouvez couper le premier mot, qui est un nombre

words=`wc -w nomfichier.txt | cut -f1 -d' '`
echo "$words mots"

Ou utiliser wc comme ceci :

words=`wc -w < nomfichier.txt`
echo "$words mots"

Vérification de l’utilisation de l’espace disque d’un répertoire

du ~/nomrepertoire

Obtention du chemin du répertoire du script dans Bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

Mesure du temps d’exécution d’un script dans Bash

Une option consiste à utiliser la fonction time

time votre_script.sh

Une autre méthode est un peu plus compliquée :

start=`date +%s`

# code très important
# va ici

end=`date +%s`

runtime=$((end-start))

Comparaison de deux fichiers avec VS Code

code -d <fichier 1> <fichier 2>

Vérification des paquets disponibles dans le dépôt Ubuntu

sudo apt-cache policy <nomPaquet>

Liens utiles

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.