Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

쉘 스크립트에서 문자열로 파일 경로를 래핑해야 하는 이유

끔찍한 관련 스레드를 우연히 발견했습니다. 프로그래밍 실수 및 발견:

https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdbe0acce6f1dafc8beb84f2ac

다음 행이 포함된 항목:

rm -rf /foo-bar-usr /lib/nvidia-current/xorg/xorg

참고 – foo-bar-를 추가했습니다. 실행하려고 하면 내가 경고한 대로 실행되지 않을 것입니다. 내 클립보드에 있는 것조차 저를 긴장하게 만듭니다! .

실행되면 어떻게 되나요? /usr/ 전체를 삭제합니다. 디렉토리 – 본질적으로 컴퓨터를 벽돌로 만드는 것입니다! 단 하나의 공간으로 인해 .

/usr 뒤의 공백으로 인해 , rm 명령은 이를 하나의 잘못된 경로가 아닌 제거할 두 개의 개별 디렉토리로 해석합니다.

해당 경로가 단일 매개변수로 전달되도록 따옴표로 묶었다면 이런 일이 발생하지 않았을 것입니다.

대부분의 명령줄 예제는 스크립트의 의미를 난독화하거나 읽기 어렵게 만들 수 있으므로 이 작업을 수행하지 않습니다. 그러나 명령줄에서 명령문을 직접 실행하는 대신 스크립트를 작성하는 경우 특히 실수로 공간을 탭할 수 있는 사용자 입력을 수락합니다(절대 사용자 신뢰) , 예방책으로 파일 경로를 래핑하는 것이 좋습니다.

데이터를 잃고 싶지 않으며 다른 사람의 데이터도 잃고 싶지 않습니다.

그리고 언제나처럼 – 파일과 시스템을 정기적으로 백업하십시오! 이런 실수는 언제 끝날지 모릅니다. 본인의 실수가 아닐 수도 있습니다.