Markdown-Dateien in ODT und PDF umwandeln: So gelingt es mit Pandoc!

Markdown-Dateien gehören zu den praktischsten Tools für effizientes Arbeiten – klar strukturiert, leichtgewichtig und vielseitig einsetzbar. Wer regelmäßig mit Markdown arbeitet, kennt das Problem: Manchmal braucht man die Inhalte in anderen Formaten, sei es für LibreOffice oder als PDF. Während viele Tools versprechen, die Konvertierung zu meistern, scheitern sie oft an Details. Die Lösung: das bewährte Kommandozeilen-Tool Pandoc.

Warum Pandoc? Ganz einfach: Es ist schnell, flexibel und funktioniert zuverlässig – selbst bei großen Dateien. In diesem Artikel wird Schritt für Schritt erklärt, wie man Markdown-Dateien in ODT (LibreOffice-Format) und PDF konvertiert, welche Befehle benötigt werden und welche Kniffe die Arbeit erleichtern.


Was ist Pandoc und warum ist es ein Gamechanger?

Pandoc ist ein universelles Konvertierungswerkzeug für Textdokumente. Es unterstützt unzählige Formate – von Markdown über HTML bis hin zu LaTeX, EPUB und Word. Die große Stärke liegt in seiner Flexibilität: Einmal installiert, lässt sich Pandoc direkt über die Kommandozeile nutzen und liefert sofort Ergebnisse.

Installation auf Ubuntu (Linux)

Die Installation ist ein Kinderspiel, vor allem auf Linux-Systemen wie Ubuntu. Ein einziger Befehl reicht aus, um Pandoc einsatzbereit zu machen:

sudo apt install pandoc

Nach der Installation kann die Konvertierung direkt starten. Einfacher geht es kaum!


Markdown in ODT und PDF konvertieren: Schritt-für-Schritt-Anleitung

1. Wechsel in das Verzeichnis der Markdown-Datei

Öffnen Sie die Kommandozeile und navigieren Sie in das Verzeichnis, das die zu konvertierende Markdown-Datei enthält:

cd /pfad/zum/verzeichnis

2. Markdown-Datei in eine ODT-Datei umwandeln

Der Kernbefehl zur Konvertierung lautet:

pandoc -f markdown -t odt MarkdownDatei.md -o LibreOfficeDatei.odt

Erklärung der Parameter:

  • -f markdown: Gibt an, dass die Eingabedatei im Markdown-Format vorliegt.
  • -t odt: Definiert das Ziel-Format (LibreOffice ODT).
  • MarkdownDatei.md: Die Quelldatei im Markdown-Format.
  • -o LibreOfficeDatei.odt: Die gewünschte Zieldatei im ODT-Format.

3. ODT-Datei nachbearbeiten und in PDF umwandeln

  • Öffnen Sie die generierte ODT-Datei in LibreOffice.
  • Nehmen Sie bei Bedarf kleinere Anpassungen vor.
  • Exportieren Sie die Datei über “Datei → Exportieren als → PDF”. Achten Sie dabei darauf, die Option „use reference XObjects“ zu aktivieren, um ein ordentliches Inhaltsverzeichnis (TOC) zu generieren.

Alle unterstützten Formate auf einen Blick

Pandoc kann mit einer Vielzahl von Formaten umgehen. Eine Übersicht der unterstützten Eingabeformate liefert der Befehl:

pandoc --list-input-formats

Für die Ausgabeformate verwenden Sie:

pandoc --list-output-formats

Einige Highlights:

  • Eingabeformate: Markdown, HTML, LaTeX, JSON, EPUB, MediaWiki, RTF, und viele mehr.
  • Ausgabeformate: PDF, ODT, DOCX, EPUB, Reveal.js-Präsentationen, und vieles mehr.

Power-Tipp: Mehrere Markdown-Dateien zusammenführen

Wenn Sie mehrere Markdown-Dateien kombinieren möchten, um eine einzige Datei zu erstellen, gibt es zwei elegante Ansätze:

Variante 1: Direkt kombinieren

Mit diesem Befehl lassen sich alle Markdown-Dateien im aktuellen Verzeichnis direkt in eine ODT-Datei zusammenführen:

pandoc -f markdown -t odt -s $(find . -type f -name "*.md") -o Output.odt

Variante 2: Sortierte Reihenfolge

Falls die Dateien in einer bestimmten Reihenfolge zusammengeführt werden sollen, gehen Sie in zwei Schritten vor:

  1. Schreiben Sie die Pfade aller Markdown-Dateien in eine Textdatei:
    find . -type f -name "*.md" >DateienListe.txt
  2. Nutzen Sie Pandoc, um die Dateien in der gewünschten Reihenfolge zu kombinieren:
    pandoc -f markdown -t odt -s $(cat DateienListe.txt) -o Output.odt

Diese Methode ist besonders nützlich, wenn es um umfangreiche Dokumentationen oder E-Books geht.


Was fehlt noch? Ein Wunsch für LibreOffice

Auch wenn die Kombination aus Pandoc und LibreOffice eine perfekte Lösung für die meisten Anwendungsfälle ist, bleibt ein kleiner Wermutstropfen: Es fehlt in LibreOffice eine einfache Möglichkeit, alle importierten Grafiken automatisch auf die Seitenbreite zu skalieren, ohne das Seitenverhältnis zu verlieren. Falls jemand einen Trick kennt, wären sachdienliche Hinweise im Fediverse willkommen!


Fazit: Mit Pandoc die volle Kontrolle über Markdown-Dateien

Wer regelmäßig mit Markdown arbeitet und die Inhalte in anderen Formaten benötigt, wird Pandoc lieben. Ob ODT, PDF oder andere Formate – Pandoc liefert schnelle, zuverlässige Ergebnisse und ist dabei extrem flexibel. Die Möglichkeit, mehrere Dateien zu kombinieren, rundet das Tool ab.

Mit ein wenig Übung wird Pandoc zum unverzichtbaren Werkzeug für Markdown-Nutzer – und vielleicht zu Ihrer besten Entscheidung seit der Umstellung auf Markdown.

Views: 8

Bash mit vi (vim) Befehlen – vi Mode

Konfiguration

Bash kann mit vi Befehlen gesteuert werden. dazu muss lediglich entweder im Benutzerverzeichnis in die Datei .bashrc oder systemweit in die /etc/bash.basrc eine Zeile eingetragen werden

# Aktivieren des VI Modus -> Energie !
set -o vi

Konfiguration akvtieren

In der nächsten Session (z.B. neuer Login) oder durch das Ausführen des Befehls source ~/.bashrc oder source /etc/bash.basrc wird diese neue Einstellung aktiv. Alternativ kann statt dem Befehl source auch der Befehl exec benutzt werden. Dieser ersetzt die aktuelle Shell mit einer komplett neuen Shell. Die “alte” Shell bleibt dann solange im Hintergrund, bis die neue Shell beendet wurde. Wie so eine Matrjoschka Puppe.

vi Modus Aktivieren

Der vi Modus wird aktiv, indem die ESC Taste gedrückt wird. Und “raus” geht es wieder, indem i für Insert (Einfügen) gedrückt wird. Oder passiert automatisch, je nachdem welcher Befehl benutzt wurde, der dann automatisch in den INSERT oder den APPEND Modus wechselt. Also zurück in die alte Bash.

Das war schon alles. Aber hier noch zusätzlich ein paar nützliche Tastenkombination bei aktiviertem vi Modus ESC als Bonus:

Navigation

  • 0 oder ^^ springe an den Anfang der Zeile
  • $ springe an das Ende der Zeile
  • w springe zum nächsten Wort
  • b springe ein Wort zurück (back)
  • k gehe einen Eintrag zurück in der Bash History (analog die Pfeil runter Taste in der Bash)
  • l gehe einen Eintrag vorwärts in der Bash History (analog die Pfeil hoch Taste in der Bash)

Suche

  • f ZEICHEN sucht das nächste Vorkommen von ZEICHEN (ohne Eingabe des Leerzeichens!)
  • F ZEICHEN sucht das vorherige Vorkommen von ZEICHEN (ohne Eingabe des Leerzeichens!)
  • ; wiederholt die vorherige Suche. Vorwärts oder eben auch Rückwärts.

Editieren

  • x löscht das Zeichen unter dem Cursor
  • X löscht das Zeichen links vom Cursor
  • I springt an den Anfang der Zeile und wechselt zum INSERT Modus (und beendet den vi Modus)
  • A springt an das Ende der Zeile und wechselt in den APPEND Modus (und beendet den vi Modus)
  • cc löscht die komplette Zeile und wechselt in den INSERT Modus
  • C löscht den Rest der Zeile nach rechts und wechselt in den INSERT Modus
  • cw löscht ab der aktuellen Cursorposition bis zum Wortende und wechselt in den INSERT Modus
  • ciw löscht das Wort unter der aktuellen Cursorposition und wechselt in den INSERT Modus
  • ci3w löscht ab dem aktuellen Wort (inklusive) drei Wörter ab der aktuellen Cursorposition und wechselt in den INSERT Modus
  • ea springt zum Ende des aktuellen Wortes und wechselt in den APPEND Modus
  • r ersetzt exakt nur das Zeichen über dem Cursor (bleibt im vi Modus)
  • R wechselt in den Überschreibe Modus
  • ~ schaltet die Groß/Kleinschreibung des Zeichens über dem Cursor um
  • xp löscht das aktuelle Zeichen, rückt alle nachfolgenden Zeichen eines nach links und fügt das gelöschte Zeichen nach dem einen nachgerückten Zeichen wieder ein. Beispiel mit dem Cursor auf dem e wird aus heir wird hier

