寻找一种包装命令并提供自己的外壳的方法

Vad*_*imo 3 linux shell command-line-interface shell-scripting

我正在使用命令行按照相同的模式手动执行相同的命令多次。现在我正在寻找一种方法来简化它,只需输入一次命令即可。

让我们看一个普通的 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
Run Code Online (Sandbox Code Playgroud)

此示例也适用于更多命令,例如 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 
Run Code Online (Sandbox Code Playgroud)

像这样的东西已经存在了吗?我在谷歌上搜索它,但无法正确描述它,因此我没有找到任何东西。

she*_*n89 5

您也可以自己定义一个函数,并将其包含在您的.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
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

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

user@host $
Run Code Online (Sandbox Code Playgroud)

编辑:此功能不进行输入清理或任何操作,因此使用风险自负等...