Ich weiß nicht, ob es Texteditoren gibt, die die Datei geöffnet halten, während Sie sie bearbeiten. Normalerweise (dh in Emacs) wird die Datei in einen Puffer im RAM eingelesen und dann die Datei geschlossen. Sie bearbeiten nur im RAM. Wenn Sie den Puffer speichern, wird die Datei geöffnet, geschrieben und wieder geschlossen. Sie können ps auxw | grep your_editordie PID Ihres Editors ermitteln und dann lsof -p your_PIDdie noch geöffneten Dateien anzeigen.
Wenn sich die Datei jedoch noch im Puffer Ihres Editors befindet, können Sie sie einfach speichern.
Aber das war nicht Ihre Frage. Stellen Sie sich also vor, Sie verwenden sie catals Editor, und die Datei ist noch offen:
% cat >the_file.txt
Hello world!
^Z
zsh: suspended cat > the_file.txt
% rm the_file.txt
% ls -l the_file.txt
ls: cannot access the_file.txt: No such file or directory
Sie können lsof -nalle geöffneten Dateien anzeigen und grepnach Ihrem Dateinamen suchen.
% lsof -n | grep the_file.txt
cat 2145 elmicha 1w REG 9,1 13 108003357 /home/elmicha/tmp/the_file.txt (deleted)
In der zweiten Spalte sehen Sie die PID Ihres catBefehls. Sie können in das entsprechende Verzeichnis im Dateisystem / proc und in das fdUnterverzeichnis (Dateideskriptor) wechseln:
% cd /proc/2145/fd
% ls -l
total 0
lrwx------ 1 elmicha elmicha 64 2012-11-07 00:22 0 -> /dev/pts/4
l-wx------ 1 elmicha elmicha 64 2012-11-07 00:22 1 -> /home/elmicha/tmp/the_file.txt (deleted)
lr-x------ 1 elmicha elmicha 64 2012-11-07 00:22 15 -> /proc/4501/auxv
lrwx------ 1 elmicha elmicha 64 2012-11-07 00:22 2 -> /dev/pts/4
Jetzt können Sie die "Datei" einfach 1in eine andere Datei kopieren :
% cp 1 ~/tmp/the_old_file.txt
Und sehen Sie, es ist da:
% cat ~/tmp/the_old_file.txt
Hello world!