-
Bash-Shell – Scripte
Um komplizierte Befehle einfach auszuführen oder Bedingungen innerhalb einer Abfrage zu definieren, ist es besser sie in Scripte zu packen.
Diese sind nichts weiter als Dateien, in denen Zeile für Zeile die Anweisungen abgearbeitet werden.Die Besonderheit ist, dass die Script Datei, mit der Definition des Interpreter beginnen muss. In unserem Fall wird die Bash-Shell aufgerufen, mit der Angabe:
#!/bin/bashNach dem schreiben der Scriptes, muss es noch ausführbar gemacht werden:
chmod +x scriptnameJetzt kann mit ./scriptname, das Script ausgeführt werden.
Um dies Systemweit, unter dem angemeldeten User zu tun, ist es wichtig ein Verzeichnis unter dem eigenem Home Verzeichnis anzulegen:
cd $HOME
mkdir scripte
chmod 744 scripteDanach muss noch der Pfad zu /scripte, in die PATH Variable mit aufgenommen werden:
nano ~/.bashrcund unter PATH=/……:/home/USERNAME/scripte mit anzuhängen.
Jetzt kann ohne Angabe des Pfades oder der ./ausführbar Angabe, das Script wie ein normaler Befehl aufgerufen werden.
aktuelles Verzeichnis nach angegebener Datei durchsuchen und zählen
Aufruf: zaehlen_v php
Code:
#!/bin/bash
# Zaehlt Dateien eines Types im aktuellen Verzeichnis
# Eingabe mit „zaehlen_v dateityp“ Beispiel: zaehlen_v php
# gefunden by http://blog.falco2.deinfotext1=“im aktuellen Verzeichnis“
verzeichnis=“`pwd`“
infotext2=“sind“
dateityp=“`ls -l *.$1 | wc -l`x $1″
infotext3=“Dateien vorhanden“
echo -e $infotext1 „\033[49;1;34m$verzeichnis““\033[0m $infotext2“ „\033[49;1;31m$dateityp““\033[0m $infotext3“
exit 0Funktion:
Download des Scripts - zaehlen_v (2795 Downloads )
Das aktuelle Verzeichnis wird mit ls -l und dem vorgegebenen Suchwort eingelesen und per wc -l zeilenweise gezählt. Die grafische Ausgabe erfolgt über echo -e und Farbanweisungen. Es ist darauf zu achten, daß \033[0m mit einzubinden, damit die nachfolgende Ausgabe wieder original ausgegeben wird.
aktuelles Verzeichnis & alle Unterverzeichnisse nach angegebener Datei durchsuchen und zählen
Aufruf: zaehlen_u php
Code:
#!/bin/bash
# Zaehlt Dateien eines Types im Verzeichnis & alle Unterverzeichnisse
# Eingabe mit „zaehlen_u dateityp“ Beispiel: zaehlen_u php
# gefunden by http://blog.falco2.deinfotext1=“im aktuellen & allen Unterverzeichnisen sind“
dateityp=“`find -type f -iname „*.$1″ | wc -l`x $1“
infotext2=“Dateien vorhanden“
echo -e $infotext1 „\033[49;1;31m$dateityp““\033[0m $infotext2“
exit 0Funktion:
Download des Scripts - zaehlen_u (2817 Downloads )
Das aktuelle Verzeichnis und alle Unterverzeichnisse werden mit find -iname (egal ob GROß- oder kleinschreibung) und dem vorgegebenen Suchwort eingelesen und per wc -l zeilenweise gezählt. Die grafische Ausgabe erfolgt über echo -e und Farbanweisungen. Es ist darauf zu achten, daß \033[0m mit einzubinden, damit die nachfolgende Ausgabe wieder original ausgegeben wird.
vorgegebene Anzahl von Ordner mit vorgegebenen Ordnernamen erstellen
Aufruf: mkdir_e 20 falco2
Code:
#!/bin/bash
# Ordner erzeugen mit Angabe des Ordnernamens
# Eingabe erfolgt mit „mkdir_e Anzahl Ordnername“
# es entstehen entsprechend der Anzahl, die Ordner
# gefunden by http://blog.falco2.dei=1
while [ $i -le $1 ]
do
mkdir $2$i
let i=$i+1
done
exit 0Funktion:
Download des Scripts - mkdir_e (2787 Downloads )
Mit $1 wird die Anzahl und mit $2 wird der Ordnername an die Funktion im Script übergeben. Dann wird mit mkdir und mit den 2 Parametern ($1&$2), das Verzeichnis erstellt und dann wird immer 1 dazu gezählt.
vorgegebene Anzahl von Dateien mit vorgegebenem Dateinamen erstellen
Aufruf: dateien_e 30 Inhalt
Code:
#!/bin/bash
# Dateien erzeugen mit Angabe des Dateinamens
# Eingabe erfolgt mit „dateien_e Anzahl Dateiname“
# es entstehen entsprechend der Anzahl leere Dateien
# gefunden by http://blog.falco2.dei=1
while [ $i -le $1 ]
do
touch $2$i
let i=$i+1
done
exit 0Funktion:
Download des Scripts - dateien_e (2716 Downloads )
Mit $1 wird die Anzahl und mit $2 wird der Dateiname an die Funktion im Script übergeben. Dann wird mit touch und mit den 2 Parametern ($1&$2), die Datei erstellt und dann wird immer 1 dazu gezählt.
installations Befehl abkürzen
Aufruf: instal nmap
Code:
#!/bin/bash
# installieren von Programmen
# (Abkürzen des apt-get install Komandos)
# Eingabe erfolgt mit „instal Programm Name“
# gefunden by http://blog.falco2.desudo apt-get install $1
Funktion:
Download des Scripts - instal (2772 Downloads )
Mit $1 wird der Programm Name ausgelesen, der hinter dem sudo apt-get install Befehl angegeben wird.
externe IP auslesen
Aufruf: wieistmeineip
Code:
#!/bin/bash
# externe IP auslesen
# Eingabe erfolgt mit „wieistmeineip“
# gefunden by http://blog.falco2.dewget http://www.myipaddress.com/ -q -O – | grep -Eo –color ‚\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>‘
Funktion:
Download des Scripts - wieistmeineip (2423 Downloads )
Mit wget http://www.myipaddress.com/ wird die externe IP auf der Webseite abgefragt und per grep in Einzelteile „zerlegt“ und angezeigt.
PDF Dateien aus manpages (Handbuch) erstellen
Aufruf: sh man_pdf.sh befehl
Code:
#!/bin/bash
# PDF aus manpages (Handbuch) erstellen
# Eingabe erfolgt mit „sh man_pdf.sh befehl“
# gefunden by http://blog.falco2.de## Benötigt wird Manpages in Deutsch
## Debian/Ubuntu
# sudo apt-get install manpages-de## Fedora
# sudo apt-get install man-pages-de## das Programm ps2pdf installieren mit
# sudo apt-get install ghostscriptman -t $1 >$1.ps && ps2pdf $1.ps && rm $1.ps && see $1.pdf
Funktion:
Download des Scripts - manpages zu PDF (3683 Downloads )
mit der Angabe von man_pdf ls wird der Aufruf von man -t ls gestartet.
ls wird an $1 übergeben und an jeder Stelle in der Datei statt $1 verwendet.
1. ls.ps erstellen mit man -t ls
2. PDF erstellen aus ls.ps mit ps2pdf ls.ps
3. nicht benötigte ls.ps löschen mit rm ls.ps
4. PDF Datei anschauen mit see ls.pdf
Prozent Anzeige beim Datei kopieren
Aufruf: sh cp_pv.sh Name_Original Name_Kopie
Code:
#!/bin/bash
# Kopiert 1 Datei von A nach B mit Fortschrittanzeige
# Eingabe erfolgt mit “sh cp_pv.sh Name_Original Name_Kopie”
# gefunden by http://blog.falco2.de# sudo apt-get install pv
pv -perbt $1 > $2
exit 0Funktion:
Download des Scripts - Kopieren mit Anzeige (3789 Downloads )
mit der Angabe von cp_pv Name_Original > Name_Kopie wird
der Aufruf von pv -perbt Name_Original > Name_Kopie gestartet.
Name_Original wird an $1 übergeben und in der Datei statt $1 verwendet.
Name_Kopie wird an $2 übergeben und in der Datei statt $2 verwendet.
pv wirkt mit seinen Schaltern
-p = zeigt den Fortschrittsbalken an
-e = zeigt die vermutliche Gesamtgröße der Datei an
-r = zeigt die aktuelle Datenübertragungsrate an
-b = zeigt die Menge der Daten an, so weit schon übertragen
-t = zeigt an wie lange der Vorgang schon läuft
LibreOffice Tabellen- und Dokumentenschutz aufheben
Aufruf: sh schutz_aufheben.sh Info_geschuetzt.ods
Code:
#!/bin/bash
# Hebt den Tabellen- und Dokumentenschutz einer Calc.ods Datei auf
# Eingabe mit „sh schutz_aufheben.sh Dokumenten_Name”
# Beispiel: sh schutz_aufheben.sh Info_geschuetzt.ods
# gefunden by http://blog.falco2.deunzip $1 content.xml >/dev/null 2>&1 && find content.xml -type f -exec sed -i ’s/table:protected=“true“/table:protected=“false“/g‘ {} \; && find content.xml -type f -exec sed -i ’s/table:structure-protected=“true“/table:structure-protected=“false“/g‘ {} \; && zip -v $1 content.xml >/dev/null 2>&1 && rm content.xml
echo „Der Schutz von $1 wurde aufgehoben“
exit 0Funktion:
Download des Scripts - schutz_aufheben (1525 Downloads )
1. mit der Angabe von unzip $1 content.xml wird die content.xml aus dem Office Dokument entpackt.
2. der Aufruf von >/dev/null 2>&1 schickt alle Meldungen ins nichts. (Ausgabe werden unterdrückt)
3. der find Befehl sucht nach table:protected=“true“ und table:structure-protected=“true“ in der content.xml und ersetzt „true“ durch „false“ mit find content.xml -type f -exec sed -i ’s/table:protected=“true“/table:protected=“false“/g‘ {} \; && find content.xml -type f -exec sed -i ’s/table:structure-protected=“true“/table:structure-protected=“false“/g‘ {} \;
3. mit der Angabe zip -v $1 content.xml wird die geänderte content.xml wieder in das LibreOffice Dokument zurück geschrieben.
4. mit dem Befehl rm content.xml wird die nun überflüssige content.xml gelöscht.
5. echo „Der Schutz von $1 wurde aufgehoben“ gibt die Info aus das hart gearbeitet wurde 🙂
6. mit exit 0 wird das Script sauber verlassen
Neueste Kommentare