Less (유닉스)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
`less`는 1983년 Mark Nudelman에 의해 개발된 유닉스 기반의 텍스트 뷰어 프로그램이다. `more` 명령어의 기능을 개선하여 텍스트의 앞뒤 스크롤을 지원하며, "뒤로도 more"라는 의미에서 이름이 유래되었다. 다양한 운영체제로 이식되었으며, 파일 내용을 화면에 한 번에 한 페이지씩 표시하고, 옵션과 명령어를 통해 뷰어 환경을 설정할 수 있다. lesspipe 확장을 통해 PDF, 멀티미디어, 압축 파일 등 다양한 파일 형식을 지원한다.
더 읽어볼만한 페이지
- 터미널 페이저 - W3m
W3m은 "WWW를 본다"는 뜻의 일본어에서 유래한 텍스트 기반 웹 브라우저로, 키노시타 타츠야에 의해 유지 및 개발되고 있으며 탭 브라우징, 마우스 오른쪽 버튼 메뉴, 이미지/표/프레임 지원, Emacs 내 사용, 로컬 CGI 스크립트 실행, HTML 문서 플레인 텍스트 출력 등의 기능을 제공한다. - 터미널 페이저 - More (명령어)
more는 1978년 다니엘 할버트가 개발한 유닉스 계열 운영체제의 명령어로, 텍스트 파일의 내용을 한 화면씩 보여주는 기능을 수행하며, 다양한 운영 체제로 이식되었다. - GNU 프로젝트 소프트웨어 - GNU 코어 유틸리티
GNU 코어 유틸리티는 유닉스 계열 운영체제에서 파일, 셸, 텍스트 조작을 위한 기본적인 명령어 모음으로, GNU 파일 유틸리티에서 시작하여 3개의 패키지가 통합되어 발전했으며 셸 스크립트 및 시스템 관리에 필수적인 도구를 제공한다. - GNU 프로젝트 소프트웨어 - GNU 허드
GNU 허드는 유닉스 운영 체제를 대체하는 것을 목표로 개발된 GNU 프로젝트의 커널로, 마이크로커널 기반의 서버-클라이언트 아키텍처를 사용하며, 파일 시스템 기능을 확장하는 트랜슬레이터 개념을 제공한다.
Less (유닉스) - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
종류 | 시스템 유틸리티 |
상세 정보 | |
개발자 | 마크 누델만 |
출시일 | 1984년 |
최신 안정화 버전 | 661 |
최신 안정화 버전 출시일 | 2024년 6월 30일 |
리포지토리 | https://github.com/gwsw/less |
프로그래밍 언어 | C |
운영체제 | 크로스 플랫폼 |
라이선스 | 듀얼 라이선스 ( GNU GPLv3 및 커스텀 BSD 스타일 라이선스 ) |
웹사이트 | https://www.greenwoodsoftware.com/less/ |
관련 명령어 | more |
2. 역사
less는 마크 누델만이 1983년부터 1985년 사이에 개발한 유닉스 명령어이다. 당시 널리 사용되던 more 명령어는 텍스트 파일의 내용을 앞에서 뒤로만 볼 수 있었는데, 누델만은 뒤로도 스크롤할 수 있는 기능이 필요하다고 느껴 less를 만들었다. less라는 이름은 '뒤로도 볼 수 있는 more'라는 의미의 농담("backwards more")에서 유래했다. 흔히 less와 more의 차이를 설명하며 less > more라고 표현하는데, 이는 less가 more보다 더 많은 기능을 제공한다는 뜻이다.
원래 less는 유닉스 환경을 위해 개발되었지만, 이후 MS-DOS, 마이크로소프트 윈도우, OS/2, OS-9 등 다양한 운영체제로 이식되었으며, 리눅스와 같은 여러 유닉스 계열 시스템에도 포함되었다.[2] 2012년을 기준으로 GNU 프로젝트의 일부가 되었으며, 현재도 개발자인 마크 누델만이 직접 유지보수하고 있다. 오늘날 대부분의 오픈 소스 기반 유닉스 계열 시스템에 기본 유틸리티로 포함되어 널리 사용되고 있다.
2. 1. 한국어 지원
기존의 `'less'`는 일본어 표시에 널리 사용되던 ISO-2022-JP(JIS 코드), EUC-JP, Shift_JIS 같은 인코딩을 제대로 표시하지 못했다. 다만, 버전 346 이후부터는 UTF-8 표시를 지원하는 것으로 알려져 있다.[6]이 문제를 해결하기 위해 Kazushi (Jam) Marukawa 등이 원본 소스에 적용하는 패치를 만들었다. 이 패치가 적용된 버전은 'jless'라고 불리며, 앞서 언급된 여러 한자 코드(일본어 인코딩)를 자동으로 인식하고 변환하는 기능을 지원한다. 'jless'는 일본 내에서 널리 사용되었고, FreeBSD의 ports collection에도 포함되었다.[7] 또한 Microsoft Windows 환경으로도 이식되었다.
하지만 'jless'에는 몇 가지 문제점이 있다.
- 'jless' 패치를 배포하던 공식 웹사이트는 2010년 기준으로 접속할 수 없게 되었으며,[8] 사실상 개발이 중단되었다.
- 원본 'less'는 자주 업데이트되지만, 'jless'는 버전 382에 대한 패치가 가장 최신 버전이다.
- 유니코드를 지원하지 않는다. 최근 리눅스 배포판에서는 설치 시 기본 언어로 일본어를 선택하면 표준 인코딩으로 UTF-8을 사용하는 경우가 많은데, 'jless'는 UTF-8을 제대로 표시할 수 없다.
이 때문에 'jless' 대신 UTF-8, UTF-7 등 다양한 인코딩을 지원하는 페이지 처리기인 'lv'[9]를 사용하려는 움직임도 있다. 그러나 'lv'가 'less'의 모든 기능을 대체하는 것은 아니다.
3. 사용법
`less` 명령어의 기본적인 사용 구문은 다음과 같다.[12]
`less [옵션] [파일_이름]...`
기본적으로 `less`는 주어진 파일의 내용을 표준 출력으로 한 번에 한 화면씩 보여준다. 만약 파일 이름을 지정하지 않으면, 표준 입력으로부터 내용을 받아와 출력한다. 이는 주로 파이프를 통해 다른 명령어의 출력 결과를 `less`로 넘겨 받아 볼 때 사용된다.
만약 `less`의 출력이 터미널이 아닌 다른 곳으로 리디렉션되면(예를 들어, 다른 명령어로 파이프를 통해 전달되는 경우), `less`는 마치 `cat` 명령어처럼 파일의 전체 내용을 한 번에 출력한다.
`less`가 실행되는 동안에도 옵션을 변경하거나 다양한 명령어를 입력하여 파일 내용을 탐색할 수 있다. 이러한 명령어들은 `more`나 `vi`의 명령어와 유사하며, 파일 내에서 특정 문자열을 검색하는 기능도 제공한다. 자세한 옵션과 명령어는 하위 섹션에서 확인할 수 있다.
3. 1. 자주 사용되는 옵션
- ''-?'' : less에서 사용할 수 있는 명령들에 대한 도움말을 표시한다. 이 옵션이 사용되면 다른 인수는 무시된다.
- ''-a'' : 마지막 줄이 화면에 출력된 후 탐색을 시작한다.
- ''-c'' : 필요할 때 전체 화면을 다시 그린다.
- ''-e'' : 파일의 끝에 두 번 도달하면 자동적으로 종료한다.
- ''-E'' : 파일의 끝에 도달하면 자동적으로 종료한다.
- ''-g'' : 검색된 문자열 중 현재 일치하는 부분만 강조 표시한다.
- ''-i'' : 대소문자를 구분하지 않고 탐색 및 검색한다.
- ''-m'' : 파일 위치를 포함한 더 자세한 프롬프트를 표시한다.
- ''-N'' : 각 행 앞에 행 번호를 표시한다 (소스 코드를 볼 때 유용하다).
- ''-q'' : 특정 오류가 발생하지 않으면 경고음을 내지 않고 조용히 동작한다.
- ''-Q'' : 어떠한 경우에도 경고음을 내지 않는다.
- ''-s'' : 연속되는 빈 줄을 하나의 빈 줄로 합쳐서 표시한다.
- ''-S'' : 긴 줄을 잘라내지 않고 화면 너비를 넘어가면 가로 스크롤로 볼 수 있도록 줄 바꿈을 비활성화한다.
- ''-x숫자'' : 탭 문자를 지정된 숫자만큼의 공백으로 표시한다. 예를 들어 ''-x3''은 탭을 3칸 공백으로 설정한다. 기본값은 8이다 (소스 코드를 볼 때 유용하다).
- ''-X'' : less를 종료할 때 화면 내용을 지우지 않고 그대로 남겨둔다.
- ''--follow-name'' : 파일을 보고 있는 중에 파일 이름이 변경되거나 파일이 교체되는 경우(주로 로그 파일)에도 계속해서 새로운 내용을 따라가며 볼 수 있는 팔로우 모드를 사용한다.
3. 2. 자주 사용되는 명령어
`less`가 파일 내용을 보여주는 동안 여러 가지 명령어를 사용할 수 있다. 이러한 명령어들은 `more`와 `vi`에서 사용하는 명령어들과 유사하다.[12] 텍스트 파일 내에서 특정 문자열을 검색하는 기능도 제공한다.주요 명령어는 다음과 같다.
키 | 명령어 |
---|---|
Space bar | 다음 페이지로 이동 |
d | 다음 반 페이지(half page)로 이동 |
b | 이전 페이지로 이동 |
u | 이전 반 페이지(half page)로 이동 |
v | 현재 파일 내용을 편집기로 열기 (기본 편집기 사용) |
j 또는 Enter | 다음 줄로 이동 |
k | 이전 줄로 이동 |
Home | 파일의 시작 부분으로 이동 |
End | 파일의 끝 부분으로 이동 |
F | 파일의 끝 내용을 실시간으로 계속 읽어 들임 (로그 파일 감시 등에 유용). 종료하려면 Ctrl+C 키를 누른다 (v581 이상에서는 Ctrl+X 로도 가능[5]). |
g 또는 < | 파일의 첫 번째 줄로 이동 |
G 또는 > | 파일의 마지막 줄로 이동 |
nG | n번째 줄로 이동 (n을 지정하지 않으면 파일 끝으로 이동) |
ng | n번째 줄로 이동 (n을 지정하지 않으면 파일 시작으로 이동) |
/pattern | pattern 문자열을 아래 방향으로 검색한다. 정규 표현식 사용 가능. |
?pattern | pattern 문자열을 위 방향으로 검색한다. 정규 표현식 사용 가능. |
&pattern | pattern을 포함하는 줄만 표시한다 (grep과 유사). |
n | 다음 검색 결과로 이동 |
N | 이전 검색 결과로 이동 |
Esc u | 검색 결과 강조 표시를 끈다. |
-옵션 | 해당 옵션 설정을 켜거나 끈다. 예를 들어 -i는 검색 시 대소문자 구분 여부를 토글한다. |
m문자 | 현재 위치를 특정 문자로 기억시킨다. |
문자'' | 문자로 기억시킨 위치로 이동한다. |
= 또는 Ctrl+G | 현재 보고 있는 파일의 정보를 표시한다 (파일명, 줄 번호 등). |
:n | 여러 파일을 열었을 경우, 다음 파일로 이동한다. |
:p | 여러 파일을 열었을 경우, 이전 파일로 이동한다. |
s | 현재 내용을 파일로 저장한다. |
h | 도움말 화면을 보여준다. 도움말 화면 역시 `less`로 표시되며, q 키를 눌러 종료한다. |
q | `less`를 종료한다. |
3. 3. lesspipe 확장
"lesspipe" 확장은 PDF, 멀티미디어 및 압축 보관 파일과 같은 파일 형식을 자동으로 결정하고 PDF 파일의 텍스트, 사진의 메타데이터, 압축 보관 파일의 파일 목록 및 압축 보관 파일의 단일 파일 내용과 같은 파일의 정보를 표시할 프로그램을 자동으로 결정한다.[3][4]4. 사용 예
less -M readme.txt
: "readme.txt" 파일을 읽는다.-M
옵션은 파일 내 현재 위치 등의 정보를 포함한 자세한 프롬프트를 표시한다.[12]file * | less
: 현재 디렉토리에 있는 모든 파일의 종류를 확인하는file
명령어의 결과를 파이프로less
에 넘겨서 한 화면씩 보여준다. 많은 파일의 정보를 확인할 때 유용하다.[12]grep -i void *.c | less -I -p void
: 현재 디렉토리의 모든.c
파일에서 "void"라는 문자열을 대소문자 구분 없이(grep -i
) 검색한 결과를less
로 넘겨 확인한다.less
의-I
옵션은less
내부 검색 시 대소문자를 무시하도록 하며,-p void
옵션은 파일을 열 때 "void" 패턴이 처음 나오는 부분부터 보여준다.[12]less +F /var/log/mail.log
:/var/log/mail.log
파일을 연다.+F
옵션은 파일의 끝 내용을 보여주면서, 파일에 새로운 내용이 추가되면 실시간으로 화면에 업데이트해주는 팔로우(follow) 모드로 동작한다. 주로 실시간으로 내용이 추가되는 로그 파일을 확인할 때 사용된다.[12]
5. 메모리 고려 사항
`--buffers=n` 및 `--auto-buffers` 옵션은 `less`가 입력을 버퍼링하는 데 사용할 수 있는 메모리의 양을 제어한다. 이 기능은 `less`가 실행 중일 때 내용이 수정되거나 삭제된 파일을 직접 확인해야 할 때, 또는 파이프를 통해 데이터를 받아 다시 생성할 수 없는 경우에 해당 데이터를 임의로 접근해야 할 때 특히 유용하다.
반면에, 무제한 버퍼링 설정은 `less`가 입력된 데이터의 크기만큼 메모리를 요청하게 만들 수 있다. 이 경우 시스템은 가상 메모리를 많이 사용하게 되어 RAM과 디스크 간에 데이터를 빈번하게 교환하는 스와핑 현상이 발생할 수 있으며, 이는 시스템 전반의 성능을 크게 저하시킬 수 있다. 심각한 경우에는 메모리 부족 상태를 유발하여 다른 프로그램들이 메모리를 할당받지 못하거나, 운영체제가 할당을 약속했지만 실제로는 존재하지 않는 메모리에 접근하려다 페이지 오류가 발생하여 프로그램이 비정상적으로 종료될 수도 있다.
이러한 이유로, 일부 기업이나 조직에서는 안정적인 시스템 운영을 위해 프로덕션 환경에서 고정된 크기의 버퍼만 사용하도록 `less` 설정을 제한하거나, 경우에 따라서는 `less`의 사용 자체를 권장하지 않기도 한다.
6. 같이 보기
- more (명령어)
- cat (유닉스)
참조
[1]
웹사이트
less, a paginator
https://groups.googl[...]
[2]
웹사이트
Less FAQ
https://www.greenwoo[...]
[3]
웹사이트
lesspipe(1) — less — Debian bullseye — Debian Manpages
https://manpages.deb[...]
[4]
웹사이트
lesspipe(1) — Arch manual pages
https://man.archlinu[...]
[5]
웹사이트
Less version 581
http://www.greenwood[...]
Greenwood Software
2023-07-31
[6]
웹사이트
Less version 346
http://www.greenwood[...]
2011-04-01
[7]
웹사이트
Port description for japanese/less
http://www.freebsd.o[...]
FreeBSD Project(freebsd.org)
2011-04-01
[8]
웹사이트
Jam less (jless)
https://web.archive.[...]
2011-04-01
[9]
웹사이트
LV Homepage
http://www.ff.iij4u.[...]
2016-03-10
[10]
URL
version 23
https://groups.googl[...]
[11]
웹인용
less-661 has been released for general use.
https://www.greenwoo[...]
2024-07-01
[12]
웹인용
http://man7.org/linu[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com