
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.
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
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 utilizarlosudo
para 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ándoloSCRIPTNAME
con el nombre que desea darle. Este nombre será el comando que deberás escribir para ejecutarlo. La.sh
extensión del archivo no es necesaria.sudo mv ~/myscript.sh /usr/local/bin/SCRIPTNAME
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
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 .bashrc
archivo (y luego ejecutar source ~/.bashrc
o abrir una nueva pestaña de terminal), puede ejecutar este comando desde cualquier lugar sin haberlo ~/bin
agregado a su PATH
variable 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 ~/.bashrc
desde 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.c
en 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