Cómo crear mis propios comandos de terminal

Cómo crear mis propios comandos de terminal

Sé cómo crear mis comandos de terminal personalizados y eso me sería muy útil para compilar todas mis clases de Java en una carpeta. También veo que para hacer esto la gente suele crear una carpeta ~/bin y poner archivos .sh con las líneas que desean que se ejecuten, pero no pude entenderlo bien, creo un compile.sh con algunas líneas por ejemplo.

-gcc file -o file
-gcc file1 -o file1

pero mientras leía también necesito agregar una línea a un archivo llamado .bashrc que está oculto en mi carpeta de inicio y no sé cómo hacerlo, ¿hay alguna manera más fácil de editar este archivo? Después de hacerlo, ¿mi comando personalizado será el nombre del archivo .sh (compilar)?

Respuesta1

La forma más sencilla de crear scripts Bash que estén disponibles para todos los usuarios de su computadora es colocarlos en /usr/local/bin. Sin embargo, esto requiere que tengas privilegios de administrador.

  1. Crea tu guión:

    Abra su editor de texto favorito y escriba todos los comandos que desea que ejecute el script, un comando por línea.

    Puede agregar comentarios a los scripts Bash comenzando una línea con #.

    Cuando haya terminado, agregue esta línea exacta a continuación como primera línea en la parte superior de su secuencia de comandos. Se llama "shebang" y le dice al shell con qué intérprete ejecutar su script.

    #!/bin/bash
    

    Aquí hay un ejemplo simple de un script completo, ejecutando los dos comandos que mencionaste en tu pregunta:

    #!/bin/bash
    
    # Compile 'file':
    gcc file -o file
    # Compile 'file1':
    gcc file1 -o file1
    
  2. Mueva su script a la ubicación correcta:

    La ubicación donde debes colocar los scripts propios para todos los usuarios es /usr/local/bin.

    Como este directorio es propiedad del usuario root, debe ser administrador y utilizarlo sudopara mover archivos allí.

    Supongo que creó su script en su directorio de inicio ~/my_script.sh. Simplemente abra una terminal y escriba el siguiente comando, reemplazándolo SCRIPTNAMEcon el nombre que desea darle. Este nombre será el comando que deberás escribir para ejecutarlo. La .shextensión del archivo no es necesaria.

    sudo mv ~/myscript.sh /usr/local/bin/SCRIPTNAME
    
  3. Establezca el propietario y los permisos correctos:

    El script debe ser propiedad de y escribible para todos root, pero debe ser legible y ejecutable para todos. Los dos comandos siguientes garantizan esto:

    sudo chown root: /usr/local/bin/SCRIPTNAME
    sudo chmod 755 /usr/local/bin/SCRIPTNAME
    
  4. Ejecute su script y disfrute:

    Ahora simplemente puede escribir SCRIPTNAME(o como lo llame) en su terminal y el script se ejecutará.

Respuesta2

Si bien escribir scripts es una forma muy conveniente de ejecutarmuchos comandos de un archivo, sugeriría usar funciones que requieran solo uno o dos comandos.

Tomemos, por ejemplo, la definición de función a continuación

compile()
{
  gcc "$1" -o "${1%%.*}" && printf "<<< Compiled successfully\n"
}

Al colocarlo en su .bashrcarchivo (y luego ejecutar source ~/.bashrco abrir una nueva pestaña de terminal), puede ejecutar este comando desde cualquier lugar sin haberlo ~/binagregado a su PATHvariable y proporcionar un nombre de archivo como argumento de línea de comando de esta manera.

compile somecode.c

Como nota al margen, puedes editar ese archivo simplemente llamando gedit ~/.bashrcdesde la línea de comando

Para aquellos de ustedes que se preguntan qué hace "$1"y "${1%%.*}", "$1"se refiere al primer parámetro de la línea de comando (en este caso "somecode.c"), en cuanto a "${1%%.*}"- eso es la expansión de parámetros, particularmente el que elimina el sufijo, y descartará todo lo que esté después del punto. En otras palabras, eso se convierte somecode.cen somecode . Para más información, leapágina del manual de bashsección sobre expansión de parámetros

Respuesta3

Antes de entrar en esto, quería aclarar que no estás creando nuevos comandos, sino scripts que se pueden ejecutar como ejecutables. Pero pueden comportarse de la misma manera que un comando porque puedes ejecutarlos desde cualquier lugar.

Si no tiene una carpeta en su carpeta de inicio llamada "bin", cree una.

Ahora abra una ventana de terminal y escriba nano ~/.bashrc.

Esto abrirá un editor. Al final de este archivo, agregue una nueva línea que diga PATH="$HOME/bin:$PATH".

Ahora guarde el archivo presionando CTRL+O (la letra o, no cero), luego presione ENTER. Salga del editor con CTRL+X. Cierre sesión y vuelva a iniciarla para que los cambios surtan efecto, o reinicie su computadora si eso no funciona.

Ahora se podrá acceder a cualquier script que cree en su carpeta bin desde cualquier lugar de una ventana de terminal.

Puede crear estos scripts con nano, gedit (el editor de texto gráfico de Ubuntu) o cualquier editor de texto que desee. Solo recuerde guardar su script en la carpeta ~/bin y hacer que su archivo sea ejecutable. Hay 2 maneras de hacer esto:

GUI: haga clic derecho en el archivo, vaya a la pestaña de permisos y marque la casilla "Permitir ejecutar como programa".

TERMINAL :chmod +x /location/of/your/file

información relacionada