Procurando uma maneira de agrupar um comando e fornecer seu próprio shell

2

Estou trabalhando com a linha de comando executando os mesmos comandos muitas vezes manualmente seguindo o mesmo padrão. Agora estou procurando uma maneira de simplificar isso apenas digitando o comando apenas uma vez.

Vamos dar uma olhada em um exemplo normal de janela de encaixe:

docker ps
docker ps -a
docker ps -l
docker stop x 
docker start x 
docker start y 
docker logs y
docker logs -f z

Este exemplo também se aplica a muitos outros comandos, como git, brew, gulp, gcloud.

Agora estou procurando algum tipo de shell wrapper de comando, o que me permite escrever with docker que irá agrupar qualquer comando em um shell aninhado / secundário.

Então eu não preciso prefixar o comando docker e apenas chamar:

>ps
# does docker ps and displays result 
>stop x
# prepends docker so docker stop x is actually executed   
CTRL+C # to exit the command wrapper 

Será que algo assim já existe? Eu estava googling para isso, mas não poderia descrevê-lo corretamente, portanto, eu não encontrei nada.

    
por Vadimo 02.02.2015 / 11:32

2 respostas

3

Você também pode definir uma função e incluí-la no seu .bash_profile ou similar:

function with {
    echo -n "$1> "
    while read input
    do
        if [[ $input == "exit" ]]
        then
            break
        fi
        eval "$1 $input"
        echo -n "$1> "
    done
    echo
}

Exemplo de uso:

user@host $ with git
git> status
# On branch master
nothing to commit (working directory clean)
git> exit

user@host $

EDIT: Esta função não faz sanitização de entrada ou qualquer coisa, então use a seu próprio risco, etc ...

    
por 02.02.2015 / 12:53
1

Você pode escrever um bash ou outro script de shell para fazer isso. Uma alternativa fácil que é quase tão boa seria apenas definir apelidos curtos e incluí-los, por exemplo

alias d=docker
alias g=gcloud

e assim por diante. Então corra

d ps
d ps -a

e assim por diante, o que dificilmente é mais trabalho do que digitar apenas os comandos.

    
por 02.02.2015 / 11:49