¿Puedo hacer mis propios comandos?

12

Me preguntaba si podría hacer mis propios comandos como si tuviera que escribir 'música' en la línea de comandos, mi vlc debería abrirse y comenzar a reproducir mi lista de reproducción. Lo vlc es solo un ejemplo, pero la pregunta permanece.

¿Puedo hacer mis propios comandos? Si es así, ¿cómo?

harisibrahimkv
fuente
puedes hacer guiones, si eso es lo que quieres?
Alvar

Respuestas:

19

Sí, crea un archivo llamado música y coloque lo siguiente dentro de él:

#!/bin/bash
echo "Hello world"

A continuación, escriba chmod +x music : esto hace que el archivo sea ejecutable. Ahora puede escribir ./musicpara ejecutar este script.

Es una buena idea escribir echo $PATHy copiar el script en uno de esos directorios. Sugeriría crear $HOME/biny agregar eso a su RUTA a través de ~/.bash_profileo~/.profile . Esto puede hacerse mediante la adición de (a uno de esos archivos): export PATH="$HOME/bin:$PATH". A continuación, deberá ejecutar source .bash_profile(suponiendo que haya puesto eso en ese archivo) para volver a cargarlo.

Otra alternativa sería agregar el comando que desea ejecutar como un alias bash. Puede hacer esto agregando lo siguiente a un archivo llamado.bash_aliases en su directorio de inicio:

alias music='vlc --some-option --foo'

Ejecutar source ~/.bash_aliaseso cerrar sesión e iniciar sesión y debería funcionar :-)

Mella
fuente
3

La mejor manera de hacer esto es modificar (o crear) un archivo llamado .bash_aliases en su carpeta de inicio.

La sintaxis es bastante simple:

alias install='sudo apt-get -y install'

Con este comando, si escribe installun terminal, en su lugar se interpretará como

sudo apt-get -y install

Sin embargo, estos comandos no funcionarán en ningún lugar fuera de un terminal.

Basscal
fuente
1

Cualquier archivo ejecutable en un directorio en su ruta puede ser un "comando". Puede ser un script como se sugiere en otras respuestas, pero también podría ser un programa compilado en cualquier idioma compatible que conozca.

Los alias también funcionarán, pero son limitados porque son "simples", de modo que hacer algo complejo con ellos genera rápidamente un código que es muy difícil de leer. Además, dado que se ejecutan en el mismo alcance variable que el shell en el que los escribe, pueden tener fácilmente efectos secundarios no deseados, como dejarlo en otro directorio o dejar variables definidas que solo son necesarias para la tarea que realiza el alias. (Por supuesto, a veces es posible que desee utilizar un alias precisamente porque tiene efectos secundarios deseables).

Si coloca sus nuevos comandos en un directorio en su ruta, el shell puede encontrarlos y ejecutarlos. El lugar más común para colocarlos es en $ HOME / bin. Si este directorio existe, a menudo se agregará automáticamente a su ruta.

Dos cosas a tener en cuenta al configurar esto son: 1) Por lo general, es mejor usar nombres únicos para sus comandos que no coincidan con los que ya están definidos en su sistema. Hay mucho debate sobre esto, pero el punto principal es que los comandos familiares no deberían tener resultados inesperados si alguien más está usando su sistema y que acostumbrarse a un comando común que hace algo especial puede meterlo en problemas cuando trabaja en otro sistema donde no se define de esa manera.

2) Puede agregar $ HOME / bin al principio o al final de su ruta (o en cualquier punto intermedio, pero eso no suele hacerse).

Agregarlo al frente de su ruta es la opción más conveniente porque su versión de un comando siempre será la que se ejecute y se encontrará más rápido. También es una vulnerabilidad de seguridad porque cualquiera que pueda obtener permiso de escritura en su $ HOME / bin (mucho más fácil que obtener acceso de root) puede reemplazar comandos comunes con código potencialmente malicioso muy fácilmente. Además, si alguna vez necesita pedir ayuda a alguien que no conoce su sistema, es probable que se vea afectado por el comportamiento especial de sus comandos personalizados, a menos que dedique un gran esfuerzo adicional a explicar todo además de haciendo tu pregunta

Agregarlo al final de su declaración de ruta es un poco más seguro porque cualquier comando con el mismo nombre que su comando que ya está en su ruta se encontrará primero y se ejecutará en su lugar, y cualquier otra cosa que dependa de que el comando funcione como se espera seguirá funcionando .

Para evitar todo esto (a expensas de escribir un poco más), también puede colocar su comando en un directorio que no esté en su ruta, por lo que casi nunca se ejecutará involuntariamente porque tendrá que escribir su nombre de ruta completo para ejecutarlo.

Como la mayoría de las cosas en Linux, hay muchas formas de crear y usar nuevos comandos y cada uno tiene sus propias ventajas y limitaciones.

Joe
fuente