テキストファイルを編集するときに複数のバックアップを持つことはできますか?

テキストファイルを編集するときに複数のバックアップを持つことはできますか?

Gedit私が知っている限り、meditバックアップを保存できるテキストエディタが2つあります。だから、temp.txt次に編集するときというファイルを作成して保存するとtemp.txt~

私の質問は次のとおりです。複数のリビジョンの前に存在していたファイルに戻る場合は、複数のバックアップを持つようにバックアップ名を順番に指定できるテキストエディタがありますか?たとえば、temp.txt最新バージョンがありますが、ちょっと待っていますtemp.bak.1temp.bak.2

これが不可能な場合は、シリアルバージョンが保存されるようにバックアップが作成されるたびにバックアップ名を自動的に変更するいくつかのスクリプトがありますか?一つでもtemp.timestamp.txtいいでしょう。

nano(テキストエディタソリューションは気に入らない。)


明確にする必要があるのは、私はコーダーやプログラマーではないということです。私が編集したテキストファイルの以前のバージョンが欲しいです。これらのテキストファイルは.cssテーマの一部を構成できます。したがって、テーマファイルの特定の側面を編集する場合は、変更が気に入らない場合に備えて少し後ろに戻ることができます。.rc.svg

答え1

Mercurialを使用してバージョン管理を実行する簡単な方法があります。まずインストールしてください。

~/.hgrcMercurial を構成するには、次のコンテンツを含むファイルを作成します。

[ui]
username = Your name <your mail>
verbose = True

一部のMercurialサーバーを使用している場合は、このファイルにさらに情報を追加できます(読み取りman hgrc)。

次に、cdテキストファイルを含むディレクトリに移動します。たとえば、

> cd /tmp
> mkdir data && cd data
> cat > text_file.txt
Hello, this is a file.

必要に応じてファイルを追加することもできます。その後、Mercurialを初期化する必要があります。

> hg init

既定ではまだファイルがないので、すべてのファイルを含めたいと Mercurial に伝える必要があります。

> hg st
? text_file.txt
> hg add    
adding text_file.txt
> hg st
A text_file.txt

これで簡単なコミットを行います。

> hg comm -m 'first run'
text_file.txt
committed changeset 0:87e90c949984

ここでいくつかの点を修正し、違いを確認してください。

> cat >> text_file.txt 
Add one line.
> hg diff
diff -r 87e90c949984 text_file.txt
--- a/text_file.txt Mon Apr 01 12:52:14 2013 +0400
+++ b/text_file.txt Mon Apr 01 12:53:47 2013 +0400
@@ -1,1 +1,2 @@
 Hello, this is a file.
+Add one line.

今見た後、別のコミットをしてみてくださいhg log。 2 つのコミットが表示されます。

最初のコミットに戻るには、次のようにします。

> hg upd -r 0:87e90c949984
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.

次の内容が表示されます。ファイルが古い。

次に、最後のファイルを復元します。

> hg upd                  
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.
Add one line.

簡単なスクリプトを書くこともできます。

#!/bin/bash
while true; do
  hg commit -m "commit: $(date)"
  sleep 60
done

ファイルの編集を開始したときに実行すると、各瞬間の変更を確認し、そうであればmercurialは新しいコミットを実行します。また、コメントで述べたように、自動送信にatorを使用することもできます。cron

答え2

使用しようとする提案に同意します。バージョン管理。バックアップファイルを保存するよりも柔軟で信頼性が高く、設定も簡単です。

それでもバックアップファイル(および他の多く)を細かく制御するには、Emacsを使用できます。設定version-controlセッションtごとに1つのバックアップファイルを保持するのではなく、番号付きバックアップを作成する変数です。ただタップするのではなく、新しいバックアップを作成したいときにタップします。(setq version-control t)~/.emacsC-u C-x C-sC-x C-s

別のアプローチは、アプリケーションがバックアップについて知っているかどうかに関係なく、バックアップを実行するファイルシステムを使用することです。ファイルシステムのコピーすべてのディレクトリツリーの上にこれらのファイルシステムを作成します。

答え3

Geanyには適切なプラグインも付属しています。私はLubuntu 13.10でGeany 1.23.1を使用しています。カチッという音ツールプラグインマネージャこれを見せてください:

プラグインマネージャダイアログ

ここでチェックボックスを選択してSave Actionsから編集するプラグイン環境設定、バックアップの保存方法を設定できます。

保存操作ダイアログ

答え4

少し遅れていますがnano(少なくとも現在のDebianバージョン2.2.6では)フラグを使用して独自のバックアップ機能を実装できます。-B-C

Debianのマニュアルページから:

   -B (--backup)
          When saving a file, back up the previous version of it to the  current  filename
          suffixed with a ~.

   -C dir (--backupdir=dir)
          Set  the  directory  where  nano  puts  unique  backup files if file backups are
          enabled.

これをデフォルトにするには、フラグを含むnanoのbashエイリアスを作成して適切な場所に配置します(次の行を追加すると役立ち/home/username/.bash_aliasesます)。

alias nano='nano -BC /home/username/.nano_backups'

これにより、指定したディレクトリにバックアップが作成されます。例:

$ ls /home/username/.nano_backups
!home!username!.bash_aliases~
!home!username!.bash_aliases~.1
!home!username!.bash_aliases~.10
!home!username!.bash_aliases~.11
!home!username!.bash_aliases~.12
[...]

関連情報