# less(1) 명령어 활용 팁 모음

> Clean Markdown view of GeekNews topic #25539. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25539](https://news.hada.io/topic?id=25539)
- GeekNews Markdown: [https://news.hada.io/topic/25539.md](https://news.hada.io/topic/25539.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-01-04T08:32:33+09:00
- Updated: 2026-01-04T08:32:33+09:00
- Original source: [blog.thechases.com](https://blog.thechases.com/posts/assorted-less-tips/)
- Points: 1
- Comments: 1

## Topic Body

- **less 명령어의 다양한 기능과 단축키 조합**을 통해 파일 탐색, 검색, 필터링, 북마크, 옵션 전환 등을 효율적으로 수행할 수 있음  
- 여러 파일을 동시에 열고 **`:n`, `:p`, `:e`, `:d` 명령으로 파일 간 이동·추가·삭제**가 가능함  
- **검색(`/, ?, n, N`)과 필터링(`&`, `&!`) 기능**을 활용해 특정 패턴을 빠르게 찾거나 제외할 수 있음  
- **북마크(`m`, `'`)와 괄호 매칭 기능**으로 긴 문서나 코드 파일 내 위치 이동을 단순화함  
- **실행 중 옵션 토글(`-S`, `-R`, `-N` 등)과 외부 명령 실행(`!`)** 을 통해 less를 종료하지 않고도 환경을 즉시 조정할 수 있음  

---

### 여러 파일 다루기
- `less`는 파이프라인 끝에서만 사용하는 도구가 아니라, **여러 파일을 직접 인자로 열 수 있음**
  - 예: `less file1 file2 file3`
- 실행 중에도 `:e file.h` 명령으로 **새 파일을 추가**할 수 있음  
- `:n`으로 **다음 파일**, `:p`로 **이전 파일**, `:x` 또는 `:rewind`로 **첫 파일로 이동** 가능  
- `:d` 명령으로 **현재 파일을 목록에서 제거**할 수 있음  

### 탐색 기능
- `3141G`처럼 **숫자+G**를 입력하면 특정 **라인 번호로 이동**  
- `75%`처럼 **숫자+%** 로 파일의 **퍼센트 위치로 점프**  
- `/패턴`으로 **정방향 검색**, `?패턴`으로 **역방향 검색**, `n`/`N`으로 **다음/이전 결과 이동**  
  - `!패턴`은 **일치하지 않는 줄 찾기**, `*`는 **여러 파일에 걸친 검색**, `@`는 **첫 파일부터 검색 시작**, `@*`는 **모든 파일 전체 검색**  

### 필터링 기능
- `&패턴`으로 **해당 패턴과 일치하는 줄만 표시**, 내부 `grep`처럼 동작  
- `&!패턴`으로 **패턴과 일치하지 않는 줄만 표시**, 로그 파일 탐색 시 유용  

### 북마크와 괄호 매칭
- `m` + 문자로 **북마크 설정**, `'` + 문자로 **해당 위치로 이동**  
  - 예: `mo`로 OPTIONS 섹션, `me`로 EXAMPLES 섹션에 북마크 후 `'o`, `'e`로 이동  
- `(`, `[`, `{` 등의 괄호가 화면 첫 줄에 있으면 **해당 괄호 입력 시 짝 괄호로 점프**  
  - 반대로 닫는 괄호가 마지막 줄에 있으면 **열린 괄호로 이동**  
- `alt+ctrl+b` 등으로 **사용자 정의 괄호 쌍 지정** 가능  

### 옵션 토글 및 외부 명령 실행
- 실행 중 `-` 뒤에 옵션을 입력해 **설정 즉시 변경 가능**
  - `-S`: 줄바꿈 토글  
  - `-G`: 검색 하이라이트  
  - `-i`/`-I`: 대소문자 구분 설정  
  - `-R`: ANSI 색상 표시  
  - `-N`/`-n`: 줄 번호 표시/숨김  
- `!` 명령으로 **외부 명령 실행** 가능 (`!date`, `!bc` 등)  

### 환경 변수와 기타 기능
- 자주 사용하는 옵션은 **환경 변수 `$LESS`** 에 저장 가능  
  - 예: `LESS="-RNe"` → 색상 표시, 줄 번호 표시, 파일 끝에서 자동 종료  
- `v` 명령으로 **현재 파일을 `$VISUAL` 편집기에서 열기**  
- `o` 또는 `O` 명령으로 **표준 입력으로 읽은 내용을 파일로 저장** 가능  
- `less`는 `ctags` 기반 **태그 점프 기능**을 지원하지만, 사용 빈도는 낮음

## Comments



### Comment 48632

- Author: neo
- Created: 2026-01-04T08:32:33+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46464120) 
- `follow` 기능을 빼먹은 게 의외였음. 처음엔 좀 **이상한 UX**처럼 느껴지지만 익숙해지면 `tail`보다 나은 경우가 많음  
  `less +F`로 실행하면 입력 스트림이나 파일을 실시간으로 따라가며 보여줌. `&lt;C-c&gt;`로 팔로우를 멈추고 일반 `less`처럼 탐색 가능하고, 다시 `F`(대문자)를 누르면 팔로우 재개됨  
  - 파이프 입력(`kubectl logs | less +F`)을 팔로우할 때 `&lt;C-c&gt;`를 누르면 파이프 전체 프로세스가 종료되어 다시 `F`로 팔로우를 재개할 수 없게 됨. `less`에는 `&lt;C-x&gt;`로 팔로우를 멈추는 대안이 있지만 대부분의 셸이 이 키를 가로챔  
  - `tail`에서는 엔터를 눌러 마지막 줄 아래에 **빈 줄**을 추가할 수 있음. 여러 번 실행 결과를 구분해서 보기 좋기 때문에 이 기능 하나 때문에 아직도 `tail`을 씀  
  - “조금 이상하다”는 표현보다는 **UX가 나쁘다**고 생각함. 굳이 모드 전환을 요구할 필요 없이 새 데이터가 생기면 자동으로 갱신되면 좋겠음  
  - 새 출력이 자동으로 추가되면서도 동시에 탐색할 수 있는 모드가 있으면 좋겠음. 터미널처럼 **자동 스크롤 토글**만 있으면 충분할 것 같음  
  - 예전엔 “follow”가 파일 디스크립터를 특별히 다루는 복잡한 기능인 줄 알았는데, 사실은 단순히 **EOF 이후 계속 폴링**하는 것뿐이었음. 즉, 일반 파일 열기와 팔로우 모드 간에는 본질적 차이가 없고 소프트웨어가 쉽게 전환할 수 있음  

- `-X` 또는 `--no-init` 옵션은 종료 시 화면을 지우지 않게 해줌. 나는 보통 **화면을 유지**해서 이전 내용을 참고하거나 복사·붙여넣기할 수 있게 하는 걸 선호함  
  - `-X` 동작을 가끔만 쓰고 싶다면 [이 스레드의 팁](https://news.ycombinator.com/item?id=46472859)을 참고할 수 있음  
  - `-E`와 함께 쓰면 출력이 터미널 크기보다 작을 때 즉시 종료함. 여러 옵션을 조합해 “less -SEXIER”를 자주 사용함. 기억하기도 쉬움  

- 긴 로그를 디버깅할 때 `&`로 읽고 싶은 부분만 필터링하고 `&!`로 불필요한 부분을 제외함. **정규식**도 지원함. 느릴 때도 있지만 즉석에서 필터링할 때 유용함  

- 두 가지 유용한 팁이 있음  
  `-L` 옵션은 입력 파일 전처리를 건너뛰어, 로그 파일 이름이 `logfile.1`, `logfile.2`처럼 회전된 경우 `nroff`로 잘못 처리되는 걸 방지함  
  또, 검색 시 첫 글자로 `Ctrl-R`을 입력하면 **정규식이 아닌 리터럴 문자열**로 검색할 수 있음  

- `~/.lesskey` 파일로 키 바인딩을 설정할 수 있음. 나는 `s`를 뒤로 스크롤하도록 바인딩해서 `d`와 `s`로 한 손으로 빠르게 페이지 업/다운함  
  macOS 기본 `less`에는 이 기능이 없어서 Homebrew로 설치해야 함 ([예시 설정](https://github.com/jez/dotfiles/blob/master/lesskey#L2), [관련 설명](https://apple.stackexchange.com/questions/27269/is-less1-missing-lesskey-functionality))  
  - 나도 `N`을 **next-file**로 바인딩함. macOS에 lesskey가 없는 건 정말 불편함  

- OpenBSD의 `man`은 `less`에 태그를 전달해 `:t test`처럼 특정 섹션으로 바로 이동할 수 있음. 흥미로운 기능이지만 실제로는 거의 쓰지 않음.  
  단순히 `/`로 검색하는 **일관된 인터페이스**가 더 직관적임.  
  참고로 BSD 계열은 `mdoc` 매크로 세트를 사용해 **의미 기반 문서**를 만들고, OpenBSD는 이를 렌더링하기 위해 `mandoc` 프로그램을 사용함 ([mdoc 문서](https://man.openbsd.org/mdoc))  

- `^q`로 `less`를 종료하면서 화면을 지우지 않게 하고, 일반 `q`는 기존처럼 종료 후 화면을 지우게 설정할 수 있음  
  ```
  echo '^q toggle-option -redraw-screen\nq' >> ~/.config/lesskey
  ```  
  `less`를 `-X` 없이 실행해야 하며, `git log`처럼 이전 출력 내용을 참고해야 할 때 특히 유용함  

- `less`에서 외부 명령으로 **파이프**하는 기능도 있음.  
  예를 들어 `ma`로 마크를 지정하고 `|a`로 현재 위치부터 마크까지의 내용을 외부 명령으로 보낼 수 있음.  
  뉴스나 이메일 일부를 저장할 때 유용함.  
  또 `-j` 옵션으로 검색 결과가 화면 상단에서 몇 줄 아래에 표시될지 조정 가능함  
  - 나도 이 파이프 기능을 `git log`에 활용함. 커밋을 선택한 뒤 단축키로 `git show`를 실행하거나, 직접 **fixup** 작업을 수행함.  
    `bash`의 디버그 트랩과 `keyd-application-mapper`를 이용해 현재 실행 중인 명령을 감지하고, 해당 커밋 해시를 추출해 스크립트로 처리함  

- `less(1)`의 **정규식 엔진이 너무 느림**. 큰 파일을 다룰 때는 `grep`이나 `ripgrep`으로 검색 후 그 결과를 `less`로 넘겨서 봄  

- `s` 키로 파이프 데이터를 파일로 저장할 수 있음. 복사·붙여넣기보다 훨씬 편함  
  - 나도 이 기능을 자주 씀. 오래 걸리는 프로세스의 출력을 `less`로 보고, 유용한 결과일 때만 `s`로 저장함.  
    `tee`를 써도 되지만, 그건 항상 파일을 남기기 때문에 불필요한 경우엔 비효율적임
