그것은 bash
단지 실행 환경 이라는 것을 이해해야 합니다. 그것은 당신이 호출하는 명령을 실행합니다-명령이 무엇을하는지 아는 것은 쉘의 사업이 아니며, 원하는 실행 파일을 호출 할 수 있습니다. 대부분의 경우 실행 취소 작업이 무엇인지 명확하지 않습니다. 예를 들어 영화를 "재생"할 수 있습니까? 이메일을 "발송"할 수 있습니까? 예를 들어 "실행 취소 파이어 폭스"는 무엇을 의미합니까? 닫을 수 있지만 책갈피, 다운로드 및 기록은 동일하지 않습니다.
명령을 실행하면 명령에 관계없이 실행됩니다. 무엇을하고 있는지 아는 것은 당신에게 달려 있습니다. 이것은 개별 명령에 "실행 취소"가 없다는 것을 의미하지는 않습니다. 어리석은 실수로부터 당신을 보호 할 수있는 래퍼 함수를 작성할 수도 있습니다.
예를 들어, mv
덮어 쓰지 않는 한 파일을 원래 위치로 되돌려 놓으면 쉽게 되돌릴 수 있습니다. 그래서 -i
덮어 쓰기 전에 물어볼 스위치가 존재합니다. 기술적으로 cp
is는 반대로 rm
덮어 쓰지 않는 한 is입니다 (다시 -i
묻습니다). rm
파일을 다시 가져 오려면 더 영구적입니다. 실제로 일부 하위 수준 해킹을 수행해야합니다 (도구가 있습니다). 파일 시스템을 블랙 박스로 간주했다면 기술적으로 전혀 불가능할 것입니다 (데이터의 논리적 및 물리적 레이아웃에 대한 세부 정보만으로도 일부 손상 제어를 수행 할 수 있습니다). rm
수단은 rm
당신이 "쓰레기"기능을 원한다면, 그건 그냥 사실입니다mv
미리 정렬 된 디렉토리 (및 유지 관리 또는 비우기 위해 예정된 서비스)로-특별한 것은 없습니다. 그러나 -i
삭제하기 전에 메시지를 표시 하는 데 사용할 수 있습니다 . 함수 또는 별명을 사용하여이 -i
명령 에 항상 포함시킬 수 있습니다 .
대부분의 응용 프로그램은 다양한 방식으로 데이터 손실을 방지합니다. 대부분의 (~ all) 텍스트 편집기 ~
는 이전 버전을 다시 가져 오려는 경우 마지막에 백업 파일을 만듭니다 . 일부 배포판에서는 ls
기본적으로 별칭이 지정되어 숨겨 -B
지지만 ( ) 있습니다. 권한을 올바르게 관리하면 많은 보호를받을 수 있습니다. 필요한 경우가 아니면 루트 권한을 가지지 말고 파일을 변경하지 않으려면 파일을 읽기 전용으로 만드십시오. 때로는 "샌드 박스"환경을 사용하는 것이 유용합니다. 복사본에서 작업을 실행하고 문제가 없는지 확인한 다음 변경 사항을 병합하거나 변경 내용을 버립니다. chroot
또는 lxc
스크립트가 디렉토리에서 빠져 나와 손상을 방지 할 수 있습니다.
예를 들어, 복잡한 find 명령, while 루프, 긴 파이프 라인 또는 이와 유사한 항목이있는 경우 대량으로 작업을 수행하려고 할 때 먼저 echo
실행될 명령 만 실행 하는 것이 좋습니다 . 그런 다음 명령이 합리적으로 보이면 제거 echo
하고 실행하십시오. 물론 현재하고있는 일이 확실하지 않다면 먼저 사본을 만드십시오. 때로는 현재 디렉토리의 tarball을 만듭니다.
tarball에 대해 이야기-tarbombs와 zipbombs는 불행히도 매우 일반적입니다 (사람들이 적절한 하위 디렉토리없이 아카이브를 만들고 압축을 풀면 파일이 주변에 흩어져서 큰 혼란을 초래할 수 있습니다). 포장을 풀기 전에 하위 디렉토리를 직접 만드는 데 익숙했습니다 ( 내용을 나열 할 수 는 있지만 게으 릅니다). 내용이 하위 디렉토리없이 아카이브 된 경우에만 하위 디렉토리를 작성하는 스크립트를 작성하려고합니다. 그러나 이런 일이 발생 ls -lrt
하면 가장 최근에 파일을 찾도록 도와줍니다. 방금 이것을 예제로 들었습니다. 프로그램은 쉘이 알 수없는 많은 부작용을 가질 수 있습니다 (어떻게 할 수 있습니까? 다른 프로그램이라고합니다!) 실수를 피하는 유일한 확실한 방법은 조심해야합니다 (생각하십시오) 두 번, 한 번 실행).
아마도 가장 위험한 명령은 파일 시스템을 처리하는 명령 일 것입니다 : mkfs, fdisk / gdisk 등. 파일 시스템을 완전히 파괴 할 수 있습니다 (적절한 법의학 소프트웨어를 사용하더라도 적어도 부분 리버스 엔지니어링이 가능합니다). 명령을 실행하기 전에 항상 포맷하고 파티셔닝중인 장치가 올바른지 다시 확인하십시오.