Bash-Goodies

davidbaumann

Commodore
Registriert
Aug. 2004
Beiträge
4.867
Hallo zusammen,

wie oft schon habt ihr nach Jahren dann zufällig einen Bash-Befehl gefunden, der euch den Alltag ungemein erleichtert (hätte)?
Ich würde gerne hier ein paar Kniffe zusammentragen.

Code:
unp is a small script with only one goal: Extract as many archives as possible, of any kind and from any path to the
current directory, preserving the subdirectory structure where needed. Is a Do-What-I-Want utility and helps  
managing  several  extraction  programs  without looking for needed options for the particular tool or worrying about the
installation of the needed program.

Ist bei Debian/ Ubuntu im Paketmanager, muss man aber installieren.

​Gruß.
 
Was mich recht begeistert hat, war "source-highlight". Kombiniert man das Paket mit ein paar kleinen Einstellungen in der .bashrc, hat man wunderschönes Syntax Highlighting z.B. in less. Wenn man regelmäßig Logs, z.B. vom Apache, liest, erfreut das ungemein das Auge.
 
Also keine Scripte, einfach nur simple und nützliche Kommandozeilenprogramme?

html2text: Ein Segen für schnelles Seiten parsen für Arme. Ja, ich weiß, sollte man nicht machen, aber wenn man nur eine kleine, schnelle Aufgabe hat, reicht Regex aus um schnell die entsprechende Zeile rauszureißen, und den Rest jagt man dann kurzerhand durch html2text. Maximale Faulheit.
youtube-dl: Einfach schnell die URLs von diversen Streamingseiten extrahieren und im Player eigener Wahl öffnen. Mpv nutzt(e) libquvi, aber Quvi a shit, youtube-dl ist besser, und nicht jeder nutzt Mpv. Kann mit entsprechenden Optionen auch die DASH Videos (1080p) holen.
notify-send: Sollte jeder kennen, aber der Vollständigkeit halber, und ich nutze es die ganze Zeit … Extrem nützlich, sehr simple Methode um den notification server anzusprechen und scripten schöne Popups zu geben. Zusammen mit Zenity hat man dann fast schon ein komplettes Frontend für ein Script, mit nur 2 Zeilen Bash Code. Wieder, maximale Faulheit. :p

Ansonsten ist das ein wunderbarer Fundus an Bash Tricks:
http://stackoverflow.com/questions/...e-most-favorite-command-line-trick-using-bash
Da findet garantiert jeder etwas, das er noch nicht kennt.
 
Zuletzt bearbeitet: (Mpv nutzt nun auch youtube-dl, standardmäßig aktiviert seit 0.7.2)
War erst hier Thema, finde ich persönlich klasse, da man oft zwischen Terminal und GUI herspringt:

yakuake-default.jpg

KDE: yakuake
GTK: guake

Ist kein Bash-Kniff, sondern ein Kniff um an die Bash zu kommen ;)

Einfach mit F12 z.B. aufrufen und wieder verschwinden lassen.

​Gruß.
 
Hab gestern auch im Büro installiert. Gefällt mir gut. Hab davor lange Zeit Terminator verwendet wegen dem Tiling. Einziges Problem für mich ist, dass ich auf meinen Privatrechnern E17 verwende und keine Lust habe mir KDE oder Gnome Dependencys in System zu ziehen.

Wenn ich mal mehr Zeit hab bau ich mal nen EFL Fork davon :)
 
devilspie ist da auch recht praktisch, habe ich vor allem zu Gnome2-Zeiten recht häufig verwendet, um eine Shell als "Desktophintergrund" stets verfügbar zu halten. Alternativ kann man auch die terminal-applets von entweder cairo-dock oder awn nutzen, auch die sind u.U. recht hilfreich. Gegen yakuake kommen die allerdings nicht mit.
 
ssh-keygen (einmalig pro lokalem Nutzer)
ssh-copy-id (einmal pro remote Nutzer/System).

Code:
ssh-keygen
ssh-copy-id [Benutzer@]host [-p port]

Erstellt lokal ein Schlüsselpaar, von welchem der "öffentliche" später auf dem Server kopiert wird.
Somit entfällt für diesen Host von diesem Client die Passworteingabe.
Ergänzung ()

Loggt ihr euch immer auf eurem SSH Server ein und müsst dabei umständlich Nutzer, Port und Host eingeben, so geht das auch einfacher.
Beispiel:
Code:
ssh customer-12345@yourverylonghostname.yourverylongprovidername -p 12345

