Tools A - K

arp-scan (paket)

Muss bei den meisten Distros nachinstalliert werden

awk - mächtiges Skriptingtool in Konsole

Beispiel:

#  erste und die siebte Spalte aus /etc/passwd
awk -F':' '{print $1,$7}' /etc/passwd

# Heimatverzeichnis und die Shell von Testing:
awk -F':' '/Testing/ {print $6; print $7;}' /etc/passwd

# Login-Namen aller Benutzer mit einer UID größer gleich 1000 aus:
awk -F':' '$3>=1000 {print $1}' /etc/passwd

# extrahiert aus der Ausgabe von ls -l die Dateigröße und den Dateinamen
ls -l *.txt | awk '{print $5,$9}'

cowsay

Die Sprechende Kuh für die Konsole - aber gerne auch Tux oder Vader mit Sprechblasen. Das Tools wird von mir gerne für Installationsübungen und als erste Beispiele zum Pipelining benutzt.

Wer sagt dann, dass die Konsole keinen Spaß machen kann?!

Beispiel mit Cowsay und Lolcat

Beispiel mit Cowsay und Lolcat

cp

Gesamtes Verzeichnis buch kopieren: cp -a buch bak-buch

# ${i%.xxx}.yyy entfernt die Endung *.xxx und ersetzt sie durch .yyy.
# Wenn Sie cp durch mv ersetzen, werden die Dateien nicht kopiert, sondern umbenannt.
for i in *.xxx; do cp $i ${i%.xxx}.yyy; done
# alternativ mit sed
ls *.xxx | sed 's/\(.*\)\.xxx$/cp & \1.yyy/' | sh

cut

# aus der Datei /etc/passwd die erste, die dritte und die
# siebte Spalte, also den Benutzernamen, die UID-Nummer und die Default-Shell.
cut -d\: -f1,3,7 /etc/passwd

date

date "+%Y%m%d" (ergibt: 20200708)

dd

# ISO-Datei opensuse.iso direkt auf den Datenträger mit dem Device /dev/sdc
dd if=opensuse.iso of=/dev/sdc bs=1M status=progress
# 10 GiB große RAW-Image-Datei für ein Virtualisierungsprogramm (z. B. QEMU/KVM).
dd if=/dev/zero of=image.raw bs=1M count=10000

Vergleich zwischen dd, dd_rescue und dcfldd: https://superuser.com/questions/355310

dig

dig +short @8.8.4.4 braunschweig.de MX

dircolors

Bash mit dircolors nach Solarized Dark Theme

Bash mit dircolors nach Solarized Dark Theme

Einbau in ~/.bashrc mit Hilfe der dircolors.256dark Datei von Solarized Dark

# solarizd dark theme implementing manually - Zeile für .bashrc
eval $(dircolors -b dircolors.256dark)

Das Farbthema von Ethan Schoonover Solarized - Precision colors for machines and people

ethtool

ethtool enp0s3

eval

Inhalte von Ausdrücken / Variablen als Anweisungen ausführen lassen können.

kom="ls | more"
$kom  (funzt nicht)
ls: |: No such file or directory
ls: more: No such file or directory
eval $kom   (funzt)

fgconsole

# gibt Nummer der console aus!
sudo fgconsole

figlet

Ein einfaches Tool für ASCII-Art in der Konsole.

Alternative: toilet

Bei Debian-based Distros liefert figlet ein Examples-moolets-Skript für die Ausgabe der mitgelieferten Figlet-Fonts:

#!/bin/sh

# Prints "Moo" using every font installed on /usr/share/figlet
# Written by Sandro Tosi <matrixhasu@gmail.com>
# Modified by Jonathan McCrohan <jmccrohan@gmail.com>

