Linux로 마이그레이션 중이며 다음 Windows cmd
명령을 변환해야 합니다.
fc file1.txt file2.txt | find /i "no se han encontrado diferencias" > nul && set equal=yes
or로 대체 fc
할 수 있을 것 같은데 이 부분은 어떻게 해야할지 모르겠네요, 어쩌면 성명서...diff
comm
find
grep
&&
if
답변1
이러한 Windows 명령의 기능을 추측해 보면 sh
POSIX 스크립트의 해당 명령은 다음과 같습니다.
equal=no
cmp -s file1 file2 && equal=yes
두 파일을 모두 읽을 수 있고 동일한 내용(바이트 단위)을 갖는 경우 equal
변수는 로 설정됩니다.yes
대안으로 일부 cmp -s
시스템(Linux 기반 시스템 포함) 에서는 diff -q
.diff -q
q
조용한) 및 대부분 의 cmp -s
(s
조용한)은 파일을 읽을 수 없는 경우 오류 메시지를 보고합니다. 및 diff
.cmp
busybox
cmp
busybox
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 문을 변수 할당으로 바꾸십시오.