いつの間にかシリーズ化していた(?)、よく使うLinuxコマンド集の記事、
ひとまず今回が最後です。
最後を単独で飾るのは、ファイル比較を行える、diffコマンド。
■以前の記事はこちら
では改めて、diffコマンドの紹介へ!!
もくじ
◎diffコマンドとは
◎基本
・例1
・例2
◎diffの使いどころと、他ツールの活用について
・diffコマンドを利用=結果は文字で示される
・差分比較ツールを利用=結果はビジュアルで示される
◎さいごに
◎diffコマンドとは
ファイルの差分を表示してくれるコマンド。
◎基本
diff [ファイル①] [ファイル②]
で、ファイル①と②の差がある部分を示してくれる。
<例1>
ファイル①②で、10行目と11行目に差分がある場合の、
差分の表示のされ方は以下の青字部分の通り。
10, 11 c 10, 11 ←◎ファイル①の行数 Change ファイル②の行数 の意味
< 2020/06/11 ←★ファイル①の10行目の値
< 晴れ ←▲ファイル①の11行目の値
---
> 2020/06/12 ←★ファイル②の10行目の値
> くもり ←▲ファイル②の11行目の値
表示される記号の意味は以下の通り。
< …ファイル①の値であることを示す
--- …ファイル①と②の境目であることを示す
> …ファイル②の値であることを示す
また、注釈をつけた箇所の意味は以下の通り。
◎…差分箇所(どの行数がどの行数に変わったか)を示す
★…1つ目の差分箇所(例では10行目)の、各ファイルの値を示す
▲…2つ目の差分箇所(例では11行目)の、各ファイルの値を示す
<例2>
ファイル①にはあった8行目の値が、②では削除された場合の、
差分の表示のされ方は以下の青字部分の通り。
8 d 7 ←◎ファイル①の行数 Delete ファイル②の直前の行数 の意味
< hello, world ←★ファイル①の8行目の値(ファイル②では削除された値)
表示される記号「<」の意味は、例1の時と同じく、
ファイル①の値であることを示す。
例1(値の変更)の時と大きく異なるのは、
変更(Change)を示していた記号「c」が、削除(Delete)を示す「d」になったこと、
削除されているため、当たり前だがファイル②のほうの値は表示されないこと。
その他は、基本的に例1の時と同じ考え方で考えればよい。
◎diffの使いどころと、他ツールの活用について
例で示した通り、diffコマンド結果において、差分は全て記号や文字を使って示される。
そのため、差分がたくさんあるときに使うと、ごっちゃごちゃになること必至。。。
しかも前提として、各記号の意味を知っておかないと、
結果が表示されても「なんのこっちゃ」で終わってしまう……
ということで、差分比較には、diffコマンドだけでなく、
別のツールを使うことも手段として知っておくべきである。
別のツールは、
・vimdiffまたはgvimdiff(Linux)
・WinMerge(Windows)
が代表例だろう。
いずれも、diffコマンドとは異なり、差分の結果をビジュアルで示してくれる。
vimdiffまたはgvimdiffは、Linuxコマンドで起動でき、
ファイルの差分をビジュアルチックに示してくれるツールの模様。(使ったことは無い…)
WinMergeについては、過去記事を参照のこと。→こちら
これら差分比較ツールと、diffコマンドを、状況によってうまく使い分けると良いと思われる。
使い分けの例は以下の通り。
■diffコマンドを利用=結果は文字で示される
・差分はないはずだが、念のため差分がないことを確認したい
・コマンドで差分確認を済ませたい
・差分がどれくらいあるか不明なのでとりあえず差分量をざっくりチェックしたい(差分なければラッキー♪)
・差分結果をビジュアルで示してくれるツールを使えない環境である
■差分比較ツールを利用=結果はビジュアルで示される
・差分が多量にあることが分かっている
・一目で差分を把握したい
・diffの知識がない人や、忙しい上司などへ差分説明する資料をつくりたい
◎さいごに
ここまで書いておいてですが、
diffコマンドでも、オプションの使い方によっては、もう少しビジュアルチックに分かりやすい差分表示のさせ方があるようですm(__)m
以下のQiita記事がとても参考になりました。
https://qiita.com/bitnz/items/725350b614bafedc581a
ただ、上記記事にもありますが、
環境的に使えるのであれば、より直観的でわかりやすい、差分比較ツールを使うほうが良さげ。
状況によって色々使い分けていきたいですね。
最後の最後でごまかす感じの記事になってごめんなさい(;^-^A 何事も勉強というお話でした(?)