寻找一种方法来包装命令并给出它自己的 shell

寻找一种方法来包装命令并给出它自己的 shell

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

让我们看一个普通的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。

现在我正在寻找某种命令包装器 shell,它允许我编写with docker将任何命令包装在嵌套/子 shell 中的命令。

然后我就不需要在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 

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

答案1

您也可以自己定义一个函数,并将其包含在您的.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 $

编辑:此功能不执行输入清理或任何操作,因此使用时请自行承担风险等...

答案2

您可以编写 bash 或其他 shell 脚本来执行此操作。一种几乎同样好的简单替代方法是定义简短的别名并将其添加到前面,例如

alias d=docker
alias g=gcloud

等等。然后运行

d ps
d ps -a

等等,这几乎不比仅仅输入命令多做多少工作。

相关内容