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 在 命令行工具 中排名
每月下载量 2,279
460KB
11K SLoC
重要:这是开发文档,如果您从发布版中安装,请检查 标签 中的文档。
当前最新版本是: v1.1.5
LSD (LSDeluxe)
该项目是 GNU ls
的重写,增加了许多功能,如颜色、图标、树视图、更多格式化选项等。该项目深受超级 colorls 项目的启发。
安装
先决条件
安装 powerline nerd-font 和/或 font-awesome 的补丁字体。有关更多安装说明,请参阅 Nerd Font README。别忘了设置您的终端以使用正确的字体。
操作系统/发行版 | 命令 |
---|---|
Archlinux | pacman -S lsd |
Fedora | dnf install lsd |
Gentoo | sudoemerge sys-apps/lsd |
macOS | brew install lsd 或 sudo port install lsd |
NixOS | nix-env-iA nixos.lsd |
FreeBSD | pkg install lsd |
NetBSD 或任何 pkgsrc 平台 |
pkgin install lsd 或 cd /usr/pkgsrc/sysutils/lsd && make install |
OpenBSD | pkg_add lsd |
Windows | scoop install lsd 或 winget install --id lsd-rs.lsd 或 choco 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.yaml
或 config.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.yaml
和 C:\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 12
和 Ubuntu 21.10
开始支持 Zst 压缩,请使用从 lsd v1.1.0
开始发布的 _xz.deb
有关详细信息或手动修复,请查看 https://github.com/lsd-rs/lsd/issues/891
Windows 的自定义颜色方案
对于 lsd
,它读取名为 LS_COLORS 的系统环境变量。请查看 此帖 中的标记解决方案,其中包含设置颜色方案的指南。
图标未显示
为了让lsd
能够显示图标,字体必须包含特殊的字体符号。这可能不是你下载的大多数字体的情况。幸运的是,你可以使用NerdFont修补大多数字体并添加这些图标。或者,你也可以从NerdFont字体下载页面下载你喜欢的字体已修补的版本。以下是关于如何在macOS和Android上设置字体的指南。
要检查你使用的字体是否设置正确,请在shell中运行以下代码片段,看看是否打印文件夹图标。如果打印的是方块、问号或其他内容,那么你可能在字体设置或终端模拟器的字体渲染方面存在问题。
echo $'\uf115'
在Windows上使用PuTTY/KiTTY时图标缺失或渲染不正确
首先,请确保已安装已修补的字体,并且PuTTY/KiTTY已配置为使用它,请检查先决条件。
PuTTY/KiTTY显示2个字符宽的图标存在问题,请确保使用1个字符宽的字体,例如Hack Regular Nerd Font Complete Mono Windows Compatible,详细信息请参考此问题。
颜色
你可以使用LS_COLORS
自定义文件类型颜色,使用主题自定义其他颜色。
默认颜色如下:
用户/组 | 权限 | 文件类型(根据你的终端配色方案变化) | 日期 | 文件大小 |
---|---|---|---|---|
用户 | 读取 | 目录 | 上一小时内 | 小文件 |
组 | 写入 | 可执行文件 | 上一天内 | 中等文件 |
执行 | 不可执行文件 | 较旧 | 大文件 | |
设置粘滞位执行 | 破坏符号链接 | 非文件 | ||
无访问权限 | 管道/符号链接/块设备/套接字/特殊 | |||
字符设备 |
获取 trapd00r/LS_COLORS 和 sharkdp/vivid 帮助以使用 LS_COLORS
进行主题设置。
文件夹/文件的第一个字符被裁剪
Konsole 的解决方案:编辑配置文件(如果尚未存在,则创建它),并将以下内容粘贴到其中(包含不可见的 Unicode 字符)
icons:
separator: " ㅤ"
这是几个终端模拟器中已知的问题。尝试使用不同的终端模拟器,如。 Alacritty 和 Kitty 是非常好的替代品。您可能还想检查您的字体是否是导致此问题的原因。为了验证这一点,尝试以禁用图标的方式运行 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
贡献者
每个人都可以为此项目做出贡献,改进代码或添加功能。如果有人想要添加某些内容,我们将尽力实现。
由于该项目正在定期更新,请不要忘记在创建拉取请求之前重新设置您的分支。
致谢
特别感谢
- meain 为他的所有贡献和审查
- danieldulaney 为 Windows 集成
- sharkdp 和他的出色的 fd,我从其中窃取了许多 CI 东西。
- athityakumar 为项目 colorls
- 所有其他贡献者
依赖关系
~21–67MB
~1M SLoC