Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi > Linux per newbies

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-07-2007, 23:33   #1
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Aiutatemi a preparare il mio esame

Salve a tutti, a giorni dovrei sostenere un esame di UNIX e avrei bisogno di una mano nello svolgere alcuni esercizi che posterò di seguito con i miei dubbi. Se avete un pò di pazienza per starmi dietro per risolvere questi semplici quesiti (vi chiedo un minuto del vostro tempo ) avrete la mia eterna gratitudine

Parto dal primo esercizio:

Quote:
1) Scrivere una command line, utilizzando | , che stampi il numero di sottodirectory della directory corrente
Io ho provato con :

ls -R | wc -l

Ma l'istruzione ricorsiva "ls-R" mi conta anche i files oltre che le sottodirectory. Qualche soluzione?

_______________________

Quote:
2) Descrivere la differenza dei seguenti script da Bourne Shell:
a) $sh script
b) $. script
Non sono la stessa cosa? o.O Considerando che l'esecuzione di uno script da bash avviene mettendo "." davanti al nome del file?

Ultima modifica di :.Blizzard.: : 17-07-2007 alle 23:49.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2007, 08:31   #2
Davide.Prina
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 407
Quote:
Originariamente inviato da :.Blizzard.: Guarda i messaggi
1) Scrivere una command line, utilizzando | , che stampi il numero di sottodirectory della directory corrente
$ ls -lR | grep ^d | wc -l

Quote:
2) Descrivere la differenza dei seguenti script da Bourne Shell:
a) $sh script
b) $. script
in una normale installazione i due comandi sono equivalenti. Entrambi ritornano come risultato un errore, anche se è un po' differente.

Per verificarlo
$ echo 'echo "Ciao"'> script
$ chmod u+x script

$ sh script
/usr/bin/script: /usr/bin/script: cannot execute binary file
dprina@localhost:~$ . script
bash: ELF: command not found

Nota: l'errore che ritorna ". script" è dovuto al fatto che script è un comando. Vedere. $ man script

Per verificare che lo script creato funzioni:
$ ./script
Ciao

Questo perché di default in ogni installazione GNU/Linux e Unix la directory corrente non è mai inclusa nel path ... ed includerla comporta un rischio di sicurezza.

Se eseguo:

1) $ ./script
eseguo lo script nella directory corrente utilizzando l'interprete dei comandi corrente

nel mio caso:
$ echo $SHELL
/bin/bash

2) $ script
eseguo lo script nel path ($ echo $PATH) utilizzando l'interprete dei comandi corrente

3) $ sh script
chiama l'interprete sh per l'esecuzione dello script (non è necessario che lo script abbia i permessi di esecuzione) utilizzando sh come interprete dei comandi.

Eseguo lo script nella directory corrente

Quindi se eseguo

$ echo 'echo "Ciao"'> script1
$ ./script1
bash: ./script1: No such file or directory
$ sh script1
Ciao

Notare che l'istruzione così creata dipende molto da cosa è "sh"
$ type sh
sh is hashed (/bin/sh)
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2006-12-18 20:18 /bin/sh -> bash

Quindi su un'installazione GNU/Linux sh di default punta a bash

Chiamando sh in realtà si chiama bash.
Bisogna stare attenti che chiamando sh si disabilitano le estensioni specifiche di bash e quindi si potrebbe avere, come conseguenza, che lo script non funzioni correttamente.

4) $ . script
il comando . è un built-in di bash e altre shell ed equivale al comando source

5) $ source script

Il comando source permette:
I) se è all'interno di uno scritp: di includere il file indicato
II) se è usato sulla riga di comando: di eseguire lo script

Eseguo lo script prima cercandolo nel $PATH e se non lo trova nella directory corrente

le differenze rispetto agli altri metodi di esecuzione di un comando sono:
a) non apre una nuova shell per l'esecuzione, ma esegue in quella corrente
Per capire questo faccio un piccolo esempio
$ PIPPO=1
$ echo $PIPPO
1
$ sh
$ echo $PIPPO

$ exit
exit
$ echo $PIPPO
1

come puoi vedere aprendo una nuova shell (comando "$ sh")entro in un ambiente totalmente diverso e a sé stante e ritorno alla shell precedente con il comando exit.
Eseguendo uno script nelle modalità elencate nei punti 1-4 in pratica viene aperta una nuova shell dove viene eseguito lo script. E alla terminazione dello script ritorna alla shell precedente

b) come conseguenza di a) è possibile far ritornare un valore allo script con il comando "return" perché la shell resta sempre la stessa

c) se è eseguito all'interno di uno script (source script), allora il controllo ritornerà allo script che l'ha chiamato appena l'esecuzione sarà terminata

d) nello script ci deve essere indicato come eseguire lo script stesso e questo si ricava dalla prima riga, ad esempio:
#!/bin/bash

6) $ sh < script1
Questa istruzione è simile a "$ sh script1" con l'unica differenza che viene disabilitata la lettura dallo standard input

Eseguo lo script nella directory corrente




Penso di aver detto più o meno tutto ... almeno tutto quello che conosco a riguardo.

Ciao
Davide

Ultima modifica di Davide.Prina : 18-07-2007 alle 08:38.
Davide.Prina è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2007, 15:57   #3
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
grazie, sei stato gentilissimo. Ora leggo con calma e cerco di capire. Se non ti dispiace più in là magari posto altri esercizi se hai voglia di darmi una mano - puoi essere anche più generico e riassuntivo, non importa - te ne sarei grato.

