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

DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-07-2007, 00: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.: : 18-07-2007 alle 00:49.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2007, 09: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 09:38.
Davide.Prina è offline   Rispondi citando il messaggio o parte di esso
Old 18-07-2007, 16: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, 17: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, 13: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, 14: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, 16: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, 21: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, 01: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


DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
Apple Watch Ultra 2 in titanio con GPS +...
Nuova protezione per Windows 11: scansio...
GoPro LIT HERO a 249€ su Amazon: la nuov...
PayPal integra i pagamenti in ChatGPT: c...
Battlefield REDSEC: al via la Stagione 1...
Dark Power 14 è un alimentatore d...
Ufficiale: Amazon taglia 14.000 posti di...
Firefox verso la trasparenza totale: i n...
Final Fantasy 7 Remake Part 3: arrivano ...
Elon Musk vuole 1.000 miliardi: il consi...
Il pixel più piccolo al mondo: un...
Windows 11: le 5 opzioni che Microsoft n...
Cuffie wireless PlayStation PULSE Elite ...
Un milione di utenti mostra disagio su C...
Un datacenter sottomarino alimentato da ...
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: 14:48.


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