for file in /usr/share/figlet/*.flf ; do
   FONT=`basename $file | sed 's|\(.*\)\.\(.*\)|\1|'`

   printf "Font: $FONT\n"
   figlet -f $FONT Moo
   printf "\n"
done

Das zeigt dann:

> sh /usr/share/doc/figlet/examples/moolets
Font: banner
#     #
##   ##  ####   ####
# # # # #    # #    #
#  #  # #    # #    #
#     # #    # #    #
#     # #    # #    #
#     #  ####   ####


Font: big
__  __
|  \/  |
| \  / | ___   ___
| |\/| |/ _ \ / _ \
| |  | | (_) | (_) |
|_|  |_|\___/ \___/

...
...

find

Das Standard-Suchtool mit nahezu unendlichen Aufrufmodi und Unterstützungen.

Die folgenden Beispiele habe ich häufig in meinen Seminaren:

# alle Dateien im aktuellen Verzeichnis (auch versteckte Dateien,
# aber keine Dateien aus Unterverzeichnissen)
user$ find -maxdepth 1 -type f -name '*'
# liefert nur gewöhnliche Dateien (aber keine unsichtbaren Dateien)
user$ find -maxdepth 1 -type f -name '[!.]*'

# /etc-Verzeichnis nach Dateien, die in den letzten zwei Wochen verändert wurden.
sudo find /etc -mtime -14

#  Kommando löscht alle Backup-Dateien, die durch das Zeichen ~ am Ende des Dateinamens
rm $(find . -name '*~')
# besser:
find -name '*~.jpg' -exec rm {} \;

# alle Dateieinträge (Hardlinks auf dieselbe Inodenummer) finden und löschen:
# nicht sinnvolle finds werden nach /dev/null umgeleitet (error nach /dev/null)
find /home/ -inum 262862 2> /dev/null -exec rm -f {} \;

Aber es lassen sich auch beliebige andere Quellen mit schönen Übersichten und Dutzenden von kommentierten Aufrufen finden.

Ein (aktuell / Anfang 2023) schnelle Recherche ergibt beispielhaft:

findmnt

Die bessere Darstellung von Mount-Techniken und Hierarchien.

fzf

Hinweis

FZF hat ein eigenes Kapitel bekommen (fzf)

Die rekursive Suche mit Strg + r und das Suchen von Dateien und Ordnern mit Strg + t auf die richtige Weise mit dem Fuzzy Finder.

Github Repo FZF (mit Erläuterungen für die Betriebssystemeinbindungen)

Einfache Inbetriebnahme bei Debian: apt install fzf

Am Besten schaut man für die Einbindung von FZF in die Paketinfos: apt show fzf

Dort findet man dann Distro/Shell-Erläuterungen: /usr/share/doc/fzf/README.Debian. Für die Einbindung in die Bash benötigen wir die folgenden zwei Zeilen:

source /usr/share/doc/fzf/examples/key-bindings.bash
source /usr/share/doc/fzf/examples/completion.bash

Danach natürlich nicht das Sourcing der Bashrc vergessen (z.B.): source ~/.bashrc

Das mitgebrachte Manual man fzf erläutert wie immer die hier sehr umfangreiche Nutzung.

grep

Reguläre Ausdrücke - wo soll man anfangen - wo soll man enden ;-)

Wir beginnen mal mit einem einfachen Greppen, um Standard-Konfigurationsdateien mit # am Anfang einer Zeile und Leerzeilen zu Serialisieren:

grep -v "^#\|^$" ~/.zshrc

Kurzerläuterung: -v negiert, ^ Anfang der Zeile, $ Ende der Zeile

Das geht auch etwas komplizierter mit mehr Anforderungen:

# Kommentare zu eliminieren, bei denen # oder ; nicht am Zeilenanfang steht,
# sowie leere Zeilen mit Whitespace (Leerzeichen, Tabulator-Zeichen)
grep -Ev '^[[:space:]]*#|^[[:space:]]*;|^[[:space:]]*$' \
smb.conf.orig > smb.conf

Und wer gerne noch ein bisschen mehr Infos benötigt:

Für professionelleres Greppen lohnt dann auch ein Blick auf ripgrep

gs - Ghostscript

Das Universaltool rund um Postscript und Co - also auch gerne das Handling von PDFs!

gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o gsmerged-prepress.pdf docA.pdf docB.pdf docC.pdf

Mit Schalter prepress auch noch äußerst kompakt und gleichzeitig qualitativ mehr als OK für Screens.

host

host braunschweig.de

inxi

Nettes Konsolentool für Infos rund um Hard- und Software.

Beispielhafter Aufruf:

> inxi -Sxxx
System:
  Host: rechnername Kernel: 5.4.0-122-generic x86_64 bits: 64 compiler: gcc v: 9.4.0
  Desktop: Cinnamon 5.2.7 wm: muffin 5.2.1 dm: LightDM 1.30.0
  Distro: Linux Mint 20.3 Una base: Ubuntu 20.04 focal

ipcalc (paket)

ipcalc 192.168.2.15/24 - dann klappt es auch mit dem Subnetting ;-)

kvm und qemu-kvm

Virtualiserungen mit Linux-Kernel-Bordmittel: kvm (Debian, Ubuntu) bzw. qemu-kvm (Fedora, Red Hat) sind winzige Scripts, die im Emulator qemu eine virtuelle Maschine mit KVM-Unterstützung ausführen.

qemu-img create -f qcow2 disk.img 10G
kvm -accel kvm -m 1024 -smp 2 -boot once=d -cdrom ubuntu-server.iso \
    -drive file=disk.img,if=virtio,format=qcow2 \
    -net user -net nic,macaddr=52:54:00:12:e4:4e,model=virtio \
    -vga cirrus -vnc 127.0.0.1:0 -k de -usb -usbdevice tablet
vncviewer localhost:0

Besser: grafische Tools wie virt-viewer