내가 잘못 입력 | \ (백 슬래시)와 같은 (바)이 같은쉘 명령의 의미 (백 슬래시 및 그렙)
locate abcdef \ grep 2
. 그런 다음 bash를 시작하여 이름에 '2'가 포함 된 모든 파일을 찾습니다.
왜 이런 일이 발생합니까?
내가 잘못 입력 | \ (백 슬래시)와 같은 (바)이 같은쉘 명령의 의미 (백 슬래시 및 그렙)
locate abcdef \ grep 2
. 그런 다음 bash를 시작하여 이름에 '2'가 포함 된 모든 파일을 찾습니다.
왜 이런 일이 발생합니까?
당신의 명령을 locate
명령에 대한 인수로 locate
즉 \ grep 2
후 텍스트의
locate abcdef \ grep 2
만든 나머지는 따라서는 (그렙 전혀 실행하지 못했습니다) 처리를 locate
명령을 시작했다.
백 슬래시는 쉘이 인수의 구분 기호로 해석 한 후에 공간을 이스케이프했습니다. 이제 호출 한 것은 locate
명령입니다. 첫 번째는 abcdef
이고 두 번째는 grep
(선행 공백 포함)이고 세 번째는 2
입니다.
locate
에는 이 포함 된 모든 파일이 나열되어 있습니다. 검색 결과는입니다.
명령은 파일 이름에 2가있는 시스템의 모든 파일을 찾습니다. \는 globbing 문자이므로 NAME by *NAME*
의 암시 적 대체를 비활성화합니다.
locate filename \ grep 2
이 파일 이름을 무시하고 파일 이름
'\'은 globbing 문자가 아닙니다. 'filename', 'grep'(선행 공백 포함) 및 '2'가 'locate'에 대한 세 개의 인수가되도록 다음 공백을 이스케이프합니다. – chepner
+1 그것은 백 슬래시뿐만 아니라하지 않는 무엇을 주목할 필요가에서 2가 파일에 대한 검색을 시작합니다. 두 번째 인수는 'grep'(선행 공백 포함)이며 세 번째 인수는 '2'입니다. – chepner
예 @chepner와 합의했습니다. – anubhava