Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


fortgeschrittene:skripte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
fortgeschrittene:skripte [2011/11/14 17:47]
ingo_wichmann [Suchen und Ersetzen mit bash]
— (aktuell)
Zeile 1: Zeile 1:
-====== for-Schleife ====== 
-<code bash> 
-for RECHNER in 22 04 05 
-do 
-  ssh nutzer$RECHNER@notebook$RECHNER play /​usr/​share/​sounds/​phone.wav 
-done 
-</​code>​ 
  
-Alle Rechner von 201 bis 230 anpingen: 
-<code bash> 
-for IP in {201..230} 
-do  ​ 
-  ping -c 1 192.168.1.$IP 
-done 
-</​code>​ 
- 
-Umbenennen von allen Dateien, die auf .txt enden nach .bak: 
-<code bash> 
-shopt -s nullglob 
-for DATEI in *.txt 
-  do 
-  mv $DATEI ${DATEI%.txt}.bak 
-done 
-</​code>​ 
- 
-====== while ====== 
-Netzwerk EKG 
-  ping 192.168.1.7 | while read; do play /​usr/​share/​sounds/​info.wav;​ done 
- 
-====== until ====== 
-warten bis Tunnel aufgebaut ist 
-  ssh -i /​root/​.ssh/​backup-id_dsa backup@server -n -N -L 873:​localhost:​873 & 
-  SSHPID=$! 
-  echo wait for connection to localhost:​873 
-  until lsof -i4TCP:873; do echo -n .; sleep 1; done 
-  echo 
-  echo got connection 
-tunnel nutzen ... und dann wieder schließen 
-  kill $SSHPID 
- 
-====== case in Init-Skripten ====== 
-Vereinfachtes Beispiel für ein init-Skript:​ 
-<code bash> 
-#!/bin/bash 
-case "​$1"​ in 
-  start) 
-    date 
-  ;; 
-  stop) 
-    date 
-  ;; 
-  restart) 
-    $0 stop 
-    $0 start 
-  ;; 
-  *) 
-  echo usage $0 [start] [stop] [restart] 
-  ;; 
-esac 
-</​code>​ 
- 
-====== here-Dokument für Templates ====== 
-Here Dokumente als Templates ((Das - vor dem Begrenzungstext sorgt dafür, daß Tabulator-Zeichen am Zeilenanfang ignoriert wird. Damit bekommt man schönere Formatierung hin)): 
-<​file>​ 
-VARIABLE=test 
-cat <<​-HTML;​ 
-        <​html>​ 
-          <​head>​ 
-            <​title>​Variable ist $VARIABLE</​title>​ 
-          </​head>​ 
-          <​body>​ 
-            bla 
-          </​body>​ 
-        </​html>​ 
-        HTML 
-</​file>​ 
- 
-Hier das selbe ohne Variablenersetzung/​Kommandosubstitution: ​ 
-<​file>​ 
-VARIABLE=test 
-cat <<​-'​HTML';​ 
-        <​html>​ 
-          <​head>​ 
-            <​title>​Variable ist $VARIABLE</​title>​ 
-          </​head>​ 
-          <​body>​ 
-            bla 
-          </​body>​ 
-        </​html>​ 
-        HTML 
-</​file>​ 
- 
- 
-====== Suchen und Ersetzen mit sed ===== 
-<code bash> 
-#!/bin/bash 
- 
-SUCHWORT="​$1"​ 
-ERSATZTEXT="​$2"​ 
-DATEI="​$3"​ 
- 
-TMPFILE=$(mktemp) 
-sed "​s/​$SUCHWORT/​$ERSATZTEXT/​g"​ "​$DATEI"​ > "​$TMPFILE"​ 
-cat "​$TMPFILE"​ > "​$DATEI"​ 
-rm "​$TMPFILE"​ 
-</​code>​ 
- 
-oder einfacher 
- 
-<code bash> 
-#!/bin/bash 
- 
-SUCHWORT="​$1"​ 
-ERSATZTEXT="​$2"​ 
-DATEI="​$3"​ 
- 
-sed -i "​s/​$SUCHWORT/​$ERSATZTEXT/​g"​ "​$DATEI"​ 
-</​code>​ 
- 
-====== Suchen und Ersetzen mit bash ===== 
-<code bash> 
-#!/bin/bash 
- 
-SUCHWORT="​$1"​ 
-ERSATZTEXT="​$2"​ 
-DATEI="​$3"​ 
- 
-TMPFILE=$(mktemp) 
-while read line 
-do 
-  line="​${line//​$SUCHWORT/​$ERSATZTEXT}"​ 
-done ) < "​$DATEI"​ > "​$TMPFILE"​ 
-cat "​$TMPFILE"​ > "​$DATEI"​ 
-rm "​$TMPFILE"​ 
-</​code>​ 
- 
- 
-====== Suchen und Ersetzen mit perl ===== 
-<code bash> 
-#!/bin/bash 
- 
-SUCHWORT="​$1"​ 
-ERSATZTEXT="​$2"​ 
-DATEI="​$3"​ 
- 
-perl -pi -e "​s/​$SUCHWORT/​$ERSATZTEXT/​g"​ "​$DATEI"​ 
-</​code>​ 
- 
-====== Suchen und Ersetzen mit ksh/bash ===== 
-<code bash> 
-#!/bin/bash 
- 
-SUCHWORT="​$1"​ 
-ERSATZTEXT="​$2"​ 
-DATEI="​$3"​ 
- 
-TMPFILE=`mktemp` 
-while read line 
-do 
-    line=${line//​${SUCHWORT}/​${ERSATZTEXT}} 
-    echo "​${LINE}"​ > $TMPFILE 
-done < ${DATEI} 
-mv $TMPFILE ${DATEI} 
-</​code>​ 
- 
-====== Gruppierung und sed ====== 
-<code bash> 
-sed -n '​s/​nutzer\([0-9]\+\)/​\1nutzer/​pg'​ /etc/passwd 
-sed -n '​s/​^\([^:​]\+:​[^:​]*:​\)\([[:​digit:​]]\{4\}\):/​\11\2:/​p'​ /etc/passwd 
- 
-#            \1            \2 (uidNumber) 
-sed -nr '​s/​^([^:​]+:​[^:​]*:​)([[:​digit:​]]{4}):/​\11\2:/​p'​ /etc/passwd 
-</​code>​ 
- 
-====== Gruppierung und perl ====== 
-<code bash> 
-perl -p -e ' 
-s/ 
-  (   ​nutzer(\d+) ​  ): # Benutzername \1, nutzer-nummer \2 
-  (   ​[^:​]* ​        ): # Passwort \3 
-  \d+:                 # UidNumber 
-/​\1:​\3:​5\2:/​x ​         # Ersatztext 
-' /etc/passwd 
-</​code>​ 
- 
-====== usage-Meldung mit Shell-function und or ====== 
-<code bash> 
-#!/bin/bash 
-function usage() 
-{ 
-  echo $0 suchwort ersatztext datei 
-  exit 1 
-} 
- 
-test $# -eq 3 || usage 
- 
-</​code>​ 
- 
- 
-====== Fehlersuche ====== 
-''​set -x''​ einschalten:​ Jede Zeile wird ausgegeben, bevor sie ausgeführt wird. 
- 
-''​set -e''​ einschalten:​ Programm bricht beim ersten Fehler ab 
- 
-Fehlermeldungen für mehrere Befehle umleiten: 
-<code bash> 
-exec 4>&2 
-exec 2>/​dev/​null 
-</​code>​ 
-.. Befehle .. 
-<code bash> 
-exec 2>&4 
-exec 4>&- 
-</​code>​ 
-Fehlermeldungen wiederherstellen und Kanal 4 schließen 
- 
- 
-====== Dokumentation ====== 
-  * http://​www.tldp.org/​LDP/​Bash-Beginners-Guide/​html/​index.html 
-  * http://​www.tldp.org/​LDP/​abs/​html/​index.html 
-  * http://​mywiki.wooledge.org/​BashFAQ 
fortgeschrittene/skripte.1321292841.txt.gz · Zuletzt geändert: 2011/11/14 17:47 von ingo_wichmann