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.

16voto

En bash, j'utilise !$ beaucoup. Il répète le dernier argument de la dernière commande :

ls /really/long/command/argument/that/you/dont/want/to/repeat.txt
vi !$

Il lancera le ls, puis si vous voulez le modifier, vous n'aurez pas à le retaper, utilisez simplement !$. C'est vraiment utile pour les longs noms de chemin/fichier. Aussi, !* répète tous les arguments de la commande précédente. Je ne l'utilise pas autant, mais elle semble utile.

Je sais qu'ils ont été mentionnés, mais j'utilise vim, screen, et cd - beaucoup.

J'ai oublié Noclobber :

set -o noclobber

De coup d'homme :

S'il est défini, bash n'écrase pas un fichier fichier existant avec les opérateurs de redirection >, >& et <>. opérateurs de redirection. Ceci peut être remplacée lors de la création de fichiers de sortie en utilisant l'opérateur de redirection >| au lieu de >.

14voto

flodin Points 101

Passer de bash à zsh et voyez votre productivité s'améliorer :

  • Complément de tabulation vraiment intelligent et scriptable. Il ne complète pas seulement les lignes de commande mais aussi toutes les options, les noms des pages de manuel, les noms des paquets (pour apt-get / emerge etc.), et tout ce que vous voulez. Et fournit une explication utile des options pendant la complétion. Tout cela sans utiliser d'espace de défilement après l'émission de la commande.
  • Complétion par tabulation des caractères génériques ; écrivez cat *.txt, appuyez sur la touche tabulation, et choisissez parmi tous les fichiers qui correspondent à l'expression.
  • Changez de répertoire en tapant simplement leur nom.
  • Plusieurs modes d'édition de ligne. Peut se comporter comme vi ou emacs si vous le souhaitez.
  • Des raccourcis clavier personnalisables pour faire ce que vous voulez.
  • des invites thématisables, y compris la possibilité de placer les informations relatives à l'invite sur le côté droit de l'écran et de les masquer automatiquement lors de la saisie d'une longue commande.

Google vous indiquera bien d'autres avantages.

13voto

dindenver Points 1600

La vieille école, qui consiste à déplacer une arborescence de répertoires d'un endroit à un autre, en préservant les liens symboliques, les permissions et toutes ces bonnes choses :

tar cBf - . | (cd /destination; tar xvBpf -)

ou à travers le réseau

tar cBf - . | rsh foo.com "cd /destination; tar xvBpf -)

Nouvelle école :

rsync -urltv . /destination

ou à travers le réseau

rsync -urltv -e ssh . foo.com:/destination

13voto

kloucks Points 1530

Exigence : Vous avez un répertoire contenant une grande liste de fichiers que vous souhaitez supprimer. rm -r échouera !

exemple

find /var/spool/mqueue/ | wc -l
191545
rm -f /var/spool/mqueue/*
-bash: /bin/rm: Argument list too long

Solution :

find /var/spool/mqueue/ -xdev -exec command rm -f '{}' +

Explication :

Edit : Correction de l'explication suite au commentaire de @ephemient.

find fournira des arguments à rm par le maximum d'arguments autorisés. Cela permettra à rm de supprimer des fichiers par lots, ce qui est la technique la plus rapide que je connaisse sans utiliser l'opération -delete de find lui-même. C'est équivalent à

find /var/spool/mqueue -xdev -print0 | xargs -0 rm -f

que vous pouvez trouver utile si votre find ne prend pas en charge -exec ... + .

11voto

J'utilise ces deux astuces si souvent que j'ai pensé que ce serait une bonne idée de les partager :

!foo

Lancera la dernière commande dans le fichier historique commençant par "foo" (je l'utilise souvent lors de la compilation, !gcc par exemple).

L'autre est un raccourci clavier (Ctrl+O au lieu de Return) qui exécute la commande ET affiche la commande suivante dans le fichier historique. Par exemple, lorsque je compile et teste un fichier, je fais toujours 3 ou 4 commandes : make, cd dans le répertoire du test, exécuter le test, cd dans le répertoire du makefile. L'utilisation de Ctrl+O rend cette tâche beaucoup plus facile :)

J'espère que cela vous aidera !

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