Existe alguma maneira de adicionar comandos personalizados /bin
?
Por exemplo, eu uso docker container ls
muito e gostaria de transformar isso em um comando de atalho, como dcls
.
Se eu adicionar um arquivo nomeado dcls
para /bin
e dentro do arquivo, especifique o comando exato docker container ls
, presumo que isso não funcione.
Qual é o caminho certo, se houver um, para fazer algo assim?
ubuntu
command-line
docker
alex067
fonte
fonte
/bin
, você pode adicionar a~/bin
(uma lixeira em seu próprio diretório) ou a/usr/local/bin
(para compartilhar com todos os usuários do seu sistema, mas não interferir no gerenciador de pacotes). Ou melhor, neste caso, para usar um alias.Respostas:
Uma maneira fácil de um atalho é definir um
alias
Isso será executado
docker container ls
quando você digitardcls
e o comandoalias
listar seus aliases definidos. Para remover esse alias, useunalias dcls
.Se você usar o bash, poderá salvar o alias no seu
~/.bashrc
ou~/.bash_aliases
.Se o seu
~/.bash_aliases
não for lido na inicialização, você poderá adicionar esta linha ao seu~/.bashrc
:fonte
~/.bashrc
ou~/.profile
ou ... Se você não salvar o alias, ele será perdido quando você sair ou fechar o terminal.echo "alias dcls='docker container ls'" >> ~/.bashrc
, então origine-o. ~/.bashrc
ou faça logout e faça login novamente.Na verdade, o que você descreve funcionaria, com algumas notas:
docker container ls
em um arquivo chamado/bin/dcls
. Mas o comportamento disso pode ser um pouco complicado. É um pouco mais confiável iniciar o arquivo com uma linha chamada "shebang", para que o arquivo pareça que especifica que o arquivo é um script de shell.sudo
).Siga os dois passos acima e você poderá digitar
que especifica que qualquer argumento digitado nadcls
e ele farádocker container ls
. Mas, se você digitardcls -l foo
, ainda funcionarádocker container ls
. Se você quiserdocker container ls -l foo
, altere o script para dizerdcls
linha de comando deve ser passado para odocker container ls
comando.Naturalmente, há coisas mais complicadas que você pode fazer com argumentos de linha de comando.
Para o mapeamento de um comando simples → um comando simples, que não precisa ser compartilhado com outros usuários, é mais simples definir um alias ( como sugerido por Freddy ) ou uma função de shell. Funções mais complicadas são frequentemente escritas como scripts; ou seja, arquivos de texto que contêm comandos. Mas, se você não precisar compartilhá-lo com outros usuários, é mais comum usar um
Copiebin
diretório privado .dcls
para$HOME/bin
e adicione para o seu~/.bashrc
.Além disso, é comum inserir scripts pessoais
/usr/local/bin
e partir/bin
para os programas que acompanham o sistema.fonte
/bin
,/usr/bin
e diretórios como tipicamente compartilhada/usr/local/bin
e, por vezes/opt
, para que os programas nesses diretórios estão disponíveis para todos os usuários./usr/local/bin
para que não interfira no gerenciador de pacotes.$HOME/bin
. Você realmente deveria usar isso. Esse não é apenas o escopo correto, mas ajuda quando você reinstala o sistema (e mantém o seuHOME
) para não perder seu comando personalizado.~/.local/bin
lugar .Se apenas para você, um alias é bom, mas de acordo com os scripts locais do sistema de arquivos do Linux Filesier Hierarchy Standard
/usr/local/bin/
, não/bin
./bin
, é melhor manter os padrões, especialmente se o seu software for implantado nas instalações do cliente./opt
O script em si seria:
fonte