[shell] Quelques commandes bash en dehors du .bash_history

Un petit tuyau, probablement déjà très connu mais utile tout de même : si vous souhaitez tapez une commande sans qu’elle apparaisse dans le .bash_history, vous pouvez taper depuis bash (interpréteur de commande par défaut lorsque vous utilisez une console/un terminal sous GNU/Linux) :

`cat `

ou $( cat )

Puis [Ctrl]+[D] une fois que vous êtes prêt à exécuter.

(Attention, ne pas se tromper avec les différents guillemets, faites soit un copier-coller, soit [Alt-Gr] avec le symbole sous la touche “7″ au dessus des lettres pour un clavier azerty.)

Tapez ensuite votre commande !

Qu’est-ce que cela fait exactement ?

Si vous tapez cat tout seul, cat redirige l’entrée standard (le clavier) vers la sortie standard (l’écran). Vous connaissez surement le principe des redirections (avec “<”, “>”, et “>>”) et des “pipes” (avec “|”)? Bien en fait ` COMMANDE ` est similaire : la sortie de COMMANDE est exploitée comme si elle avait été saisie dans la ligne à l’invite de l’interpréteur de commande.

Un exemple :

mkdir temp-` date +%Y%m%d_%H%M%S`

(Pour créer un dossier temporaire “horodaté”, note : vous pouvez utiliser ça dans un script bien entendu…)

Une fois cela compris, vous devriez comprendre la logique derrière ` cat`…

Limitations :

  • Une seule commande à la fois, le point-virgule ou le retour à la ligne n’y changeant rien…
  • En examinant .bash_history,  on sait quelque chose est camouflé (on ne sait juste pas quoi) : on y voit ` cat` sans savoir ce qui a été réellement fait…
  • N’utilisez jamais ça pour passer des mots de passe ou données sensibles en ligne de commande : en accédant à la liste des processus (avec ps par exemple) au bon moment, tout est grillé !
  • Il est possible de lancer bash (éventuellement depuis bash lui même) en lui indiquant de ne pas sauvegarder d’historique !
  • De nombreux programmes en apparence innocents (tel que vim, emacs) permettent d’exécuter des commandes directement, sans les mettre dans le .bash_history , ce qui limite l’intérêt de la méthode décrite…

En bref, vous l’aurez sûrement compris ce post a plus pour but d’attirer votre attention sur la “command substitution” de l’interpréteur bash à l’aide de quelques exemples pratiques…

Vous trouverez bien sûr dans le manuel de référence de bash, bien plus pour satisfaire votre curiosité…

Autres petits trucs sur bash sur ce (we)blog:


[shell] Quelques commandes bash en dehors du .bash_history
(fr) Commenter cet article - Partager - Lire un autre article (Blog de David Dallet)
(en) Comment this post - Share It - Read another post on David Dallet's Weblog

Vus : 737
Publié par Ddmdllt : 31