이번 시간에 배우는 개념은 조금 어렵습니다.
I/O redirection 입니다.
쉽게 후려쳐서 말하면 '(standard output 관점에서는) 프로그램의 결과를 다른 방향으로 출력하는것' 입니다.
좀 더 정확히 말하면 리다이렉션(redirection)은 컴퓨팅에서 표준 스트림을 사용자 지정 위치로 우회할 수 있는 다양한 유닉스 셸을 포함한 대부분의 명령어 인터프리터에 일반적인 명령입니다. 방향 지정, 방향 변경으로도 부릅니다.(by 위키)
위 그림의 오른쪽 도표를 봐주시면
리눅스 터미널에서는 Unix Process 좌측에 커맨드라인 속성이 있고 이를 통해서 exit status 가 되는 것이 일반적입니다.
1. I/O redirection - standard output
1-1) 꺽쇠(>) 앞이 1이거나 생략할 경우
$ ls -l > result.txt
ls -l 을 입력하면 화면에 출력할 결과물을 result.txt 파일에 작성해줍니다.
이 때 > Standard Output의 경우, 꺾쇠 앞에는 1이 생략되어있는데 이는 디폴트 값이기 때문입니다.
1은 standard output을 의미합니다. 여기서 > (꺽쇠)는 standard output을 redirection 시킵니다.
cat 명령어를 실행하면 result.txt 안의 내용을 볼 수 있습니다.
위의 예에서는 ls -l 의 결과가 > result.txt 명령어를 통해 txt 파일 속에 저장됩니다.
이것이 redirection 입니다. > 기호가 redirection을 의미합니다. > 를 꺽쇠라고 부르겠습니다.
모니터에 출력되는 것을 다른 곳으로 출력되기 할 수 있다. (=standard output)
그것의 대표적인 것이 '파일'입니다.
1-2) 꺽쇠(>) 앞의 값이 2일 경우
$ rm result.txt 2> error.txt
위 캡쳐의 3번째 명령어를 보면 에러가 result2.txt에 안 들어가고 터미널에 결과가 나옵니다. 이는 1이 생략된 꺽쇠가 standard output라는 결과를 파일로 result2.txt에 작성되야하는데 결과가 standard error 이기에 명령(리다이렉션)이 실행되지 않은 겁니다.
실행 에러 메시지는 standard error 입니다. 꺽쇠 앞에 숫자2를 넣어주면 standard error를 redirection 시킬 수 있습니다.
2. I/O redirection - standard input
cat 명령어를 먼저 설명하겠습니다.
- cat은 파일을 화면에 출력해줍니다. 여러 개의 정보를 결합해주는 것이 cat의 의미이지만 여기서 일단
파일의 결과를 보여준다고 생각하시면 되겠습니다.
- 파일명 없이 입력하면 타이핑하는 글자를 그대로 다시 출력합니다. 빠져나갈 때는 ctrl + d 를 누릅니다.
- cat '파일명'은 command line arguments 로 실행된 것입니다. (첫 번쨰 그림 참고)
$ head -h1 hello.txt
- Command line arguments 로 결과가 실행된 것입니다.
$ head -h1 < hello.txt
- cat < '파일명' 은 인자가 아니라 standard input으로 cat에게 명령을 실행시킨 겁니다.
$ head -n1 < hello.txt > one.txt
hello.txt 파일을 standard input으로 head 프로그램에 넣고 그 결과를 standard output으로 one.txt 에 작성합니다.이 안에서 2번의 redirectiond 이 일어났습니다. standard input 과 standard output입니다.
3. I/O redirection - append
> 를 계속하면 기존의 파일에 덧씌우기를 계속 합니다. 안의 내용은 유지한채 새로운 내용을 추가하고 싶다면 위 캡쳐처럼
$ ls -al >> result.txt
>> 꺽쇠를 2번 해주면 처음의 txt 파일 안의 내용은 유지한채 새로운 내용을 추가해줍니다. (직접 타이핑해보고 확인해보세요~)
--참고--
'CS+ > 리눅스' 카테고리의 다른 글
깃&깃허브 입문 3일차 - branch, checkout, status, merge, stash (0) | 2020.03.15 |
---|---|
깃&깃허브 입문 2일차 - git init, add, commit, reset, checkout (0) | 2020.03.15 |
(우분투) 깃, 깃허브 입문하기 1일차 (0) | 2020.03.12 |
리눅스(우분투) 입문자를 위한 기초 명령어2 - sudo, apt, wget (0) | 2020.01.05 |
리눅스(우분투) 입문자를 위한 기초 명령어1 - ls, mkdir, cd, rm, mv (0) | 2020.01.04 |