Portál AbcLinuxu, 29. dubna 2024 02:27


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
Luk avatar 26.11.2009 15:39 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Podle mého názoru je v pořádku, že se chyba pro smazání "" označuje jako "invalid argument" (protože prázdný řetězec není platným názvem souboru). Něco jiného je ale to, že se dost zásadně mění chování takového klíčového programu, protože existuje nesčetně skriptů, které ho využívají. Proto si myslím, že by to sice mělo hlásit něco o neplatnosti názvu souboru (ne neexistenci), ale že by to ty zbývající soubory mělo smazat.
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
kotyz avatar 26.11.2009 17:16 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
hmm, v archu to jeste neni

rm (GNU coreutils) 7.6

Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
26.11.2009 17:38 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Hm taky jsem koukal.
Nejspíš proto, že tohle chování by mohl být celkem problém pro AUR a ABS, dost programů na to určitě nejsou připravený.

Stejně si myslim, že pokud to v coreutils "neopraví", někdo na to napíše patch, a bude to...
27.11.2009 07:34 Tom K | skóre: 21
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Invalid argument se mi jevi, jako spravna hlaska, ale A a C by bylo vhodne smazat. Tam nekde bude bota a zadal bych jeji opravu.
echo -n "u48" | sha1sum | head -c3; echo
27.11.2009 13:17 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak jsem koukal, kde se to vzalo a problem je je tohle (viz NEWS):
** Improvements

  rm: rewrite to use gnulib's fts
  This makes rm -rf significantly faster (400-500%) in some pathological
  cases, and slightly slower (20%) in at least one pathological case.

  rm -r deletes deep hierarchies more efficiently.  Before, execution time
  was quadratic in the depth of the hierarchy, now it is merely linear.
  However, this improvement is not as pronounced as might be expected for
  very deep trees, because prior to this change, for any relative name
  length longer than 8KiB, rm -r would sacrifice official conformance to
  avoid the disproportionate quadratic performance penalty.  Leading to
  another improvement:

  rm -r is now slightly more standards-conformant when operating on
  write-protected files with relative names longer than 8KiB.
Ono totiz uz selze inicilalizace fts (inicializace souboru pro smazani). Predtim se soubory neinicializovali najednou (nepouzivalo se fts) a chyba se preskocila (ted selze inicializace jako celek). By me zajimalo jak to hodlaj resit, az se nekdo ozve.
1.12.2009 19:19 Ladislav Hagara | skóre: 102 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Jsem se ozval, chyba opravena. Mé jméno se navíc objevilo v THANKS. :-)
Luboš Doležel (Doli) avatar 27.11.2009 14:59 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Já vám nevím, od čeho tu máme argument -f?
29.11.2009 19:08 Ladislav Hagara | skóre: 102 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
-f nepomůže
# rm --version | head -1
rm (GNU coreutils) 8.1
# touch -f a b c; rm a b "" c; ls
rm: invalid argument: `'
a  b  c
#
29.11.2009 19:10 Ladislav Hagara | skóre: 102 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Sorry, -f mělo být u rm ne o touch. Výsledek je ale stejný.
# touch  a b c; rm -f a b "" c; ls
rm: invalid argument: `'
a  b  c
29.11.2009 22:14 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin

Odpověď si můžeme přečíst v rm(1p):

For each file the following steps shall be taken:

        1. If the file does not exist:

            a. If the -f option is not specified,
               rm shall write a diagnostic
               message to standard error.

            b. Go on to any remaining files.
2.12.2009 23:20 Vaclav Bilek | skóre: 5
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobry postreh! Dekuji za prispevek.

Prestoze souhlasim s vetsinou argumentu kolegu diskuteru, mam tu jedno "ale" pro diskuzi.

Co tak brat volani rm, jako komplexni pozadavek na smazani skupiny souboru.Potom prazdne jmeno souboru muze byt chapano jako chyba v pozadavku a proto se pozadavek nevyplni jako celek. Proste transakce neprobehne prave kvuli spatnym argumentum. Domnivam se, ze kdyz nekdo zada mnozinu souboru a jeden do mnoziny nepatri, tak to asi nebyl zamer, nebo jsem uplne mimo?

Prosim no flame, jen by mne zajimal vas nazor.

Tato zmena chovani by pak sla potlacit nejakym prepinacem, ktery vy vypinal toto prednastavene chovani. Stare skripty by jen pridali jeden prepinac a nemuseli by menit logiku.

3.12.2009 18:41 maertien
Rozbalit Rozbalit vše Re: coreutils 8.1 aneb není rm jako rm
Odpovědět | Sbalit | Link | Blokovat | Admin
Autori skriptu by si meli tu promennou nejdrive zkontrolovat, nez to poslou rm a nedivit se chybovym hlasenim. Ale aby rm nesmazalo ostatni zadane soubory to je taky drsne. To aby ted clovek se skripty distribuoval vlastni verzi coreutils, proti ktere bude jeho dilko fungovat bez takovychto chyb.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.