.dsy:it. Pages (39): « First ... « 10 11 12 13 [14] 15 16 17 18 » ... Last »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- Esame di laboratorio (Giugno 2007) - Domande (http://www.dsy.it/forum/showthread.php?threadid=31182)


Posted by marcolino78 on 24-09-2007 09:58:

altro esercizietto

ciao a tutti, vi sottopongo un'altro esercizietto che ho sentito:

creare 10 nuovi utenti prendendoli da un file di testo???

idee???

come si a passare i valori presi da un file di testo???


Posted by jeremy.1983 on 24-09-2007 10:42:

Questa domanda era già stata risolta sul sito del corso ma lì è un un po' un casino, ti consiglio piuttosto di guardare QUI .

Le estensioni hanno poco significato in minix: quindi se tu crei user.list o user.txt non cambia nulla.

Se usi lo script devi lanciarlo così:

<nomescript> <nomefilelistautenti>

Ciao


Posted by jeremy.1983 on 24-09-2007 11:20:

Re: Re: domandina

Originally posted by Bennyk
Sei sicuro di questa domanda? Su Linux non sarebbe un problema ma i comandi di MINIX sono molto limitati, io non ne sono ancora venuto a capo.
Qualcuno ha idee?


Ho fatto uno script, pensando di replicare la directory "/bin"

code:
#! /bin/sh cpdir -pr /bin /bin2 rm $(find /bin2 -type f)


Ciao


Posted by banjoo on 24-09-2007 14:06:

Dimensione totale dei file per utente

Ciao, secondo voi può andar bene una cosa del genere per trovare l'occupazione totale per un utente?

#!/bin/sh
for NUM in $( find / -type f -user UTENTE | xargs du -s | cut -f 1); do
COUNT=$( expr $COUNT + $NUM)
done
echo "Totale: $COUNT"

a me sembra funzionare....
l'unica cosa, come faccio ad inserire l'utente come parametro quando lancio lo script? E' una cosa fattibile?

Grazie.


Posted by Bennyk on 24-09-2007 23:25:

Re: Re: Re: domandina

Originally posted by jeremy.1983
Ho fatto uno script, pensando di replicare la directory "/bin"[...]


Io ho provato così e sembra funzionare, certo non è proprio immediato...

code:
#!bin/sh if [ $# -lt 2 ]; then echo “syntax: $0 path1 path2 exit 1 fi echo “Copying folders...” find $1 -type d | sort | while read $DIR; do mkdir -p $2/$DIR chmod $(stat -mode $DIR | cut -d ',' -f 1) $2/$DIR done echo “Finished copying.” exit 0


Posted by Bennyk on 24-09-2007 23:46:

Re: Dimensione totale dei file per utente

Originally posted by banjoo
Ciao, secondo voi può andar bene una cosa del genere per trovare l'occupazione totale per un utente?

[...]

a me sembra funzionare....
l'unica cosa, come faccio ad inserire l'utente come parametro quando lancio lo script? E' una cosa fattibile?


Per inserire l'utente come parametro ti basta usare $1 (i parametri che passi sulla riga di comando sono numerati $1, $2... $n. $0 è il nome del file chiamato).

Inoltre consiglio vivamente di usare il while, invece del for, per evitare errori di "Out of space" nella command substitution, specialmente in casi tipo: $(find / ...).

Trovate qualche esempio QUI

code:
#!bin/sh if [ $# -lt 1 ]; then echo “syntax: $0 userID exit 1 fi find / -type f -user $1 | xargs du -s | cut -f 1 | while read $NUM; do ...


Posted by marcolino78 on 25-09-2007 10:54:

X jeremy.1983

sono andato a vedere la pagina che mi hai indicato e in effetti lo script non è complicato

1) #!/bin/bash
2) NUM=$(cat $1 | wc -l)
3) COUNT=0
4) while [ $NUM -ne $COUNT ]; do
5) COUNT=$(expr $COUNT + 1)
6) adduser $(cat $1 | awk "NR == $COUNT")
7) done

l'unica cosa che non ho capito è il $1, mi spiego meglio:
se per esempio chiamo il mio script NuovoUtente e il file FileUtenti.txt, come faccio a lanciarlo per far si che il cat $1 prenda come parametro il mio file???

forse cosi:
./NuovoUtente FileUtenti.txt

oppure manca qualcosa?
Grazie.


Posted by Peach on 25-09-2007 14:51:

Io faccio ./ nome script ma dice no such file or directory,ma se faccio find - type f lo trovo....come mai?????


Posted by banjoo on 25-09-2007 16:26:

Prova così, facendo attenzione agli spazi:

./NOMESCRIPT NOMEFILE

io personalmente non ho provato a dare estensione .txt al file di testo, ma questo non dovrebbe influire.

Attenzione anche alla directory in cui ti trovi al momento dell'esecuzione.


Posted by Peach on 25-09-2007 16:39:

allora

io creo il mio file con elvis (ad esempio nfile)
poi faccio chmod +x nfile
e se faccio ./ nfile mi dice no such file or directory
ma se faccio . /root/nfile funziona....

Come faccio a sapere la directory in cui sto eseguendo?


Posted by imperator on 25-09-2007 16:46:

basta lanciare il comando pwd


Posted by Peach on 25-09-2007 16:50:

ok e se non sto eseguendo su root cosa faccio?


Posted by Assochespasso on 26-09-2007 08:47:

Originally posted by Bennyk
Ciao a tutti,
aggiungo un'altra domanda fatta all'esame:

- Quali e quante estensioni ci sono nel sistema?
(per estensioni si intende qualsiasi cosa ci sia dopo il carattere “.”, es: archivio.gz)

La soluzione è questa:

find / | rev | cut -f 1 -d '.' | grep -v / | rev | sort | uniq -c | sort -n

Spiegazione:

find / trova tutto (files e directories) a partire dalla root dir
rev inverte ogni riga dell'output
cut -f 1 -d '.' estrae il primo campo di ogni riga usando il . come separatore
grep -v / eliminazione delle sole directories
rev inverte di nuovo ogni riga dell'output
sort ordina l'output
uniq -c elimina righe duplicate contandole, ora l'output è del tipo 123 gz
sort -n (non necessario) ordina i risultati numericamente

Nota:
Si può evitare il grep -v / usando cut -f 1 -d '.' -s.


Okkio che così trovi anche tutte le cartelle e file nascosti ( del tipo .cartella o .file).
Ho fatto uno script simile al tuo, escludendo cartelle e file nascosti:

find / -type f -name *.* | tr -s '/' ' ' | rev | cut -d ' ' -f 1 | rev | grep -v "^\." | rev | cut -d '.' -f 1 -s | rev | sort | uniq -c

find / -type f -name *.* cerco tutti i file che contengono un punto nel nome del file (i file trovati sono completi di path ad es. /root/prova/file)
tr -s '/' ' ' spazi al posto di /
rev stampo il nome del file al contrario
cut -d ' ' -f 1 estraggo il primo campo (è il nome del file al contrario). In questo modo ho il nome del file senza path
rev ristampo il nome del file "dritto"
grep -v "^\." escludo tutti i file che INIZIANO con un punto (sono quelli nascosti)
rev non lo ripeto più
cut -d '.' -f 1 -s estraggo il primo campo. Così ho l'estensione del file
rev
sort ordino le estensioni in ordine alfabetico, così posso eliminare le ripetizioni con uniq
uniq -c per ogni estensione ho il numero di ripetizioni


Posted by bog86 on 26-09-2007 09:36:

Originally posted by Peach
allora

io creo il mio file con elvis (ad esempio nfile)
poi faccio chmod +x nfile
e se faccio ./ nfile mi dice no such file or directory
ma se faccio . /root/nfile funziona....

Come faccio a sapere la directory in cui sto eseguendo?

Non mi funziona in nessuno modo! con . /root/nfile si impalla, con ./nfile nomi.txt dice no such file or directory...
come si fa allora?? help!!!!!


Posted by Bennyk on 26-09-2007 19:34:

Originally posted by Assochespasso
Okkio che così trovi anche tutte le cartelle e file nascosti ( del tipo .cartella o .file).
Ho fatto uno script simile al tuo, escludendo cartelle e file nascosti:

find / -type f -name *.* | tr -s '/' ' ' | rev | cut -d ' ' -f 1 | rev | grep -v "^\." | rev | cut -d '.' -f 1 -s | rev | sort | uniq -c

...


Si, avevo notato questo side effect ed ho provato con un altro script:

code:
find / | while read i; do basename $i; done | grep -v “^\.” |rev| cut -f 1 -d '.' -s |rev|sort|uniq -c|sort -nr


Ottima la tua soluzione con il triplo rev!

La domanda però, non era limitata ai soli files, ma qualsiasi estensione nel file system, anche eventuali cartelle tipo: cartella.ext (un pò insolito ma non impossibile).
Per questo io non uso -type f.


All times are GMT. The time now is 02:44. Pages (39): « First ... « 10 11 12 13 [14] 15 16 17 18 » ... Last »
Show all 571 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.