¿Cómo creo un archivo de script para comandos de terminal?

93

En Windows, puedo escribir un archivo que contiene comandos para cmd (generalmente .cmd o .bat files). Cuando hago clic en esos archivos, se abre cmd.exe y se ejecutan los comandos que contiene el archivo.

¿Cómo haría esto en Ubuntu?

Estoy seguro de que este es un duplicado, pero no puedo encontrar mi respuesta.
Es similar a estas preguntas, pero no responden a la pregunta:

Almacena comandos de terminal utilizados con frecuencia en un archivo

Emulador CMD.exe en Ubuntu para ejecutar. archivo cmd / .bat

    
pregunta Seth 30.11.2012 - 03:56

3 respuestas

124

Hay dos métodos.

Primero, lo más común es escribir un archivo, asegúrese de que la primera línea sea

#!/bin/bash

Luego guarda el archivo. Luego márquelo ejecutable usando chmod +x file

Luego, cuando haces clic (o ejecutas el archivo desde la terminal) los comandos se ejecutarán. Por convención, estos archivos generalmente no tienen extensión, sin embargo, puede hacerlos terminar en .sh o de cualquier otra forma.

Algunas notas:

  • Cualquier archivo (y me refiero a cualquier) se puede ejecutar en Linux siempre que la primera línea sea una ruta al programa que debe interpretar el archivo. Los ejemplos comunes incluyen /bin/python , /bin/sh , /bin/dash , pero incluso cosas de bolas impares funcionan como /bin/mysql
  • Bash es un lenguaje completo. Es mucho más complejo que cmd.exe en Windows. Tiene un lenguaje de programación fuerte que admite funciones, bucles, condicionales, operaciones de cadena, etc.
  • Estos documentos pueden ser útiles si tiene problemas.
  • Si no desea que el archivo sea ejecutable, puede ejecutarlo pasándolo como un argumento para bash: bash file/to/run.sh

Un ejemplo simple de bash

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

El segundo método es grabar comandos usando script . Ejecute script y solo haga las cosas. Cuando hayas terminado, escribe exit y script generará un archivo para ti con todas las "cosas" que hiciste. Esto se usa menos, pero funciona bastante bien para hacer cosas como macros. man script para más información.

    
respondido por el coteyr 30.11.2012 - 04:18
14

El equivalente a los archivos por lotes de Windows son los scripts de shell, y una excelente guía de introducción es Bash Scripting .

En su mayor parte, los comandos que puede ingresar en la línea de comando se pueden colocar en un script de shell.

Un par de cosas que son diferentes de los archivos por lotes de Windows:

  • Hay diferentes intérpretes de comandos, llamados shells. El valor predeterminado es bash, pero si está interesado, hay otros, como zsh, ksh, dash, perl, python, etc.

  • Para ejecutar un script de shell, debe hacer que el archivo sea ejecutable, lo cual puede hacer con chmod +x <filename>

  • En Ubuntu, el directorio actual no es la ruta de búsqueda del programa, por lo que necesita ejecutar ./<filename> , no <filename>

  • Los nombres de las variables son $<varname> , no %<varname>%

  • Los comandos en un script de shell no se imprimen por defecto, como en un archivo por lotes.

  • La extensión del nombre de archivo puede ser .sh o (más habitual) no necesita usar una extensión. Coloca #!/bin/bash en la primera línea del archivo , que le dice a Ubuntu qué programa usar para ejecutar el archivo.

  • Los comentarios comienzan con # , no rem .

¡Espero que esto ayude y divierta las secuencias de comandos!

    
respondido por el iBelieve 30.11.2012 - 04:14
13

¿Quiere decir escribir en un archivo usando un script de shell? Aquí hay algunas maneras:

touch file

Este método simplemente creará un archivo, pero si el archivo ya existe, simplemente cambiará la fecha de modificación a la vez que usó ese comando.

echo "text" > file

Ese método sobrescribe los contenidos de file a text . Si desea borrar un archivo, simplemente puede hacer esto:

echo "" > file

Supongamos que quiere escribir más de una línea y no quiere usar miles de comandos echo , debería usar este comando:

cat << EOF > file
test
test1
foo
bar
EOF

Eso le permite escribir varias líneas en un comando. El contenido de file sería este:

test
test1
foo
bar

Si desea agregar un archivo, reemplace > por >> .

¡Espero que esto ayude!

EDITAR : Ah, ya veo, así que escribirías el archivo en gedit, usando la extensión .sh (opcional, pero es una buena idea), y luego en un administrador de archivos, a la derecha haga clic en el archivo, seleccione Propiedades- & gt; Permisos, y marque Allow executing file as program . Luego puede hacer doble clic en él y se ejecutará :). Además, si desea hacerlo en la terminal, puede ejecutar este comando para hacerlo ejecutable (es posible que desee anteponer sudo si no le pertenece):

chmod +x file

Y para ejecutar:

./file
    
respondido por el MiJyn 30.11.2012 - 04:00

Lea otras preguntas en las etiquetas