it-swarm-pt.tech

Recursos exclusivos do bash em comparação com o zsh

Eu sou um usuário zsh há algum tempo (antes desse tcsh e antes desse csh). Estou muito feliz com isso, mas fiquei imaginando se existem recursos interessantes do bash que não existem no zsh. E, inversamente, existem recursos zsh que não existem no bash. Minha sensação atual é que o bash é melhor:

  • Se você já está familiarizado com ele e não deseja aprender nova sintaxe.
  • Por padrão, ele existe na maioria das máquinas * nix, enquanto o zsh pode ser uma instalação extra.

Não estou tentando iniciar uma batalha religiosa aqui, e é por isso que estou apenas procurando por recursos que existem em apenas uma das conchas.

67
Tim

o zsh é para vulcanos. ;-)

Sério: o bash 4.0 tem alguns recursos anteriormente encontrados apenas no zsh, como ** globbing:

% ls /usr/src/**/Makefile

é equivalente a:

% find /usr/src -name "Makefile"

mas obviamente mais poderoso.

Na minha experiência, a conclusão programável do bash é um pouco melhor que a do zsh, pelo menos em alguns casos (completando pacotes debian para o aptitude, por exemplo).

bash tem Alt + . inserir !$

zsh has expansion of all variables, so you can use e.g.

% rm !$<Tab>
</code>

por esta. O zsh também pode expandir um comando em backtics, então

% cat `echo blubb | sed 's/u/a/'`<Tab>

rendimentos

% cat blabb

Acho muito útil expandir rm *, como você pode ver o que seria removido e talvez possa remover um ou dois arquivos do comando para impedir que sejam excluídos.

Também é bom: usar a saída de comandos para outros comandos que não lêem stdin, mas esperam um nome de arquivo:

% diff <(sort foo) <(sort bar)

Pelo que li, o bash-complete também suporta a conclusão de nomes de arquivos remotos pelo ssh se você usar o ssh-agent, o que costumava ser um bom motivo para mudar para o zsh.

Aliases no zsh podem ser definidos para funcionar em toda a linha, e não apenas no começo:

% alias -g ... = "../ .." 
% cd ... 
40
0x89

Gostaria de salientar que o bash não é instalado por padrão no FreeBSD, OpenBSD ou NetBSD, e também não é instalado por padrão no Solaris 10 (o OpenSolaris o tem como padrão), da última vez que usei o AIX, ou Servidores HP-UX, também não foi instalado por padrão.

Além disso, no OpenSolaris/bin/sh NÃO é o bash. É ksh. Os maiores problemas que tenho como portador de software são pessoas que assumem que o/bin/sh é bash e que ele aceita a sintaxe estendida do bash. Embora esse pareça ser o caso na maioria das distribuições Linux, não é o caso em outros lugares e é realmente irritante.

16
X-Istence

Embora eu seja um usuário do bash, acho muito interessante um dos recursos do zsh: RPS1.

Lembrar:

  • PS1: o prompt alinhado à esquerda
  • RPS1: o prompt alinhado à direita

Amostra:

Ao usar algo como

PS1=’%B(%h) %m%#%b ‘
RPS1=’(%20<…<%~)'

Você recebe o prompt à esquerda e o diretório atual pressionado à direita. Até desaparece quando a linha atual está ficando muito longa! É porque o zsh é inteligente o suficiente para dar baixa prioridade ao RPS1.

Você pode ver uma captura de tela deste exemplo em http://imgur.com/OAZhC .

12
Chucky

Zsh tem correção ortográfica. Se você receber uma carta (ou mais) de folga, ela entenderá o que você quis dizer.

Ele também possui uma conclusão de guia mais robusta, da qual eu gosto.

O Zsh possui um utilitário de configuração interativo para configurá-lo da maneira que desejar.

Alguns testes de velocidade dizem que o zsh é mais rápido, mas não notei nenhuma diferença.

9
Magus

Não conheço nenhum recurso do bash que o zsh não suporte. O objetivo do design do zsh parece incluir o suporte a todos os recursos adicionados pelo bash.

Eu ainda uso o bash em vez do zsh. Eu raramente encontro recursos interessantes que o zsh suporta que o bash não. Problemas ocasionais com o zsh ao longo dos anos, ou ele não existe em certos sistemas, fizeram com que não valesse a pena fazer a transição.

Finalmente posso usar o mesmo Shell em todos os sistemas Unix, não vale a pena quebrar isso por recursos que nunca vou usar.

Os recursos presentes no zsh que não estão presentes no bash parecem ser bonitos, mas não os que importariam no dia-a-dia.

6
carlito

o bash possui muitos recursos que costumavam estar apenas no zsh. Você pode ter 'conclusão de guia inteligente' agora com o bash, como qualquer usuário recente do ubuntu descobriu.

3
Rory

Substituição de processo e globbing estendido são os dois recursos que eu mais sentiria falta. As configurações do prompt também são muito legais - é possível ver o nível de aninhamento quando você digita instruções complexas nas linhas de comando. O carregamento automático torna viável a inclusão de muitas funções em todos os Shell.

1
tdavies

Sou fã do zsh por causa do suporte ao modo vi, mas estou descobrindo que ele não é muito usado. Acho que li que o zsh gosta de pegar recursos populares de outros shells e combiná-los (para que coisas específicas do bash e específicas do csh estejam disponíveis no zsh).

Alguém também disse que estou flexionando meu fator nerd usando zsh, mas não posso confirmar ou negar esse boato.

0
Milner