GN⁺: Eza: 현대적이고 유지 관리되는 ls 대체 프로그램
(github.com/eza-community)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
가 있음
Hacker News 의견
-
"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
가 더 이상 유지 관리되지 않는다고 주장하는 이유가 궁금함