오늘은 시작부터 IO Redirection에 대한 설명을 들었습니다.
Unix Programs안에 UnixProcess라는 것이 가장 중심이 되고 이는 기본적인 명령어라고 생각하면 된다고 합니다.
그리고 Command-line Argument라는 것도 있는데 이건 명령어의 명령어 같은 느낌입니다.
간단하게 예시를 들자면 ls -al라고 입력한다 치면 ls(Unix Process) -al(Command-line Argument)로 이해하시면 되겠습니다.
그리고 이렇게 입력을 했으니 출력을 해야겠죠?
그건 Standard Output이라고 합니다 기본적인 출력이라는 의미로 직역되는데 기본적으로 결과값이 모니터에 출력이됩니다. 그리고 이걸 다른 곳으로 출력하는 방법이 있는데 이것을 Redirection한다고 할 수 있습니다.(ex.파일)
이 Redirection을 하기 위해서는 <기호를 이용하여 명령어를 입력해야하는데 ls -al이라는 명령어에서 추가를 해줘야하는 만일 파일형태로 만들어서 출력하고 싶다면
ls -al > 원하는파일이름 이렇게 하면됩니다.
그리고 제대로 만들어졌는지 내용을 확인하고 싶다면 어제는 배웠지만 미처 기록하지못한
cat명령어를 이용해서 확인하면 되겠습니다. 명령어는 cat 파일이름 입니다.
다음은 Standard error에 관한 설명인데 그렇게 어렵지 않습니다.
이것 역시 Redirection을 할 수 있는데요 하지만 Standard Output과는 다른 출력값이기 때문에 그냥 >기호를 사용해서 에러메시지를 출력하려고 한다면 에러가 발생합니다.
여기에는 비밀이 있는데요 사실 >만 쓰던 기호에는 1>이렇게 1이 생략되어 있었습니다. 1은 Standard Output의 출력값을 의미하므로 에러의 경우에는 2>로 작성해주시면 됩니다. 예시를 들자면 에러가발생하는명령어 2> Redirection할파일이름
또 다른 팁으로는 둘 다 입력해버려서 둘 중 하나의 값으로 반드시 출력되게 만드는겁니다.
명령어 1>(1생략가능)Standard Output의 결과값을 저장할 파일이름 2> Stardard error의 결과값을 저장할 파일이름
이렇게 명령어를 작성하면 결과에 따라 Standard Output 혹은 Standard error로 설정해둔 파일에 출력이됩니다.
위 사진과 같이 rm xxx.txt xxx.txt라는 파일이 존재하지 않기 때문에 에러가 발생했고 디렉토리를 확인해보니 one.txt와 two.txt가 둘 다 생겼습니다 하지만 cat을 이용해 one.txt를 확인하니 아무것도 출력이 되지 않습니다. 이유는 내용이 없기 때문입니다. 마찬가지로 two.txt는 결과값을 출력해줍니다.
GUI가 아닌 리눅스와 같은CLI 운영체제의 경우에는 명령어를 한 번에 입력했을때도 잘 처리가 되는 것이 상당히 훌륭한 장점이라고 합니다. 저도 그 의견에 동의합니다.
다음은 Standard input입니다.
이제 입력을 하는 부분인데 명령어로써 입력을 하면 Unix Process로 바로 작동이 되며 입력을 Command-line Argument를 통해서 입력이 됩니다.
내용물을 보여주는 cat명령어를 사용해서 예시를 들자면 cat hello.txt를 한다면 hello.txt안에 있는 파일의 내용이 모니터에 출력이 됩니다. 하지만 cat < hello.txt를 해도 같은 내용이 출력됩니다.
같은 결과를 보여주는데 뭐가 다른 것이냐 라고 생각합니다만 <기호를 사용해서 작성하면 Standard input으로 입력을 하는거라고 합니다. 무슨 의미인지는 잘 모르겠네요 ㅋㅋㅋ... 설명에서도 실용적이지는 않아서 그냥 cat hello.txt로 쓴다고합니다.
새로운 명령어가 나왔네요 head입니다.
텍스트의 앞쪽의 일부분을 출력하는 기능이 있는데 그게 바로 head입니다. 기본 설정은 10줄이고
따로 설정을 할 수 있습니다.Command-line Argument를 통해서요
head -n1(1줄 숫자에 따라 달라집니다.) 텍스트파일이름
이런식으로 사용합니다.
다음은 >>입니다.
Redirection을 할 때 사용하는 꺽쇠인데요
이렇게 2개를 연속해서 입력한다면 덧붙여져서 들어갑니다.
우선 this.txt에 la값을 집어넣었습니다 이제 >>를 사용해서 덧붙여보겠습니다.
양이 너무 많아서 캡쳐하기도 힘드네요.
이렇게 원래의 결과값 바로 뒤에 붙어서 주르륵 나오는 것을 볼 수 있습니다.
결과값은 딱 하나만 바뀌었습니다. this.txt의 용량만 바뀌었습니다. 이유는 아까는 결과값이 저장이 안된채로 기입이 되었지만 그 이후에 덧붙여쓰기를 하면서 1번의 기록이 들어가있는 용량으로 된 것입니다.
오늘 공부는 많이 짧았습니다.
혹시 보다가 제가 이해를 이상하게 했거나 부족한 부분이 있다면
꼭 코멘트 남겨서 제가 올바른 지식을 쌓을 수 있도록 도움을 주신다면 감사하겠습니다.
'자기개발 > Linux' 카테고리의 다른 글
TCP 3-Way HandShaking과 4-Way HandShaking (0) | 2021.03.31 |
---|---|
Linux 공부 5일차 (0) | 2021.01.30 |
Linux 공부 4일차 (0) | 2021.01.24 |
Linux 공부 3일차 (0) | 2021.01.23 |
Linux 공부 1일차 (0) | 2021.01.21 |