*22년 3월 29일~4월 10일 학습한 생활코딩 리눅스 강의 정리본입니다.
쉬운 알파벳 몇글자 끄적이다가 갑자기 이론적인 부분이 나와서 당황했다. IO Direction은 input/output/direction이라고 한다.
🔔입출력 위치를 바꿔서 터미널을 보다 편하게 사용하는 기능으로 이해했다.
주의할 점은 어떤 명령어로 standard input시 redirection으로 가져갈 수 있는 값은 standard output뿐이다.
redirection 명령어는 '>'인데 C언어의 iostream을 생각하면 이해가 쉽다. 기본 값에 숫자 1이 생략되어 있다고 한다. 즉 '>'와 '1>'는 같은 의미이다. 그렇다면 standard error를 가져가기 위해서는 어떻게 해야할까? '2>'를 사용하면 된다. 아래는 해당 내용을 필기한 것이다.
- standard output을 원할 경우 '1>'
- standard error를 원할 경우 '2>'
설명만 들어서는 사용방법이 감이 안 잡힌다. 아래 사진은 ls -l을 입력했을 때 나오는 모든 목록이다. linux.txt파일을 사용해서 standard output은 result.txt에, standard error는 error.txt에 저장하는 코드를 작성해보겠다.
linux.txt 1> result.txt >2 error.txt
코드 작성 후 ls -l을 입력하면 result.txt와 error.txt가 생성된 것을 확인할 수 있다.
output보단 쓸모없는 기능이라고 한다. 그래도 이해하고 지나가고 싶어서 나름대로 열심히 들어봤다. 마찬가지로 C언어의 iostream으로 이해할 수 있다. 어떤 값을 standard input 값으로 입력하도록 해주는 것인데, 아까 사용한 linux.txt파일을 사용해서 이 파일의 첫줄만 출력되도록 코드를 작성해보겠다.
head -n1 linux.txt
head -n1 < linux.txt
두 코드에 '<'이 있고 없고의 차이점이 있지만 결과는 동일하다. 다만 출력하는 값이 가지는 의미는 다르다.
head -n1 linux.txt가 출력하는 값은 command-line arguments의 값이다. -n1이라는 인자값을 출력하기 때문이다.
그러나 '<'를 사용한 head -n1 < linux.txt가 출력하는 값은 standard input값이다. '<'은 standard input값만을 내보낼 수 있기 때문이다.
같은 출력 결과에도 의미가 다르다. 말장난같지만 차이점을 익혀두면 도움이 될 것 같다.
위에서 사용한 두개의 코드를 동시에 사용하는 것도 가능하다.
head -n1 < linux.txt > one.txt
강의 들으면서 작성한건데 끝나갈 때 쯤 이렇게 standard input과 standard output의 흐름을 통틀어 iostream이라고 한다고 한다. C언어로 이해한 내용과 비슷한 것이 아닌 그냥 같은 내용이었다. 살짝 허무하다.