.bashrc überschrieben, aber dennoch bezogen - wie kann es wiederhergestellt werden?

19

Wenn ich einen Befehl finde, den ich als Alias ​​verwenden möchte, gebe ich diesen normalerweise wie folgt an meine .bashrc-Datei weiter:

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

Möglicherweise gibt es einen besseren Weg, dies zu tun. Aber im Moment habe ich die gesamte RC-Datei mit einem einzigen Chevron überschrieben. Da die .bashrc-Datei jedoch immer noch aktuell ist, werden meine alten Aliase (vorerst natürlich) weiterhin akzeptiert. Gibt es also eine Möglichkeit, es wiederherzustellen?

ixtmixilix
quelle
6
echo "set -o noclobber" > ~/.bashrc(Denken Sie daran, eine zweite spitze Klammer hinzuzufügen)
Denken Sie hhaamu
3
Für das nächste Mal: Tipps, wie Sie ~ der Quellcodeverwaltung unterwerfen
Gilles 'SO - aufhören, böse zu sein'
1
Für die Zukunft: Sichern Sie Ihre Dateien, damit dies kein Problem darstellt. Sie können auch eine separate Datei für diese schnellen Add-Ons erstellen und diese wie in .bashrc auslagern. Bietet ein grundlegendes Sicherheitsnetz und kann bei Bedarf problemlos ein- und ausgeschaltet werden.
Joe
2
Sie können Ihre aktuellen Einstellungen speichern , aber wenn Ihr .bashrcalle hatten Logik darin , dass wie Host, Benutzer usw. auf lokale Variablen abhängig , die wahrscheinlich nicht wiederherstellbar ist. Die eigentliche Antwort ist die Wiederherstellung von Ihrem letzten Backup. Sie haben ein aktuelles Backup oder?
JW013

Antworten:

22
  • alias ohne Parameter gibt die Definitionen der aktuell definierten Aliase aus.
  • declare -f gibt die Definitionen der aktuell definierten Funktionen aus.
  • export -p gibt die Definitionen der aktuell definierten Variablen aus.

Alle diese Befehle geben Definitionen aus, die zur Wiederverwendung bereit sind. Sie können ihre Ausgaben direkt auf eine neue umleiten ~/.bashrc .

Alle Listen enthalten viele Elemente, die an anderer Stelle definiert sind, zum Beispiel /etc/profileund /etc/bash_completion. Sie müssen die Liste also manuell bereinigen.

Mann bei der Arbeit
quelle
3
Ich würde auch vorschlagen, mit der Standardeinstellung .bashrcfür Ihr System zu beginnen. In Debian ist es in /etc/skel, oder Sie können einen neuen Benutzer erstellen, wenn Sie können, um einen brandneuen zu erhalten .bashrc.
Enzotib
1
setund declare(ohne Argumente) zeigen all dies auf einmal an.
rozcietrzewiacz
@enzotib, tolle Idee. Ich habe mich gefragt, wo sich die Standard-.bashrc befinden würde ...
ixtmixilix
1

typeset -f > .bashrc sollte es tun, vorausgesetzt, Sie hatten nur Aliase.

Paul Tomblin
quelle
Der functionsBefehl existiert für mich nicht auf 4.2.10(2)-release. Du meinst wahrscheinlich declare -f.
Chris Down
Eigentlich meinte ich "gesetzt -f"
Paul Tomblin