Similaire à !$, vous utilisez !^pour le premier argument.
Le
13
ahh ... * nix ... tu es une chose de beauté ... tous les jours je t'aime plus
jx12345
Comment peut-on se référer à l'avant-dernier argument de la commande précédente? par exemple, si j'ai donné echo tiger rabbit, comment puis-je me référer tigerà la commande suivante?
Chan Kim
3
Alt + .ne fonctionne pas en mode vi. Juste pour info, pour les autres qui étaient confus ici.
Brian McCutchon
160
Si la commande précédente avait deux arguments, comme celui-ci
ls a.txt b.txt
et vous vouliez le premier, vous pouvez taper
!:1
donnant
a.txt
Ou si vous vouliez les deux, vous pouvez taper
!:1-2
donnant
a.txt b.txt
Vous pouvez l'étendre à n'importe quel nombre d'arguments, par exemple:
@RNA, je viens de l'essayer à nouveau pour m'assurer que je n'ai pas inclus de faute de frappe, pourriez-vous fournir un peu plus de détails (par exemple, ligne de commande ubuntu, cygwin pour Windows? Message d'erreur? Ligne précédente?)
Robert Gowland
J'utilise GNU bash, version 3.2.51 (1) -release (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. Le message d'erreur est-bash: :1-2: bad word specifier
RNA
2
J'obtiens la même chose s'il n'y avait pas deux arguments dans la ligne précédente. Par exemple. ligne 1 ls a.txtligne 2ll !:1-2
Robert Gowland
vous avez raison. C'est une stupide erreur que j'ai commise. Merci!
RNA
Également pour obtenir tous les arguments, !:^-$peut être utilisé ou bien sûr un code similaire en combinaison avec des nombres.
816-8055
88
!!:noù nest la position 0 de l'argument souhaité.
Par exemple:
echo 'one''two'# "one two"
echo !!:2# "two"
Le !préfixe est utilisé pour accéder aux commandes précédentes.
Autres commandes utiles:
!$ - dernier argument de la commande précédente
!^ - premier argument (après le programme / intégré / script) de la commande précédente
J'ai toujours trouvé que les touches ↑et ↓fonctionnent également.
Bucket
Les clés @Bucket passent par les commandes précédentes, tandis que la solution fournie par Antonio permet de parcourir les arguments précédents (dernier argument de chaque commande précédente uniquement)
everyonesdesign
30
Si vous connaissez le numéro donné dans l'historique pour une commande particulière, vous pouvez à peu près prendre n'importe quel argument de cette commande en utilisant les termes suivants.
Utilisez ce qui suit pour prendre le deuxième argument de la troisième commande de l'historique,
!3:2
Utilisez ce qui suit pour prendre le troisième argument de l'avant-dernière commande de l'historique,
!-5:3
En utilisant un signe moins, vous lui demandez de parcourir la dernière commande de l'historique.
Réponses:
Vous pouvez utiliser
$_
ou!$
pour rappeler le dernier argument de la commande précédente.Alt + .
Peut également être utilisé pour rappeler le dernier argument de l'une des commandes précédentes.la source
!!:1
,!!:2
etc. (!!:0
est la commande précédente lui - même.) Voir gnu.org/software/bash/manual/bashref.html#History-Interaction!$
, vous utilisez!^
pour le premier argument.echo tiger rabbit
, comment puis-je me référertiger
à la commande suivante?Alt + .
ne fonctionne pas en mode vi. Juste pour info, pour les autres qui étaient confus ici.Si la commande précédente avait deux arguments, comme celui-ci
et vous vouliez le premier, vous pouvez taper
donnant
Ou si vous vouliez les deux, vous pouvez taper
donnant
Vous pouvez l'étendre à n'importe quel nombre d'arguments, par exemple:
la source
-bash: :1-2: bad word specifier
ls a.txt
ligne 2ll !:1-2
!:^-$
peut être utilisé ou bien sûr un code similaire en combinaison avec des nombres.!!:n
oùn
est la position 0 de l'argument souhaité.Par exemple:
Le
!
préfixe est utilisé pour accéder aux commandes précédentes.Autres commandes utiles:
!$
- dernier argument de la commande précédente!^
- premier argument (après le programme / intégré / script) de la commande précédente!!
- commande précédente (souvent prononcée "bang bang")!n
- numéron
de commande dehistory
!pattern
- correspondance de commande la plus récentepattern
!!:s/find/replace
- dernière commande, remplacerfind
parreplace
Plus d'informations sur l'historique des commandes
la source
!!:s/find/replace
, vous pouvez également^find^replace
.!*
- tous les arguments de la commande précédente (après le programme / intégré / script). par exemple:ls *.tmp *.cache rm !*
Dans la ligne de commande, vous pouvez appuyer sur esc- .ou alt+.
Il parcourt le dernier argument de vos commandes précédentes.
la source
↑
et↓
fonctionnent également.Si vous connaissez le numéro donné dans l'historique pour une commande particulière, vous pouvez à peu près prendre n'importe quel argument de cette commande en utilisant les termes suivants.
Utilisez ce qui suit pour prendre le deuxième argument de la troisième commande de l'historique,
!3:2
Utilisez ce qui suit pour prendre le troisième argument de l'avant-dernière commande de l'historique,
!-5:3
En utilisant un signe moins, vous lui demandez de parcourir la dernière commande de l'historique.
la source
! * exécute une nouvelle commande avec tous les arguments précédents.
la source
$_
place.Oui, vous pouvez utiliser
!$
pour rappeler le dernier argument de la commande précédente.la source