GNU/Linux >> Znalost Linux >  >> Linux

Jak používat příkazy historie Bash

Bash má bohatou historii. To znamená, že je to starý shell s ještě starším předkem (Bourne shell), ale má také skvělou history příkaz, který předčí všechna ostatní rozhraní historie shellu na základě počtu funkcí. Bash verze history umožňuje zpětné vyhledávání, rychlé vyvolání, přepisování historie a další.

history příkaz není jako mnoho jiných příkazů. Možná jste zvyklí na to, že příkazy jsou spustitelné soubory umístěné v běžných umístěních na úrovni systému, jako je /usr/bin , /usr/local/bin , nebo ~/bin . Vestavěná history příkaz není ve vaší PATH a nemá žádné fyzické umístění:

$ které historie

které:žádná historie v [PATH]

Místo toho history je vestavěná funkce samotného shellu:

Historie typu $
historie je vestavěný shell
$ historie nápovědy
historie:historie [-c] [-d offset] [n] nebo
historie -anrw [ název_souboru] nebo
historie -ps arg [arg...]

Zobrazte nebo upravte seznam historie.
[...]

Z toho důvodu je funkce historie v každém shellu jedinečná, takže to, co používáte v Bash, nemusí fungovat v Tcsh nebo Fish nebo Dash a to, co v nich používáte, nemusí fungovat v Bash. V některých případech může znalost toho, co Bash dokáže, inspirovat uživatele jiných shellů k vytváření zajímavých hacků pro klonování chování Bash a může to odemknout funkce Bash, o kterých jste nikdy nevěděli.

Zobrazení historie Bash

Nejzákladnější a nejčastější použití history příkaz je zobrazit historii vaší shellové relace:

$ echo "ahoj"
ahoj
$ echo "svět"
svět
$ historie
  1  echo "ahoj"
  2  echo "svět "
  3  historie
."

Designátory událostí

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Designátoři událostí prohledávají vaši historii podle události. událost v tomto kontextu je příkaz zaznamenaný ve vaší historii, ohraničený znakem nového řádku. Jinými slovy, je to jeden řádek označený indexovým číslem pro referenci.

Označení událostí většinou začínají vykřičníkem, někdy také nazývaným třesk (! ).

Chcete-li znovu spustit příkaz z historie, použijte vykřičník, za kterým bezprostředně následuje (bez mezer) indexové číslo požadovaného příkazu. Předpokládejme například, že řádek 1 obsahuje příkaz echo "hello" a chcete jej znovu spustit:

$ !1
echo "ahoj"
ahoj

Relativní umístění můžete použít zadáním záporného počtu řádků zpět od vaší aktuální pozice v historii. Chcete-li se například vrátit o tři položky v historii:

$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo

Pokud se jen vracíte o jeden řádek zpět, můžete použít zkratku !! místo !-1 . To je úspora jednoho celého stisknutí klávesy!

$ echo "foo"
$ !!
echo "foo"
foo

Můžete také vyhledat konkrétní řetězec prostřednictvím položek, naopak, příkaz ke spuštění. Chcete-li vyhledat příkaz spouštění s konkrétním řetězcem použijte vykřičník, za kterým bezprostředně (bez mezery) následuje řetězec, který chcete vyhledat:

$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo

Můžete také vyhledat příkaz obsahující řetězec na libovolné pozici (nejen na začátku). K tomu použijte ! plus řetězec, který hledáte, jako obvykle, ale obklopte řetězec otazníky na obou koncích. Koncový otazník můžete vynechat, pokud víte, že za řetězcem bezprostředně následuje znak nového řádku (to znamená, že je to poslední věc, kterou jste napsali před stisknutím klávesy Return ):

$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo

Nahrazení řetězce

Podobně jako při hledání řetězců na začátku řádku můžete vyhledat řetězec a nahradit ho novým řetězcem změnou příkazu:

$ echo "hello"
ahoj
$ echo "world"
svět
$ ^hello^foo
echo "foo"
foo

Udělejte z historie užitečnou

V Bash je příkaz historie schopen mnohem více, než co bylo popsáno zde, ale je to dobrý začátek pro zvyknutí si na používání vaši historii místo toho, abyste s ní zacházeli jen jako s odkazem. Použijte history příkazy často a uvidíte, kolik toho můžete udělat, aniž byste museli psát příkazy. Možná se překvapíte!


Linux
  1. Jak změnit počet příkazů uložených v historii Bash

  2. Jak zakázat úpravu mé historie v bash

  3. jak použít kill SIGUSR2 v bash?

  1. Jak používat příkaz historie v Linuxu

  2. Jak vymazat historii příkazového řádku BASH v Linuxu

  3. Jak mohu v Bash používat společně příkazy watch a jobs?

  1. Jak změnit Cron Shell (sh to Bash)?

  2. Jak mohu používat aliasované příkazy s xargs?

  3. Jak časový limit skupiny příkazů v Bash