-
파이프와 리다이렉트Technique/LPIC 2019. 5. 8. 15:12반응형
표준 입출력
Linux에는 보통의 파일과 같은 디스플레이에 출력이나 키보드로부터의 입력을 다루는 것이 가능하다. 즉, 키보드로부터 입력도 파일 읽음도, 디스플레이에 출력도, 파일에의 쓰기도 같이 취급한다. 이런 데이터의 입출력에 따른 데이터의 흐름을 스트림이라고 부른다.
Linux에는 데이터를 스트림으로 다루기 위해 3가지의 기본적인 인터페이스가 정의되어 있다. 표준 입력은 프로그램에의 입력 스트림으로써, 기본은 키보드이다. 표준 출력은 프로그램으로부터의 출력 스트림으로써 기본은 화면(단말)이다. 표준 에러 출력은 프로그램의 정상 동적과는 관계없는 에러 메시지 등의 출력 스트림으로서 기본은 화면 (단말)이다. 이것들의 표준 입출력을 자유롭게 바꿔감으로써, 동일의 프로그램에 여러 가지 동작을 기대할 수 있게 된다.
번호 입출력 명 기본 0 표준 입력 키보드 1 표준 출력 화면 ( 단말 ) 2 표준 에러 출력 화면 ( 단말 ) 파이프
커맨드나 프로그램의 출력 결과를 다른 커맨드나 프로그램의 입력으로 넘기는 단순한 동작의 커맨드를 합쳐 복잡한 처리를 하는 것이 가능하다. 이 경우에 사용하는 것이 파이프 ( 파이프라인 )이고 기호로는 [ | ]로 나타낸다. 파이프는 커맨드의 표준 출력을 다음의 커맨드에 표준 입력으로 넘기는 역할을 한다.
tee 커맨드
커맨드의 실행 결과를 파일에 저장하는 것과 같이 화면상에 표시하고 싶은 경우에는 파이프 만으론 해결할 수 없다. 이 경우에는 tee 커맨드를 사용한다. 즉 실행 결과를 파일에 쓰면서 다음의 커맨드로의 실행 결과를 넘기는 것이 가능하다.
리다이렉트
커맨드의 실행 결과를 보통 화면상( 단말 )에 표시한다. 또한 커맨드에의 입력에는 일반적인 키보드가 사용된다. 실행 결과를 화면상에 표시하지 않고 파일에 저장하고 싶은 경우나 커맨드로의 입력에 다시 한번 준비해둔 파일을 이용하고 싶을 경우 도움이 되는 것이 리다이렉트( 리다이렉션)이다. 리다이렉트는 커맨드로의 입력처나 출력처를 컨트롤한다. 예를 들어 커맨드의 실행 결과를 화면상에 표시하는 것이 아니라 파일에 저장하고 싶은 경우 리다이렉트 기호의 [ > ]를 사용한다.
파일을 덮어쓰는 것이 아니라 기존의 파일의 끝에 추가하여 작성하고 싶을 경우에는 다른 리다이렉트 기호인 [ >> ]를 사용한다.
표준 입력을 바꾸기 위해선 리다이렉트 기호인 [ < ]를 사용한다.
특정의 문자열이 나타날 때까지 입력을 계속하기 위해 사용하는 기호는 [ << ]이다. 이것은 히아도큐먼트라고 불린다.
히아도큐 먼트를 사용하면 짧은 파일이면 에디터를 사용하지 않고 작성하는 것이 가능하다.
표준 에러 출력을 리다이렉트 하기 위해선 리다이렉트 기호 [ 2> ]를 사용한다 에러 출력만 파일에 저장하고 나중에 확 인하는 용도로 사용 가능하다.
서식 설명 커맨드 > 파일 파일의 출력 ( 실행 결과 )을 파일로 작성 커맨드 < 파일 파일의 내용을 커맨드의 표준 입력으로 전송 커맨드 >> 파일 커맨드의 표준 출력 ( 실행 결과 ) 를 파일에 이어쓰기 커맨드 2> 파일 파일에 표준 에러 출력을 작성 커맨드 2>> 파일 파일에 표준 에러 출력을 이어 쓰기 커맨드 > 파일 2>&1 파일에 표준 출력과 에러 출력을 작성 커맨드 >> 파일 2> &1 파일에 표준 출력과 표준 에러 출력을 이어쓰기 커맨드 << 종료 문자 종료 문자가 나타나기 전 까지 표준 입력 전송 커맨드1 | 커맨드 2 커맨드 1의 표준 출력을 커맨드 2에 표준 입력으로 전달 커맨드 1 2>&1 | 커맨드 2 커맨드 1의 표준 출력과 표준 에러 출력을 커맨드 2의 표준 입력으로 전달 커맨드 1 | tee 파일 | 커맨드 2 커맨드 1의 표준 출력 ( 실행 결과 ) 를 커맨드 2의 표준 입력에 전달과 동시에 파일에 작성 커맨드 &> 파일 표준 출력과 표준 에러 출력을 같은 파일에 작성 반응형'Technique > LPIC' 카테고리의 다른 글
정규 표현을 사용한 텍스트 검색 (0) 2019.05.09 텍스트 처리 필터 (0) 2019.05.09 meta 문자 이용 (0) 2019.05.08 파일 조작 커맨드 (0) 2019.05.08 매뉴얼 참조 (0) 2019.05.07