배우는 내용 : [ 입력 리다이력션 "<", 출력 리다이렉션 ">", 리다이렉션 명령조합]

표준 입력의 리다이렉션

입력 리다이렉션 기호 "<"

- 키보드 대신에 파일을 표준입력으로 연결하는 방식

- 표준 입력은 보통 키보드 입력

 

▷ cat  명령어 예

    - 표준 입력으로 입력한 내용을 읽어서 그대로 표준 출력에 출력하는 명령어

$ cat
Hello  <-  키보드 입력
Hello  <- 출력
       <- control + d 이용하여 종료
$

 

▷ 파일을 표준 입력으로 연결한 예

$ cat < /etc/crontab 
# 내용 출력 ....
# ...

 

◎ 입력 리다이렉션 과 입력 파일 지정

cat < /etc/crontab 입력 리다이렉션 사용 표준 입력을 그대로 읽어서 출력, cat 명령어의 기본 방식
cat /etc/crontab 인자로 파일 지정 편의를 위해 cat 명령어가 특별히 제공하는 방식

 
 리눅스 명령어를 만들게 되는 경우

표준 입력을 읽어 들이는 방식을 반드시 지원하도록 구현을 해야 다른 프로그램과 연동하여 더 강력한 기능을 수행 가능

 

표준 출력의 리다이렉션

표준 출력 기호 ">"

 

▷ ls 명령어의 결과를 파일에 저장

$ ls -l / > list.txt 
$ cat < list.txt

 

표준 에러 출력

프로그램의 에러메세지를 출력하기 위해 사용

 

▷ ls 명령어의 에러 메시지 → 표준 에러 출력에 출력

$ ls /xxx
ls: cannot access '/xxx': No such file or directory

 

▷ ls 명령어의 에러 메시지 → 리다이렉션 방식1 ">"

$ ls /xxx > list.txt
ls: cannot access '/xxx': No such file or directory

  - 에러 메세지는 리다이렉션을 하여도 출력됨

 

▷ ls 명령어의 에러 메시지 → 리다이렉션 방식2 "2>"

$ ls /xxx > error.txt
$ cat < error.txt
ls: cannot access '/xxx': No such file or directory

 -  에러가 출력되지 않고 error.txt 에 저장됨

 

응용 : 표준 출력 과 표준 에러 출력 을 한번에 저장

각각 다른 파일에 저장 

명령어 (실행하고 싶은내용) > (표준출력을 저장할 파일명) 2> (표준에러를 저장할 파일명)

 

$ ls /xxx > list.txt 2> error.txt
$ cat list.txt # 실행된 결과가 없으므로 출력되는 것이 없음
$ cat error.txt
ls: cannot access '/xxx': No such file or directory

 

 한 파일에 저장

$ ls /xxxx > result.txt 2>&1

   1. 표준 출력을 result.txt 로 리다이렉션

   2. 표준 에러 출력 2 을 리다이렉션 > 한다 표준출력 &1 로 

   3. result.txt 표준 출력 과 표준 에러가 저장됨

표준 입력  0 표준 출력  1 표준 에러 출력 2

 

 

 

리다이렉션을 위한 기호와 의미

기호 의미
< FILE 표준 입력을 FILE 로 변경
> FILE 표준 출력을 FILE 로 변경
>> FILE 표준 출력의 출력을 FILE 의 끝에 추가
2> FILE 표준 에러 출력을 FILE 로 변경
2>> FILE 표준 에러 출력을 FILE 의 끝에 추가
> FILE 2>%1 표준 출력과 표준 에러 출력을 FILE 로 변경

 

+ Recent posts