t\ime
또는 \cd
(또는 "tim"e
또는 'cd'
또는 ${-##*}time
또는 ${-+time}
및 인용하고 당신이 생각할 수있는 확장은 결국에 해결하는 것이 다른 모든 조합 time
또는 cd
쓰기에 또 다른 방법 :), 즉 cd
및 time
.
그러나, 결국에 해결하는 것 cd
또는 time
쉘 문법 구문 분석 및 해석 나중에. 특히, 쉘 키워드 인식 및 별명 대체가 발생한 후 오래 지속 됩니다.
따라서 쉘이 언어로 키워드를 찾을 ti\me
때 time
쉘 키워드 로 인식하지 않습니다 . 그래서 :
ti\me echo test
time
키워드 다음에 간단한 명령이 아닌 간단한 명령으로 쉘에서 인식됩니다 .
그런 다음 인용 부호 ti\me
가 처리됩니다 (여기서 백 슬래시는 인용 할 m
필요가없는 문자를 인용하고 인용 문자가 제거되고 얻을 수 있습니다 time
). time
명령 은 다른 명령과 같이 조회됩니다 (내장 목록에 있음) , 기능의 실행 파일 $PATH
. 대부분의 가능성이 그 것입니다 /bin/time
) 여기
의 경우 쉘 언어 cd
에는 cd
키워드 가 없으며 cd
내장 명령 ( /usr/bin/cd
) 보다 우선합니다 . 그러나 cd
(와 같은 alias cd=pushd
)에 대한 별칭을 정의하면 다시 동일합니다. 별명을 대체하기 전에 따옴표를 제거하기 전에 별명 대체가 매우 일찍 수행되기 때문에 별명이 cd
아닌 경우 \cd
(백 슬래시가있는 별명을 허용하는 쉘이 많지 않음) 다음과 같이 작성하십시오.
\cd dir
당신은 당신의 cd
별칭이 대체되지 않도록하고 있습니다 .
즉, 명령 이름 또는 그 일부를 인용하는 쉘 키워드로 간주 할 수없는 (키워드는 물건이 좋아하는 것 while
, for
, if
, {
... time
의 키워드입니다 일부 에만 쉘), 그리고 당신이 그것을 가질 수있는 별칭을 우회 .
그러나 그것은에서 실행 파일에 해결하려면 해당 명령을 강제하지 않는 $PATH
명령이 여전히 사이에서 먼저 검색되고, 기능 (당신이 수행하여 해결할 수 있습니다 command time cmd...
) 및 내장 명령 이 수행하여 해결할 수 있습니다 ( env time cmd...
내가 알고하지 않습니다하지만, 내장 time
명령 이있는 쉘 ).
인용은 또한 일부 쉘에서 typeset
/ declare
/ export
/ local
... 패밀리 의 특수 내장 동작에 영향을 줄 수 있습니다 . 로컬 변수 할당에 따옴표가 필요합니까?를 참조하십시오 . 자세한 내용은.