GNU/Linux >> Znalost Linux >  >> Linux

Použití funkce historie na Bash Shell na serveru Ubuntu 16.04 LTS

Bash (Bourne again shell) je populární shell používaný na většině systémů podobných UNIXu. Bash je napsán Brianem Foxem jako GNU Project. Obsahuje funkce z Bourne shellu, C shellu a Korn shellu. Uživatelé, kteří tráví čas na příkazovém řádku pomocí bash shellu, často rádi opakují příkazy, které byly provedeny v minulosti. Funkce historie shellu Bash pomáhá zapamatovat si nedávné příkazy a později je znovu použít; tím ušetříte čas na přepisování. Začněme!

Historie výpisů

Když historie příkaz použitý bez zadaných argumentů, zobrazí poslední použité příkazy s odpovídajícími čísly řádků.

$ history 

Výstup bude podobný následujícímu:

Výpis posledních „n“ provedených příkazů

Pomocí „historie “ lze posledních „n“ provedených příkazů načíst následovně:

$ history 7 

Spustit konkrétní příkaz z historie

Je možné provést konkrétní příkaz z historie. Použití vykřičníků následovaných číslem příkazu podle historie udělá kouzlo. Například následujícím příkazem znovu spusťte příkaz s číslem 7 (du –sh) takto:

$ !7 

Znovu spustit předchozí příkaz

V mnoha situacích potřebujeme příkaz spouštět znovu a znovu. Níže uvedené příkazy provedou tuto úlohu provedením předchozího použitého příkazu.

$ !!
Or
$ !-1  

Vyhledávání příkazů

Výstup generovaný historií lze využít několika způsoby. Výstup historie lze například předat do – more, tail, grep, aby se získal požadovaný výstup.

Vyhledejte v historii příkazů „free“:$ history | grep free Chcete-li zobrazit pouze poslední 4 příkazy:

$ history | tail -4 

Příkaz more umožňuje zobrazení výstupu v terminálu po jedné stránce:

$ history | more   

Spustit předchozí příkaz, který začíná konkrétním slovem

Použití vykřičníku následovaného konkrétním slovem příkazu udělá kouzlo!. Předpokládejme, že uživatel provedl – „free –h“. Zadáním „!free“ znovu spustíte příkaz „free –h“.

Mazání historie

Historii je možné vymazat příkazem níže: ​ $ history -c Tímto vymažete všechny příkazy v paměti bash shellu pro aktuální uživatelskou relaci.

Užitečné aliasy

Alias ​​je krátký název dlouhý a komplexní příkaz. Jednoduchý alias jednoho znaku pro příkaz historie.

$ alias 'h=history' 

Níže uvedený alias „ht“ zobrazuje deset posledních příkazů –

$ alias 'ht=history | tail' 

Níže uvedený alias „hg“ umožňuje zobrazit všechny příkazy, které odpovídají danému řetězci –

$ alias 'hg=history | grep' 

Přidejte tyto aliasy do souboru „~/.bashrc“, aby byly trvalé při každém spuštění systému.

Nastavení konfigurace historie

Proměnná prostředí Bash Popis
HISTFILE ​Umístění fyzického souboru, kde historie ukládá příkazy. Výchozí nastavení bash shellu je „~/.bash_history“. Nastavení „/dev/null“ deaktivuje záznam historie.
HISTFILESIZE ​Odkazuje na počet příkazů, které mají být uloženy v souboru historie.
HISTSIZE ​Odkazuje na řadu příkazů, které jsou uloženy v paměti v seznamu historie. Nastavením hodnoty 0 (nula) zakážete záznam historie.
HISTIGNORE ​Někdy je nutné neukládat nějaké příkazy. Tato proměnná přebírá seznam vzorů oddělených dvojtečkou. Například níže uvedená konfigurace umožňuje funkci historie nezaznamenávat příkazy:ls, top a clear.

