리눅스에서 터미널 출력을 파일로 저장하는 방법

터미널 출력 파일 00 대표 이미지

터미널은 리눅스 시스템의 핵심입니다. 리눅스에서 실행되는 모든 프로그램은 터미널 명령줄 아래에서 실행됩니다. 여기에는 웹 브라우저와 같은 대규모 프로그램과 텍스트 편집기와 같은 간단한 프로그램이 포함됩니다. 따라서 터미널을 제대로 사용하는 것은 운영 체제가 어떻게 작동하는지 이해하고자 할 때 중요한 단계입니다.

그와 함께, 리눅스 터미널에서 작업할 때 명령의 터미널 출력을 파일로 저장하고 싶을 수 있습니다. 이 파일은 다른 작업에 대한 정보로 사용되거나 단순히 터미널 활동을 기록하는 데 사용될 수 있습니다. 이 문서에서는 터미널 출력을 파일로 저장하는 다섯 가지 방법을 설명합니다.

목차

    1. 특정 터미널 사용
    1. 출력 리디렉션
    1. Tee
    1. 스크립트
    1. 프레임버퍼 터미널 캡처
  • 자주 묻는 질문

또한 읽기: 리눅스에서 dd 명령 사용하기

1. 특정 터미널 사용

이 문제를 해결하는 첫 번째 방법은 출력을 파일로 저장하는 것을 지원하는 터미널을 사용하는 것입니다. 예를 들어, 표준 KDE 설치와 함께 제공되는 Konsole 터미널에는 출력을 파일로 저장하는 옵션이 포함되어 있습니다.

이를 위해 메뉴 바에서 “파일” 버튼을 누르고 “출력을 다른 이름으로 저장 …”을 클릭합니다.

터미널 출력 파일 05 Konsole 출력 다른 이름으로 저장

이렇게 하면 터미널 출력을 저장할 수 있는 창 대화 상자가 열립니다. 거기에서 파일을 저장할 위치를 선택할 수 있습니다.

GNOME 터미널에서도 명령의 출력을 저장할 수 있습니다. 터미널에서 마우스 오른쪽 버튼을 클릭하고 “출력을 HTML로 복사”를 누르세요. 그러면 터미널 텍스트가 클립보드에 로드됩니다. 그 후, 이를 텍스트 편집기에 붙여넣을 수 있습니다.

터미널 출력 파일 06 Gnome HTML로 출력 복사

또한 읽기: 리눅스에서 rm 명령 사용하기

2. 출력 리디렉션

이 문제를 해결하는 또 다른 방법은 UNIX 셸의 내장 연산자를 사용하는 것입니다. 이는 리눅스의 기본 기능으로, 프로그램의 텍스트 출력을 파일로 리디렉션할 수 있습니다. 이를 수행할 수 있는 세 가지 연산자가 있습니다:

  • > 연산자는 파일의 내용을 프로그램의 출력으로 생성하거나 교체합니다. 이는 프로그램의 현재 결과를 동일한 파일에 덤프하고 보기 원할 때 유용합니다.
  • >> 연산자도 프로그램의 출력으로 파일을 생성합니다. 그러나 이 연산자는 출력을 교체하는 대신 추가합니다. 이는 프로그램의 결과를 지속적으로 단일 파일에 덤프하고 싶을 때 유용합니다.
  • 마지막으로, 2> 연산자는 오류를 출력하는 특별한 유형의 연산자입니다. 이는 프로그램이 충돌하기 전에 발생한 문제를 보여주기 때문에 디버깅 중에 매우 유용합니다.

터미널 출력 파일 07 예제 리디렉션

이러한 연산자를 사용하는 방법은 프로그램의 끝에 추가하는 것입니다. 다음 예를 고려해 보세요:

echo"maketecheasier"> hello.txt

나는 echo 프로그램에 “maketecheasier”라는 단어를 출력하도록 지시한 후, > 연산자와 파일 이름을 추가했습니다. 이는 UNIX 셸에 출력을 화면에 인쇄하는 대신 “hello.txt” 파일에 쓰도록 지시했습니다.

터미널 출력 파일 08 Hello Txt

3. Tee

