La ligne de commande, trucs et astuces

Ces trucs et astuces sont destinés à des débutants, mais supposent une connaissance des quelques commandes indispensables, ainsi que celle du fonctionnement basique d'un éditeur de texte (vim, emacs, … ou ed si ça vous chante). Ils ne sont pas indispensables mais permettent de vous sentir bien plus à l'aise devant un shell et de vous économiser de précieuses secondes lors d'opérations courantes, en vous permettant de taper le moins possible. Ils sont donnés en vrac, aussi n'hésitez pas à rajouter les vôtres !

Préambule : le .bashrc

Dans votre répertoire home (~), vous avez un fichier .bashrc (ou pas, dans ce cas créez-le). C'est un script qui sera lancé à chaque fois que vous lancerez un terminal. Il faut savoir que bash ne retient pas les définitions que vous lui faites d'une session à une autre. Si vous créez un alias avec la commande alias directement en l'exécutant dans le terminal, elle ne sera retenue que jusqu'à ce que vous le fermiez. Pareil pour les variables. Le .bashrc sert donc à lui rafraîchir la mémoire à chaque lancement, en exécutant pour vous ces commandes.

Modifiez votre prompt

Je pense surtout à le colorer. Non, un prompt coloré ne sert pas qu'à faire beau ! Selon moi, cela sert surtout à délimiter clairement les commandes successives. Avec un prompt noir et blanc, lorsqu'on enchaîne plusieurs commandes qui ont des sorties un peu fouillis sur plusieurs lignes (exemple : des erreurs ou warnings de gcc) il peut être difficile de retrouver le début de la sortie de la commande. Avec un prompt coloré, on ne peut pas le rater.

Comment faire ? Il s'agit de modifier la variable $PS1. Essayez de taper PS1=“plop”. Pour retrouver votre prompt, quitter et relancer un terminal. Si vous avez lu le paragraphe précédent, vous avez compris qu'il faut le faire dans le .bashrc si on veut que cela soit permanent. Je vous envoie sur cette page qui explique très clairement comment mettre des couleurs.

Exemples :

  • Le mien (voir le screenshot plus bas) :
PS1='\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\]:\[\033[1;31m\]\w \[\033[1;36m\]$ \[\033[0m\]'
  • Si vous aimez vous faire du mal :
PS1='C:${PWD//\//\\\}>'

Utilisez des alias !

Créez des alias pour les commandes que vous utilisez souvent. Quelques exemples courants :

  • l pour ls
  • ll pour ls -l
  • la pour ls -a
  • .. pour cd ..

Si vous êtes du genre maladroit, vous pouvez aussi faire des alias qui remplacent rm, mv par rm -i et mv -i. Là encore, direction .bashrc pour stocker ces commandes.

Utilisez des raccourcis clavier

Les plus utiles :

  • Ctrl+D (EOF) pour quitter un terminal ou se délogger (remplace donc exit et logout)
  • Ctrl+L pour effacer l'écran (clear)
  • Ctrl+W pour effacer un mot entier

Utilisez l'historique des commandes

Bon, je pense que tout le monde connaît la touche haut, pour parcourir les dernières commandes tapées. Mais vous pouvez aussi taper le caractère ! suivi :

  • d'un autre ! pour la dernière commande tapée
  • de -n pour la n-ième dernière commande
  • de * pour les arguments de la dernière commande
  • et le combo : -n* pour les arguments de la n-ieme dernière commande.

Exemples d'utilisation : Après avoir fait un petit ls, vous trouvez un fichier suspect (appelons-le “plop”). Vous regardez ce qu'il y a dedans : “cat plop”. Vous décidez de la supprimer : “rm !*”. Bon ok pour un nom de fichier aussi court (ctb) c'est pas forcément utile mais si c'est un fichier paumé au bout d'une arborescence bien longue (cmb) c'est appréciable. Très utile aussi pour les systèmes avec sudo : il suffit de faire “sudo !!” pour exécuter la dernière commande en root.

Créez des "alias" pour les serveurs ssh

Marre de taper “ssh prénom.nom@lunix121.ensiie.fr” pour te connecter à l'école ? Pourquoi pas plutôt “ssh lunix” ? C'est plus rapide non ? Il suffit pour cela d'éditer le fichier ~/.ssh/config (probablement de le créer si tu n'y as jamais touché), et de rajouter ces lignes (exemple pour lunix):

Host lunix
    Hostname lunix121.ensiie.fr
    User prénom.nom

Ah oui, et encore mieux, ça fonctionne aussi avec scp.

D'autres options pratiques : “Port x” pour spécifier un port, “ForwardX11 yes” pour forwarder X11 par défaut.

Un petit screenshot d'une session pipeau pour illustrer tout ça