# Eza: 현대적이고 유지 관리되는 ls 대체 프로그램

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15984](https://news.hada.io/topic?id=15984)
- GeekNews Markdown: [https://news.hada.io/topic/15984.md](https://news.hada.io/topic/15984.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-07-23T22:34:00+09:00
- Updated: 2024-07-23T22:34:00+09:00
- Original source: [github.com/eza-community](https://github.com/eza-community/eza)
- Points: 3
- Comments: 1

## Topic Body

### eza

#### eza 소개
- **eza**는 Unix와 Linux 운영체제에 기본으로 제공되는 파일 목록 명령어 `ls`의 현대적 대체품임
- 파일 유형과 메타데이터를 구분하기 위해 색상을 사용함
- 심볼릭 링크, 확장 속성, Git을 인식함
- 작고 빠르며 단일 바이너리로 제공됨
- 사용자 친화적이고 기능이 풍부한 `ls`의 대체품을 목표로 함

#### eza의 주요 기능
- exa 2021에서 발생한 "그리드 버그" 수정
- 하이퍼링크 지원
- 마운트 포인트 세부 정보 제공
- Selinux 컨텍스트 출력
- Git 저장소 상태 출력
- 사람이 읽기 쉬운 상대 날짜 표시
- 여러 보안 수정 사항
- 밝은 터미널 색상 지원
- 다양한 작은 버그 수정 및 변경 사항

#### 설치 방법
- eza는 Windows, macOS, Linux에서 사용 가능
- 플랫폼 및 배포판별 설치 지침은 INSTALL.md에서 확인 가능

#### 명령줄 옵션
##### 표시 옵션
- **-1**, **--oneline**: 한 줄에 하나의 항목 표시
- **-G**, **--grid**: 항목을 그리드 형태로 표시 (기본값)
- **-l**, **--long**: 확장된 세부 정보와 속성 표시
- **-R**, **--recurse**: 디렉토리 재귀적으로 탐색
- **-T**, **--tree**: 디렉토리를 트리 형태로 재귀적으로 탐색
- **-x**, **--across**: 그리드를 가로로 정렬
- **-F**, **--classify=(when)**: 파일 이름에 유형 표시 (항상, 자동, 안함)
- **--colo[u]r=(when)**: 터미널 색상 사용 시기 설정 (항상, 자동, 안함)
- **--colo[u]r-scale=(field)**: `field`의 수준을 구별하여 강조 (전체, 나이, 크기)
- **--color-scale-mode=(mode)**: --color-scale에서 고정 색상 또는 그라데이션 사용 (고정, 그라데이션)
- **--icons=(when)**: 아이콘 표시 시기 설정 (항상, 자동, 안함)
- **--hyperlink**: 항목을 하이퍼링크로 표시
- **--absolute=(mode)**: 절대 경로로 항목 표시 (켜짐, 따름, 꺼짐)
- **-w**, **--width=(columns)**: 화면 너비를 열 단위로 설정

##### 필터링 옵션
- **-a**, **--all**: 숨김 파일 및 '점' 파일 표시
- **-d**, **--list-dirs**: 디렉토리를 일반 파일처럼 나열
- **-L**, **--level=(depth)**: 재귀 깊이 제한
- **-r**, **--reverse**: 정렬 순서 반대로
- **-s**, **--sort=(field)**: 정렬할 필드 설정
- **--group-directories-first**: 디렉토리를 다른 파일보다 먼저 나열
- **-D**, **--only-dirs**: 디렉토리만 나열
- **-f**, **--only-files**: 파일만 나열
- **--no-symlinks**: 심볼릭 링크 표시 안함
- **--show-symlinks**: 심볼릭 링크 명시적으로 표시
- **--git-ignore**: `.gitignore`에 언급된 파일 무시
- **-I**, **--ignore-glob=(globs)**: 무시할 파일의 글로브 패턴 설정

##### 긴 보기 옵션
- **-b**, **--binary**: 파일 크기를 이진 접두사로 표시
- **-B**, **--bytes**: 파일 크기를 바이트 단위로 표시
- **-g**, **--group**: 각 파일의 그룹 표시
- **-h**, **--header**: 각 열에 헤더 행 추가
- **-H**, **--links**: 각 파일의 하드 링크 수 표시
- **-i**, **--inode**: 각 파일의 inode 번호 표시
- **-m**, **--modified**: 수정된 타임스탬프 필드 사용
- **-M**, **--mounts**: 마운트 세부 정보 표시 (Linux 및 MacOS만 해당)
- **-S**, **--blocksize**: 할당된 파일 시스템 블록 크기 표시
- **-t**, **--time=(field)**: 사용할 타임스탬프 필드 설정
- **-u**, **--accessed**: 접근된 타임스탬프 필드 사용
- **-U**, **--created**: 생성된 타임스탬프 필드 사용
- **-X**, **--dereference**: 파일 정보에 대해 심볼릭 링크 해제
- **-Z**, **--context**: 각 파일의 보안 컨텍스트 표시
- **-@**, **--extended**: 각 파일의 확장 속성과 크기 표시
- **--changed**: 변경된 타임스탬프 필드 사용
- **--git**: 각 파일의 Git 상태 표시
- **--git-repos**: 각 디렉토리의 Git 상태 표시
- **--git-repos-no-status**: 디렉토리가 Git 저장소인지 여부만 표시 (더 빠름)
- **--no-git**: Git 상태 표시 안함
- **--time-style**: 타임스탬프 형식 설정
- **--total-size**: 재귀적 디렉토리 크기 표시
- **--no-permissions**: 권한 필드 표시 안함
- **-o**, **--octal-permissions**: 각 파일의 권한을 8진수 형식으로 표시
- **--no-filesize**: 파일 크기 필드 표시 안함
- **--no-user**: 사용자 필드 표시 안함
- **--no-time**: 시간 필드 표시 안함
- **--stdin**: stdin에서 파일 이름 읽기

#### eza 기여 방법
- eza에 기여하려면 먼저 행동 강령을 따라야 함
- 행동 강령을 이해한 후 CONTRIBUTING.md를 참조하여 실제 해킹에 대한 정보를 얻을 수 있음

### GN⁺의 정리
- **eza**는 `ls`의 현대적 대체품으로, 더 많은 기능과 사용자 친화적인 인터페이스를 제공함
- 다양한 색상 옵션과 Git 상태 표시 등 유용한 기능을 포함하고 있음
- Windows, macOS, Linux에서 모두 사용 가능하며, 설치 방법도 간단함
- `ls`와 유사하지만 더 많은 옵션을 제공하여 파일 목록 작업을 더 효율적으로 수행할 수 있음
- 비슷한 기능을 제공하는 도구로는 `exa`가 있음

## Comments



### Comment 27498

- Author: neo
- Created: 2024-07-23T22:34:01+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41031112) 
- "human readable dates"가 불편함. 디렉토리 목록에서 날짜와 시간을 보고 싶음
  - 예를 들어, "1 day ago" 대신 정확한 시간 표시를 원함
  - 무한 스크롤의 결과일 수도 있음

- `lsd`도 있지만 `eza`를 선호함
  - 현대적인 명령어 도구들 추천
    - `bat` - 하이라이트 기능이 있는 `cat`
    - `difftastic` - 더 나은 `diff`
    - `gdu` - SSD용 디스크 공간 분석기
    - `zoxide` - 현대적인 `cd`
    - `fd` - `find` 대체
    - `rg` - `ripgrep` (`grep`)
    - `fzf` - 퍼지 파인더
    - `jless` - 마우스 폴딩 기능이 있는 JSON 뷰어
    - `dra` - 릴리스 자산 다운로드 및 설치
    - `lazygit` - Git TUI
    - `lazydocker` - Docker TUI
    - `yazi` - 이미지 미리보기가 있는 파일 관리자
    - `zellij` - 더 나은 `tmux` / `screen`
    - `starship` - 크로스 쉘 프롬프트 구성

- GNU `ls`는 유지 관리되고 있음
  - 최근 커밋이 있음 (2024-06-24, 2024-06-27)
  - GNU Coreutils 메일링 리스트도 활발함

- fish shell로 전환 후 `ls` 사용이 100% 감소함
  - Alt + l 명령어로 디렉토리 내용 표시
  - 더 깨끗한 쉘 히스토리 결과

- 색상을 사용하여 파일 유형을 구분하는 터미널 도구에 문제 있음
  - 눈에 편한 터미널 배경을 사용함
  - 색상 스키마가 배경과 충돌하거나 보기 어려움
  - `ls` 또는 `ls` 대체 출력에서 색상을 원하지 않음
  - `ls -AFC` 출력으로 충분함

- GNU 유틸리티의 새로운 버전이 MIT 라이선스로 빌드되는 이유가 궁금함

- README에 `eza`가 `exa`의 포크라는 언급이 없음을 이상하게 생각함

- qwerty 키보드에서 `eza` 타이핑이 불편함
  - `ls`는 빠른 키 조합임
  - alias를 사용할 수 있지만 호환성 문제 등으로 이상함

- `eza`/`exa`의 주요 기능은 예쁜 색상이 아니라 git 통합임
  - 파일 목록에서 개별 파일의 git 상태를 볼 수 있음 (무시됨, 수정됨 등)

- `ls`를 사용하는 사람은 거의 없음
  - 탭 완성으로 필요한 파일을 나열함
  - `ls`가 더 이상 유지 관리되지 않는다고 주장하는 이유가 궁금함
