본문 바로가기
프로그래밍/리눅스

리눅스(Linux) &>와 2>&1 차이점에 대해서

by bantomak 2025. 2. 10.
반응형

&> 와 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

댓글