ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생활코딩 리눅스 강좌 요약 및 정리 - IO Redirection
    Knowledge/Linux 2019. 10. 2. 15:33
    반응형

    이 포스팅은 2편 ( https://takeknowledge.tistory.com/66 ) 에 이어 작성하는 것입니다.

    nano 에디터, 패키지 매니져 (apt) , wget, git  등에 대한 정보는 2편에서 확인할 수 있습니다

     

    • IO Redirection

    Input / Output Redirection 이다. 말그대로 Input과 Output을 Redirection 해준다는 말인데 일단 Output 예제부터 보자

     

    • IO Redirection - output 

    ls -l 명령어를 입력하면 그 결과, 즉 Output이 이렇게 모니터에 출력된다

    그런데 이 때 

     

    이렇게 ls -l 뒤에 > 표시를 한 후 result.txt 를 더해서 입력하면 모니터에 추가 정보가 더 나오지 않는다.

    대신 ls -l을 다시 입력해보면

     

     

    result.txt 라는 파일이 생성된 걸 확인할 수 있다.

    cat 명령어를 활용해 result.txt 파일을 열어보면

     

    이렇게 아까 ls -l 을 입력했을 때 나왔어야 할 output이 그제야 나오는 걸 확인할 수 있다.

     

    즉 모니터에 나왔어야 할 output이

    명령어 뒤에 추가한 > 파일명 명령어를 통해서 result.txt 파일로 redirection 된 것이다.

     

    그러나 모든 output이 > 파일명 명령어를 통해서 redirection 되는 것은 아니다.

     

    예를 들어 이렇게 파일을 한번 지우고, 한번 더 지워서 나오는 에러 메시지를 redirction 하기 위해

     

     

    이런 식으로 입력하면 output이 redirection 되지 않고 그냥 모니터에 나오는 걸 확인할 수 있다.

     

    사실 > 앞에는 1이 생략되어 있는 것이기 때문이다. 

    정상적인 출력 결과를 보기 위해선 1을 생략하고 > 만 써도 무방하지만 

    에러 발생시 에러 결과를 보기 위해선 1> 이 아닌 2> 을 써야 한다. 그래서

     

    이렇게 명령어 2> error.log 라고 입력하면 에러 발생 결과가 error.log에 저장된 걸 확인할 수 있다. 

     

    그리고 이는 마치 삼항연산자처럼

     

    이런 식으로 '정상 수행되면 그 결과를 result.txt에 저장하고 에러가 나면 error.log에 저장해줘' 라고 명령할 수도 있다

     

    • IO Redirection - Input

    Output Redirection은 Output을 Redirection 해서 파일을 저장하는 거였다.

    그럼 Input Redirection은? 실용적이진 않지만 반대로 파일을 Input으로 넣는거다. 

     

    위에서 갑자기 사용한 cat 명령어가 대표적인데

     

     

    뒤에 파일명을 넣지 않고 cat을 입력한 뒤

    어떤 키워드를 입력해보면 그대로 출력된다. 

    ( 이 상태는 Ctrl D 를 누르면 빠져나올 수 있다 )

     

    즉 Cat 은 입력을 출력해주는 프로그램인데

     

     

    위와 같이 cat < 파일명 으로 명령하면

    test.html의 내용이 입력으로 redirection 되어서 output으로 나오는 것.

     

    그 외엔 head라는 명령어가 있는데

    이건 파일의 일부만 입력으로 리다이렉션 할 수 있다. 예를 들어

     

     

    head -n입력으로 넣을 줄 수 < 파일명 하면

    그 파일의 명시한 줄 수 까지만 입력되서 출력으로 나온다.

     

    Input Redirection 과 Output Redirection 을 함께 쓸 수도 있는데

     

     

    위와 같이 작성하면 test.html 의 윗 두줄이 입력으로 들어가고 그 output이 html.txt에 담긴다

     

    • IO Redirection - append

    Input과 Output을 여러개로 덧댈 수도 있다. 

     

    예를 들어 

     

     

    ls -l의 output을 reuslt.txt에 담기게 redirection 해놓고 cat의 내용을 확인해보면 위와 같이 나온다.

     

    그런데 ls -al의 결과를 똑같이 result.txt에 담기게 하고 cat으로 내용을 확인해보면

    ls -al의 내용은 잘 입력됐으나 ls -l을 입력했을 때의 내용은 날아가 있는 걸 확인할 수 있다.

    즉 덮어쓰기 되어버린 것인데 이런 상황을 피하고 싶다면 >> 을 활용하면 된다.

     

     

    위와 같이 다시 ls -l 을 입력하고 > 대시 >> 을 입력해 result.txt 를 하면

    기존에 있던 , ls -al의 결과에 ls -l의 결과가 덧대진 걸 확인할 수 있다.

     

    input도 이와같이 여러개의 입력을 받을 수 있는데

    빛고잉님마저 실무에서 써본 적이 없다고 하시고

    강의 너무 꼼꼼히 듣지 말라고까지 해주셔서 이는 정리하지 않고 넘어간다 ( ㅋ )

     

    - 정리

     

    명령어 > 파일명 : 명령어의 결과를 파일명 이름의 파일로 저장

    명령어 2> 파일명 : 명령어가 에러를 발생시키면 그 내용을 파일명 이름의 파일로 저장

    명령어 1> 파일명 2> 파일명 : 명령어가 성공하면 내용을 1> 뒤의 파일명에 저장 / 실패하면 2> 뒤의 파일명에 저장

    cat 입력 : 입력을 출력

    cat < 파일명 : 파일명을 입력으로 받아서 내용을 출력

    head -n줄수 파일명 : 파일의 줄 수 까지만 입력으로 받아서 출력

    명령어 >> 파일명 : 파일의 기존 내용에 덧대서 명령어 실행 내용을 저장

    반응형

    댓글

Designed by Tistory.