-
생활코딩 리눅스 강좌 요약 및 정리 - 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