有什么办法可以添加自定义命令吗/bin
?
例如,我docker container ls
经常使用它,并且想将其变成快捷命令,例如dcls
.
如果我在文件中添加一个名为 的文件,并指定确切的命令dcls
,我认为这不起作用。/bin
docker container ls
如果有的话,做这样的事情的正确方法是什么?
答案1
快捷方式的一个简单方法是定义一个alias
alias dcls='docker container ls'
docker container ls
当您输入dcls
并且命令列出您定义的别名时,这将执行alias
。要删除此别名,请使用unalias dcls
.
如果您使用 bash,则可以将别名保存在您的~/.bashrc
或~/.bash_aliases
.
如果~/.bash_aliases
启动时未读取您的内容,您可以将此行添加到您的~/.bashrc
:
[ -f ~/.bash_aliases ] && . ~/.bash_aliases
答案2
实际上,您所描述的内容是可行的,但需要注意一些事项:
- 您可以简单地将其放入
docker container ls
一个名为/bin/dcls
.但其行为可能有点复杂。以名为“shebang”的行开始文件会更可靠一些,因此文件看起来像#!/bin/sh docker 容器 ls
它指定该文件是 shell 脚本。 - 在运行该命令之前,必须使用如下命令使该文件可执行
chmod +x /bin/dcls
您可能需要成为 root 才能执行此操作(即使用 运行它sudo
)。 按照上面两个步骤,你就能打字
dcls
了docker container ls
。但是,如果您输入dcls -l foo
,它仍然可以docker container ls
。如果你想要它这样做docker container ls -l foo
,你应该将脚本更改为#!/bin/sh docker 容器 ls "$@"
它指定您在dcls
命令行上键入的任何参数都应传递给docker container ls
命令。当然,您可以使用命令行参数执行更复杂的操作。
对于一个简单命令→一个简单命令的映射,不需要与其他用户共享,定义一个别名更简单(正如弗雷迪建议的那样),或 shell 函数。更复杂的函数通常写成脚本;即包含命令的文本文件。但是,如果您不需要与其他用户共享,则更常见的是使用私有bin
目录。
$ CD #(到你的主目录) $ mkdir bin然后复制
dcls
到$HOME/bin
,并添加导出 PATH="$HOME/bin:$PATH"给你的
~/.bashrc
.
另外,通常将个人脚本放入/usr/local/bin
,然后留给/bin
系统附带的程序。
答案3
如果只是为了你,别名就可以了,但根据Linux 文件系统层次结构标准本地系统范围的脚本进入/usr/local/bin/
,而不是/bin
。
- 虽然它肯定可以在 中工作
/bin
,但最好遵守标准,特别是如果您的软件要部署在客户的站点上。 - 如果你的脚本是可选的,它应该进入
/opt
脚本本身是:
#!/bin/bash # # Version 1.0 DD 2019-05-04 # dcls = docker container ls docker container ls "@0" if [[ $? -eq 0 ]]; then echo -e "Errors encountered..." exit 1 fi