유닉스에서는 다양한 하드웨어 장치별로 입력과 출력을 위한 설정 작업을 따로 하는 것이 아니라
파일을 읽고 쓰는 한 가지 작업으로 통일했습니다. 표준스트림은
1. stdin(입력): 입력을 위한 스트림
2. stdout(출력): 출력을 위한 스트림
3. stderr(에러): 오류메시지를 출력하기 위한 스트림
으로 구성 되어 있으며 실제로 리눅스의 /dev 디렉토리에서 위 세 개의 표준 스트림을 앞서 언급한 파일 형태로 담고 있습니다.
위 사진과 같이 echo hello devops~ 라는 입력을하면
hello devops~ 라는 출력이 됩니다.
그리고 명령어 없이 입력하면 에러메세지가 출력됩니다.
파이프: 파이프는 어떤 명령의 결과를 다시 어떤 명령의 입력으로 받아야 할 때 사용되며
process1 | process2
라는 형식으로 입력됩니다.
이러한 파이프들이 모여 파이프라인을 형성하게 되는데 그예시를 들어 보겠습니다.
저는 현재 access.log 라는 파일을 가지고 있습니다.
한번 열어 보겠습니다.
무수한 데이터들이 쏟아져 나옵니다;;
저는 이 파일에서 <맨위에서 3줄까지의 GET이란 단어를 HELLO로 바꿔서 강조하여 나타내고 싶습니다.> 이런 일을 하나하나 쳐서 하면 터미널을 쓰는 입장에서 복잡 할 수도 있습니다.
이때 파이프라인을 사용하여 한줄로 명령을 보내 처리 할 수 있습니다. 타자 느린건 이해 부탁드려요...
쨘
원하는대로 추출 하였습니다.
여기서 사용한 명령어는
이것들이 입출력 스트림의 파이프라인 이였구요
리다이렉션은 이러한 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 하는것.
입니다 또다시 예제로 돌아 가봅시다.
저는 3줄의 GET을 HELLO로 바꿔 강조한 저 텍스트를 터미널에 출력하지 않고 파일로 저장하려고 합니다.
이때 하는 작업이 리다이렉션 입니다.
앞선 명령어 뒤에 > HELLO.txt 라고 입력하여 터미널 대신 파일로 출력할 수 있습니다.
파일이 생성 되었습니다.
근데 여기서! 다시 이 파일의 맨 첫줄을 HI.txt라는 파일로 저장하고 싶다면??
이렇게 쳐주면?
파일이 생성 됩니다.
리다이렉션은 이러한 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 합니다. 리다이렉션을 쓰고 싶다면 기호인 > 혹은 < 를 사용하면 됩니다.
:)