常用 CLI 工具上 - 拥抱命令行系列之工具篇
前言
主要聚焦在全仿行工具,一些基础内容如终端的选择 iTerm2(macOS only)/Alacritty/Hyper/Tabby,各种的 shell 环境 bash/zsh/fish 等不在本文范围。
本文聚焦已经有了基础环境,通过下面的命令行工具提高日常的效率。本文基于 macOS 下的 zsh + oh-my-zsh 为基础环境。下面大部分工具都支持 macOS 和各种版本的 Linux,部分支持 Windows。
替换原用工具方法
使用编辑工具打开 ~/.bashrc
或者 ~/.zshrc
在文件中增加别名映射,如
alias ls='lsd'
使用 lsd
命令替换原有 ls
,当输入 ls
时会自动调用 lsd
,如需临时使用原命令在前面加上 \
输入 \ld
即可。
⚠️ 使用别名后,由于参数和输出和原命令不能完全兼容,可能会造成部分 shell 脚本执行出错,按需使用。
常用工具
lsd
{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/Peltoche/lsd
用 Rust
重写了 ls
命令并且增加了很多特性,如颜色、图标、树形结构、更多格式化的选项等。
普通用户可直接使用,进阶用户可查看更详细的配置内容 和定制主题 内容。
安装
因为使用了 Nerd 字体显示图标,所以终端首先需要安装和配置使用 Nerd Font。
接下来安装命令
# macOS
brew install lsd
Windows 及各种 Linux 可查看官方安装方式。
使用
用法基本和 ls
一致,列几个常见参数:-l
每个文件或文件夹一行的长信息方式显示-a
显示当前文件夹的隐藏文件或文件夹-t
以修改时间排序显示文件或文件夹-r
反转排序-d
只显示文件夹--tree
树形结构显示文件或文件夹
# 以长格式显示当前文件夹的所有文件和文件夹,包含隐藏文件
lsd -la
# 以修改时间倒序(晚修改的文件显示在后)长格式显示当前文件夹的文件和文件夹
lsd -ltr
# 以长格式只显示文件夹
lsd -ld */
# 以树形结构显示当前文件夹
lsd --tree
可选配置
替换 ls
命令
alias ls='lsd'
# other further
alias l='ls -l'
alias la='ls -a'
alias lla='ls -la'
alias lt='ls --tree'
类似工具
exa
{macOS/Linux | 免费/开源}
Github: https://github.com/ogham/exa
因为没有文件的图标显示,所以不需要依赖特殊字体。目前暂不支持 Windows 目前只有一个初步实现在进行中 Initial support for Windows #820 ,看起来还需要很长时间。
bat
{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/sharkdp/bat
同样以 Rust
语言克隆的 cat
工具,具备各种编程和标记语言的语法高亮,和 git
的整合展示,显示非打印字符及自动分页等功能。
安装
# macOS
brew install bat
Windows 及各种 Linux 可查看官方安装方式。
使用
用法基本和 cat
一致,列几个常见参数:-A
显示无法打印的字符,像空格、tab 和换行等-p
最普通的风格,没有文件名、行号等装饰,只有语法高亮-P
禁用自动分页-L
显示支持语法高亮的语言列表-l
指定文件使用特定的语法高亮
# 一般使用
bat ${filename}
# 普通风格显示文件
bat -p ${filename}
# 指定 markdown 格式的语法高亮,特别针对没有后缀的文件
bat -l markdown ${filename}
# 类似 cat 的功能,文件的合并
bat ${file1} ${file2} > ${file}
# 管道(pipline)操作等
curl -s https://sh.rustup.rs | bat
操作方式和 Vim 基本一致:q
退出预览j
下移一行k
上移一行Ctrl+d
/ Space
下翻页Ctrl+u
上翻页g
跳到文件头部G
跳到文件结尾:{Num}
跳到对应行/{String}
搜索对应文字,在搜索中 n
下一个搜索结果,N
上一个搜索结果
可选配置
替换 cat
命令
alias cat='bat'
tldr
{Windows/macOS/Linux | 免费/开源}
官网: https://tldr.sh/
Github: https://github.com/tldr-pages/tldr
Demo: https://tldr.ostera.io/
依赖社区维护的简化版 man
页面,tldr
代表的是“Too Long; Didn't Read”。
安装
# macOS 安装
brew install tldr
# Node.js 环境下
npm install -g tldr
# python3 环境下
pip3 install tldr
使用
常用的参数:-u
更新本地页面-p
选择特定的页面平台 android|linux|osx|sunos|windows
使用也非常简单
tldr ${command}
可选配置
为了方便记忆配置了 help
的映射
alias help='tldr'
类似工具
eg
{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/srsudar/eg
帮助内容比 tldr
更充实提供了很多案例,但是支持的命令要少一些。
cheat
{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/cheat/cheat
帮助内容也比较丰富,但是不是彩色显示,同时支持的命令也偏少。
ag
{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/ggreer/the_silver_searcher
ag
是 Ack 的一个克隆,但是比 Ack
快一个数量级,同时也支持通过定义 .gitignore
、.hgighnore
和 .ignore
跳过特定的文件,命令 ag
比 ack
也要短 33%(难怪命令和仓库名 the silver searcher 差这么多)。
同时它还能很方便的和编辑器 Vim(插件 ack.vim) 以及 Emacs(插件 ag.el) 进行整合。
安装
# macOS
brew install the_silver_searcher
Windows 及各种 Linux 可查看官方安装方式。
使用
部分常用参数:-g
只匹配文件名-G
只搜索名字匹配的文件-l
只显示包含该内容的文件名-L
打印不包含该内容的文件-s
大小写敏感
# 搜索包含 ${string} 内容的文件,并会打印出文件名和包含该内容的行
ag ${string}
# 在 ${path} 路径中搜索包含 ${string} 内容的文件
ag ${string} ${path}
# 只搜索文件名包含 ${string} 的文件
ag -g ${string}
# 只在文件名包含 ${filename} 的文件中,搜索包含 ${string} 的文件,且大小写敏感
ag -s ${string} -G ${filename}