무효 클릭 IP 추적 중...
리눅스

우분투 1> 2> 꺽쇠 무엇일까?

꼬예 2022. 12. 7.

이번 포스팅에서는 리눅스를 사용하다 보면 자주 만나게 되는  > 에 대해 알아 보겠습니다.

 

먼저  ls 명령어를 통해 현재 경로를 기준으로 하위 파일 리스트르 출력해주겠습니다.

 

ls 결과

 

명령어를 치면 터미널에 출력됩니다.

우리는 당연하게 여기지만 이건 디폴트로 화면에 출력되도록 되어 있기 때문에 생기는 상황입니다.

 

그럼 다른 곳에 출력 할 수도 있을까요?

 

1) Standard Output(stdout)

대표적으로 output을 파일 안에 출력을 할 수 있습니다.

 

 ls > test 를 작성해줍니다.

 

ls > test 결과

 

아무 결과도 나오지 않습니다.

이명령어는  ls 를 통해 나오는 output을  test 파일쪽으로 작성해달라는 명령어 입니다.

 

기존에 없던 새로운 파일도 생겼네요.

 

test파일 새로 생김

 

 cat 을 통해 해당 파일 내용물을 확인해보니   ls output결과가 잘 저장된것을 알 수 있습니다.

( cat 이 낯선분은 해당 글을 참조바랍니다.)

 

test내용물 확인

 

이와 같이 기존에 출력되는 방향을 다른 곳으로 바꿨다라고해서 리다이렉션 시켰다라고도 표현합니다.

 

그렇다면 이 방법으로 모든 출력결과를 파일로 옮길 수 있을까요?

 

정답부터 말하자면 아닙니다.

 

2) Standard Error(stderr)

 

아래 코드는  test2.txt 파일을 삭제하는 명령어 입니다.

문제는 해당 파일은 애초부터 존재하지 않습니다. output결과는 존재하지 않는 파일을 삭제하려고 하니 발생시킨 에러문구고요.

 

rm 오류

 

첫번째 예시에서 공부한대로  > 를 이용하여 output을 리다이렉션 시켜보겠습니다.

하지만 전과 다르게 에러가 그대로 터미널창에 출력됩니다.

 

rm 명령어 리다이렉션

 ls 를 통해 파일목록을 확인해보면  test2 는 생성되었습니다.

 

ls로 test2존재확인

 

 cat 을 통해  test2 내용물을 확인해보니 아무 내용도 적혀있지 않습니다.

결과적으로 위와 같은 방식이 통하지 않는다는걸 알게되었네요.

 

test2내용 확인

 

그렇다면 기존방식과 무슨차이 때문에 이런 방식이 발생되는걸까요?

 

리눅스에서는 output으로 1.  stdout(표준출력)   2. stderr(표준에러) 두가지 형태가 있습니다.

 

stream 방향
출처:나무위키:shorturl.at/auST2

 

정상적인 출력물에 경우 stdout(표준출력)에 해당하고 위와 같이 에러의 경우는 stderr(표준에러)에 속합니다.

 

우리가 첫번째 예시에서 썼던  > 는 사실  1>  의 축약 형태인데요.(둘다 사용가능)

 

 1> 은 stdout(표준출력)에 대해서만 리다이렉션을 시켜줍니다. 그렇기에 2번예제에서 발생한 에러 output은 리다이렉션 시켜주지 못한거죠.

 

그렇다면 stderr(표준에러)를 리다이렉션 시켜주려면 어떻게 해야할까요?

 

 2> 를 사용하면됩니다. 기존  > 형태에 2를 앞에 붙혀준 형태죠.

 > 은 기본적으로 1> 과 같지만  2>  는 반드시 2를 명시적으로 붙혀줘야 합니다.

 

정말로 잘 동작되는지 확인해볼까요?

 

2>를 통한 stderr

 

이전과 다르게 에러가 나오지 않습니다.

 

test2파일 내용물 확인

 

내용물을 확인해보니  test2 파일안에 오류메세지가 잘 저장된걸 확인할 수 있습니다.

 

3) 통합 방식

명령어를 실행하고자 할때 에러가 날지 안날지 확신할 수 없을 경우가 있습니다.

이럴때는 에러가 날경우는  2> 를 사용하고 정상출력일때는  1> 를 설정해주는 방법이 있습니다.

 

현재 디렉토리에는  test2 라는 파일이 있습니다.

 

test2파일 확인

 

아래 코드는  test2 파일의 내용물을 읽어서 정상일때는  good 파일에 작성하고 에러가 발생시에는  bad 파일에 작성하라는 명령입니다.

 

통합방식 적용

 

 test2 파일이 있으니까  good 파일에 내용물이 저장되겠죠.

반대로  test3 (없는 파일) 파일을 읽고 리다이렉션을 하려고 한다면  2> 를 통해  bad 에 저장될겁니다.

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글