我创建了一个命令,并尝试将其转换为别名以使其更易于使用,但是我无法解决如何最好地格式化它的问题。你能帮助我吗?
该命令的原理很简单,它在一个命令中运行两个进程,使用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
.