Linux에서 less 명령을 사용하는 방법

less 명령어: 리눅스 텍스트 파일 탐색의 핵심

less 명령어는 텍스트 파일 내용을 한 화면씩 보여주는 강력한 도구입니다. 겉보기에는 단순해 보일 수 있지만, 이 명령어는 다양한 기능을 내포하고 있으며, 리눅스 사용자에게 필수적인 요소입니다.

less 명령어의 유래

less 명령어는 더 오래된 more 명령어에서 발전되었습니다. more 명령어는 1978년 버클리 소프트웨어 배포 유닉스(3.0BSD)에서 처음 소개되었으며, 한 번에 한 화면씩 텍스트를 표시하는 기능을 제공했습니다. 하지만 more 명령어는 파일 내에서 뒤로 스크롤할 수 없다는 제한점이 있었습니다.

이러한 제약을 극복하기 위해 Mark Nudelman은 1983년에 less 명령어 개발을 시작했습니다. less 명령어는 1985년에 처음 공개되었으며, 파일을 뒤로 스크롤하는 기능을 포함하여 more 명령어의 단점을 보완했습니다. 현재까지도 Mark Nudelman은 less 명령어의 유지 보수를 담당하고 있습니다.

리눅스 사용자라면 less 명령어를 사용하지 않은 사람은 거의 없을 것입니다. 텍스트 파일을 페이징하는데 사용하지 않았더라도, man 명령어를 통해 매뉴얼 페이지를 볼 때 less 명령어가 사용됩니다. less 명령어는 리눅스 환경에서 매우 중요한 역할을 담당합니다.

less가 더 나은 이유

less 명령어는 more 명령어에 비해 훨씬 다양한 기능을 제공합니다. 수많은 명령줄 옵션과 응용 프로그램 내 명령 키를 통해 사용자 편의성을 높였습니다. less 매뉴얼 페이지more 매뉴얼 페이지를 비교해 보면 less 명령어의 기능이 얼마나 풍부한지 알 수 있습니다.

less 명령어는 more 명령어의 가장 큰 단점이었던 뒤로 스크롤 불가능 문제를 해결했을 뿐 아니라, 파이프 입력에서도 뒤로 페이징할 수 있습니다. 또한 파일 탐색, 여러 파일 보기, 텍스트 검색, 책갈피 기능, 파이프 입력 처리 등 다양한 기능을 제공하여 사용자가 텍스트 파일을 더욱 효율적으로 다룰 수 있도록 합니다. 따라서 more 명령어 대신 less 명령어를 사용하는 것이 좋습니다.

less로 파일 읽기

less 명령어를 사용하여 파일을 읽으려면 다음과 같이 명령줄에 파일 이름을 입력합니다.

less Dr-Jekyll-and-Mr-Hyde-001.txt

파일이 로드되면 터미널 창에 파일 내용의 시작 부분이 표시됩니다. 마우스 휠을 사용하여 텍스트를 앞뒤로 스크롤할 수 있습니다. 또한 스페이스바나 Page Down 키를 눌러 한 화면씩 앞으로 이동하고, Page Up 키를 눌러 뒤로 이동할 수 있습니다. Home 키와 End 키를 누르면 각각 파일의 시작과 끝으로 이동합니다.

화면 왼쪽 하단에는 파일 이름이 표시됩니다. 파일 내에서 이동을 시작하면 파일 이름이 사라지고, 대신 명령어 입력 프롬프트가 나타납니다. less 명령어를 종료하려면 ‘q’ 키를 누릅니다.

줄 번호 표시

텍스트 파일의 각 줄에 번호를 매기려면 ‘-N’ 옵션을 사용합니다.

less -N Dr-Jekyll-and-Mr-Hyde-001.txt

줄 번호는 일반적인 산문 형식으로 작성되지 않은 로그 파일이나 기타 파일에서 특정 행 또는 섹션을 참조할 때 유용합니다.

텍스트 검색

파일 내에서 특정 텍스트를 검색하려면 ‘/’ 키를 누른 다음 검색어를 입력합니다. 검색은 대소문자를 구분합니다. 검색어는 화면 하단에 표시되며, ‘Enter’ 키를 누르면 검색이 시작됩니다.

