13 liens privés
Make Linux Script Portable With #!/usr/bin/env As a Shebang - nixCraft · Liens en vrac de sebsauvage
TL;DR:
Ne faites pas :
#!/bin/bash
Faites :
#!/usr/bin/env bash
La commande sleep a comme objectif d'attendre un temps donné.
La commande wait permet d'attendre la fin d'un ou plusieurs processus en arrière-plan.
La commande timeout exécute une commande et la termine si elle dépasse une durée spécifiée. C'est utile pour éviter que des processus ne s'exécutent indéfiniment.
find Music/ -name *.mp3 -exec ma_commande {} \;
→ applique ma_commande sur les fichiers trouvés par find.
Les alias sont un moyen de créer de nouvelles commandes dans votre shell.
Cela peut être très utile lorsque l’on répète des commandes qui sont longues à écrire ou pour automatiser plusieurs actions.
Qu'est-ce qu'un alias, comment les créer et les utiliser.
cat /sys/block/sda/queue/rotational
Si la sortie est 1, le disque est HDD. Si la sortie est 0 (zéro), le disque est SDD. La sortie doit donc être égale à zéro si vous avez un SSD dans votre système.
lsblk -d -o name,rota
"rota" signifie dispositif de rotation. Si vous obtenez le retour est "1", c'est un disque dur. Si la valeur retournée est "0" (zéro), c'est un SSD.
smartctl -a /dev/sda | grep 'Rotation Rate'
Ah les joies des logiciels libres ! Ici je n’aurais pas penser à cette astuce :
- utiliser Youtube-dl yt-dlp pour télécharger les sous-titres ou transcriptions pour une vidéo ou une chaîne entière
- puis « un petit grep et puis s’en va »
En deux coups de cuillères à pot, cela donne :
youtube-dl --write-auto-sub --sub-lang <lang> --skip-download <youtube_channel|youtube_video> grep -rin <text>
Fantastique !
Pour décompresser plusieurs fichiers *.tar.gz
en une seule passe.
for f in *gz; do tar -xzf "$f"; done
Comment déterminer sur quel shell on tourne ? Quelques commandes bien choisies :
echo $0
ps -p $$
pstree $$
cat /proc/$$/cmdline
J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois, j'ai commencé à travailler sur un modèle que je met régulièrement à jour. Aujourd'hui, j'ai travaillé sur la couche pour gérer les logs et c'est pourquoi j'écris cet article.
Ce modèle contient les fonctions
usage
ethelp
pour décrire le fonctionnement du programme. La fonctionon_interrupt
permet de gérer le signalSIGINT
quand le programme est interrompu.La fonction
main
est la fonction qui contient le code principal du script. Elle contient la gestion des paramètres passés au script. Par défaut, plusieurs y sont déjà intégrés :-l
pour définir le niveau de log désiré et-h
pour afficher l'aide.Enfin, il y a la fonction
log
pour afficher des messages de debug avec différents niveaux de criticité. Cela permet de générer des messages qui seront affichés ou pas selon les besoins. Les messages sont colorés selon le niveau de criticité et ils sont redirigés versstderr
. Il est également possible d'ajouter la date.Le code source est disponible sur Gitnet et comme toujours, vous pouvez en faire ce que vous voulez !
En conclusion, le développement de ce modèle de script shell a été un projet passionnant et fructueux. En l'enrichissant régulièrement, j'ai pu créer une base solide pour gérer efficacement les fonctionnalités essentielles d'un script.
choose
prend des propositions en entrée, les affiche, permet d'en sélectionner une selon différentes méthodes, et retourne le choix sélectionné par l'utilisateur.
Si vous êtes curieux de savoir quelle commande vous utilisez le plus souvent, voici un moyen simple de le découvrir et il vous montre combien de fois vous utilisez telle ou telle commande.
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
scp Command
In its place, scp has been replaced by other alternatives such as rsync and sftp.
egrep and fgrep Commands
The egrep and fgrep commands belong to the family of grep functions.
Here is a brief expression of what each command does.
The egrep command is a pattern-searching utility that prints out lines in a file that match a specific string or pattern.
The fgrep command searches for fixed character strings in a file or multiple files.The
egrep
command has since been replaced bygrep -E
whilefgrep
has been replaced bygrep -F
.
Ctrl+U : effacer le début de ligne à partir de la position du curseur
Ctrl + K : effacer la fin de ligne depuis la position du curseur