Löschen

  • dd oder D löscht die komplette Zeile
  • dw löscht ab der aktuellen Cursorpostion bis zum Wortende
  • bdw springt an den Anfang des Wortes und löscht dann das ganze Wort
  • bd4w springt an den Anfang des Wortes und löscht dann 4 ganze Wörter (Leerzeichen zählen als Wörter)
  • x löscht das Zeichen unter dem Cursor
  • X löscht das Zeichen links vom Cursor
  • cc löscht die komplette Zeile und wechselt in den INSERT Modus
  • C löscht den Rest der Zeile nach rechts und wechselt in den INSERT Modus
  • cw löscht ab der aktuellen Cursorposition bis zum Wortende und wechselt in den INSERT Modus
  • ciw löscht das Wort unter der aktuellen Cursorposition und wechselt in den INSERT Modus
  • ci3w löscht ab dem aktuellen Wort (inklusive) drei Wörter ab der aktuellen Cursorposition und wechselt in den INSERT Modus

Copy N Paste

  • y kopiert das aktuelle Wort unter dem Cursor
  • y3w kopiert ab der aktuellen Cursorposition 3 Wörter (Leerzeichen werden als Wörter gezählt)
  • by3w springt an den Wortanfang und kopiert ab der aktuellen Cursorposition 3 Wörter (Leerzeichen werden als Wörter gezählt)
  • Y kopiert alles von der aktuellen Position bis zum Zeilenende
  • p fügt das zuvor Kopierte ab der aktuellen Cursorposition ein
  • P fügt das zuvor Kopierte vor der aktuellen Cursorposition ein

Weitere hyperblog Artikel zum Thema

vim

bash

Views: 63

Bash history von allen Terminal Sessions speichern – Zum Beispiel tmux

Damit die Befehle verschiedener Terminal Sessions in der .bash_history gespeichert werden, muss Folgendes entweder in der user .bashrc (benutzerspezifisch) oder in der /etc/bash.bashrc(systemweit) eingetragen werden.

# avoid duplicates..
export HISTCONTROL=ignoredups:erasedups

# big big history
export HISTSIZE=100000
export HISTFILESIZE=100000

# append history entries..
shopt -s histappend

# After each command, save and reload history
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Weitere hyperblog Artikel zum Thema

bash

tmux

Views: 84

Eine tmux.conf Konfiguration

Dieser Artikel ist eine Erweiterung des tmux Artikels “tmux ein Windowmanager für die Konsole

Eine für mich sehr gut funktionierende tmux.conf entweder systemweit in /etc/ oder nur für einen Benutzer in der ~/.tmux.conf ist die folgende Konfiguration. Für mich waren hier die Statuszeile und die Einbindung des Maus Scrollrades zum Scrollen wichtig.

######################
### DESIGN CHANGES ###
######################

# loud or quiet?
set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none

set -g mouse on

# modes
setw -g clock-mode-colour colour25
setw -g mode-style "fg=colour255 bg=colour25 bold"

# panes
set -g pane-border-style "fg=colour19 bg=colour0"
set -g pane-active-border-style "bg=colour0 fg=colour9"

# statusbar
set -g status-position bottom
set -g status-justify left
set -g status-style "bg=colour25 fg=colour255"
set -g status-left "#[bg=colour25,fg=colour255]"
set -g status-right "#[fg=colour255,bg=colour25] %d/%m/%Y #[fg=colour255,bg=colour25] %H:%M "
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-style "fg=colour15 bg=colour31 bold"
setw -g window-status-current-format "#I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F"

setw -g window-status-style "fg=colour0 bg=colour25 bold"
setw -g window-status-format "#I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F"

setw -g window-status-bell-style "fg=colour255 bg=colour1 bold"

Weitere hyperblog Artikel zum Thema

tmux

bash

Views: 23

Pipewire modul-rt Konfiguration

