Peter Ahn
Peter의 우아한 프로그래밍
Peter Ahn
전체 방문자
오늘
어제
  • 전체 (115)
    • 영어공부 (15)
    • 물생활 (9)
    • 독서 (2)
    • 일상 (1)
    • IT 소식 (15)
      • 최신 기술 소식 (10)
      • 보안 소식 (5)
    • 인공지능 (AI) (2)
    • OS (19)
      • Linux (19)
    • Web (0)
      • Vue.js (0)
    • 객체지향 (1)
      • 개념과 원리 (1)
      • 디자인패턴 (0)
    • 프로그래밍 (37)
      • C (14)
      • C++ (3)
      • C# (1)
      • Python (3)
      • Javascript (2)
      • Bash (4)
      • Vim (9)
    • Database (3)
      • DB2 (3)
      • MongoDB (0)
    • 프레임워크 (1)
      • Ionic (1)
    • Cloud (1)
      • AWS (1)
    • 3D Printer (2)
    • 기록보관소 (5)
    • 초대장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • 프로그래밍의 세계에 오신 것을 환영합니다.

인기 글

태그

  • 4차 산업혁명
  • 인공지능
  • 구피
  • 랜섬웨어
  • 생활영어
  • 어항
  • vim 비주얼모드
  • vim
  • bash
  • Linux
  • call by reference
  • C언어
  • 영어표현
  • 리눅스
  • bash shell
  • 영어 표현
  • 구피어항
  • C언어 강좌
  • 하프블랙구피
  • 리눅스 명령어
  • vim 강좌
  • 딥러닝
  • 쉘 프로그래밍
  • 영어 회화
  • 프로그래밍
  • AI
  • C++
  • typescript
  • c강좌
  • 물생활

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Peter Ahn

Peter의 우아한 프로그래밍

[Linux] 재지향(Redirection)에 대한 이해
OS/Linux

[Linux] 재지향(Redirection)에 대한 이해

2018. 6. 5. 23:24
반응형

안녕하세요 피터입니다.

오늘은 리눅스의 I/O 재지향(redirection)에 대해서 설명드리겠습니다.

재지향은 파이프(pipe)와 더불어 리눅스의 명령어들을 훨씬 강력하게 무장시켜주는 역할을 하는 핵심 기능입니다.

마치 그 자체로는 특별한 맛이 나지 않지만 단맛이나 짠맛 같은 다른 맛을 훨씬 강하게 만들어주는 조미료와 같다고 할까요?


파이프는 아래 글에서 자세히 보실 수 있습니다.

[Linux] 파이프(pipe)에 대한 이해



개요

리눅스 쉘은 항상 아래와 같이 표준 입출력을 파일 형태로 열고 있습니다.
  • 표준입력(stdin: 키보드)
  • 표준출력(stdout: 모니터)
  • 표준에러(stderr: 모니터)


기본적으로 프로그램은 연산 결과를 출력 장치(파일, 모니터, 프린터 등)로 내보내는데요. 이 출력되는 데이터를 임의로 다른 장치로 보내는 것을 재지향(redirection)이라고 합니다.


다시 말하면 파일이나 프로그램, 명령어 등의 출력을 낚아채어 다른 파일이나 프로그램, 명령어의 표준 입력으로 보내는 것을 말합니다.


사용법

표준 입출력은 파일 형태로 열려 있다고 말씀드렸는데요. 리눅스에서 열려 있는 파일은 파일 디스크립터(file descriptor)를 할당 받게 됩니다.

  • 표준 입력(stdin) = 0
  • 표준 출력(stdout) = 1
  • 표준 에러(stderr) = 2

이렇게 0, 1, 2 의 파일 디스크립터를 할당받기 때문에 이를 이용해서 재지향을 할 수 있습니다.



> file
표준 출력을 파일로 재지향 합니다. 파일이 없으면 새로 만들고, 파일이 있으면 덮어씁니다.

>> file
표준 출력을 파일로 재지향 합니다. 파일이 없으면 새로 만들고, 파일이 있으면 파일의 끝에 덧붙입니다.

2>&1
표준 에러를 표준 출력으로 재지향합니다. 표준 에러도 표준 출력의 자격으로 보내집니다.

< file
파일로부터 표준 입력을 받도록 재지향합니다.


예제

ex) test.txt 파일의 출력을 test.out 파일로 저장

cat test.txt > test.out

ex) today.log 파일의 출력을 week.log 파일의 끝에 덧붙임

cat today.log >> week.log


ex) cat 명령어의 에러를 표준 출력으로 재지향하고 표준 출력을 out 파일로 재지향

[root@peterdev test]# cat nofile > out 2>&1
[root@peterdev test]# cat out
cat: nofile: No such file or directory

에러가 표준 출력으로 재지향 되었기 때문에 화면에 에러가 출력되는 대신에 out 파일에 기록됩니다.


ex) ls 명령어의 에러를 /dev/null 로 재지향

[root@peterdev test]# ls -xy 2> /dev/null
[root@peterdev test]#

/dev/null 은 특수 파일로 이 파일로 출력된 데이터는 버려집니다.

ls 명령에 xy 라는 잘못된 옵션을 입력하여 에러가 발생하였지만, /dev/null 로 재지향하여 출력을 없애버렸습니다.



 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

반응형
저작자표시 비영리 동일조건

'OS > Linux' 카테고리의 다른 글

[Linux] tail 로 실시간 로그 보기  (0) 2018.06.27
[Linux] cat 파일 내용 출력하기  (0) 2018.06.19
[Linux] chmod 로 파일 권한 변경하기  (1) 2018.06.04
[Linux] ntpdate로 시간동기화 하기  (0) 2018.05.18
[Linux] rdate로 시간동기화 하기  (0) 2018.05.18
    'OS/Linux' 카테고리의 다른 글
    • [Linux] tail 로 실시간 로그 보기
    • [Linux] cat 파일 내용 출력하기
    • [Linux] chmod 로 파일 권한 변경하기
    • [Linux] ntpdate로 시간동기화 하기
    Peter Ahn
    Peter Ahn
    IT 정보 공유, 프로그래밍 지식 공유

    티스토리툴바