Linux에서 입력 및 출력값을 하나의 파일에 저장하고 싶은 순간이 필요할 경우가 있습니다.
그래서 입력 및 출력값을 Redirection(방향을 바꾸다)을 한다라고 표현을 할 수 있겠네요.
실습을 통해서 알아보도록 할까요?
현재 폴더에 존재하는 파일들의 list를 출력을 해본다고 합시다. 아마 아래와 같이 뜰 것입니다.
근데 저희는 파일에 저장하고 싶습니다. 뭐 물론 복사, 붙여넣기도 되겠지만 좀 더 획기적인 방법이 존재합니다. 바로 아래와 같은 명령어를 입력하시면 됩니다.
ls -l > [파일명]
이를 설명하면 ls -l의 결과를 > 기호를 통해서 파일에 redirection을 시킨다는 의미입니다.
직접 한 번 해볼까요?
이제 redirection.txt를 한 번 읽어보도록 합시다.
cat의 경우엔 concatenate의 약자로서 파일의 내용을 터미널에 띄어주는 역할을 합니다.
즉, 저희는 화면으로 출력되는 출력값을 파일으로 돌려서 저장시킨겁니다. 이를 Redirection이라고 합니다.
물론 linux 명령어를 실행했을때, 멀쩡한 출력값이 있을 것이지만, 그 외에 오류도 출력하기도 합니다. 그렇다면 이 에러도 파일에 담을 수 있을까요?
안됩니다 ! 왜 그럴까요?
> 기호는 성공적인 결과값만을 redirection 할 수 있습니다. 즉, Error를 redirection하려면 추가적인 절차가 더 필요합니다. 바로 숫자 2를 > 기호 앞에 붙여주는겁니다.
숫자 2의 의미는 무엇일까요? 바로 error를 redirection해라는 약속입니다. 그렇다면, 1은 언제 붙일까요? 방금 error가 아닌 멀쩡한 출력값을 저장할 때 > 기호를 붙혔지만, 사실 이 기호(>) 앞에 1이 생략이 되어있습니다. 즉, 아래와 같이 써도 무방하다는 것이죠.
ls -l > result.txt # 아래와 같은 명령어입니다.
ls -l 1> result.txt # 1을 붙여도 되고 생략시켜도 됩니다.
그렇다면 이를 섞어서 사용할 순 없을까요? 저희는 명령어를 실행하기 전에 이 명령어가 실행이 제대로 될지 안될지를 정확하게 알고 실행하는게 아니잖아요 !?
rm yumyum.txt 1> result.txt 2> error.log
# rm yumyum.txt > result.txt 2> error.log와 같은 명령어입니다. 굳이 1 안해도 됩니다.
위의 명령어를 입력했을시, 아무 문제가 없으면 result.txt에 출력값이 저장되며, 만약 에러가 발생하면 error.log에 저장이됩니다. 이로서 저희는 어떤 명령어의 출력값(혹은 에러)를 한 번에 관리가 가능해졌습니다.
이상 IO Redirection - output였습니다. ^_^
'Linux > Linux' 카테고리의 다른 글
Linux에서 프로세스 모니터링하기 (0) | 2020.03.13 |
---|---|
Linux에서 파일 찾기, 환경 변수 (0) | 2020.03.11 |
Shell은 무엇일까요? (0) | 2020.03.10 |
명령어로 file을 다운 받기 - wget (0) | 2020.03.08 |
Package Manager (0) | 2020.03.07 |