简述

exalogo

exa is an improved file lister with more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s small, fast, and just one single binary.

Exa是一个漂亮的命令行工具,它能够使用不同的颜色来显示各种文件类型、文件权限和所有权、block和inode的信息等。

exa demo

官网:https://the.exa.website/
GITHUB:https://github.com/ogham/exa

安装

一般来说,安装有两种方法:通过软件包管理安装和源码来安装。

软件包管理安装

On Arch, install the exa package with pacman -S exa.
On Debian, install the exa package. with apt install exa.
On Fedora, install the rust-exa package with sudo dnf install exa.
On Gentoo, install the rust-exa package with emerge sys-apps/exa.
On NixOS, install the exa package with nix-env -i exa.
On openSUSE, install the exa package with sudo zypper install exa.
On Ubuntu, On Ubuntu 20.10 (Groovy Gorilla) and later, install the exa package with apt install exa.

源码包安装

源码包编译安装

➜  build yum install libgit2 cmake
➜  build curl https://sh.rustup.rs -sSf | sh
➜  build git clone https://github.com/ogham/exa/archive/v0.9.0.tar.gz
➜  exa cd exa
➜  examake install

二进制文件安装

1.安装rust语言支持

➜  ~ curl https://sh.rustup.rs -sSf | sh
info: downloading installer
Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /root/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory located at:

  /root/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /root/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /root/.profile
  /root/.zprofile
  /root/.bash_profile

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on 2020-10-08, rust version 1.47.0 (18bf6b4f0 2020-10-07)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
 21.2 MiB /  21.2 MiB (100 %)  12.9 MiB/s in  1s ETA:  0s
info: downloading component 'rustc'
 66.5 MiB /  66.5 MiB (100 %)  12.5 MiB/s in  5s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: Defaulting to 500.0 MiB unpack ram
info: installing component 'clippy'
info: installing component 'rust-docs'
 12.9 MiB /  12.9 MiB (100 %)   4.0 MiB/s in  3s ETA:  0s
info: installing component 'rust-std'
 21.2 MiB /  21.2 MiB (100 %)   8.2 MiB/s in  2s ETA:  0s
info: installing component 'rustc'
 66.5 MiB /  66.5 MiB (100 %)   6.8 MiB/s in 12s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable'

  stable installed - rustc 1.47.0 (18bf6b4f0 2020-10-07)


Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. Next time you log in this will be done
automatically.

To configure your current shell run source $HOME/.cargo/env

2.下载二进制文件的压缩包

➜  ~ wget --no-check-certificate https://github.com/ogham/exa/releases/download/v0.9.0/exa-linux-x86_64-0.9.0.zip
--2020-10-13 12:11:01--  https://github.com/ogham/exa/releases/download/v0.9.0/exa-linux-x86_64-0.9.0.zip
Resolving github.com (github.com)... 192.30.255.112
Connecting to github.com (github.com)|192.30.255.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/20060596/8958c400-a6b8-11e9-95dd-f27121ae48ee?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201013T041102Z&X-Amz-Expires=300&X-Amz-Signature=aa53c10347e77a2cb1114d820e6f8b75f1372db887f4dd1e95b6e4b07b5f5d2c&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=20060596&response-content-disposition=attachment%3B%20filename%3Dexa-linux-x86_64-0.9.0.zip&response-content-type=application%2Foctet-stream [following]
--2020-10-13 12:11:02--  https://github-production-release-asset-2e65be.s3.amazonaws.com/20060596/8958c400-a6b8-11e9-95dd-f27121ae48ee?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20201013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201013T041102Z&X-Amz-Expires=300&X-Amz-Signature=aa53c10347e77a2cb1114d820e6f8b75f1372db887f4dd1e95b6e4b07b5f5d2c&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=20060596&response-content-disposition=attachment%3B%20filename%3Dexa-linux-x86_64-0.9.0.zip&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.217.32.12
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.217.32.12|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 675661 (660K) [application/octet-stream]
Saving to: ‘exa-linux-x86_64-0.9.0.zip’

100%[===============================================================================================>] 675,661      597KB/s   in 1.1s   

2020-10-13 12:11:04 (597 KB/s) - ‘exa-linux-x86_64-0.9.0.zip’ saved [675661/675661]

3.解压部署

➜  ~ unzip exa-linux-x86_64-0.9.0.zip 
Archive:  exa-linux-x86_64-0.9.0.zip
  inflating: exa-linux-x86_64        
➜  ~ cp exa-linux-x86_64 /usr/local/bin/exa

报错解决

  1. libc.so.6报错

    ➜ ~ exa
    exa: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by exa)
    解决方法:

    ➜ ~ tar zxf glibc-2.18.tar.gz
    ➜ ~ cd glibc-2.18/
    ➜ glibc-2.18 mkdir build
    ➜ glibc-2.18 cd build/
    ➜ build ../configure --prefix=/usr
    ➜ build make install

    使用

    命令语法

    ➜ build exa --help
    Usage:
    exa [options] [files...]

    -?, --help show list of command-line options
    -v, --version show version of exa

    DISPLAY OPTIONS
    -1, --oneline display one entry per line
    -l, --long display extended file metadata as a table
    -G, --grid display entries as a grid (default)
    -x, --across sort the grid across, rather than downwards
    -R, --recurse recurse into directories
    -T, --tree recurse into directories as a tree
    -F, --classify display type indicator by file names
    --colo[u]r=WHEN when to use terminal colours (always, auto, never)
    --colo[u]r-scale highlight levels of file sizes distinctly

    FILTERING AND SORTING OPTIONS
    -a, --all show hidden and 'dot' files
    -d, --list-dirs list directories like regular files
    -L, --level DEPTH limit the depth of recursion
    -r, --reverse reverse the sort order
    -s, --sort SORT_FIELD which field to sort by
    --group-directories-first list directories before other files
    -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 list file sizes with binary prefixes
    -B, --bytes list file sizes in bytes, without any prefixes
    -g, --group list each file's group
    -h, --header add a header row to each column
    -H, --links list each file's number of hard links
    -i, --inode list each file's inode number
    -m, --modified use the modified timestamp field
    -S, --blocks show number of file system blocks
    -t, --time FIELD which timestamp field to list (modified, accessed, created)
    -u, --accessed use the accessed timestamp field
    -U, --created use the created timestamp field
    --time-style how to format timestamps (default, iso, long-iso, full-iso)
    --git list each file's Git status, if tracked or ignored
    -@, --extended list each file's extended attributes and sizes

    简单使用

    ➜ build exa /etc
    exa简单使用

    -l 参数

    ➜ build exa -l /etc
    exa-l参数

    显示详细信息

    ➜ build exa -abghHliS /var/log
    exa显示详细信息

    显示树状结构

    ➜ build exa -a -l --tree /var/log
    exa显示树状结构

文章目录