Benutzer:DavX/Skripttools
aus Degupedia, der freien Wissensdatenbank
Version vom 14:25, 10. Jun 2017
» | Startseite | Fütterungskonzept | Literatur | Chile | Pflanzenbuch | Code | Open Source | Archiv |
Unterseiten: WebDev | Script-Tools | ARM
Inhaltsverzeichnis |
1.1 Grundlagen Skripting |
Grundlagen
Grundlagen Skripting
- Gute Funktionsübersicht, kurz und bündig (http://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php)
- Advanced Bash-Scripting Guide (http://www.tldp.org/LDP/abs/html/index.html)
- Ausführliche Übersicht mit Grenzfällen etc. (http://www.tldp.org/LDP/abs/html/functions.html) (Lehrreich)
- Complexd Functions (http://www.tldp.org/LDP/abs/html/complexfunct.html)
- NixCraft (https://www.cyberciti.biz/faq/bash-shell-script-function-examples/)
- Programming - Introduction How-To (http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc8¨Bash)
Basis-Tools
Es gibt eine Reihe nützlicher Tools auf der Shell wie awk, cut, head, join, paste, sed, tail, tr, xargs
- Tutorial xargs & cut (http://quickleft.com/blog/command-line-tutorials-xargs-cut) interessanter Beitrag von Jessica Dillon
Nützliche Tools
- xclip
- ImageMagick
- PDFtk
- LaTeX, PdfLaTeX
Grafisches, Dialoge und Statusmeldungen
- notify-send
- Zenity, KDialog, XDialog, Dialog
- Ncurses
Zenity
Zenity ist ein Tool von Gnome zum Schreiben von grafischen Dialogen für die Interaktion mit dem Benutzer, ähnlich wie Xdialog. Es bietet Eingaben, Fragen, Auswahldialoge, Kalender, Datei- und Ordnerauswahl und mehr an (kann diese aber meines Wissens nicht in einem Dialog kombiniert anzeigen).
- Gnome Zenity (https://help.gnome.org/users/zenity/3.1/zenity.html)
Shellskripte und Tools
Transfer.sh
Datenübertragen via Shell
Folgende Funktion in die .bashrc (https://wiki.ubuntuusers.de/Bash/bashrc/) (~/.bashrc) eintragen:
# Add this to .bashrc or its equivalent transfer() { if [ $# -eq 0 ]; then echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; } # Now you can use transfer command # $ transfer hello.txt
Mini-Webserver aufsetzen
Webserver aufsetzen mit Python (SimpleHTTPServer (http://docs.python.org/2/library/simplehttpserver.html))[1] (http://wiki.ubuntuusers.de/Instant_Webserver):
python -m SimpleHTTPServer 8082
In Webbrower eingeben (nur lesenden Zugriff, zeigt auf aktuelles Verzeichnis):
http://localhost:8982/
Dateien umbenennen
Shell. Nützlich hierzu ist das Komandozeilentool mmv.
Weitere gute Tipps zur Umbenennung auf der Shell: Easily renaming multiple files (https://www.debian-administration.org/article/150/Easily_renaming_multiple_files.)
Grafisch. Thunar, der Dateimanager von XFCE, verfügt über das Tool Bulk-Rename eine bequeme Möglichkeit viele Dateien aufs mal umzubenennen.
Nummeriertes Umbenennen
Sollen Dateien beim Umbenennen durchnummeriert werden, reichen Standardtools meist nicht weiter. Folgendes kleines Perl-Skript löst diese Aufgabe. Man kann ihm die nötigen Parameter als Argumente gleich von der Shell übergeben oder aber falls keine angegeben werden, fragt das Programm sie ab:
- Parameter 1: Filter-String für grep, nach dem die Dateien gefiltert werden
- Parameter 2: Dateiname für die zu nummerierenden Dateien
- Parameter 3: Startwert, ab dem das Skript durchnummerieren soll
#!/usr/bin/perl use warnings; use strict; my $count = 0; my $arg1 = ""; my $arg2 = ""; if( !($arg1 = shift(@ARGV)) ) { print "Dateien umbenennen (Suchmuster fuer grep): "; chomp($arg1 = <STDIN>); if($arg1 eq "") { $arg1 = "."; } } if( !($arg2 = shift(@ARGV)) ) { print "Umbenennen in: "; chomp($arg2 = <STDIN>); if($arg2 eq "") { $arg2 = "Datei"; } } if( !($count = shift(@ARGV)) ) { print "Nummerierung starten mit (Zahl eingeben): "; chomp($count = <STDIN>); } open (FILELIST, "ls -A | grep \"".$arg1."\" |"); while (<FILELIST>) { chomp $_; rename ($_,$arg2."0"x(3-length($count)).$count++.".jpg") } close FILELIST
Vorlage Scanimage2Latex
Diese Vorlage dient zur Erstellung einer PDF-Datei aus Bildmaterial (z. B. JPEG-Grafiken). Dabei können folgende Parameter und Angaben geändert werden:
- Titel ändern
- Autor(en) ändern
- Seitenränder anpassen
Die Grafiken werden mit folgendem Befehl eingefügt:
\includegraphics[scale=1.2]{bild_01.jpeg}
Dabei gilt es den Vergrösserungsfaktor (scale) entsprechend anzupassen sowie den Bildnamen zwischen den geschweiften Klammern. Der Befehl zum Einbinden der Grafiken kann beliebig oft eingefügt werden, entsprechend der Anzahl benötigter Bilder. Der Befehl "\newpage" erzwingt jeweils einen Seitenumbruch.
\documentclass[german,a4paper]{article} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage[pdftex]{graphicx} \usepackage[pdftex,unicode]{hyperref} \usepackage{times} \usepackage{thumbpdf} \pagestyle{empty} \usepackage[a4paper, left=0.5cm, right=0.5cm, top=2.0cm, bottom=2.0cm]{geometry} \pdfcompresslevel=9 \hypersetup{pdftitle={Titel},pdfauthor={Autoren},pdfcreator={LaTeX},pdfdisplaydoctitle={true} } \begin{document} \begin{center} \includegraphics[scale=1.2]{bild_01.jpeg} \newpage \includegraphics[scale=1.2]{bild_02.jpeg} \end{center} \end{document}
Bilder: Thumbnails erstellen
Siehe auch DavX/Code/Vorschau.sh
Datei vorschau_v3.sh
Version: 3.0
#!/bin/bash IMGSIZE="480" IMGDIR="img$IMGSIZE" IMGSIZE=${IMGSIZE}x${IMGSIZE} LOWERCASE=1 if [ ! -d $IMGDIR ] then mkdir -p $IMGDIR fi if [ $LOWERCASE -gt 0 ] then for file in *.JPG do mv $file ${file%.JPG}.jpg done fi for i in *.jpg do convert -size $IMGSIZE $i -resize $IMGSIZE -auto-orient -quality 65 +profile "*" $IMGDIR/$i done PDIR=`pwd` notify-send -t 1000 'Bilder verkleinern' "Die Bilder wurden verkleinert, sie befinden sich unter $PDIR/$IMGDIR" exit 0;
Anhang
Benutzer und Gruppen
Grundlagen: D. Wolski, Linux Welt 3/2014: 38-39.
Config-Dateien:
- /etc/passwd -> Benutzer
- /etc/group -> Gruppen
Benutzer anlegen
useradd -c [Optionen] [Benutzername]
Beispiel: Benutzer Max mit Beschreibung (Klarname) "Maximilian Muster" und der Bash als Anmelde-Shell.
sudo useradd -c "Maximilian Muster" -m -U -s /bin/bash Max
- Die Daten für die Basiskonfiguration im neu erstellten Home-Verzeichnis stammen aus /etc/skel
- Der Account ist noch gesperrt und braucht ein neues Passwort:
sudo passwd Max
Benutzer ändern
usermod [Optionen] [Benutzername]
Benutzer löschen
userdel -r Max
Neue Gruppe anlegen
sudo addgroup webserver
User hinzufügen:
sudo usermod -a -G webserver Max
Dateien und Ordner
Dateien anlegen
touch [Dateiname]
Datei verschieben oder umbenennen:
mv [Dateiname]
Datei kopieren
cp [Dateiname]
Datei löschen
rm [Dateiname]
mkdir
mkdir [Ordnername]
chown
chown [Optionen] [Besitzer][:[Gruppe]] Datei
Optionen:
- -c wie verbose, aber nur wenn etwas geändert wird
- -f force (Fehlermeldungen unterdrücken, -silent, -quiet)
- -R rekursiv
- -v verbose
Beispiele
chown Max Sonnenuntergang.jpg chown 1000:1000 datei.txt chown -R root:www-data /var/www/sensor-data
chmod
chmod +R a+w verzeichnis/
Erklärung
- +R rekursiv
- a+w
- a=all (u=user, g=group, o=other)
- +=Rechte setzen (-=Rechte entziehen)
- w=write (r=read, x=execute)
- verzeichnis/ Name des Verzeichnis
Infos: http://www.phy.syr.edu/~dkirk/chmod.html
Unzip Tar-Bz2
tar jxf <datei>
Pulseaudio (ALSA) neu starten
Problem: Pulseaudio macht Probleme, bsp. der Ton geht plötzlich nicht mehr.
Lösung:
Pulseaudio abschiessen und dann ALSA neu laden, welches wiederum Pulseaudio neu startet.
sudo killall pulseaudio sudo alsa force-reload