반응형
&> 와 2>&1의 차이점
Bash에서 &>와 2>&1은 둘 다 표준 출력(stdout)과 표준 에러(stderr)를 같은 위치로 리디렉션 하는 기능을 한다.
하지만 표현 방식과 동작 방식에서 미묘한 차이점이 존재한다.
&> 사용법
command &> output
- 표준 출력(stdout)과 표준 에러(stderr)를 동시에 output 파일로 쓴다.
- 간단한 문법으로 표준 출력과 표준 에러를 하나의 파일에 리디렉션(Redirection)
- Bash 4.0 이상에서 지원하는 문법
&> 실제 사용 예제
ls /nonexist &> result
cat result
ping -c 5 www.google.com &> output
cat output
2>&1 사용법
command > output 2>&1
- > 표준 출력(stdout)을 output 파일로 보냄
- 2>&1 표준 에러(stderr = 2)를 표준 출력(stdout = 1)과 동일한 위치로 보냄
- 해당 순서가 반대로 되면 정상적으로 동작하지 않음. 그래서 표준 출력 위치를 지정하고 표준 에러 위치를 지정하도록 하자.
- 2>1이 아니라 2>&1인 이유는, 2>1로 작성하면 표준 출력으로 위치를 지정하는 게 아니라 1이라는 이름을 가진 파일에 표준 에러가 출력되게 된다. 그래서 표준 출력임을 나타내기 위해 &를 붙인다.
2>&1 실제 사용 예제
ls /nonexist 2>&1 result
cat result
2>&1을 입력하면 위에 예제와는 미묘하게 다른 결과값을 얻을 수 있다.
&> vs 2>&1 차이점 정리
- &>는 표준 출력과 표준 에러를 동시에 같은 파일로 보냄
- 2>&1은 표준 에러를 표준 출력과 동일한 위치로 리다이렉션 함. 만약 표준 출력이 파일로 지정되지 않았다면 표준 에러가 터미널 화면에 그대로 표시된다.
ls /nonexist &> result
ls /nonexist > result 2>&1 result
이렇게 작성하면 두 명령어 모두 동일한 결과를 갖게 된다.
함께 읽으면 좋은 글
리눅스(Linux) 리디렉션(Redirection)을 알아보자
리디렉션(Redirection)리디렉션(redirection)의 사전적 의미는 '방향 전환'이다. '스트림을 리디렉션 한다'라고 하면 스트림을 어느 방향으로 보내는 것일까? 정답은 파일이다. 리눅스의 리디렉션은 스
jettstream.tistory.com
'프로그래밍 > 리눅스' 카테고리의 다른 글
리눅스 필수 커맨드라인 툴 stat (0) | 2025.02.12 |
---|---|
리눅스 필수 커맨드라인 툴 find (0) | 2025.02.11 |
리눅스 필수 커맨드라인 툴 grep (0) | 2025.02.10 |
|이 대체 뭐야? 리눅스(Linux) 파이프라인(Pipeline)을 알아보자 (0) | 2025.02.09 |
리눅스(Linux) 리디렉션(Redirection)을 알아보자 (0) | 2025.02.09 |
댓글