예를 들어 검색어로 “Enfield”를 입력하면 화면 하단에 해당 검색어가 표시됩니다.

검색은 현재 위치에서 파일 끝까지 진행됩니다. 파일 전체를 검색하려면 검색 전에 파일의 시작 부분으로 이동해야 합니다. 검색 결과가 없을 경우 관련 메시지가 표시되며, 검색 결과가 발견되면 해당 위치로 화면이 이동합니다.

다음 검색 결과로 이동하려면 ‘n’ 키를 누르고, 이전 검색 결과로 이동하려면 ‘N’ 키를 누릅니다.

파일의 현재 위치에서 파일 시작 방향으로 뒤로 검색하려면 ‘?’ 키를 누르고 검색어를 입력합니다. 다음 검색 결과로 이동하려면 ‘n’ 키를 누르고, 이전 검색 결과로 이동하려면 ‘N’ 키를 누릅니다.

뒤로 검색을 할 때 ‘n’ 키는 파일 상단에 더 가까운 다음 검색 결과를 찾고, ‘N’ 키는 파일 하단에 더 가까운 이전 검색 결과를 찾습니다. 즉, 뒤로 검색 시에는 ‘n’과 ‘N’ 키의 동작이 반대로 됩니다.

검색어를 포함하여 파일 열기

‘-p(패턴)’ 옵션을 사용하면 less 명령어가 파일에서 특정 검색어를 찾아, 일치하는 첫 번째 검색어가 있는 페이지를 표시할 수 있습니다. 물론, 검색어가 파일의 첫 번째 페이지에 없는 경우에만 해당됩니다.

‘-p’ 옵션과 검색어 사이에는 공백이 없습니다.

less -pEnfield Dr-Jekyll-and-Mr-Hyde-001.txt

파일이 열리면 검색어와 일치하는 첫 번째 항목이 강조 표시됩니다.

주요 탐색 키

다음은 텍스트 파일 탐색에 유용한 주요 키입니다.

한 줄 앞으로 이동 아래쪽 화살표, Enter, e 또는 j
한 줄 뒤로 이동 위쪽 화살표, y 또는 k
한 페이지 앞으로 이동 스페이스바 또는 Page Down
한 페이지 뒤로 이동 Page Up 또는 b
오른쪽으로 스크롤 오른쪽 화살표
왼쪽으로 스크롤 왼쪽 화살표
파일 맨 위로 이동 Home 또는 g
파일 맨 아래로 이동 End 또는 G
특정 줄로 이동 줄 번호를 입력한 다음 ‘g’ 키를 누릅니다.
파일의 특정 백분율 위치로 이동 백분율 값을 입력한 다음 ‘p’ 또는 ‘%’ 키를 누릅니다.
앞으로 검색 ‘/’ 키를 누르고 검색어를 입력한 후 Enter 키를 누릅니다.
뒤로 검색 ‘?’ 키를 누르고 검색어를 입력한 후 Enter 키를 누릅니다.
다음 검색 결과 n
이전 검색 결과 N
종료 q

빈 줄 압축

‘-s(빈 줄 압축)’ 옵션은 연속된 빈 줄을 하나의 빈 줄로 대체합니다.

예제 파일에 연속된 빈 줄이 여러 개 있는 경우, ‘-s’ 옵션을 사용하면 빈 줄이 어떻게 압축되는지 확인할 수 있습니다.

less -s Dr-Jekyll-and-Mr-Hyde-001.txt

연속된 두 개 이상의 빈 줄이 각각 하나의 빈 줄로 대체되었습니다.

여러 파일 보기

less 명령어는 여러 파일을 동시에 열 수 있습니다. 파일을 앞뒤로 이동할 때 less 명령어는 각 파일에서 마지막으로 봤던 위치를 기억합니다.

less Dr-Jekyll-and-Mr-Hyde-001.txt Dr-Jekyll-and-Mr-Hyde-002.txt

파일이 열리면 첫 번째 파일이 표시되고, 현재 보고 있는 파일과 총 파일 개수가 화면 하단에 표시됩니다.

다음 파일로 이동하려면 ‘:’ 키를 누른 다음 ‘n’ 키를 누릅니다.

