Bash

Aus Digiwiki

Wechseln zu: Navigation, Suche
Diese Seite ist veraltet oder unvollständig
(Unvollständig)


Notizblock Shell befehle

Inhaltsverzeichnis

Allgemeines

variablen

bsp.:

MY_VARIABLE=10


bsp2:

echo $MY_VARIABLE


if

if [ 1 ]; then echo hallo; else echo "kommt nicht vor"; fi

while

while [ 1 ]; do echo hallo; done

File Zeilenweise verarbeiten (Beispiel: Leerzeichen durch Punkt zu)

while read -r line; do echo $line|sed 's/ /./g'; done < file

-n

gibt true zurück wenn Argument nicht leer ist

[ -n Argument ]

bsp.:

if [ -n "" ]; then echo hallo; else echo " ist natürlich leer" fi

gibt hallo zurück


bsp2:

if [ -n "$pidof firefox-bin" ]; then echo "firefox nicht"; else echo "firefox läuft"; fi

testet ob Firefox läuft

Ändern der Anzeige der Ausgabezeile

p=$1
e=$2
esc_seq="\r\033[K"

lookfor()
{
 echo -en "$esc_seq [ searching $1 ]"
 find $1 -name "*.$e" ! -path '*EXP*' ! -path '*STAB*' ! -path '*PROD*' -print 2>/dev/null|xargs grep -il "$p"|sed 's/^/\r/g'
}

lookfor $HOME/.local/src
lookfor /usr/src
echo -en "$esc_seq"

echo -en "\r\033[K foo"

\r       springt zum Anfang der Zeile
\033[K   löscht bis zum Ende der Zeilen

nützliche Programme

sehr empfehlenswert ist http://www.reallylinux.com/docs/admin.shtml

allgemein

vim

Vim ist ein sehr mächtiger texteditor für die Konsole, und eignet sich nicht nur vorzüglich zum Bearbeiten von Konfigurationsdateien, sondern ist auch mittlerweile mein bevorzugtes Programmierwerkzeug. die wichtigsten VI Kommandos:

Befehle:
:q - schließt Vim
:q! - schließt Vim und verwirft alle nichtgespeicherten Änderungen
:w - schreibt das File (eventuelle Veränderungen)
shortcuts
Einfügen Taste oder i - wechseln in den Bearbeitungsmodus
Escape Taste - wechseln aus dem Bearbeitungsmodus zurück in den Befehlsmodus
u - suchen
# und * - Springe zum nächsten/vorherigen vorkommen des Wortes unter dem Cursor
v, shift-v und ctrl-V - Zeichen, Zeile, Block markieren

z.B.:

vim /etc/modules

echo

gibt einen String aus

z.B.

echo "hallo"

gibt hallo in der Konsole aus


MY_VARIABLE="hallo"
echo $MY_VARIABLE

gibt hallo in der Konsole aus

> und < (Pipe)

(nicht wirklich ein Programm) dient dazu ausgaben umzuleiten

z.B.

echo "everything works fine" > ~/mylog

schreibt everything works fine in die Datei mylog im Homeverzeichnis des Nutzers

cat

gibt den Inhalt eines Files aus.

z.B.:

cat /etc/modules

gibt den Inhalt von /etc/modules in der Konsole aus


Treu der Linux-Devise "alles ist ein File" lassen sich damit auch sound Files (.au, sowie .wav, allerdings kann bei wav die Geschwindigkeit falsch sein) wiedergeben, indem wir den Inhalt zur Soundkarte "schreiben" z.B.

cat ~/mysoundfile.au > /dev/audio


Ein anderes Beispiel wäre das durchschleifen des Mikros an die Boxen

cat /dev/audio > /dev/audio 

prozesse

pidof

gibt die Process ID eines laufenden Programms zurück


bsp:

if [ -n "$pidof firefox-bin" ]; then echo "firefox nicht"; else echo "firefox läuft"; fi


lsof

liefert die Programme die auf ein bestimmtes Verzeichnis zugreifen

lsof /media/hda4

konsole,xterm,...

Befehl in konsolenfenster ausführen

-e befehl


bei Konsole

konsole -noclose -e befehl

hält die konsole nach beendigung offen


wlan

wlanconfig

zum erstellen oder zerstören von wireless devices

Bsp.:

wlanconfig ath create wlandev wifi0 wlanmode ap

erstellt ein wlan Interface ath0-ath7 im access point modus (verträgt sich nicht mit schon existierendem devices im managed modus)


Bsp2:

wlanconfig ath0 destroy

entfernt ath0

iwconfig

Bsp.:

iwconfig ath0 essid "Mywlan"

Automatisiertes ändern von Files

Umbenennen

for i in *; do mv "$i" "$(echo "$i" | tr 'abc' '123')"; done

ersetzt in jedem File und Ordnernamen den String abc durch 123 z.b.

myfileabc.txt wird zu myfile123.txt
for i in *; do mv "$i" "$(echo "$i" | sed 's/[0-9]/Nr&/')"; done

stellt vor das erste Zahlenvorkommen in einen File und Ordnernamen ein Nr z.b.

myfile123-abc456.txt wird zu myfileNr123-abc456.txt


Ersetzen von Inhalten

sed "s/TEXT1/TEXT2/g" -i FILE

ersetzt im File FILE jedes Vorkommen von TEXT1 durch TEXT2

for i in `grep -rl TEXT1 /PFAD/ZUM/ORDNER`; do sed "s/TEXT1/TEXT2/g" -i $i;done

ersetzt rekursiv alle Vorkommen von TEXT1 durch TEXT2 in Files innerhalb des Ordners /PFAD/ZUM/ORDNER


Log Überwachung und Ergänzung

Log auf eine Nachricht überwachen, und die CPU Last zu diesem Zeitpunkt ergänzen

- Überwache Log auf Einträge die "100ms" bis "99999ms" enthalten

tail -f stat.log|grep -i "[0-9]\{3,5\}ms"

- dann ergänze die CPU Last (sed: s/\$/.../g ->am Ende der Zeile etwas anhängen, top+grep-> aktuelle CPU Last)

tail -f stat.log|grep -i "[0-9]\{3,5\}ms"| sed "s/\$/; $(top -bn1|grep Cpu)/g" >> metastat.log
Persönliche Werkzeuge