Linux에서는 Windows cmd 명령과 동일합니다.

Linux에서는 Windows cmd 명령과 동일합니다.

Linux로 마이그레이션 중이며 다음 Windows cmd명령을 변환해야 합니다.

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 -q.diff -qq조용한) 및 대부분 의 cmp -s(s조용한)은 파일을 읽을 수 없는 경우 오류 메시지를 보고합니다. 및 diff.cmpbusyboxcmpbusybox diff따라서 해당 시스템에서는 busybox성능상의 이유로 선호할 수 있습니다.diff -q

답변2

Windows 명령은 이를 사용하여 두 파일을 비교 fc하고 출력에서 ​​"차이 없음" 메시지를 검색하는 것으로 보입니다. 해당 메시지가 표시되면 변수가 equal로 설정됩니다 yes.

unix 명령을 cmp사용하여 파일을 비교하고 일치하는 경우 0의 출력을 반환할 수 있습니다. 이를 직접 테스트할 수 있으므로 "출력 검색" 기능이 필요하지 않습니다.

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

답변3

bash셸 에서 &&연산자는 프로세스 제어에 사용되는 논리적 AND로, 첫 번째 프로세스가 오류로 종료되지 않으면 두 번째 프로세스가 실행되도록 합니다. 이중 파이프( ||)는 유사하게 작동하지만 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 문을 변수 할당으로 바꾸십시오.

관련 정보