GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la tua shell preferita per il lavoro di amministratore di sistema?

Potresti aver sentito l'espressione "quando tutto ciò che hai è un martello, tutti i problemi sembrano chiodi". Ciò non si applica al meraviglioso mondo delle shell POSIX. Per chi non lo sapesse, una schermata nera luminosa piena di testo verde è la stessa di qualsiasi altra schermata nera luminosa piena di testo verde, ma molti amministratori di sistema sanno che la shell che scegli può cambiare ogni aspetto del modo in cui interagisci con il tuo computer.

Non è raro scoprirlo nel modo più duro, di solito sotto pressione. Una volta che si verifica l'impotenza di inserire la sintassi errata in una shell sconosciuta, tuttavia, si sviluppa rapidamente un attaccamento a quella in cui si è a proprio agio. Anche così, le shell più popolari hanno virtù che fanno sì che diversi amministratori di sistema le impostino come interfaccia predefinita . Se trascorri un po' di tempo con ciascuno di essi, potresti scoprire di sviluppare un nuovo preferito, o almeno di poterti sistemare in una shell di backup affidabile.

Ecco alcune delle shell più popolari e ciò che gli utenti amano di loro.

Ash e Dash

La shell Almquist è stata sviluppata come un clone della famosa shell Bourne (da non confondere con la Bourne Again Shell, altrimenti nota come Bash). È stato mantenuto intenzionalmente leggero, probabilmente per lo stesso motivo per cui la modifica delle righe e la cronologia erano originariamente escluse:Kenneth Almquist riteneva che le funzioni UX extra appartenessero al di fuori della shell. Decenni dopo, il guscio è ancora un guscio piccolo e di base preferito. È stato fornito con le versioni iniziali di Android ed è stata per molti anni una shell predefinita comune per l'ambiente di avvio minimo delle distribuzioni Linux.

Come con molte shell POSIX, l'uso di Ash è nominalmente familiare a chiunque sia abituato a una console. Digiti i comandi; ottieni output. Alcune delle funzionalità extra sono presenti, mentre altre mancano. Ad esempio, se sei abituato a usare le scorciatoie da tastiera in stile Emacs o Vim, le troverai notevolmente assenti da Ash. Tuttavia, puoi abilitarli (purché siano stati inclusi in fase di compilazione) con il -E (per Emacs) o -V (per Vim) opzione. Storia (in realtà il fc builtin command in Ash) non è scontato, a seconda di come Ash è stato compilato. Non ci sono array e il comando integrato trap non accetta opzioni.

Dash è una shell Almquist, ed è, in effetti, un port di Ash da NetBSD a Debian Linux, e sta per Debian Almquist Shell .

La caratteristica migliore di Ash è anche la sua più grande limitazione. È una shell minimale, quindi se stai cercando la semplicità, allora questa è la shell che fa per te.

Bash

La Bourne-Again Shell (Bash) è stata creata dal progetto GNU per sostituire la shell proprietaria Bourne (che a sua volta è stata creata per sostituire la shell di Ken Thompson). Oggi, Bash è più di una semplice shell:è un linguaggio di programmazione legittimo, uno degli strumenti principali dell'amministratore di sistema pieno di risorse e quasi un'icona culturale per i non programmatori che necessitano di un'automazione rapida e sporca. Se puoi trascorrere una giornata in una shell Linux, puoi sviluppare uno script Bash per sostituirti. È semplice, diretto e sorprendentemente potente, con funzionalità che includono array, uno stack di directory, trap, analisi di sottostringhe, scorciatoie da tastiera Emacs o Vim e molto altro.

Un argomento comune contro Bash è la sua dimensione, che sul mio sistema è di circa 1 MB rispetto ai 200 KB di Ash. Un altro è la sua complessità. Bash è così ricco di funzionalità che mentre uno script scritto in POSIX puro verrà eseguito in Bash, lo stesso non è sempre vero per uno script Bash che tenta di essere eseguito in una shell POSIX pura. Sebbene Bash abbia una modalità POSIX, i suoi "bashismi" extra sono solitamente troppo attraenti per essere ignorati. La buona notizia è che Bash è open source, quindi può essere facilmente installato per eseguire uno script pieno di Bash-ismi, ma alcuni utenti si oppongono comunque in linea di principio.