Hier findest du eine kurz & knackige Anleitung und Erklärung, wie du das Realtime Modul von Pipewire für deine Audio/Video Anwendungen einrichtest.

Für die Musikproduktion mit einer DAW z.B. Bitwig unter Linux kann dieses Thema für dich sehr wichtig sein.

Eventuell interessiert dich noch der Artikel über pw-metadata, mit dem du temporär und permanent deine Pipewire Konfigurationen verändern kannst

Benutzer in Gruppen aufnehmen

Der Benutzer unter dem die Applikation laufen soll, muss in die entsprechenden Gruppen (wenn vorhanden) aufgenommen werden mit einem Editor (z.B. nano oder vim) und Superuser Rechten die Datei /etc/group editieren

sudo vim /etc/group

und in den Zeilen, in denen rtkit und pipewire steht den Benutzernamen anhängen

rtkit:x:117:BENUTZERNAMEN
pipewire:x:136:BENUTZERNAMEN

Damit das wirksam (aktiv) wird, muss die Session neu gestartet werden. Entweder einfach ausloggen und wieder einloggen, oder den Computer neu starten.

Module-rt konfigurieren

Falls noch gar keine Pipewire Konfiguration vorhanden ist, muss diese erst angelegt werden. Das kann Systemweit in /etc/pipewire gemacht werden. Zu empfehlen ist es aber bei den meisten Systemen, da es sich meist um Eine-Person-Computer handelt im Heimverzeichnis des Benutzers z.B. /home/BENUTZERNAME/.config/pipewire/pipewire.conf.d .

Warum im Heimverzeichnis? Weil bei einem Backup des Benutzerverzeichnisses gleich die Pipewirekonfiguration der BernutzerIn mit gesichert wird. Gibt es auf dem Computer mehrere BenutzerInnen mit unterschiedlichen Konfigurationen, werden alle entsprechenden Konfigurationen mitgesichert und werden beim Zurückspielen einer Sicherung wieder “aktiviert”.

Info: Im Verzeichnis /usr/share/pipewire/ liegen bereits einige Beispiele von Konfigurationsdateien. Diese brauchen wir aber für unsere Aufgabe nicht. Und diese sind auch so generisch, dass sie nicht unbedingt auf unsere Konfiguration passen, ohne dass wir größere Änderungen an den gesamten Konfigurationsdateien vornehmen.

Konfiguration erstellen

Wir erstellen uns einfach die Datei pipewire.conf im Verzeichnis /home/Benutzername/.config/pipewire/pipewire.conf.d/ ganz einfach mit dem Aufruf eines Editors wie nano oder auch vim

vim /home/BENUTZERNAME/.config/pipewire/pipewire.conf.d/pipewire.conf

Und tragen folgende Zeilen ein. Das RTKit Modul libpipewire-module-rtkit ist hier deaktiviert und greift je nach Konfiguration nicht immer. Probiert es einfach aus, ob es bei euch funktioniert.
Darunter befindet sich dann das Pipewire Modul libpipewire-module-rt . DAS braucht ihr!

# Reload Configuration File
# systemctl --user daemon-reload
#
# Restart Pipewire Daemon 
# systemctl --user restart pipewire.service pipewire-pulse.socket

context.modules = [  

    # Uses RTKit to boost the data thread priority.
    #{ name = libpipewire-module-rtkit
    #    args = {
    #       nice.level   = -11
    #       rt.prio      = 88
    #       rt.time.soft = 2000000
    #       rt.time.hard = 2000000
    #   }
    #   flags = [ ifexists nofail ]
    #}

   # Set thread priorities without using RTKit.
   { name = libpipewire-module-rt  
       args = {  
           nice.level    = -11  
           rt.prio      = 88  
           rt.time.soft = 2000000  
           rt.time.hard = 2000000  
           rlimits.enabled = true  
           rtportal.enabled = true  
           rtkit.enabled = true  
       }  
       flags = [ ifexists nofail ]  
   }  
]

Pipewire als Benutzer neu starten

Da sich die Konfiguration auf der Festplatte geändert hat, müssen zwei Befehle mit ganz normalen Benutzerrechten eingegeben werden.

Neuladen der Konfiguration

systemctl --user daemon-reload

Pipewire neu starten

systemctl --user restart pipewire.service pipewire-pulse.socket

Check rt Prio Prozess

Mit dem folgenden Befehl kannst du im Systemjournal sehen ob eine Anwendung mit dem rtkit gestartet wurde.

journalctl --no-hostname -b 0 -e -u rtkit-daemon

Erklärung zu Xruns

Zur Vollständigkeit, weil das Thema Xruns in diesem Zusammenhang manchmal kommt.

