Я работаю с командной строкой, выполняя одни и те же команды много раз вручную по одному и тому же шаблону. Теперь я ищу способ упростить его, просто набрав команду только один раз.
Давайте посмотрим на обычный пример докера:
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
и так далее, что вряд ли больше, чем просто набор команд.