Handigheidjes in BASH

Hieronder even wat handigheidjes die ik maar niet kan onthouden... ;-)

Tabs vervangen door spaties:

cat bestand.txt | tr '\011' ' '

(In dit voorbeeld is \011 een tab)

Meerdere spaties vervangen door een enkele:

cat bestand.txt | tr -s ' ';

3e woord van iedere regel weergeven:

cat bestand.txt | awk '{print$3}'

Zoeken naar string in 't 3e woord van iedere zin:

cat bestand.txt | awk '$3 == woord'

of:

cat bestand.txt | awk '$3 ~ /[a-z]/'

Reeks getallen weergeven

Handig voor gebruik in een for-loop:

seq 5 15

Bovenstaand voorbeeld geeft alle getallen van 5 t/m 15. Onderstaande geeft gewoon alles van 1 tot 15:

seq 15

Getal in variabele met 1 ophogen

Rekenen met bash is best lollig. Stel $joop heeft waarde "3". Deze kun je bijvoorbeeld ophogen met:

joop=$[$joop+1]

De waarde van $joop is nu 4.
Als je een getal met waarde 1 wilt ophogen kan het echter nog veel sneller:

((joop++))

Bestandsnaam bij inode nummer zoeken:

find / -inum XXXXXX -print

Zoeken binnen gzip gecomprimeerde logbestanden

Jaaaahhh, daar hebben wij onder andere zgrep, zcat en zless voor! ;-)

Extensie van meerdere bestanden wijzigen

Hiervoor is het basename commando erg handig. Voorbeeldje:

find -name *doc -exec mv {} `basename {} .doc`.txt \;

IP-adressen sorteren met 'sort'

Je kunt een delimiter opgeven en per veld sorteren, bij een ip-adres wordt dat dan een punt:

ip a | grep inet | awk '{print$2}' | cut -d'/' -f1 | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4

TCP poortje tunnelen via SSH

Tunneltje maken zonder een shell open te moeten houden doe je met de -N switch, met -L bouw je het tunneltje:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

Alle output redirecten naar /dev/null:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 &