Es gibt 2 Ursachen für Xruns

  1. Die Anwendungen können den Zyklus nicht rechtzeitig abschließen. Das kann daran liegen, dass der Kernel sie nicht rechtzeitig aufgeweckt hat oder dass sie nicht genügend Zeit zugewiesen bekommen haben.
  2. Das Timing des Treibers ist zu eng. Der Treiber wird nicht schnell genug aufgeweckt, um den Puffer gefüllt zu halten.
  • Ursache 1 kann zu Ursache 2 führen.
  • Ursache 2 kann durch Hinzufügen von mehr Pufferung (Vergrößerung des Headrooms) verbessert werden.
  • Das Hinzufügen von Headroom verbessert Ursache 1 aber nicht.

Mit pw-top kannst du sehen, was die Xruns verursacht.

  1. Wenn die Xruns der Anwendung zunehmen, ist es Ursache 1
  2. Wenn nur der Treiber die Xruns erhöht, ist es Ursache 2
  3. Wenn beide zunehmen, ist es Ursache 1, die Ursache 2 verursacht
Quellen
  1. Pipewire Module-rt https://docs.pipewire.org/page_module_rt.html
  2. Pipewire Docs https://docs.pipewire.org/index.html
  3. Pipewire Configuration https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire
  4. pw-metadata https://docs.pipewire.org/page_man_pw_metadata_1.html
  5. pw-top https://docs.pipewire.org/page_man_pw_top_1.html
  6. Troubleshooting & XRuns https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#xruns
  7. Pipewire Ubuntuusers https://wiki.ubuntuusers.de/Pipewire/
  8. Pipewire Home https://pipewire.org/

Weitere hyperblog Artikel zum Thema

pipewire

bash

Views: 65

Audio in Video normalisieren mit ffmpeg

Manchmal ist das Audio in einem Video relativ leise und eigentlich ist da noch richtig Luft nach oben es lauter zu machen. Ein schöner und sehr eleganter Weg ist es mit ffmpeg die Normalisierungsfunktion zu nutzen, ohne das Video selbst erneut zu encoden. Das Audio muss natürlich neu encoded werden.

Zuerst muss ermittelt werden welches der lauteste Peak (lauteste Stelle) im gesamten Audio ist

Lautstärkenermittlung – Highest Peak

ffmpeg -i Videodatei.mp4 -af "volumedetect" -vn -sn -dn -f null /dev/null

Dann steht in der Ausgabe irgendwo relativ weit oben so etwas:

[Parsed_volumedetect_0 @ 0x00000000000] mean_volume: -29.1 dB
[Parsed_volumedetect_0 @ 0x00000000000] max_volume: -3.6 dB

Das “max_volume mit -3.6 dB” ist das Interessante für uns. Das maximale Level in der digitalen Welt ist 0dB . Alles was darüber “gedrückt” wird, wird sehr hässlich verzerrt. Das sollte unbedingt vermieden werden!!

Lautstärkenlimit beachten!

Und vielleicht ein kleiner Sicherheitsabstand wäre auch noch ganz gut, denn beim Umwandeln über D/A (Digital/Analog) Wandler passieren auch je nach Qualität manchmal merkwürdige Dinge. Stichwort Truepeak bzw True Inter-Sample Peak Level.
Also als Empfehlung wäre hier einen Puffer von 0,5 dB bis 1 dB einzuhalten.

In unserem Beispiel von “max_volume mit -3.6 dB” nehmen wir mal einen Puffer von 1 dB, das würde dann heissen, dass wir das max_volume um 2.6dB erhöhen: -3.6+2.6= -1dB Ziellautstärke

Lautstärkenanhebung

Der Befehl dazu lautet (Ziel Audioformat: AAC)
ffmpeg -i Videodatei.mp4 -af "volume=2.6dB" -c:v copy -c:a aac -b:a 192k VideodateiErgebnis.mp4

Alias und Function

Und in der Shell Bash ist das natürlich schöner mit einem kurzen Alias aufzurufen. Aber ein Alias ist nur ein anderer Name für ein bestehender Name. Also könnte ich dem Programm Ulrike den Namen Peter geben und egal, welchen Namen ich jetzt eingebe Ulrike oder Peter, das selbe Programm wird ausgeführt.

Da sich hier aber Aufrufparameter, wie Videodatei und die 2.6dB handelt, reicht ein Alias nicht. Dafür gibt es in der Bash die Function. Hier können dann auch die Aufrufparameter abgefragt werden.

