Zoeken…


Met behulp van! $

U kunt de !$ Gebruiken om herhaling te verminderen wanneer u de opdrachtregel gebruikt:

$ echo ping
ping
$ echo !$
ping

Je kunt ook voortbouwen op de herhaling

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

Merk op dat we in het laatste voorbeeld geen ping pong, a great game omdat het laatste argument dat aan het vorige commando werd doorgegeven pong , we kunnen dit soort problemen voorkomen door aanhalingstekens toe te voegen. Verdergaand met het voorbeeld was ons laatste argument game :

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

Snelle referentie

Interactie met de geschiedenis

# List all previous commands
history

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

Aanwijzers voor evenementen

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

Woordaanduidingen

Deze worden gescheiden door : van de gebeurtenisaanduiding waarnaar ze verwijzen. De dubbele punt kan worden weggelaten als de woordaanduiding niet begint met een nummer !^ Is hetzelfde als !:^ .

# 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 :^-$
!*

modifiers

Deze wijzigen de voorafgaande gebeurtenis of woordaanduiding.

# 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

Als de Bash-variabele HISTCONTROL ofwel ignorespace ofwel ignorespace ignoreboth (of, als alternatief, HISTIGNORE het patroon [ ]* ), kunt u voorkomen dat uw commando's worden opgeslagen in Bash-geschiedenis door ze te plaatsen met een spatie:

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

# This command will be saved
bar

Zoek in de opdrachtgeschiedenis op patroon

Druk op bediening r en typ een patroon.

Als u bijvoorbeeld man 5 crontab onlangs hebt uitgevoerd, kunt u dit snel vinden door "crontab" te typen . De prompt zal als volgt veranderen:

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

De `cr' daar is de string die ik tot nu toe heb getypt. Dit is een incrementele zoekopdracht, dus terwijl u doorgaat met typen, wordt het zoekresultaat bijgewerkt met de meest recente opdracht die het patroon bevatte.

Druk op de pijl naar links of rechts om de overeenkomende opdracht te bewerken voordat u deze uitvoert of op de Enter- toets om de opdracht uit te voeren.

De zoekopdracht vindt standaard de meest recent uitgevoerde opdracht die overeenkomt met het patroon. Als u verder terug wilt gaan in de geschiedenis, drukt u nogmaals op bediening r . U kunt herhaaldelijk drukken totdat u het gewenste commando vindt.

Schakel naar nieuwe map met! #: N

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

Dit vervangt het Nde argument van de huidige opdracht. In het voorbeeld !#:1 wordt vervangen door het eerste argument, dat wil zeggen backup_download_directory.

Herhaal de vorige opdracht met een vervanging

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

Deze opdracht vervangt 1 door 2 in de eerder uitgevoerde opdracht. Het vervangt alleen het eerste exemplaar van de tekenreeks en is gelijk aan !!:s/1/2/ .

Als u alle gebeurtenissen wilt vervangen, moet u !!:gs/1/2/ of !!:as/1/2/ .

Herhaal vorige opdracht met 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow