쉘 스크립트에서 사소한 문자를 이스케이프 처리하는 이유는 무엇입니까?

쉘 스크립트에서 사소한 문자를 이스케이프 처리하는 이유는 무엇입니까?

방금 레거시 셸 스크립트(Solaris의 이전 ksh88로 작성됨)를 열었고 코드 전체에서 다음이 반복되는 것을 발견했습니다.

[ -f $myfile ] && \rm -f $myfile

이스케이프 백 슬래시는 나에게 이상하다고 생각합니다.

이런 종류의 (분명히 쓸모없는) 이스케이프가 코드 전체에서 반복되기 때문에 의도적인 것이라는 것을 알고 있습니다. 원저자는 이미 떠난 지 오래여서 연락해서 물어볼 수가 없습니다.

이것은 단순히 저자의 우스꽝스러운 특이성입니까, 아니면 어느 시점에는 의미가 있었지만 더 이상 사용되지 않는 좋은 습관입니까? 아니면 실제로 권장되는 작업 방법인데 뭔가 완전히 빠졌습니까?

답변1

이는 별칭 보호에 사용됩니다.

$ ls
.bashrc  a  b

$ alias ls
alias ls='ls $LS_OPTIONS'

$ \ls
a   b

답변2

일반적으로 rm에 대해 몇 가지 보호 조치를 취하는 것이 좋습니다. 이는 일반적으로 앨리어싱을 통해 달성됩니다. 다중 사용자 환경에서는 이러한 보호 기능이 많이 사용되는 것을 자주 볼 수 있습니다.

쉘 스크립팅 실무자에게는 자신이 무엇을 하고 있는지 알고 있기 때문에 이러한 보호 장치를 비활성화하는 것이 유용한 경우가 많습니다. 앞서 언급했듯이 이는 명령 앞에 \.

@Sorpigal의 제안과는 달리, 스크립트가 사용자에게 안전 장치를 돌려주지 못할 수 있으므로 별칭을 설정 해제하지 말 것을 확실히 권합니다. 또한, 전체 경로를 사용하는 것은 rm이 GNU rm 대 BSD rm과 같은 이유로 보조 경로에 있을 수 있으므로 현명하지 않습니다. 이를 엄격한 경로로 재정의하는 것은 PATH의 목적, 즉 많은 아키텍처, 환경 및 사용자를 확장하고 처리하려는 목적을 무효화하는 것입니다.

관련 정보