O shell padrão no Mac OS X é o bash
que geralmente gosto de usar. Eu apenas tomo como garantido. Seria muito bom se ele completasse automaticamente mais coisas , e eu ouvi coisas boas a zsh
esse respeito. Mas, na verdade, não tenho a tendência de passar horas mexendo nas configurações para melhorar um pouco o uso da linha de comando, já que minha vida na linha de comando não é tão ruim.
(Pelo que entendi, bash
também pode ser configurado para concluir automaticamente de forma mais inteligente. É a configuração em que não estou muito interessada.)
Mudar para zsh
, mesmo em um pequeno número de casos, facilitará minha vida? Ou é apenas uma concha melhor se você dedicar tempo para saber por que é melhor? (Exemplos também seriam bons :)
)
@ Rodney Amato
e @ Vulcan Eager
dão duas boas razões para se manter bash
e mudar para respectivamente zsh
. Parece que vou ter que investigar os dois! Ah bem:)
Existe alguém com uma opinião de ambos os lados da discussão?
Respostas:
Para uso casual, você provavelmente está melhor aderindo ao bash e apenas instalando a conclusão do bash.
A instalação é bem fácil, pegue o bash-conclusão-20060301.tar.gz em http://www.caliban.org/bash/index.shtml#completion e extraia-o com
copie o arquivo bash_completion / bash_completion para / etc com
que solicitará sua senha. Você provavelmente desejará criar um diretório /etc/bash_completion.d para quaisquer scripts de conclusão adicionais (por exemplo, eu tenho o script de conclusão do git).
Feito isso, a última etapa é garantir que o arquivo .bash_profile no diretório inicial tenha
nele para carregar o arquivo de conclusão quando você efetuar login.
Para testá-lo, basta abrir um novo terminal e tentar concluir no cvs e ele deve mostrar as opções de cvs na lista de conclusões.
fonte
brew install bash-completion
.brew tap homebrew/versions; brew install bash-completion2
Pessoalmente, eu amo zsh.
Geralmente, você provavelmente não notará a diferença entre ele e o bash, até querer fazer rapidamente coisas como globbing recursivo:
**/*.c
por exemplo.Ou use aliases de sufixo para associar progs específicos a sufixos diferentes, para que você possa "executá-los" diretamente. O alias abaixo permite "executar" um arquivo de origem C no prompt simplesmente digitando
./my_program.c
- o que funcionará exatamente como se você digitassevim ./my_program.c
. (Tipo equivalente ao clique duplo no ícone de um arquivo.)alias -s c=vim
Ou imprima os nomes dos arquivos modificados hoje:
print *(e:age today now:)
Você provavelmente pode fazer todas essas coisas no bash, mas minha experiência com o zsh é que, se há algo que eu quero fazer, provavelmente o encontro com os amantes do zsh . Também acho o livro ' From Bash to Z-Shell ' realmente útil.
Brincar com o número incrivelmente grande de opções também é divertido!
fonte
find
oulocate
para pesquisar recursivamente. Mas, ao permitir que outro programa faça a pesquisa, você perde os limites entre nomes (a menos que seja cuidadoso), bem como o acesso às habilidades internas de globbing do shell e basicamente precisa se contentar com o que o outro programa fornece, ou tubo de sua saída através de um programa comogrep
,awk
oused
(todos bastante complexo, por direito próprio).globstar
opção no bash para permitir pesquisas recursivas, como mencionado acima. Tenho certeza de que não foi o caso quando esta resposta foi escrita.glob_star_short
inzsh
, agora você pode fazer**.c
, que é interpretado como**/*.c
.zsh 5.3
e entrocommand not found: age
comprint *(e:age today now:)
Mude para zsh. Você terá acesso a:
zmv
: Você pode fazer:zmv '(*).mp3' '$1.wma'
para milhares de arquivos.zcalc
: Calculadora extremamente confortável, melhor quebc
.zparseopts
: Uma linha para analisar opções complexas arbitrárias fornecidas ao seu script.autopushd
: Você sempre pode fazer issopopd
depoiscd
para voltar ao diretório anterior.fonte
autoload zcalc; zcalc
(embora eu próprio digite apenaspython
sempre que precisar de uma calculadora).zmv
ezcalc
não estão disponíveis imediatamente. Não está claro quezmv
apenas renomear arquivos; Pensei que você estivesse convertendo o formato. Eu não sei o que "hashes" suporte significa. Este post parece ser "útil" apenas para pessoas que já conhecem o zsh.bash
4 foi lançado apenas alguns meses antes desta resposta.Se tudo o que você deseja usar o ZSH é para uma melhor conclusão, a configuração é bastante fácil. Coloque isso em seu ~ / .zshrc:
No entanto, vale a pena conferir todos os outros ótimos recursos do ZSH. O exemplo acima fornecerá um prompt bastante claro e com boa conclusão. Se você não quiser mexer nas configurações, mas quer ver o que o ZSH pode fazer por você, pesquise no Google por "zshrc" e você estará pronto para usar as configurações para começar.
fonte
O zsh tem uma coisa de configuração da GUI do console. Você pode configurá-lo rapidamente e facilmente, sem precisar mexer nos arquivos de configuração. Eu não acho que você precisará de muito tempo para configurá-lo, provavelmente 10 segundos usando apenas os padrões, então vá em frente e experimente.
fonte
zsh
sem nenhum arquivo de ponto relacionado. Para obtê-lo manualmente, tenteautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Staale está falando sobre um assistente como programa (CUI), que é executado automaticamente na primeira vez em que você executa o zsh. Basta responder a algumas perguntas, visualizar / alterar os padrões e está configurado para você.
O IBM developerWorks possui ótimos recursos no zsh.
Eu não usei recursos muito avançados e até agora não encontrei diferenças sérias que dificultariam alguém vindo do bash.
Alguns exemplos:
!? pattern <Tab> será preenchido automaticamente até o último comando no padrão de correspondência do histórico. Muito útil.
Você pode configurar um prompt no RHS. Um uso é manter um prompt de largura fixa no lado esquerdo, para que todos os comandos se alinhem bem ao exibir o pwd (ou qualquer coisa de largura variável) como o prompt do lado direito.
Você pode redirecionar a entrada de vários arquivos (ainda para tentar isso): cat <arquivo1 <arquivo2 <arquivo3
fonte