redirecion과 파일 디스크립터

강지현·2024년 11월 5일

Linux 운영체제 (1주)

목록 보기
9/13
post-thumbnail

Redirecion (리다이렉션)

  • 리눅스에서 출력 결과를 특정 위치로 보내거나 입력을 특정 위치에서 받는 기법

  • 보통 터미널 화면에 결과를 출력하거나 키보드로 입력을 받지만, 리다이렉션을 사용하면 이를 파일이나 다른 프로그램으로 전환할 수 있다.

리다이렉션 기호

  • > : 표준 출력을 지정된 파일로 보낸다. 파일이 이미 존재하면 덮어쓰기를 한다.

  • >> : 표준 출력을 지정된 파일로 보내지만, 기존 내용에 추가한다.

  • < : 표준 입력을 지정된 파일로부터 받는다.

  • 2> 표준 에러를 지정된 파일로 보낸다.

  • cmd1 | cmd2 : 명령의 표준 출력을 다른 명령의 표준 입력으로 전달하기 위해 사용하는 기호이다.

파일 디스크립터란?

  • 실행 중인 프로세스가 파일을 참조하기 위해 사용하는 숫자이다.

  • 리눅스에서는 모든 것을 파일로 취급하기 때문에 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 역시 파일로 간주되며 각각 0, 1, 2의 파일 디스크립터를 가지고 있는다.

    • stdin : standard input (0) : 입력

    • stdout : standard output (1) : 정상 결과 출력

    • stderr : standard error (2) : 오류 내용 출력 (출력은 동일하나, 정상 출력과 오류 출력을 구분)

예시

  • ~$ find / -name "*.txt" 1>& a.txt

    • 시스템 전체에서 .txt 확장자를 가진 파일을 찾아서 그 결과를 a.txt 파일로 리다이렉션 한다.

    • 1>&는 표준 출력(디스크립터 1)을 a.txt로 보내는 것을 의미한다.

  • ~$ ls -al -KnockOn 1> b.txt 2> a.txt

    • 현재 디렉터리의 상세 리스트를 보여주는 ls -al 명령어의 결과를 b.txt로 보내고, 만약 에러가 발생한다면 그 에러 메시지를 a.txt로 보낸다.

    • 1>는 표준 출력을, 2>는 표준 에러를 의미한다.

    • 리다이렉션 > 와 파일 디스크립터 1로 지정해서 명령어의 실행 결과를 파일로 저장하도록 지정한다.

    > 하나만 사용했을 경우 기본값인 1> 과 결과가 동일하다.

  • ~$ ls -knockOn > c.txt 2>&1

    • ls 명령어의 결과를 c.txt로 보내고 표준 에러(2)도 표준 출력(1)과 같은 위치로 보낸다

    • 즉, 명령어 실행 시 발생하는 모든 출력과 에러 메시지가 c.txt에 기록된다.

profile
시작!!

0개의 댓글