Relancer une précédente commande en ksh
Rédigé par Fred - - Aucun commentaire
Pour le boulot, on fait parfois des sudo su - someUser
avec someUser qui est en ksh
et qui en plus est en mode vi (Adieu C-r
, C-p
, C-k
, C-e
. Bonjour /
, Esc-k
, dd
, A
). Du coup, comme il est « partagé », je ne mets pas de bash par défaut ni de set -o emacs
(sympa hein ‽). Et au final, je m’y retrouve plutôt bien. Il n’y a pas tellement de différences entre ksh et bash.
Sauf une chose dont je me sers au final assez souvent, l’history expansion (avec le fameux sudo !!
par exemple, mais aussi !!:gs:/foo/bar/
). Mais en cherchant un peu, il y a quelque chose qui y ressemble vaguement : la commande r
. Ça n’est pas la panacée, mais c’est un début : ça permet de relancer la dernière commande qui commence par l’argument de r
.
$> echo "toto" $> touch toto $> r e #lance echo "toto" $> r t #lance touch toto
Avec un argument entier, cela fait la même chose que !
en bash : un positif = la nième commande, un négatif = la nième commande avant celle-ci.
$> echo "toto" $> touch toto $> r -2 #lance echo "toto"
Et enfin, avec r avant=apres
, on relance la dernière commande en changeant le premier avant
par après
.
$> cp fic1 /tmp/fic1 $> r 1=2 #lance cp fic2 /tmp/fic1