Linux Command : cat
cat 명령어를 공부함과 동시에 redirection이라는 개념도 함께 공부하도록 하겠다.
cat (Concatenate)
하나 또는 그 이상의 파일로부터 데이터를 읽고 표준출력(standard output)으로 이를 복사하는 명령어
cat 명령어는 굉장히 다양한 형태로 사용된다.
cat file1
file1에 저장된 내용을 출력
cat 명령어는 다음과 같이 주로 짧은 txt 파일의 내용을 출력하는데 사용한다. 또한 cat 명령어는 2개이상의 파일을 인자로 받는 것도 가능하여 다음과 같은 처리도 가능하다.
cat file1 file2 file3
1개 이상의 파일 각각의 내용들을 연속하여 출력
그리고 추가적으로 여기에 -n 옵션을 사용하면 행번호가 추가되어서 출력이 이루어지게 된다.
또한 cat은 여러개로 분할된 파일을 하나로 합치는 데에도 사용할 수 있다.
다음과 같이 합치고자 하는 파일들을 차례대로 적어주고 ">" 문자뒤에 입력하고자 하는 파일 또는 생성할 파일의 이름을 입력해주면 된다.
cat 명령어는 표준입력과도 연동해서 사용할 수 있다. 아무런 표현을 뒤에 붙이지 않고 그냥 cat 명령어만 입력하면 다음과 같아진다.
실제로 cat 명령어는 인수가 없으면 입력은 표준입력(standard input)으로 부터 받는다. 즉, 위의 창은 표준입력으로부터 입력을 기다리는 상태인 것이다. 그렇다면 표준입력은 무엇으로 할 수 있을까? 그렇다 키보드 이다. 여기서 키보드를 이용해서 문자열을 타이핑 해보록 하겠다.
그 다음 이 ctrl-d 키를 누르게 되면 표준입력에서 cat으로 파일의 끝(EOF)에 도달했다는 메시지를 보내게 되고 이는 곧 cat 명령의 종로 이어진다.
다음과 같이 파일의 이름을 따로 인자로 전달하지 않고 cat 명령어를 사용할 경우 cat 명령어는 입력받은 내용을 표준출력(Standard output)으로 전달한다. 그래서 입력해던 문장이 다시한번 밑에 출력되는 것이다.
그렇다면 이번에는 파일이름을 cat 명령어에 주고 사용해보도록 하겠다.
다음과 같이 파일로도 입력의 내용을 출력할 수 있는 것을 확인할 수 있다.
그리고 우리는 이전에 사용한 < 연산자를 사용해서 다음과 같은 명령도 할 수 있다.
이는 cat의 입력소스를 표준입력소스에서 sample.txt의 소스로 변경하겠다는 의미이며 이 결과는 인수로 파일이름을 전달했을 때와 같음을 확인할 수 있다.
이번에는 Pipeline 이라는 ' | ' 연산자에 대해서 알아보도록 하겠다. 표준입력에서 데이터를 읽고 표준출력으로 전송하는 명령기능은 Pipelines 라 불리는 shell에 의해서 이루어지게 되는 데, 이때, 연산자는 pipe 라는 부르는 ' | ' 문자를 연산자로 사용하며 이는 한 명령어에 대한 표준 출력을 다른 명령어에 대한 표준 입력으로 연결할 수 있다. 이 때 이를 pipe 시킨다고 표현하기도 한다. 이는 타이핑해야할 명령어를 줄일 수 있다는 장점을 제공한다.
예를 들어서 다음과 같이 사용할 수 있다.
다음과 같이 어떤 명령어의 출력값을 다른 명령어의 입력으로 전달하고 싶을 때 우리는 ' | ' 연산자를 이용해서 이를 간결하게 처리할 수 있다.
'>' 연산자와 ' | '연산자의 차이점?
- '>' 연산자는 명령어와 파일을 연결한다.
- ' | ' 연산자는 한 명령어의 출력과 다른 명령어의 입력을 연결한다는 점에서 차이가 있다.
실제로 사용할 때 실수로 command > command 와 같이 입력하는 경우가 생기는 데 이러한 행위는 실제로 사용자가 위치한 디렉터리가 시스템 파일을 보관하고 있는 디렉터리인 경우 명령어와 같은 시스템 파일에 손상을 줄 수도 있는 아주 위험한 행위이다. 그러므로 > 연산자를 사용할 때에는 올바른 상황에서 사용하는 것인지 주의 깊게 살핀 후 사용할 필요가 있다.
Pipelines는 종종 복잡한 작업을 수행하는 데 사용된다. 실제로 Pipeline에 한번에 여러개의 여러개의 명령을 한 번에 넣을 수 있는데, 우리는 경우를 "필터(filter)"라고 부른다. 이에 대한 예시는 나중에 다시 다루는 것으로 하겠다.
'Infra > Linux' 카테고리의 다른 글
Linux Command : sort (0) | 2021.02.10 |
---|---|
Linux Command : history (0) | 2021.02.10 |
Linux Command : info (0) | 2021.02.10 |
Linux Command : man (0) | 2021.02.10 |
Linux Command : help (0) | 2021.02.10 |
댓글
이 글 공유하기
다른 글
-
Linux Command : sort
Linux Command : sort
2021.02.10 -
Linux Command : history
Linux Command : history
2021.02.10 -
Linux Command : info
Linux Command : info
2021.02.10 -
Linux Command : man
Linux Command : man
2021.02.10