Bash è una shell flessibile e potente e ha sostituito altre shell come predefinite su molti sistemi. Impara Bash e sperimenterai una shell moderna e ricca di funzionalità che mostra ogni segno di diventare sempre più amichevole mentre continua a svilupparsi.

[ Scarica ora:una guida per l'amministratore di sistema allo scripting Bash. ]

casella occupata

BusyBox è un binario multi-chiamata che combina molte utilità POSIX comuni in un unico eseguibile. In altre parole, è il binario all-in-one dell'interfaccia utente POSIX principale. Se installato dal codice sorgente, inserisce una busybox eseguibile nella libreria del tuo sistema e dovresti collegarti ad esso durante la creazione di singoli comandi per te e i tuoi utenti. Ad esempio:

$ 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]...

In meno di 1 MB, ottieni circa 400 comandi, inclusi ls , cd , cp , mv , grep , ps , passwd , spegnimento , printf , sed , utilità di compressione, gestione dei processi e molto altro. La maggior parte di questi comandi sono minimi rispetto ai loro equivalenti GNU, ma a seconda del caso d'uso sono probabilmente sufficienti. Allo stesso modo, la shell interattiva di Busybox è Ash, quindi soddisfa le specifiche POSIX e fornisce poco altro.

Csh o Tcsh

La shell C (csh ), e la sua successiva incarnazione, tcsh , usa una sintassi simile a C (o C++ o Java, nel caso tu ne abbia più familiarità). Ad esempio, ecco un if loop in Bash:

v=1

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

Ed ecco lo stesso in Csh:

set v=1

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

La differenza è sottile, ma per le persone abituate alla sintassi del C e di linguaggi simili, ci sono abbastanza piccole differenze per migliorare notevolmente la loro esperienza. Mancano anche alcuni comandi integrati. Ad esempio, non esiste un type o hash comandi in tcsh e non puoi definire le tue funzioni.

Mentre csh soffre un po' della sua età, tcsh è un buon aggiornamento e ha la maggior parte delle stesse funzionalità di Bash, anche se di tanto in tanto con una sintassi diversa.

Pesce

La conchiglia di pesce si definisce con orgoglio "una conchiglia moderna per gli anni '90". Ha tutti i vantaggi di shell robuste come Bash e Zsh, ma con funzionalità aggiuntive come l'evidenziazione della sintassi, un fish_config comando e molto altro. Il suo scopo è fornire un contesto aggiuntivo all'utente e un migliore sistema di gestione della configurazione rispetto a un singolo .bashrc .

Ci sono lievi differenze nella sintassi qua e là. Ad esempio, questa è una definizione di funzione per Bash:

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

Lo stesso in Fish, tuttavia:

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

I fan di Fish adorano le sue semplici capacità di creazione di temi e il modo in cui imposta per impostazione predefinita una directory di file di configurazione anziché un .bashrc file che nella migliore delle ipotesi genera altri dot-file.

Corno

La shell Korn (ksh ) è stato sviluppato da David Korn e rilasciato nel 1983. Mentre sia Bash che tcsh sono state fornite come shell predefinite per i più diffusi sistemi POSIX, la shell Korn è rimasta in gran parte una shell "alternativa". Ma come shell alternative, ksh ha fatto bene a se stessa e quando Microsoft ha presentato Powershell alle conferenze sulla tecnologia, ha citato la shell Korn come la sua principale influenza.

Esistono diverse versioni della shell Korn (mksh, ksh93, ksh93u+, ksh2020 e altre), ma i rami ufficiali sono mantenuti su Github di AT&T.