Sieht dann in der .ssh/config so aus:
Code:
Host webspace
    HostName yourverylonghostname.yourverylongprovidername
    Port 12345
    User customer-12345

Ein Login ist jetzt folgendermaßen möglich:
Code:
ssh webspace
 
Kleines Utility was ich jetzt für mein Raspberry brauchen konnte:

Code:
sudo dhcpdump -i eth0

Zeigt einem alle Geräte an, die sich per DHCP neu am Netzwerk anmelden.
Somit dhcpdump starten, Raspberry anschalten und kurz warten.

Funktioniert natürlich nur in übersichtlichen Netzwerken :)
Gibt sicherlich 100 Möglichkeiten das rauszufinden, aber z.B. in einem fremden LAN ohne Zugriff auf Router etc sehr praktisch...

MfG.
 
Um das lokal benutzte Subnetz herauszufinden ist es sehr viel schöner tcpdump zu nutzen, da das immer
funktioniert, solange IPV4 benutzt wird: tcpdump -s 0 -n -vv 'arp'
Das sieht dann so aus:

22:48:45.044927 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.178.212 tell 192.168.178.48, length 46
22:48:45.174880 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.178.43 tell 192.168.178.48, length 46
22:48:45.174910 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.178.43 is-at 44:8a:5b:60:b2:02, length 28

Grüße,
Thermi
 
davidbaumann schrieb:
ssh-keygen (einmalig pro lokalem Nutzer)
ssh-copy-id (einmal pro remote Nutzer/System).

Code:
ssh-keygen
ssh-copy-id [Benutzer@]host [-p port]

Jep das ist wirklich sehr gut, habe ich auch schon ein paar mal genutzt!

Hier das habe ich gestern gefunden und fand es klasse:

Code:
sudo !!

wenn man vor dem letzten Befehl "sudo" vergessen hat, kann man mit diesem Befehl einfach den vorherigen mit sudo ausführen. Quick and dirty :D

Gruß

Ride
 
Für ssh, hab' ich heute erst beruflich gebraucht, ist Expect (gibt's in jedem gut sortierten Repository unter *BSD und Lin*ux) eine großartige Ergänzung. Beantwortet beliebige Abfragen.
 
Wie genau setzt du das da ein?

Mit einer .ssh/config Datei infolgendem Stil, und ssh-copy-id, arbeitet es sich auch sehr angenehm mit sshfs, scp und rsync:

Code:
Host srv1
  HostName langerhostname.hetzner.de
  Port 12345
  user wwwadmin

Code:
mkdir wwwbackup
rsync -avze ssh srv1:/var/www wwwbackup/

Code:
scp srv1:/var/www/index.php .

Code:
mkdir www
​sshfs srv1:/var/www www/
 
Wenn ich mal eben auf einen Server zugreifen möchte, bei dem ssh-copy-id nicht möglich ist, zum Beispiel. Aber es gibt sicher noch mehr Abfragen als nur die nach dem Passwort.
 
kpartx

Ihr erstellt ein Image eines Datenträgers:

Code:
dd if=/dev/sdc of=virtualdisk.img

Jetzt möchtet ihr z.B. eine Partition darin mounten.
Es geht auch umständlich mit losetup.

Oder einfach:
Code:
#:~/temp$ sudo kpartx -av virtualdisk.img
​add map loop0p1 (252:3): 0 202752 linear /dev/loop0 2048
#:~/temp$ mount /dev/mapper/
control            sda3_crypt         ubuntu--vg-swap_1  
loop0p1            ubuntu--vg-root    
#: sudo mount /dev/mapper/loop0p1 loop/
david@david-xps:~/temp$ cd loop/
david@david-xps:~/temp/loop$ ll
insgesamt 18
drwxr-xr-x 3 root  root   1024 Mai  1 15:42 ./
drwxrwxr-x 3 david david  4096 Mai  1 15:41 ../
drwx------ 2 root  root  12288 Mai  1 15:41 lost+found/
-rw-r--r-- 1 root  root    169 Mai  1 15:42 test.img
-rw-r--r-- 1 root  root      0 Mai  1 15:42 test.txt
Man könnte jetzt auch ein Dateisystem erstellen, statt zu mounten, etc.
Partitionstabellen anlegen geht übrigens mit gparted:

Code:
gparted virtualdisk.img
 
Code:
xdg-open
, öffnet eine Datei/URL im vom System konfigurierten bevorzugten Programm.
Code:
pgrep
, quasi ps + grep in einem Befehl.
 
Zurück
Oben