Linux では、Windows cmd コマンドと同じです。

Linux では、Windows cmd コマンドと同じです。

Linux に移行しており、次の Windowscmdコマンドを変換する必要があります。

fc file1.txt file2.txt | find /i "no se han encontrado diferencias" > nul && set equal=yes

orで代用できるfcようですが、この部分はどうすればいいのかわかりませんね、たぶん声明...diffcommfindgrep&&if

答え1

これらのWindowsコマンドの機能を推測すると、shPOSIXスクリプトの対応するコマンドは次のようになります。

equal=no
cmp -s file1 file2 && equal=yes

両方のファイルを読み取ることができ、同じ内容(バイト単位)を持つ場合、変数はにequal設定されます。yes

あるいは、一部のcmp -sシステム(Linuxベースのシステムを含む)ではdiff -qdiff -qq静かな)とほとんどのcmp -ss静かな)はファイルを読み取れない場合はエラーメッセージを報告します。したがって、diffそのシステムはパフォーマンス上の理由から好むことができます。cmpbusyboxcmpbusybox diffbusyboxdiff -q

答え2

Windowsコマンドはそれを使用して2つのファイルを比較し、出力fcから「違いなし」メッセージを取得するようです。そのメッセージが表示されたら、変数equalがに設定されますyes

unixコマンドをcmp使用してファイルを比較し、一致する場合は0の出力を返すことができます。これを直接テストできるため、「出力検索」機能は不要です。

[[ -z "$(cmp file1 file2 2>&1)" ]] && equal=yes

答え3

bashシェルでは&&、演算子はプロセス制御に使用される論理ANDで、最初のプロセスがエラーで終了しない場合は2番目のプロセスが実行されます。デュアルパイプ(||)も同様に機能しますが、ORステートメントであり、前のコマンドが失敗した場合に実行されます。

sample_fileしたがって、次のファイル名が与えられました。

aaa
bbb
123
ccc
ddd

注文する

grep ccc sample_file >/dev/null && echo found || echo not found

「発見」をエコーし​​、これは――

grep cow sample_file >/dev/null && echo found || echo not found

「見つかりません」と表示されます。

echo ステートメントを変数の代入で置き換えます。

関連情報