Diese Functions weiter unten gelten immer nur für die aktuelle Session. Sobald das Fenster geschlossen oder die Bash beendet wird, ist auch die Function gelöscht. Soll die Function für immer bleiben, muss sie in der Datei .~bashrc im eigenen Homeverzeichnis definiert werden.

Lautstärke herausfinden

Der Aufruf sieht so aus myMaxvol Videodatei.mp4

myMaxvol() { ffmpeg -i "$1" -af "volumedetect" -vn -sn -dn -f null /dev/null; }

Lautstärke anheben

Der Aufruf sieht so aus: myGainvol Videodatei.mp4 2.6

myGainvol() { ffmpeg -i "$1" -af "volume=""$2""dB" -c:v copy -c:a aac -b:a 192k output.mp4 && mv output.mp4 "$1" ; }

Erklärung was hier passiert: Es wird als Parameter Videodatei.mp4 und 2.6 als Lautstärkenanhebung mitgegeben. Das Ergebnis wird in eine Datei namens output.mp4 geschrieben. Wenn die Lautstärkenanhebung erfolgreich war, dann wird die Datei output.mp4 umbenannt in die Videodatei.mp4, die damit natürlich überschrieben wird.

Wenn die Aktion schief läuft, dann liegt da eine Datei output.mp4 herum und noch die originale Datei Videodatei.mp4.

Bash Script

Vielleicht bastle ich noch ein kleine Bash Script, das automatisch die Lautstärke ermittelt, dann auch automatisch die Anhebung ermittelt und danach gleich die Lautstärkenanhebung durchführt. Und dann das ganze noch auf ein ganzes Verzeichnis anwendet.

Schaumermal.

Weitere hyperblog Artikel zum Thema

bash

Views: 139

Nützliche Bash Shortcuts

Wenn du in Linux die Konsole öffnest, dann öffnest du in den meisten Fällen eine Bash Shell. Eine Shell ist einfach nur ein Programm, mit dem du Befehle an deinen Computer senden kannst wie : Zeige mir alle Dateien und Verzeichnisse an, oder starte Programm XY. Eine Shell ist also eine Kommunikationsschnittstelle zu deinem Betriebssystem. Es gibt viele verschiedene Shells und eine davon ist eben Bash. Siehe auch Wikipedia https://de.wikipedia.org/wiki/Bash_(Shell)

So eine Shell (Mensch-Maschine-Schnittstelle) bietet sehr sehr sehr viele verschiedene Möglichkeiten. Darunter auch viele Shortcuts (Tastenkombinationen), die das Eingeben, Suchen, Editieren usw viel einfacher machen.

Hier habe ich einige und für mich sehr nützliche Shortcuts zusammengestellt

Die Buchstaben hier sind zwar alle groß geschrieben, aber das einfach nur wegen der besseren Lesbarkeit und Einheitlichkeit. Alle Buchstaben können ohne die Shift Taste eingegeben werden. Also ein L ist eigentlich ein l, das sonst schnell mit einem großen i verwechselt werden könnte. Ich schreibe extra Kommandozeile, weil die sich über mehrere Zeilen erstrecken kann und damit klar wird, dass nicht die Bildschirmränder gemeint sind.

Nützliches

  • TAB Tabulator Taste bei der Eingabe drücken, um die Autovervollständigung zu nutzen. Am Anfang der Zeile wird nach Befehlen aus dem System gesucht, wenn bereits ein Wort am Anfang steht, dann werden Datei- und Verzeichnisnamen vervollständigt
  • Strg + L Löscht den Bildschirm. Wie auch der Befehl clear
  • !! Den letzten Befehl nochmal wiederholen (NOCHMAL !! !! !! !!)

Suchen

  • Pfeil hoch / runter – Befehlshistorie hoch und runter (vor und zurück) blättern, um bereits ausgeführte Befehle nochmal zu wiederholen. Bash speichert eingegebene Befehle in einer Datei namens .bash_history in deinem Homeverzeichnis und diese wird dann durchsucht.
  • Strg + R Inkrementelle Rückwärtssuche der Bash Historie. Erneut Strg + R drücken, um das nächste Suchergebnis anzeigen zu lassen.
  • Strg + J die aktuelle Suche in der Bash Historie mit der Übernahme des aktuellen Befehls beenden (Jaaaaa)
  • Strg + G die aktuelle Suche in der History mit leerer Eingabe beenden (Geh weg!)

Cursor Navigation

  • Strg + A Springe ganz an den ANFANG der Kommandozeile
  • Strg + E Springe ganz an das ENDE der Kommandozeile
  • Alt + F schiebt den Cursor vorwärts (FORWARD) vor das nächste Wort
  • Alt + B schiebt Cursor zurück (BACK) auf den ersten Buchstaben des vorangegangen Wortes

