¿Hay alguna forma de agregar comandos personalizados /bin
?
Por ejemplo, uso docker container ls
mucho y me gustaría convertir esto en un comando de acceso directo, como dcls
.
Si añado un archivo llamado dcls
a /bin
y dentro del archivo, especifique el comando exacto docker container ls
, supongo que esto no funcionaría.
¿Cuál es la forma correcta, si hay una, de hacer algo como esto?
ubuntu
command-line
docker
alex067
fuente
fuente
/bin
, puede agregar a~/bin
(un contenedor en su propio directorio) o a/usr/local/bin
(para compartir con todos los usuarios de su sistema, pero no interferir con el administrador de paquetes). O mejor en este caso, usar un alias.Respuestas:
Una manera fácil de un atajo es definir un
alias
Esto se ejecutará
docker container ls
cuando ingresedcls
y el comandoalias
enumere sus alias definidos. Para eliminar este alias, useunalias dcls
.Si usa bash, puede guardar el alias en su
~/.bashrc
o~/.bash_aliases
.Si
~/.bash_aliases
no se lee en el inicio, puede agregar esta línea a su~/.bashrc
:fuente
~/.bashrc
o~/.profile
, o ... Si no lo hace guardar el alias que se pierde cuando se cierra la sesión o cerrar el terminal.echo "alias dcls='docker container ls'" >> ~/.bashrc
, luego. ~/.bashrc
obtenerlo o cerrar sesión e iniciar sesión nuevamente.En realidad, lo que describas funcionaría, con algunas notas:
docker container ls
en un archivo llamado/bin/dcls
. Pero el comportamiento de eso puede ser un poco complicado. Es un poco más confiable comenzar el archivo con una línea llamada "shebang", para que el archivo se vea como que especifica que el archivo es un script de shell.sudo
).Siga los dos pasos anteriores y podrá escribir
que especifica que cualquier argumento que escriba en ladcls
y funcionarádocker container ls
. Pero, si escribedcls -l foo
, todavía lo harádocker container ls
. Si quieres que lo hagadocker container ls -l foo
, debes cambiar el guión para que digadcls
línea de comando debe pasar aldocker container ls
comando.Naturalmente, hay cosas más complicadas que puede hacer con argumentos de línea de comandos.
Para una asignación de un comando simple → un comando simple, que no necesita ser compartido con otros usuarios, es más simple definir un alias ( como sugirió Freddy ), o una función de shell. Las funciones más complicadas a menudo se escriben como scripts; es decir, archivos de texto que contienen comandos. Pero, si no necesita compartirlo con otros usuarios, es más común usar un
A continuación, copiebin
directorio privado .dcls
a$HOME/bin
, y añadir a tu~/.bashrc
.Además, es común incluir scripts personales
/usr/local/bin
y salir/bin
para los programas que vienen con el sistema.fuente
/bin
,/usr/bin
y generalmente comparten directorios como/usr/local/bin
y/opt
, a veces , por lo que los programas en esos directorios están disponibles para todos los usuarios./usr/local/bin
, no interfiera con el administrador de paquetes.$HOME/bin
. Realmente deberías usar esto. Este no es solo el alcance correcto, sino que ayuda cuando reinstala su sistema (y mantiene suHOME
) para no perder su comando personalizado.~/.local/bin
en su lugar .Si es solo para usted, un alias está bien, pero de acuerdo con el estándar de jerarquía del sistema de archivos de Linux , los scripts locales de todo el sistema entran
/usr/local/bin/
, no/bin
./bin
, es mejor cumplir con los estándares, especialmente si su software se implementará en los sitios del cliente./opt
El guión en sí sería:
fuente