Linux で差分ファイルを使用する方法
Diff は Unix システム用のコマンド ライン ツールで、2 つのファイルまたはディレクトリを比較して、それらの違いを確認できます。ファイルの古いバージョンと新しいバージョンを比較して、変更点を確認するのに最適です。この記事では、Linux でファイルを簡単に比較するために を使用する方法を紹介しますdiff
。
diff によるファイルの比較
- ターミナル ウィンドウを開きます。
diff
比較する 2 つのファイルへのパスを入力します。この場合、次のコマンドを使用して、デスクトップ上の 2 つの小さな C プログラムを比較しています。
diff ~/Desktop/hello.c ~/Desktop/hello-1.c
- を押してEnterコマンドを送信します。結果の表示には、ファイル間のすべての異なる行が表示されます。比較した行番号は「1c1」と表示されますが、これは最初の行が変更されたことを意味し、次のような違いが見つかりました。
- ファイルとその違いを並べて表示するには、
-y
フラグ afterを使用しますdiff
。例えば:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
パイプ記号 ( |
) のある行は、違いのある行です。最初に端末ウィンドウを展開するようにしてください。そうしないと、ディスプレイが見づらくなる可能性があります。
ファイルを Meld で比較する
の機能には、 の GUI であるMelddiff
からもアクセスできます。diff のユーザー インターフェイスが扱いにくいことを考えると、Meld は便利なツールです。diff
- ターミナルを開いて次のように入力し、コマンド ラインから Meld をインストールします。
sudo apt -y install meld
また
sudo dnf -y install meld
RPM ベースのディストリビューション用。
これにより、apt パッケージ マネージャーが初期化され、Meld のインストールが開始されます。-y
フラグは、プロンプトに対して自動的に「はい」と言うことに注意してください。これらのプロンプトを手動で確認したい場合は、削除してください。
- プロンプトが表示されたら、管理者パスワードを入力します。再度コマンド プロンプトが表示されたら、インストールは完了し、Meld を開くことができます。
- Meld を開くと、ファイル比較、ディレクトリ比較、バージョン管理ビューの 3 つのオプションが表示されます。「ファイル」をクリックします。
- 2 つのドロップダウン メニューが表示され、どちらも「(なし)」と表示されます。いずれかをクリックして、比較するファイルを選択します。
- もう一方のドロップダウン メニューをクリックして、比較する 2 番目のファイルを選択します。
- 「比較」ボタンをクリックします。
- 次のウィンドウには、2 つのファイル間で見つかった相違点が要約されています。赤い文字が違いで、青い背景はその行に違いがあることを示しています。緑色の背景は、行が 1 つのファイルに存在し、他のファイルには存在しないことを示します。
- 違いの間を移動するには、メニュー バーの上下のボタンをクリックします。ドキュメント内をマウスで直接クリックすることもできます。
Meld でのファイルの操作
比較に加えて、Meld では比較対象のファイルを変更できます。いずれかのバージョンを変更すると、Meld は引き続きドキュメントの変更を分析し、いつでもCtrl+を押して変更を元に戻すことができます。Z
- あるファイルから別のファイルに変更をコピーするには、変更の間にある小さな黒い矢印をクリックします。たとえば、左側の矢印をクリックすると、左側のドキュメントの行を使用して右側のドキュメントが上書きされます。
- 上書きせずに文書に行を挿入することもできます。キーを押したままにするとCtrl、最後のステップの矢印がプラス記号に変わります。アイコンをクリックすると小さなダイアログ ボックスが開き、新しい行を挿入する場所を選択できます。
- 最後に、ドキュメントに直接入力します。通常どおりカーソルを挿入して、入力を開始します。
- 変更が完了したら、[保存] ボタンをクリックしてファイルを保存します。
Meld と diff を使用して diff ファイルを作成する
2 つのファイルの違いを表示するだけでなく、Meld を使用して「差分ファイル」を作成することもできます。これらは、あるファイル バージョンから別のファイル バージョンに変更を適用する方法についての指示を含む小さなテキストです。これは、ソース アーカイブ全体を再共有せずにコードの更新をすばやく配布する場合に便利です。
- 比較する 2 つのファイルを開きます。
- ウィンドウの右上隅にある [オプション] メニューをクリックします。
- 「比較」サブメニューを選択します。
- 「パッチとしてフォーマット」サブオプションをクリックします。
- これにより、Meld が 2 つのファイル間の差分ファイル全体を出力する小さなウィンドウが開きます。この時点で、このテキストをクリップボードにコピーするか、ファイルに保存できます。後者を行うには、「パッチを保存」ボタンをクリックします。
Meld 内で差分ファイルを作成するのは簡単ですが、コードの編集中に GUI にアクセスできない場合があります。そのために、diff
プログラムを使用して差分ファイルを生成することもできます。
- ターミナルを開き、2 つのファイルに違いがあるかどうかを確認します。
diff hello.c hello-1.c
- フラグを使用して単純な差分ファイルを作成します
-c
。
diff -c hello.c hello-1.c > hello.diff
- 必要に応じて、
-u
テキストの 2 つのストリームを 1 つの統合された差分ブロックに結合するオプションを使用します。これは、多くのコードを変更していて、ディスク容量を節約したい場合に役立ちます。
diff -u hello.c hello-1.c > hello.diff
差分ファイルを使用してソース コードにパッチを適用する
上で説明したように、差分ファイルを使用すると、ソース コードへの変更を簡単に共有できる要約を作成できます。ただし、diff 自体はこれらを既存のファイルに適用することはできません。これを行うには、diff のコンパニオン プログラムであるpatch
.
- 差分ファイルが変更しようとしている元のソース コードを特定します。
cat hello.diff | sed 1q
- 元のソース コードのバックアップを作成します。
cp hello.c hello.c.old
- 最初の引数に元のファイルを指定し、2 番目の引数に差分ファイルを指定して、パッチ プログラムを実行します。
patch hello.c hello.diff
差分ファイルには、複数のファイルにまたがる変更も含まれる可能性があることに注意してください。これを適用するには、更新に必要なすべてのファイルを単一のディレクトリに配置して実行しますpatch < multi-file.diff
。
- ソース ファイルをバックアップと比較して、パッチ プログラムがソース ファイルを正常に更新したかどうかを確認します。
diff -y hello.c hello.c.old
参考までに: Git は強力なクロスプラットフォームのバージョン管理プログラムです。これを使用して Linux でソース コード リポジトリを管理する方法を学びます。
よくある質問
ファイルに複数回パッチを適用することはできますか?
はい。ただし、差分ファイル内の行番号の値は静的であることに注意することが重要です。たとえば、1 行目に 5 行のコードを追加する diff を適用すると、ファイル全体が 5 行調整されます。最新のツールは単一の差分からの変更を補正できますが、複数の差分を適用すると不要なコードの競合が発生する可能性があります。
差分ファイルは Git パッチに似ていますか?
はい。diff と Git はどちらも、コード パッチに同様の形式を使用します。その結果、ソース コードに更新を適用するときに、2 つのユーティリティを入れ替えることができます。たとえば、 running はgit apply hello.diff
running と同等ですpatch < hello.diff
。
Git などのバージョン管理プログラムで Meld を使用できますか?
はい。Meld の最も強力な機能の 1 つは、どのバージョン管理プログラムでも透過的に動作できることです。これにより、端末インターフェースの外部でリポジトリと簡単にやり取りできるようになります。
これを行うには、Ctrl+を押しNてから、[バージョン管理ビュー] ボタンをクリックします。次に、その下のドロップダウン ボックスをクリックして、[その他] を選択します。これにより、Git リポジトリを表示してロードできる小さなウィンドウが表示されます。
画像クレジット: Unsplash . すべてのスクリーンショットは Ramces Red によるものです。
コメントを残す