{"id":651,"date":"2013-01-26T14:15:00","date_gmt":"2013-01-26T14:15:00","guid":{"rendered":"http:\/\/www.budus.it\/Blog\/?p=651"},"modified":"2017-06-18T07:34:29","modified_gmt":"2017-06-18T07:34:29","slug":"mac-os-x-creare-una-propria-cartella-per-gli-script-bash","status":"publish","type":"post","link":"https:\/\/www.budus.it\/Blog\/mac-os-x-creare-una-propria-cartella-per-gli-script-bash\/","title":{"rendered":"Mac OS X: Creare una propria cartella per gli Script Bash"},"content":{"rendered":"<p>Mi capita spesso la necessit\u00e0 di crearmi degli <a title=\"Bash\" href=\"http:\/\/it.wikipedia.org\/wiki\/Bash\" target=\"_blank\" rel=\"noopener\">Script Bash<\/a> con i quali svolgere operazioni ripetitive.<\/p>\n<p>Si tratta di programmi che vengono interpretati run-time ed eseguiti; in altri termini: il sistema operativo apre il file sorgente dello script, lo interpreta e lo esegue.<\/p>\n<p style=\"padding-left: 30px;\">N.B.: Solo per conoscenza sottolineo come, solitamente, i programmi (o Applicazioni, come ultimamente vengono chiamate), si trovano in una forma che il sistema non deve interpretare, sono gi\u00e0 direttamente eseguibili (contengono, appunto, le istruzioni in <em>codice macchina<\/em> per il proprio sistema operativo\/hardware e sono conosciuti come <em>file binari<\/em>); tuttavia, prima di essere dei <em>file binari<\/em>, erano dei <em>file sorgenti<\/em> (cio\u00e8 il codice scritto in un qualche <em>Linguaggio di Programmazione<\/em> &#8211; come ad esempio C, C++, C#, Visual Basic e molti altri &#8211; da un utente programmatore) che sono stati trasformati attraverso un&#8217;operazione detta <em>di compilazione<\/em> (in sintesi: un codice sorgente scritto con un linguaggio di programmazione viene compilato per creare un codice binario eseguibile).<\/p>\n<p>Le comodit\u00e0 di creare uno Script Bash sono molteplici:<\/p>\n<p><!--more--><\/p>\n<ol>\n<li>Bash \u00e8 disponibile su pressoch\u00e9 qualsiasi piattaforma UNIX, quindi, non necessita di installare nulla di complicato ed \u00e8 alla base del sistema operativo stesso, che la utilizza per eseguire alcune operazioni.<\/li>\n<li>E&#8217; semplice da imparare e, online, \u00e8 pieno di <a title=\"Guida avanzata di scripting Bash\" href=\"http:\/\/www.pluto.it\/files\/ildp\/guide\/abs\/\" target=\"_blank\" rel=\"noopener\">guide<\/a> e tutorial che spiegano in modo approfondito l&#8217;argomento, nonch\u00e9, si trovano migliaia di FAQ per risolvere i pi\u00f9 disparati compiti (spesso, programmare in bash, si traduce in\u00a0<em>cerca\/copia<\/em><em>\/incolla<\/em>).<\/li>\n<li>Non necessita di compilazione (che \u00e8 comunque un&#8217;operazione che richiede tempo); il codice scritto \u00e8 immediatamente eseguibile e si possono, subito, vedere gli effetti di quello che si \u00e8 scritto.<\/li>\n<li>Sfruttando le potenzialit\u00e0 del terminale UNIX ed, in particolare, della miriade di comandi disponibili (una sorta di enorme\u00a0coltellino svizzero) \u00e8 possibile implementare pressoch\u00e9 qualsiasi funzionalit\u00e0, dalla pi\u00f9 semplice fino a cose mediamente sofisticate (io ci ho fatto un Search Engine per un WEB Server, un <a title=\"BuDuScRiPt Plugin\" href=\"http:\/\/digilander.libero.it\/udasoft\/Software\/Linux\/buduscript\/\" target=\"_blank\" rel=\"noopener\">plugin per XChat IRC Client<\/a> e parecchio altro).<\/li>\n<\/ol>\n<p><span style=\"font-size: medium;\"><span style=\"line-height: 24px;\">Ora veniamo a trattare l&#8217;installazione, procedere come segue:<\/span><\/span><\/p>\n<ul>\n<li>Aprire un terminale (dal Finder:\u00a0<strong>Applicazioni-&gt;Utility-&gt;Terminale<\/strong>) e dare i seguenti comandi (sono 4 e, per ognuno, va premuto INVIO per eseguirlo):\n<pre>cd $HOME\r\nmkdir bin\r\necho 'PATH=${PATH}:${HOME}\/bin' &gt; .bash_profile\r\ncd bin<\/pre>\n<p>consiglio di fare dei copia\/incolla, per evitare errori; notare che \u00e8 possibile copiare tutte le righe (da qui) e incollarle contemporaneamente nel terminale, per eseguire tutto, assieme e subito senza possibilit\u00e0 di errore.<\/li>\n<li>Chiudere il terminale e riaprirlo.<\/li>\n<li>Ora bisogna creare il file Script Bash; per farlo, sempre da terminale, utilizzare questi 3 comandi:\n<pre>cd $HOME\/bin\r\ntouch script.sh\r\nchmod +x script.sh<\/pre>\n<\/li>\n<li>Ora tramite il Finder, nella propria cartella HOME\/bin (quella con il simbolo di casetta), \u00e8 possibile rinominare il file script creato &#8211; secondo le proprie esigenze, dandogli un nome che, mnemonicamente, faccia intuire lo scopo &#8211; e soprattutto modificarne il contenuto (in questo momento \u00e8 ancora vuoto !). Per rinominarlo \u00e8 sufficiente fare 2 click &#8211; lenti, non doppio click ! &#8211; sul nome del file (consiglio di mantenere l&#8217;estensione &#8220;.sh&#8221;, anche se non indispensabile) dal Finder mentre, per modificarlo, \u00e8 necessario fare click con il tasto destro e scegliere l&#8217;opzione di menu\u00a0<strong>Apri con -&gt; TextEdit<\/strong> (o quello che si preferisce, qualsiasi editor di testo va bene !).<\/li>\n<li>Adesso non resta che incollare lo script, se lo si prende da qualche parte (ad esempio, il mio Blog !), oppure scriverlo di getto usando sempre questa riga all&#8217;inizio:\n<pre>#!\/bin\/bash<\/pre>\n<\/li>\n<\/ul>\n<p><span style=\"font-size: medium;\"><span style=\"line-height: 24px;\">Per usare lo script creato \u00e8 sufficiente scrivere il suo nome completo nel terminale, eventualmente aggiungere dei parametri se sono previsti e premere INVIO.<\/span><\/span><\/p>\n<p>Notare che Bash \u00e8 potente e, tra le innumerevoli cose:<\/p>\n<ul>\n<li>Offre la possibilit\u00e0 di completare in automatico il nome dei programmi (nel nostro caso anche degli script da noi realizzati), senza quindi la necessit\u00e0\u00a0&#8211; con possibilit\u00e0 di sbagliare ! &#8211;\u00a0di scriverli a mano, iniziando a digitare le prime lettere (diciamo 3, ma rispettando maiuscole\/minuscole, motivo per il quale, consiglio di adottare una propria regola; ad esempio io nomino con &#8220;UDA_&#8221; all&#8217;inizio tutti i miei script) e premendo il tasto di tabulazione ( -&gt;| ), pi\u00f9 volte se necessario (quando trova ambiguit\u00e0, il sistema si ferma a completare fino alla parte non ambigua e, alle successive pressione del tabulatore, mostra un elenco delle ambiguit\u00e0).<\/li>\n<li>Offre la possibilit\u00e0 di recuperare comandi dati in precedenza, sia riesumandoli con il tasto\u00a0<em>freccia s\u00f9<\/em> &#8211; della tastiera &#8211; sia andandoli a cercare con il comando <em>ctrl+r<\/em>\u00a0(riverse-i-search).<\/li>\n<\/ul>\n<p><span style=\"font-size: medium;\"><span style=\"line-height: 24px;\"><br \/>\n<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mi capita spesso la necessit\u00e0 di crearmi degli Script Bash con i quali svolgere operazioni ripetitive. Si tratta di programmi che vengono interpretati run-time ed eseguiti; in altri termini: il sistema operativo apre il file sorgente dello script, lo interpreta e lo esegue. N.B.: Solo per conoscenza sottolineo come, solitamente, i programmi (o Applicazioni, come &hellip; <a href=\"https:\/\/www.budus.it\/Blog\/mac-os-x-creare-una-propria-cartella-per-gli-script-bash\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Mac OS X: Creare una propria cartella per gli Script Bash&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,25,6],"tags":[176,9,154,99],"class_list":["post-651","post","type-post","status-publish","format-standard","hentry","category-development","category-operating-system","category-software","tag-bash","tag-linux","tag-mac-os-x","tag-script"],"_links":{"self":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/comments?post=651"}],"version-history":[{"count":5,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/651\/revisions"}],"predecessor-version":[{"id":871,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/651\/revisions\/871"}],"wp:attachment":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/media?parent=651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/categories?post=651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/tags?post=651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}