기초 물방울/리눅스&VM

리눅스(Linux)공부기록 리디렉션과 파이프라인

Weeding 2022. 4. 6. 00:03
반응형
SMALL

 

리디렉션 

 

$ ls 

----------------------

----------------------

$ _

 

방향을 바꾸는것,

화면상의 출력될 무언가를 file로 저장을 하거나

fid로 보낼 수도 있고, 연결을 해줄수도 있음.

출력 내지 입력의 방향을 바꾸는 작업

 

 

 

 

출력 리디렉션: >

  • 화면의 출력될것을 다른곳(file)으로 보내는것.
  • [n]>[I]word        << 대괄호는 입력해도되고 안해도됨
  • ex) ls > filename / ls >| ''''
  • 스트림을 대상 파일에 저장
  • 표준 출력 스트림 번호 : 1
  • 표준 에러 스트림 번호 : 2
  • 생략 시 표준 출력
  • 대상 파일이 존재하는 경우 덮어쓰기
  • noclobber 옵션 설정 시 덮어쓰기 시도 시 에러 발생
  • >| 사용시 noclobber 옵션 설정 여부와 관계없이 덮어쓰기 성공

 

 


추가 모드 출력 리디렉션: >>

 

  • [n]>>word
  • 스트림을 대상 파일 끝에 저장
  • 표준 출력 스트림 번호 : 1
  • 표준 에러 스트림 번호 : 2
  • 생략 시 표준 출력

 


파일 디스크립터로 리디렉션 : >&

  • [n]>&[FD]
  • 어떠한 스트림을 또 다른 스트림으로 리디렉션
  • >과 동일하지만 '대상 파일' 대신 '대상 파일 디스크립터' 지정
  • 표준 출력과 표준 에러를 한꺼번에 출력하고 싶을 때 자주 사용

 

표준 출력 및 표준 에러 동시 리디렉션: &>

  • &>word
  • 파일 디스크립터 리디렉션 문법이 귀찮고 어렵기에
  • 좀 더 편하게 사용 가능한 커맨드

 

 


 

입력 리디렉션: <

  • [n]<word
  • 부등호가 출력과반대 방향
  • 파일의 내용이 지정된 스트림(n)으로 리디렉션
  • n이 생략되면 표준 입력(fd 0)을 의미

wc

ctrl+D

 


 

Here documents: <<

 

[command] <<[-]DELIM

 

···

DELIM

  • 프로그램의 표준 입력으로 multi-line string 전달
  • 코드 블록의 내용이 임시 파일로 저장됐다가 프로그램의 표준 입력으로 리디렉션
  • DELIM은 다른 단어로 변경 가능(의미상 EOF, END 등)
  • <<- 사용되면 라인 앞쪽의 tab 문자가 제거됨

 


 

Here strings: <<<

  • Here document의 한줄 버전
  • [command] <<< word
  • word는 text가 될 수도 있고 실행된 결과가 될 수 있음.
  • 입력한 무언가의 결과.
  • 사용빈도는 낮은편. (파이프라인에서 커버됨)

 

 


 

파이프라인(pipeline)

  • 표준 스트림을 사용하여 프로그램 간 상호작용
  • 특정 프로세스와 다른 프로세스가 상호 작용 할 수 있는 방법은 여러가지가 있으나
  • A프로세스의 스트림과 B프로세스의 스트림을 서로 연결해줌
  • ex) A프로세스의 SIDOUT을 B프로세스의 STDIN과 연결이 가능.

 

  • : | 
  • command1 [ | command2 ] ...
  • = 앞에 커맨드의 표준 출력이 뒤에 커맨드의 표준 입력으로 들어간다라는 것
  • = command1의 표준 출력이 command2의 표준 입력으로 연결됨
  •  
  • command1 [ |& command2 ] ...
  • command1의 표준 출력과 표준 에러가 command2의 표준 입력으로 연결됨

 

  • 각 command는 sub-shell에서 실행됨
  • 전체 파이프라인의 exit status는 마지막 실행 커맨드의 exit status임
  • pipefail 옵션이 설정되어 있다면 실패한 커맨드가 존재하면 실패로 처리됨

 

 

 

 

 

 

반응형
LIST