본문 바로가기
Linux

[Linux] Redirection

by RTLog 2024. 3. 14.
728x90
반응형

안녕하세요. RTLog입니다.

 

오늘은 "Redirection"이라는 개념에 대해 작성해보겠습니다. 

Redirection 

Linux에서 Redirection은 명령어의 표준 입출력 스트림을 제어할 수 있는 기능입니다.

 

"표준 입출력 스트림"이라는 용어를 한 번쯤은 들어보셨을텐데요. 

 

Linux 및 Unix 계열 운영 체제에서 표준 입력(stdin), 표준 출력(stdout) 및 표준 오류(stderr) 스트림은 프로그램과 해당 환경 간의 세 가지 기본 통신 채널입니다. 기본적으로 표준 입력 스트림은 키보드와 연결되어 있고, 표준 출력/오류 스트림는은 모니터와 연결되어 있습니다. 따라서, 저희가 입력하는 내용이 키보드를 통해 입력되고, 출력을 모니터로 확인할 수 있는 것이죠. ( *표준 입력은 0번, 표준 출력은 1번, 표준 오류는 2번 스트림으로 분류됩니다.)

Stream

 

 

그렇다면, 프로세스의 입력을 키보드가 아닌 파일로 전달하거나, 프로세스의 출력을 파일로 전달하려면 어떻게 해야할까요? 바로 "Redirection"을 활용하면 됩니다. 

 

* Linux 시스템에서 I/O Device는 File로 취급하여 처리됩니다. I/O Device(File)의 역할을 다른 파일이 대신하도록 제어하는 것이 바로 Redirection 입니다. 

 

표준 출력 재지정

출력을 모니터(터미널)이 아닌, 파일로 재지정해보겠습니다.

  • `>' 연산자
    • 명령의 출력을 파일로 Redirection 하는 데 사용됩니다.
    • 파일이 존재하더라도, 지우고 다시 작성하는 것에 유의해야 합니다.
  • '>>' 연산자
    • '>'와 유사하지만 출력을 덮어쓰는 대신 이어서 작성합니다.
    • 파일이 존재하지 않으면 생성합니다. 

아래는 예시입니다. 이를 활용하여 특정 조건마다 date를 기록한다면, log를 관리할 수 있겠죠?

표준 출력 재지정

파일 내용을 다른 텍스트 파일에 복사하는 추가 예제입니다. 

표준 출력 재지정

표준 오류 재지정

오류 출력 결과를 터미널이 아닌, 파일로 재지정할 수 있습니다.

표준 오류 스트림을 나타내는 2번을 활용하여 '2>' or '2>>' 형태로 명령어를 작성합니다. (공백 없이 작성)

표준 오류 재지정

 

c.f) 표준 출력 스트림과 오류 스트림을 묶어 하나의 파일에 작성하는 방법도 있습니다. '&>' or '&>>' 형태로 작성합니다. 

 

표준 입력 재지정

표준 입력 재지정을 위해서, 반대 방향의 기호를 사용합니다. 

  • `<' 연산자
    • 명령의 입력을 파일 내용으로 Redirection 하는 데 사용됩니다.
  • '<<' 연산자
    • 특정 입력이 입력되면, 입력을 종료하고 입력된 내용을 다시 출력합니다. 
    • 어떤 명령어에, 한 번에 값을 전달하기 위한 방법으로 사용합니다. 

표준 입력 재지정

 

추가 응용

아래와 같은 활용법도 존재합니다.

# 표준 출력을 'output.txt'로, 표준 오류를 'error.txt'로 Redirction
command > output.txt 2> error.txt
# 관심 없는 출력 버리기
command > /dev/null
command 2> /dev/null

 

 

감사합니다. 

728x90
반응형

'Linux' 카테고리의 다른 글

[Linux] Permission  (0) 2024.03.15
[Linux] Pipe  (0) 2024.03.14
[Linux] 인용과 확장 - 인용  (0) 2024.03.14
[Linux] 인용과 확장 - 확장  (0) 2024.03.14
[Linux] 기본 정규 표현식 & Wild Card  (0) 2024.03.13

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });