입력 리디렉션에서 파일이 있을 때 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.txt
은 1
첫 번째 필드에 사용됩니다. 두 번째 행은 두 번째 필드 B.txt
에 대한 것입니다 . 2
이는 까지 계속됩니다.표준 입력EOF(파일 끝)를 반환합니다.