.bashrc écrasé mais toujours sourcé - comment le récupérer?

19

Habituellement, lorsque je trouve une commande que je veux alias, je la fais écho à mon .bashrc comme ceci:

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

Il peut y avoir une meilleure façon de procéder. Mais de toute façon, je viens d'écraser tout le fichier .rc en utilisant un seul chevron. Cependant, puisque le .bashrc est toujours à jour, il accepte toujours mes anciens alias (pour l'instant bien sûr). Existe-t-il un moyen de le récupérer?

ixtmixilix
la source
6
echo "set -o noclobber" > ~/.bashrc(n'oubliez pas d'ajouter un deuxième support d'angle)
hhaamu
3
Pour la prochaine fois: Conseils pour mettre ~ sous contrôle de source
Gilles 'SO- arrête d'être maléfique'
1
Pour l'avenir: sauvegardez vos fichiers afin que ce ne soit pas un problème. Vous pouvez également envisager de créer un fichier séparé pour ces modules complémentaires rapides et de le trouver quelque part comme dans .bashrc. Fournit un filet de sécurité de base et vous pouvez facilement l'activer et le désactiver si nécessaire.
Joe
2
Vous pouvez enregistrer vos paramètres actuels, mais si vous .bashrcaviez une logique qui dépendait de variables locales telles que l'hôte, l'utilisateur, etc., cela est probablement irrécupérable. La vraie réponse est de restaurer à partir de votre sauvegarde la plus récente. Vous avez un droit de sauvegarde récent?
jw013

Réponses:

22
  • alias sans paramètre génère les définitions des alias actuellement définis.
  • declare -f affiche les définitions des fonctions actuellement définies.
  • export -p renvoie les définitions des variables actuellement définies.

Toutes ces définitions de sortie de commandes prêtes à être réutilisées, vous pouvez rediriger leurs sorties directement vers une nouvelle ~/.bashrc.

Toutes les listes contiendront beaucoup d'éléments définis ailleurs, par exemple /etc/profileet /etc/bash_completion. Vous devrez donc nettoyer la liste manuellement.

homme au travail
la source
3
Je suggère également de partir de la valeur .bashrcpar défaut de votre système. Dans Debian, c'est dans /etc/skel, ou vous pouvez créer un nouvel utilisateur, si vous le pouvez, pour en obtenir un tout nouveau .bashrc.
enzotib
1
setet declare(sans arguments) afficher tout cela à la fois.
rozcietrzewiacz
@enzotib, bonne idée. je me suis demandé où résiderait le .bashrc par défaut ...
ixtmixilix
1

typeset -f > .bashrc devrait le faire, à condition que tout ce que vous aviez soit des alias.

Paul Tomblin
la source
La functionscommande n'existe pas pour moi 4.2.10(2)-release. Vous voulez probablement dire declare -f.
Chris Down
En fait, je voulais dire "typeset -f"
Paul Tomblin