*22년 3월 29일~4월 10일 학습한 생활코딩 리눅스 강의 정리본입니다.

IO Direction

쉬운 알파벳 몇글자 끄적이다가 갑자기 이론적인 부분이 나와서 당황했다. IO Directioninput/output/direction이라고 한다.

🔔입출력 위치를 바꿔서 터미널을 보다 편하게 사용하는 기능으로 이해했다.

주의할 점은 어떤 명령어로 standard inputredirection으로 가져갈 수 있는 값은 standard output뿐이다.
redirection 명령어는 '>'인데 C언어의 iostream을 생각하면 이해가 쉽다. 기본 값에 숫자 1이 생략되어 있다고 한다. 즉 '>'와 '1>'는 같은 의미이다. 그렇다면 standard error를 가져가기 위해서는 어떻게 해야할까? '2>'를 사용하면 된다. 아래는 해당 내용을 필기한 것이다.

  • standard output을 원할 경우 '1>'
  • standard error를 원할 경우 '2>'


Output 사용방법

설명만 들어서는 사용방법이 감이 안 잡힌다. 아래 사진은 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가 생성된 것을 확인할 수 있다.


Input 사용방법

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값만을 내보낼 수 있기 때문이다.

  • 같은 출력 결과에도 의미가 다르다. 말장난같지만 차이점을 익혀두면 도움이 될 것 같다.


Input과 Output을 함께 사용

위에서 사용한 두개의 코드를 동시에 사용하는 것도 가능하다.

head -n1 < linux.txt > one.txt

  • 이 코드는 linux.txt의 첫 행 내용을 one.txt에 내보내는 코드이다. 인풋과 아웃풋을 함께 사용할 수 있다.
  • 참고로 계속 나온 head는 파일의 10번째 행까지 출력하는 명령어이다. 뒤에 -n숫자 인자를 붙여서 출력되는 자릿수를 조절할 수 있다. -n1은 첫번째 행까지 출력한다는 의미이다.

강의 들으면서 작성한건데 끝나갈 때 쯤 이렇게 standard input과 standard output의 흐름을 통틀어 iostream이라고 한다고 한다. C언어로 이해한 내용과 비슷한 것이 아닌 그냥 같은 내용이었다. 살짝 허무하다.

profile
겉촉속촉

0개의 댓글

Powered by GraphCDN, the GraphQL CDN