Shell Bash : exemples de commandes Linux qui vont sauver votre journée !

Travailler en ligne de commande sur un serveur ou un poste de travail Linux peut sembler ardu aux débutants. Et pourtant, il n’y a rien de plus efficace ! Voici quelques exemples de commandes shell Bash qui me font gagner un temps précieux.

Attention ! Les éléments de cette page sont parfois très anciens. À vous de vérifier qu’ils sont toujours applicables dans votre contexte 😉

Manipulations sur le système de fichiers

Lister tous les fichiers d’un dossier et de ses sous-dossiers

ls -lR

Obtenir l’espace disque utilisé par des dossiers

Se placer dans le dossier parent et entrer :

du -h --max-depth=1

--max-depth indique la profondeur de l’analyse. La valeur 1 permet de ne lister que les dossiers et fichiers placés dans le dossier courant.

Modifier en une seule passe des droits d’accès sur un ensemble de dossiers ou de fichiers

Pour modifier les droits d’accès sur tous les dossiers placés dans le chemin courant :

find . -type d -print0 | xargs -0 chmod 755

Pour faire de même avec les fichiers seulement :

find . -type f -print0 | xargs -0 chmod 644

Très utile quand les dossiers et les fichiers doivent avoir des droits d’accès différents !

Purger un dossier contenant d’anciens fichiers

find . -mtime +5 | xargs rm -f

+5 détermine le nombre de jours. Ici, tous les fichiers datant de plus de 5 jours seront détruits.

Une commande très utile pour purger des logs ou des sessions anciennes, sans perturber le fonctionnement actuel d’une application !

Supprimer les dossiers qui portent un nom précis

Par exemple, supprimer tous les dossiers .svn à partir du chemin courant :

find . -type d -name '.svn' | xargs rm -rf

Et ça marche évidemment très bien pour les .DS_Store ou tout autre type de dossier envahissant !

Recherches

Rechercher une chaîne dans des fichiers

Pour lister les fichiers qui contiennent une chaîne :

find . | xargs grep 'ma chaîne'

L’analyse est récursive, la commande parcourt donc un dossier (ici le dossier courant) et ses sous-dossiers.

On peut filtrer le résultat sur certaines extensions de fichiers :

find . -type f -name '*.php' -print0 | xargs -0 grep 'ma chaîne'

-type f précise que l’on effectue l’analyse sur les noms des fichiers, ce qui exclut les noms des dossiers. -print0 et xargs -0 évitent quelques surprises avec les noms de fichiers comportant des caractères spéciaux (en particulier les espaces).

On peut également exclure certaines extensions de l’analyse :

find . -type f -name '*.php' ! -name '*.phtml' -print0 | xargs -0 grep 'ma chaîne'

Autre possibilité de recherche :

grep -lir 'ma chaîne' *

On peut également remplacer :

find . | xargs grep 'ma chaîne'

par :

grep -Rn 'ma chaîne'

L’option -R permettant de réaliser un grep récursivement et l’option -n affiche les numéros de lignes des occurrences trouvées dans chaque fichier.

Encodage et conversions de fichiers

Obtenir le type d’encodage d’un fichier

file -i fichier.txt

Lister les fichiers encodés en UTF-8 avec BOM

grep -rl $'\xEF\xBB\xBF' .

Convertir un fichier vers UTF-8

iconv -c -f latin1 -t utf-8 monfichier.txt > monfichier-utf8.txt

Très utile pour récupérer les données d’une vieille base MySQL !

Développement web

Vérifier la compatibilité PHP5 d’un code source PHP4

Très ancienne commande… Je n’ai pas cherché d’équivalent pour PHP7 et PHP8.

find /source/repertoire -name \*.php | xargs -n1 /chemin/vers/php -ddisplay_errors=1 -derror_reporting=8191 -l

Mesurer rapidement les performances d’un serveur web Apache

ab -kc 10 -t 30 http://127.0.0.1/

Commentaires

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *