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
Vyhledávání řetězců
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"
fooUdě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!
Jak zjistit, zda jste připraveni přejít z Macu na Linux Můj příběh Linuxu:remixování distribucí ve věku 17 letLinux