Portál AbcLinuxu, 20. dubna 2024 05:56


Dotaz: Hledám funkci pro shell

29.11.2012 19:51 Jakub
Hledám funkci pro shell
Přečteno: 521×
Odpovědět | Admin
Hezná někdo takovou funkci která by fungovalav shellu?
function file_size($size)
{
$filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 Bytes';
}

Řešení dotazu:


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

Odpovědi

Josef Kufner avatar 29.11.2012 20:02 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Odpovědět | | Sbalit | Link | Blokovat | Admin
A proč to v tom PHP nenapíšeš celé?
Hello world ! Segmentation fault (core dumped)
pepe_ avatar 30.11.2012 12:11 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Hledám funkci pro shell

Proč označuješ řešení v PHP když je jasně dáno že to nemůže být v PHP ?

29.11.2012 20:05 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Odpovědět | | Sbalit | Link | Blokovat | Admin
file_size() {
php -r '$filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); print '$1' ? round('$1'/pow(1024, ($i = floor(log('$1', 1024)))), 2) . $filesizename[$i] : "0 Bytes";'
}
pepe_ avatar 30.11.2012 12:09 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Hledám funkci pro shell

On píše že nemá PHP tak proč tam cpeš PHP a proč je to jako řešení když to je nepravda ?

