Linux で差分ファイルを使用する方法

Linux で差分ファイルを使用する方法

Diff は Unix システム用のコマンド ライン ツールで、2 つのファイルまたはディレクトリを比較して、それらの違いを確認できます。ファイルの古いバージョンと新しいバージョンを比較して、変更点を確認するのに最適です。この記事では、Linux でファイルを簡単に比較するために を使用する方法を紹介しますdiff

diff によるファイルの比較

  • ターミナル ウィンドウを開きます。
  • diff比較する 2 つのファイルへのパスを入力します。この場合、次のコマンドを使用して、デスクトップ上の 2 つの小さな C プログラムを比較しています。

diff ~/Desktop/hello.c ~/Desktop/hello-1.c

diff コマンドを表示しているターミナル ウィンドウ。
  • を押してEnterコマンドを送信します。結果の表示には、ファイル間のすべての異なる行が表示されます。比較した行番号は「1c1」と表示されますが、これは最初の行が変更されたことを意味し、次のような違いが見つかりました。
diff コマンドの出力を示すターミナル ウィンドウ。
  • ファイルとその違いを並べて表示するには、-yフラグ afterを使用しますdiff。例えば:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

視覚的な差分を出力するコマンドを表示しているターミナル ウィンドウ。

パイプ記号 ( |) のある行は、違いのある行です。最初に端末ウィンドウを展開するようにしてください。そうしないと、ディスプレイが見づらくなる可能性があります。

ビジュアル diff コマンドの出力を示すターミナル ウィンドウ。

ファイルを Meld で比較する

の機能には、 の GUI であるMelddiffからもアクセスできます。diff のユーザー インターフェイスが扱いにくいことを考えると、Meld は便利なツールです。diff

  • ターミナルを開いて次のように入力し、コマンド ラインから Meld をインストールします。

sudo apt -y install meld

また

sudo dnf -y install meld

RPM ベースのディストリビューション用。

これにより、apt パッケージ マネージャーが初期化され、Meld のインストールが開始されます。-yフラグは、プロンプトに対して自動的に「はい」と言うことに注意してください。これらのプロンプトを手動で確認したい場合は、削除してください。

Meld のインストール コマンドを示すターミナル ウィンドウ。
  • プロンプトが表示されたら、管理者パスワードを入力します。再度コマンド プロンプトが表示されたら、インストールは完了し、Meld を開くことができます。
Meld のインストール プロセスを示すターミナル ウィンドウ。
  • Meld を開くと、ファイル比較、ディレクトリ比較、バージョン管理ビューの 3 つのオプションが表示されます。「ファイル」をクリックします。
Meld のウェルカム画面のスクリーンショット。
  • 2 つのドロップダウン メニューが表示され、どちらも「(なし)」と表示されます。いずれかをクリックして、比較するファイルを選択します。
最初のファイル ピッカーが強調表示された Meld 画面のスクリーンショット。
  • もう一方のドロップダウン メニューをクリックして、比較する 2 番目のファイルを選択します。
2 番目のファイル ピッカーが強調表示された Meld 画面のスクリーンショット。
  • 「比較」ボタンをクリックします。
[比較] ボタンが強調表示されたメルド画面のスクリーンショット。
  • 次のウィンドウには、2 つのファイル間で見つかった相違点が要約されています。赤い文字が違いで、青い背景はその行に違いがあることを示しています。緑色の背景は、行が 1 つのファイルに存在し、他のファイルには存在しないことを示します。
シンプルな 2 つのファイル比較ビューを含む Meld プログラムのスクリーンショット。
  • 違いの間を移動するには、メニュー バーの上下のボタンをクリックします。ドキュメント内をマウスで直接クリックすることもできます。
差分ナビゲーション ボタンが強調表示されている Meld プログラムのスクリーンショット。

Meld でのファイルの操作

比較に加えて、Meld では比較対象のファイルを変更できます。いずれかのバージョンを変更すると、Meld は引き続きドキュメントの変更を分析し、いつでもCtrl+を押して変更を元に戻すことができます。Z

  • あるファイルから別のファイルに変更をコピーするには、変更の間にある小さな黒い矢印をクリックします。たとえば、左側の矢印をクリックすると、左側のドキュメントの行を使用して右側のドキュメントが上書きされます。
差分解決ボタンを示す Meld プログラムのスクリーンショット。
  • 上書きせずに文書に行を挿入することもできます。キーを押したままにするとCtrl、最後のステップの矢印がプラス記号に変わります。アイコンをクリックすると小さなダイアログ ボックスが開き、新しい行を挿入する場所を選択できます。
差分追加プロンプトを示す Meld プログラムのスクリーンショット。
  • 最後に、ドキュメントに直接入力します。通常どおりカーソルを挿入して、入力を開始します。
  • 変更が完了したら、[保存] ボタンをクリックしてファイルを保存します。
ファイルごとの保存ボタンが強調表示されている Meld プログラムのスクリーンショット。

Meld と diff を使用して diff ファイルを作成する

2 つのファイルの違いを表示するだけでなく、Meld を使用して「差分ファイル」を作成することもできます。これらは、あるファイル バージョンから別のファイル バージョンに変更を適用する方法についての指示を含む小さなテキストです。これは、ソース アーカイブ全体を再共有せずにコードの更新をすばやく配布する場合に便利です。

  • 比較する 2 つのファイルを開きます。
簡単な差分を示す Meld プログラムのスクリーンショット。
  • ウィンドウの右上隅にある [オプション] メニューをクリックします。
Meld のオプション ボタンを強調表示したスクリーンショット。
  • 「比較」サブメニューを選択します。
比較サブメニューが強調表示された Meld のオプション メニューのスクリーンショット。
  • 「パッチとしてフォーマット」サブオプションをクリックします。
[フォーマット] サブオプションが強調表示された [比較] サブメニューのスクリーンショット。
  • これにより、Meld が 2 つのファイル間の差分ファイル全体を出力する小さなウィンドウが開きます。この時点で、このテキストをクリップボードにコピーするか、ファイルに保存できます。後者を行うには、「パッチを保存」ボタンをクリックします。
Meld の Patch サブウィンドウのスクリーンショット。

Meld 内で差分ファイルを作成するのは簡単ですが、コードの編集中に GUI にアクセスできない場合があります。そのために、diffプログラムを使用して差分ファイルを生成することもできます。

  • ターミナルを開き、2 つのファイルに違いがあるかどうかを確認します。

diff hello.c hello-1.c

2 つのファイル間の単純な差分を表示するターミナル。
  • フラグを使用して単純な差分ファイルを作成します-c

diff -c hello.c hello-1.c > hello.diff

基本的な diff ファイルの出力を示すターミナル。
  • 必要に応じて、-uテキストの 2 つのストリームを 1 つの統合された差分ブロックに結合するオプションを使用します。これは、多くのコードを変更していて、ディスク容量を節約したい場合に役立ちます。

diff -u hello.c hello-1.c > hello.diff

より複雑な統合 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.diffrunning と同等ですpatch < hello.diff

Git などのバージョン管理プログラムで Meld を使用できますか?

はい。Meld の最も強力な機能の 1 つは、どのバージョン管理プログラムでも透過的に動作できることです。これにより、端末インターフェースの外部でリポジトリと簡単にやり取りできるようになります。

これを行うには、Ctrl+を押しNてから、[バージョン管理ビュー] ボタンをクリックします。次に、その下のドロップダウン ボックスをクリックして、[その他] を選択します。これにより、Git リポジトリを表示してロードできる小さなウィンドウが表示されます。

画像クレジット: Unsplash . すべてのスクリーンショットは Ramces Red によるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です