"더 이상 사용되지 않음"이라는 두 가지 의미가 있습니다.
더 이상 사용되지 않음 : (주로 소프트웨어 기능으로) 사용할 수는 있지만 일반적으로 대체 되었기 때문에 더 이상 사용하지 않고 피하는 것이 좋습니다.
— 새로운 옥스포드 미국 사전
이 정의에 따라 백틱 은 더 이상 사용되지 않습니다.
더 이상 사용되지 않는 상태 는 기능이 나중에 제거 될 것임을 나타낼 수도 있습니다 .
— 위키 백과
이 정의에 따라 백틱은 더 이상 사용 되지 않습니다.
여전히 지원 :
쉘 명령 언어 , 특히 "2.6.3 명령 대체"섹션 에서 공개 그룹 사양을 인용하면 사양 이 진행되는 한 명령 대체, 백틱 ( `..cmd..`
) 또는 달러 파렌 ( $(..cmd..)
)이 여전히 지원됨을 알 수 있습니다.
발췌
명령 대체는 명령 이름 대신 명령 출력을 대체 할 수있게합니다. 명령 대체는 명령이 다음과 같이 묶여있을 때 발생합니다.
$(command)
or (backquoted version):
`command`
쉘은 서브 쉘 환경에서 명령을 실행하고 (쉘 실행 환경 참조) 명령 대체 (명령 텍스트와 엔 클로징 $()
또는 백 따옴표)를 명령의 표준 출력으로 대체하여 하나 이상의 시퀀스를 제거 하여 명령 대체를 확장해야합니다. 대체 종료시 <newline> 문자 출력이 끝나기 전에 포함 된 <newline> 문자는 제거되지 않아야합니다. 그러나 IFS의 값과 인용에 따라 필드 구분 기호로 필드 구분 기호로 처리되어 제거 될 수 있습니다. 출력에 널 바이트가 포함되어 있으면 동작이 지정되지 않은 것입니다.
역 따옴표로 묶인 명령 대체 스타일에서 <backslash> 는 '$', ' \`
'또는 <backslash> 뒤에 오는 경우를 제외하고 문자 그대로의 의미를 유지해야합니다 . 일치하는 역 따옴표에 대한 검색은 인용되지 않은 첫 번째 인용되지 않은 역 따옴표에 의해 충족되어야합니다. 이 검색 중에 이스케이프 처리되지 않은 역 따옴표가 쉘 주석, 여기 문서, 내장 된 명령 대체 $(command)
형식 또는 인용 된 문자열 내에 있으면 정의되지 않은 결과가 발생합니다. " `...`
"시퀀스 내에서 시작하지만 끝나지 않는 작은 따옴표 또는 큰 따옴표 문자열 은 정의되지 않은 결과를 생성합니다.
$(command)
형식을 사용하면 여는 괄호 다음에 일치하는 닫는 괄호 뒤에있는 모든 문자가 명령을 구성합니다. 지정되지 않은 결과를 생성하는 리디렉션만으로 구성된 스크립트를 제외하고 유효한 쉘 스크립트를 명령에 사용할 수 있습니다.
그렇다면 왜 모든 사람들이 백틱이 더 이상 사용되지 않는다고 말합니까?
대부분의 유스 케이스 는 백틱 대신 달러 파 렌스 양식을 사용해야하기 때문입니다. (위의 첫 번째 의미에서 더 이상 사용되지 않습니다.) 가장 평판이 좋은 사이트 (U & L 포함)의 대부분은이 사이트 전체에서이 정보를 언급하기도하므로 이는 적절한 조언입니다. 이 조언은 쉘에서 백틱에 대한 지원을 제거하려는 존재하지 않는 계획과 혼동되어서는 안됩니다.
참고 : 위의 세 번째 발췌 부분은 계속해서 백틱이 작동하지 않지만 다음 단락부터 시작하여 새로운 달러 파 렌스 방법이 작동하는 몇 가지 상황을 보여줍니다.
또한 역 따옴표로 묶인 구문에는 포함 된 명령의 내용에 대한 기록 제한이 있습니다. 최신 "$ ()"양식은 모든 종류의 유효한 포함 된 스크립트를 처리 할 수 있지만 역 따옴표로 묶인 양식은 역 따옴표를 포함하는 일부 유효한 스크립트를 처리 할 수 없습니다.
해당 섹션을 계속 읽으면 실패는 백틱을 사용하여 실패하는 방법을 보여 주지만 강조 표시되지만 최신 달러 Parens 표기법을 사용하여 작동합니다.
결론
따라서 백틱 대신 달러 달러를 사용하는 것이 바람직하지만 실제로는 "계획된 시점에서 완전히 작동이 중지됩니다"와 같이 기술적으로 "더 이상 사용되지 않는"것을 사용하지 않는 것이 좋습니다.
이 모든 내용을 읽은 후에는 POSIX Bourne이 아닌 실제 원본 쉘과 특별히 호환 되지 않는 한 달러 지폐를 사용하는 것이 좋습니다 .
cd
디렉토리에 이유의 예는$(...)
표기가 중첩 다시 따옴표보다 사용하기 쉽다.