Vous devriez lire man bash sur votre système, en particulier la section sur Readline , car il s'agit du mécanisme d'entrée interactif de bash. Le manuel de Bash sur gnu.org contient une belle section sur l' édition en ligne de commande qui aidera à combler certaines lacunes.
Par défaut, vous pouvez les utiliser pour vous déplacer sur la ligne de commande (en énumérant quelques-uns ici; voir le lien pour une liste complète):
- Ctrl+ ase déplace au début de la ligne (ou Homeselon les paramètres du terminal)
- Ctrl+ ese déplace à la fin de la ligne (ou End...)
- Meta+ favance d'un "mot"
- Meta+ brecule d'un "mot"
Vous pouvez les utiliser pour "tuer" (alias "couper") le texte d'une ligne:
- Ctrl+ ktue ("coupe") le texte de la position actuelle du curseur jusqu'à la fin de la ligne
- Ctrl+ yarrache ("colle") le texte le plus récemment tué dans le tampon au niveau du curseur
Vous pouvez donc les combiner pour sélectionner un morceau de la ligne de commande que vous souhaitez répéter, le tuer, puis le coller à la fin de votre prochaine commande.
Maintenant, pour le rendre encore plus amusant, considérons l' extension historique de bash . C'est ce !!
que mentionne la réponse de Studer . Pauses d'extension vers le bas dans l' histoire désignateurs d'événements , désignateurs de mots , et modificateurs .
Les désignateurs d' événements ressemblent à ceci (encore une fois, voir les liens pour la liste complète):
!
- démarre une substitution d'historique
!n
- la n-ième commande dans la liste d'historique de bash, pour un entier n (fonctionne aussi pour les négatifs)
!!
- la commande précédente; équivalent à!-1
!string
- la commande la plus récente commençant par string
Les désignateurs de mots sélectionnent certaines parties d'un événement. Utilisez :
pour séparer l'événement du mot désignateur. Les mots sont numérotés à partir de 0 à partir du début de la ligne et insérés dans la ligne actuelle séparés par des espaces simples.
$
- désigne le dernier argument (par exemple, !!:$
est le dernier argument de la dernière commande; peut être raccourci !$
)
n
- désigne le nième mot (par exemple, !str:2
est le 2e argument de la commande la plus récente commençant par str ; !!:0
est la commande de la dernière commande)
Donc, pour reprendre votre exemple, si votre dernière commande est mkdir /some/really/long/path
, le simple fait d'exécuter à !!
nouveau exécutera cette commande à nouveau. Mais vous voulez cd
plutôt suivre ce chemin:
$ cd !$
Supposons maintenant que vous exécutiez d'autres commandes et que vous souhaitiez ensuite vous référer à nouveau à ce chemin. Si c'était la dernière commande mkdir que vous avez exécutée, vous pouvez l'utiliser pour répéter ce chemin:
$ tar czf ~/foo.tgz !mkdir:$