Executa um comando após o outro em zsh quando o Ctrl-C é pressionado

4

Eu recentemente mudei para zsh de bash (no OSX). Eu tenho um alias bash que eu usei para executar um programa depois outro (mesmo se o programa anterior sai com erro) no bash. Eu não posso descobrir como replicar isso no zsh.

bash alias eu gostaria de replicar é:

gulp ; say "Gulp has crashed"

Alguém sabe como reescrever isso em zsh?

Editar:

A diferença entre zsh e bash que estou recebendo é essa; com Bash pressionando ctrl-c quando o gulp está sendo executado, pára o gulp e depois passa para o próximo comando.

em Zsh, pressionar ctrl-c parece parar toda a linha de comando.

O propósito do meu uso desta linha é obter um aviso sonoro quando o gulp parar de rodar em segundo plano. (para usuários não-mac, o comando say é um conversor de texto para fala)

    
por ravenshill 31.05.2016 / 18:26

1 resposta

3

Eu proponho usar uma função em vez disso:

mygulp () { trap : INT; gulp || say "Gulp has crashed"; }

O trap captará Ctrl-C (sinal de "interrupção") e executará o comando : (ou seja, nada).

Observe também || em vez de ; - assim, se gulp sair normalmente (você não pressionou ctrl-c), nada acontece, mas se o código de saída não for zero, o comando say será iniciado .

Esta função deve funcionar tanto em bash como em zsh , depois você poderá remover o último ; antes de fechar o colchete direito.

    
por 31.05.2016 / 20:57