Terminal

  • Wie kann ich eigentlich im Terminal verhindern das Befehle doppelt eingetragen werden.

    Oft wiederholen sich Befehle im Terminal und die hat man dann doppelt und dreifach in der Historie, wie krige ich es hin das jeder Befehl nur einmal gespeichert wird?

  • remove_duplicates.sh

    Speicher den obigen Code in einer Datei, z.B. remove_duplicates.sh.
    Gebe dem Skript Ausführungsberechtigungen mit chmod +x remove_duplicates.sh.
    Führe das Skript mit dem Dateinamen als Argument aus, z.B.: ./remove_duplicates.sh datei.txt

    Nach Ausführung des Skripts sollte die Datei datei.txt ohne doppelte Einträge aktualisiert werden.

  • remove_duplicates.sh

    Speicher den obigen Code in einer Datei, z.B. remove_duplicates.sh.
    Gebe dem Skript Ausführungsberechtigungen mit chmod +x remove_duplicates.sh.
    Führe das Skript mit dem Dateinamen als Argument aus, z.B.: ./remove_duplicates.sh datei.txt

    Nach Ausführung des Skripts sollte die Datei datei.txt ohne doppelte Einträge aktualisiert werden.

    Hat funktioniert :thumbup: Top

    Fragen Sie jemanden, der sich damit auskennt - am besten nicht den Administrator

    Archlinux Openbox / ASUS R503C-SX051H - Intel Core i3-2350M + HD-Grafik 3000 + 8 GB DDR3 + 490 GB SSD
    Archlinux Xfce / DELL Inspiron 3542 - Intel Pentium 3558U + 8 GB DDR3 + 490 GB SSD
    Voidlinux Xfce / DELL Inspiron 15z - Intel Core i5-3317U + 4 GB RAM + 240 GB SSD

  • Der Eintrag export HISTCONTROL=ignoredups soll angeblich Ähnliches bewirken, nur merke ich leider nichts davon.

    Vielleicht bekommt das jemand zum Laufen?

    https://www.redhat.com/sysadmin/history-command

    Der Eintrag export HISTCONTROL=ignoredups bewirkt nur dass 2 gleiche Befehle die unmittelbar hintereinander eingegeben wurden nicht in die bash_history gespeichert werden.

    Beispiel:

    wenn du 2x hintereinander den Befehl whoami eingibst, dann wird dieser Befehl nur 1x in der bash_history gespeichert.

    wenn z.B. whoami danach date und dann wieder whoami eingegeben wird dann wird auch genau diese Reihenfolge in bash_history gespeichert.

    HISTCONTROL Command in Linux with Examples - GeeksforGeeks
    A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and…
    www.geeksforgeeks.org

    Fragen Sie jemanden, der sich damit auskennt - am besten nicht den Administrator

    Archlinux Openbox / ASUS R503C-SX051H - Intel Core i3-2350M + HD-Grafik 3000 + 8 GB DDR3 + 490 GB SSD
    Archlinux Xfce / DELL Inspiron 3542 - Intel Pentium 3558U + 8 GB DDR3 + 490 GB SSD
    Voidlinux Xfce / DELL Inspiron 15z - Intel Core i5-3317U + 4 GB RAM + 240 GB SSD

  • Gonzo-3004

    Stimmt, der Befehl alleine reicht nicht aus. Bin dabei noch auf diese Möglichkeit gestoßen.

    Scheint auf den ersten Blick tatsächlich Duplikate zu löschen.

    Code
    HISTCONTROL=ignoredups:erasedups
    shopt -s histappend
    PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

    Quelle + ausführliche Erklärung

    Bash history: "ignoredups" and "erasedups" setting conflict with common history across sessions
    First of all, this is not a duplicate of any existing threads on SE. I have read these two threads (1st, 2nd) on better bash history, but none of the answers…
    unix.stackexchange.com
  • Gonzo-3004

    Stimmt, der Befehl alleine reicht nicht aus. Bin dabei noch auf diese Möglichkeit gestoßen.

    Scheint auf den ersten Blick tatsächlich Duplikate zu löschen.

    Code
    HISTCONTROL=ignoredups:erasedups
    shopt -s histappend
    PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

    Quelle + ausführliche Erklärung

    https://unix.stackexchange.com/a/18443/1566

    Jo, funktioniert :thumbup:

    Fragen Sie jemanden, der sich damit auskennt - am besten nicht den Administrator

    Archlinux Openbox / ASUS R503C-SX051H - Intel Core i3-2350M + HD-Grafik 3000 + 8 GB DDR3 + 490 GB SSD
    Archlinux Xfce / DELL Inspiron 3542 - Intel Pentium 3558U + 8 GB DDR3 + 490 GB SSD
    Voidlinux Xfce / DELL Inspiron 15z - Intel Core i5-3317U + 4 GB RAM + 240 GB SSD

  • Ich bin heute auch mal wieder über was nützliches gestoßen. Wenn man die History mit grep durchsucht werden die Einträge nummeriert aufgelistet und können mit ! xx abgerufen werden was in bestimmten Situationen einfacher als mit "Strg + R" ist.

    Beispiel: history | grep 'sudo'  listet alle Einträge welche sudo enthalten nummeriert auf. Wenn nun der Eintrag sudo apt-get clean && sudo apt-get autoclean die Nummer 22 hat kann man einfach !22 zum erneuten ausführen des Befehls eingeben.

    Ein doppeltes Ausrufezeichen !! führt den zuletzt eingegebenen Befehl aus und ein !sudo den zuletzt eingegebenen Befehl welcher sudo enthielt. Wobei sudo natürlich beliebig ersetzt werden kann.

  • In diesem Zusammenhang sei auch noch der 'fc' Befehl genannt.


    Der Befehl 'fc' in der Linux-Bash steht für "Fix Command" und wird verwendet, um vorherige Befehle zu bearbeiten oder erneut auszuführen. Er ist besonders nützlich, wenn Sie vorherige Befehle in Ihrer Bash-History durchgehen möchten oder wenn Sie einen Befehl bearbeiten müssen, bevor Sie ihn erneut ausführen.

    Anleitung zur Verwendung des 'fc'-Befehls unter Linux:

    ### 1. Anzeigen der Befehls-History:
    Um die Liste der vorherigen Befehle anzuzeigen, können Sie einfach 'fc -l' eingeben. Dies zeigt eine numerierte Liste der letzten Befehle an, die Sie in Ihrer aktuellen Bash-Sitzung ausgeführt haben.

    Code
    fc -l

    ### 2. Auswahl eines bestimmten Befehls:
    Wenn Sie einen bestimmten Befehl auswählen möchten, um ihn zu bearbeiten oder erneut auszuführen, können Sie entweder die Nummer des Befehls in der Liste verwenden oder Sie können eine Suchzeichenfolge angeben, die im Befehl enthalten ist.

    Code
    fc -l 5       # Wählt den Befehl mit der Nummer 5 aus
    fc -l ssh     # Wählt den zuletzt ausgeführten Befehl, der "ssh" enthält, aus

    ### 3. Bearbeiten eines ausgewählten Befehls:
    Nachdem Sie einen Befehl ausgewählt haben, können Sie ihn mit einem Texteditor bearbeiten. Standardmäßig wird der Befehl im Editor geöffnet, den Sie in Ihrer 'EDITOR'-Umgebungsvariable festgelegt haben (normalerweise ist dies 'vi' oder 'nano').

    Code
    fc       # Öffnet den zuletzt ausgeführten Befehl im Editor zur Bearbeitung
    fc -e    # Öffnet den zuletzt ausgeführten Befehl im Standardeditor zur Bearbeitung

    ### 4. Ausführen eines ausgewählten Befehls:
    Wenn Sie einen ausgewählten Befehl erneut ausführen möchten, können Sie einfach 'fc' ohne Argumente verwenden. Dies führt den zuletzt ausgewählten Befehl erneut aus.

    Code
    fc       # Führt den zuletzt ausgewählten Befehl erneut aus
    fc 10    # Öffnet den mit der Nummer 10 ausgeführten Befehl im Editor zur Bearbeitung

    Das ist eine grundlegende Anleitung zur Verwendung des 'fc'-Befehls unter Linux. Es bietet eine einfache Möglichkeit, auf vorherige Befehle zuzugreifen, sie zu bearbeiten und erneut auszuführen, was die Effizienz und Produktivität in der Bash-Umgebung verbessern kann.

  • Man muss aber auch erwähnen dass diese Befehle eigentlich nur für bash und zsh sind. Keine Ahnung wie weit diese in anderen Konsolen vorhanden sind.

    Noch dazu sind einige Punkte zu beachten:

    1. Die bash History, mit standart Config, speichert nur 500 Befehls Zeilen.

    2. Wenn man mehrere bash offen hat wird immer die History der zuletzt beendeten Bash gespeichert, außer man speichert die History Manuel.

    3. Es gibt ebenfalls noch die möglichkeit mit Bild Up und Bild Down die Histroy zu durchsuchen, funktioniert wie die bash Suche (STRG+R)


    Daher ist es meist Hilfreich sich für längere Befehle eine Alias zu erstellen oder bei Befehlsabolgen sich ein Script zu basteln

  • Terminal Tastenkombination

    • Strg + Alt + T: Neues Terminal
    • Strg + Umschalt + N: Neues Terminal-Fenster (nur bei geöffnetem Terminal)
    • Strg + Umschalt + T: Neuer Reiter in Terminal
    • Strg + Umschalt + W: Reiter in Terminal schließen
    • Alt + F4: Fenster schließen (allgemein Fenster schließen)
    • Strg + Umschalt + Q: Terminal schließen (nur bei geöffnetem Terminal)
    • F11: Vollbild (allgemein nicht nur beim Terminal)


    • Strg + P: Vorheriger Verlauf
    • Strg + N: Nächster Verlauf
    • Strg + L: Terminal leeren
    • Strg + B: Cursor um 1 Zeichen zurück bewegen
    • Strg + F: Cursor um 1 Zeichen vorwärts bewegen
    • Strg + A: Zum Anfang der Zeile bewegen
    • Strg + E: Zum Ende der Zeile bewegen
    • Strg + D: Löschen von der aktuellen Position bis zum Ende der Zeile (Beenden bei leerer Zeile)
    • Strg + U: Zeile von der aktuellen Position bis zum Anfang der Zeile ausschneiden
    • Strg + Y: Einfügen (Das Einfügen bezieht sich z.B. auf Strg+U also nicht das normale copy/paste Strg+C/Strg+V)
    • Strg + W: Vorheriges Wort von der aktuellen Position ausschneiden
    • Alt + Rücktaste: Vorheriges Wort von der aktuellen Position ausschneiden
    • Alt + F: Cursor 1 Wort vorwärts bewegen
    • Alt + B: Cursor 1 Wort rückwärts bewegen

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!