J'utilise donc le updans mon shell (Bash sur OSX ou Ubuntu, principalement) mais parfois je sais que je veux les trucs après l'emplacement actuel du curseur. Existe-t-il un moyen de compléter la ligne sur laquelle je suis avec la ligne ci-dessus? Frapper upet leftc'est ennuyeux.
Tous les autres trucs seraient cool aussi, à l'exception de tab, dont nous parlons tous maintenant :)
Voici un exemple (à la demande de ~ quack):
Je tape mkdir /where/the/hell/is/that/thing
puis je veux enregistrer dans le même répertoire. Mais maintenant je connais le meta-b :)
keyboard-shortcuts
bash
Dan Rosenstark
la source
la source
Réponses:
Essaye ça:
puis appuyez sur alt+.
en fonction de votre système d' exploitation et le terminal que vous pourriez avoir à taper escalors.
Vous pouvez également appuyer sur alt+ 1+ .pour choisir un argument antérieur spécifique.
C'est bien mieux que !! ou! $ parce que vous pouvez réellement voir ce que vous vous apprêtez à exécuter, et cela prend quand même moins de frappes.
edit: à proprement parler, ce n'est metapas le cas alt, il peut donc aussi fonctionner avec la touche "windows" en fonction de la configuration de votre clavier.
la source
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):
Vous pouvez les utiliser pour "tuer" (alias "couper") le texte d'une ligne:
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 stringLes 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 voulezcd
plutôt suivre ce chemin: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:
la source
bind -p
oubind -P
imprimerez également vos raccourcis clavier actuels; c'est la référence ultime pour ce que votre bash utilise.Si vous êtes un utilisateur vi, vous pouvez mettre le shell en mode vi en tapant
set -o vi
.Vous pouvez ensuite faire toutes sortes de choses puissantes sur la ligne de commande après avoir tapé
Esc + k
.Celui que j'utilise le plus est
Esc+K
alors/
tout texte tapé après que la barre oblique sera utilisée pour rechercher dans l'historique de votre ligne de commande.eg
Esc + k
/smbclient
donnera la dernière commande smbclient que vous avez tapée. Vous pouvez faire défiler toutes les recherches à l'aide des touches vi standard (j
etk
pour les flèches haut et bas, mais je pense que les flèches haut et bas fonctionneront également).Plus d'aide ici , il y a aussi des choses bash intégrées à ce lien qui pourraient être plus ce que vous recherchez.
À la vôtre, Stu.
la source
Vous pouvez utiliser
!!
ce qui représente la dernière commande:la source
!!
est un synonyme pour!-1
: gnu.org/software/bash/manual/bashref.html#Event-DesignatorsDans l'exemple que vous donnez, utilisez! $ Pour représenter le dernier paramètre de la commande précédente:
Vous pouvez également utiliser des variations numérotées pour extraire des paramètres spécifiques des commandes précédentes.
la source
J'ai récemment trouvé cette feuille de triche readline très utile. Beaucoup de choses que je ne savais pas. J'utilisais
!$
tout le temps jusqu'à ce que je découvre Alt+ ., que j'utilise maintenant tout le temps. :)la source