.bashrc zostało zastąpione, ale nadal pochodzi - w jaki sposób można je odzyskać?

19

Zwykle, gdy znajduję polecenie, które chcę uzyskać alias, odbijam je echem do mojego .bashrc w następujący sposób:

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

Może to być lepszy sposób. Ale tak czy inaczej, właśnie teraz nadpisałem cały plik .rc, używając pojedynczego szewronu. Ponieważ jednak .bashrc jest nadal aktualny, nadal akceptuje moje stare aliasy (na razie oczywiście). Czy istnieje sposób na jego odzyskanie?

ixtmixilix
źródło
6
echo "set -o noclobber" > ~/.bashrc(pamiętaj, aby dodać drugi wspornik kątowy)
hhaamu
3
Następnym razem: Wskazówki dotyczące poddania ~ kontroli źródła
Gilles 'SO- przestań być zły'
1
Na przyszłość: wykonaj kopię zapasową plików, aby nie stanowiło to problemu. Możesz również rozważyć utworzenie osobnego pliku dla tych szybkich dodatków i pozyskiwanie go gdzieś jak w .bashrc. Zapewnia podstawową siatkę bezpieczeństwa i można ją łatwo włączać i wyłączać w razie potrzeby.
Joe
2
Możesz zapisać bieżące ustawienia, ale jeśli posiadasz .bashrcjakąś logikę zależną od lokalnych zmiennych, takich jak host, użytkownik itp., Prawdopodobnie nie można tego odzyskać. Prawdziwą odpowiedzią jest przywrócenie z najnowszej kopii zapasowej. Masz ostatnią kopię zapasową, prawda?
jw013,

Odpowiedzi:

22
  • alias bez parametru generuje definicje aktualnie zdefiniowanych aliasów.
  • declare -f generuje definicje aktualnie zdefiniowanych funkcji.
  • export -p wyprowadza definicje aktualnie zdefiniowanych zmiennych.

Wszystkie te polecenia wyjściowe definicje są gotowe do ponownego użycia, możesz przekierować ich wyniki bezpośrednio do nowego ~/.bashrc.

Wszystkie listy będą zawierać wiele elementów zdefiniowanych gdzie indziej, na przykład /etc/profilei /etc/bash_completion. Będziesz musiał ręcznie wyczyścić listę.

człowiek w pracy
źródło
3
Sugeruję również, aby zacząć od domyślnego ustawienia .bashrcdla twojego systemu. W Debianie jest on dostępny /etc/skellub możesz utworzyć nowego użytkownika, jeśli możesz, aby uzyskać zupełnie nowy .bashrc.
enzotib
1
seti declare(bez argumentów) wyświetlają to wszystko na raz.
rozcietrzewiacz
@enzotib, świetny pomysł. zastanawiałem się, gdzie byłby domyślny
plik
1

typeset -f > .bashrc powinien to zrobić, pod warunkiem, że masz tylko pseudonimy.

Paul Tomblin
źródło
functionsKomenda nie istnieje dla mnie na 4.2.10(2)-release. Prawdopodobnie masz na myśli declare -f.
Chris Down,
Właściwie miałem na myśli „typeset -f”
Paul Tomblin