abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 11:44 | Zajímavý článek

Arsenij Zinčenko v zápisku sdílí technické poznámky o tom, co je to „klíčenka“ (keyring) v Linuxu a v desktopovém prostředí, jak to souvisí se Secret Service a D-Bus, včetně příkladů. Význam těchto služeb spočívá v uložení a následném poskytování autentizačních údajů.

Fluttershy, yay! | Komentářů: 0
7.12. 01:44 | Nová verze

V únoru 2014 bylo hlasováním rozhodnuto, že výchozím init systémem v Debianu je systemd. V listopadu stejného roku bylo hlasováním rozhodnuto, že o podpoře dalších init systémů v Debianu není celoprojektové hlasování nutné. Po pěti letech už ale hlasování o init systémech a systemd nutné je. Vybírá se z 8 možností. Výsledek hlasování bude zveřejněn po 27. prosinci.

Ladislav Hagara | Komentářů: 27
7.12. 00:11 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot, se rozhodl, že svůj komiks vydá také knižně a ve vlastní režii. Komiks již knižně vyšel ve francouzštině ve vydavatelství Glénat. David Revoy jej vydá v angličtině a použije pouze svobodný software. O své zkušenosti se dělí ve dvou příspěvcích na svém blogu. Z plánovaných dvou týdnů práce se staly dva měsíce. Vydání před Vánocemi se nestihne. Kontrolní výtisk má příliš jasné barvy, obrázky v knihách od Glénatu vypadají mnohem lépe, …

Ladislav Hagara | Komentářů: 1
6.12. 20:44 | IT novinky

Mezinárodní konsorcium W3C (World Wide Web Consortium) vydalo verzi 1.0 základní specifikace WebAssembly a po HTML, CSS a JavaScriptu prohlásilo WebAssembly za čtvrtý oficiální jazyk pro web.

Ladislav Hagara | Komentářů: 14
6.12. 13:33 | Komunita

Hlasování o obrázku v okně O Inkscapu 1.0 pokračuje druhým kolem. Ze 124 obrázků postoupilo do finálního hlasování 5 s nejvíce hlasy. Výsledek hlasování bude zveřejněn po jeho ukončení, tj. po 15. prosinci.

Ladislav Hagara | Komentářů: 8
6.12. 02:11 | IT novinky

Společnost Purism představila mobilní telefon Librem 5 USA. Jedná se o telefon Librem 5 vyráběný v USA. Předobjednat jej lze za 1 999 dolarů. Librem 5 lze předobjednat za 699 dolarů.

Ladislav Hagara | Komentářů: 37
5.12. 22:22 | Nová verze

Příspěvek na blogu organizace Electronic Frontier Foundation (EFF) informuje, že Certbot, tj. oficiální klient certifikační autority Let’s Encrypt, dospěl do nové stabilní verze 1.0. Oficiálně tak byla ukončena beta fáze jeho vývoje. Certbot byl představen v květnu 2016.

Ladislav Hagara | Komentářů: 0
5.12. 15:55 | Zajímavý software

Mozilla vydala novou verzi 0.6 svobodného softwaru DeepSpeech pro převod řeči na text. Přehled novinek v příspěvku na blogu Mozilla Hacks.

Ladislav Hagara | Komentářů: 4
4.12. 17:33 | Zajímavý projekt

Dnes měl na YouTube premiéru krátký sci-fi film SKYWATCH. Colin Levy na něm strávil téměř 6 let. Pro vytvoření 3D grafiky byl vybrán Blender. Film byl z části financován z kampaně na Kickstarteru.

Ladislav Hagara | Komentářů: 3
4.12. 05:55 | Zajímavý software

Netflix uvolnil framework pro datovou vědu Metaflow jako open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 44
Jaké hodinky nosíte (nejčastěji)?
 (23%)
 (6%)
 (17%)
 (54%)
Celkem 520 hlasů
 Komentářů: 135, poslední 6.12. 20:54
Rozcestník

Pozměněný příkaz ls

25.12.2010 19:44 | Přečteno: 2039× | gnu_linux | Výběrový blog

Jako obvykle jsem se v linuxu zatoulal někam, kam jsem se ani nechtěl dostat, ale vadilo mi už delší dobu, že výpis příkazu ls neukazuje dole souhrn podobný DOSovskému dir. Někdo může namítnout, že to dělá příkaz du, jenže ten se chová (pro můj vkus) dost podivně - vzhled výpisu je dost odlišný od ls atd. Nebudu to teď rozebírat, každý si du může vyzkoušet sám. Nakonec jsem po delší době skončil s docela šikovným skriptem, třeba se někomu taky bude hodit. Podotýkám, že programování v bashi nesnáším a moje vědomosti se v něm blíží nule (než jsem přišel na to, že uvnitř hranatých závorek podmínky "if" musí nutně být vlevo/vpravo mezery, to mi dalo zabrat). Skript se může nazvat jakkoli, já si ho hodil do ~/bin/, nazval jsem ho "dir" a mám v .bashrc alias se zkratkou "lu" (něco jako "list usage") kvůli kratšímu názvu :-D

Tak tady je ta šílenost:

#!/bin/bash
# 2010-12-25  version 0.1

ls -oFX --color=auto --group-directories-first --time-style=long-iso;
echo ==========;
t=`du --human-readable --separate-dirs --one-file-system --summarize`;
# next line strips the dot at the end of the string
t=${t%\.}
f=0; for i in `find -maxdepth 1 -type f`; do let f++; done;
h=0; for i in `find -maxdepth 1 -type f -name ".*"`; do let h++; done;
if [ $f == 1 ] ; then
    str1="FILE"
else
    str1="FILES"
fi

if [ $h == 1 ] ; then
    str2="FILE"
else
    str2="FILES"
fi
echo "TOTAL SIZE $t IN $f $str1 ($h HIDDEN $str2)";
Jak si pozorný čtenář povšiml, přidal jsem i výpis počtu souborů a kolik je z toho skrytých souborů. Dále jsem "opravil" to, kvůli čemu by zasloužil Micro$oft nakopat do zadku: v DOSu se totiž vypisovalo(stále vypisuje?) "file(s)", místo aby se bralo v potaz jednotné a množné číslo. Ještě jednou upřesňuji, že se celkový součet všech velikostí týká pouze souborů v aktuálním adresáři.

Jakékoli nápady na zlepšení/zjednodušení uvítám. P.S. Proč sem nejde vložit 8-bitové PNG??? Bere to jen 24-bitové.        

Hodnocení: 75 %

        špatnédobré        

Anketa

Jak často používáte ls?
 (93 %)
 (4 %)
 (1 %)
 (2 %)
Celkem 94 hlasů

Obrázky

Pozměněný příkaz ls, obrázek 1

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

Komentáře

Vložit další komentář

poky74 avatar 25.12.2010 19:51 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls

Slušeno by se k tomu ls přidat i parametr -h

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
Jendа avatar 26.12.2010 01:12 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
<rejp>Nebo --si. Já jsem si takový alias (lals -al --si --color=auto --file-type udělal. Když nejde Mohamed k hoře…</rejp>
Reverse-engineer? I can barely forward-engineer!
25.12.2010 20:04 CoC
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
ll? :)
gtz avatar 25.12.2010 20:49 gtz | skóre: 27 | blog: merlins | Brno - Venkov / Rosicko
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
co?

ll je snad jen alias ls -l
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
Shadow avatar 26.12.2010 21:16 Shadow | skóre: 25 | blog: Brainstorm
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
ls -ll
If we do not believe in freedom of speech for those we despise we do not believe in it at all.
gtz avatar 26.12.2010 22:02 gtz | skóre: 27 | blog: merlins | Brno - Venkov / Rosicko
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
No v Suse je ls -l stejné jako ls -ll , tedy stejné jako alias ll.
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
27.12.2010 23:33 zulu
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Možná narážel na to, že na prvním řádku je total.
25.12.2010 21:15 Stevko | skóre: 3 | Praha
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Ony tam tie hranaté zátvorky za if nemusia byť vôbec.
Príspevok nemá byť ukončený spojením „môj názor“.
25.12.2010 21:20 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
A to bych se hádal...
mrkva@Destiny:~$ if [ 0 -eq 0 ]; then echo j; else echo n; fi
j
mrkva@Destiny:~$ if 0 -eq 0; then echo j; else echo n; fi
bash: 0: příkaz nenalezen
n
(Jasně, je tu  test).
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
25.12.2010 22:14 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
A co třeba
if grep neco soubor > /dev/null
then
 echo "neco je v souboru"
