[Happy BASH] BASH 프로그램 에 대한 입력 방식 요약

2484 단어
* NIX 환경 에서 내부 명령 이나 외부 명령 (Utility) 은 다음 세 가지 입력 방식 을 지원 합 니 다.
1. 자신 이 제공 하 는 입력 매개 변 수 를 명령 하고 더욱 정확하게 처리 대상 이 라 고 할 수 있 습 니 다. 예 를 들 어 AWK 의 파일 과 같 습 니 다.제어 인자 가 아 닙 니 다.
2. stdIN 에서 입력 합 니 다.
3. 파일 에서 stdIN 으로 재 설정 하여 입력 합 니 다.
2 에 대해 서 는 사용자 가 한 줄 (ENTER 키 가 끝 날 때마다 프로그램 이 출력 합 니 다.3 과 달리 재 설정 조작 자 를 보면 SHELL 은 파일 의 입력 을 stdIN 으로 재 설정 하여 명령 의 표준 으로 입력 하기 때문에 프로그램 에 있어 서 이 과정 은 투명 합 니 다.프로그램 은 파일 의 모든 내용 을 한꺼번에 읽 고 입력 한 다음 에 처리 합 니 다. 파일 에 몇 줄 이 있 든 간 에.
PIPE (채널) 는 한 프로그램의 stdOUT 를 다른 프로그램의 stdIN 에 연결 하 는 방식 을 제공 합 니 다. 그러면 이전 프로그램의 표준 출력, 다음 프로그램의 입력 을 볼 수 있 습 니 다.파이프 로 연 결 된 두 프로그램 은 거의 동시에 실 행 됩 니 다. & 또는 "연 결 된 두 프로그램 과 구별 되 고 표준 출력 은 기본적으로 줄 버퍼 출력 입 니 다. 따라서 이전 프로그램의 한 줄 출력 은 다음 프로그램 에서 표준 입력 에서 한 줄 의 입력 을 볼 수 있 습 니 다.
1 에 대해 서 는 절차 가 특별 하 다.프로그램 이 어떤 입력 인 자 를 필요 로 하 는 지, 프로그램 은 스스로 알 고 있다.* NIX 에서 표준 입력 은 WHITESPACE 를 구분자 로 한다.일반적으로 프로그램 은 하나의 매개 변수 로 처리 되 기 때문에 프로그램 은 N 다 중 입력 매개 변 수 를 가 져 갈 수 있 지만 이것 은 시스템 에 제한 이 있 습 니 다 (getconf ARG MAX).xargs 명령 을 통 해 PIPE 와 함께 프로그램의 출력 을 표준 매개 변수 입력 목록 으로 바 꿀 수 있 습 니 다. 어떤 프로그램 이 표준 매개 변수 목록 을 입력 하면 이런 방식 으로 프로그램 에 매개 변수 입력 을 제공 할 수 있 습 니 다.예 를 들 면
find . -name '*.pl' | xargs 

찾 은 파일 에 줄 바 꿈 문자 가 포함 되 어 있 을 때 find 명령 에 - print 0 옵션 을 추가 하고 모든 출력 끝 을 NULL 로 바 꾼 다음 xargs 명령 에서 - 0 옵션 을 사용 하여 NULL 을 입력 항목 의 구분자 로 사용 해 야 합 니 다.이렇게 하면 모든 입력 을 얻 을 수 있다.xargs 기본 값 은 WHItspace 를 구분자 로 합 니 다.
find ./ -name '*.txt' -print0 | xargs -0 -n 1 cat

또한 - print 0 과 - 0 옵션 의 결합 으로 파일 에 WHITESPACE 가 포 함 된 문 제 를 제거 할 수 있 습 니 다.
txt 파일 을 추가 하면 'a b. txt' 와 'a. txt' 가 2 개 있 습 니 다. find 는 기본적으로 한 줄 의 파일 출력 을 보 여 줍 니 다.
$ find ./ -name '*.txt'
./a b.txt
./a.txt

xargs 에 입력 하면 기본적으로 WHITESPACE 로 구 분 됩 니 다. 예 를 들 어:
$ find ./ -name '*.txt' | xargs -n 1
./a
b.txt
./a.txt
$ find ./ -name '*.txt' | xargs -n 2
./a b.txt
./a.txt
$ find ./ -name '*.txt' | xargs -n 3
./a b.txt ./a.txt

- n 은 입력 한 몇 개의 항목 을 매개 변수 목록 으로 구성 합 니까?따라서 xargs 가 출력 한 매개 변수 목록 에서 다른 명령 을 실행 하면 대부분 실패 합 니 다. 일부 항목 은 WHITESPACE 에 의 해 분리 되 었 기 때 문 입 니 다.
설명 이 필요 한 것 은 어떤 프로그램 이 '-' 를 제공 했다 는 것 이다. option, 표준 입력 에서 입력 인 자 를 가 져 오 는 것 을 지원 합 니 다. 예 를 들 어 AWK 프로그램 과 같 습 니 다.
awk 'print' a.txt -

먼저 a. txt 를 처리 한 다음 에 표준 입력 을 순환 처리 합 니 다.

좋은 웹페이지 즐겨찾기