Linux

尋找一種包裝命令並提供自己的外殼的方法

  • February 2, 2015

我正在使用命令行按照相同的模式多次手動執行相同的命令。現在我正在尋找一種通過只鍵入一次命令來簡化它的方法。

讓我們看一個普通的 docker 範例:

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 

這樣的東西已經存在了嗎?我正在搜尋它,但無法正確描述它,因此我沒有找到任何東西。

您也可以自己定義一個函式,並將其包含在您的.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 或其他 shell 腳本來執行此操作。例如,一個幾乎同樣好的簡單替代方法就是定義短別名並添加它們

alias d=docker
alias g=gcloud

等等。然後執行

d ps
d ps -a

等等,這幾乎不比只輸入命令多。

引用自:https://serverfault.com/questions/664278