49 个版本 (4 个稳定版本)

新版本 1.1.5 2024 年 8 月 20 日
1.1.2 2024 年 3 月 25 日
1.0.0 2023 年 8 月 30 日
0.23.1 2022 年 9 月 13 日
0.3.1 2018 年 11 月 30 日

#3命令行工具 中排名

Download history 526/week @ 2024-05-03 411/week @ 2024-05-10 415/week @ 2024-05-17 392/week @ 2024-05-24 383/week @ 2024-05-31 359/week @ 2024-06-07 421/week @ 2024-06-14 311/week @ 2024-06-21 370/week @ 2024-06-28 328/week @ 2024-07-05 336/week @ 2024-07-12 340/week @ 2024-07-19 384/week @ 2024-07-26 306/week @ 2024-08-02 335/week @ 2024-08-09 1200/week @ 2024-08-16

每月下载量 2,279

Apache-2.0

460KB
11K SLoC

重要:这是开发文档,如果您从发布版中安装,请检查 标签 中的文档。

当前最新版本是: v1.1.5


LSD (LSDeluxe)

license Latest version build codecov versions

image

该项目是 GNU ls 的重写,增加了许多功能,如颜色、图标、树视图、更多格式化选项等。该项目深受超级 colorls 项目的启发。

安装

打包状态 Packaging status

先决条件

安装 powerline nerd-font 和/或 font-awesome 的补丁字体。有关更多安装说明,请参阅 Nerd Font README。别忘了设置您的终端以使用正确的字体。

操作系统/发行版 命令
Archlinux pacman -S lsd
Fedora dnf install lsd
Gentoo sudoemerge sys-apps/lsd
macOS brew install lsdsudo port install lsd
NixOS nix-env-iA nixos.lsd
FreeBSD pkg install lsd
NetBSD 或任何 pkgsrc 平台 pkgin install lsdcd /usr/pkgsrc/sysutils/lsd && make install
OpenBSD pkg_add lsd
Windows scoop install lsdwinget install --id lsd-rs.lsdchoco install lsd
Android (via Termux) pkg install lsd
Debian sid 和 bookworm apt install lsd
Ubuntu 23.04 (Lunar Lobster) apt install lsd
早期的 Ubuntu/Debian 版本 snap 已停止支持,请使用 从二进制文件
Solus eopkg it lsd
Void Linux sudoxbps-install lsd
openSUSE sudozypper install lsd

从源码安装

使用 Rust 的包管理器 cargo,您可以通过以下方式安装 lsd:

cargo install lsd

如果您想安装最新 master 分支的提交

cargo install --git https://github.com/lsd-rs/lsd.git --branch master

从二进制文件

发布页面 包含了每个发布版本的 Linux、macOS 和 Windows 的预编译二进制文件。您还可以从 GitHub action 构建工件(选择顶部操作并向下滚动到工件部分)获取 master 分支的最新二进制文件。

配置

lsd 可以通过配置文件来配置,以设置默认选项。有关详细信息,请参阅 配置文件内容

配置文件位置

非 Windows

在非 Windows 系统上,lsd 遵循 XDG Base Directory Specification 规范来定位配置文件。将按顺序在这些位置搜索 config.yamlconfig.yml 文件

  • $HOME/.config/lsd
  • $XDG_CONFIG_HOME/lsd

在大多数系统上,这些都映射到相同的位置,即 ~/.config/lsd/config.yaml

Windows

Windows 系统

  • %USERPROFILE%\.config\lsd
  • %APPDATA%\lsd

这些通常类似于 C:\Users\username\AppData\Roaming\lsd\config.yamlC:\Users\username\.config\lsd\config.yaml

自定义

您还可以从非标准位置提供配置文件:lsd --config-file [PATH]

配置文件内容

这是一个示例配置文件,其中包含默认值和一些附加注释。
# == Classic ==
# This is a shorthand to override some of the options to be backwards compatible
# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date"
# and "icons"->"when" options.
# Possible values: false, true
classic: false

# == Blocks ==
# This specifies the columns and their order when using the long and the tree
# layout.
# Possible values: permission, user, group, context, size, date, name, inode, links, git
blocks:
  - permission
  - user
  - group
  - size
  - date
  - name

# == Color ==
# This has various color options. (Will be expanded in the future.)
color:
  # When to colorize the output.
  # When "classic" is set, this is set to "never".
  # Possible values: never, auto, always
  when: auto
  # How to colorize the output.
  # When "classic" is set, this is set to "no-color".
  # Possible values: default, custom
  # When "custom" is set, lsd will look in the config directory for `colors.yaml`.
  theme: default

# == Date ==
# This specifies the date format for the date column. The freeform format
# accepts a strftime like string.
# When "classic" is set, this is set to "date".
# Possible values: date, locale, relative, '+<date_format>'
# `date_format` will be a `strftime` formatted value. e.g. `date: '+%d %b %y %X'` will give you a date like this: 17 Jun 21 20:14:55
date: date

# == Dereference ==
# Whether to dereference symbolic links.
# Possible values: false, true
dereference: false

