Benutzer:DavX/Skripttools
aus Degupedia, der freien Wissensdatenbank
Nächstältere Version→ | ←Nächstjüngere Version
» | Startseite | Fütterungskonzept | Literatur | Chile | Pflanzenbuch | Code | Open Source | Archiv |
Unterseiten: WebDev | Metadata | Admin & VM | Script-Tools | ARM | Windows (edit)
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)
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
Einzeiler-Sammlung
- Perl One-Liners (https://github.com/chubin/perl1line.txt/blob/master/perl1line.txt) (Textfile)
- Perl One-Liners explained (http://www.catonmat.net/blog/perl-one-liners-explained-part-one/)
- Awk One-Liners explained (http://www.catonmat.net/blog/awk-one-liners-explained-part-one/)
- One-Liners explained (http://www.catonmat.net/blog/sed-one-liners-explained-part-one/)
Basis-Tools
- Visual Studio Code
- git
- curl
Nützliche Tools
- xclip (https://wiki.ubuntuusers.de/xclip/) und xsel (https://wiki.ubuntuusers.de/xsel/)
- ImageMagick
- PDFtk
- LaTeX, PdfLaTeX
- mpv (https://wiki.ubuntuusers.de/mpv/) (CLI Mediaplayer)
- youtube-dl (https://wiki.ubuntuusers.de/youtube-dl/) Webvideos downloaden via CLI
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)
Webtools
- https://github.com/chubin/awesome-console-services
- curl cheat.sh oder curl cht.sh
- wttr.in
- curl qrenco.de
Essenzielle Tools
Zsh
Alternative zu Bash
Git
Neue Datei einpflegen:
- git add <file> oder git add * oder git add <directory>
- Danach Änderungen einpflegen
Änderungen einpflegen:
- git commit -m "Kommentar"
- git push oder git pull origin master
Aktuelle Version holen:
- git pull oder git pull origin master
Bei Problemen kann git pull Daten überschreiben. Um das zu verhindern hilft:
- git fetch
Tmux
Wichtige Befehle
- tmux a: attach Session bei Start
- tmux a -t mysession: Tmux mit Session "Mysession" starten
- "Ctrl + b d": detach Session bei Ende
- tmux new -s mysession -n mywindow
- tmux ls oder "Ctrl + b s": aktuelle Sessions auflisten
- tmux info: alle Sessions, Windows und Panes anzeigen
- "Ctrl + b :" Befehl eingeben
Spickzettel
- Tmux Cheatsheet (https://tmuxcheatsheet.com/)
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;
IP ermitteln
- Datei anlegen touch /home/user/bin/showip.sh
- Datei ausführbar machen chmod +x showip.sh
- Passendes Icon suchen z.B. /usr/share/pixmaps/irgendeinedatei.xmp
- Datei showip.sh bearbeiten:
Starter anlegen touch ~/Desktop/showip.desktop und wie folgt bearbeiten:
[Desktop Entry] Name=Anwendung Comment=Kommentar zur Anwendung Icon=/usr/share/pixmaps/irgendeinedatei.xpm Exec=/home/user/bin/showip.sh Type=Application Encoding=UTF-8 Terminal=false Categories=None;
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