将命令快捷方式添加到 /bin

将命令快捷方式添加到 /bin

有什么办法可以添加自定义命令吗/bin

例如,我docker container ls经常使用它,并且想将其变成快捷命令,例如dcls.

如果我在文件中添加一个名为 的文件,并指定确切的命令dcls,我认为这不起作用。/bindocker 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

实际上,您所描述的内容是可行的,但需要注意一些事项:

  1. 您可以简单地将其放入docker container ls一个名为/bin/dcls.但其行为可能有点复杂。以名为“shebang”的行开始文件会更可靠一些,因此文件看起来像
    #!/bin/sh
    docker 容器 ls
    它指定该文件是 shell 脚本。
  2. 在运行该命令之前,必须使用如下命令使该文件可执行
    chmod +x /bin/dcls
    您可能需要成为 root 才能执行此操作(即使用 运行它sudo)。
  3. 按照上面两个步骤,你就能打字dclsdocker 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

  1. 虽然它肯定可以在 中工作/bin,但最好遵守标准,特别是如果您的软件要部署在客户的站点上。
  2. 如果你的脚本是可选的,它应该进入/opt
  3. 脚本本身是:

    #!/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
    

相关内容