여기에 '입력'에 대한 몇 가지 다른 참조가 있으므로 먼저 이해하는 몇 가지 시나리오를 제공합니다. 가장 짧은 형태의 질문에 대한 빠른 답변 :
stat testfile < <($1)> outputfile
위의 내용은 테스트 파일에 대한 통계를 수행하고 STDOUT을 취하고 (리디렉션) 다음 특수 함수 (<() 부분)에 포함시킨 다음 최종 결과를 새 파일 (outputfile)로 출력합니다. 파일이 호출 된 다음 bash 내장 (참조 : 새 명령 세트를 시작할 때까지 매번 $ 1)으로 참조됩니다.
귀하의 질문은 훌륭하며이를위한 몇 가지 답변과 방법이 있지만 실제로 귀하가하는 일에 따라 달라집니다.
예를 들어, 루프도 반복 할 수 있습니다. 이것의 일반적인 사용법은 의사 코드 사고 방식에서 다음과 같습니다.
run program < <($output_from_program)> my_own.log
그것을 받아들이고 그 지식을 확장하면 다음과 같은 것들을 만들 수 있습니다.
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
이것은 현재 디렉토리에서 간단한 ls -A를 수행 한 다음 ls -A의 각 결과를 반복하도록 지시합니다 (그리고 여기가 까다로운 곳입니다!) 그 결과 각각에 "thatword"를 grep하고 이전 만 수행하십시오. 실제로 "thatword"가있는 파일을 찾은 경우 printf (빨간색)입니다. 또한 grep 결과를 새로운 텍스트 파일 files_that_matched_thatword에 기록합니다.
출력 예 :
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
index.html
그 모든 것이 단순히 ls -A 결과를 인쇄했습니다. 특별한 것은 없습니다. 이번에 grep 할 무언가를 추가하십시오 :
echo "thatword" >> newfile
이제 다시 실행하십시오.
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
files_that_matched_thatword index.html newfile
Found a file: newfile:thatword
아마도 당신이 현재 찾고있는 것보다 더 지루한 대답 일지 모르지만, 이와 같은 편리한 메모를 유지하면 향후 노력에 훨씬 더 도움이 될 것이라고 믿습니다.
<
(파일에서 왼쪽으로|
입력 ) 또는 (스트림에서 오른쪽으로 입력 )을 통해 파이프 될 수 있습니다 . 차이가 있습니다.