2013-10-24 1 views
2

내가 잘못 입력 | \ (백 슬래시)와 같은 (바)이 같은쉘 명령의 의미 (백 슬래시 및 그렙)

locate abcdef \ grep 2 

. 그런 다음 bash를 시작하여 이름에 '2'가 포함 된 모든 파일을 찾습니다.
왜 이런 일이 발생합니까?

답변

5

당신의 명령을 locate 명령에 대한 인수로 locate\ grep 2 후 텍스트의

locate abcdef \ grep 2 

만든 나머지는 따라서는 (그렙 전혀 실행하지 못했습니다) 처리를 locate 명령을 시작했다.

+1

+1 그것은 백 슬래시뿐만 아니라하지 않는 무엇을 주목할 필요가에서 2가 파일에 대한 검색을 시작합니다. 두 번째 인수는 'grep'(선행 공백 포함)이며 세 번째 인수는 '2'입니다. – chepner

+0

예 @chepner와 합의했습니다. – anubhava

3

백 슬래시는 쉘이 인수의 구분 기호로 해석 한 후에 공간을 이스케이프했습니다. 이제 호출 한 것은 locate 명령입니다. 첫 번째는 abcdef이고 두 번째는  grep (선행 공백 포함)이고 세 번째는 2입니다.

locate에는 이 포함 된 모든 파일이 나열되어 있습니다. 검색 결과는입니다.

0

명령은 파일 이름에 2가있는 시스템의 모든 파일을 찾습니다. \는 globbing 문자이므로 NAME by *NAME*의 암시 적 대체를 비활성화합니다.

locate filename \ grep 2 

이 파일 이름을 무시하고 파일 이름

+0

'\'은 globbing 문자가 아닙니다. 'filename', 'grep'(선행 공백 포함) 및 '2'가 'locate'에 대한 세 개의 인수가되도록 다음 공백을 이스케이프합니다. – chepner