Accueil » Ligne de commande » Page 7
On peut transformer une chaîne de caractère en majuscule ou en minuscule, sans passer par la commande « tr », en passant par une variable.
1. Déclarer la variable avec la chaîne
nom="Linux c'est TROP bien"
2. Afficher la variable en majuscules
3. Afficher la variable en minuscules
Explications et variantes utiles
- ^^ : transforme toute la chaîne en majuscules.
- ,, : transforme toute la chaîne en minuscules.
- ^ : ne met en majuscule que le premier caractère.
- , : ne met en minuscule que le premier caractère.
1. Sauvegarder les fichiers de plus de 180 jours dans une archive compressée
find . -mtime +180 -print0 | xargs -0 tar -zcf ../backup_04-06-2018.tar.gz
ou
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"
Explication :
- find . -mtime +180 : trouve les fichiers modifiés il y a plus de 180 jours.
- -print0 + xargs -0 : gère correctement les noms de fichiers avec espaces, apostrophes, caractères spéciaux (très sûr).
- tar -zcf ../backup_…tar.gz : crée l’archive gzip directement à partir de la liste fournie par xargs (sans passer par un fichier temporaire).
2. Compter le nombre de fichiers sauvegardés
find . -mtime +180 -exec ls -1 {} + | wc -l
Explication :
- Liste les fichiers concernés (un par ligne avec ls -1).
- wc -l compte les lignes → nombre de fichiers.
Variante plus précise (sans ls) :
find . -mtime +180 -print | wc -l
3. Supprimer les fichiers après sauvegarde
find . -mtime +180 -exec rm {} +
Explication :
- -exec rm {} + : supprime les fichiers trouvés de façon efficace (regroupe les arguments autant que possible).
Attention maximale : cette commande est irréversible. Toujours tester d’abord avec -ls ou -print avant de passer à -exec rm.
Séquence complète:
# 1. Création de l'archive (adapte le chemin et le nom)
find . -mtime +180 -print0 | xargs -0 tar -zcf "../backup_$(date +%d-%m-%Y).tar.gz"
# 2. Vérification du nombre de fichiers concernés
find . -mtime +180 -print | wc -l
# 3. Suppression (À EXÉCUTER UNIQUEMENT APRÈS VÉRIFICATION !)
find . -mtime +180 -exec rm {} +
1. Ignorer certaines commandes dans l’historique
echo 'HISTIGNORE="&:[ ]*:[ls]:*:exit:pwd:clear:history"' >> ~/.bashrc
Amélioration :
- Utilise ~/.bashrc au lieu de ~/.profile (plus adapté pour les variables Bash interactives).
- Ajoute [ ]* pour ignorer aussi les commandes commençant par des espaces (redondant avec ignorespace, mais explicite).
- Guillemets simples pour éviter les problèmes d’échappement.
- Le signe « & » permet d’éviter d’enregistrer deux commandes successives identiques.
Résultat : ne sauvegarde jamais ls, ps aux, exit, pwd, clear, history, ni les doublons consécutifs (&).
2. Ignorer les commandes commençant par espace + supprimer tous les doublons
echo 'HISTCONTROL=ignorespace:ignoredups:erasedups' >> ~/.bashrc
Explication et amélioration :
- ignorespace : commande précédée d’un espace ne sera pas enregistrée.
- ignoredups : ignore les doublons consécutifs.
- erasedups : supprime tous les doublons dans l’historique (même non consécutifs) pour un historique ultra-propre.
Les trois combinés sont parfaits pour un historique clair et confidentiel.
3. Afficher la date et l’heure avec history:
echo 'HISTTIMEFORMAT="[%a %d %b %Y %T] "' >> ~/.bashrc
1001 [mar 16 déc 2025 14:32:10] ls -la
1002 [mar 16 déc 2025 14:35:22] sudo apt update
Très lisible : jour de la semaine, date, mois, année, heure complète.
4. Augmenter fortement la taille de l’historique:
echo 'HISTSIZE=100000' >> ~/.bashrc
echo 'HISTFILESIZE=100000' >> ~/.bashrc
Recommandation raisonnable :
- 500 000 est énorme (fichier ~/.bash_history de plusieurs Mo).
- 100 000 est déjà excellent pour un usage intensif (plusieurs années de commandes).
- Si tu veux vraiment tout garder : 500000 reste acceptable sur un disque moderne.
Bonus très utile, forcer la synchronisation immédiate de l’historique (pour ne rien perdre en cas de crash ou plusieurs sessions) :
echo 'shopt -s histappend' >> ~/.bashrc
echo 'PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"' >> ~/.bashrc
- histappend : ajoute à la fin du fichier au lieu d’écraser.
- PROMPT_COMMAND : écrit immédiatement chaque commande dans le fichier et recharge l’historique partagé entre toutes les sessions.
Ajoute ce bloc unique pour tout faire d’un coup :
vi ~/.bashrc
# Historique Bash amélioré
HISTCONTROL=ignorespace:ignoredups:erasedups
HISTIGNORE="&:[ ]*:[ls]:*:exit:pwd:clear:history"
HISTTIMEFORMAT="[%a %d %b %Y %T] "
HISTSIZE=100000
HISTFILESIZE=100000
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Appliquer immédiatement:
1. Installation de yt-dlp :
sudo apt update
sudo apt install python3-pip ffmpeg -y
pip3 install --upgrade yt-dlp
2. Télécharger l’audio en MP3 de meilleure qualité
yt-dlp -x --audio-format mp3 --audio-quality 0 https://www.youtube.com/watch?v=I_rVtFUkMus
Explication :
- -x : extrait uniquement l’audio (pas de vidéo).
- –audio-format mp3 : convertit directement en MP3 (utilise ffmpeg).
- –audio-quality 0 : meilleure qualité possible (VBR ~320 kbps).
Le fichier sera sauvegardé dans le dossier courant avec comme nom le titre de la vidéo.
3. Alias simple pour télécharger directement dans ~/Musique
Et à la fin du fichier on met:
echo "alias mp3='yt-dlp -x --audio-format mp3 --audio-quality 0 -o \"~/Musique/%(title)s.%(ext)s\"'" >> ~/.bashrc
Puis on recharge le fichier
source ~/.bashrc
Utilisation ensuite :
mp3 https://www.youtube.com/watch?v=I_rVtFUkMus
Bonus : télécharger une playlist entière en MP3
yt-dlp -x --audio-format mp3 --audio-quality 0 --yes-playlist URL_DE_LA_PLAYLIST
1) Pour commencer nous allons arrêter le domaine que nous souhaitons migrer
ou si elle ne repond pas
virsh destroy nom_VM
2) Sur l’hyperviseur source, nous allons exporter la configuration du domaine dans un fichier xml:
virsh dumpxml nom_VM > nom_VM.xml
3 ) Toujours sur l’hyperviseur source, on copie le ou les fichiers disques du domaine que l’on souhaite migrer, depuis son emplacement dans /var/lib/libvirt/images vers le même répertoire sur l’hyperviseur de destination.
scp -p /var/lib/libvirt/images/nom_VM.qcow2 hyperviseur_destination:/var/lib/libvirt/images/
Si plusieurs disques ou stockage partagé différent : Adapte le chemin source et destination.
Utilise -r si tu as un répertoire entier, ou rsync pour plus de fiabilité :
rsync -avz --progress /var/lib/libvirt/images/nom_VM.qcow2 hyperviseur_destination:/var/lib/libvirt/images/
Si le chemin du disque est différent sur l’hyperviseur de destination, il faudra le modifier le fichier xml générer dans l’étape précédente pour que cela pointe au bon endroit.
4 ) On copie également notre fichier XML sur l’hyperviseur de destination
scp -p nom_VM.xml hyperviseur_destination:/tmp/
5) On intègre le domaine dans KVM à l’aide de notre fichier xml:
virsh define /tmp/nom_VM.xml
6) Il ne reste plus qu’a démarrer notre domaine
Vérification finale :
virsh list # VM running sur la destination
virsh list --all # VM absente ou "shut off" sur la source (tu peux l’undefine après)
Une fois la migration validée sur l’hyperviseur source:
virsh undefine nom_VM
rm nom_VM.xml /var/lib/libvirt/images/nom_VM.qcow2