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

贡献者

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

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

致谢

特别感谢:

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多