Domanda

La shell predefinita in Mac OS X è bash, che generalmente sono felice di utilizzare.Lo do per scontato.Sarebbe davvero carino se si completasse automaticamente più roba, però, e ne ho sentito parlare bene zsh a questo proposito.Ma non ho davvero voglia di passare ore a giocherellare con le impostazioni per migliorare di poco l'utilizzo della riga di comando, dal momento che la mia vita sulla riga di comando non è poi così male.

(A quanto ho capito, bash può anche essere configurato per il completamento automatico in modo più intelligente.È la configurazione che non mi appassiona molto.)

Passerò a zsh, anche in un numero limitato di casi, mi semplifica la vita?Oppure è una shell migliore solo se dedichi il tempo per imparare Perché è meglio?(Anche degli esempi sarebbero carini :) )


@Rodney Amato & @Vulcaniano desiderosodare due buone ragioni rispettivamente per attenersi bash e passare a zsh.Sembra che dovrò indagare su entrambi!vabbè :)

C'è qualcuno con un'opinione da entrambi i lati della questione?

È stato utile?

Soluzione

Per un uso occasionale probabilmente è meglio restare con bash e installare semplicemente il completamento di bash.

Installarlo è abbastanza semplice, prendi bash-completion-20060301.tar.gz da http://www.caliban.org/bash/index.shtml#completion ed estrarlo con

tar -xzvf bash-completion-20060301.tar.gz

quindi copia il file bash_completion/bash_completion in /etc con

sudo cp bash_completion/bash_completion /etc

che ti chiederà la password.Probabilmente vorrai creare una directory /etc/bash_completion.d per eventuali script di completamento aggiuntivi (ad esempio ho lo script di completamento git lì dentro).

Una volta fatto ciò, l'ultimo passaggio è assicurarsi che il file .bash_profile nella tua directory home abbia

if [ -f /etc/bash_completion ]; then
     . /etc/bash_completion 
fi

al suo interno per caricare il file di completamento quando accedi.

Per testarlo basta aprire un nuovo terminale e provare a completare su cvs e dovrebbe mostrarti le opzioni cvs nell'elenco dei completamenti.

Altri suggerimenti

Personalmente, adoro zsh.

In generale, probabilmente non noterai la differenza tra questo e bash, finché non vorrai fare rapidamente cose come il globbing ricorsivo:

  • **/*.c Per esempio.

Oppure usa gli alias dei suffissi per associare programmi specifici con suffissi diversi, in modo da poterli "eseguire" direttamente.L'alias seguente ti consente di "eseguire" un file sorgente C al prompt semplicemente digitandolo ./my_program.c – che funzionerà esattamente come se avessi digitato vim ./my_program.c.(Una specie di equivalente a fare doppio clic sull'icona di un file.)

  • alias -s c=vim

Oppure stampa i nomi dei file modificati oggi:

  • print *(e:age today now:)

Probabilmente puoi fare tutte queste cose in bash, ma la mia esperienza con zsh è che se c'è qualcosa che voglio fare, probabilmente posso trovarlo in zsh-amanti.Trovo anche il libro 'Da Bash a Z-Shell'davvero utile.

Giocare con la mente con un numero incredibilmente elevato di opzioni è anche molto divertente!

Passa a zsh.Avrai accesso a:

  1. zmv:Tu puoi fare: zmv '(*).mp3' '$1.wma' per migliaia di file.
  2. zcalc:Calcolatrice estremamente comoda, migliore di bc.
  3. zparseopts:One-liner per l'analisi di opzioni complesse arbitrarie fornite al tuo script.
  4. autopushd:Puoi sempre farlo popd Dopo cd per tornare alla directory precedente.
  5. Supporto in virgola mobile.È necessario di tanto in tanto.
  6. Supporto per hash.A volte sono solo una caratteristica fondamentale.

Se tutto ciò per cui desideri utilizzare ZSH è un completamento migliore, la configurazione è piuttosto semplice.Inserisci questo nel tuo ~/.zshrc:

autoload -U zutil      # [1]
autoload -U compinit   # [2]
autoload -U complist   # [3]
compinit

Tuttavia, vale la pena dare un'occhiata a tutte le altre fantastiche funzionalità di ZSH.L'esempio sopra ti fornirà un prompt abbastanza semplice con un buon completamento.Se non vuoi giocare con le configurazioni, ma vuoi vedere cosa può fare ZSH per te, cerca "zshrc" su Google e otterrai alcune configurazioni pronte all'uso per iniziare.

zsh ha una cosa di configurazione della GUI della console.Puoi configurarlo abbastanza rapidamente e facilmente senza dover giocare con i file di configurazione.Non penso che avrai bisogno di molto tempo per configurarlo, probabilmente 10 secondi usando solo le impostazioni predefinite, quindi vai avanti e provalo.

Staale sta parlando di un programma simile a una procedura guidata (CUI) che si avvia automaticamente la prima volta che esegui zsh.Rispondi semplicemente ad alcune domande, visualizza/modifica le impostazioni predefinite ed è configurato per te.

IBM DeveloperWorks dispone di ottime risorse su zsh.

Non ho utilizzato funzionalità molto avanzate e finora non ho riscontrato differenze serie che possano ostacolare chi proviene da bash.

Qualche esempio:

  • !?modellou003CTab> Completerà automaticamente l'ultimo comando nel modello di corrispondenza della cronologia.Molto utile.

  • È possibile configurare un prompt su RHS.Un uso è quello di mantenere un prompt di larghezza fissa sul lato sinistro in modo che tutti i comandi si allineino perfettamente durante la visualizzazione del PWD (o qualsiasi cosa di larghezza variabile) come prompt del lato destro.

  • Puoi reindirizzare l'input da più file (ancora da provare):cat <file1 <file2 <file3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top