1P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • 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 명령으로 표준 입력으로 읽은 내용을 파일로 저장 가능
  • lessctags 기반 태그 점프 기능을 지원하지만, 사용 빈도는 낮음
Hacker News 의견들
  • follow 기능을 빼먹은 게 의외였음. 처음엔 좀 이상한 UX처럼 느껴지지만 익숙해지면 tail보다 나은 경우가 많음
    less +F로 실행하면 입력 스트림이나 파일을 실시간으로 따라가며 보여줌. <C-c>로 팔로우를 멈추고 일반 less처럼 탐색 가능하고, 다시 F(대문자)를 누르면 팔로우 재개됨

    • 파이프 입력(kubectl logs | less +F)을 팔로우할 때 <C-c>를 누르면 파이프 전체 프로세스가 종료되어 다시 F로 팔로우를 재개할 수 없게 됨. less에는 <C-x>로 팔로우를 멈추는 대안이 있지만 대부분의 셸이 이 키를 가로챔
    • tail에서는 엔터를 눌러 마지막 줄 아래에 빈 줄을 추가할 수 있음. 여러 번 실행 결과를 구분해서 보기 좋기 때문에 이 기능 하나 때문에 아직도 tail을 씀
    • “조금 이상하다”는 표현보다는 UX가 나쁘다고 생각함. 굳이 모드 전환을 요구할 필요 없이 새 데이터가 생기면 자동으로 갱신되면 좋겠음
    • 새 출력이 자동으로 추가되면서도 동시에 탐색할 수 있는 모드가 있으면 좋겠음. 터미널처럼 자동 스크롤 토글만 있으면 충분할 것 같음
    • 예전엔 “follow”가 파일 디스크립터를 특별히 다루는 복잡한 기능인 줄 알았는데, 사실은 단순히 EOF 이후 계속 폴링하는 것뿐이었음. 즉, 일반 파일 열기와 팔로우 모드 간에는 본질적 차이가 없고 소프트웨어가 쉽게 전환할 수 있음
  • -X 또는 --no-init 옵션은 종료 시 화면을 지우지 않게 해줌. 나는 보통 화면을 유지해서 이전 내용을 참고하거나 복사·붙여넣기할 수 있게 하는 걸 선호함

    • -X 동작을 가끔만 쓰고 싶다면 이 스레드의 팁을 참고할 수 있음
    • -E와 함께 쓰면 출력이 터미널 크기보다 작을 때 즉시 종료함. 여러 옵션을 조합해 “less -SEXIER”를 자주 사용함. 기억하기도 쉬움
  • 긴 로그를 디버깅할 때 &로 읽고 싶은 부분만 필터링하고 &!로 불필요한 부분을 제외함. 정규식도 지원함. 느릴 때도 있지만 즉석에서 필터링할 때 유용함

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

  • ~/.lesskey 파일로 키 바인딩을 설정할 수 있음. 나는 s를 뒤로 스크롤하도록 바인딩해서 ds로 한 손으로 빠르게 페이지 업/다운함
    macOS 기본 less에는 이 기능이 없어서 Homebrew로 설치해야 함 (예시 설정, 관련 설명)

    • 나도 Nnext-file로 바인딩함. macOS에 lesskey가 없는 건 정말 불편함
  • OpenBSD의 manless에 태그를 전달해 :t test처럼 특정 섹션으로 바로 이동할 수 있음. 흥미로운 기능이지만 실제로는 거의 쓰지 않음.
    단순히 /로 검색하는 일관된 인터페이스가 더 직관적임.
    참고로 BSD 계열은 mdoc 매크로 세트를 사용해 의미 기반 문서를 만들고, OpenBSD는 이를 렌더링하기 위해 mandoc 프로그램을 사용함 (mdoc 문서)

  • ^qless를 종료하면서 화면을 지우지 않게 하고, 일반 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를 써도 되지만, 그건 항상 파일을 남기기 때문에 불필요한 경우엔 비효율적임