- 
                            
                            생활코딩 리눅스 강좌 요약 및 정리 - IO RedirectionKnowledge/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줄수 파일명 : 파일의 줄 수 까지만 입력으로 받아서 출력 명령어 >> 파일명 : 파일의 기존 내용에 덧대서 명령어 실행 내용을 저장 반응형'Knowledge > Linux' 카테고리의 다른 글생활코딩 리눅스 강좌 요약 및 정리 - 프로세스와 실행 (0) 2019.10.04 생활코딩 리눅스 강좌 요약 및 정리 - 디렉토리 구조와 파일찾는 법 (0) 2019.10.04 생활코딩 리눅스 강좌 요약 및 정리 - 쉘과 쉘스크립트 (0) 2019.10.04 생활코딩 리눅스 강좌 요약 및 정리 - 리눅스 기초 (2) (0) 2019.10.01 생활코딩 리눅스 강좌 요약 및 정리 - 리눅스 기초 (1) (0) 2019.10.01