Löschen & Tauschen

  • Strg + U Löscht alles links des Cursors bis zum Anfang der Kommandozeile (Uuuuund zurück)
  • Strg + K Löscht alles rechts des Cursors bis zum Ende der Kommandozeile (Kawumm)

  • Strg + W Löscht ab dem aktuellen Zeichen links den “Rest” bis zum WORTanfang
  • Alt + D Löscht ab dem aktuellen Zeichen den “Rest” DES Wortes rechts

  • Alt + T Das Wort an der aktuellen Cursorposition wird mit dem vorangehenden Wort vertauscht (Tausch)

Ausgabe Display

  • Strg + S Stoppt die Ausgabe von Meldungen auf dem Bildschirm – einfrieren/screenshot (das aktuell laufende Programm wird nicht gestoppt. Im “Hintergrund” laufen die Meldungen weiter)
  • Strg + Q Beendet das Strg + S (screenshot/einfrieren)

Beenden

  • Strg + C Abbruch eines Programms
  • Strg + D Schliesst die Bash Shell und damit auch meist das Konsolen Terminal

Weitere hyperblog Artikel zum Thema

bash

Views: 23

Kommando zurück – Bash History Tipps

Die Standard-Kommandozeile Bash bei Kubuntu (wie auch bei vielen anderen Linux Distributionen) hat eine sehr praktische History bzw ein Verlauf, welche Befehle man so eingegeben hat.
 
Die entsprechende Datei heisst .bash_history (mit einem vorangehenen Punkt – weil es sich um eine versteckte Datei handelt) liegt im Benutzerverzeichnis z.B. /home/hoergen/.bash_history
 
Die gesamte History (Verlauf) auflisten mit dem Befehl: history, dann wird ein Liste der Eingaben mit vorangestellter Zeilennummer ausgegeben.
 
Das können unter Umständen sehr viele Zeilen sein. Wenn man nach dem Befehl eine Zahl angibt, so werden die letzten Zeilen der History (Verlaufs) angezeigt wie z.B. history 8 zeigt die letzten 8 Zeilen der History an.
Damit man z.B. den Befehl aus der gefundenen Zeile nicht noch einmal eingeben muss, kann man zur Abkürzung die Zeilennummer mit einem vorangestellten Ausrufezeichen verwenden z.B. !1500
 
In der History kann auch gesucht werden

  • SuchenStrg+r – und anfangen zu tippen
  • Weitersuchennochmal Strg+r drücken
  • Zeile aus der Suche übernehmen und startenEingabe Taste drücken
  • Zeile aus der Suche übernehmen und etwas ändernEnde- oder Pfeil nach rechts Taste

 
Und zum Korrigieren sind diese Tastenkürzel hilfreich

  • Will man die Zeile löschen und ist am Anfang der Zeile: Strg+k
  • Will man die Zeile löschen und ist am Ende der Zeile: Strk+u
  • Will man die zuvor gelöschte Zeile wieder herstellen: Strg+y
  • Das nächste Wort löschen Alt+d
  • Das vorherige Wort löschen Strg+w

 
In der Zeile bewegen

  • Pos 1 oder Strg+a springt an den Zeilenanfang
  • Ende oder Strg+e springt an das Zeilenende
  • Alt+f springt ein Wort vorwärts (Forward)
  • Alt+b springt ein Wort zurück (Back)

 
Es gibt noch wesentlich mehr Kürzel und Befehle, die sich mit der History der Bash beschäftigen.

Weitere hyperblog Artikel zum Thema

tmux

bash


 
 

Views: 20

Beim ssh login tmux aufrufen

Da ich tmux (Alternative zu screen) sehr häufig benutze, nutze ich auch bei remote ssh logins einen Befehl, der mich nach dem erfolgreichen Login gleich in eine detachte tmux session bringt.

ssh -l <USERNAME> <HOST> -p <PORT> -t "tmux a"

Weitere hyperblog Artikel zum Thema

tmux

bash

Views: 7

tmux ein Windowmanager für die Konsole

Die Konsole, die Manche auch als Kommandofenster oder Shell bezeichnen, ist für die Einen der furchtbar langweiligste und komplizierteste Weg irgendwas am System zu verändern. Für die Anderen ist es der Weg der ultimativen Macht und Kontrolle über ein System.

