일련의 mv 명령을 사용하여 bash 스크립트를 되돌릴 수 있습니까?

일련의 mv 명령을 사용하여 bash 스크립트를 되돌릴 수 있습니까?

다음을 포함하는 rename_everything.sh 스크립트가 있는 경우

mv 2022-05-03.txt hike_valley.txt
mv 2022-05-20.txt not_overcooked.txt
mv 2022-05-22.txt return_trip.txt

그런데 폴더에 넣어서 실행하기가 불안하네요

bash rename_everything.sh

이 작업을 수행하기로 결정한 후 그것이 나쁜 생각이라고 판단하고 후회한다면 방금 수행한 것과 정반대의 방식으로 해당 .sh 파일을 호출하는 것이 가능합니까?

답변1

일반적으로 주문은 취소할 수 없습니다 mv 2022-05-03.txt hike_valley.txt.

언뜻 보면 mv hike_valley.txt 2022-05-03.txt"실행 취소" 명령인 것처럼 보입니다. 하지만 일반 파일이 hike_valley.txt이미 존재하고 있다고 가정해 보세요.덮여첫 번째 명령을 전달합니다. 원본 콘텐츠는 쉽게 복원되지 않습니다. 확실히 소위 "실행 취소" 명령은 원래 내용을 복원하지 않습니다.

또 다른 경우는 hike_valley.txt디렉토리(그럴 수도 있음)이거나 디렉토리에 대한 심볼릭 링크인 경우입니다. 이 경우 첫 번째 명령은 을 생성하거나 덮어씁니다 hike_valley.txt/2022-05-03.txt. 여기서 "실행 취소"라는 것은 mv hike_valley.txt/2022-05-03.txt ./위의 "실행 취소"와 이미 다릅니다. 덮어쓰기가 발생하더라도 실제로는 실행 취소되지 않습니다.

동일한 추론이 mv스크립트의 모든 명령에 적용됩니다.

관련 정보