bash
bash
salve ragazzi è la primissima esperienza con bash anche se conosco un po di c++ ma non so se puo essermi utile...vi volevo chiedere per creare uno script lo posso fare con editor di testo? se si come devo salvare il file con quale estensione? dove lo devo salvare ? e per avviare lo script da terminale che comandi devo dare (tipo chmod 555 nomefile,o basch nomefile)? grazie
Re: bash
Ciao, per scrivere il tuo script puoi usare vi, per usarlo digita vi nel terminale.
Qui potrai scrivere il tuo programma.con questo comando gli dai i permessi "chmod 700 nomeProgramma.sh"
e con questo lo esegui "./nomeProgramma.sh"
Qui potrai scrivere il tuo programma.con questo comando gli dai i permessi "chmod 700 nomeProgramma.sh"
e con questo lo esegui "./nomeProgramma.sh"
Re: bash
Qualsiasi editor di testo va bene per scrivere uno script bash sh 
Il permesso che serve per eseguirlo è quello di esecuzione (la "x" quando visualizzi i permessi a lettere) e deve averlo chi dovrà poi eseguire lo script (utente, gruppo, tutti).
In generale simoblu88 ti consiglio di consultare queste due guide:
Guida Linux: Programmazione della shell 11.14
Guida avanzata di scripting Bash
Il permesso che serve per eseguirlo è quello di esecuzione (la "x" quando visualizzi i permessi a lettere) e deve averlo chi dovrà poi eseguire lo script (utente, gruppo, tutti).
In generale simoblu88 ti consiglio di consultare queste due guide:
Guida Linux: Programmazione della shell 11.14
Guida avanzata di scripting Bash
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
Speficico che in linux l'estensione del programma e' soltanto una convenzione.SAKO ha scritto: Qui potrai scrivere il tuo programma.con questo comando gli dai i permessi "chmod 700 nomeProgramma.sh"
e con questo lo esegui "./nomeProgramma.sh
Di solito per i binari viene guardato il "magic number"(i primi byte del file) che ne descrivono il tipo... per gli script viene invece utilizzato "l'hash bang", che specifica quale interprete usare
In ogni caso e' buona prassi per evitare di incasinarsi i propri file, ma piu' per noi umani che per la macchina...
--
-gaspa-
-gaspa-
Re: bash
ma se senza dargli i permessi chmod 777......do bash nomefile non è la stessa cosa?
Re: bash
Il permesso di esecuzione devi daglielo comunque:
oppure da GUI tasto destro sul file e poi proprietà -> tab permessi e selezioni consentire esecuzione del file come programma.
Codice: Seleziona tutto
chmod +x nomefileVolans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
falso... se lo chiami da bash, sh, o con "." non importa il permesso di esecuzioneVolans ha scritto: Il permesso di esecuzione devi daglielo comunque:
Codice: Seleziona tutto
[515]gaspa@saturnino:bin$ ls -l ciao.sh
-rw-r--r-- 1 gaspa gaspa 22 2008-03-03 14:34 ciao.sh
[516]gaspa@saturnino:bin$ sh ciao.sh
ciao
[517]gaspa@saturnino:bin$ . ciao.sh
ciao
--
-gaspa-
-gaspa-
Re: bash
gaspa hai ragione se lo chiami con sh specificato non serve il permesso di esecuzione, ma per chiamarlo con ./nomefile si.
Con punto non ho capito cosa fai dato che a me chiude la shell
Con punto non ho capito cosa fai dato che a me chiude la shell
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
?? anche qui non mi sembra, eseguendolo con sh, dovrebbe andare a gestire l'hashbang.. (e' piu' o meno come chiamare un perl/python con il proprio interprete, quindi non capisco perche' dovrebbe essere necessario il '.sh'Volans ha scritto: gaspa hai ragione se lo chiami con sh specificato non serve il permesso di esecuzione, ma per chiamarlo con ./nomefile si.
$ mv ciao.sh ciao
[525]gaspa@saturnino:bin$ sh ciao
ciao
il punto serve per "valutare" uno script. La differenza tra il comando sh e il punto e' che nel primo caso esegue un'altra shell, mentre nel secondo no.Con punto non ho capito cosa fai dato che a me chiude la shell![]()
Quindi se c'e` un qualche errore (che mi pare capire di permessi, nel tuo caso) nel secondo caso si chiude la shell che stai usando.
bye
--
-gaspa-
-gaspa-
Re: bash
Non ci siamo capiti ma dicevamo la stessa cosa prima gaspa... per "sh specificato" intendevo come comando sh nomefile non come estensione. 
Se do . nomefile mi chiude la shell dato che lo scritp è un echo "ciao" non ci sono sicuramente errori... quindi penso dipenda dal fatto che non ha il permesso di esecuzione.
Se do . nomefile mi chiude la shell dato che lo scritp è un echo "ciao" non ci sono sicuramente errori... quindi penso dipenda dal fatto che non ha il permesso di esecuzione.
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
ah, ok, scusami.Volans ha scritto: Non ci siamo capiti ma dicevamo la stessa cosa prima gaspa... per "sh specificato" intendevo come comando sh nomefile non come estensione.![]()
e questo e' strano, perche' io non li ho, i permessi di esecuzione. E mi sembra verosimile che non servano, visto che il comando significa 'interpreta il seguente script bash'Se do . nomefile mi chiude la shell dato che lo scritp è un echo "ciao" non ci sono sicuramente errori... quindi penso dipenda dal fatto che non ha il permesso di esecuzione.
$ source ciao.sh
ti fa la stessa cosa??
--
-gaspa-
-gaspa-
Re: bash
Strane cose succedono... 
Se faccio . prova.sh da root me lo esegue senza problemi, . prova non me lo esegue e chiude la shell. Da utente mi chiude la shell in entrambi i casi.
Ho provato con un strace ma in realtà l'output è praticamente lo stesso (anche se c'è una riga con permission denied). Suggerimenti per risolvere l'arcano?
Se faccio . prova.sh da root me lo esegue senza problemi, . prova non me lo esegue e chiude la shell. Da utente mi chiude la shell in entrambi i casi.
Ho provato con un strace ma in realtà l'output è praticamente lo stesso (anche se c'è una riga con permission denied). Suggerimenti per risolvere l'arcano?
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
boh???Volans ha scritto: Strane cose succedono...
Se faccio . prova.sh da root me lo esegue senza problemi, . prova non me lo esegue e chiude la shell. Da utente mi chiude la shell in entrambi i casi.
Ho provato con un strace ma in realtà l'output è praticamente lo stesso (anche se c'è una riga con permission denied). Suggerimenti per risolvere l'arcano?![]()
prova ad aprire una shell, cioe',
$ bash
$ . prova
cosi' dovresti vedere l'errore. Che comunque, sara' probailmente permission denied...
Non so cosa potremmo avere di diverso... $SHELL ?? i permessi della directory?? (non credo... pero'...)
Hai controllato di avere prova nel path? altrimenti devi dire ./prova
So che sono robe banali, ma sinceramente non so dove pescare.
--
-gaspa-
-gaspa-
Re: bash
E se ti dico che ora funziona...
mah i misteri dell'informatica... ora va in ogni combinazione! 
Volans
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Prima di scrivere leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Re: bash
Il punto è un comando TCL ed è equivalente a source.
Se in uno script my_script inserisco
. (source) my_source_file
le variabili definite in my_source_file vengono impostate in my_script e i comandi in my_source_file vengono eseguiti nella shell corrente.
source restituisce l'exit status dell'ultimo comando del file che viene passato come oggetto. (in assenza di un comando return)
Ciao
Se in uno script my_script inserisco
. (source) my_source_file
le variabili definite in my_source_file vengono impostate in my_script e i comandi in my_source_file vengono eseguiti nella shell corrente.
source restituisce l'exit status dell'ultimo comando del file che viene passato come oggetto. (in assenza di un comando return)
Ciao
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
ROTFL... (rotfl)Volans ha scritto: E se ti dico che ora funziona...mah i misteri dell'informatica... ora va in ogni combinazione!
![]()
forse avevi qualche variabile settata strana. boh.
mah, stiamo parlando di bash... forse tcl ha gli stessi comandi... ma non stiamo parlando di tcl...urka58 ha scritto: Il punto è un comando TCL ed è equivalente a source.
comunque, da quel che dici, si'... mi pare che dovrebbero funzionare come dici tu.
--
-gaspa-
-gaspa-
Re: bash
Non è che lo dico io ...
Dalla pagina man di bash (paragrafo built in):
Ciao
Dalla pagina man di bash (paragrafo built in):
oppure più in dettaglio la pagina man di source.. (a period)
. filename [arguments]
Read and execute commands from the filename argument in the current shell context. If filename does not contain a slash, the PATH variable is used to find filename. When Bash is not in posix mode, the current directory is searched if filename is not found in $PATH. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the exit status of the last command executed, or zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero. This builtin is equivalent to source.
Ciao
-
gaspa
- Scoppiettante Seguace

- Messaggi: 754
- Iscrizione: lunedì 5 dicembre 2005, 13:12
- Località: Castenaso
Re: bash
forse non mi ero spiegato, ma non discutevo questo, bensi' il fatto che fosse un "comando TCL".urka58 ha scritto: Non è che lo dico io ...
Dalla pagina man di bash (paragrafo built in):
Cmq, stiamo parlando di nulla, dai.
--
-gaspa-
-gaspa-
Re: bash
stiamo parlando di un comando shell (che è anche un comando tcl), non mi pare che siano volati insulti, quindi non capisco la tua esortazione a terminare la discussione..., comunque, se vuoi così, va bene.Cmq, stiamo parlando di nulla, dai.
Ciao
Ultima modifica di urka58 il mercoledì 5 marzo 2008, 23:55, modificato 1 volta in totale.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti

