1. pipe('|')와 redirection('>')의 차이
공통점 : output을 이용하여 다른 동작을 수행함
차이점
pipe : output을 다른 프로그램의 입력으로 넘길 때 쓰임
redirection : output을 파일로 저장할 때 쓰이고 다른 스트림으로 넘길 수도 있음
※ 스트림 : 한 커맨드 내에서의 흐름
다른 스트림으로 넘기는 예시를 설명하고자 한다.
아래 명령어는 file0 이라는 파일을 file1이라는 이름으로 다시 저장(복사)하는 동작을 수행해보고, 에러가 생긴다면 error.log라는 파일을 생성해서 에러 내용을 넣으라는 명령어이다. 오류가 발생하면 뒤의 스트림으로 넘기는 것이다.
"2>"는 에러처리용 redirection이다. 에러는 표준 출력이 아닌 표준 에러에 속하기 때문에 2>라고 따로 명시해야 한다.
file0이라는 파일이 애초에 없었기 때문에 에러가 발생했으며, 그 에러 로그가 error.log파일에 저장된 모습을 볼 수 있다.
2. 출력 버리기(/dev/null)
쓰레기통 경로인 /dev/null에 redirection을 하면 출력도 파일저장도 되지 않는다.
특정 명령어를 실행 후 출력이 필요없는 경우 이 방법을 쓰면 된다.
간단한 예시를 들어보기로 한다.
(1) ls -al > /dev/null
디렉토리에 있는 파일 목록이 출력되지 않는다. 표준 출력을 막는 것이다.
(2) cat file0 > file1 2> /dev/null
file0 이라는 파일을 file1이라는 이름으로 다시 저장(복사)하는 동작을 수행하고, 에러가 나도 아무런 출력도 하지않는다.
표준 에러 표시를 막는다.
(3) cat file0 > file1 > /dev/null 2>&1
위와 결과는 같다.
"2>&1" 은 표준 에러를 표준 출력으로 redirection한다는 뜻인데, 표준 출력으로 바뀌어도 결국은 쓰레기통으로 버려지기 때문에 표준 출력과 표준 에러가 모두 표시되지 않는다.
'Linux' 카테고리의 다른 글
[Linux] 디렉토리 구조 / Process (0) | 2021.03.19 |
---|---|
[Linux] Kernel / Shell / Shell script (0) | 2021.03.18 |
[Linux] cat의 여러 용도 / grep (0) | 2021.03.16 |
[Linux] wget으로 파일 다운로드 / git (0) | 2021.03.16 |
[Linux] sudo / package manager / nano 파일 편집기 (0) | 2021.03.15 |
댓글