명령 사용법은 무엇입니까 quote
? /bin
폴더에 대한 실행 파일이 아니며 Bash 내장 파일에서 찾을 수 없습니다. echo
명령과 같은 첫 번째 매개 변수 만 인쇄하고 더 이상 아무것도 인쇄 하지 않는 것 같습니다.
답변
무엇입니까?
나는이 명령이 내 껍질 ( 물고기, 대화 형 대화 형 쉘 ) 에서 작동하지 않는 것을 알았습니다 . bash에서만 작동하는 것 같습니다 (Ubuntu의 기본값).
chocobai@pc ~> /bin/bash
chocobai@pc:~$ quote asdf
'asdf'chocobai@pc:~$
chocobai@pc:~$ type quote
quote is a function.
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
무엇을합니까? 무엇을 위해 사용할 수 있습니까?
따옴표를 추가하지만 개행은 추가하지 않습니다. 또한 bash에 적합한 방식으로 작은 따옴표를 이스케이프 처리합니다. 스크립트에서 변수 또는 다른 종류의 문자열을 인용하는 것이 유용 할 수 있습니다. 예를 들어 공백이있는 경로 / 매개 변수의 경우이가 필요합니다. 이 작업을 수행하는 다른 방법이 있지만
웹에서 문서를 찾을 수 없다는 것이 정말 이상합니다. 그러나 그것이 무엇을하는지는 쉽게 알 수 있습니다.
답변
quote
파일에 정의 된 함수입니다 (여기서는 데비안 시스템에 있지만 우분투에서 동일하다고 생각합니다). /usr/share/bash-completion/bash_completion
그 자체는 /etc/bash.bashrc
Bash가 시작할 때 제공됩니다 .
나는이 기능을 절대로 사용하지 않을 것이다! 쉘이 안전하게 사용할 수 있도록 따옴표를 인용해야하는 경우 다음 printf
과 같이 %q
수정 자 와 함께 사용하십시오 .
printf '%q\n' "Hello my friend I like 'single quotes' as well as \"double quotes\""
실제로 이것은 매우 드물게 사용되지만 사용자가 일반적으로하는 것처럼 상위 수준의 물건에 대한 더 나은 전략이 항상 있습니다. 이것은 quote
우리가 알고 싶지 않은 모호한 것들에 의해 내부적으로 사용됩니다. 이 quote
기능은 공급 업체 / 배포 별 (데비안 전용)이며 아마도 이식성이 없으며 향후 릴리스에서 변경 될 수도 있습니다.
편집하다. 방금 Ubuntu 12.04 시스템을 확인했으며 quote
함수는에 /etc/bash_completion
의해 정의되고 /etc/bash.bashrc
자체적으로에 의해 제공됩니다 /etc/profile
.
이것을 어떻게 결정 했습니까? 약간의 휴리스틱 사용 :
-
있는지 확인
quote
에 나타납니다/etc/profile
:grep '\bquote\b' /etc/profile
아니요. 다음 단계로 가십시오.
-
무엇에 의해 소스 파일이
/etc/profile
있습니까?grep '[[:space:]]\.[[:space:]]' /etc/profile
나는
$i
(이 소스에 대해 소스를 조사해야하지만,이 경우 파일/etc/profile.d/*.sh
이 있고 읽을 수있는 경우) 파일/etc/bash.bashrc
입니다/etc/bash.bashrc
. - 인가
quote
에/etc/bash.bashrc
? 예 / 아니요 등
답변
quote
함수입니다 :
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
이 함수는 bash 초기화 파일 어딘가에 정의되어 있습니다. 보다 정확하게는 Ubuntu 13.04를 사용하는 경우 /usr/share/bash-completion/bash_completion
142 행에서 찾을 수 있습니다 .
다음 명령을 사용하여 확인하십시오.
type quote
그 목적은 분명하다.