강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급강좌 : 리다이렉션 redirection

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 : 리다이렉션 redirection

 

리다이렉션(redirection)

방향 재지정(Redirection : 리다이렉션)이란 표준 입력이나 표준 출력을 꼭 키보드나 터미널로 하는 것이 아니라 임의로 방향을 바꿔 키보드가 아닌 파일로부터 입력을 받거나, 터미널로 출력하는 것이 아니라 파일로 출력하는 것을 말한다.

 

이러한 방향 재지정에는 표준 입력, 표준 출력 및 표준 에러의 3가지의 파일 서술자가 있다.

 

 

 

 

 

 

표준 출력의 변경

표준 출력을 변경할 때는 > 또는 >>를 사용한다.

 

 

 

 

“cat > test”라는 명령을 예로 들어 알아보자. 이것은 임의의 파일을 작성할 때 사용할 수 있다.

 

 

 

 

원래 cat 명령은 표준 입력인 키보드로부터 입력받은 내용을 표준 출력인 터미널로 보내는 명령인데, 이 경우는 표준 출력을 터미널이 아닌 test라는 파일로 변경한 경우이다(표준 입력은 그대로 키보드이다). , 키보드에서 입력한 내용이 터미널(화면)에는 표시되지 않고 test 파일 속으로 입력되어 저장된다(입력을 모두 마치면 ‘<Ctrl> + C’를 눌러서 cat 명령을 종료한다).

 

 

 

 

 

[freekgb@localhost ~]$ cat > test

이건 테스트입니다.

리눅스 커널은 자유롭게 복제, 수정 및 배포가 가능합니다.

[freekgb@localhost ~]$ ls

public_html test Mail ftp1.png

[freekgb@localhost ~]$ cat test

이건 테스트입니다.

리눅스 커널은 자유롭게 복제, 수정 및 배포가 가능합니다.

[freekgb@localhost ~]$

 

 

 

 

 

그런데 “cat > test” 명령에서 만약 test라는 파일에 어떤 내용이 들어 있었다면 그 내용은 지워지고 새로운 내용이 들어가게 된다.

 

 

 

 

이런 경우를 방지하려면 기존 내용은 그대로 두고 기존 내용의 다음에 새롭게 추가되는 형식으로 명령을 주어야 하는데, 이때에는 > 가 아닌 >>를 사용하면 된다.

 

 

 

 

 

[freekgb@localhost ~]$ cat >> test

리눅스 커널은 GNU GPL에 따라 배포됩니다.

 

 

 

 

 

[freekgb@localhost ~]$ cat test

이건 테스트입니다.

리눅스 커널은 자유롭게 복제, 수정 및 배포가 가능합니다.

리눅스 커널은 GNU GPL에 따라 배포됩니다.

[freekgb@localhost ~]$

 

 

 

 

 

표준 입력의 변경

표준 입력을 바꿀 때는 < 를 사용한다.

 

 

 

 

“cat < test”라는 명령을 예로 들어 알아보자. 이 경우 표준 출력은 그대로 터미널이며 표준 입력은 키보드가 아닌 test라는 파일이다.

 

 

 

 

, 위의 예와는 반대로 표준 출력은 그대로 터미널로 하고 표준 입력을 키보드가 아닌 파일로 하는 경우이다.

 

 

 

 

이에 따라 그 결과로서 test 파일의 내용이 터미널에 표시된다.

 

 

 

 

이는 보통 파일의 내용을 볼 때 사용하는 “cat test”(test 파일의 내용을 보는 명령)와 결과는 동일하다.

 

 

 

 

 

 

 

 

 

[freekgb@localhost ~]$ cat < test

이건 테스트입니다.

리눅스 커널은 자유롭게 복제, 수정 및 배포가 가능합니다.

리눅스 커널은 GNU GPL에 따라 배포됩니다.

[freekgb@localhost ~]$

 

 

 

 

 

표준 에러

 

 

 

 

[freekgb@localhost ~]$ soon

-bash: soon: command not found

[freekgb@localhost ~]$

 

 

 

 

 

위 예를 보면 soon이라는 명령을 내렸는데 그런 명령은 찾을 수 없다고 한다.

 

 

 

 

이와 같은 에러 메시지를 표준 에러(Standard error)라고 한다.

 

 

 

 

이런 에러 메시지를 화면상에는 보이지 않고 error라는 파일로 저장하려고 할 경우 아래와 같이 하면 된다.

 

 

 

 

 

[freekgb@localhost ~]$ soon 2> error

[freekgb@localhost ~]$ cat error

-bash: soon: command not found

[freekgb@localhost ~]$

 

 

 

 

 

위와 같이 하면 만약 지금 실행한 명령이 에러가 발생한 명령이라면 error라는 파일에 에러 메시지가 저장되어 보이고, 반대로 에러가 발생하지 않는 옳은 명령인 ls를 기입하면 에러 메시지는 보이지 않을 것이다.

 

 

 

 

에러 메시지가 발생하지 않기 때문에 파일이 새로 생성되기는 하지만 저장되는 정보는 없는 것이다.

 

 

 

 

 

 

위 예에서 2가 표준 에러를 의미하는 파일 기술자(File descriptor)이다.

 

 

 

 

‘0’은 표준 입력, ‘1’은 표준 출력을 의미한다.

 

 

 

 

따라서 위의 예에서 2>와 같이 기술하지 않는다면, 에러 메시지가 파일로 입력되지 않고 터미널상에 출력되고 생성된 파일에는 정보가 없는 상태가 된다.

 

 

 

 

그리고 2>로 기술한 상태에서 정상적인 명령을 내리면, 표준 에러가 출력되지 않고 명령의 결과가 터미널상에 출력되고, 2>는 표준 에러의 입력을 받아서 파일로 입력하므로 생성되는 파일에는 정보가 없는 상태가 된다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,033 명
  • 현재 강좌수 :  35,783 개
  • 현재 접속자 :  165 명