Standardmäßig öffnet man genau 1 Konsole und kann dort Befehle absetzt, Scripte starten oder Programme wie SSH starten und Verbindungen zu anderen Servern aufmachen. Braucht man mehr als nur eine Konsole, dann könnte man weitere Konsolen starten.

Nun gibt es aber Anwendungsszenarien, bei denen man mehrere Dinge parallel machen und sie auch im Auge behalten, oder nur 1 SSH Verbindung zu einem anderen Computer aufmachen möchte, dort aber ebenfalls mehrere Sessions mit z.B. unterschiedlichen Benutzern gleichzeitig starten, oder nicht jedes Mal warten müssen, bis ein Programm seine Arbeit erledigt hat, bevor man weiter machen kann. Und man möchte sich nicht für jede Aufgabe neu einloggen, wo man doch schon eigentlich eingeloggt ist. Hier kommt tmux ins Spiel.

Tmux ist ein sogenannter Terminal Multiplexer. Salopp ausgedrückt: Es vervielfältigt die aktuelle Konsole um weitere virtuelle Konsolen (Prozesse). Also aus einer einzigen Konsole werden viele Konsolen gemacht. Wenn man möchte.

  1. So gibt es zwei hauptsächliche Anwendungsszenarien. Die beide natürlich parallel nutzbar sind:
  2. Einerseits kann die (Text) Konsole in verschiedene Bereiche aufgeteilt werden, wie Fenster die auf einem grafischen Desktop nebeneinander und untereinander angeordnet werden.
    1. vertikale Aufteilung Strg+b+%
    2. horizontale Aufteilung Strg+b+"
    3. Wechseln zwischen den Fenstern Strg+b+<Pfeiltasten>
    4. In das Fenster “reinzoomen” maximieren und wieder zurück zur nomalen Ansicht mit Strg+b + z.

      Dabei unbedingt beachten: wenn die Strg Taste vor dem z nicht losgelassen wurde, dann interpretiert das System das als Strg+z und schiebt den gesamten tmux Prozess in den Hintergrund. Mit dem Befehl fg (foreground) kann tmux wieder in der Vordergrund geholt werden.

      Das alles ist Teil der “Job Kontrolle” mit dem Prozesse in den Hintergrund geschoben werden können und stammt aus einer Zeit, als nur ein Terminalfenster in einem Multitaskingsystem zur Verfügung stand. Auch wenn das Konzept sehr alt ist, ist es immer noch sehr praktisch.
  3. Andererseits kann man Konsolen (Sessions) hintereinander stapeln, so dass man immer nur eine Konsole zur Zeit sieht
    1. Neue Session (Vollbildfenster) erstellen Strg+b+c
    2. Wechsel zwischen den Sessions Strg+b+<Nummer> , beginnt mit 0,1,2,3


Alle diese Fenster kann man mit Strg+d oder einfach mit der Eingabe von exit wieder schliessen.

Will man tmux aber nicht schliessen, sondern sich z.B. von einem Server ausloggen, dort aber alle tmux Sessions offen halten, weil ein Prozess dort noch länger läuft, oder man mehrere Fenster angeordnet hat und Prozesse monitored, so kann man

  1. tmux einfach im Hintergrund weiterlaufen lassen mit Strg+b+d   (detach)
  2. später die Session wieder aufnehmen indem man in der Konsole tippt: tmux a      (attach)

Der Vorteil von tmux ist hier ganz klar, dass man nicht nur eine Session vervielfachen kann, sondern auch, dass bei einem Verbindungsabbruch, die Scripte und Programm, die man gestartet hat unbehelligt auf dem entfernten Server weiter laufen. Sobald man wieder Netz hat, verbindet man sich wieder mit dem Server und holt sich die Session mit tmux a (attach) wieder zurück.

Man sollte dabei im Hinterkopf behalten, dass tmux immer mit dem Benutzer und dessen Rechten neue Sessions aufmacht, mit der tmux gestartet wurde. Braucht man also z.B. viele root Sessions, so sollte man erst zum Benutzer root wechseln, bevor man tmux startet.

Tmux kann noch wesentlich mehr, inklusive einem Theming, wenn man die Farben und die Statuszeile anpassen möchte, oder alle Tasten komplett umkonfigurieren usw. Sehr gute Einstiegsseiten, um mehr darüber zu erfahren sind

  1. Ubuntuusers Wiki https://wiki.ubuntuusers.de/tmux/
  2. Tmux Entwickler Seite https://github.com/tmux/tmux/wiki

Meine persönliche .tmux.conf in meinem Benutzerverzeichnis /home/Benutzer/ sieht momentan so aus

Weitere hyperblog Artikel zum Thema

tmux

bash

Views: 16