Portál AbcLinuxu, 26. května 2024 15:14


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

Vložit další komentář
7.6.2005 10:08 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše To samé?
Odpovědět | Sbalit | Link | Blokovat | Admin
$ basename2() { set -- "${1%$2}"; echo ${1##*/}; }
$ basename2 /usr/bin/

$ basename /usr/bin/
bin
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
7.6.2005 10:11 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: To samé?
Ještě doplním:
$ basenameset /usr/bin/
$
tedy prázdný řetězec.
7.6.2005 10:13 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: To samé?
Sorry, nepřečet jsem si to pořádně :-).
$ basenameset a /usr/bin/
$ echo $a

7.6.2005 10:16 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: To samé?
OK. Big bug. Snadný fix.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 10:24 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: To samé?
Když tak nad tím přemýšlím, tak to není až zas takový bug. Používat basename na jména adresářů není až zas tak typické použití a strkat tam ještě navíc lomítko je vyložený naschvál :-). Když už to někdo chce takto použít, tak si to může fixnout. Pro běžné použití je to zbytečné.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 10:49 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: To samé?
No pokud o něčem tvrdíš, že to dělá to samé jako basename a nedělá, tak to je bug, o opaku mě nepřesvědčíš :-). Kdybys to nazval něco jako basename, tak klidně :-).

A čím jiným vykuchat název adresáře než pomocí basename?
7.6.2005 11:30 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: To samé?
Fixnutou verzí :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2005 21:30 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
Rozbalit Rozbalit vše :-(
Odpovědět | Sbalit | Link | Blokovat | Admin
Tedy, dočíst se ,,standartní`` už i u nich, to zamrzí :-(
Copak toho není dost?
8.6.2005 06:40 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: :-(
Už i u nich? Oni tohle vynalezli. Oni si to možná nechají patentovat :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
13.10.2005 23:09 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše pokus v Pythonu
Odpovědět | Sbalit | Link | Blokovat | Admin
Zkusil jsem zhruba totéž v Pythonu. Tady jsou výsledky:
$ cat basename.py
#!/usr/bin/env python
import os

for file in os.listdir('.'):
  a = os.path.basename('./' + file)
$ time ./basenameset.sh

real    0m3.417s
user    0m3.152s
sys     0m0.096s
$ time ./basename.py

real    0m0.343s
user    0m0.252s
sys     0m0.076s

Takže v Pythonu je to asi tak desetkrát rychlejší. O složitosti nemluvě. Ale je pravda, že to není úplně _přesně_ totéž.
14.10.2005 12:35 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pokus v Pythonu
Ano, jinými slovy, basename implementované v tom samém jazyce jako je spracovávaný script, ve kterém to potřebujete je vždycky rychlejší než volat něco externě a python je rychlejší než bash. Zkuste si napsat script, který udělá basename ze svého parametru a použijte ho místo bashového basename ve scriptu basename_in_shell.sh. Myslým, že se budete dost divit. Mimochodem perlivé
#!/usr/bin/env perl
use File::Basename;
$a=basename($_) foreach (<.*>);
je o 5% rychlejší :) (Což bude nejspíš stejně způsobeno o chlup rychlejším natažením perl interpretru než pythonu)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.10.2005 12:44 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: pokus v Pythonu
Safra, chybička se vloudila. Správně má být
#!/usr/bin/env perl
use File::Basename;
$a=basename($_) foreach (<*>);
což je jen o cca 2% rychlejší.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

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.