출력 리디렉션 외에도 tee라는 프로그램을 사용하여 터미널 명령의 출력을 저장할 수 있습니다. 이는 표준 입력에서 읽고 쓸 수 있는 GNU 프로그램입니다. 이 프로그램을 UNIX 파이프와 함께 사용하여 명령의 출력을 파일로 작성할 수 있습니다.

다음 예를 고려해 보세요:

echo"maketecheasier"|tee hello.txt

터미널 출력 파일 09 Tee 예제

여기서 출력 리디렉션을 사용하는 대신, 나는 출력을 tee로 파이프( |)했습니다.

참고: 파이프는 한 프로그램의 출력을 다른 프로그램의 입력으로 공급합니다. 이를 통해 여러 프로그램을 함께 연결할 수 있습니다. 단, 모든 프로그램이 표준 입력과 출력을 사용해야 합니다.

또한 읽기: 리눅스에서 터미널 문제 해결하기

4. 스크립트

터미널에서 출력을 가져오는 또 다른 방법은 script라는 리눅스 내장 프로그램을 사용하는 것입니다. 이 프로그램은 터미널에서 입력한 모든 내용과 그 출력을 기록합니다.

스크립트를 사용하여 터미널 세션의 로그를 구문 분석 가능한 텍스트 형식으로 기록할 수 있습니다. 이는 다른 사람에게 지원을 요청하기 위해 오류 로그를 온라인으로 보내고 싶을 때 매우 유용합니다.

사용하려면 다음 명령을 실행하세요:

script filename.txt

터미널 출력 파일 11 스크립트 시작 예제

이렇게 하면 명령을 실행하기 시작할 수 있는 스크립트 환경이 시작됩니다. 그러나 한 가지 중요한 점은 스크립트가 해당 세션에서 수행하는 모든 작업을 캡처한다는 것입니다. 다음 예를 고려해 보세요:

