112 votes

Meilleures pratiques et astuces pour la ligne de commande Linux ?

J'aimerais ouvrir une discussion qui permettrait d'accumuler vos meilleures pratiques et astuces en matière de ligne de commande Linux (CLI).

J'ai cherché une telle discussion pour partager le commentaire ci-dessous mais je n'en ai pas trouvé, d'où ce post.

J'espère que nous pourrons tous en tirer des leçons.

Vous êtes invités à partager vos astuces Bash, grep, sed, AWK, /proc et toutes les autres pratiques d'administration système Linux/Unix, Shell et de programmation pour le bénéfice de tous.

2voto

kloucks Points 1530

Vérification rapide et simple de l'intégrité des données

en utilisant rien de plus que bash & md5sum

Cela peut s'avérer inestimable en termes de débogage de problèmes lors du déplacement de fichiers binaires sur le réseau... Vous devriez adopter cette technique comme pratique courante pour chaque copie de données précieuses afin de garantir une intégrité des données à 100%.

Configurer quelques données de test...

mkdir -p /tmp/mdTest/dir{1,2,3}
for i in `seq 1 3`; do echo $RANDOM > /tmp/mdTest/dir$i/file$i ; done

calcul du hachage md5 sur les données de test

cd /tmp/mdTest/
TMPMD5LIST=$(mktemp); (find  -type f -exec md5sum '{}' \;) > $TMPMD5LIST; mv $TMPMD5LIST list.md5sum

vérification de l'intégration des données à partir du hachage

cd /tmp/mdTest/
md5sum --check list.md5sum
./dir3/file3: OK
./dir1/file1: OK
./dir2/file2: OK

Test unitaire : Cassons un des fichiers.

echo $RANDOM >> /tmp/mdTest/dir1/file1
md5sum --check list.md5sum
./dir3/file3: OK
./dir1/file1: FAILED
./dir2/file2: OK
md5sum: WARNING: 1 of 3 computed checksums did NOT match

2voto

MojoFilter Points 3730

Expansions des paramètres de Bash sont formidables :

$ FOO=leading-trailing.txt

$ echo ${FOO#leading-} # remove leading match
trailing.txt

$ echo ${FOO%.txt} # remove trailing match
leading-trailing

$ echo ${FOO/-*/-following} # match a glob and substitute
leading-following.txt

Vous devez renommer un tas de fichiers ? Combinez avec un for boucle :

$ for FILE in file*.txt; do mv -v $FILE ${FILE#file-}; done
file-01.txt -> 01.txt
file-02.txt -> 02.txt
file-03.txt -> 03.txt

Une fois que vous les maîtrisez, vous serez surpris de voir à quel point ils sont souvent utiles.

2voto

jackhab Points 731

Parfois, lorsque vous travaillez dans le terminal, vous avez besoin d'ouvrir un fichier en utilisant une application GUI associée à celui-ci, comme pour les fichiers pdf ou mp3. Vous n'avez pas besoin de vous souvenir du nom exact de cette commande, il suffit de l'utiliser :

gnome-open some-file.pdf

BTW, l'alias le plus court que j'utilise est :

alias o=gnome-open

Très pratique.

1voto

Mes préférés et les plus utilisés :

Lister le contenu du fichier tar.gz

tar -tzf filename.tar.gz

correspondra à la ligne contenant S1 OR S2 OR S3 OR S4

grep 'S1.*S2.*S3.*S4' fichier

Liste tous les sous-répertoires du répertoire courant

ls -d */

Taille totale du répertoire
du -sh

trouver une date :

TIMESTAMP= date '+%y%m%d%H%M'

déplacer le processus de l'avant-plan à l'arrière-plan

Ctrl-z et ensuite bg

Mot entier en majuscule

echo "word" | awk '{print toupper($0)}''

Vérifie l'égalité entre les nombres

x -eq y Vérifier si x est égal à y

x -ne y Vérifier si x n'est pas égal à y

x -gt y Vérifier si x est supérieur à y

x -lt y Vérifier si x est inférieur à y

Vérifie l'égalité entre les chaînes de caractères

x = y Vérifier si x est identique à y

x != y Vérifier si x n'est pas identique à y

-n x Évalue à vrai si x n'est pas nul

-z x Évalue à vrai si x est nul

Paramètres de la ligne de commande pour 'test'.

-d vérifier si le fichier est un répertoire

-e vérifier si le fichier existe

-f vérifier si le fichier est un fichier régulier

-g vérifier si le fichier a des permissions SGID

-r vérifier si le fichier est lisible

-s vérifier si la taille du fichier est différente de 0

-u vérifier si le fichier a des permissions SUID

-w vérifier si le fichier est inscriptible

-x vérifier si le fichier est exécutable

imprimer le premier champ de la dernière ligne"

awk '{champ = $1 } ; END{ imprimer le champ }''.

variables d'intégration importantes

$# Nombre d'arguments de ligne de commande. Utile pour tester le nombre d'arguments de ligne de commande dans Shell Shell.

$* Tous les arguments de Shell

$@ Même chose que ci-dessus

$- Option fournie à Shell

$$ PID de Shell

$ ! PID du dernier processus d'arrière-plan lancé (lancé avec &)

1voto

David Thornley Points 181

J'ai tendance à ne jamais taper "rm" à l'invite de commande. À la place, je tape "ls", et si j'aime la liste des fichiers supprimés, je modifie la commande (facilement possible avec bash et ksh).

Modifier pour ajouter quelque chose des commentaires : "rm -i" sera demandé pour chaque suppression, ce qui permet d'atteindre le même objectif. Merci !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X