history je příkaz v unixových systémech , který umožňuje zobrazit historii práce uživatele s příkazovým řádkem. Objevil se v původním csh Berkely Unix (2BSD), kde byl vestavěný. Zlepšení interaktivity bylo jedním z hlavních cílů vývoje csh, takže může zvýraznit celou sadu funkcí souvisejících s prací s historií, zejména při editaci aktuálního příkazu je povoleno nahradit poslední příkaz a nahradit podřetězec v něm pomocí regulárního výrazu. S příchodem knihovny historie GNU (nyní součást GNU Readline ) se interaktivní rozšíření historie příkazů objevila téměř ve všech komerčních shellech.
Často se hodí v případech, kdy potřebujete zjistit průběh dříve provedených akcí nebo si zapamatovat zapomenutý název příkazu, který byl kdysi použit.
Výstup tvoří seznam
Ve výchozím nastavení je zobrazen seznam jednoho a půl až dvou tuctů posledních příkazů.
V raných verzích Unixu byl příkaz history samostatným programem. Většina shellů však již dlouho obsahuje příkaz history jako vestavěný shell, takže samostatný program se již nepoužívá.
Příkaz pracuje s archivem příkazů uloženým v souboru v domovském adresáři uživatele. Název souboru je určen hodnotou proměnné prostředí HISTFILE a přesný formát záznamu v souboru závisí na konkrétním shellu a jeho možnostech sestavení a může zahrnovat čas spuštění a trvání příkazu v sekundách.
Během provozu ukládá interaktivní shell historii provádění příkazů aktuální relace ve vyrovnávací paměti RAM, která se při normálním vypnutí zapisuje do archivního souboru. Tento buffer se používá jak pro samotný příkaz historie, tak pro interaktivní rozšíření (záměna slov s předponou '!') a editaci zejména příkazů pro návrat k předchozímu nebo dalšímu příkazu. Při spuštění shell naplní tento buffer příkazy z archivního souboru. Uložení historie aktuální relace obvykle vyžaduje existenci archivního souboru na disku, a pokud nebyl vytvořen automaticky při vytvoření uživatele, je nutné jej vytvořit ručně.
Většina moderních shellů má možnosti, které řídí proces zápisu historie na disk (maximální velikost souboru, nahrazení obsahu archivu nebo přidání dat z aktuální relace, pravidelné ukládání historie během provozu, synchronizace obsahu mezi několika simultánními relacemi, zamezení po sobě jdoucích opakování, odstranění nadbytečných mezer atd. .P).