30.11.2012 15:28 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Protože informaci že nemá PHP dodal 12 minut PO publikování výše uvedeného "řešení"? Kauzalita, kauzalita, Pepe_.
29.11.2012 20:17 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potřeboval bych to přímo pro shell/bash, nemám chlapy na serveru php :-(
29.11.2012 20:20 Kit
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Některé systémové příkazy to mají už vestavěny, např.
df -h
29.11.2012 20:29 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Program df dělá ale zcela něco jiného než to, na co jsem se ptal.
29.11.2012 20:38 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Programy df, du, ls, etc. vypisují velikosti souborů, oddílů a podobných objektů. Čeho jiného proboha potřebuješ vypisovat velikost ve skriptu v shellu?

Obecně potřebuješ-li počítat logaritmy, budeš k tomu stejně spouštět nějaký program. Situaci, kdy si někdo píše výpočet logaritmu v shellu pro zábavu, neberu v úvahu, protože v tom případě se neptá, jak to udělat.

Takže to analogicky přepiš do libovolného skriptovacího jazyka, který tam k disposici je: perl, python (například), ruby, ... whatever.

pepe_ avatar 30.11.2012 12:10 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Hledám funkci pro shell

Proč označuješ řešení v PHP když je jasně dáno že to nemůže být v PHP ?

pepe_ avatar 30.11.2012 12:11 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Hledám funkci pro shell

Sorry Ty ne ...

30.11.2012 13:51 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Nic takového není v původním dotazu napsáno. Je tam napsáno, že se má zařídit, aby daná funkce fungovala v shellu.

A nějaký intepret nebo jiný nástroj se stejně bude spouštět.
29.11.2012 20:44 Kit
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Uživatelé se zde často ptají na hlouposti, které by vůbec nemuseli řešit, kdyby si přečetli manuál. Možná jenom potřebuješ vypsat velikost souborů v adresáři v nějakém příjemném formátu. To ale nevím. Jen mám pocit, jako kdyby ses ptal, jak máš zatloukat hřebíky šroubovákem.
29.11.2012 21:14 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Mám nějaký výsledek vždy v bytech, co potřebuji je to, že
pokud je výsledek > 1 YB - vypsat výsledek v YB
pokud je výsledek > 1 ZB a < 1 YB - vypsat výsledek v ZB
pokud je výsledek > 1 EB a < 1 ZB - vypsat výsledek v EB
pokud je výsledek > 1 PB a < 1 EB - vypsat výsledek v PB
pokud je výsledek > 1 TB a < 1 PB - vypsat výsledek v TB
pokud je výsledek > 1 GB a < 1 TB - vypsat výsledek v GB
pokud je výsledek > 1 MB a < 1 GB - vypsat výsledek v MB
pokud je výsledek > 1 KB a < 1 MB - vypsat výsledek v KB
29.11.2012 21:44 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
s() {
    p=BKMGTPEZY; a=${p:$(((${#1}-1)/3)):1}; if [ -z $a ]; then t=${1:0:$((${#p}*3+6-${#1}))}; else t=$(((${#1}-1)%3+1)); t=${1:0:$t}.${1:$t}; t=${t:0:4}; t=${t%.}; fi; t=$t${a:-Y}; echo ${t%B}B
}
29.11.2012 23:14 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
LOL :D Ale asi to není pro sílu dvou, co?
29.11.2012 23:46 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
To záleží na číselné soustavě, ve které je číslo zapsáno. Skriptu je to jedno, pro něj je číslo jakýkoli string ;)

Takže když ho zapíšeš binárně (čtyřkově, dvaatřicítkově, ...), dá se jet i po mocninách 1024. Nechávám to jako cvičení čtenáři :o)
1.12.2012 02:19 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Dobrá myšlenka, nechat algoritmus jak je a pro dosažení potřebného efektu přizpůsobit data.
30.11.2012 00:05 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
To mám spouštět z diskety? Flopárnu fakt nemám...
30.11.2012 00:16 Kit
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Co to má společného s disketou? Je to řešení tvého problému, tak si nestěžuj.
30.11.2012 00:22 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Já si nestěžuju, ale neovládam ani shell, natož assembler ;-)
30.11.2012 06:51 Kit
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Kde vidíš assembler?
30.11.2012 00:23 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Jinak moc díky za funkci...
30.11.2012 00:36 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Teď se dívám, že je výsledek je správný jen pokud očekávám výsledek jako decimal, tak to není nic pro mne, potřebuji převádět v binary. Tak že dotaz je stále aktuální :(
30.11.2012 00:59 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
V tom případě platí tato odpověď: http://www.abclinuxu.cz/poradna/programovani/show/369837#6

Shell k tomu nemá prostředky. Jeho aritmetické funkce nezaručují, že sevůbec ty yoctobajty do integerové proměnné vejdou.
30.11.2012 03:02 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
A něl by ten konec funkce být takto?
místo .....echo ${t%B}B takto .....echo ${t%B}b ?
30.11.2012 03:02 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
A neměl by ten konec funkce být takto?
místo .....echo ${t%B}B takto .....echo ${t%B}b ?
30.11.2012 11:25 l4m4
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Malé b je u nás bit, velké B je bajt.
30.11.2012 17:33 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Malé b je u nás bit, velké B je bajt.
Ano, přesně tak... IHMO, předpokládám, že jsme stejného názoru a že 1MB == 1000KB, nikoli 1024.
30.11.2012 17:52 Kit
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
V tom případě máš chybu v zadání.
30.11.2012 17:55 Jakub
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
jj, máš pravdu, ale ta funkce neni moje, nevšiml jsem si...
30.11.2012 18:03 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Nechci to rozviřovat, ale nemělo by tedy být 1MB == 1000kB ?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 30.11.2012 18:13 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
To máš naprostou pravdu. Když už je někdo SI nazi, tak by měl ty značky alespoň dodržovat.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
30.11.2012 18:27 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Ono totiž odvozeno od Kelly-Bootle jednotky, tedy KB (1012B == 1KB), by to bylo 1MB == 1012KB.
(Pro Sheldona: „to je vtip“.)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
30.11.2012 17:30 darkenik
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Tak vseobecne shell nema vela prostriedkov. Nastastie na co nestaci shell, na to mame ine utility. Ak autor nema moznost to napisat v inom skritovacom jazyku. Tak na aritmeticke operacie mu odporucam utilitu bc a tento clanok
3.12.2012 08:29 George O.
Rozbalit Rozbalit vše Re: Hledám funkci pro shell
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co perl nebo python? Pokud vim, tak na serverech jsou interprety na tyto dva jazyky nativne a takovy perl je php na teto urovni docela podobny. Urcite pouzitelnejsi jazyky pro tento pripad, nez bash :-)

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.