lsd

lsd

Rust 实现的增强版 ls 命令,支持色彩和图标

LSD (LSDeluxe) 是 GNU ls 命令的 Rust 重写版本,增加了彩色输出、图标显示和树形视图等功能。支持自定义颜色主题和图标,可跨平台使用。通过直观的文件信息展示,LSD 旨在改善用户的文件浏览体验。该工具提供了灵活的配置选项,适用于需要增强文件列表功能的开发者和系统管理员。

LSD命令行工具文件列表Rust开源项目Github
<div align="center"> <p> <sup> <a href="https://github.com/sponsors/zwpaper">LSD 由社区支持。</a> </sup> </p> <sup>特别感谢:</sup> <br> <br> <a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=lsd_20231001"> <div> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/lsd-rs/lsd/assets/3764335/61c7471f-ade1-42ea-9829-ac381c92b28a"> <source media="(prefers-color-scheme: light)" srcset="https://github.com/lsd-rs/lsd/assets/3764335/40e5d173-603c-45c8-90fa-50ba6c48a813"> <img alt="Warp" width="230" src="https://github.com/lsd-rs/lsd/assets/3764335/40e5d173-603c-45c8-90fa-50ba6c48a813"> </picture> </div> <b>Warp 是一个基于 Rust 的超快速终端,重新构想为像现代应用一样工作。</b> <div> <sup>通过真正的文本编辑、基于块的输出和 AI 命令搜索,在命令行界面完成更多工作。</sup> </div> </a> <hr> </div>

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

当前最新发布版本是:v1.1.2


LSD (LSDeluxe)

许可证 最新版本 构建状态 代码覆盖率 版本

图片

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

安装

<details> <summary>打包状态</summary> <a href="https://repology.org/project/lsd/versions"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/04682c98-3598-4ee1-9a3b-c1802c5cdc98.svg?columns=3" alt="打包状态"> </a> </details>

先决条件

安装 powerline nerd-font 和/或 font-awesome 的补丁字体。查看 Nerd Font README 获取更多安装说明。别忘了设置你的终端以使用正确的字体。

操作系统/发行版命令
Archlinuxpacman -S lsd
Fedoradnf install lsd
Gentoosudo emerge sys-apps/lsd
macOSbrew install lsdsudo port install lsd
NixOSnix-env -iA nixos.lsd
FreeBSDpkg install lsd
NetBSD 或任何 pkgsrc 平台pkgin install lsdcd /usr/pkgsrc/sysutils/lsd && make install
OpenBSDpkg_add lsd
Windowsscoop install lsdwinget install --id lsd-rs.lsdchoco install lsd
Android (通过 Termux)pkg install lsd
Debian sid 和 bookwormapt install lsd
Ubuntu 23.04 (Lunar Lobster)apt install lsd
早期 Ubuntu/Debian 版本snap 已停用,使用从二进制文件安装
Soluseopkg it lsd
Void Linuxsudo xbps-install lsd
openSUSEsudo zypper 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 分支的最新二进制文件(选择顶部的 action 并滚动到产物部分)。

配置

lsd 可以通过配置文件设置默认选项。 查看配置文件内容了解详情。

配置文件位置

非 Windows 系统

在非 Windows 系统上,lsd 遵循 XDG 基本目录规范 关于配置文件位置的约定。将按以下顺序搜索 config.yamlconfig.yml 文件:

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

在大多数系统上,这些路径映射到同一位置,即 ~/.config/lsd/config.yaml

Windows 系统

在 Windows 系统上,lsd 按以下顺序搜索 config.yamlconfig.yml

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

这些通常分别是 C:\Users\username\AppData\Roaming\lsd\config.yamlC:\Users\username\.config\lsd\config.yaml

自定义

你也可以从非标准位置提供配置文件: lsd --config-file [路径]

配置文件内容

