
Aplikace Terminál v macOS zaznamenává poslední příkazy, které jste použili, takže je můžete později znovu použít. Zde je návod, jak vymazat historii příkazů Terminálu.
Když zadáte příkazy a stisknete return v aplikaci Terminal v macOS, pamatuje si zadané příkazy a uloží je pro případ, že byste chtěli stejné příkazy znovu použít později.
V Terminálu můžete stisknout tlačítko Nahoru a Dolů šipkami na klávesnici vašeho Macu můžete procházet všechny poslední příkazy. Při stisknutí kláves se šipkami Terminál nahradí vše, co je na příkazovém řádku, každým příkazem v uložené historii příkazů.
Historii příkazů v Terminálu můžete procházet vpřed nebo vzad a stisknutím klávesy Return u jakéhokoli uloženého příkazu jej znovu spustit.
Možná budete chtít z bezpečnostních důvodů odstranit historii příkazů Terminálu nebo můžete pracovat na jedné úloze s určitými technologiemi a poté přepnout na jinou úlohu v Terminálu pomocí jiných technologií, které používají jinou sadu příkazů.
Shell varianty a němé terminály
Rané UNIXové počítače byly vytvořeny v roce 1970 a používaly hloupé terminály připojené k sálovým počítačům, na kterých měli uživatelé účty pro sdílení času. Každý uživatel by použil terminál pro připojení k sálovému počítači, který skutečně prováděl příkazy zadané v terminálu.
Mezi první výrobce hloupých terminálů patřili Digital Equipment Corporation, UNISYS, Wang, WYSE, Lear Siegler a další. Ještě dříve – v 60. letech minulého století IBM prodávalo velké samostatné papírové terminály, jako byl IBM 2741, který obsahoval svůj vlastní stolní stojan.
Jedna společnost, Carterfone, byla jednou z prvních, která umožnila hloupým terminálům připojit pole dálkový sálové počítače a spouštět příkazy přes akusticky spojený telefon modem – zařízení, které převádělo počítačové signály na zvuk.
Počátkem sedmdesátých let vydal Lear Siegler řadu populárních hloupých terminálů počínaje ADM-1 v roce 1972 a později velmi populárním ADM-3A.
To vše bylo před revolucí osobních počítačů na konci 70. let. Dnes lidé na svých počítačích používají operační systémy s variantou UNIX a ke komunikaci s operačním systémem na stejném počítači používají vestavěné terminálové nebo shellové aplikace.
Lear Siegler byl koupen v roce 1986 investičními firmami z Wall Street a jeho divize a technologie byly prodány několika dalším společnostem. V této době byl boom osobních počítačů již v plném proudu a hloupé terminály ztratily na popularitě.
Jakmile byly na počátku 80. let představeny modulární konektory telefonní linky, několik výrobců domácích počítačů včetně Apple, Atari a Commodore prodalo své vlastní telefonní modemy.
WYSE byl později koupen společností DELL, která stále prodává počítače „tenkých klientů“, které jsou v podstatě dnešními nástupci hloupých terminálů. Některé velmi rané systémy UNIX měly namísto displejů papírové terminály.
První modem Apple s přímým připojením pro modulární telefonní systémy v USA.
Po krátkou dobu v 80. letech AT+T vyráběla a prodávala kombinované počítače, které fungovaly jako osobní počítače, hloupé terminály a zahrnovaly integrované telefonní a faxové systémy.
AT+T se koncem 60. a začátkem 70. let významně podílela na vytváření UNIXu v Bellových laboratořích.
Uživatel terminálu UNIX v laboratoři sálových počítačů kolem roku 1978. S laskavým svolením Dave Winer pod licencí Creative Commons Share-Alike.
V průběhu desetiletí se objevilo několik variant skořápka programy v operačním systému UNIX (na kterém je založen macOS).
Shelly jednoduše odkazují na programy příkazového řádku, které umožňují uživatelům UNIXu zadávat textové příkazy, které mají být spouštěny OS. Shell je v podstatě interpret příkazů a skriptovací stroj pro spouštění zadaných příkazů nebo více příkazů v sérii ze souboru.
macOS Terminal je jednoduše aplikace pro macOS, která je umístěna nad programem shell.
V průběhu desetiletí existovalo několik variant unixových shellů, včetně Bourne-again shell, Bash shell z projektu GNU, Korn shell (ksh), C shell (csh), ZShell (zsh), Fish a další.
POSIX je zkratka pro Přenosné rozhraní operačního systému – standard a ochranná známka IEEE. POSIX byl vytvořen, aby poskytoval jediný kompatibilní standard pro operační systémy i aplikační API napříč různými platformami.
Na POSIX je k dispozici mnoho dobrých knih. Existuje také standardní POSIX multitasking programovací knihovna tzv pthreads.
Shelly v macOS
Po celá desetiletí Apple používal prostředí Bash jako standardní prostředí macOS. Když Apple vydal macOS Catalina, změnil výchozí shell na zsh. Obě skořepiny jsou podobné s několika drobnými rozdíly.
Skutečný důvod, proč se Apple rozhodl přejít z Bash na zsh v macOS, je ve skutečnosti o licencování. Bash je nyní pod licencí GPL v3, která není kompatibilní s některými zásadami open source společnosti Apple.
Z velké části, cokoli, co můžete dělat v Bash, můžete dělat také v zsh. Změna tedy není pro většinu uživatelů problémem.
Jediný zásadní rozdíl je v tom, že nějaká skořápka skripty v zsh vyžadují Shebang řádek v horní části každého souboru skriptu, aby správně běžel. Linie shebang je obvykle buď #!/bin/bash nebo #!bin/bash/sh.
Více o shellu zsh se můžete dozvědět na adrese zsh.org.
Raný sálový počítač běžící na ARPANET – předchůdce internetu. Všimněte si hloupého papíru na pravé straně.
Pomocí příkazu historie
zsh zahrnuje history příkaz, který je součástí knihovny historie GNU.
V macOS Terminal, chcete-li použít history příkaz, jednoduše zadejte history do Terminálu a stiskněte Vrátit se. Ve výchozím nastavení je history příkaz vypíše posledních šestnáct příkazů zadaných do terminálu.
Ovládání a mazání historie zsh
Předchozí verze zsh a dalších shellů poskytují a -c příznak, který má být použit s history příkaz. The -c příznak lze použít k vymazání historie terminálu v macOS, ale od macOS Catalina je -c příznak již není podporován pro history příkaz.
Pokud používáte zsh, k vymazání historie Terminálu místo toho použijte -p vlajka, která provádí totéž. Typ history -p do Terminálu a stiskněte Vrátit se.
Veškerá historie shellu je okamžitě vymazána – bez varování.
Dalším způsobem, jak vymazat historii zsh v macOS, je upravit samotný skrytý soubor historie.
Dva skrytý soubory v uživatelské složce vašeho macOS definují, jak se chová zsh a jak se ukládá historie zsh. Tyto soubory jsou .zshrc a .zsh_history.
V macOS začínají skryté soubory a složky v systému souborů tečkou (.““) v názvech souborů. Dříve jsme na AppleInsider podrobně popsali, jak zobrazit nebo skrýt skryté soubory ve Finderu.
Chcete-li začít zobrazovat neviditelné soubory ve Finderu, pokud jste to ještě neudělali, musíte na ploše Finderu zobrazit spouštěcí disketu zapnutím Pevné disky v Finder->Settings z položky nabídky na liště nabídky Finderu.
Zapněte „Pevné disky“ na kartě Obecné v okně Nastavení Finderu.
.zshrc je profil nebo konfigurační soubor, který definuje proměnné prostředí shellu, cesty k jiným souborům shellu nebo příkazovým programům UNIX a export proměnných shellu a prostředí do systému a dalších programů.
.zshrc se načte a načte systémem, když se přihlásíte jako uživatel na vašem Macu.
.zsh_history je prostý textový soubor, který ukládá všechny příkazy, které jste dříve používali v aplikaci Terminál pro macOS. Pokaždé, když napíšete příkaz do Terminálu a stisknete Vrátit sepříkaz se uloží do .zsh_history.
Chcete-li vymazat a resetovat historii zsh, ukončete nejprve Terminál, poté otevřete soubor .zsh_history, odstraňte jeho obsah, uložte jej, poté se odhlaste a přihlaste se zpět do macOS nebo restartujte svůj Mac.
Pokud Terminál neběží, můžete také smazat samotný soubor .zsh_history, poté se odhlásit a znovu přihlásit nebo restartovat. Terminál automaticky znovu vytvoří soubor při příštím spuštění a zadání příkazu na příkazovém řádku.
Programování s knihovnou historie GNU
Ukázalo se, že knihovna historie GNU (GNUHL) je poměrně výkonná a poskytuje své vlastní programovací API v programovacím jazyce C. Většina toho, co zsh dělá v příkazu history, se provádí voláním GNUHL.
GNUHL může číst historii zsh, její uložené příkazy a programově je přenášet jako vstup pro další nové příkazy.
Existuje mnoho online výukových programů programování knihovny historie GNU.
Hlavním typem dat historie pro GNUHL je C structnebo struktura typu _hist_entry:
typedef struct _hist_entry
The typedef deklarace v C definuje nový název typu na základě předdefinovaného typu – v tomto případě HIST_ENTRY je definováno jako stejné jako struct _hist_entry.
typedef v C vám umožňuje zkrátit deklarace proměnných v kódu tím, že nebudete muset používat struct deklarace pro každou deklarovanou proměnnou. Místo toho byste v tomto případě mohli použít HIST_ENTRYcož by kód zkrátilo.
Každé pole v _hist_entry typ je typu char, nebo postava. The char typ v C se používá k reprezentaci jednoho znaku textu (představte si jej jako kontejner pro písmeno, číslo nebo symbol).
A char * proměnná je prostě C ukazatel – proměnná, která obsahuje adresu paměti, která na něco ukazuje. C struny v paměti jsou obvykle reprezentovány ukazatelem na pole char proměnné.
Struktury C umožňují programátorům snadno spojit několik proměnných do jedné větší seskupené proměnné pro snazší přístup později. Každá členská proměnná ve struktuře C se nazývá a pole.
Takže když zadáte řádek v aplikaci Terminal v macOS, shell vytvoří nový _hist_entry pro každý příkaz jej uloží do paměti a zapíše jej *data pole do souboru .zsh_history.
Při příštím otevření Terminálu načte soubor historie zpět a rekonstruuje seznam historie pomocí pole z _hist_entry záznamy v paměti.
V programování C můžete definovat pole proměnných pomocí buď [] syntaxe nebo pomocí ukazatele nebo popisovače na pole v paměti. A Rukojeť v C je ukazatel na jiný ukazatel v paměti a je označen dvojitou hvězdičkou: **.
Rané programování na Macu hojně používalo úchyty a my se nedostaneme do všech podrobností, proč úchyty existují – stačí však říci, že umožňuje operačnímu systému přesouvat proměnné v paměti, aniž by programátoři museli tyto pohyby sledovat.
V GNUHL může být popisovač seznamu historie definován jako jeden popisovač ukazující na začátek pole záznamů historie. V C:
HIST_ENTRY **the_history_list;
GNUHL také udržuje singl Stát struktura, která definuje aktuální stav historické knihovny v daném časovém okamžiku, jak je definováno v _hist_state datový typ:
typedef struct _hist_state
Nebudeme zabíhat do podrobností _hist_state struktura zde. Další informace najdete v dokumentaci k programování knihovny historie GNU.
Stačí říct _hist_state struct obsahuje popisovač pole záznamů historie, posun do pole záznamů historie v bajtech, počet uložených záznamů, počet možných slotů pro záznamy a některé příznaky.
Jakmile budete mít ukazatel nebo úchyt na a _hist_state můžete projít pole záznamů historie a zkontrolovat každý záznam.
K dispozici je také rozsáhlé C API pro manipulaci se seznamem historie včetně přidávání, odstraňování a nahrazování záznamů, získávání stavu, získávání informací o seznamu historie, procházení seznamu a vyhledávání.
Existují také API pro manipulaci se samotným souborem historie. Pomocí programování v prostém C je poměrně snadné číst, vyhledávat a upravovat historii. Programová dokumentace GNUHL poskytuje několik příkladů v C.
Historie UNIXu a terminálů je fascinující – a terminál macOS je účinný způsob, jak používat příkazy UNIX na Macu. Použití historie Terminálu vám umožňuje rychle znovu používat složité příkazy Terminálu, aniž byste je museli pokaždé znovu zadávat.
Zdroj: appleinsider.com