입력 리디렉션을 사용한 unix Paste 명령 이해

입력 리디렉션을 사용한 unix Paste 명령 이해

입력 리디렉션에서 파일이 있을 때 Unix에서 붙여넣기 명령의 구현을 이해하려고 합니다.

다음 파일이 있다고 가정합니다.

A.txt:
A
B
C
D

B.txt:
1
2
3
4

UNIX 명령:

paste - A.txt - < B.txt

예상 출력:

1    A    2
3    B    4
     C
     D

이것은 파일을 stdin으로 리디렉션할 때마다 둘 다 -동일한 파일을 공유 한다는 의미입니까 -?(이것을 무엇이라고 합니까?)

출력이 다음과 같은 작업과 다른 이유를 이해하려고 노력 중입니다. 리디렉션된 입력이 방금 교체되었지만 결과가 다르기 paste B.txt A.txt B.txt때문 입니다.-

답변1

문서( man paste)는 다음과 같이 씁니다.

FILE 또는 FILE 이 없으면 -표준 입력을 읽습니다.

-소스 파일로 포함하면 표준 입력(표준 입력)을 읽었습니다. 표준 입력은 쉘에 의해 열리고 파일 설명자 0에 할당되었으며 paste해당 설명자에서 데이터를 읽습니다. 명령 paste자체는 아무것도 열리지 않습니다표준 입력(그렇기 때문에 그럴 수 없습니다 -.) 따라서 이 파일 설명자의 모든 읽기는 공유됩니다.

귀하의 예에서 첫 번째 행 B.txt1첫 번째 필드에 사용됩니다. 두 번째 행은 두 번째 필드 B.txt에 대한 것입니다 . 2이는 까지 계속됩니다.표준 입력EOF(파일 끝)를 반환합니다.

관련 정보