bash
Toto je starší verze dokumentu!
Obsah
- uplne mega super navod na bash
- prace s retezci (nahrazeni, orezenani, zjisteni delky …)
find
- spuštění více příkazů u exec
- vypíše 2 prefixy pro každý soubor
find . -exec echo "pr1:{}" \; -exec echo "pr2:{}" \;
- vypíše soubory a u souborů obsahující podřetězec find vypíše replace
find . -exec sh -c "echo {} | sed 's/find/replace/g'" \;
- spuštění více příkazů bez exec
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done
- zrušení rekurzivního procházení
find . -maxdepth 1 -exec echo {} \;
- přejmenování přípony souborů
find . -name \*.html -exec echo -n "mv {} " \; -exec sh -c "echo {} | sed 's/\.html/\.phtml/g'" \; | sh
odstranění duplicitních řádků
- mám slovník, který vzniknul spojením více malých a chci oddělat duplicity
- uniq - odstraní duplicity, ale jen když jsou duplicitní řádky po sobě
- sort - umí setřídit řádky k sobě :)
sort all > sortedall uniq sortedall uniqsortedall
vyřazení řádků kratších než 8 znaků
- první nápad s for cyklem - děsně pomalé, asi 0.1KB/s
for i in `cat uniqsortedall`; do COUNT=$(echo $i | wc -m); if [ $COUNT -gt 7 ]; then echo $i >> cutteduniqsortedall; fi; done
- druhý nápad s readline - pomalé, asi 0.2KB/s
while read line; do COUNT=$(echo $line | wc -m); if [ $COUNT -gt 7 ]; then echo $line >> cutteduniqsortedall; fi; done < uniqsortedall
- nejlepší nápad za pomocí google :)
awk '{ if (length() > 8) print $0 }' uniqsortedall > cutted8uniqsortedall
procesy, otevrene spojeni
- zabiti potomku procesu
kill_children_of() {
CHILDS=`ps -ef | awk '$3 == '${1}' { print $2 }'`
for CHILD in $CHILDS; do
echo "killing child $CHILD"
#kill $CHILD
done
}
- hodne detailni info o procesech
ps -aux
- vypis tcp soketu vcetne procesu (-p)
netstat -tanp
- zjisteni, ktere procesy pouzivaji soubor
djbuldog@Pharaon:~$ fuser -v /dev/snd/pcmC*
Cannot open /proc/swaps
UŽIVATEL PID PŘÍSTUP PŘÍKAZ
/dev/snd/pcmC0D0p: djbuldog 3883 F...m pulseaudio
/dev/snd/pcmC1D0c: djbuldog 3883 F...m pulseaudio
- zjisteni otevrenych souboru a soketu
- aktivni spojeni lze vypsat parametrem -i tcp nebo -i4 nebo lsof -nl | egrep „TCP|UDP“
lsof
- zjisteni aktulaniho pracovniho adresare procesu
pwdx
bash.1329591571.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
