命令在别名时不起作用

命令在别名时不起作用

我创建了一个命令,并尝试将其转换为别名以使其更易于使用,但是我无法解决如何最好地格式化它的问题。你能帮助我吗?

该命令的原理很简单,它在一个命令中运行两个进程,使用docker容器,使用其他别名命令。查看下面的命令:

docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'

这个命令本来就很好,但是当我尝试为其创建别名时,其他命令(例如 docker 和 find)的各种内部调用会出现问题。我曾尝试使用 eval 等来实现此目的,但没有成功。

答案1

正如 @ilkkachu 所说,您可以创建一个函数并将其添加到您的 .zshrc 或 .bashrc 文件中,它看起来像这样:

docker_command () {
        docker exec -it database_one bash -c "find ./data -type d -name '202*-*-*' -exec mongorestore --drop {} \;" && docker exec -it database_one mongo logindb --eval 'db.users.update({"username":"admin"},{$set:{"password":"test", "reset_password": false}});'
}

之后您可以运行命令docker_command来执行该功能。

或者您可以创建一个 shell 脚本并将其保存到 $HOME/.local/bin/docker_command 并直接从 shell 运行它,但在这种情况下,您需要确保您放置命令的目录在路径变量。检查你的路径变量运行echo $PATH

完成其中一个选项后,您仍然想要创建一个“别名”您可以将其添加到您的 rc 文件中: alias d=docker_command 这将使您使用d.

相关内容