Sida 1 av 1

För många argument? [LÖST]

Postat: 09 apr 2008, 17:28
av Yuh Learn
Jag sitter och skriver på ett shell-script men behöver hjälp med några rader som jag inte tycks förstå mig på.
Det jag försöker göra är alltså att söka igenom en specifik mapp efter eventuella undermappar och filer för att sedan utföra speciella åtgärder (shred) samt radera dessa. Detta ska ske automatiskt när jag kör scriptet.

Det här är kodstycket jag har problem med:

Kod: Markera allt

if [ -d */* ]; then
shred -uzv */*/*
rmdir -v */*
fi
Syftet med if-satsen är att undvika fula felmeddelanden när shred och rmdir körs och inga filer eller mappar hittas.
Rad ett ger mig felmeddelandet "för många argument". I övrigt fungerar allt klockrent, även shred och rmdir för sig.
Så, accepteras inte wildcards innanför hakparentesen eller vad är det frågan om?

Kom gärna med förslag på bättre metoder om du kan.
Tack!

Re: För många argument?

Postat: 09 apr 2008, 17:36
av KiviE
Jag har aldrig lyckas med ett wildcards i en if-sats. Iaf inte när man ska kolla om en fil eller mapp existerar så antar att detta ej går.

För att slippa outputen när inga filer hittas kan du göra så här:

Kod: Markera allt

shred -uzv */*/* >/dev/null 2>&1
rmdir -v */* >/dev/null 2>&1
Då slipper du ifsatsen, dock kommer du aldrig få någon output alls isf. Det kanske du vill?

Re: För många argument?

Postat: 09 apr 2008, 17:39
av Lars
Istället för rmdir kan du köra rm -rf * (recursive och force). Rent generellt så kan det bli alldeles för mycket om man använder */*/* och liknande. Vad som händer är att skalet (bash) ersätter detta med "katalog1/katalog2 ... katalog2/katalog3 ...", vilket som du har märkt kan bli en ganska lång rad. Så om det finns en flagga till shred som gör den rekursiv så är det bra (kolla med man shred, det är ofta -r eller -R).

Eller så kan man använda find med exec-flaggan.

Re: För många argument?

Postat: 09 apr 2008, 18:10
av Mekaniserad Apelsin
Lars skrev:Eller så kan man använda find med exec-flaggan.
Find har en delete-flagga, dvs man kan söka efter en sak och ta bort den i samma argument.

Men det bästa är att shred har en delete-flagga, och ska du slänga filer (och inte hela filsystem) så kan du lika bra använda den (-u)

Och slutligen, shred ska helst inte användas på ext3, den har journalen igång normalt, så den gör inte det du vill göra. Prova att kryptera hårddisken istället?

Re: För många argument?

Postat: 09 apr 2008, 18:53
av Lars
Jo, men normalt är det bara metadata (filnamn etc) som hamnar i journalen, inte själva filinnehållet.

Re: För många argument?

Postat: 13 apr 2008, 18:43
av Yuh Learn
Tack ska ni ha. Nu har jag lärt mig lite nytt och allt funkar som det ska.
Jag klarar mig bra utan utdata. Det viktiga var att slippa felmeddelanden, rent kosmetiskt alltså.