.bashrc sobrescrito pero aún de origen: ¿cómo se puede recuperar?

19

Por lo general, cuando encuentro un comando que quiero alias, lo hago eco en mi .bashrc así:

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

Puede haber una mejor manera de hacer esto. Pero de todos modos, justo ahora sobrescribí todo el archivo .rc usando un solo galón. Sin embargo, dado que .bashrc todavía está actualizado, todavía acepta mis antiguos alias (por ahora, por supuesto). Entonces, ¿hay alguna manera de recuperarlo?

ixtmixilix
fuente
66
echo "set -o noclobber" > ~/.bashrc(recuerde agregar un segundo soporte angular)
hhaamu
3
Para la próxima vez: Consejos para poner ~ bajo control de la fuente
Gilles 'SO- deja de ser malvado'
1
Para el futuro: haga una copia de seguridad de sus archivos para que esto no sea un problema. También puede considerar crear un archivo separado para estos complementos rápidos y buscarlo en algún lugar como en .bashrc. Proporciona una red de seguridad básica y puede encenderla y apagarla fácilmente según sea necesario.
Joe
2
Puede guardar su configuración actual, pero si .bashrctenía alguna lógica que dependiera de variables locales como host, usuario, etc., eso probablemente no se pueda recuperar. La verdadera respuesta es restaurar desde su copia de seguridad más reciente. Tienes una copia de seguridad reciente ¿verdad?
jw013

Respuestas:

22
  • alias sin parámetro genera las definiciones de los alias definidos actualmente.
  • declare -f Da salida a las definiciones de las funciones definidas actualmente.
  • export -p genera las definiciones de las variables definidas actualmente.

Todos esos comandos generan definiciones listas para ser reutilizadas, puede redirigir sus salidas directamente a una nueva ~/.bashrc.

Todas las listas contendrán muchos elementos definidos en otra parte, por ejemplo /etc/profiley /etc/bash_completion. Por lo tanto, tendrá que limpiar la lista manualmente.

hombre trabajando
fuente
3
También sugeriría comenzar desde el valor predeterminado .bashrcpara su sistema. En Debian está dentro /etc/skel, o puede crear un nuevo usuario, si puede, para obtener un nuevo .bashrc.
enzotib
1
sety declare(sin argumentos) mostrar todo esto a la vez.
rozcietrzewiacz
@enzotib, gran idea.
Me
1

typeset -f > .bashrc debería hacerlo, proporcionando todo lo que tenía eran alias.

Paul Tomblin
fuente
El functionscomando no existe para mí 4.2.10(2)-release. Probablemente te refieres declare -f.
Chris Down
En realidad, quise decir "typeset -f"
Paul Tomblin