...
exa (최신식 ls 명령어)
Rust언어로 개발된 구식 ls명령어를 대체할 수 있는 exa를 소개해 본다.
exa는 Unix/Linux 에서 파일이나 디렉터리를 조회하는 전통적인 명령어인 ls의 최신판 이라고 보면 된다.
다양한 파일 포맷과 메타 데이터를 화려하게 색상별로 표시해 주며 git과 통합되어 있고 속도도 빠르다.
Rust 프로그래밍 언어로 작성되었으며 기존의 ls 명령에서 사용할 수없는 몇 가지 추가 기능이 함께 제공된다.
위의 이미지를 보면 알 수 있듯이, 과연 내가 사용하고있는 리눅스가 맞는가 싶을정도로 컬러풀하고 보기가 좋아진다.
디렉토리를 트리로 출력도 가능히며, 심지어 윈도우 처럼 파일타입에 맞는 아이콘도 표시도 할수 있다.
exa 설치
우선 현재 자신의 리눅스 버젼이 몇인지 알아보자.
$ lsb_release -d # 우분투 버젼 확인
만일 Ubuntu 20.10 (Groovy Gorilla) 이후 버젼이라면 다음 명령을 통해 간단하게 설치할 수 있다.
$ sudo apt install exa
하지만 우분투가 만일 사진과 같이 20.10 버젼 미만이라면,
직접 로컬 파일을 받아서 리눅스 OS로 옮겨야 하는 약간 번거로운 작업을 해야 한다.
먼저 다음 압축 파일을 다운 받는다.
여기서 우리가 필요한건 bin 파일이다.
저 bin파일을 리눅스의 /usr/local/bin 경로에 넣으면 설치가 완료된다. (정확히 말하자면 $PATH 환경변수에 등록된 경로 아무곳에 위치 시켜주면 동작된다)
파일을 리눅스 OS로 옮기는 방법은 다양하다.
ftp / sftp를 지원하는 파일질라, 삼바, 모바엑스텀 툴을 이용해 간단히 옮기면 된다.
이마저도 귀찮다면, 정말 간단하게 인터넷을 이용해서 옮기면 된다.
예를 들어 구글 드라이브나 네이버 메일(내게 쓰기)로 윈도우에서 파일을 인터넷으로 올리고, 리눅스에서 브라우저 열고 로그인하고 받으면 간단하게 파일 공유를 한 것이나 다름 없기 때문이다.
파일을 다운 받았으면 다운로드 디렉토리로 이동해 exa 파일이 있는지 확인해 본다.
$ cd 다운로드
$ ll
$ sudo mv exa /usr/local/bin # exa를 bin디렉토리에 이동
$ chmod 777 /usr/local/bin/exa # exa 실행권한 전체 설정
$ exa -l # ls -l 명령 개선버젼
이렇게 터미널에 디렉토리 파일 리스트들이 알록달록하게 나오면 설치에 성공한 것이다.
exa 사용법
기분 좋게 설치를 끝마쳤으니 이제 exa 명령어 사용법을 하나하나 뜯어보자.
$ exa [옵션] [파일]
$ exa –help # 명령 줄 옵션 목록 표시
META OPTIONS
-?, --help show list of command-line options
-v, --version show version of exa
DISPLAY OPTIONS
-1, --oneline 한 줄에 하나의 항목을 표시
-l, --long 확장 파일 메타 데이터를 테이블로 표시
-G, --grid 그리드로 항목 표시 (기본값)
-x, --across 아래쪽이 아닌 그리드를 가로 질러 정렬
-R, --recurse 디렉토리로 재귀
-T, --tree 트리로 디렉토리에 재귀
-F, --classify 파일 이름별로 표시 유형 표시기 분류
--colo[u]r=WHEN 터미널 색상 사용시기 (always, auto, never)
--colo[u]r-scale highlight levels of file sizes distinctly
--icons display icons
--no-icons don't display icons (always overrides --icons)
FILTERING AND SORTING OPTIONS
-a, --all 모두 숨김 및 '도트'파일 표시
-d, --list-dirs 일반 파일과 같은 디렉토리를 나열
-L, --level DEPTH limit the depth of recursion
-r, --reverse 정렬 순서를 반대로
-s, --sort SORT_FIELD 정렬 할 필드 선택
--group-directories-first 다른 파일 앞에 디렉토리를 나열
-D, --only-dirs list only directories
-I, --ignore-glob GLOBS glob patterns (pipe-separated) of files to ignore
--git-ignore ignore files mentioned in '.gitignore'
Valid sort fields: name, Name, extension, Extension, size, type,
modified, accessed, created, inode, and none.
date, time, old, and new all refer to modified.
LONG VIEW OPTIONS
-b, --binary 이진 접 두부가있는 이진 목록 파일 크기
-B, --bytes 접두어없이 파일 크기를 바이트 단위로 나열
-g, --group 각 파일의 그룹을 나열
-h, --header 각 열에 헤더 행을 추가
-H, --links 각 파일의 하드 링크 수를 나열
-i, --inode 각 파일의 inode 번호를 나열
-m, --modified 수정 된 타임 스탬프 필드를 사용
-n, --numeric list numeric user and group IDs
-S, --blocks 파일 시스템 블록 수를 표시
-t, --time FIELD 타임 스탬프 필드를 나열 할 필드 (modified, accessed, created)
-u, --accessed 액세스 한 타임 스탬프 필드를 사용
-U, --created 생성 된 타임 스탬프 필드를 사용
--changed use the changed timestamp field
--time-style how to format timestamps (default, iso, long-iso, full-iso)
--no-permissions suppress the permissions field
--octal-permissions list each file's permission in octal format
--no-filesize suppress the filesize field
--no-user suppress the user field
--no-time suppress the time field
--git 각 파일의 Git 상태를 나열
-@, --extended 각 파일의 확장 된 속성 및 크기를 나열
기본 디렉토리 나열
$ exa # ls 와 같다고 보면 된다.
$ exa -l # ls -l 과 같다고 보면 된다.
$ exa --classify # 각 파일이 실행 파일인지, 디렉터리인지, socket 인지, link 인지 여부를 표시
$ exa -F # 위와 같음
$ exa -lh # 테이블 형태로 헤더부를 예쁘게 표시
$ exa -bghHliS # 디렉토리 종합 정보 출력
-b, – 이진 접 두부가있는 이진 목록 파일 크기
-g, –group 각 파일의 그룹을 나열
-h, –header는 각 열에 헤더 행을 추가
-H, –links는 각 파일의 하드 링크 수를 나열
-l, –long 확장 파일 메타 데이터를 테이블로 표시
-i, –inode 각 파일의 inode 번호를 나열
-S, –blocks는 파일 시스템 블록 수를 표시
트리로 나열
$ exa -T # 트리 구조로 보기
$ exa -T -L=2 # 트리 구조로 보기 (2단계 가지 까지만)
GIT 파일 status 상태보기
$ exa -l --git # exa 는 git 통합 기능을 제공하므로 git status 정보를 같이 리스트에 표시할 수 있다.
필터링 (특정 파일 제외)
$ exa --ignore-glob="*.txt" # txt 확장자로 끝나는 파일을 제외하고 출력
$ exa -I="*.txt" # 위와 같다.
$ exa -I="Open*|rot??.sh|*case*" # 여러 개의 패턴이 있을 경우 pipe(|)로 여러 패턴을 연결
exa icon 설정하기
아이콘을 출력하고 싶다면 Nerd Font를 따로 설치를 해야한다.
다음 설치과정을 진행하자. 명령어를 복사하고, 리눅스 터미널에 shift + insert 해주면 복붙이 된다.
$ sudo apt install fontconfig
$ cd ~
$ wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip
$ mkdir -p .local/share/fonts
$ unzip Meslo.zip -d .local/share/fonts
$ cd .local/share/fonts
$ rm *Windows*
$ fc-cache -fv # 폰트 캐시 초기화
포트 캐시를 초기화했으면, 터미널을 껏다 켜주고 다음 명령어를 입력해본다.
$ exa --icons
exa alias 설정하기
exa 단어를 치는 것보다 아예 ls 명령으로 별칭 설정해서 사용하는 것이 더 활용적이다.
alias를 설정하는 방법은 다음 포스팅을 참고 바란다.
# general use
alias l='exa -lbF --git' # list, size, type, git
alias ll='exa -lbGF --git' # long list
alias llm='exa -lbGd --git --sort=modified' # long list, modified date sort
alias la='exa -lbhHigUmuSa --time-style=long-iso --git --color-scale' # all list
alias lx='exa -lbhHigUmuSa@ --time-style=long-iso --git --color-scale' # all + extended list
# specialty views
alias lS='exa -1' # one column, just names
alias lt='exa --tree --level=2' # tree
이외의 모던 리눅스 명령어 모음
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.