Il file è recuperabile?
Risposta breve: di solito no.
@Mark Plotnick sottolinea nei commenti, è possibile recuperare i .py
file .pyc
dall'utilizzo di Uncompyle . Questo dovrebbe essere perfetto per la tua situazione.
In generale, tuttavia, questo è molto più difficile. Teoricamente puoi usare gli strumenti forensi per ripristinare i file. Probabilmente il più semplice che ho usato è testdisk
(aka "PhotoRec"). Funziona solo a volte ed è un processo lento. Di solito non ne vale la pena, quindi sì, è possibile , ma la vera risposta è "no".
> Può essere modificato per non sovrascrivere gli eseguibili?
No. Non esiste un modo standard per dire alla shell di non reindirizzare mai solo per i file contrassegnati come eseguibili. C'è "noclobber" che impedirà il reindirizzamento in file esistenti, eseguibili o meno, ma vedere i miei commenti su quello qui sotto.
Cosa fare in futuro?
Questo potrebbe sembrare sciocco, ma per prevenire errori futuri, probabilmente non devi fare nulla. La mia scommessa è che hai già imparato questa lezione.
Ho usato e insegnato Unix per molto tempo e mentre le persone spesso commettono questo errore una volta, raramente lo ripetono. Perchè no? Probabilmente per lo stesso motivo per cui una persona esperta con i coltelli non si taglia da sola: gli umani sono bravi a imparare. Alla fine, fare la cosa giusta diventa una seconda natura.
Utilizzare un editor di testo che esegua backup per te. Ad esempio, se si utilizza emacs
, la versione precedente del programma viene salvata in mac_ip.py ~. Altri editor possono essere configurati per funzionare in modo simile (ad es. "Imposta backup" in .nanorc
). Per gli editor che non supportano i backup automatici, puoi eseguire una funzione semplicistica nel tuo .bashrc:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
Semplifica la realizzazione di copie. Ad esempio, nella directory del progetto a cui stai lavorando, potresti avere un Makefile con una destinazione come questa:
# 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 sta indurendo i TAB sopra come 4 spazi.)
Allo stesso modo, è possibile creare una destinazione Makefile che fa un rsync
a un host Unix remoto a cui si ha ssh
accesso. (Utilizzalo in ssh-copy-id
modo che non ti venga richiesta ripetutamente la password.)
Usa git
. Ci sono molti tutorial eccellenti su come iniziare. Provate man gittutorial
, man gittutorial-2
e man giteveryday
. Configurare il tuo repository git non è difficile, ma puoi anche creare un repository remoto gratuitamente su github.com
Se le soluzioni di cui sopra sono troppo pesanti, è possibile salvare piccoli script su gist.github.com . Sebbene sia possibile incollare o caricare da un browser Web, ti consiglio di utilizzare un'interfaccia gist della riga di comando per semplificare le cose.
Sconsiglio vivamente di usare "noclobber".
Sì, se lo desideri, puoi farlo set -o noclobber
e otterrai messaggi di errore ogni volta che provi a sovrascrivere un file esistente. Questa è una cattiva idea, secondo me. *
Fa funzionare la shell in modo non standard senza alcuna indicazione visibile se è abilitata. Devi usare una sintassi diversa per fare le cose normali. Peggio ancora, se ti abitui al noclobber, un giorno userai un'altra macchina Unix senza noclobber e questo tipo di incidente potrebbe accadere di nuovo.
Come probabilmente saprai, la shell Unix è stata progettata per essere uno strumento affilato per gli esperti. È veloce da usare e non ti ostacolerà - e ti taglierà se dimentichi quale estremità è appuntita. Ma più lo usi, più penso che apprezzerai che può essere una buona cosa.
* Nota in calce: forse prendi le mie opinioni con un granello di sale. Sono anche il tipo di persona che pensa che le ruote da allenamento per biciclette siano una cattiva idea.
set -o noglobber
e bash non reindirizzerà più ai file esistenti. Vedi qui per i dettagli: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html