대부분의 운영 체제 환경에서, 사용자들은 파일을 생성, 삭제, 읽기 등 다양한 작업을 수행하며, 리눅스도 예외는 아닙니다.
리눅스 운영 체제에서는 그래픽 인터페이스를 통해 파일을 조작할 수 있지만, 대다수의 리눅스 사용자들은 터미널 환경에서 운영 체제와 상호작용하는 것을 선호합니다.
이러한 선호도에 따라, 리눅스는 터미널에서 직접 파일을 다룰 수 있는 다양한 명령어를 제공하며, 그 중 하나가 바로 ‘cat’ 명령어입니다.
‘cat’ 명령어는 리눅스 매뉴얼 페이지에서 파일들을 연결하고, 그 내용을 표준 출력(일반적으로 화면)으로 보여주는 데 사용된다고 정의되어 있습니다. 리눅스 매뉴얼 페이지는 사용자가 리눅스 명령어와 그 사용법을 이해하는 데 도움을 주는 문서입니다.
리눅스 명령어의 매뉴얼 페이지에 접근하려면, ‘man 명령어이름’을 입력하면 됩니다. 예를 들어, ‘cat’ 명령어에 대한 매뉴얼 페이지를 보려면 터미널에 ‘man cat’을 입력하면 됩니다.
cat 명령어의 활용
앞서 언급했듯이, ‘cat’ 명령어는 파일 내용을 화면에 출력하는 데 사용될 수 있습니다. 또한, 여러 파일을 연결하여 그 내용을 하나의 출력으로 보여주는 기능도 제공합니다. 즉, ‘cat’ 명령어에 여러 파일을 인자로 전달하면, 해당 파일들의 내용을 연결하여 화면에 표시합니다.
간단히 말해, ‘cat’ 명령어는 여러 파일의 내용을 모아서 화면에 출력해주는 명령어입니다. 이 과정에서 ‘cat’ 명령어는 새로운 파일을 생성하지 않으며, 원본 파일들의 내용은 변경되지 않습니다.
‘cat’ 명령어는 리디렉션과 함께 사용되기도 합니다. 리디렉션이란, 사용자가 표준 입력의 출처와 표준 출력 및 표준 에러의 목적지를 변경할 수 있게 해주는 기능을 말합니다. 표준 입력, 표준 출력, 표준 에러는 리눅스에서 데이터 통신에 사용되는 표준 스트림입니다.
기본적으로 표준 입력은 키보드이며, 표준 출력과 표준 에러는 화면에 표시됩니다.
따라서 리디렉션을 사용하면, 기본적으로 키보드로부터 입력을 받는 대신, 파일이나 다른 소스로부터 입력을 받을 수 있습니다.
또한, 화면에 표시되는 표준 출력 및 표준 에러의 경우, 리디렉션을 통해 파일에 저장할 수도 있습니다.
cat 명령어의 기본 구조
‘cat’ 명령어의 일반적인 구조는 다음과 같습니다.
cat [옵션]... [파일]...
리눅스 매뉴얼 페이지에서, 대괄호([]) 안에 표시된 요소들은 모두 선택 사항입니다. 따라서 위 구조에서 ‘cat’ 명령어는 ‘옵션’이나 ‘파일’ 인자를 필수로 요구하지 않습니다. 둘 중 하나를 가질 수도 있고, 둘 다 가질 수도 있으며, 아무것도 가지지 않을 수도 있습니다.
줄임표(…)는 해당 인자나 요소가 하나 이상 존재할 수 있음을 나타냅니다. 즉, ‘cat’ 명령어는 하나 이상의 ‘옵션’ 또는 ‘파일’을 사용할 수 있습니다.
‘파일’은 ‘cat’ 명령어로 연결하고 출력하고자 하는 파일들을 가리킵니다. ‘옵션’은 ‘cat’ 명령어의 동작 방식을 변경하는 데 사용되는 플래그를 의미합니다. ‘cat’ 명령어와 함께 사용할 수 있는 다양한 옵션들이 존재합니다.
‘cat’ 명령어는 전달된 파일을 읽어, 그 내용을 터미널 창(표준 출력)으로 출력하는 방식으로 동작합니다. 만약 여러 파일이 전달되면, 해당 파일들의 내용이 순서대로 연결되어 터미널 창에 표시됩니다.
‘cat’ 명령어는 전달된 플래그에 따라 다양한 방식으로 동작합니다. 예를 들어 ‘-n’ 플래그를 전달하면, 출력되는 모든 줄에 번호가 매겨집니다. 이러한 방식으로, 다양한 플래그를 사용하여 ‘cat’ 명령어의 동작 방식을 변경할 수 있습니다.
cat 명령어 사용 방법
‘cat’ 명령어를 사용하려면, 명령어와 함께 읽어들이거나 연결할 파일의 이름을 입력하면 됩니다. 예를 들어 ‘rainbow.txt’ 파일의 내용을 출력하려면 다음 명령어를 실행합니다.
cat rainbow.txt
플래그를 추가하여 ‘cat’ 명령어의 동작 방식을 변경할 수도 있습니다. 예를 들어, ‘-n’ 플래그를 사용하면 모든 출력 줄에 번호를 매길 수 있습니다. 위 예시에서 ‘rainbow.txt’ 파일의 모든 줄에 번호를 매기려면 다음 명령어를 실행합니다.
cat -n rainbow.txt
두 명령어의 출력 결과는 다음과 같습니다.
‘cat’ 명령어와 함께 사용할 수 있는 여러 개의 플래그 또는 옵션을 결합하려면, 단순히 각 플래그를 나열하거나 공백으로 구분하면 됩니다. 아래에 보이는 ‘-E’ 플래그는 출력 줄의 끝에 달러 기호($)를 추가하는 데 사용됩니다.
이는 통화 값을 표시할 때 유용할 수 있습니다. ‘cat’ 명령어에서 다양한 방식으로 여러 플래그를 결합할 수 있습니다.
여러 파일을 연결하고 표시하려면, 파일 이름을 공백으로 구분하여 차례대로 입력하면 됩니다. 예를 들어, ‘rainbow.txt’와 ‘primary.txt’ 두 파일을 연결하려면 다음 명령어를 실행합니다.
cat rainbow.txt primary.txt
명령어 실행 결과는 다음과 같습니다.
‘rainbow.txt’와 ‘primary.txt’ 파일은 이 작업 이후에도 변경되지 않고 그대로 유지됩니다. 파일 내용의 출력 순서는 명령에 나타나는 파일 순서에 따라 결정되며, 첫 번째 파일부터 마지막 파일까지 순서대로 출력됩니다. 또한, 여러 파일을 연결하고 표시할 때 플래그를 추가하여 사용할 수도 있습니다.
‘cat’ 명령어 사용 시 주의할 점은, 파일이 제공되지 않거나 대시(-)가 제공되는 경우, ‘cat’ 명령어는 파일 대신 표준 입력(키보드)에서 입력을 받는다는 것입니다.
따라서 ‘cat’ 명령어는 사용자가 키보드를 통해 입력하는 내용을 그대로 표시합니다. 직접 확인하려면 다음 명령어를 실행해 보십시오.
cat
명령어 실행 후 깜빡이는 커서가 나타나며, 이는 키보드 입력을 기다리고 있다는 의미입니다. 텍스트를 입력한 후 Enter 키를 누르면, 입력한 내용이 아래와 같이 표준 출력으로 표시됩니다.
‘CTRL + C’를 눌러 종료하고 ‘cat’ 명령어에 대한 입력 전달을 중지할 수 있습니다.
또한, ‘cat’ 명령어를 사용하면 활성 디렉토리에 있는 특정 유형의 파일 내용들을 연결하여 출력할 수 있습니다. 이는 별표(*) 와일드카드를 사용하여 가능합니다. 예를 들어, 특정 디렉토리에 있는 모든 텍스트 파일(.txt)의 내용을 출력하려면 다음 명령어를 실행합니다.
cat *.txt
명령어의 출력 및 추가 활용
‘cat’ 명령어의 일반적인 사용법 외에도, 리디렉션을 통해 ‘cat’ 명령어의 기능을 확장할 수 있습니다. 앞서 언급했듯이, ‘cat’ 명령어는 기본적으로 터미널 화면에 결과를 출력합니다.
하지만 리디렉션을 이용하면, 출력을 화면에 표시하는 대신, 다른 파일로 출력 결과를 보낼 수 있습니다.
리눅스에서 출력 리디렉션 연산자는 ‘>(보다 큼 기호, 또는 셰브론이라고도 함)’입니다.
cat rainbow.txt
예를 들어, 위의 명령어를 실행하면 ‘rainbow.txt’ 파일의 내용이 화면에 출력됩니다.
cat colors.txt > rainbow.txt
하지만 다음 명령어를 실행하면,
‘rainbow.txt’의 내용이 화면에 출력되지 않습니다. 대신, 출력 결과는 ‘colors.txt’ 파일에 저장됩니다. 이는 한 파일의 내용을 다른 파일로 복사하는 효과적인 방법이 될 수 있습니다.
리눅스에서 출력 리디렉션의 기본 동작은 리디렉션할 파일의 내용을 전부 덮어쓰는 것입니다. 예를 들어, 위의 예에서 ‘rainbow.txt’의 모든 내용은 ‘colors.txt’의 내용으로 덮어쓰여집니다. 리디렉션할 파일의 기존 내용을 유지하고 새로운 내용을 추가하려면, 리디렉션 시 ‘>>’를 사용해야 합니다.
‘>>’를 사용하여 ‘rainbows.txt’의 출력을 ‘colors.txt’로 리디렉션한 후, ‘colors.txt’에는 ‘rainbows.txt’에서 발견된 색상이 포함되어 있는 것을 확인할 수 있습니다.
‘cat’ 명령어의 기능을 더 확장하기 위해, ‘cat’ 명령어를 사용하여 파일을 만들고 내용을 쓸 수 있습니다. 파일이 제공되지 않았을 때 표준 입력에서 데이터를 읽는 ‘cat’ 명령어의 기본 동작과 리디렉션을 결합하면 됩니다.
cat > dark.txt
다음 코드를 실행하면,
출력은 ‘dark.txt’로 리디렉션됩니다. 파일 이름을 지정하지 않았으므로, ‘cat’ 명령어는 키보드 입력을 기다립니다.
따라서 ‘dark.txt’에 저장하려는 텍스트를 입력하고, Enter 키를 눌러 줄을 바꾼 후, 완료되면 ‘CTRL + D’를 눌러 입력한 내용을 파일에 저장합니다.
존재하지 않는 파일로 리디렉션하기 때문에 ‘dark.txt’ 파일이 자동으로 생성되며, 키보드를 통해 입력한 내용이 파일에 저장됩니다. 이 방법을 통해 ‘cat’ 명령어를 사용하여 파일을 생성하고, 생성과 동시에 내용을 기록할 수 있습니다.
작업 결과는 다음과 같습니다.
cat >> dark.txt
파일 끝에 텍스트를 추가하는 데에도 ‘cat’ 명령어를 사용할 수 있습니다. ‘dark.txt’에 다음 명령어를 사용하여 더 많은 색상을 추가할 수 있습니다.
그런 다음 키보드로 텍스트를 입력하고 ‘CTRL + D’를 눌러 입력한 정보를 저장하면, 새로운 내용이 ‘dark.txt’에 추가됩니다.
cat file1 file2 file3 > file4
‘cat’ 명령어를 사용하여 여러 파일을 하나의 파일로 연결할 수도 있습니다. 이 작업의 기본 구조는 다음과 같습니다.
‘file1’, ‘file2’, ‘file3’의 내용이 순서대로 연결되어 ‘file4’에 저장됩니다. ‘file4’의 기존 내용을 유지하고 싶다면, ‘>>’를 사용해야 합니다. ‘file4’가 존재하지 않으면 자동으로 생성됩니다.
다음은 이에 대한 예시입니다.
cat colors.txt primary.txt > allColors.txt
‘colors.txt’와 ‘primary.txt’의 내용을 ‘allColors.txt’에 저장하려면 다음 명령어를 실행합니다.
cat primary.txt >> colors.txt
‘cat’ 명령어를 사용하면 하나 또는 여러 파일의 내용을 다른 파일에 추가할 수도 있습니다. 이는 출력을 리디렉션할 때 ‘>>’를 사용하여 가능합니다. 이 방법을 사용하면 다른 파일에 저장된 기존 내용을 덮어쓰는 것을 방지할 수 있습니다. 예를 들어, ‘primary.txt’의 내용을 ‘colors.txt’에 추가하려면 다음 명령어를 실행합니다.
결론
‘cat’ 명령어는 사용자가 파일 내용을 연결하고 출력하는 데 매우 유용한 리눅스 명령어입니다. 이 명령어에는 동작 방식을 변경할 수 있는 다양한 플래그가 존재합니다.
리디렉션을 통해 ‘cat’ 명령어의 기능을 확장하여 파일을 생성하고, 복사하고, 여러 파일을 하나의 파일로 합치거나, 기존 파일에 내용을 추가하는 것이 가능합니다. ‘cat’ 명령어에 대해 더 자세히 알고 싶다면, 매뉴얼 페이지를 참조하십시오.
시스템 관리자를 위한 몇 가지 리눅스 명령어를 탐색해볼 수도 있습니다.