Come eseguo gli script da riga di comando?


17

In Windows, posso creare .batfile. Lo faccio doppio clic e tutte le righe vengono interpretate come se lo avessi inserito nella console.

In OS X, quale file o programma devo usare? Se voglio scrivere un file con;

 echo hello world

Voglio fare doppio clic su questo file e farlo eseguire in una console. Come lo faccio?


il file deve essere eseguito quando si fa doppio clic o si desidera semplicemente eseguire il file digitando il nome del file?
Phil M


il file con doppio clic è più veloce :)
Rodrigo

Risposte:


24

Le basi terminali in OS X sono le stesse utilizzate in Linux. Quello che stai specificamente cercando è comunemente chiamato "Shell Scripting".

La shell predefinita quando apri Terminal.app(situata in /Applications/Utilties) è la shell bash.

OS X ha avuto un gestore di shell integrato accessibile tramite Finder e altre applicazioni tramite l' .commandestensione, sebbene frustrantemente non tramite l' .shestensione. Tuttavia, impostare lo script per l'esecuzione tramite il Finder è ancora più complicato.

  1. Crea un semplice script di shell, come nel tuo esempio ho realizzato un'applicazione Hello World:
#!/bin/bash
echo "Hello World"
  1. Salva questo file come HelloWorld.command.

  2. Autorizza l'esecuzione di questo file. chmod u+x HelloWorld.commanddovrebbe farlo.

  3. Apri la directory in cui hai salvato questo file nel Finder. Quindi fare doppio clic sul HelloWorld.commandfile.

Questo aprirà un terminale ed eseguirà lo script, l'output sul mio computer è il seguente:

$ /Users/jason/Applications/HelloWorld.command; Uscita;
Ciao
Logout dal mondo

[Processo completato]

Il modo alternativo di eseguire questo file è mentre ./HelloWorld.commandsei ancora nel Terminale, semplicemente emettendo che tu sia nella stessa directory del file.

In questo modo si otterrà un output molto più semplice:

Applicazioni jason-mac $ ./HelloWorld.command
Hello World
Applicazioni jason-mac $

Hai appena creato ed eseguito uno script di shell in OS X!


A parte questo: è ridicolmente frustrante che OS X non lo faccia con i file ".sh", ma solo con i file ".command". Sì, è possibile modificarlo, ma il comando. Esiste già, quindi questa è la mia soluzione suggerita.
Jason Salaz,

Vuoi porre la domanda su come iniettare .sh nel database dei servizi di avvio o devo farlo?
bmike

Ovviamente hai avuto l'idea (il pensiero non mi ha nemmeno attraversato la mente), quindi sei il benvenuto a farlo.
Jason Salaz,

Ho avuto l'idea da te - ecco, ti chiedo tutto da sola ...
bmike

Mi dà:chown: u+x: Invalid argument
Rodrigo

4

L'equivalente della console o del prompt dei comandi in Windows è l'app Terminale situata in / Applicazioni / Utilità /

L'equivalente di DOS (o come lo chiamano in questi giorni) è "bash"

L'equivalente di un file batch (.bat) in Windows è uno script di shell (.sh)

Basta fare una ricerca su Google per "bash" "riferimento" e scoprirai il resto. Consiglierei anche di acquistare il Bash Cookbook (O'Reilly).

In particolare, questo sarebbe ciò che dovresti digitare in una finestra di terminale per ottenere il tuo script "ciao mondo":

Per creare il file:

    echo "echo hello world" > file.sh

Per modificare le autorizzazioni per rendere eseguibile il file:

    chmod 755 file.sh

Per eseguire lo script:

    ./file.sh

Se si desidera poter fare doppio clic sul Finder, fare clic con il pulsante destro del mouse (o fare clic tenendo premuto il tasto Ctrl) sul file e selezionare Ottieni informazioni, quindi in Apri con, selezionare l'app Terminale. In alternativa, è possibile utilizzare l'estensione .command anziché l'estensione .sh.


2

Probabilmente vuoi dare un'occhiata ad AppleScript. Questo libro di Sal Soghoian è considerato da molti il ​​libro di riferimento su AppleScript.

Un altro bel modo per gli utenti di automatizzare le app Mac è usare Automator . Potresti provare anche tu. Spero che sia di aiuto.

Aggiornare

Sembra che tu stia cercando qualcosa come lo scripting della shell Unix. Questi due tutorial sono decenti e sembrano coprire le basi.


Ho visto questo, ma AppleScript non è lo script terminale. Penso che tu possa fare: "Vai al terminale e scrivi il comando x". Beh, non è lo stile .bat (e un po 'più difficile)
Rodrigo

Sembra che gli script della shell Unix siano ciò che stai cercando.
Christian Correa,

0

Script di shell. Non credo che Ask Different sia il luogo adatto per discuterne in profondità, ma qui c'è una guida molto dettagliata: http://tldp.org/LDP/abs/html/index.html

Mac OS X è certificato UNIX dalla 10.5 in poi (giusto?), Quindi questa saggezza è applicabile anche a Linux e ad altri sistemi operativi simili a UNIX.

(in un modo meno complesso, Automator di Mac OS X è dannatamente potente, come lo è AppleScript Editor, entrambi in grado di eseguire script di shell e altri comandi con programmi e racchiuderli in un comodo pacchetto .app per Launchpad o condividere con amici)


Dall'introduzione della guida ho collegato: "Un programma shell, chiamato script, è uno strumento di facile utilizzo per la creazione di applicazioni" incollando insieme "chiamate di sistema, strumenti, utilità e binari compilati. Praticamente l'intero repertorio di I comandi, i programmi di utilità e gli strumenti UNIX sono disponibili per l'invocazione tramite uno script della shell. Se ciò non bastasse, i comandi interni della shell, come test e costrutti di loop, conferiscono ulteriore potenza e flessibilità agli script. "
Swizzlr

E per "posto adatto" penso che lo script di shell sia davvero meglio discusso su SuperUser: superuser.com/questions/tagged/shell-script
Swizzlr


-2

Per mac è il file .sh aka Shell script


Ma quando lo chiami dal Finder, vorrai usare .command. .shè un tipo di file non gestito dal finder (per impostazione predefinita).
Jason Salaz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.