# == Display ==
# What items to display. Do not specify this for the default behavior.
# Possible values: all, almost-all, directory-only
# display: all

# == Icons ==
icons:
  # When to use icons.
  # When "classic" is set, this is set to "never".
  # Possible values: always, auto, never
  when: auto
  # Which icon theme to use.
  # Possible values: fancy, unicode
  theme: fancy
  # Separator between icon and the name
  # Default to 1 space
  separator: " "

# == Ignore Globs ==
# A list of globs to ignore when listing.
# ignore-globs:
#   - .git

# == Indicators ==
# Whether to add indicator characters to certain listed files.
# Possible values: false, true
indicators: false

# == Layout ==
# Which layout to use. "oneline" might be a bit confusing here and should be
# called "one-per-line". It might be changed in the future.
# Possible values: grid, tree, oneline
layout: grid

# == Recursion ==
recursion:
  # Whether to enable recursion.
  # Possible values: false, true
  enabled: false
  # How deep the recursion should go. This has to be a positive integer. Leave
  # it unspecified for (virtually) infinite.
  # depth: 3

# == Size ==
# Specifies the format of the size column.
# Possible values: default, short, bytes
size: default

# == Permission ==
# Specify the format of the permission column
# Possible value: rwx, octal, attributes (windows only), disable
# permission: rwx

# == Sorting ==
sorting:
  # Specify what to sort by.
  # Possible values: extension, name, time, size, version
  column: name
  # Whether to reverse the sorting.
  # Possible values: false, true
  reverse: false
  # Whether to group directories together and where.
  # When "classic" is set, this is set to "none".
  # Possible values: first, last, none
  dir-grouping: none

# == No Symlink ==
# Whether to omit showing symlink targets
# Possible values: false, true
no-symlink: false

# == Total size ==
# Whether to display the total size of directories.
# Possible values: false, true
total-size: false

# == Hyperlink ==
# Attach hyperlink to filenames
# Possible values: always, auto, never
hyperlink: never

# == Symlink arrow ==
# Specifies how the symlink arrow display, chars in both ascii and utf8
symlink-arrow: 

# == Header ==
# Whether to display block headers.
# Possible values: false, true
header: false

# == Literal ==
# Whether to show quotes on filenames.
# Possible values: false, true
literal: false

# == Truncate owner ==
# How to truncate the username and group names for a file if they exceed a certain
# number of characters.
truncate-owner:
  # Number of characters to keep. By default, no truncation is done (empty value).
  after:
  # String to be appended to a name if truncated.
  marker: ""

主题

lsd 可以通过主题文件来配置,以设置颜色或图标。

颜色主题

颜色主题可以在 配置文件(color.theme) 中配置。有效的主题配置是

  • default:lsd 中包含的默认颜色方案
  • custom:使用在 colors.yaml 中定义的自定义颜色方案
  • (已弃用) theme_file_name(yaml):使用主题文件指定颜色(不带 yaml 扩展名)

当设置为 custom 时,lsd 将在 XDG Base Directory 中查找 colors.yaml,例如 ~/.config/lsd/colors.yaml

当与 theme-file-name 配置文件一起使用时,这是一个 yaml 文件,lsd 将按以下方式查找主题文件:

  • 相对名称:检查 XDG 基础目录,例如 ~/.config/lsd/themes/.yaml
  • 绝对名称:使用文件路径和名称来查找主题文件

有关详细信息,请参阅 颜色主题文件内容

颜色主题文件内容

主题文件使用 crossterm 来配置颜色,请检查 crossterm 以获取支持的颜色。

颜色表:[https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg](https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg)

请注意,颜色值会忽略大小写,既支持小写也支持大写。

这是随 lsd 一起提供的默认主题方案。

user: 230
group: 187
permission:
  read: dark_green
  write: dark_yellow
  exec: dark_red
  exec-sticky: 5
  no-access: 245
  octal: 6
  acl: dark_cyan
  context: cyan
date:
  hour-old: 40
  day-old: 42
  older: 36
size:
  none: 245
  small: 229
  medium: 216
  large: 172
inode:
  valid: 13
  invalid: 245
links:
  valid: 13
  invalid: 245
tree-edge: 245
git-status:
  default: 245
  unmodified: 245
  ignored: 245
  new-in-index: dark_green
  new-in-workdir: dark_green
  typechange: dark_yellow
  deleted: dark_red
  renamed: dark_green
  modified: dark_yellow
  conflicted: dark_red

在为 lsd 创建主题时,您可以指定默认主题的任何部分,然后更改其颜色,遗漏的项目将回退到使用默认颜色。

图标主题

图标主题可以在固定位置配置,例如 $XDG_CONFIG_DIR/lsd/icons.yaml,例如,在 macOS 上为 ~/.config/lsd/icons.yaml,请查看 配置文件位置 以确保 $XDG_CONFIG_DIR 的位置。

正如文件名所示,图标主题文件是一个 yaml 文件。

有关详细信息,请参阅 图标主题文件内容

图标主题文件内容

