¿El archivo es recuperable?
Respuesta corta: generalmente no.
@ Mark Plotnick señala en los comentarios, puede recuperar .py
archivos .pyc
usando Uncompyle . Esto debería ser perfecto para su situación.
En general, sin embargo, esto es mucho más difícil. Teóricamente puedes usar herramientas forenses para recuperar archivos. Probablemente la más fácil que he usado es testdisk
(también conocido como "PhotoRec"). Solo funciona a veces y es un proceso lento. Por lo general, no vale la pena, así que sí, es posible , pero la respuesta real es "no".
¿Se puede > cambiar para no sobrescribir ejecutables?
No. No hay una forma estándar de decirle al shell que nunca redirija solo los archivos marcados como ejecutables. Hay "noclobber" que evitará la redirección a archivos existentes, ejecutables o no, pero vea mis comentarios al respecto a continuación.
¿Qué hacer en el futuro?
Esto puede sonar tonto, pero para evitar futuros errores, probablemente no necesite hacer nada. Mi apuesta es que ya has aprendido esta lección.
He estado usando y enseñando Unix durante mucho tiempo y, aunque la gente suele cometer este error una vez, rara vez lo repite. Por qué no? Probablemente por la misma razón que una persona experimentada con cuchillos no se corta: los humanos son buenos para aprender. Finalmente, hacer lo correcto se convierte en una segunda naturaleza.
Use un editor de texto que haga copias de seguridad por usted. Por ejemplo, si usa emacs
, la versión anterior de su programa se guarda en mac_ip.py ~. Se pueden configurar otros editores para que funcionen de manera similar (por ejemplo, "establecer copia de seguridad" en .nanorc
). Para los editores que no admiten copias de seguridad automáticas, puede realizar una función simplista en su .bashrc:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
Facilítese hacer copias. Por ejemplo, en el directorio del proyecto en el que está trabajando, puede tener un Makefile con un objetivo como este:
# Use `make tar` to backup all files in this directory.
# Tar filename will be ../<currentdirectory>-<date>.tar.gz
DIRNAME = $(shell basename `pwd`)
TIMESTAMP = $(shell date +%s)
tar:
@echo "[Tarring up ${DIRNAME}.tar.gz]"
(cd .. ; tar -zcvf "${DIRNAME}-${TIMESTAMP}.tar.gz" "${DIRNAME}")
(Nota: stackexchange está representando erróneamente las TAB anteriores como 4 espacios).
Del mismo modo, puede crear un destino Makefile que haga un rsync
host remoto de Unix al que tenga ssh
acceso. (Úselo ssh-copy-id
para que no se le solicite su contraseña repetidamente).
Uso git
. Hay muchos tutoriales excelentes para comenzar. Tratar man gittutorial
, man gittutorial-2
y man giteveryday
. Configurar su propio repositorio git no es difícil, pero también puede crear un repositorio remoto sin costo en github.com
Si las soluciones anteriores son demasiado pesadas, puede guardar pequeños scripts en gist.github.com . Si bien es posible pegar o cargar desde un navegador web, recomiendo usar una interfaz de línea de comando para facilitar las cosas.
Desaconsejo firmemente el uso de "noclobber".
Sí, si lo desea, puede hacerlo set -o noclobber
, recibirá mensajes de error cada vez que intente sobrescribir un archivo existente. Esta es una mala idea, en mi opinión. * *
Hace que el shell funcione de una manera no estándar sin indicación visible de si está habilitado. Tienes que usar una sintaxis diferente para hacer cosas normales. Lo peor de todo es que si te acostumbras al noclobber, algún día usarás otra máquina Unix sin noclobber y este tipo de accidente podría volver a ocurrir.
Como probablemente sepa, el shell de Unix fue diseñado para ser una herramienta precisa para los expertos. Es rápido de usar y no se interpondrá en su camino, y le cortará si olvida qué extremo es puntiagudo. Pero, cuanto más lo use, más creo que apreciará que eso puede ser algo bueno.
* Nota al pie: quizás tome mis opiniones con un grano de sal. También soy el tipo de persona que piensa que las ruedas de entrenamiento para bicicletas son una mala idea.
set -o noglobber
y bash ya no redirigirá a los archivos existentes. Ver aquí para más detalles: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html