Come si eseguono i file .sh?

270

Ogni volta che apro un file .sh, lo apre in gedit al posto del terminale. Non riesco a trovare nessuna opzione simile a Clic con il tasto destro Apri con Altre applicazioni ... Terminale .

Come posso aprire questo file nel terminale?

    
posta Alex 01.05.2011 - 04:39

16 risposte

409

Dai il permesso di esecuzione al tuo script:

chmod +x /path/to/yourscript.sh

E per eseguire il tuo script:

/path/to/yourscript.sh

Poiché . si riferisce alla directory corrente: se yourscript.sh si trova nella directory corrente, puoi semplificarlo in:

./yourscript.sh
    
risposta data karthick87 01.05.2011 - 05:18
73

È necessario contrassegnare gli script di shell come eseguibili per eseguirli dal file manager:

  1. Fai clic con il tasto destro sul tuo file .sh e seleziona Proprietà :

  2. NellaschedaAutorizzazioni,selezionaConsentil'esecuzionedelfilecomeprogramma:

  3. Chiudi la finestra Proprietà e fai doppio clic sul file. Apparirà una finestra di dialogo che ti darà la possibilità di eseguire lo script in un terminale:

risposta data Isaiah 01.05.2011 - 05:02
22

Presupposto

Prima di poter eseguire il file .sh, devi renderlo eseguibile:

  1. Fai clic con il pulsante destro del mouse sul file
  2. Seleziona Proprietà
  3. Seleziona Autorizzazioni
  4. Seleziona Consenti l'esecuzione del file come programma

Attenzione

Assicurati di fidarti dell'origine da cui hai ottenuto il file. Potrebbe essere un virus .

Il modo molto semplice

  1. Fai doppio clic sul file
  2. Fai clic su esegui nel terminale

Questo ha un problema. Il terminale si chiuderà immediatamente e non sarai in grado di vedere l'output.

Il modo semplice

  1. Apri applicazioni - & gt; Accessori - & gt; Terminale
  2. Trascina e rilascia il file .sh nel terminale e premi Invio

Il modo in cui i professionisti lo fanno

  1. Apri applicazioni - & gt; Accessori - & gt; Terminale
  2. Trova dove si trova il file .sh

    • Utilizza i comandi ls e cd
    • ls elencherà i file e le cartelle nella cartella corrente . Fai un tentativo: digita "ls" e premi Invio.
    • Una volta visualizzata la cartella a cui vuoi accedere, esegui cd , seguito da uno spazio, seguito dal nome di una cartella
    • Se ti trovi in una cartella che non volevi, esegui cd .. per passare a un livello su
  3. Esegui il file .sh

    • Una volta che puoi vedere ad esempio script1.sh con ls esegui questo:

      ./ script.sh

Perché farlo in modo complicato?

Il terminale ha un ricco set di potenti strumenti accessibili digitando i comandi. I professionisti individuano il file .sh digitando ls e cd . Una volta entrato nella cartella corrente corretta, puoi eseguire lo script in questo modo:

./script1.sh

oppure puoi eseguire e reindirizzare l'output su un file:

./script1.sh > out.txt

oppure puoi filtrare l'output per le parole chiave (ad esempio "mele") e quindi reindirizzare a un file:

./script1.sh | grep apples > ./only-apples

Ci sono migliaia di cose che puoi fare su quel file semplicemente digitando alcuni comandi.

Un altro, puoi scaricare un file da Internet con un semplice comando:

wget www.google.com/images/logos/ps_logo2.png

E quindi apri il file in questo modo:

shotwell ps_logo2.png
    
risposta data Aleksandr Levchuk 01.05.2011 - 04:52
19

Apri un terminale e vai alla cartella in cui si trova il file .sh . Quindi digitare:

sh <name of file>.sh
    
risposta data italianfoot 20.12.2012 - 08:43
17

Sui file eseguibili di Ubuntu 13.04 aperti in Nautilus ora vengono aperti in gedit per impostazione predefinita piuttosto che richiedere all'utente di eseguirli. Per abilitare il classico comportamento devi modificare le preferenze:

Nautilus → menu Modifica → Preferenze → scheda Comportamento → fai clic sul pulsante di opzione vicino a Chiedi ogni volta.

    
risposta data imjustmatthew 10.06.2013 - 23:41
6

Vai alla directory in cui il file .sh utilizza cd . In questo esempio ho memorizzato il mio file sh come ~/Desktop/shell_practice/test.sh

prima fai pwd per capire dove sei, e se restituisce /home/username (dove username è il tuo vero nome utente), puoi eseguire

cd Desktop/shell/practice

Se ti sembra di essere da qualche altra parte, puoi usare il percorso assoluto

cd ~/Desktop/shell/practice

o

cd $HOME/Desktop/shell/practice

o anche

cd /home/$USER/Desktop/shell/practice

questi sono tutti modi per descrivere lo stesso posto. Una volta che hai raggiunto la posizione dello script, digita

ls

Se puoi vedere il file sh nell'output, puoi usare chmod per renderlo eseguibile. Nel mio caso, ricorda, il nome del file è test.sh , quindi eseguirò

chmod u+x test.sh

Ora che siamo nella stessa directory dello script, dobbiamo specificare sulla shell che vogliamo eseguire il file dando la sua posizione ./ (la directory corrente seguita da un separatore di percorso, per distinguerla da il nome del file). Per eseguire il mio file, digitare:

./test.sh

Se il tuo script è stato scritto correttamente, verrà eseguito senza errori ...

