실제로 전체 출력 데이터가 포함된 파일 이름인 일부 출력 부분을 생성하는 명령이 있습니다. 일반적으로 사용하는 파일 이름을 추출한 cut
다음 다른 프로그램에 전달하고 싶습니다 . 예를 들어 cat
파일 내용이 표시됩니다.
실행 중인 실제 명령을 공유할 수는 없지만 재현성을 위해 다음 ./my-command args
으로 대체할 수 있습니다.echo 1:2:3:4:file.txt
그래서 다음을 시도했습니다.
./my-command args | cut -d : -f 5 | cat
cat
그러나 이는 인수 없이 호출할 때 stdin(내 파일 이름 포함)의 내용을 stdout에 복사하기 때문에 파일 이름만 인쇄합니다 .
cat
이제 명령 흐름을 거꾸로 하고 서브셸을 통해 인수를 전달하여 Bash 문제를 해결할 수 있다는 것을 알았습니다 .
cat `./my-command args | cut -d : -f 5`
이렇게 하면 파일의 내용이 인쇄되지만 호출에 간단한 명령을 추가하여 기본 명령의 출력을 간단히 파이프할 수 없기 때문에 특히 사용자 친화적이지는 않습니다.
cat
표준 입력에서 파일 이름을 가져와 내용을 인쇄하는 유사한 프로그램이 있습니까 ? 아니면 cat
stdin을 매개변수로 처리하는 방법이 있나요 ?
노트
나는 stdin에서 파일 이름을 읽고 cat
내 환경에서 호출하는 bash 함수를 정의할 수 있다는 것을 깨달았습니다. 그러나 출력 데이터를 직접 덤프하는 이 기술은 최종 사용자 문서에 포함되어야 하며 간단한 쉘 독립적 접근 방식이 매우 선호됩니다.
답변1
더 많은 조사를 한 후에 나는 이것이 정확히 사실이라는 것을 깨달았습니다.xargs
을 위해 설계:
./my-command args | cut -d : -f 5 | xargs cat
이는 stdin의 출력을 cat
실제 파일 이름에 대한 호출로 변환하여 파일 내용을 인쇄합니다.