Recherche…


En utilisant! $

Vous pouvez utiliser le !$ Pour réduire la répétition lorsque vous utilisez la ligne de commande:

$ echo ping
ping
$ echo !$
ping

Vous pouvez également tirer parti de la répétition

$ echo !$ pong
ping pong
$ echo !$, a great game
pong, a great game

Notez que dans le dernier exemple, nous n'avons pas obtenu de ping pong, a great game car le dernier argument passé à la commande précédente était pong , nous pouvons éviter un tel problème en ajoutant des guillemets. En continuant avec l'exemple, notre dernier argument était le game :

$ echo "it is !$ time"
it is game time
$ echo "hooray, !$!"
hooray, it is game time!

Référence rapide

Interaction avec l'histoire

# List all previous commands
history

# Clear the history, useful if you entered a password by accident
history -c

Indicateurs d'événements

# Expands to line n of bash history
!n

# Expands to last command
!!

# Expands to last command starting with "text"
!text

# Expands to last command containing "text"
!?text

# Expands to command n lines ago
!-n

# Expands to last command with first occurrence of "foo" replaced by "bar"
^foo^bar^

# Expands to the current command
!#

Désignateurs de mots

Ceux-ci sont séparés par : de l'indicateur d'événement auquel ils se réfèrent. Les deux points peuvent être omis si le mot désignateur ne commence pas par un nombre !^ Est le même que !:^ .

# Expands to the first argument of the most recent command
!^

# Expands to the last argument of the most recent command (short for !!:$)
!$

# Expands to the third argument of the most recent command
!:3

# Expands to arguments x through y (inclusive) of the last command
# x and y can be numbers or the anchor characters ^ $
!:x-y

# Expands to all words of the last command except the 0th
# Equivalent to :^-$
!*

Modificateurs

Ceux-ci modifient l'événement précédent ou le désignateur de mot.

# Replacement in the expansion using sed syntax
# Allows flags before the s and alternate separators
:s/foo/bar/ #substitutes bar for first occurrence of foo
:gs|foo|bar| #substitutes bar for all foo

# Remove leading path from last argument ("tail")
:t

# Remove trailing path from last argument ("head")
:h

# Remove file extension from last argument
:r

Si la variable Bash HISTCONTROL contient ignorespace ou ignoreboth (ou, alternativement, HISTIGNORE contient le modèle [ ]* ), vous pouvez empêcher que vos commandes soient stockées dans l'historique Bash en les ajoutant avec un espace:

# This command won't be saved in the history
 foo

# This command will be saved
bar

Rechercher dans l'historique des commandes par pattern

Appuyez sur la commande r et tapez un motif.

Par exemple, si vous avez récemment exécuté man 5 crontab , vous pouvez le trouver rapidement en commençant à taper "crontab". L'invite changera comme ceci:

(reverse-i-search)`cr': man 5 crontab

Le `cr' il y a la chaîne que j'ai tapé jusqu'ici. Il s'agit d'une recherche incrémentielle. Lorsque vous continuez à taper, le résultat de la recherche est mis à jour pour correspondre à la commande la plus récente contenant le modèle.

Appuyez sur les touches fléchées gauche ou droite pour modifier la commande correspondante avant de l'exécuter ou sur la touche Entrée pour exécuter la commande.

Par défaut, la recherche trouve la dernière commande exécutée correspondant au motif. Pour revenir plus loin dans l'historique, appuyez à nouveau sur la commande r . Vous pouvez appuyer dessus à plusieurs reprises jusqu'à ce que vous trouviez la commande souhaitée.

Passez au répertoire nouvellement créé avec! #: N

$ mkdir backup_download_directory && cd !#:1
mkdir backup_download_directory && cd backup_download_directory

Cela remplacera le Nième argument de la commande en cours. Dans l'exemple !#:1 est remplacé par le premier argument, ie backup_download_directory.

Répéter la commande précédente avec une substitution

$ mplayer Lecture_video_part1.mkv
$ ^1^2^
mplayer Lecture_video_part2.mkv

Cette commande remplacera 1 par 2 dans la commande précédemment exécutée. Il ne remplacera que la première occurrence de la chaîne et équivaut à !!:s/1/2/ .

Si vous voulez remplacer toutes les occurrences, vous devez utiliser !!:gs/1/2/ ou !!:as/1/2/ .

Répéter la commande précédente avec sudo

$ apt-get install r-base
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$ sudo !!
sudo apt-get install r-base
[sudo] password for <user>: 


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow