GNU/Linux >> Znalost Linux >  >> Linux

Jaký je váš oblíbený shell pro práci správce systému?

Možná jste už slyšeli výraz „když máte jen kladivo, všechny problémy vypadají jako hřebíky“. To neplatí pro nádherný svět POSIX shellů. Pro nezasvěcené je jedna zářící černá obrazovka se zeleným textem stejná jako jakákoli jiná zářící černá obrazovka se zeleným textem, ale mnoho systémových administrátorů ví, že shell, který si vyberete, může změnit každý aspekt vaší interakce s počítačem.

Není neobvyklé to zjistit tvrdě, obvykle pod tlakem. Jakmile však zažijete neschopnost zadat nesprávnou syntaxi do neznámého shellu, rychle si vytvoříte přílohu k tomu, ve kterém se budete cítit dobře. I tak má většina populárních shellů přednosti, které způsobí, že je různí správci systému nastaví jako výchozí rozhraní. . Pokud s každým z nich strávíte trochu času, možná zjistíte, že si vytvoříte nového oblíbeného, ​​nebo že se alespoň usadíte ve spolehlivém záložním prostředí.

Zde jsou některé z nejoblíbenějších shellů a to, co na nich uživatelé milují.

Ash and Dash

Almquist shell byl vyvinut jako klon slavného Bourne shellu (neplést s Bourne Again Shell, jinak známý jako Bash). Byl ponechán záměrně lehký, pravděpodobně ze stejného důvodu, proč byly editace řádků a historie původně vyloučeny:Kenneth Almquist měl pocit, že další funkce UX patří mimo shell. O několik desítek let později je shell stále oblíbeným malým a jednoduchým shellem. Byl dodán s počátečními verzemi Androidu a po mnoho let byl běžným výchozím prostředím pro minimální spouštěcí prostředí linuxových distribucí.

Stejně jako u mnoha shellů POSIX je používání Ash nominálně známé každému, kdo je zvyklý na konzoli. Píšete příkazy; získáte výstup. Některé z funkcí navíc jsou zde, zatímco jiné chybí. Pokud jste například zvyklí používat klávesové zkratky ve stylu Emacs nebo Vim, zjistíte, že v Ash znatelně chybí. Můžete je však povolit (pokud byly zahrnuty v době kompilace) pomocí -E (pro Emacs) nebo -V (pro Vim) možnost. Historie (ve skutečnosti fc vestavěný příkaz v Ash) také není daný, v závislosti na tom, jak byl Ash zkompilován. Neexistují žádná pole a vestavěný příkaz trap nepřijímá žádné možnosti.

Dash je shell Almquist a ve skutečnosti je portem Ash z NetBSD do Debian Linuxu a znamená Debian Almquist Shell .

Nejlepší vlastností Ashe je také jeho největší omezení. Je to minimální shell, takže pokud hledáte jednoduchost, pak je to shell pro vás.

Bash

Bourne-Again Shell (Bash) byl vytvořen projektem GNU, aby nahradil proprietární Bourne shell (který sám byl vytvořen, aby nahradil shell Kena Thompsona). Dnes je Bash víc než jen shell:je to legitimní programovací jazyk, jeden z hlavních nástrojů vynalézavého správce systému a téměř kulturní ikona pro neprogramátory, kteří potřebují rychlou a špinavou automatizaci. Pokud můžete strávit den v prostředí Linuxu, můžete vytvořit skript Bash, který vás nahradí. Je jednoduchý, přímý a překvapivě výkonný s funkcemi, které zahrnují pole, zásobník adresářů, pasti, analýzu podřetězců, klávesové zkratky Emacs nebo Vim a mnoho dalšího.

Jeden společný argument proti Bash je jeho velikost, která je na mém systému asi 1 MB oproti 200 KB u Ash. Další je jeho složitost. Bash je tak bohatý na funkce, že zatímco skript napsaný v čistém POSIX poběží v Bash, to samé neplatí vždy pro skript Bash, který se pokouší spustit v čistém prostředí POSIX. Zatímco Bash má režim POSIX, jeho další „bashimy“ jsou obvykle příliš přitažlivé na to, aby je ignorovali. Dobrou zprávou je, že Bash je open source, takže jej lze snadno nainstalovat pro spuštění skriptu plného Bash-ismů, ale přesto někteří uživatelé z principu protestují.

Bash je flexibilní a výkonný shell a na mnoha systémech nahradil jiné shelly jako výchozí. Naučte se Bash a zažijete moderní a na funkce bohatý shell, který vykazuje všechny známky toho, že se s dalším vývojem stává přátelštější a přátelštější.

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

Busybox

BusyBox je multi-call binární soubor, který kombinuje mnoho běžných POSIX utilit do jednoho spustitelného souboru. Jinými slovy, je to základní binární vše v jednom uživatelském rozhraní POSIX. Při instalaci ze zdrojového kódu umístí busybox spustitelný v knihovně vašeho systému a očekává se, že se na něj budete odkazovat při vytváření jednotlivých příkazů pro sebe a své uživatele. Například:

$ ln --symbolic /lib64/busybox/busybox gzip
$ gzip --help 
BusyBox v1.28.1 (2020-07-13 11:42:31 NZST) multi-call binary.

Usage: gzip [-cfkdt123456789] [FILE]...

Do 1 MB získáte přibližně 400 příkazů, včetně ls , cd , cp , mv , grep , ps , passwd , vypnout , printf , sed , komprimační nástroje, řízení procesů a mnoho dalšího. Většina těchto příkazů je minimální ve srovnání s jejich ekvivalenty GNU, ale v závislosti na vašem případu použití jsou pravděpodobně dostatečné. Stejně tak interaktivní shell Busyboxu je Ash, takže splňuje specifikace POSIX a poskytuje jen málo dalšího.

Csh nebo Tcsh

The C Shell (csh ) a jeho pozdější inkarnace, tcsh , použijte syntaxi podobnou C (nebo C++ nebo Java, pokud jste s nimi více obeznámeni). Zde je například if smyčka v Bash:

v=1

if [[ $v == 1 ]]
  then
  echo "verbose"
fi

A tady je to samé v Csh:

set v=1

if ($v == 1) then
  echo "verbose"
endif

Rozdíl je nepatrný, ale pro lidi, kteří jsou zvyklí na syntaxi C a podobných jazyků, existuje dostatek malých rozdílů, aby se jejich zkušenosti znatelně zlepšily. Chybí také některé vestavěné příkazy. Například neexistuje žádný type nebo hash příkazy v tcsh a nemůžete definovat své vlastní funkce.

Zatímco csh poněkud trpí svým stářím, tcsh je dobrá aktualizace a má většinu stejných schopností jako Bash, i když čas od času s nějakou jinou syntaxí.

Ryby

Skořápka Fish si hrdě říká „moderní skořápka 90. let“. Má všechny výhody robustních shellů, jako je Bash a Zsh, ale s přidanými funkcemi, jako je zvýraznění syntaxe, fish_config příkaz a mnoho dalšího. Jeho cílem je poskytnout uživateli další kontext a lepší systém správy konfigurace než jen jeden .bashrc .

Tu a tam jsou drobné rozdíly v syntaxi. Toto je například definice funkce pro Bash:

function sshrm() { 
  /usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
}

Totéž v Fish:

function sshrm
  /usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
end

Fanoušci hry Fish milují její snadné možnosti vytváření motivů a způsob, jakým je výchozí adresář konfiguračních souborů spíše než .bashrc soubor, který je v nejlepším případě zdrojem jiných tečkových souborů.

Korn

Shell Korn (ksh ) byl vyvinut Davidem Kornem a vydán v roce 1983. Zatímco Bash i tcsh byly dodávány jako výchozí shelly pro populární systémy POSIX, Korn shell z velké části zůstal "alternativním" shellem. Ale pokud jde o alternativní shelly, ksh udělal dobře sám sobě, a když Microsoft představil Powershell na technologických konferencích, citovali Korn shell jako jeho hlavní vliv.

Existuje několik různých verzí shellu Korn (mksh, ksh93, ksh93u+, ksh2020 a další), ale oficiální větve jsou udržovány na Github společnosti AT&T.

Pro uživatele Bash, ksh pravděpodobně vám bude připadat docela povědomý. Číst výukový program o skriptování Korn je téměř stejné jako číst dál o skriptování Bash. Můžete definovat své vlastní funkce, vytvářet aliasy, zapisovat smyčky a dokonce i možnosti dokončování na záložkách programu. Ve výchozím nastavení jsou klávesové zkratky Emacs povoleny, ale můžete přepnout na vi klávesové zkratky pomocí -o vi možnost při spuštění nebo umístěním set -o vi ve vašem ~/.environ.ksh konfigurační soubor.

To, co Kornshell postrádá, si asi hned nevšimnete. Například nemůžete povolit nebo zakázat vestavěné příkazy a existuje vestavěný příkaz s názvem whence který dělá stejnou práci jako which spustitelný. Neexistuje žádná typeset příkaz, ale Kornshell má pole s nejzákladnějšími vyhledávacími funkcemi. Jinými slovy, i když existují drobné rozdíly, ksh je snadno použitelný pro každého, kdo je zvyklý na Bash nebo Fish nebo Zsh.

Zsh

The Z Shell (zsh ) je interaktivní POSIX shell podobný Bourneovi, který je známý množstvím inovativních funkcí. Uživatelé Z Shell často citují jeho četné vymoženosti a připisují mu zásluhy za zvýšenou efektivitu a rozsáhlé přizpůsobení. Při prvním spuštění nabízí Zsh několik možností konfigurace, jako je velikost vaší historie, klávesové zkratky (Emacs nebo Vim) a kolik dalších funkcí chcete. Můžete například vytvořit cd příkaz je implicitní tím, že umožňuje Zsh zahájit změnu adresáře, když zadáte nespustitelnou cestu bez příkazu. Existuje několik dalších funkcí a můžete je nastavit nebo zrušit úpravou souboru .zshrc konfigurační soubor.

Mezi Bash a Zsh existuje několik drobných rozdílů v syntaxi, ale jen málo příkazů je často skriptováno, takže pravděpodobnost, že budete muset skripty přizpůsobit, je nízká. Chcete-li například zakázat vestavěný příkaz v Bash:

$ enable -n cd

V Zsh je příkaz trochu intuitivnější:

$ disable cd

Chcete-li znovu vytvořit cesty příkazů uložených v mezipaměti v Bash, musíte vymazat stávající, ale v Zsh je pro to možnost:

$ hash -f

Existují také malé výhody pro ty, kteří migrují z jiných skořápek. Můžete například použít whence příkaz v Z Shell, který by byl známý uživatelům shellu Korn.

Zsh je zábavný a dynamický mix starých a nových funkcí a má živou komunitu, která pro něj vyvíjí témata a pluginy. Ty se snadno instalují a přidávají do vašeho shellu ještě další funkce, takže Z Shell je uchazečem o nejflexibilnější dostupný shell.

Vyberte si mušle

Jak je obvyklé u open source, nemusíte si ve skutečnosti vybrat pouze jeden z jakéhokoli daného nástroje. I když jsem doma oddaným uživatelem Bash, často jako výchozí používám tcsh ze zvyku v práci, protože mnoho scénářů v průmyslu vizuálních efektů bylo napsáno pro C Shell. Dodnes píšu Git hooks v tcsh z toho důvodu.

Svůj výběr skořápky nemusíte nutně zdůvodňovat. Používejte to, co je pro vás a váš tým nejlepší. Pokud je to open source, udělali jste skvělou volbu.

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]


Linux
  1. Jaký je váš oblíbený emulátor terminálu?

  2. Jaký je váš oblíbený nástroj pro nahrávání obrazovky pro Linux?

  3. Jaký je váš oblíbený emulátor terminálu Linux?

  1. Jaká je vaše oblíbená desktopová linuxová distribuce?

  2. Co pro vás může udělat shell dotfile

  3. Jaký je váš oblíbený správce oken Linuxu?

  1. Jaký je váš oblíbený trik s linuxovým terminálem?

  2. Jaký je váš oblíbený linuxový terminálový trik?

  3. 5 nejlepších rozšíření prostředí GNOME pro vaši plochu Linuxu