본문 바로가기

공부/리눅스

리눅스 멀티 리다이렉팅


회사에서 안드로이드 빌드를 하던 중 에러가 발생했을 때

화면에 뿌려지는 메시지들이 워낙 많아서 터미널 창 밖으로 지나가버리는 일이 발생했다.

>(리다이렉팅)를 이용해서 파일에 기록을 하도록 해두면 나중에 파일을 확인 할 수 있으나

빌드 진행과정을 눈으로 확인할 수 없는 단점이 있었다.

그래서 구글링을 하다가 찾아낸 방법이 바로 멀티 리다이렉팅!!!

가령 ls 라는 명령어를 써서 화면에 디렉토리 및 파일 목록을 화면에 뿌려준다고 하면 아래와 같이 입력하면 된다.

$ls

위 명령어의 결과를 파일에 쓰기 위함이 바로 리다이렉팅인데 아래와 같이 >를 이용하면 ls.txt파일에 결과가 기록된다
(대신 화면에는 아무것도 출력되지 않음)

$ls > ls.txt

그럼 ls의 결과를 화면에도 출력하고 파일에도 기록하고 싶다면??

아래와 같이 파이프를 통해 tee명령어로 결과를 전달해주면 된다.

$ls |tee >&1 ls.txt

&1은 표준 출력으로 모니터에 출력하겠다는 의미고 뒤에 적어둔 파일명의 파일에 같은 내용을 기록할 수 있게 된다.

시스템 메시지 등은 위와 같은 방법으로 출력할 수 없는데 출력하고자 한다면 > 앞에 2를 붙여주면 된다.

$ls |tee 2>&1 ls.txt