fi
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
25.12.2010 22:18 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
To samozřejmě fungovat bude.
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
25.12.2010 22:25 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Takže to jde i bez závorek :-) test stejně často bývá hardlink na [. A kdyby šlo o to porovnání, tak máme třeba ještě expr:
if expr $f '=' 1 > /dev/null
then
 ...
fi
Pamatuju si, na svůj první unixový předmět - přednášející nám říkal: "Za if je příkaz, když mi někdo bude u zkoušky tvrdit, že test nebo hranatá závorka, tak ho vyhodím."
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
25.12.2010 22:38 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Samozřejmě, že to jde opsat tak, aby nebyly použité závorky. Ale když z if [ $f == 1 ] ; then jen odeberu závorky, tak to fungovat prostě nebude.
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
25.12.2010 22:46 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Takle ano, ale já pochopil Stevkovu poznámku (a vlastně i to, co je v blogu) obecněji.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
29.12.2010 16:37 Jirka P
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Za if je příkaz
Blbě, za if je jeden nebo více příkazů.
25.12.2010 23:13 disorder | blog: weblog | Bratislava
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
testovanie navratovej hodnoty ide aj bez toho, ale to je nieco ine
25.12.2010 23:16 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Něco jako:
grep neco soubor && echo "neco je v souboru"
?

Nebo jeste neco jinyho?
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
27.12.2010 18:13 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Ona totiz ta zavorka je obycejnej program, zkuste si "which [" a dela vpodstate to same co program test, akorat ze posledni argument musi byt ]. Neni to tedy zadna shellova konstrukce, ale byva i casto vestavena do shellu, kvuli rychlosti.
28.12.2010 11:40 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
A tvrdím někde opak? :)
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
26.12.2010 10:30 Dundee5 | skóre: 17 | blog: Dundee5 | Praha
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Hranate zavorky jsou synonymum pro prikaz test. Tam kde chceme pouzivat nejakou slozitejsi podminku (porovnani, kontrola hodnoty), musi se pouzit zavorky. Kdyz overujeme jen navratovou hodnotu prikazu, zavorky nejsou potreba.
Kdo se vzdá svobody, aby získal jistotu, ztratí nakonec obojí. --Benjamin Franklin
25.12.2010 22:29 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Ten find mi tam připadá jako kanón na vrabce, určitě by to šlo nějak udělat pomocí ls, grep a wc. Nebo možná i bez grepu...
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
25.12.2010 23:14 disorder | blog: weblog | Bratislava
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
ked uz sa v tom rypeme, tak = (v ziadnom pripade nie "=="!) je porovnanie stringov a -eq je porovnanie integerov

vid man test
Jendа avatar 26.12.2010 01:10 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
for i in `find -maxdepth 1 -type f`; do let f++; done;
Když už, tak find -maxdepth 1 -type f | wc -l a určitě by to šlo ještě úsporněji.

Mimochodem, skutečně budou čísla sedět, když bude v aktuálním adresáři soubor, který bude mít v názvu nějaký znak z $IFS? ;-)
Reverse-engineer? I can barely forward-engineer!
Amarok avatar 26.12.2010 09:16 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Dik za namety, opravil jsem par veci (a odstranil jsem zbytecne stredniky, kterych jsem si vsiml az dnes rano), tady aktualizovana verze:
#!/bin/bash
# 2010-12-25  version 0.2

ls -oFX --color=auto --group-directories-first --time-style=long-iso
echo ==========
t=`du --human-readable --separate-dirs --one-file-system --summarize`
# next line strips the dot at the end of the string
t=${t%\.}