Ecco un esempio dal vivo:

    
risposta data TheExorcist 03.12.2016 - 12:14
3

2 passaggi principali.

  1. nel terminale, usa gedit per scrivere e salvare script con estensione ".sh" sul desktop. (ma è possibile utilizzare qualsiasi editor di testo)

  2. apri Nautilus e fai clic con il pulsante destro sul file script.sh.

    • sotto le proprietà, la casella di controllo "consenti l'esecuzione del file .."

    • nel menu Nautilus, fai clic su file, quindi su preferenze, quindi su comportamento

    • controlla "esegui file di testo eseguibili quando vengono aperti".

Ora, quando si fa doppio clic sul file sul desktop, dovrebbe essere eseguito. non c'è bisogno di . o ./

    
risposta data rob 24.10.2013 - 16:24
2

In Ubuntu 16.04 questo è come aprirlo nel Terminale:

Vai a File Manager > Edit > Preferences > Behavior per Executable Text Files e seleziona Ask each time .

Il problema è che per impostazione predefinita è impostato su View Executable Files when they are opened .

    
risposta data Leniel Maccaferri 11.12.2016 - 20:58
2
  1. Fai clic con il tasto destro del mouse sul file .sh e rendilo eseguibile.

  2. Apri un terminale ( Ctrl + Alt + T ).

  3. Trascina il file .sh nella finestra del terminale e guarda con stupore.

risposta data 1p_bunny 10.06.2017 - 16:09
2

Ci sono alcuni modi per farlo.

Opzione 1

  1. Nel terminale, accedi alla directory in cui si trova il file Bash utilizzando cd (cambia directory).

    Ex. % Co_de%

  2. Esegui cd Downloads

    Funziona anche con i file .run. C'è un esempio di questo utilizzo in questa pagina web sull'aggiornamento di Rhythmbox.

Opzione 2

  1. Nel terminale, vai alla directory in cui si trova il file bash.

  2. Esegui bash <filename>.sh

  3. In Nautilus, apri il file.

risposta data Kenny Stier 06.01.2014 - 22:33
1

Se si posiziona lo script della shell o un altro eseguibile creato in / usr / local / bin, verrà trovato ed eseguito senza dover fornire un percorso di cartella nella riga di comando o aggiungere ./ al nome. Ad esempio, ho creato il seguente semplice script di bash in 3 righe per visualizzare gli UUID del disco:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Ho chiamato il file uuid e l'ho messo in / usr / local / bin. Tutto ciò di cui ho bisogno per entrare nella riga di comando è:

uuid
    
risposta data fragos 01.05.2011 - 09:14
1

Per Ubuntu 18.04 , c'è una piccola modifica, poiché non si ottiene una finestra di dialogo pop-up.

Quindi quello che devi fare è:

Fai clic con il pulsante destro su File, seleziona Preferenze & gt; Seleziona la scheda Comportamento & gt; Segna l'opzione 'Chiedi cosa fare' sotto File di testo eseguibile.

Ora, quando fai doppio clic su qualsiasi file .sh, otterrai un popup, lì puoi selezionare l'opzione "esegui nel terminale" per eseguire il tuo file .sh.

    
risposta data Akhilesh Dhar Dubey 16.08.2018 - 12:18
0

Bene, anch'io ho affrontato lo stesso problema. Volevo eseguire il file .sh e aperto con Gedit su CentOS 7. Quindi ecco cosa ho fatto:

  1. Ho navigato nel percorso del file .sh che volevo eseguire.
  2. Ho aperto il terminale.
  3. E ho semplicemente trascinato e rilasciato la finestra del terminale e automaticamente ha preso il file insieme al percorso come input.
  4. Premi Invio e sei a posto!
risposta data Jen Bates 16.06.2016 - 17:11
0

Il problema che ho riscontrato su alcune distribuzioni è che hanno nascosto l'opzione delle preferenze in Nautilus, ma per risolverlo su Ubuntu e altre distribuzioni usando Gnome3 è lo stesso (ho appena fatto la versione Fedora di questo e postando la correzione effettiva per ricordarmi come in futuro).

  1. Installa dconf-editor

    sudo apt-get install dconf-editor
    
  2. Esegui dconf-editor usando l'account utente su cui vuoi farlo, cioè NON root

    dconf-editor
    
  3. Passa allo schema seguente:

    org.gnome.nautilus.preferences

  4. Cambia l'opzione predefinita per non aprire per impostazione predefinita:

    Trova executable-text-activation fai clic sulla parola display e passa a ask

che ti darà la possibilità di modificare, visualizzare o eseguire il file andando avanti

    
risposta data Snider 22.12.2013 - 17:06
0

Sono un noob in Linux e ho avuto lo stesso problema. Se tutto il resto fallisce:

  1. Apri terminale
  2. Apri la cartella contenente il file .sh
  3. Trascina e rilascia il file nella finestra del terminale
  4. Il percorso del file viene visualizzato nel terminale. Premi Invio .
  5. Voilà, il tuo file .sh viene eseguito.
risposta data Linux_noob 07.05.2017 - 04:19
-2

Puoi anche utilizzare trucchi . , con il suggerimento di altre risposte.

Ad esempio:

chmod +x filename.sh , assumendo che tu sia già passato al percorso del file, quindi esegui il file con uno qualsiasi di questi comandi:

sh filename.sh

./filename.sh

. filename.sh
    
risposta data Awais 02.01.2015 - 09:29

Leggi altre domande sui tag