화면이 변경되어 두 번째 파일이 표시되고, 하단 정보가 업데이트되어 두 번째 파일을 보고 있음을 나타냅니다.

이전 파일로 이동하려면 ‘:’ 키를 누른 다음 ‘p’ 키를 누릅니다.

마크 기능

less 명령어는 특정 위치에 마크를 설정하여 쉽게 돌아갈 수 있도록 합니다. 각 마크는 문자로 표시됩니다. 현재 표시된 줄에 마크를 설정하려면 ‘m’ 키를 누른 다음 원하는 문자를 입력합니다. 예를 들어 ‘m’ 키를 누른 다음 ‘a’ 키를 누르면 해당 줄에 ‘a’ 마크가 설정됩니다.

‘m’ 키를 누르면 화면 하단에 문자를 입력하라는 프롬프트가 표시됩니다.

문자를 입력하면 프롬프트가 사라집니다.

파일 내에서 다른 위치로 이동한 후, 어포스트로피(‘) 키를 누른 다음 돌아가고 싶은 마크의 문자를 입력하면 해당 마크 위치로 쉽게 돌아갈 수 있습니다. 어포스트로피 키를 누르면 이동하려는 마크를 묻는 프롬프트가 나타납니다.

돌아가려는 마크의 문자를 누르면 해당 위치가 표시됩니다.

파이프 입력 사용

less 명령어는 파일뿐만 아니라 파이프된 텍스트 스트림으로 제공되는 정보도 표시할 수 있습니다. dmesg 명령어는 커널 링 버퍼 메시지를 표시합니다. dmesg 명령어의 출력을 less 명령어로 파이프하여 볼 수 있습니다.

dmesg | less

dmesg 명령어의 출력이 less를 통해 표시됩니다.

파이프된 입력도 파일처럼 페이징하고 검색할 수 있습니다. 가장 최근 메시지를 보려면 ‘End’ 키를 눌러 파일 맨 아래로 이동합니다.

새 메시지가 계속 추가될 때마다 ‘End’ 키를 눌러 파일 맨 아래로 이동해야 합니다. 이런 방식은 번거롭습니다. 새 데이터가 추가될 때마다 항상 텍스트 하단을 less로 표시하려면 ‘+F(앞으로)’ 옵션을 사용합니다. + 기호는 옵션 플래그로 사용되며, – 기호와 다릅니다.

dmesg | less +F

‘+’ 옵션 플래그는 less 내부에서 해당 명령이 사용된 것처럼 처리하도록 지시합니다. ‘+F’ 옵션을 사용하지 않은 경우, less 내부에서 ‘F’ 키를 눌러 동일한 효과를 얻을 수 있습니다.

less는 dmesg의 가장 최근 메시지를 표시하고, 더 많은 데이터를 기다리고 있다는 메시지를 보여줍니다. 새로운 커널 메시지가 나타나면 화면이 스크롤되어 항상 최신 메시지를 볼 수 있습니다.

이 모드에서는 스크롤하거나 페이지를 이동할 수 없습니다. 오직 파이프된 텍스트의 맨 아래 부분을 표시하는 데만 사용됩니다. 이 모드를 종료하려면 ‘Ctrl + c’ 키를 누르면 됩니다. 그러면 일반적인 less 모드로 돌아갑니다.

less로 파일 편집

less 명령어를 사용하여 파일을 편집할 수 있습니다. less 명령어 자체는 파일을 편집할 수 없지만, 파일을 보는 중에 ‘v’ 키를 누르면 해당 파일이 기본 편집기로 전송됩니다. 편집기를 종료하면 다시 less로 돌아갑니다.

파일을 보는 중에 ‘v’ 키를 누릅니다.

파일이 기본 편집기(이 경우 nano)에 로드됩니다.

편집기를 닫으면 less 화면으로 돌아갑니다.

결론

언뜻 보기에 less 명령어가 more 명령어보다 복잡해 보일 수 있지만, 실제로는 less 명령어의 다양한 기능을 통해 파일 탐색과 관리를 훨씬 효율적으로 수행할 수 있습니다. 리눅스 사용자라면 less 명령어의 기능을 숙지하고 적극적으로 활용하는 것이 좋습니다.