스크립트에서 괄호와 쉼표가 표시되면 혼란 스럽습니다. 나는 그것이 그것을 어떻게 만드는지 정말로 이해할 수 없다. 예를 들어괄호와 쉼표는 찾기에서 무엇을합니까?
find /work \(-fprint /dev/stderr \) , \(-name 'core' -exec rm {} \; \)
질문 : - 브라켓 - 무슨 일을합니까? - 쉼표는 무엇입니까? -이 매뉴얼은 bash에서 괄호와 쉼표 키워드에 대한 정보를 얻을 수 있습니다.
스크립트에서 괄호와 쉼표가 표시되면 혼란 스럽습니다. 나는 그것이 그것을 어떻게 만드는지 정말로 이해할 수 없다. 예를 들어괄호와 쉼표는 찾기에서 무엇을합니까?
find /work \(-fprint /dev/stderr \) , \(-name 'core' -exec rm {} \; \)
질문 : - 브라켓 - 무슨 일을합니까? - 쉼표는 무엇입니까? -이 매뉴얼은 bash에서 괄호와 쉼표 키워드에 대한 정보를 얻을 수 있습니다.
괄호/괄호는 해당 조건 자 중에서 우선 순위를 적용하기 위해 find
에 사용됩니다. 쉼표는 GNU find
의 연산자로 선행 술어와 뒤에 오는 술어를 모두 평가하지만 첫 번째 술어의 결과는 무시합니다.
-fprintf /dev/stderr
-name 'core' -exec rm {} \;
첫 번째는 표준 오류에 찾은 파일의 이름을 인쇄 : 명령
find /work \(-fprint /dev/stderr \) , \(-name 'core' -exec rm {} \; \)
에서 두 (화합물) 술어가 있습니다. 두 번째 파일은 이름이 core
인 파일 만 제거합니다. 쉼표가 없으면 제거되는 파일의 이름 만 표준 출력에 기록됩니다. 즉, 쉼표는 복수 술어에 대해 수행 된 암시 적 and
을 겹쳐 씁니다. (-fprintf
주변의 괄호는 단일 술어로 구성된 그룹을 구성하기 때문에 선택 사항 일 수 있지만 긍정적이지는 않습니다.)
당신이 말했듯이, 첫 번째는 발견 된 파일의 이름을 표준 오류로 출력 한 다음 목록을 화면에 표시하기 위해 어떤 키워드를 인쇄합니까? – taymedee
절대적으로 긍정적으로 화면에'/ dev/tty'를 써야합니다. 그러나 보통'/ dev/stderr' (에러)이나'/ dev/stdout' (실제 출력)에 쓰고 명령의 사용자가 그 파일 디스크립터가 터미널을 가리켜 야하는지 결정하게하거나 다른 파일이나 파이프 라인. 시작할 때 셸의 표준 출력과 오류는 터미널/화면에 바인딩되며 명시 적으로 변경하지 않는 한 셸에서 시작한 모든 프로그램은 동일한 파일 설명자를 상속합니다. – chepner
그것은 당신의 훌륭한 설명을위한 감사, 감사합니다 :) – taymedee
(
및 )
은 bash에서 하위 쉘에서 하나 이상의 명령을 실행하는 데 사용됩니다. 자세한 내용은 http://www.tldp.org/LDP/abs/html/subshells.html에서 확인할 수 있습니다.
그러나 게시 한 명령에서는 bash
에 의해 사용되지 않습니다.이 명령은 이스케이프 처리되므로 (
대신 \(
을 사용하고 있습니다. 결과적으로 (
및 )
이 인수로 find
으로 전달됩니다. 또한 bash
에 특별한 의미가 있기 때문에 이스케이프 처리됩니다. 지금까지 find
에 관한 한, 다음 인수를 본다 :
/work (-fprint /dev/stderr) , (-name 'core' -exec rm {} ;)
쉼표 (,
)는 find
명령의 일부입니다. bash
은 아무 작업도 수행하지 않습니다.
'man bash' ????? – John3136
컴퓨터에서'man find '를 찾으십시오. 또는 [웹 맨 페이지] (http://www.linuxmanpages.com/man1/find.1.php)를 확인하십시오. –
감사합니다. 나는 그것을 들여다 볼 것이다 – taymedee