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

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
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


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
The Twisted Tale of Amanda Knox: il prim...
Samsung rallenta: utili in caduta libera...
'Il realismo ha rovinato i videogiochi' ...
Crollano anche i TV QLED Hisense: c'&egr...
Photoshop 2025: le nuove funzioni AI che...
Qualcomm cresce, ma la CPU per datacente...
Gli iPhone in offerta oggi? C'è i...
L'evoluzione di Revolut: arrivano anche ...
Microsoft entra nel club dei 4.000 milia...
Ufficiale, Google firmerà il Codi...
Mettereste una NPU dedicata all'intellig...
I nuovi iPhone 17 costeranno di pi&ugrav...
Zuckerberg: 'Chi non indosserà sm...
La scopa elettrica bestseller super acce...
Amazon, svendite pesanti di 11 TV OLED: ...
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: 09:43.


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