<details open> <summary>这是一个带有默认值和一些额外说明的示例配置文件。</summary>
# == 经典模式 == # 这是一个快捷方式,用于覆盖一些选项以向后兼容 `ls`。 # 它影响 "color"->"when"、"sorting"->"dir-grouping"、"date" 和 "icons"->"when" 选项。 # 可能的值:false、true classic: false # == 块 == # 这指定了使用长格式和树状布局时的列及其顺序。 # 可能的值:permission、user、group、context、size、date、name、inode、links、git blocks: - permission - user - group - size - date - name # == 颜色 == # 这有各种颜色选项。(未来将会扩展。) color: # 何时为输出着色。 # 当 "classic" 设置时,此项设为 "never"。 # 可能的值:never、auto、always when: auto # 如何为输出着色。 # 当 "classic" 设置时,此项设为 "no-color"。 # 可能的值:default、custom # 当设为 "custom" 时,lsd 将在配置目录中查找 `colors.yaml`。 theme: default # == 日期 == # 这指定日期列的日期格式。自由格式接受类似 strftime 的字符串。 # 当 "classic" 设置时,此项设为 "date"。 # 可能的值:date、locale、relative、'+<日期格式>' # `日期格式` 将是一个 `strftime` 格式的值。例如 `date: '+%d %b %y %X'` 将给你这样的日期:17 Jun 21 20:14:55 date: date # == 解引用 == # 是否解引用符号链接。 # 可能的值:false、true dereference: false # == 显示 == # 显示哪些项目。不指定此项以使用默认行为。 # 可能的值:all、almost-all、directory-only # display: all # == 图标 == icons: # 何时使用图标。 # 当 "classic" 设置时,此项设为 "never"。 # 可能的值:always、auto、never when: auto # 使用哪种图标主题。 # 可能的值:fancy、unicode theme: fancy # 图标和名称之间的分隔符 # 默认为 1 个空格 separator: " " # == 忽略 Globs == # 列出时要忽略的 glob 列表。 # ignore-globs: # - .git # == 指示符 == # 是否为某些列出的文件添加指示符字符。 # 可能的值:false、true indicators: false # == 布局 == # 使用哪种布局。这里的 "oneline" 可能有点令人困惑,应该称为 "one-per-line"。 # 未来可能会改变。 # 可能的值:grid、tree、oneline layout: grid
</details> # == 递归 == recursion: # 是否启用递归。 # 可能的值: false, true enabled: false # 递归深度。必须为正整数。不指定则为(实质上的)无限。 # depth: 3

== 大小 ==

指定大小列的格式。

可能的值: default, short, bytes

size: default

== 权限 ==

指定权限列的格式

可能的值: rwx, octal, attributes (仅限 Windows), disable

permission: rwx

== 排序 ==

sorting:

指定排序依据。

可能的值: extension, name, time, size, version

column: name

是否反向排序。

可能的值: false, true

reverse: false

是否将目录分组并放在何处。

当设置为"classic"时,此项设为"none"。

可能的值: first, last, none

dir-grouping: none

== 不显示符号链接 ==

是否省略显示符号链接目标

可能的值: false, true

no-symlink: false

== 总大小 ==

是否显示目录的总大小。

可能的值: false, true

total-size: false

== 超链接 ==

为文件名添加超链接

可能的值: always, auto, never

hyperlink: never

== 符号链接箭头 ==

指定如何显示符号链接箭头,包括 ASCII 和 UTF-8 字符

symlink-arrow: ⇒

== 头部 ==

是否显示块头。

可能的值: false, true

header: false

== 原始显示 ==

是否在文件名上显示引号。

可能的值: false, true

literal: false

== 截断所有者 ==

如果文件的用户名和组名超过一定字符数,如何截断它们。

truncate-owner:

保留的字符数。默认不截断(空值)。

after:

如果名称被截断,要附加的字符串。

marker: ""


## 主题

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

### 颜色主题

颜色主题可以在[配置文件](#configuration)(color.theme)中设置。
有效的主题配置为:

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

当设置为 `custom` 时,`lsd` 将在 XDG 基本目录中查找 `colors.yaml`,例如 ~/.config/lsd/colors.yaml

当配置为 `主题文件名`(一个 `yaml` 文件)时,`lsd` 将按以下方式查找主题文件:

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

查看[颜色主题文件内容](#color-theme-file-content)了解详情。

#### 颜色主题文件内容

主题文件使用 [crossterm](https://crates.io/crates/crossterm) 来配置颜色,请查看 [crossterm](https://docs.rs/crossterm/0.20.0/crossterm/style/enum.Color.html) 了解支持的颜色。

颜色表: https://upload.wikipedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg

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

这是 `lsd` 默认自带的主题方案。

```yaml
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 font 字形和 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 fonts,以 URxvt 为例,在 .Xresources 中:

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

可选

要在输入 ls 命令时使用 lsd,你需要在 shell 配置文件(~/.bashrc, ~/.zshrc 等)中添加以下内容:

alias ls='lsd'

一些其他有用的别名示例:

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

常见问题

使用 deb 包时出现 "Uses unknown compression for member '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 的 bug:

lsd --icon never --ignore-config

UTF-8 字符

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

图标显示异常

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

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

贡献者

每个人都可以为这个项目做出贡献,改进代码或添加功能。如果有人想要添加什么,我们会尽力去做。

由于这个项目正在定期更新,在创建拉取请求之前,请不要忘记重新基于最新的主分支。

致谢

特别感谢:

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多