본 강좌는 인프런에서 있는 생활 코딩 리눅스 강좌를 정리한 문서입니다.
IO Redirection 이라는 주제이다.
Input(입력), Output(출력) , Redirection(방향을 바꾼다)
현재 디렉토리에 목록을 출력해보자,
ls -al 명령어를 치면 나온다.
그러면 쭉 화면에 파일 목록이 나온다. 그렇다면 이런 파일 목록을 화면에 통해서 보는 것이 아니라 파일에 넣고 싶으면 어떻게 해야할까? 기본적으로는 vi 편집기를 사용해서 붙여 넣기하는 방법이 있지만, 번거롭다.
ls -l > result.txt
라고 하면 아무런 결과를 출력되지 않고 출력된 결과가 result.txt파일에 저장되어있다.
출력되는 방향을 다른 곳으로 돌려 파일에 저장하는 것이다. 이런것을 redirection이라고 한다.
이러한 구조를 잘 보여주는 것이다.
standard output은 기본적으로 프로그램을 실행한 결과가 모니터에 출력이 되는 것이다.
이런 출력방향을 파일로 바꿀 수 있다. 이렇게 하기 위해서는 Redirection을 보여주는 > 기호를 사용하고 뒤에는 파일 이름을 사용한다.
standard error 어떤 프로그램을 실행시키면 프로세스가 출력을 2가지 결과물로 한다. 하나는 standard output, 하나는 standard error이다.
그래서 > 을 사용해도 에러가 뜨면 standard error가 뜨기 때문에 에러가 파일에 저장되지 않는다. 여기에서 하나 확인할 것은 standard output은 > 앞에 1이 생략되어 있다. 1> 이렇게
standard error은 2>라고 생략 되어 있다.
조금 복잡하게 가보자
rm rename2.txt 1>result.txt 2>error.log
이 명령어는 rm rename.txt 라는 프로그램을 실행했을 때 나온 결과를 standard output에 result.txt에 저장할 수 있고
에러가 난다면 error.log에 내용을 저장할 수 있다.
프로그램과 프로세스에 대한 개념이 필요하다.
여기에서 말하는 프로그램은 하드웨어에 저장되어 있는 프로그램 코드를 의미하고 프로세스는 프로그램이 실행 되고 있는 상태를 프로세스라고 한다.
하나의 input과 2개의 output이 있다.
이번에는 statndard input이 어떤 것인지 확인해보자.
cat을 그냥 치고 사용자가 키보드로 정보를 입력하면 내가 입력한 값이 화면에 출력이 된다.
그래서 standard input 은 사용자가 키보드로 입력한 값으로 보면 되겠다. standard input은 실용적이지 않아 간단하게 확인하는 것이 좋다.
기본적으로 유닉스 계열의 시스템에서 프로세스는 standard input, standard ouput, error가 있다.
이러한 위에 나와있는 사진의 형국을 IO stream이라고 한다. 데이터가 흘러들어가서 데이터가 흘러나온다 라는 표현으로 사용하는 것이다.
이번에는 IO Redirection의 악세서리와 같은 기능이다.
>> 가 두개이면 덧댄다, 더한다라는 뜻이다.