프로그램이 데이터를 입력받거나 출력하는 과정에서 사용하는 기본 데이터 흐름이다. 모든 프로세스는 실행 시 다음 세 가지 표준 스트림을 사용한다.
stdin)0키보드로 입력한 텍스트를 읽는 경우.
cat
위 명령어를 실행하면 키보드 입력이 표준 입력으로 전달되고, 엔터를 치면 출력된다.
stdout)1echo "Hello"는 문자열을 표준 출력으로 전달한다.stderr)2잘못된 명령 실행 시 발생하는 오류 메시지.
ls nonexistentfile
파일이 없다는 에러 메시지가 stderr로 출력된다.
리다이렉션은 표준 입력, 출력, 오류의 디폴트 흐름(터미널)을 파일이나 다른 곳으로 변경하는 방법이다.
>)echo "Hello, World!" > output.txt # `output.txt`에 "Hello, World!"가 저장된다.
>>)echo "Additional Line" >> output.txt
<)cat < input.txt
2>)ls nonexistentfile 2> error.log
&>)command &> output.log
파이프는 하나의 프로세스 출력(stdout)을 다른 프로세스 입력(stdin)으로 연결하는 방식이다. 이는 프로그램 간의 데이터를 실시간으로 전달할 때 매우 유용하다.
command1 | command2
command1의 표준 출력이 command2의 표준 입력으로 전달된다.ls -l | grep ".txt"
ls -l 명령어는 디렉토리 파일 목록을 출력한다.grep 명령어로 전달된다.grep은 .txt가 포함된 파일만 필터링한다.ps aux | grep python | sort -k 3 -r
ps aux: 모든 프로세스 정보를 출력.grep python: 출력에서 python 관련 프로세스만 필터링.sort -k 3 -r: CPU 사용량 기준으로 내림차순 정렬.이를 조합하면 유연한 데이터 처리가 가능하며, 효율적인 작업 흐름을 설계할 수 있다.