Bash 쉘에서 실행된 명령을 다시 실행/실행 취소할 수 있는 (간단한) 가능성이 있는지 궁금합니다. (취소하게 만들어)
어떤 작업(예: Word 또는 LibreOffice)을 다시 실행할 수 있는 ctrl+ 조합 과 같은 것이 있습니까 ?z
답변1
bash
이것은 단지 실행 환경일 뿐이라는 점을 이해해야 합니다 . 이는 사용자가 호출한 명령을 실행합니다. 쉘은 명령이 무엇을 하는지 상관하지 않으며 원하는 실행 파일을 호출할 수 있습니다. 대부분의 경우 실행 취소 기능이 무엇인지 명확하지 않습니다. 예를 들어 영화를 "재생 취소"할 수 있습니까? 이메일을 "보내기 취소"할 수 있나요? 예를 들어, "Firefox 실행 취소"는 정확히 무엇을 의미합니까? 이 기능을 끌 수 있지만 북마크, 다운로드, 기록은 동일하지 않습니다.
명령을 실행하면 무엇을 하든 실행됩니다. 당신이 무엇을 하고 있는지 아는 것은 당신에게 달려 있습니다. 이것이 개별 명령에 "실행 취소" 기능이 없다는 의미는 아닙니다. 그럴 수도 있습니다. 어리석은 실수로부터 보호하기 위해 래퍼 함수를 작성할 수도 있습니다.
예를 들어, mv
덮어쓰지 않는 한 파일을 원래 위치로 다시 이동하면 쉽게 되돌릴 수 있습니다. 그렇기 -i
때문에 재정의하기 전에 물어볼 스위치가 존재합니다. 기술적으로 무엇인가 재정의되지 않는 한 cp
is 의 반대입니다 . 보다 영구적으로 파일을 복구하려면 실제로 낮은 수준의 해킹(도구가 있음)을 수행해야 합니다. 파일 시스템을 블랙박스로 생각한다면 이는 기술적으로 전혀 가능하지 않습니다(데이터의 논리적, 물리적 레이아웃의 세부정보만 어느 정도 손상을 제어할 수 있습니다). 즉 , "휴지통" 기능을 원할 경우 실제로는 사전에 정렬된 디렉토리(및 이를 유지 관리하거나 비우기 위해 예약된 서비스)로 이동하는 것뿐입니다. 특별한 것은 없습니다. 하지만 삭제하기 전에 프롬프트를 사용할 수 있습니다. 함수나 별칭을 사용하여 항상 이러한 명령을 포함할 수 있습니다 .rm
-i
rm
rm
rm
mv
-i
-i
대부분의 앱은 다양한 방식으로 데이터 손실로부터 사용자를 보호합니다. 대부분의 (~모든) 텍스트 편집기는 ~
이전 버전을 복원하려는 경우를 대비해 마지막에 백업 파일을 생성합니다. 일부 배포판에서는 ls
별칭이 기본적으로 숨겨지도록 사용되지만( -B
) 존재합니다. 권한을 올바르게 관리하면 많은 보호를 얻을 수 있습니다. 필요한 경우가 아니면 루트가 되지 말고, 변경을 원하지 않으면 파일을 읽기 전용으로 만드세요. 때때로 "샌드박스" 환경을 갖는 것이 유용할 수 있습니다. 복사본에서 무언가를 실행하고 작동하는지 확인한 다음 변경 사항을 병합(또는 삭제)합니다. chroot
또는 lxc
스크립트가 디렉토리에서 탈출하여 손상을 일으키는 것을 방지합니다.
echo
일괄적으로 작업을 실행하려고 할 때(예를 들어, 복잡한 find 명령, while 루프, 긴 파이프 또는 유사한 명령이 있는 경우) 실행하려는 명령 만 먼저 실행하는 것이 가장 좋습니다 . 그런 다음 명령이 합리적으로 보이면 삭제 echo
하고 실제로 실행하십시오. 물론, 자신이 하고 있는 일이 무엇인지 확실하지 않다면 먼저 사본을 만들어 두십시오. 때로는 현재 디렉토리의 tarball을 생성하기도 합니다.
tarball에 대해 말하면 tarbomb과 zipbomb은 불행한 일입니다(사람들이 적절한 하위 디렉터리 없이 보관할 때 압축을 풀면 파일이 여기저기로 흩어지고 엄청난 혼란이 발생합니다). 저는 압축을 풀기 전에 직접 하위 디렉터리를 만드는 데 익숙합니다.할 수 있다물건을 나열하지만 게으르다). 콘텐츠가 하위 디렉터리 없이 보관되는 경우에만 하위 디렉터리를 생성하는 스크립트를 만들 생각입니다. 하지만 그런 일이 발생하면 ls -lrt
최신 파일을 찾아 원래 위치에 두는 것이 도움이 됩니다. 나는 단지 예를 들었습니다. 프로그램에는 쉘이 알 수 없는 많은 부작용이 있을 수 있습니다(어떻게 그게 가능합니까? 다른 프로그램이 호출되고 있습니다!) 오류를 피하는 유일한 확실한 방법은 주의하는 것입니다(두 번 생각하십시오. 한 번 실행).
아마도 가장 위험한 명령은 mkfs, fdisk/gdisk 등 파일 시스템을 다루는 명령일 것입니다. 파일 시스템을 완전히 손상시킬 수 있습니다(적절한 포렌식 소프트웨어를 사용하면 최소한 부분적인 리버스 엔지니어링도 가능합니다). 명령을 실행하기 전에 올바른 장치와 파티션을 포맷하고 있는지 다시 확인하세요.
답변2
아니요, 죄송합니다. Bash에는 "실행 취소"와 같은 기능이 없습니다. 그렇기 때문에 명령을 다시 확인하거나 중요하지 않은 파일에서 먼저 테스트해야 합니다(가능하다면). 그리고 루트로 수행하고 있는지 세 번 확인하세요.)
답변3
아니요, 보편적인 반전은 없지만 일부 결과는 다른 결과보다 되돌릴 수 있습니다. 적절한 사례 rm
: 기본적으로 혼란을 피하고 새 파일을 위한 공간을 확보하는 두 가지 목적을 제공합니다. 운이 좋으면 다음과 같은 도구를 사용하여 파일 내용을 검색할 수 있습니다.extundelete
, 왜냐하면 단지바늘실행하면 파일 시작 부분까지의 내용이 덮어쓰여집니다 rm
.콘텐츠운영 체제가 공간을 재사용하면 공간을 덮어쓰게 됩니다(몇 밀리초 또는 몇 년 후에 발생할 수 있음). 이 기능으로 인해 rm
중간에 떨어지는 경우규모시스템은 다소 파괴적입니다. 한편으로는쓰레기실행 취소가 사소하기 때문에 즉각적인 데이터 손실 위험 없이 혼란을 피할 수 있는 방법을 제공하는 시스템입니다. 좀 더 보수적으로한 번 쓰고, 많이 읽으세요("WORM") 시스템에서 데이터가삭제하거나 덮어쓸 수 없습니다.시스템에서 마음대로 작성합니다. 저울의 다른 쪽 끝은다진 것시스템, 파일 덮어쓰기콘텐츠(보통 여러 번) 포인터를 제외하고. 데이터를 복구하는 기술은 당시에는 존재하지 않았을 수도 있고 존재하지 않았을 수도 있습니다.
rm
따라서 가장 일반적으로 사용되는 특정 도구( )가 유일한 옵션은 아니지만 대부분의 사람들이 만족하는 것으로 보이는 절충안을 제공한다는 것을 알 수 있습니다 .
- 파일 포인터 삭제는 매우 빠르며 디스크 손상에 거의 영향을 미치지 않습니다.
- 고도로 자동화된 시스템은 공간이 부족할 가능성이 적습니다.
- 매우 적당하지만 0이 아닌 개인 정보 보호를 제공하고 반대로 복구 보장을 제공합니다.
- 복잡성이 낮으므로 오류나 예상치 못한 동작 가능성이 낮음
도구로 인한 장단점이 받아들일 수 없는 경우 주변을 둘러보세요. 아마도 올바른 결정을 내리기 위한 몇 가지 도구가 있을 것입니다.너.
답변4
아니요, 그렇지 않습니다. 하지만 루트 권한이 있는 디렉터리를 망쳐 놓고 뭔가를 망쳤다고 가정해 보겠습니다. 그러면 가장 좋은 방법은 모든 파일을 USB 드라이브나 SD 카드에 저장한 다음 ISO 파일에서 복사하는 것입니다. (아직 가지고 있다면 오프라인으로 다른 파일을 얻을 수 있습니다...). 무언가를 삭제한 경우 다음을 수행할 수 있습니다.망령예를 들어, 파일 데이터를 파일 이름에 다시 연결하고 파일 내용을 저장하는 앱을 다운로드하세요(이 항목 참조).여기에 질문하세요). 더 자세한 답변을 얻으려면 무엇이 잘못되었는지 알려주실 수 있나요?