GNU/Linux >> Znalost Linux >  >> Linux

Jak spravovat historii příkazů Linuxu

Pravděpodobně víte o používání kláves se šipkami nahoru a dolů k procházení vaší historie Bash, ale věděli jste, že historie Bash obsahuje mnohem víc než jen opakování příkazů? V příběhu je toho mnohem víc. Nebo by to mělo být mnohem více do historie ? V obou případech je příkaz historie jedním z těch obskurních příkazů, které jsou výkonné a užitečné znát alespoň na základní úrovni. Tento článek odstraní záhadu z historie Bash a udělá z něj přátelštější nástroj pro správu systému.

Pozadí

V Bash je vaše historie příkazů uložena v souboru (.bash_history ) ve vašem domovském adresáři. Úvodní (.) skryje soubor z normálního zobrazení. Chcete-li jej zobrazit, zadejte ls -a příkaz.

$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc

Se souborem .bash_history můžete pracovat jako s jakýmkoli jiným prostým textovým souborem ASCII.

Tři související proměnné prostředí, o kterých musíte vědět, jsou HISTFILE, HISTFILESIZE a HISTSIZE.

  • HISTFILE—/home//.bash_history
  • HISTFILESIZE—1000
  • HISTSIZE – 1000

Proměnná HISTFILE obsahuje název a umístění vašeho souboru historie Bash. HISTFILESIZE udává, kolik příkazů lze uložit do .bash_history soubor. HISTSIZE je počet příkazů uložených v mezipaměti. Jakmile dosáhnete 1000 příkazů, nejstarší příkazy budou vyřazeny, protože se ukládají nové.

$ echo $HISTSIZE
1000
$ echo $HISTFILESIZE
1000
$ echo $HISTFILE
/home/khess/.bash_history

Každý uživatel, včetně uživatele root, má tyto proměnné a velikosti přiřazeny ve výchozím nastavení. Pokud chcete tyto proměnné změnit, upravte soubor .bashrc ve svém domovském adresáři. Pokud například chcete změnit velikost proměnných na 500 příkazů, upravte .bashrc soubor a použijte následující položky:

export HISTSIZE=500
export HISTFILESIZE=500

Chcete-li použít nové hodnoty bez odhlášení a opětovného přihlášení, můžete spustit .bashrc soubor.

$ . ~/.bashrc

Vaše hodnoty jsou nyní aktivní pro váš aktuální shell a všechny podskořápky.

$ echo $HISTSIZE
500
$ echo $HISTFILESIZE
500

Pokud nechcete, aby vaše historie uchovávala duplicitní příkazy, můžete své historii dát pokyn, aby duplicitní položky ignorovala přidáním následujícího do souboru .bashrc:

export HISTCONTROL=ignoredups

Problém

Problém s historií Bash je, že se nezapisuje do .bash_history soubor, dokud se neodhlásíte. To znemožňuje použití příkazu history pro skriptování. Řekněme například, že učíte kurz Linuxu a chcete zkontrolovat, zda studenti spustili konkrétní příkaz ke zkopírování svých souborů na připojený externí disk. Pokud student zůstane přihlášený do systému, nebudete moci určit, zda byla kopie provedena, protože váš skript používá ke kontrole, zda byl příkaz spuštěn, jeho soubor historie (/home/student/.bash_history).

Řešení

Chcete-li tuto funkci obejít, použijte zápis možnost pro history příkaz. V rámci výuky byste studentům nechali tento příkaz spustit, aby si uložili historii, i když se neodhlásí.

$ history -w

To zapíše veškerou aktuální historii příkazů relace do HISTFILE. A nyní může váš kontrolní skript snadno zjistit, zda byl příkaz spuštěn. Musíte také věřit, že student spustí příkaz historie.

[ Podívejte se na lekci historie Setha Kenlona: Udělejte z historie Bash užitečnější pomocí těchto tipů ]

Další problém

Protože HISTSIZE a HISTFILESIZE jsou relativně velké (1000 příkazů), je možné, že student daný příkaz spustil již dříve. Do jejich .bashrc můžete přidat položku export HISTCONTROL=ignoredups, ale to nepomůže, pokud student spustil podobný příkaz před dvěma dny, protože soubor zobrazí pouze jeden příkaz.

Řešení tohoto problému

Chcete-li tento problém vyřešit, měli byste po přihlášení vymazat historii studenta. Znovu upravte soubor .bashrc a přidejte do něj následující příkaz.

history -c

Tento příkaz vymaže jejich historii při každém přihlášení a odstraní problém s vyzvednutím dříve spuštěného příkazu. Nemusíte se starat o vyzvednutí příkazu z předchozích relací, protože systém odhlásí nečinné uživatele po určité době, pokud nastavíte časový limit nečinnosti v /etc/profile . Upravte /etc/profile soubor a přidejte následující položku.

TMOUT=300

Proměnná TMOUT používá několik sekund nečinnosti. V tomto případě je 300 sekund pět minut. Tuto hodnotu můžete nastavit na libovolný počet sekund. Tato hodnota se projeví při příštím přihlášení pro všechny uživatelů. Chcete-li nastavit jednotlivé hodnoty časového limitu, použijte .bashrc ale uvědomte si, že uživatelé mohou tento soubor libovolně měnit.

[ Stáhnout nyní:Průvodce systémového administrátora skriptováním v Bash. ] 

Sbalit

Historie Bash je užitečný nástroj, ale může být frustrující, pokud neznáte jeho možnosti a zvláštnosti. V historii je k dispozici mnohem více možností. Další informace naleznete v manuálových stránkách. A pamatujte, že každý příkaz, který zadáte, je historií.


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

  2. Jak monitorovat váš Linux server?

  3. Jak používat Su Command v Linuxu

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

  2. Jak používat příkaz apt ke správě balíčků v systému Linux

  3. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  1. Jak vymazat historii Bash na Linuxu

  2. Příkaz historie Linuxu

  3. Jak uložit historii příkazů vybraných uživatelů v Linuxu