Existe-t-il un moyen d'ajouter des commandes personnalisées à /bin
?
Par exemple, j'utilise docker container ls
beaucoup, et je voudrais transformer cela en une commande de raccourci, comme dcls
.
Si j'ajoute un fichier nommé dcls
dans /bin
et à l'intérieur du fichier, spécifiez la commande exacte docker container ls
, je suppose que cela ne fonctionnera pas.
Quelle est la bonne façon, s'il y en a une, de faire quelque chose comme ça?
ubuntu
command-line
docker
alex067
la source
la source
/bin
, vous pouvez ajouter à~/bin
(un bac dans votre propre répertoire) ou à/usr/local/bin
(à partager avec tous les utilisateurs de votre système, mais sans interférer avec le gestionnaire de paquets). Ou mieux dans ce cas, pour utiliser un alias.Réponses:
Un moyen simple pour un raccourci est de définir un
alias
Cela s'exécute
docker container ls
lorsque vous entrezdcls
et la commandealias
répertorie vos alias définis. Pour supprimer cet alias, utilisezunalias dcls
.Si vous utilisez bash, vous pouvez enregistrer l'alias dans votre
~/.bashrc
ou~/.bash_aliases
.Si votre
~/.bash_aliases
n'est pas lu au démarrage, vous pouvez ajouter cette ligne à votre~/.bashrc
:la source
~/.bashrc
ou~/.profile
ou ... Si vous n'enregistrez pas l'alias, il est perdu lorsque vous vous déconnectez ou fermez le terminal.echo "alias dcls='docker container ls'" >> ~/.bashrc
, puis le source avec. ~/.bashrc
ou vous déconnecter et vous reconnecter.En fait, ce que vous décrivez fonctionnerait, avec quelques notes:
docker container ls
dans un fichier appelé/bin/dcls
. Mais le comportement de cela peut être un peu compliqué. Il est un peu plus fiable de commencer le fichier avec une ligne appelée "shebang", donc le fichier ressemblerait à qui spécifie que le fichier est un script shell.sudo
).Suivez les deux étapes ci-dessus et vous pourrez taper
qui spécifie que tous les arguments que vous tapez sur ladcls
et ce sera le casdocker container ls
. Mais, si vous tapezdcls -l foo
, cela suffiradocker container ls
. Si vous le souhaitezdocker container ls -l foo
, vous devez changer le script pour diredcls
ligne de commande doivent être transmis à ladocker container ls
commande.Naturellement, vous pouvez faire des choses plus compliquées avec les arguments de ligne de commande.
Pour un mappage d'une commande simple → d'une commande simple, qui n'a pas besoin d'être partagée avec d'autres utilisateurs, il est plus simple de définir un alias ( comme l'a suggéré Freddy ), ou une fonction shell. Les fonctions plus compliquées sont souvent écrites sous forme de scripts; c'est-à-dire des fichiers texte contenant des commandes. Mais, si vous n'avez pas besoin de le partager avec d'autres utilisateurs, il est plus courant d'utiliser un
Ensuite , copiezbin
répertoire privé .dcls
à$HOME/bin
, et ajouter à votre~/.bashrc
.En outre, il est courant de mettre des scripts personnels dans
/usr/local/bin
et de partir/bin
pour les programmes fournis avec le système.la source
/bin
,/usr/bin
et généralement des répertoires partagés comme/usr/local/bin
et parfois/opt
, de sorte que les programmes contenus dans ces répertoires sont disponibles à tous les utilisateurs./usr/local/bin
, cela n'interfère pas avec le gestionnaire de packages.$HOME/bin
. Vous devriez vraiment l'utiliser. Ce n'est pas seulement la bonne portée, mais aide lorsque vous réinstallez votre système (et conservez votreHOME
) à ne pas perdre votre commande personnalisée.~/.local/bin
place .Si ce n'est que pour vous, un alias est bien, mais selon la norme Linux Filesystem Hierarchy Standard, les scripts à l'échelle du système local entrent
/usr/local/bin/
, non/bin
./bin
, il est préférable de respecter les normes, surtout si votre logiciel va être déployé sur les sites des clients./opt
Le script lui-même serait:
la source