lsd 支持 3 种图标覆盖方式,通过 name、通过 filetype 和通过 extension。最终使用的图标集将是 lsd 中提供的图标与配置中应用的覆盖的组合。 您可以在 此处 找到默认图标集。

图标可以使用 nerd 字体符号和 Unicode 表情符号。以下是一个图标自定义示例。

name:
  .trash: 
  .cargo: 
  .emacs.d: 
  a.out: 
extension:
  go: 
  hs: 
  rs: 🦀
filetype:
  dir: 📂
  file: 📄
  pipe: 📩
  socket: 󰆨
  executable: 
  symlink-dir: 
  symlink-file: 
  device-char: 
  device-block: 󰜫
  special: 

外部配置

必需

在您的终端中启用 nerd 字体,例如 URxvt 中的 .Xresources

URxvt*font:    xft:Hack Nerd Font:style=Regular:size=11

可选

要使用 lsd 在输入 ls 命令时,您需要将其添加到您的 shell 配置文件 (~/.bashrc, ~/.zshrc 等) 中

alias ls='lsd'

一些有用的别名的进一步示例

alias l='ls -l'
alias la='ls -a'
alias lla='ls -la'
alias lt='ls --tree'

F.A.Q

使用 deb 时,对成员 'control.tar.zst' 使用了未知压缩

Debian 12Ubuntu 21.10 开始支持 Zst 压缩,请使用从 lsd v1.1.0 开始发布的 _xz.deb

有关详细信息或手动修复,请查看 https://github.com/lsd-rs/lsd/issues/891

Windows 的自定义颜色方案

对于 lsd,它读取名为 LS_COLORS 的系统环境变量。请查看 此帖 中的标记解决方案,其中包含设置颜色方案的指南。

图标未显示

为了让lsd能够显示图标,字体必须包含特殊的字体符号。这可能不是你下载的大多数字体的情况。幸运的是,你可以使用NerdFont修补大多数字体并添加这些图标。或者,你也可以从NerdFont字体下载页面下载你喜欢的字体已修补的版本。以下是关于如何在macOSAndroid上设置字体的指南。

要检查你使用的字体是否设置正确,请在shell中运行以下代码片段,看看是否打印文件夹图标。如果打印的是方块、问号或其他内容,那么你可能在字体设置或终端模拟器的字体渲染方面存在问题。

echo $'\uf115'

在Windows上使用PuTTY/KiTTY时图标缺失或渲染不正确

首先,请确保已安装已修补的字体,并且PuTTY/KiTTY已配置为使用它,请检查先决条件

PuTTY/KiTTY显示2个字符宽的图标存在问题,请确保使用1个字符宽的字体,例如Hack Regular Nerd Font Complete Mono Windows Compatible,详细信息请参考此问题

颜色

你可以使用LS_COLORS自定义文件类型颜色,使用主题自定义其他颜色。

默认颜色如下:

用户/组 权限 文件类型(根据你的终端配色方案变化) 日期 文件大小
#ffffd7 用户 #00d700 读取 #0087ff 目录 #00d700 上一小时内 #ffffaf 小文件
#d7d7af #d7ff87 写入 #00d700 可执行文件 #00d787 上一天内 #ffaf87 中等文件
#af0000 执行 #ffffff 不可执行文件 #00af87 较旧 #d78700 大文件
#ff00ff 设置粘滞位执行 #af0000 破坏符号链接 #ffffff 非文件
#d75f87 无访问权限 #00d7d7 管道/符号链接/块设备/套接字/特殊
#d78700 字符设备

获取 trapd00r/LS_COLORSsharkdp/vivid 帮助以使用 LS_COLORS 进行主题设置。

文件夹/文件的第一个字符被裁剪

Konsole 的解决方案:编辑配置文件(如果尚未存在,则创建它),并将以下内容粘贴到其中(包含不可见的 Unicode 字符)

icons:
    separator: ""

这是几个终端模拟器中已知的问题。尝试使用不同的终端模拟器,如。 AlacrittyKitty 是非常好的替代品。您可能还想检查您的字体是否是导致此问题的原因。为了验证这一点,尝试以禁用图标的方式运行 lsd,如果它仍然没有第一个字符,则这是 lsd 的错误

lsd --icon never --ignore-config

UTF-8 字符

lsd 将尝试显示文件名中的 UTF-8 字符,使用 U+FFFD REPLACEMENT CHARACTER(�) 来表示无效的 UTF-8 字符。

图标显示异常

Nerd Fonts 将 Material Design 图标的代码点移动到 3.0,因此 lsd 已在 #830 中更新了图标。如果您的图标看起来很奇怪,请使用已使用 Nerd Fonts v2.3.0 或更高版本修补的字体。

另请参阅:https://github.com/ryanoasis/nerd-fonts/releases/tag/v2.3.3

贡献者

每个人都可以为此项目做出贡献,改进代码或添加功能。如果有人想要添加某些内容,我们将尽力实现。

由于该项目正在定期更新,请不要忘记在创建拉取请求之前重新设置您的分支。

致谢

特别感谢

依赖关系

~21–67MB
~1M SLoC