Come posso creare un file di script per i comandi del terminale?

92

In Windows posso scrivere un file contenente comandi per cmd (in genere .cmd o .bat file). Quando clicco su quei file, aprirò cmd.exe ed eseguirò i comandi che il file contiene.

Come potrei farlo in Ubuntu?

Sono sicuro che questo è un duplicato, ma non riesco a trovare la mia risposta.
È simile a queste domande, ma non rispondono alla domanda:

Archivia i comandi di terminale utilizzati di frequente in un file

Emulatore CMD.exe in Ubuntu per l'esecuzione. file cmd / .bat

    
posta Seth 30.11.2012 - 03:56

3 risposte

123

Ci sono due metodi.

Innanzitutto, il più comune è scrivere un file, assicurati che la prima riga sia

#!/bin/bash

Quindi salva il file. Contrassegnalo come eseguibile con chmod +x file

Quindi quando fai clic (o esegui il file dal terminale) i comandi verranno eseguiti. Per convenzione questi file di solito non hanno estensione, tuttavia puoi farli terminare in .sh o in qualsiasi altro modo.

Alcune note:

  • Qualsiasi file (e intendo qualsiasi) può essere eseguito in Linux purché la prima riga sia un percorso del programma che dovrebbe interpretare il file. Esempi comuni includono /bin/python , /bin/sh , /bin/dash , ma anche le cose a palla dispari funzionano come /bin/mysql
  • Bash è un linguaggio completo. È molto più complesso di cmd.exe in Windows. Ha un forte linguaggio di programmazione che supporta funzioni, loop, condizionali, operazioni sulle stringhe, ecc.
  • Questi documenti possono essere utili in caso di problemi.
  • Se non desideri rendere eseguibile il file, puoi eseguirlo passandolo come argomento a bash: bash file/to/run.sh

Un semplice esempio di Bash

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

Il secondo metodo consiste nel registrare i comandi usando script . Esegui script quindi fai solo cose. Quando hai terminato di scrivere roba di tipo exit e lo script genererà un file per te con tutte le "cose" che hai fatto. Questo è meno utilizzato ma funziona abbastanza bene per creare cose come i macro. man script per ulteriori informazioni.

    
risposta data coteyr 30.11.2012 - 04:18
14

L'equivalente ai file batch di Windows sono script di shell e un'eccellente guida introduttiva è Bash Scripting .

Per la maggior parte, i comandi che è possibile immettere sulla riga di comando possono essere inseriti in uno script di shell.

Un paio di cose che sono diversi dai file batch di Windows:

  • Esistono diversi interpreti di comandi, chiamati shell. L'impostazione predefinita è bash, ma se sei interessato, ce ne sono altri, come zsh, ksh, dash, perl, python, ecc.

  • Per eseguire uno script di shell, devi rendere eseguibile il file, cosa che puoi fare con chmod +x <filename>

  • In Ubuntu, la directory corrente non è il percorso di ricerca del programma, quindi devi eseguire ./<filename> , non <filename>

  • I nomi delle variabili sono $<varname> , non %<varname>%

  • I comandi in uno script di shell non vengono stampati di default, come in un file batch.

  • L'estensione del nome file può essere .sh o (più consuetudine) non è necessario utilizzare un'estensione. Inserisci #!/bin/bash sulla primissima riga del file , che indica a Ubuntu quale programma utilizzare per eseguire il file.

  • I commenti iniziano con # , non rem .

Spero che questo aiuti e divertiti con lo scripting!

    
risposta data iBelieve 30.11.2012 - 04:14
13

Intendi scrivere su un file usando uno script di shell? Ecco alcuni modi:

touch file

Questo metodo creerà semplicemente un file, ma se il file esiste già, cambia semplicemente la data di modifica all'ora in cui hai usato quel comando.

echo "text" > file

Questo metodo sovrascrive il contenuto di file in text . Se si desidera cancellare un file, è sufficiente farlo:

echo "" > file

Se vuoi scrivere più di una riga, e non vuoi usare migliaia di comandi echo , dovresti usare questo comando:

cat << EOF > file
test
test1
foo
bar
EOF

Ciò consente di scrivere più righe in un unico comando. Il contenuto di file sarebbe quindi questo:

test
test1
foo
bar

Se si desidera aggiungere un file, sostituire > con >> .

Spero che questo aiuti!

EDIT : Oh, capisco, quindi dovresti scrivere il file in gedit, usando l'estensione .sh (facoltativo, ma è una buona idea), e poi su un file manager, a destra fai clic sul file, seleziona Proprietà- & gt; Autorizzazioni e controlla Allow executing file as program . Quindi puoi fare doppio clic su di esso e verrà eseguito :). Inoltre, se vuoi farlo nel terminale, puoi eseguire questo comando per renderlo eseguibile (potresti anteporre sudo se non appartiene a te):

chmod +x file

E per eseguire:

./file
    
risposta data MiJyn 30.11.2012 - 04:00

Leggi altre domande sui tag