Назад | Перейти на главную страницу

Ищете способ обернуть команду и создать собственную оболочку

Я работаю с командной строкой, выполняя одни и те же команды много раз вручную по одному и тому же шаблону. Теперь я ищу способ упростить его, просто набрав команду только один раз.

Давайте посмотрим на обычный пример докера:

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

Этот пример также применим ко многим другим командам, таким как git, brew, gulp, gcloud.

Теперь я ищу какую-то оболочку командной оболочки, которая позволяет мне писать with docker который помещает любую команду во вложенную / вспомогательную оболочку.

Тогда мне не нужно добавлять docker команду и просто позвоните:

>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 

Что-то подобное уже существует? Я искал это в Google, но не мог описать это должным образом, поэтому я ничего не нашел.

Вы также можете определить функцию самостоятельно и включить ее в свой .bash_profile или похожие:

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

Пример использования:

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

user@host $

РЕДАКТИРОВАТЬ: эта функция не выполняет дезинфекцию ввода или что-то еще, поэтому используйте на свой страх и риск и т. Д.

Для этого вы можете написать bash или другой сценарий оболочки. Простая альтернатива, которая почти так же хороша, - это просто определить короткие псевдонимы и добавить их, например

alias d=docker
alias g=gcloud

и так далее. Тогда беги

d ps
d ps -a

и так далее, что вряд ли больше, чем просто набор команд.