Per gli utenti Bash, ksh è probabile che sembri abbastanza familiare. Leggere un tutorial sullo scripting Korn è quasi come continuare a leggere sullo scripting Bash. Puoi definire le tue funzioni, creare alias, scrivere cicli e persino opzioni di completamento a schede del programma. Le associazioni di tasti di Emacs sono abilitate per impostazione predefinita, ma puoi passare a vi combinazioni di tasti usando -o vi opzione all'avvio o inserendo set -o vi nel tuo ~/.environ.ksh file di configurazione.

Quello che manca a Kornshell, probabilmente non lo noterai immediatamente. Ad esempio, non puoi abilitare o disabilitare i comandi integrati e c'è un comando integrato chiamato whence che fa lo stesso lavoro di which eseguibile. Non c'è nessun typeset comando, ma Kornshell ha array con le funzionalità di ricerca più essenziali disponibili. In altre parole, mentre ci sono piccole differenze, ksh è facile da usare per chiunque sia abituato a Bash o Fish o Zsh.

Zsh

La Z Shell (zsh ) è una shell POSIX interattiva simile a Bourne nota per la sua abbondanza di funzionalità innovative. Gli utenti di Z Shell spesso citano le sue numerose comodità e le attribuiscono una maggiore efficienza e un'ampia personalizzazione. Quando viene lanciato per la prima volta, Zsh offre diverse opzioni di configurazione, come la dimensione della cronologia, le associazioni di tasti (Emacs o Vim) e quante funzionalità extra desideri. Ad esempio, puoi creare il cd comando implicito consentendo a Zsh di avviare una modifica della directory quando si fornisce un percorso non eseguibile senza alcun comando. Ci sono diverse funzionalità extra e puoi impostarle o annullarle modificando il .zshrc file di configurazione.

Ci sono alcune sottili differenze nella sintassi tra Bash e Zsh, ma pochi sono i comandi che sono spesso script, quindi le probabilità che tu debba adattare gli script sono basse. Ad esempio, per disabilitare un comando integrato in Bash:

$ enable -n cd

In Zsh, il comando è un po' più intuitivo:

$ disable cd

Per ricostruire i percorsi dei comandi memorizzati nella cache in Bash, devi cancellare quello esistente, ma in Zsh c'è un'opzione per questo:

$ hash -f

Ci sono anche piccoli vantaggi per coloro che migrano da altre conchiglie. Ad esempio, puoi usare il whence comando in Z Shell, che sarebbe familiare agli utenti della shell Korn.

Zsh è un divertente e dinamico mix di vecchie e nuove funzionalità e ha una vivace comunità che sviluppa temi e plugin per questo. Questi sono facili da installare e aggiungono ulteriori funzionalità alla tua shell, rendendo Z Shell un contendente per la shell più flessibile disponibile.

Scegli le tue conchiglie

Come al solito con l'open source, in realtà non devi scegliere solo uno di un determinato strumento. Anche se sono un devoto utente Bash a casa, spesso per impostazione predefinita utilizzo tcsh per abitudine al lavoro, perché molti dei copioni nell'industria degli effetti visivi sono stati scritti per C Shell. Ancora oggi, scrivo compulsivamente hook Git in tcsh per questo motivo.

Non devi necessariamente giustificare la tua scelta di shell. Usa ciò che funziona meglio per te e il tuo team. Finché è open source, hai fatto un'ottima scelta.

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. Qual è il tuo trucco da terminale Linux preferito?

  2. Qual è il tuo gestore di pacchetti Linux preferito?

  3. Buon anniversario GNOME:Qual è la tua versione preferita?

  4. Qual è il tuo strumento di registrazione dello schermo preferito per Linux?

  5. Qual è il tuo emulatore di terminale Linux preferito?

Qual è la tua distribuzione Linux preferita?

Amministratori di sistema Linux:qual è il tuo IDE preferito?

Perché il documento Parent Shell Here non funziona per il sottocomando in Dash ma Bash funziona?

12 Esempi di Bash For Loop per gli script della tua shell Linux

I 10 migliori giochi per Steam Deck:qual è il tuo preferito?

Qual è la differenza tra &> e >&in bash?