리눅스는 내부적으로 ls 명령어의 실행 결과를 터미널 화면에 출력하기 위한 메서드(ex. printf())를 호출했을 것이다. 체감상으로는 아래의 그림과 같이 printf() 함수가 터미널 화면에 바로 출력하게끔 작동한 것처럼 보인다. 하지만 실제로는 그렇게 작동하지 않는다.
** 참고) c 언어에서의 printf() 함수는 Java에서의System.out.println() 또는 Javascript에서의 console.log()와 같은 출력 함수 중 하나이다.
printf()의 정확한 역할은 터미널 화면에 결과값을 출력하는 역할이 아니라, 표준 출력이라는 곳으로 결과값을 전달하는 역할을 한다.
그럼 여기서 얘기하는 표준 출력이 도대체 뭘까?
표준 출력(stdout)이란, 명령어의 실행 결과를 ‘출력할 곳’으로 이동시켜주는 통로이다.
표준 출력에 기본값으로 설정되어 있는 출력할 곳은 ‘터미널 화면’이다.
표준 출력의 출력할 곳을 ‘터미널 화면’이 아닌 다른 곳(ex. 파일)으로도 바꿀 수 있다.