Como lidar com a entrada do shell antes de executar no Bash ou no zsh? [fechadas]

0

todos. Eu sou um usuário bash / zsh (Linux). Eu quero perceber as seguintes coisas.

Primeiro, insira o comando no shell bash / zsh, como:

$ maravilhoso:

Na verdade, um programa chamado 'maravilhoso:' não existe. O que eu quero é para lidar com a string de entrada com uma função (ou programa) antes que o shell execute o comando . Mais especificamente, quando a entrada do comando é 'maravilhoso', o shell fornece a entrada para minha função / programa, e isso é tudo que o shell faz.

Existe uma maneira de perceber uma coisa dessas? Qualquer bash ou zsh está ok. Muito obrigado pela sua atenção!

    
por Libin Wen 15.03.2013 / 12:57

2 respostas

2

Você pode definir uma função chamada command_not_found_handle , que será invocada toda vez que um comando inserido não for encontrado. Isso é suportado no bash 4.0 ou posterior; a função zsh equivalente é igual a command_not_found_handler .

Um exemplo simples que intercepta um erro ortográfico de printf , mas deixa qualquer outro comando desconhecido como desconhecido.

command_not_found_handle () {
    if [[ $1 == pirntf ]]; then
        printf "${@:2}"
    else
       printf "Command not found: $1"
       return 127
    fi
}
    
por 15.03.2013 / 14:35
1

Talvez você precise de um alias de Bash . Um alias permite que você defina "maravilhoso" como se fosse um comando. Veja o tutorial . Por exemplo, você pode adicionar:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# -> Prevents accidentally clobbering files.
alias mkdir='mkdir -p'

para o seu arquivo ~ / .bashrc.

No seu caso você pode alias "maravilhoso" para um script que lida com os parâmetros ou entrada, então invoca algum outro comando.

    
por 15.03.2013 / 14:02