Script started on 2022-03-2718:02:29+08:00 [TERM="rxvt-unicode-256color"TTY="/dev/pts/2"COLUMNS="77"LINES="22"]  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls  
[?2004l  
[0m[01;34mDesktop[0m    [01;34mDownloads[0m  [01;34mmail[0m  [01;34mNews[0m  [01;34mpods[0m  [01;34mdocuments[0m  [00;32mhello.txt[0m  [01;34mMail[0m  [01;34mpics[0m  [01;34mtmp[0m   [01;34mvids[0m  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit  
[?2004l  
exit  
  
Script done on 2022-03-2718:03:19+08:00 [COMMAND_EXIT_CODE="0"]

스크립트는 내가 누른 모든 키 입력과 제어 문자를 포함합니다. 내 경우에는 Tab 및 Backspace 키 입력을 포함한 모든 “보이지 않는“ 키가 포함되었습니다.

세션이 끝나면 exit를 입력하세요. 이렇게 하면 스크립트 프로그램이 종료되고 지정한 파일에 전체 로그가 기록됩니다.

터미널 출력 파일 12 스크립트 고양이

또한 읽기: 리눅스에서 lp 명령을 사용하여 터미널에서 파일 인쇄하기

5. 프레임버퍼 터미널 캡처

마지막으로, 리눅스 프레임버퍼에서 출력을 가져올 수도 있습니다. 이는 텔레타입에서 직접 작업하고 프로그램의 출력을 캡처하려는 경우에 유용합니다.

프레임버퍼 장치를 캡처하려면 텔레타입에서 다음 명령을 실행하세요:

cat/dev/fb0 > capture.raw

터미널 출력 파일 13 캡처 프레임버퍼 원시

한 가지 중요한 점은 이렇게 프레임버퍼 장치를 캡처하면 프레임버퍼의 원시 바이트를 파일로 덤프한다는 것입니다. 해당 파일을 보려면 이미지 편집기에서 로드하고 색상 및 비트 깊이를 수동으로 조정해야 합니다. 이 과정은 시간 소모가 클 뿐만 아니라 잘못할 수도 있습니다.

따라서 이를 처리하는 한 가지 방법은 fbgrab과 같은 타사 프로그램을 사용하는 것입니다. 이는 현재 텔레타입 화면을 프레임버퍼 장치에서 캡처하여 PPM 또는 PNG 파일로 덤프합니다.

fbgrab 설치도 비교적 간단합니다. Debian 및 Ubuntu 기반 배포판에서는 apt를 사용할 수 있습니다:

sudo apt install fbgrab

Arch Linux의 경우 pacman을 실행하세요:

sudo pacman -S fbgrab

터미널 출력 파일 14 fbcat 설치

fbgrab을 사용하여 터미널 출력 캡처하기

설치가 완료되면 Control + Shift + Alt + F3을 눌러 텔레타입으로 이동한 후 fbcat 또는 fbgrab을 실행하세요.

Fbcat은 현재 프레임버퍼 화면을 캡처하여 PPM 이미지로 저장하는 간단한 프로그램입니다. 이는 이미지 편집기에서 로드하여 PNG로 변환할 수 있는 저수준 원시 이미지 형식입니다. Fbcat은 주로 원시 이미지 형식으로 제대로 캡처해야 하는 낮은 비트 깊이 디스플레이를 캡처하려고 할 때 유용합니다.

fbcat 프로그램을 사용하여 캡처하려면 다음 명령을 실행하세요:

fbcat > capture.ppm

터미널 출력 파일 15 캡처 Ppm

이렇게 하면 현재 표시된 화면을 캡처하고 내용을 capture.ppm 파일에 덤프합니다.

반면 fbgrab은 더 높은 비트 깊이 디스플레이를 캡처하도록 설계된 더 복잡한 프로그램입니다. 대부분의 경우 텔레타입 화면을 캡처하는 데 사용합니다. 기본적으로 PNG로 저장하는 것을 지원하며 캡처할 다른 텔레타입을 선택할 수 있는 옵션이 있습니다.

fbgrab 프로그램을 사용하여 캡처하려면 다음 명령을 실행하세요:

sudo fbgrab -c3 capture.png

터미널 출력 파일 16 Fbgrab 예제

이렇게 하면 세 번째 텔레타입 화면을 캡처하여 capture.png 파일에 저장합니다.

리눅스 터미널에 대한 더 많은 가이드를 찾고 있다면, 명령줄에서 이메일을 보내는 방법에 대해 논의하는 내용을 확인해 보세요.

자주 묻는 질문

1. 도와주세요! Fbgrab이 작동하지 않으며 그림이 검정색 또는 빈 화면입니다.

이는 아마도 fbgrab이 터미널 출력을 캡처하기 위해 다른 프레임버퍼 장치를 사용하고 있기 때문입니다. 시스템이 사용하는 현재 프레임버퍼 장치를 확인하려면 “ /dev” 폴더를 나열하세요.

ls/dev

그곳에서 “ /dev/fbX” 장치를 찾으세요. 일반적으로 리눅스는 프레임버퍼에 “ /dev/fb0”를 사용합니다. 그러나 시스템이 “ /dev/fb1”과 같은 다른 프레임버퍼를 사용하고 있다면, fbgrab에 해당 프레임버퍼에서 가져오도록 지시하는 다음 명령을 전달할 수 있습니다:

fbgrab -d1 capture.png

2. 프로그램에 입력으로 쓴 파일의 내용을 가져올 수 있나요?

네! 위에서 논의한 세 가지 연산자 외에도 < 연산자를 사용하여 파일에서 데이터를 가져올 수 있습니다. 그러면 셸은 이를 프로그램의 입력으로 처리합니다.

이렇게 하면 다른 프로그램에 텍스트를 인쇄하도록 의존할 필요가 없습니다. 다음 예를 고려해 보세요:

[1]cat test.txt | program  
[2] program < test.txt
  • 첫 번째 예는 cat 프로그램을 호출하여 텍스트를 로드한 다음, cat의 출력을 파이프 연산자로 로드하고 프로그램에 파이프합니다.
  • 반면 두 번째 예는 즉시 프로그램을 호출한 다음 < 연산자를 선택하여 다음 인수를 입력으로 처리합니다.

3. 스크립트를 사용하여 단일 명령의 출력만 캡처할 수 있나요?

네, 단일 명령에 대해서만 스크립트를 사용할 수 있습니다. 이는 문제 해결 중 단일 프로그램의 출력만 캡처하고 싶을 때 매우 유용합니다. 다음 명령을 실행하여 수행하세요:

script -c"your-command" test.txt

-c 플래그는 스크립트 프로그램에 프로그램: your-command만 실행하도록 지시합니다. 그 후, 출력은 test.txt라는 텍스트 파일에 기록됩니다.

이미지 출처: Unsplash