f=`find -maxdepth 1 -type f | wc -l`
h=`find -maxdepth 1 -type f -name ".*" | wc -l`

if [ $f -eq 1 ] ; then
    str1="FILE"
else
    str1="FILES"
fi

if [ $h -eq 1 ] ; then
    str2="FILE"
else
    str2="FILES"
fi

echo "TOTAL SIZE $t IN $f $str1 ($h HIDDEN $str2)"
Uz zbyva jen urychlit prvni spusteni (napr. v ~/ je to dost znat, domnivam se, ze to zpusobuje "du", ktery i pres parametr --summarize stejne leze do podadresaru a neco tam pocita). Vedel by nekdo, jak na to?
GNUniverse - May the source be with you...
26.12.2010 11:30 repli
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Vyhodit du ;-) To prostě přečte proleze vše. Druhé spuštění je rychlé jen proto, že se to pak nakešovalo.

Tenhle skriptík je sice hezký, ale právě tenhle důvod bude jeden z těch proč to už v unixu takhle uděláno není.
Amarok avatar 26.12.2010 11:47 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
S tim kesovanim je to jasne. To druhe nechapu, spis bych rekl, ze jde o osobni vkus, ja vetsinou pouzivam alias pro trochu rozsireny ls a soucet bajtu me vetsinou nezajima. Tenhle skriptik se mi hodi jen obcas.
GNUniverse - May the source be with you...
Jendа avatar 26.12.2010 14:44 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
je to dost znat
Tak to toho máš v ~ ještě celkem málo, když je to „jenom“ dost znát:
78G	.

real	2m2.525s
user	0m1.416s
sys	0m7.132s
Reverse-engineer? I can barely forward-engineer!
26.12.2010 15:56 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
To máš ještě dobrý...
58G	.

real	4m32.711s
user	0m0.280s
sys	0m2.920s
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
Amarok avatar 27.12.2010 07:43 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
:-D No jo, ja taky cpu velka data na externi disk, takze se u me jedna jen asi o 4 sekundy.

Mimochodem jak zmeris ten cas, to jde jakym prikazem?
GNUniverse - May the source be with you...
Marián Kyral avatar 27.12.2010 08:51 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
$ time du -s --si *
17k     lost+found
15G     marian
1,7M    test

real    0m21.347s
user    0m0.830s
sys     0m0.379s
27.12.2010 09:54 Georgius | skóre: 24 | blog: jirka
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
no je vidět že nemusíte řešit 20000 souborů v jednom adresáři - potom je výstup ls moc dlouhý a spousta věcí přestává fungovat (takové `command $(ls *blabla)` přestává fungovat už někde okolo 6000 souborů). V takovém případě vám zachrání zadnici právě find.

Pro rýpaly, co mi začnou vysvětlovat, že si to mám rozdělit - data posílá third-party software, který neovlivním.
Amarok avatar 27.12.2010 23:16 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
Věděl by někdo, jak pomocí jednoduchého ls zobrazit reálný součet bajtů? Když použiju
ls -l --block-size=1
tak dostanu zřejmě číslo, které vyjadřuje celkové zabrané místo na disku. Upřesním:
total 32768
-rw-r--r-- 1 ghaad users 4615 Dec  7 11:12 file1.inc
-rw-r--r-- 1 ghaad users 4666 Dec  7 10:52 file2.inc
-rw-r--r-- 1 ghaad users 5447 Dec  7 11:02 file3.inc
-rw-r--r-- 1 ghaad users 5267 Dec  7 11:06 file4.inc
Na disku soubory zabírají dohromady zřejmě 32768 bajtů, reálný součet je ale 19995 bajtů.

Ten můj šílený skript přepisuju, jde to celé opravdu napsat o dost čistěji a bez použití du, čímž eliminuju tu pomalost při prvním spuštění.
GNUniverse - May the source be with you...
27.12.2010 23:31 zulu
Rozbalit Rozbalit vše Re: Pozměněný příkaz ls
alias ll='ls -l'
alias lh='ls -ld .*'
alias xdu='du -hs *'
alias xdh='du -hs .[^.]*'

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.