Benutzer:DavX/Skripttools

aus Degupedia, der freien Wissensdatenbank

< Benutzer:DavX(Unterschied zwischen Versionen)
Version vom 12:41, 11. Jun 2017
DavX (Diskussion | Beiträge)
Nützliche Tools
← Go to previous diff
Aktuelle Version
DavX (Diskussion | Beiträge)
IP ermitteln
Zeile 1: Zeile 1:
{{Nav davX}} {{Nav davX}}
-'''Unterseiten: [[Benutzer:DavX/WebDev|WebDev]] | [[Benutzer:DavX/Skripttools|Script-Tools]] | [[Benutzer:DavX/ARM|ARM]]'''+{{Nav davX/Code}}
==Grundlagen== ==Grundlagen==
Zeile 11: Zeile 11:
* [https://www.cyberciti.biz/faq/bash-shell-script-function-examples/ NixCraft] * [https://www.cyberciti.biz/faq/bash-shell-script-function-examples/ NixCraft]
* [http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc8¨Bash Programming - Introduction How-To] * [http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc8¨Bash Programming - Introduction How-To]
- 
-===Basis-Tools=== 
Es gibt eine Reihe nützlicher Tools auf der Shell wie awk, cut, head, join, paste, sed, tail, tr, xargs Es gibt eine Reihe nützlicher Tools auf der Shell wie awk, cut, head, join, paste, sed, tail, tr, xargs
* [http://quickleft.com/blog/command-line-tutorials-xargs-cut Tutorial xargs & cut] interessanter Beitrag von Jessica Dillon * [http://quickleft.com/blog/command-line-tutorials-xargs-cut Tutorial xargs & cut] interessanter Beitrag von Jessica Dillon
 +
 +===Einzeiler-Sammlung===
 +
 +* [https://github.com/chubin/perl1line.txt/blob/master/perl1line.txt Perl One-Liners] (Textfile)
 +* [http://www.catonmat.net/blog/perl-one-liners-explained-part-one/ Perl One-Liners explained]
 +* [http://www.catonmat.net/blog/awk-one-liners-explained-part-one/ Awk One-Liners explained]
 +* [http://www.catonmat.net/blog/sed-one-liners-explained-part-one/ One-Liners explained]
 +
 +===Basis-Tools===
 +
 +* Visual Studio Code
 +** Plugin: https://github.com/mre/vscode-snippet
 +* git
 +* curl
===Nützliche Tools=== ===Nützliche Tools===
Zeile 24: Zeile 36:
* PDFtk * PDFtk
* LaTeX, PdfLaTeX * LaTeX, PdfLaTeX
 +* [https://wiki.ubuntuusers.de/mpv/ mpv] (CLI Mediaplayer)
 +* [https://wiki.ubuntuusers.de/youtube-dl/ youtube-dl] Webvideos downloaden via CLI
===Grafisches, Dialoge und Statusmeldungen=== ===Grafisches, Dialoge und Statusmeldungen===
* notify-send * notify-send
-* Zenity, KDialog, XDialog, Dialog+* Zenity, KDialog, XDialog, Dialog (Bsp. [https://stackoverflow.com/questions/30245008/bash-shell-scripting-dialog-form-variables Formular mit Dialog])
* Ncurses * Ncurses
 +* [http://zetcode.com/gui/pysidetutorial/ PySide] (Qt Gui für Python)
'''Zenity''' '''Zenity'''
Zeile 36: Zeile 51:
* [https://help.gnome.org/users/zenity/3.1/zenity.html Gnome Zenity] * [https://help.gnome.org/users/zenity/3.1/zenity.html Gnome Zenity]
 +
 +===Webtools===
 +
 +* https://github.com/chubin/awesome-console-services
 +* curl cheat.sh oder curl cht.sh
 +** https://github.com/chubin/cheat.sh
 +* wttr.in
 +** https://github.com/chubin/wttr.in/Berlin
 +* curl qrenco.de
 +** https://github.com/chubin/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
 +* [https://tmuxcheatsheet.com/ Tmux Cheatsheet]
==Shellskripte und Tools== ==Shellskripte und Tools==
Zeile 194: Zeile 255:
notify-send -t 1000 'Bilder verkleinern' "Die Bilder wurden verkleinert, sie befinden sich unter $PDIR/$IMGDIR" notify-send -t 1000 'Bilder verkleinern' "Die Bilder wurden verkleinert, sie befinden sich unter $PDIR/$IMGDIR"
exit 0; exit 0;
 +
 +===IP ermitteln===
 +
 +* Datei anlegen <tt>touch /home/user/bin/showip.sh</tt>
 +* Datei ausführbar machen <tt>chmod +x showip.sh</tt>
 +* Passendes Icon suchen z.B. /usr/share/pixmaps/irgendeinedatei.xmp
 +* Datei showip.sh bearbeiten:
 + #!/bin/bash
 + #DEV: Device Name, e.g. wlan0 or wlp3s0
 + DEV="wlp3s0"
 + IP=$(ip a s $DEV|grep "inet "|tr -s "[:blank:]/" "\t"|awk '{print $2}')
 +
 + if (( SHLVL > 1 ))
 + then
 + #Running on terminal
 + echo $IP
 + else
 + #Not running on terminal
 + zenity --info --text "Die IP lautet: $IP"
 + fi
 +
 +Starter anlegen <tt>touch ~/Desktop/showip.desktop</tt> und wie folgt bearbeiten:
 + [Desktop Entry]
 + Name=Show IP
 + Comment=Show current IP address
 + Icon=/usr/share/pixmaps/irgendeinedatei.xpm
 + Exec=/home/user/bin/showip.sh
 + Type=Application
 + Encoding=UTF-8
 + Terminal=false
 + Categories=None;
==Anhang== ==Anhang==

Aktuelle Version

 » Startseite Fütterungskonzept Literatur Chile Pflanzenbuch Code Open Source Archiv


Unterseiten: WebDev | Metadata | Admin & VM | Script-Tools | ARM | Windows (edit)

Inhaltsverzeichnis

Grundlagen

Grundlagen Skripting

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

Basis-Tools

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 (Bsp. Formular mit Dialog (https://stackoverflow.com/questions/30245008/bash-shell-scripting-dialog-form-variables))
  • Ncurses
  • PySide (http://zetcode.com/gui/pysidetutorial/) (Qt Gui für Python)

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

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

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:
#!/bin/bash
#DEV: Device Name, e.g. wlan0 or wlp3s0
DEV="wlp3s0"
IP=$(ip a s $DEV|grep "inet "|tr -s "[:blank:]/" "\t"|awk '{print $2}')

if (( SHLVL > 1 ))
then
  #Running on terminal
  echo $IP
else
  #Not running on terminal
  zenity --info --text "Die IP lautet: $IP"
fi

Starter anlegen touch ~/Desktop/showip.desktop und wie folgt bearbeiten:

[Desktop Entry]
 Name=Show IP
 Comment=Show current IP address
 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
Degupedia.de Logo
'Persönliche Werkzeuge
Länge: cm
Breite: cm
Höhe:  cm
 
Mediawiki Creative Commons Opera Firefox