데이터로그😎
[Linux] 2. IO Redirection - output 본문
Unix Process
- Standard Input = 명령어 (예: ls-l)
- Standard Input의 결과물 의 종류 (Output의 종류)
- Standard Output
- 예를 들면, Input으로 ls -l 명령어를 입력했다면 "현재 디렉토리에 위치한 파일명을 출력" 한 것이 output이 된다.
- 기본적으로 모니터에 output이 출력된다.
- Standard Error
- 만약 Input의 명령어가 잘못되었다면? Error가 출력된다.
- Standard Output
Redirection - output
Redirection 이란?
리눅스에서의 리다이렉션은 명령어의 입력이나 출력을 다른 위치로 전환하거나 저장하는 것을 의미합니다. 쉘에서 사용되는 명령어의 입출력을 조절하는 데 사용됩니다. 주로 파일 또는 다른 프로세스와의 통신에 활용됩니다.
1. Standard Output을 redirection 할 때
Standard output을 모니터에 출력하는 것 대신 다른 곳으로 출력되게 하고 싶다면? 즉, 출력 방향을 바꾸고싶다면?
예를 들어, ls -l의 결과물을 모니터에 출력하는 것 대신 file에 출력하게 하고 싶다면 아래와 같은 명령어를 사용할 수 있다.
- > 를 사용하여 redirection할 수 있으며, 1> 도 같은 의미이다.
ls -l > result.txt ls -l 1> result.txt
2. Standard Error를 redirection 할 때
현재 디렉토리에 red1.txt 라는 파일이 존재하지 않는다고 가정해보자.
이 때 만약 rm red1.txt 명령어를 실행하면 당연히 아래와 같은 오류가 난다.
이 때 오류메시지를 result.txt로 저장하고 싶다면 어떻게 할까?
Standard Ouput의 redirection 시에는 > 를 사용하니 >를 사용하여 저장하면 될까?
그렇지 않다. 오류가 난다. 왜냐하면 > 는 1>과 같은 의미이기 때문에 출력 output이 있어야 실행될 수 있다.
그러나 rm red1.txt는 Standard Error를 출력한다. 따라서 이러한 에러를 파일로 저장하려면 2> 를 사용하면 된다.
nano를 통해 확인해보면 result.txt에 에러 메세지가 저장된 것을 볼 수 있다.
3. Standard output & Standard Erorr 둘 다 redirection하기
만약 rm red1.txt 명령어를 실행한 결과, Standard output이 나오면 텍스트 파일로 저장하고 Standard error가 나오면 error.log에 저장하고 싶을 땐? rm red1.txt 뒤에 둘 다 쓰면 된다.
'Data Engineering' 카테고리의 다른 글
[Linux] 4. 디렉토리 구조와 파일 찾기 (0) | 2024.01.15 |
---|---|
[Linux] 3. Shell & Shell script (0) | 2024.01.15 |
[Linux] 1. 리눅스 기초 (0) | 2024.01.14 |
[Spark] Spark SQL에서 날짜 형식 중 년, 월, 일 따로 추출하는 법! (0) | 2023.09.15 |
[Spark] Spark Machine-Learning (0) | 2023.09.15 |