Ciauuu
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2007, 16:57   #4
verde_acqua
Senior Member
 
L'Avatar di verde_acqua
 
Iscritto dal: Aug 2004
Città: Roma
Messaggi: 333
siccome forse stiamo preparando lo stesso esame, posto alcune domande (penso pertineti al topic)

ho cercato nel file system delle librerie generiche
e mi è sembrato che tutte hanno avessero estensione .h, è così?

per librerie generiche intendo collezione di funzioni, prototipi ed altro
verde_acqua è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2007, 12:23   #5
Davide.Prina
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 407
sbagliato.
I .h sono gli header e non le librerie.
Gli header permettono di creare programmi che poi, nella fase di link, utilizzano le librerie.

Le librerie le trovi, ad esempio, sotto /usr/lib
L'estensione di solito è .so, so.X.Y..., .a, .la, ...

In generale le librerie possono essere statiche o dinamiche: le prime vengono incluse all'interno dell'eseguibile, mentre le seconde sono chiamate al momento dell'esecuzione (di solito è usato quest'ultimo metodo).

Ciao
Davide
Davide.Prina è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2007, 13:49   #6
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Quote:
Scrivere uno script in C shell che riconosca se la prima opzione della riga di comando che la richiama è "-A" oppure "-B".
Lo script ha come primo argomento una opzione e come secondo un file. Se l'opzione è -A , lo script deve controllare il numero di linee del file che iniziano con la lettera A, se l'opzione è -B deve stampare le caratteristiche del file.
#!/bin/csh
if(($argv[1]=="A" || $argv[1]=="a")) then
grep A $argv[2] | wc -l
endif
else if (($argv[1]=="B" || $argv[1]=="b")) then
ls -l $argv[2] >> filestampa
lpr filestampa
endif
else echo "opzione inesistente"



So' di aver fatto un disastro ... ma non so proprio metterci mano. Oltretutto, coma faccio a chiamare uno script da riga di comando passandogli argomenti? (in questo caso A o B)
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2007, 15:34   #7
verde_acqua
Senior Member
 
L'Avatar di verde_acqua
 
Iscritto dal: Aug 2004
Città: Roma
Messaggi: 333
Quote:
Originariamente inviato da Davide.Prina Guarda i messaggi
sbagliato.
I .h sono gli header e non le librerie.
Gli header permettono di creare programmi che poi, nella fase di link, utilizzano le librerie.

Le librerie le trovi, ad esempio, sotto /usr/lib
L'estensione di solito è .so, so.X.Y..., .a, .la, ...

In generale le librerie possono essere statiche o dinamiche: le prime vengono incluse all'interno dell'eseguibile, mentre le seconde sono chiamate al momento dell'esecuzione (di solito è usato quest'ultimo metodo).

Ciao
Davide

vero mi ero confuso perchè gli header che vedevo si chiamavano tutti xxx.h dove xxx era il nome della libreria.
Grazie per la risposta
verde_acqua è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2007, 20:32   #8
Davide.Prina
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 407
[quote]
Quote:
Scrivere uno script in C shell che riconosca se la prima opzione della riga di comando che la richiama è "-A" oppure "-B".
Lo script ha come primo argomento una opzione e come secondo un file. Se l'opzione è -A , lo script deve controllare il numero di linee del file che iniziano con la lettera A, se l'opzione è -B deve stampare le caratteristiche del file.
#!/bin/csh
if(($argv[1]=="A" || $argv[1]=="a")) then
grep A $argv[2] | wc -l
endif
else if (($argv[1]=="B" || $argv[1]=="b")) then
ls -l $argv[2] >> filestampa
lpr filestampa
endif
else echo "opzione inesistente"
[quote]

non conosco csh

1) se l'opzione deve essere -A o -B, allora quando fai il confronto devi tenere conto anche del -
2) nel grep devi controllare che le righe inizino per A e non che contengano A
3) secondo me hai sbagliato nell'impostazione del costrutto if ... then ... else
4) secondo me hai sbagliato i confronti
5) non ho capito perché ridirigi l'output in append e non usi invece una pipe

ma hai provato ad eseguire il tuo script?
Le cose le devi capire e quando sviluppi fai per gradi, un pezzo per volta e lo provi per vedere se funziona.

Ciao
Davide
Davide.Prina è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2007, 00:22   #9
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Leggo solo ora la risposta. Grazie. Stamattina cmq ho studiato meglio la csh e sono riuscito a fare lo script da me e a farlo partire correttamente da linea di comando
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
The Last of Us: arriva il primo Emmy per...
Firefox abbandona Linux a 32 bit: fine d...
Reti mobili italiane: chi vince e chi pe...
God of War: le riprese della serie TV ta...
Volkswagen ID. Cross Concept: design Pur...
DAZN e ACE smantellano "Calcio"...
Insta360 a IFA 2025: partnership con Lei...
Intel: il processo produttivo 14A sar&ag...
Fiat porta in Algeria la produzione di G...
Spazio Lenovo riapre a Milano. Cosa camb...
Prime foto di ID. Polo GTI: Volkswagen p...
BYD ha grandi novità per IAA: la ...
ASML investe 1,3 miliardi in Mistral AI ...
Tecnologia d'altri tempi e benessere del...
Come va il modem Apple C1 di iPhone 16e?...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v