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

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Yuh Learn
Inlägg: 49
Blev medlem: 30 nov 2007, 02:20
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Uppsala

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

Inlägg 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!
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: För många argument?

Inlägg 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?
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: För många argument?

Inlägg 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.
Användarvisningsbild
Mekaniserad Apelsin
Hedersmedlem
Inlägg: 3777
Blev medlem: 27 maj 2006, 12:24
OS: Ubuntu
Ort: Stockholm
Kontakt:

Re: För många argument?

Inlägg 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?
More Mekaniserad at http://blippe.se.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: För många argument?

Inlägg av Lars »

Jo, men normalt är det bara metadata (filnamn etc) som hamnar i journalen, inte själva filinnehållet.
Yuh Learn
Inlägg: 49
Blev medlem: 30 nov 2007, 02:20
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Uppsala

Re: För många argument?

Inlägg 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å.
Skriv svar

Återgå till "Terminalforum"