2013-04-24 6 views
0

< b> c은 입력을 위해 파일 b의 데이터를 사용하여 표준 입력 대신 프로그램 a를 사용하고 프로그램 b의 출력을 파일 c 대신에 작성한다는 것을 이해합니다. stdout.컴퓨터 이해를위한 배관

내가 이해하지 못하는 것은 입력에 파일 b의 데이터를 사용하여 대신 stdin을 프로그램하고 프로그램 a의 출력을 stdout 대신 파일 c에 쓰는 방법입니다.

이 곳에 배치 할 위치는 어디입니까?

나는 stdin에 대해 < b를 가지고 있지만 stdout을 얻는 방법을 설명하지 않습니다.

고마워요!

+1

파이핑은 프로세스의 표준 출력을'|'를 사용하여 다른 표준 입력에 연결합니다. 당신이 가진 것은 방향 전환입니다. 그리고 그것은 C 그 자체와 아무 관련이 없습니다. 그것은 주변 환경의 특징입니다. – paxdiablo

+0

그래서 위에서 쓴 것은 실제로 무엇을 찾고 있습니까? – RightLeftRight12

답변

1

실제로 파이핑이 아니며 입력 및 출력 스트림을 리디렉션합니다.

배관 등과 같이, 하나 개의 프로세스의 표준 출력을 취하고 다른 프로세스의 표준 입력에 부착되어

(이 순서로) (5)까지의 숫자 1을 생성
seq 1 5 | sort -r 

다음으로 정렬 역순으로, 다음과 같은 성적에 따라 :

pax> seq 1 5 
1 
2 
3 
4 
5 

pax> seq 1 5 | sort -r 
5 
4 
3 
2 
1 

순서 :

prog <infile >outfile 
,536,

은 프로세스에서 prog 프로그램을 실행하고 infile파일에서 표준 입력을 가져오고 표준 출력을 outfile 파일로 보냅니다. 하나의 프로세스 만 관련됩니다.

a <b >c 

을 정확히 같이

당신이 사용한다, "는 대신에 표준 입력의 프로그램 대신 표준 출력의 파일 c로 프로그램 A의 출력을 작성하는 입력 파일 b의 데이터를 사용"하는 있다.제 예제에서는 리디렉션 문자 (< 또는 >)와 파일 이름 사이에 공백이 없습니다. >xyzzy은 "xyzzy 파일로 출력 보내기"를 의미하므로이 관계가 명확 해집니다.

a <b> c ("stdin 대신 a를 프로그램하기 위해 파일 b의 데이터를 사용하고 stdout 대신 c 파일에 프로그램 b의 출력을 쓰는 것")에 대한 잘못된 주장은 다음과 같습니다. 별도의 명령 다음 ab 프로그램 사이에 실제 연결

a <b ; b >c 

.

+0

오케이 그게 완벽한 감각을 당신에게 너무 많이합니다! – RightLeftRight12

2

이 작업을 수행해야합니다

a <b> c 

당신이 당신의 질문에서 언급 한 바와 같이. 이것은 당신이하는 일을 의미하지 않습니다. b에 대한 입력으로 b를 입력으로 사용하지 않고 b에 대한 출력으로 c를 사용하지 않습니다. 이것은 b를 a의 입력으로 사용하고 c를 a의 출력으로 사용합니다.

1

이해가 잘못되었습니다.

명령은

a <b >c 

으로 하나의 명령, 즉 a이다. a에 대한 입력은 b 파일이고 출력은 c입니다.

b (또는 c) 명령이 실행되고 있지 않습니다.

간단히 말해서, 명령은 이미 원하는 것을 수행합니다.

+0

정말요? 나는 b> c를 서로 옆에 두는 것이 stdout 대신에 파일 c에 b를 쓰는 것이라고 생각했다 – RightLeftRight12

+0

@ user2127663 네,하지만 그것이 완전한 명령 줄이면 _only_입니다. 리디렉션 작업은 체인 프로그램이 아닙니다. –

+0

오 오케이 완벽한 도움을 주셔서 감사합니다. – RightLeftRight12