쉘 스크립트에서 단순 문자를 이스케이프해야 하는 이유는 무엇입니까?

쉘 스크립트에서 단순 문자를 이스케이프해야 하는 이유는 무엇입니까?

방금 이전 쉘 스크립트(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입니다. 이를 엄격한 경로로 재정의하면 많은 아키텍처, 환경 및 사용자를 확장하고 처리하는 경로의 목적이 무효화됩니다.

관련 정보