Portál AbcLinuxu, 7. prosince 2025 09:44
Slušeno by se k tomu ls přidat i parametr -h
ls -ll
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).
if grep neco soubor > /dev/null then echo "neco je v souboru" fi
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 ... fiPamatuju 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."
if [ $f == 1 ] ; then jen odeberu závorky, tak to fungovat prostě nebude.
Za if je příkazBlbě, za if je jeden nebo více příkazů.
grep neco soubor && echo "neco je v souboru"? Nebo jeste neco jinyho?
Když už, takfor i in `find -maxdepth 1 -type f`; do let f++; done;
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?
#!/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?
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í.
ls a soucet bajtu me vetsinou nezajima. Tenhle skriptik se mi hodi jen obcas.
je to dost znatTak 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
58G . real 4m32.711s user 0m0.280s sys 0m2.920s
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?
$ time du -s --si * 17k lost+found 15G marian 1,7M test real 0m21.347s user 0m0.830s sys 0m0.379s
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.incNa 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í.
alias ll='ls -l' alias lh='ls -ld .*' alias xdu='du -hs *' alias xdh='du -hs .[^.]*'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.