본문 바로가기

OS/Linux

#06. Standard I/O Redirection

이번 소개에서는 I/O redirection에 대해 소개해드리겠습니다.

명령어를 사용하다보면 출력,입력,에러출력 등등 I/O등이 존재합니다. 이 I/O들의 방향을 바꿔주는 역활이 바로 I/O redirection입니다. 하나하나씩 소개 해드리겠습니다.


1.표준 입력,출력,에러

I/O에는 3가지의 표준이 존재합니다. 표준입력, 표준출력, 표준에러가 있는데요. 이 3가지를 간단하게 숫자 0,1,2로 표기합니다.


0: 표준 입력    기본적으로 키보드로 입력

1: 표준 출력    기본적으로 모니터로 출력

2: 표준 에러    기본적으로 모니터로 출력


> 쓰기    표준출력 방향을 바꿔줍니다.

< 읽기    표준입력 방향을 바꿔줍니다.

>> 추가    쓰기와는 달리 출력할부분에 출력을 추가합니다.(덮어쓰지않습니다)

<< 입력    무엇이 입력되는지 알려줍니다.


1>    (>쓰기와 같은 의미이기때문에 직접 1>이라고 쓰지않습니다)

2>    표준에러 출력방향을 바꿔줍니다.

1>&2    표준출력으로 나오는 출력을 에러출력으로 출력합니다.

2>&1    표준에러로 나오는 출력을 표준출력으로 출력합니다.


redirection부분은 상당히 이해하기 어려운 부분입니다... 예제를 통해 이해를 하고 계속 다른 방향을 시도해보며 이해하는것이 가장 빠릅니다.

몇가지 예를 들어볼테니 조금이라도 이해하셨다면 다른 다양한 방법으로 시도해보세요.


예제)



cat은 cat다음에 오는 경로의 파일의 내용을 출력해주는 기능을 가지고있지요. >을 이용해 cat 표준출력 방향을 전환해보았습니다. 표준출력을 /practice/testFile로 바꾼거지요. 표준입력은 설정이 없었기때문에 키보드가 되어 cat > /practice/testFile을 하고난후 키보드로 아무 내용을 입력 하면 /practice/testFile에 출력이 되는 거지요. 키보드로 아무 내용을 입력후 ctrl + c를 입력하여 입력을 중단할수있습니다.



이번엔 >>을 이용해 출력 내용을 추가 해보았습니다. 



cat의 표준입력을 testFile의 내용으로 방향 전환을 해줌과 동시에 표준출력(추가)는 testFile2로 해보았습니다. 기존의 testFile2의 내용은 위에 보이듯이 3줄만 존재하지만 cat < /practice/testFile >> /practice/testFile2로 출력내용을 추가하니 6줄로 늘어나있네요.



/practice라는 디렉토리엔 file.으로 시작하는 파일이 총 5개가 있는것이 보입니다.

이번엔 find명령어로 file.으로 시작하는 파일들을 찾아 경로들을 found라는 파일에 출력해줌과 동시에 에러가 뜬다면 에러는 /dev/null(일명 에러들을 모으는 쓰레기통)로 보냅니다.


>을 이용해 표준출력 방향을 found라는 파일로 바꾸고 2>를 이용해 에러 표준출력을 /dev/null로 바꾼것이지요.



/practice/found5라는 파일은 존재하지가 않죠. 일부러 cat /practice/found5를 한후 에러를 뜨게합니다. 하지만 표준출력은 /practice/found1으로 되어있지만 2>&1으로 인해 표준출에는 에러들이 출력되게 되네요. cat /practice/found1을 해보니 에러의 내용이 출력되네요!


주로 많이 쓰는 상황들을 예제로 들어보았습니다. 이해가 안가시는 부분은 여러번 시도해보시길 바랄께요^^


2.파이프(pipe, |)

한 명령어의 출력을 중간 파일 없이 다른 파일의 입력으로 보내는 기능

기호는 shift + \입니다.



ls -l를 처서 /root디렉토리가 포함한것들을 살펴볼수있죠. 이 목록들을 | 를 이용해 cat -n의 입력으로 보내 보았습니다. cat -n 은 입력받은것을 행번호를 표시하여 출력하는 기능입니다. ls -l의 출력을 cat -n에 보내니 ls -l 의 목록에 행번호가 표시되어 출력이되네요.



이번소개는 여기서 마치도록하겠습니다. 이번 소개는 아주 헷갈리는 부분이 많으니 천천히 보시며 확실히 구분하며 이해하시길 바랄께요^^

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

#08. grep/egrep, awk  (0) 2012.09.12
#07. 정규표현식(Regular Expression)  (0) 2012.09.11
#05. shell, 변수  (0) 2012.09.10
#04. Vim Editor  (0) 2012.09.09
#03. Linux의 기초명령어  (0) 2012.09.08