Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: Mehr interessante Einzeiler sind gerne erwünscht
Sammlung von praktischen Einzeilern in der Bash. Diese einzeiligen "Skripte" geben auch gleich eine praktische Verwendung diverser Funktionen an.
Stammt aus diesem Thread . Diese Zeile findet alle Dateien im Verzeichnis dir, die mit ".mp3" enden (Groß- und Kleinschreibung wird wegen -iname
ignoriert), sortiert die gefundenen Dateien und schreibt sie in die Datei sortierteliste.
find dir -iname "*.mp3" | sort > sortierteliste
Um herauszufinden, ob Dateien in einem Verzeichnis leer sind, gibt es verschiedene Möglichkeiten, z.B.
echo $(du -h * | grep ^0 | awk '{print $2}') | sed "s/\s/, /g"
Zuerst listet "du -h *
" die Größe aller Dateien in * auf. Anschließend werden nur diejenigen Textzeilen herausgefiltert, die mit einer 0 anfangen. Anschließend wird die zweite Spalte der Darstellung genommen. Das "echo $(...)
" bewirkt, dass alle Zeilen nacheinander durch Leerzeichen getrennt ausgegeben werden. Durch den sed-Befehl bewirkt man, dass die Leerzeichen durch ", " ersetzt werden.
Einfacher geht es mit diesem Befehl:
find -type f -empty
Dieser Einzeiler öffnet alle HTTP(S)-Links, die alleine in einer Zeile stehen mit dem Standard-Browser.
grep -E '^https?://' datei | xargs xdg-open
Möchte man auch andere Protokolle unterstützen, lässt sich das wie folgt machen:
grep -E '^(https?|ftp)://' datei | xargs xdg-open
Dieses Skript findet neben HTTP- auch FTP-Links.
Mit diesem Einzeiler werden die 5 größten Verzeichnisse je eingebundener Partition ermittelt und die Größe in GB und Bytes sowie der Name ausgegeben.
PART=($(awk '$1~/^\/dev/ {print $2}' /proc/mounts));for i in ${PART[@]};do echo;df -h $i;sudo du --max-depth=1 -kx $i|sort -nr|awk '{printf("%7.1f GB\t%s\n", ($1/1024)/1024,$0)}'|head -n6;done
Mit diesem Einzeiler werden die 15 größten Verzeichnisse, ab dem Ausführungsverzeichnis, ermittelt und die Größe in GB und Bytes sowie der Name ausgegeben.
sudo du -kSx | sort -nr | awk '{printf("%7.1f MB\t%s\n", ($1/1024)/1024,$2)}' | head -15
Mit diesem Einzeiler werden die 5 größten Dateien je eingebundener Partition ermittelt und die Größe in GB und Bytes sowie der Name ausgegeben.
ARCH=($(awk '$1~/^\/dev/ {print $2}' /proc/mounts));for i in ${ARCH[@]};do sudo find $i -type f -printf "%k %p \n" 2>/dev/null|sort -rn|awk '{printf("%7.1f MB\t%s\n", ($1/1024)/1024, $0)}'|head -n6;echo;done
Durchsucht ab dem Ausführungsverzeichnis alle Verzeichnisse und listet die 15 größten davon auf. Ausgabe: Größe MB und Bytes sowie Name der Datei.
find / -type f -printf "%k\t %p\n" 2>/dev/null | sort -rn | awk '{printf("%7.1f GB\t%s\n", ($1/1024)/1024,$0)}' | head -15
Der folgende Befehl berechnet die MD5-Prüfsummen aller Dateien innerhalb des aktuellen Verzeichnisses und seiner Unterverzeichnisse und speichert das Ergebnis in der Datei MD5SUMS ab, was je nach Anzahl und Größe der Dateien etwas dauern kann. Voraussetzung ist die Installation des Pakets md5deep (universe), weil das von Ubuntu mitgelieferte Tool md5sum nicht rekursiv arbeitet.
md5deep -rel * > MD5SUMS
Mit Hilfe von find kann man jedoch auf die Installation von md5deep verzichten. Der folgende Befehl durchsucht das aktuelle Verzeichnis und seine Unterverzeichnisse nach regulären Dateien (also keine Verzeichnisse, Gerätedateien [3] o.ä.) und ruft dann md5sum auf:
find . -type f -exec md5sum {} + > MD5SUMS
Statt md5sum kann natürlich auch ein anderer Befehl genutzt werden (z.B. für einen SHA-Algorithmus statt MD5). Die Programme befinden sich üblicherweise in /usr/bin:
ls /usr/bin/*sum
Die eingehängten Partitionen lassen sich wie unter Systeminformationen ermitteln angegeben anzeigen. Für Swap-Partitionen siehe Swap überwachen.
Auflistung der aktiven Einträge der sources.list und der Listen aus /etc/apt/sources.list.d/, ohne Kommentar- und Leerzeilen.
Mit grep (mit Dateinamen): sources.list
Und mit sed (ohne Dateinamen):
sed '/^[ \t]*#\|^[ \t]*$/d' /etc/apt/sources.list /etc/apt/sources.list.d/*.list
Hexdump des Datenträgers sdX[4]:
sudo hexdump -s0 -n512 -C /dev/sdX
Nur die Partitionen-Einträge lesbar ansehen:
sudo hexdump -s 446 -n 64 -v -e '1/1 "Part.:| %02x" 3/1 " | %3u" 1/1 " | %02x" 3/1 " | %3u" 2/4 " | %9u" "\n"' /dev/sdX
Hexdump des Datenträgers sdX[4] ohne Partitionen-Einträgen:
sudo hexdump -s512 -n512 -C /dev/sdX
Hexdump des Datenträgers sdX mit Partitionen-Einträgen:
sudo hexdump -s512 -n$((512*33)) -C /dev/sde
Zum Ausführen des Kommandos wird das Programm sgdisk benötigt, da es die Ende-Sektoren ermittelt.
Hexdump des Datenträgers sdX[4] ohne Partitionen-Einträgen:
d=sdX;sudo dd if=/dev/$d skip=$(($(sudo sgdisk -p /dev/$d|sed -ne 's@Disk /dev/'$d': \([0-9].*\) s.*$@\1@p')-1)) 2>/dev/null|hexdump -C
Hexdump des Datenträgers sdX mit Partitionen-Einträgen:
d=sdX;sudo dd if=/dev/$d skip=$(($(sudo sgdisk -p /dev/$d|sed -ne 's@Disk /dev/'$d': \([0-9].*\) s.*$@\1@p')-33)) 2>/dev/null|hexdump -C
Rekursives Löschen von Dateien, auf die ein bestimmtes Muster zutrifft.
find srcPfad -name "*.typ" -type f -delete
Sucht man ein Bild auf seinem System, von dem man den Namen nur in etwa kennt, aber weiß, wie das Bild aussieht, so kann man mit locate
eine Liste aller möglichen Dateien generieren und mit gThumb diese Liste gleich ansehen. Also z.B.
gthumb $(locate email | grep .png)
Viele Internet-Benutzer besitzen ein externes DSL-Modem/Router. In diesem Fall kann man mit ifconfig eth0
nur die lokale IPv4-Adresse auslesen. Folgender Einzeiler gibt die öffentliche IP-Adresse auf der Standardausgabe aus:
wget http://wieistmeineip.net -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
Anstatt http://wieistmeineip.net
kann man alternativ auch
oder ähnliche Angebote eintragen.
Hier noch eine Abfragemöglichkeit ohne grep
und mit http://showip.spamt.net/
wget -q -O - http://showip.spamt.net/
Regulärer Ausdruck für IPv6-Adressen:
ip a s | grep inet6 | grep global | grep -v fd00 | tr -s ' ' | cut -d' ' -f3 | cut -d'/' -f1
Man kann aber auch ein API verwenden (hier: http://www.wieistmeineipv6.de):
wget -q -O - http://6.wieistmeineipv6.de/ip_js.php | grep 6_ip | cut -d\" -f2
Hier ein interessanter Befehl, der das Hintergrundbild zufällig mit Feh wechselt. Dies kann man dann noch in Cron eintragen und so wird dann alle 30 Minuten (kann natürlich angepasst werden) das Hintergrundbild gewechselt.
set -f; O=$IFS IFS=$'\n' files=($(find ~/Bilder/ -name '*')) IFS=$O; set +f && feh --bg-scale ${files[ $(( $RANDOM % ${#files[@]} )) ]}
Mit
crontab -e
kann man die Crontabelle editieren.
Die Tabelle könnte dann so aussehen:
#----------------------------------------------------------------- # Shell variable for cron SHELL=/bin/bash # PATH variable for cron PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11 #M S T M W Befehl #----------------------------------------------------------------- */30 * * * * set -f; O=$IFS IFS=$'\n' files=($(find ~/Bilder/ -name '*')) IFS=$O; set +f && feh --bg-scale ${files[ $(( $RANDOM % ${#files[@]} )) ]} #-----------------------------------------------------------------
Die Parameter "-u
" und "-f
" dürften klar sein, "Z
" geht an das Ende der Mailqueue, "d
" löscht und "-N
" leitet die Ausgabe auf >dev/nul
um.
Es werden die zuletzt eingegangen E-Mail-Header des Benutzers "user" als Liste angezeigt.
echo "Z" | mail -u user -f /home/user/Maildir/
Es wird die älteste E-Mail (Nr. 1) des Benutzers "user" gelöscht.
echo "d 1" | mail -N -u user -f /home/user/Maildir
Shell Übersicht über die Shell
Skripte weitere Skripte
FritzBox/Skripte - spezielle Skripte für den Umgang mit der FritzBox
Commandlinefu.com - weitere interessante Einzeiler
Diese Revision wurde am 13. Dezember 2015 13:16 von Hottab erstellt.