Buscar..


Utilizando! $

Puede usar !$ Para reducir la repetición al usar la línea de comando:

$ echo ping
ping
$ echo !$
ping

También puedes construir sobre la repetición.

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

Tenga en cuenta que en el último ejemplo no obtuvimos ping pong, a great game porque el último argumento pasado al comando anterior fue pong , podemos evitar este tipo de problemas agregando comillas. Continuando con el ejemplo, nuestro último argumento fue el game :

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

Referencia rápida

Interacción con la historia.

# List all previous commands
history

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

Designadores de eventos

# 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
!#

Designadores de palabras

Estos están separados por : desde el designador del evento al que se refieren. Los dos puntos se pueden omitir si la palabra designador no comienza con un número !^ Es igual 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 :^-$
!*

Modificadores

Estos modifican el evento precedente o designador de la palabra.

# 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 contiene un ignorespace o uno ignoreboth (o, alternativamente, HISTIGNORE contiene el patrón [ ]* ), puede evitar que sus comandos se almacenen en el historial de Bash añadiéndoles un espacio:

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

# This command will be saved
bar

Buscar en el historial de comandos por patrón

Presiona control r y escribe un patrón.

Por ejemplo, si recientemente ejecutado man 5 crontab , puede encontrarlo rápidamente al empezar a escribir "crontab". El aviso cambiará así:

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

El `cr' es la cadena que escribí hasta ahora. Esta es una búsqueda incremental, por lo que a medida que continúa escribiendo, el resultado de la búsqueda se actualiza para que coincida con el comando más reciente que contenía el patrón.

Presione las teclas de flecha hacia la izquierda o hacia la derecha para editar el comando correspondiente antes de ejecutarlo, o la tecla Intro para ejecutar el comando.

Por defecto, la búsqueda encuentra el comando ejecutado más reciente que coincide con el patrón. Para retroceder en el historial, presiona control r nuevamente. Puede presionarlo varias veces hasta que encuentre el comando deseado.

Cambie al directorio recién creado con! #: N

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

Esto sustituirá el argumento Nth del comando actual. En el ejemplo !#:1 se reemplaza con el primer argumento, es decir, backup_download_directory.

Repite el comando anterior con una sustitución.

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

Este comando reemplazará 1 por 2 en el comando ejecutado anteriormente. Solo reemplazará la primera aparición de la cadena y es equivalente a !!:s/1/2/ .

Si desea reemplazar todas las ocurrencias, debe usar !!:gs/1/2/ o !!:as/1/2/ .

Repita el comando anterior con 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow