원 안에 있는 과정이 프로세스 즉 프로그램이 진행하는 과정이라고 생각하면 쉽다.
예를들어 ls, pwd, mkdir와 같은 명령어가 실행되면 프로세서라고 한다.
이 프로세서는 입력과 출력이 있다.
예를들어 ls -al이라는 명령어를 작성하면
ls는 프로세스,
-al은 input이며 구체적으로는 Command-line Argument라고 한다.
위의 명령어를 작성하고 엔터를 누르면 출력 결과가 나타나는데 이것이 standard output이다.
이 프로그램 출력 결과가 곧바로 모니터에 출력되는데 이 결과를 모니터가 아니라 다른 파일로 저장하는 작업을 redireaction이라고 한다.
redireaction하는 방법은 다음과 같다.
Output
ls -l > result.txt
> (파일이름) 을 진행함으로써 결과가 모니터로 출력되지 않고 .txt파일에 저장된 것을 확인 할 수 있다.
위의 작업은 명령어가 성공적으로 인식을 하고 진행이 되었지만 만일 잘못된 프로세서, 즉 에러출력은 standard error라고 한다.
예를들어 없는 파일을 삭제하면 다음과 같은 실행결과가 모니터에 출력된다.
이렇게 한 다음 에러 화면을 다른 파일로 저장하기 위해 다음과 같이 작성하면 어떻게 될까?
예상했던 바와 달리 에러화면이 파일에 저장되지 않는다.
이 사실로 알 수 있는 것은 에러가 출력되는 것은 standard output이 아니라 standard error이기 때문에 에러화면을 단순 > 로 처리되지 않는다는 것이다.
원하던 바와 같이 에러화면을 파일에 저장하고 싶다면 다음과 같이 작성하면 된다.
rm error.txt 2> error_result.log
조금 더 응용해서 output과 error를 알아서 실행되게 하는 방법도 있다.
다음과 같이 명령어를 작성하면 output은 result.txt로 저장, error는 error.log에 저장한다는 의미이다.
rm error 1>result.txt 2> error.log
결과를 확인하면 result.txt에는 아무 것도 없는 반면
error.log는 결과가 error.log에 저장된 것을 알 수 있다.
'리눅스' 카테고리의 다른 글
[리눅스] 디렉토리 구조 & 파일찾기 (0) | 2022.01.26 |
---|---|
[리눅스] 쉘 스크립트 맛보기 (0) | 2022.01.25 |
[리눅스] 패키지 매니저(apt, wget, git) (0) | 2022.01.22 |
[리눅스] 에디터 편집하기(nano) (0) | 2022.01.20 |
[리눅스] 에서 C언어 다루기(코드작성, 컴파일, 디버깅) (0) | 2021.08.16 |