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_editor
die PID Ihres Editors ermitteln und dann lsof -p your_PID
die 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 cat
als 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 -n
alle geöffneten Dateien anzeigen und grep
nach 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 cat
Befehls. Sie können in das entsprechende Verzeichnis im Dateisystem / proc und in das fd
Unterverzeichnis (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 1
in 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!