[gelöst] bash_history bei Bedarf per Skript ersetzen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
wurst10
Beiträge: 193
Registriert: 22.07.2019 09:19:17

[gelöst] bash_history bei Bedarf per Skript ersetzen?

Beitrag von wurst10 » 20.10.2024 09:20:32

Hallo zusammen,

ich möchte die "/home/user/.bash_history" kurz halten, damit ich mit der Cursor "up" Taste schnell durch die Einträge switchen kann.
Dazu habe ich eine Datei "bash_history_orig" mit (selektierten) Einträgen geschrieben (z.B. Einträge für imagemagick, ffmpeg mit diversen Parametern usw.).
Ich nutze XFCE4, xfce4-terminal mit der bash.

Zielsetzung:
Wenn ich in der Konsole bei Cursor "up" Nutzung bemerke, dass die "/home/user/.bash_history" zu viele Einträge hat,
soll durch Aufruf eines Skripts, der Inhalt der Datei "/home/user/.bash_history" durch den Inhalt der
Datei "bash_history_orig" ersetzt werden und ein Konsolenfenster weiter genutzt werden können.

Vorgehen:
1. laufende Instanz von xfce4-terminal schliessen
2. Inhalt von "/home/user/.bash_history" durch Inhalt von "bash_history_orig" ersetzen
3. eine neue Instanz von xfce4-terminal starten

Mein Skript dazu funktioniert leider nicht wie gewollt. Denn ich weiss nicht wie ich das Problem lösen kann,
dass durch "pkill" die Kindprozesse von "xfce4-terminal" beendet werden und deshalb (Punkt 3) nicht ausgeführt wird.

Skriptbeispiel:

Code: Alles auswählen

#!/bin/sh

pkill xfce4-terminal
cat /home/USER/infos/system-save/bash_history_orig > /home/USER/.bash_history 
/usr/bin/xfce4-terminal
Meine Idee ist nicht zielführend, gibt es bessere Lösungen?
Zuletzt geändert von wurst10 am 20.10.2024 10:21:47, insgesamt 1-mal geändert.

tobo
Beiträge: 2346
Registriert: 10.12.2008 10:51:41

Re: bash_history bei Bedarf per Skript ersetzen?

Beitrag von tobo » 20.10.2024 09:35:45

Das Ding heißt eigentlich nicht umsonst history!? Ist dir die simple Suche mit STRG-R unbekannt oder willst du grundsätzlich deine Vorgehensweise umsetzen?

Benutzeravatar
wurst10
Beiträge: 193
Registriert: 22.07.2019 09:19:17

Re: bash_history bei Bedarf per Skript ersetzen?

Beitrag von wurst10 » 20.10.2024 09:41:28

tobo hat geschrieben: ↑ zum Beitrag ↑
20.10.2024 09:35:45
Das Ding heißt eigentlich nicht umsonst history!? Ist dir die simple Suche mit STRG-R unbekannt oder willst du grundsätzlich deine Vorgehensweise umsetzen?
ich möchte aus Bequemlichkeitsgründen mit der Cursortaste, schnell den gewünschten Eintrag aufrufen können.
Eine 1000 Zeilen lange bash_history ist dabei eher hinderlich.

tobo
Beiträge: 2346
Registriert: 10.12.2008 10:51:41

Re: bash_history bei Bedarf per Skript ersetzen?

Beitrag von tobo » 20.10.2024 09:44:51

wurst10 hat geschrieben: ↑ zum Beitrag ↑
20.10.2024 09:41:28
tobo hat geschrieben: ↑ zum Beitrag ↑
20.10.2024 09:35:45
Das Ding heißt eigentlich nicht umsonst history!? Ist dir die simple Suche mit STRG-R unbekannt oder willst du grundsätzlich deine Vorgehensweise umsetzen?
ich möchte aus Bequemlichkeitsgründen mit der Cursortaste, schnell den gewünschten Eintrag aufrufen können.
Eine 1000 Zeilen lange bash_history ist dabei eher hinderlich.
Ja, jedem anderen auch. Deswegen habe ich die unbeantwortete Frage gestellt...

Benutzeravatar
wurst10
Beiträge: 193
Registriert: 22.07.2019 09:19:17

Re: bash_history bei Bedarf per Skript ersetzen?

Beitrag von wurst10 » 20.10.2024 09:57:11

Würde gerne meine Vorgehensweise umsetzen, oder bessere Lösungen kennenlernen.
Ein alternatives historyfile für diese bash-session zu importieren habe ich auch schon probiert, ist aber nicht ganz das was ich wollte.
Diesen "alias" habe ich dazu:

Code: Alles auswählen

alias bhis='history -c && history -r /home/user/bash_history_orig'
Das primäre Problem für mich ist, dass ich das Beenden und erneute Aufrufen der Terminal-Instanz nicht hinbekomme.

EDIT:
Hmm warte mal...
Je länger ich über deine Hinweise nachdenke, fällt mir auf, dass es vielleicht doch sinnvoller ist die vielen Einträge in der "/home/user/.bash_history" zu belassen und nur die alternative "bash_history_orig" für diese bash Sitzung, bei Bedarf, zu importieren.

Hast mich mal wieder kurz und knapp auf die Lösung gebracht.
Danke Dir :hail:

tobo
Beiträge: 2346
Registriert: 10.12.2008 10:51:41

Re: [gelöst] bash_history bei Bedarf per Skript ersetzen?

Beitrag von tobo » 20.10.2024 10:40:57

Man kann die Einträge in .bash_history grundsätzlich reduzieren (Duplikate z.B.), in dem man entsprechende Werte für HISTCONTROL in ~/.bashrc hinterlegt. Über HISTIGNORE kann man dort auch bestimmte Befehle/Befehlszeilenanfänge aus der Aufnahme in die History ausschließen. Das reduziert die Einträge vielleicht etwas mehr auf das Wesentliche.
Bei deinem Vorgehen wollte ich dich aber nicht auf den Gebracuh von `history -r new_session_file' hinweisen, sondern auf die Rückwärtssuche durch STRG-R und der Eingabe eines Suchstrings. Jedes weitere STRG-R zeigt dir dann den letzten Befehl davor mit diesem Suchstring an. Diese Rückwärtssuche ist üblicherweise erheblich schneller, als durch alle Einträge rückwärts zu gehen...

dasebastian
Beiträge: 2136
Registriert: 12.07.2020 11:21:17

Re: [gelöst] bash_history bei Bedarf per Skript ersetzen?

Beitrag von dasebastian » 20.10.2024 14:20:28

Zu tobos Erklärungen vielleicht noch ein paar Nachreichungen:

Code: Alles auswählen

export HISTIGNORE="cd:history*:ls:ll:s:su -:x:c:uf:o:lf:te:tl:tu"
HISTCONTROL=ignoreboth:erasedups
Und man kann die History kleiner halten, indem man vor Befehle, die man nicht gemerkt haben will ein Leerzeichen setzt:

Code: Alles auswählen

ls -> geht in die History
 ls -> nicht
Wobei ls in obigem Fall sowieso nicht vermerkt werden würde wegen HISTIGNORE.

Benutzeravatar
wurst10
Beiträge: 193
Registriert: 22.07.2019 09:19:17

Re: [gelöst] bash_history bei Bedarf per Skript ersetzen?

Beitrag von wurst10 » 20.10.2024 16:40:56

Danke für die hilfreichen Hinweise Leute.
Werde mich an die Rückwärtssuche mit STRG-R und die Schreibweise mit dem "ante" Leerzeichen gewöhnen, das spart Zeit und Zeichen.

Antworten