2つの同じファイルがある場合、自動的に結果が異なります。どのように表示するのですか?

2つの同じファイルがある場合、自動的に結果が異なります。どのように表示するのですか?

-sパラメータを設定すると、diff他のファイルも印刷されます。

diff -s $FIRST_FILE $SECOND_FILE

答え1

Unixの哲学は、すべてのタスクにツールがあり、シェルがすべてのタスクを1つにまとめるということです。したがって、比較ツール、目的の出力形式を取得するためのツールです。

この場合、出力形式は非常に簡単で、この部分はシェルを使用して直接実行できます。

2つのファイルを比較するには、違いをリストするのではなく、同じ内容があるかどうかに興味がある場合は、次のようにします。cmp

if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
  printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi

答え2

考えられる解決策の1つは次のとおりです。

diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
    echo "The files are identical"
fi

注:質問テキストが変更されます。

答え3

デフォルトdiffでは、同じファイルが提供されている場合はサイレントを維持します。これが変更される動作の唯一の側面です-s。したがって、常にファイルを比較し、違いを出力します。ファイルが同じ場合は、同じファイルをまったく言及せずに-sメッセージも出力します。-s

-qsumsを組み合わせると、希望の動作が得られます-s-qディレクティブは、diff違いを詳しく説明せず、ファイルが異なることを示します(他の場合)。

例は次のとおりです。

$ echo 1 > a
$ echo 2 > b
$ echo 2 > c
$ diff -qs a b
Files a and b differ
$ diff -qs b c
Files b and c are identical

答え4

ファイル名の周りに引用符を入れました。ファイル名も小文字に変更する必要があります。

diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"

関連情報