HISTIGNORE=”ls*:top:clear” 
HISTTIMEFORMAT ​Tato proměnná HISTTIMEFORMAT umožňuje zobrazení historie s časovým razítkem.

Po nastavení HISTTIMEFORMAT na '%F %T  ' získáte níže uvedené výsledky.​ Toto je velmi užitečný příkaz pro systémové administrátory.
HISTCONTROL ​HISTCONTROL pomáhá při ignorování duplikátů. HISTCONTROL lze nastavit pomocí hodnot: erasedups, ignorespace, ignoredups nebo ignoreboth. (odděleno dvojtečkou)Následuje několik příkladů: HISTCONTROL=ignoredups:erasedups
HISTCONTROL=ignorebothPředpokládejme, že položky historie obsahují duplikáty následovně („top“ a „ls –latr“ se opakují za sebou)​Pokud byl HISTCONTROL nastaven na „ignoredups“ ” pak by se historie zobrazila takto:

Pokročilá nastavení konfigurace

Bash uchovává seznam příkazů interně v paměti a při ukončení se zapisují do nakonfigurovaného souboru (výchozí je .bash_history). Když uživatel opustí shell, poslední řádky $HISTSIZE se zkopírují ze seznamu historie do souboru nastaveného na $HISTFILE. Pokud je uživatel přihlášen s mnoha bash relacemi, bude uložena historie pouze té poslední, která skončila. V případě, že má být historie příkazů zapsána okamžitě při provádění příkazu v uživatelské relaci, lze následující konfiguraci nastavit v souboru „.bashrc“.

$ shopt -s histappend $ PROMPT_COMMAND=”historie -a; historie -c; history -r“ „shopt –s histappend“ povolí připojení namísto přepsání historie.
„history -a“ se používá k připojení příkazů historie v paměti k ~/.bash_history
“history -c“ používá se k vymazání příkazů historie v paměti
„history -r“ se používá ke čtení příkazů historie z ~/.bash_history do paměti
Typický soubor „~/.bashrc“ s nastavením konfigurace související s historií vypadat jako níže:# kontrola velikosti příkazů, které mají být zaznamenány do paměti
HISTSIZE=2000# kontrola velikosti příkazů, které mají být uloženy v souboru
HISTFILESIZE=10000

# umístění fyzického souboru, kam se zapisují příkazy
HISTFILE=/var/users/rjujare/.bash_history

#Formát pro účely záznamu a zobrazení:zahrnutí časového razítka
HISTTIMEFORMAT=’%F %T ‘

# ignorujte běžné příkazy jako ls
HISTIGNORE=”ls:id:uname:clear:top”

# ignorovat duplicitní příkazy a příkazy začínající mezerou
HISTCONTROL=ignoreboth
# append, nepřepisovat historii
shopt -s histappend
PROMPT_COMMAND=”history -a; historie -c; historie -r”

Jak uložit konfiguraci?

Otevřete soubor ~/.bashrc ve svém oblíbeném editoru a změňte nastavení. Po dokončení změn soubor uložte a ukončete. Chcete-li získat efekt změny, zadejte zdroj souboru pomocí příkazu „source“ následovně:

$ source ~/.bashrc   

Závěr

Skořápka Bash přichází s mnoha užitečnými funkcemi a jednou z nich je historie. Tyto funkce výrazně zvyšují produktivitu administrátorů i běžných uživatelů. Nezapomeňte se podělit o své vlastní zkušenosti s historií!


Linux
  1. Jak vymazat historii Bash na Linuxu

  2. Rozdělit výstup příkazu podle sloupců pomocí Bash?

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

  1. Jak nechat typ-ahead použít pro vyhledávání v historii Bash (ctrl-r)?

  2. Použití Linux Sleep Command ve skriptech Bash

  3. Bash skript:Použití příkazu script z bash skriptu pro protokolování relace

  1. Příkaz historie v Linuxu (Bash History)

  2. Jak na to:Neomezená historie Bash/shell?

  3. Jak spustit příkaz vícekrát pomocí bash shell?