15 个让你在终端中倍感愉悦的命令行工具
jq
direnv -- 清理你的 .profile 文件
Tig:Git 的文本模式界面
欢迎使用 tmux!
how2:终端人工智能
演示视频
安装
用法
fd
ngrok - 面向开发者的统一入口
构建你自己的命令行工具,但也许不用 Bash。
just
使用这些酷炫的命令行工具,让你的终端充满乐趣和效率。
但在开始之前,我们先来了解一下如何安装和卸载它们。
目录
快速安装
我不知道你们怎么样,反正我不喜欢花很多时间安装东西。
以下是我的概要
PROGRAMS = "hub httpie ripgrep bat fzf fd fd-find jq autojump direnv tig tmux neovim exa just lazygit jump"
NPM = "how-2 tldr"
export INSTALLER = "sudo apt-get" # on Debian/Ubuntu
export INSTALLER = "something else" # on another Linux
export INSTALLER = "brew" # on macOS
for program in $PROGRAMS ; do $INSTALLER install $program ; done
for program in $NPM ; do npm install -g $program ; done
Enter fullscreen mode
Exit fullscreen mode
您可能需要配置您的 .profile 文件。
## Put in .bash_profile or .zshrc
alias ls=exa
alias cat=bat
Enter fullscreen mode
Exit fullscreen mode
尝试、采用或卸载
试用一下命令行工具。如果不喜欢,可以用同样的方法卸载它们。
PROGRAMS = "neovim exa"
export INSTALLER = "brew" # on macOS
for program in $PROGRAMS ; do $INSTALLER uninstall $program ; done
Enter fullscreen mode
Exit fullscreen mode
完成这些步骤后,我们接下来看看工具!
15 个让你在终端中倍感愉悦的命令行工具
*tldr-pages/tldr: 📚 控制台命令协作速查表
必备品
手册页太长了,没看。
替换 $ man git-checkout为 $ tldr git-checkout
80% 的情况下,您都能在 5 秒或更短时间内找到所需内容。
什么是tldr-pages?
tldr -pages 项目是一个由社区维护的命令行工具帮助页面的集合,旨在成为传统 man 手册 的更简单、更易用的补充。
也许你是命令行新手?或许你有点生疏了,或者总是记不住诸如 `ls` lsof、`ls` 或 `ls` 之类的命令的参数 tar?
过去,第一个解释的选项 man tar是:
$ man tar
...
-b blocksize
Specify the block size, in 512-byte records, for tape drive I/O.
As a rule, this argument is only needed when reading from or writing to tape drives,
and usually not even then as the default block size of 20 records (10240 bytes) is very common.
...
Enter fullscreen mode
Exit fullscreen mode
似乎可以添加更简洁的帮助页面,侧重于实际示例。例如:
这个仓库正是如此:一个不断增长的示例集合……
stedolan/jq:命令行 JSON 处理器
Unix 脚本基于这样的理念:你有一个包含输出行的标准输出(stdout)。
如果使用 JSON 而不是 JSON,该如何实现自动化?(而且 JSON 无处不在)
答案是 jq。
jq
jq是一个轻量级且灵活的命令行 JSON 处理器,类似于JSON 数据的处理工具,例如 sed`getJSON.json` awk、 grep`getJSON.json` 等。它使用可移植的 C 语言编写,并且没有任何运行时依赖项,使您可以轻松地对结构化数据进行切片、过滤、映射和转换。
文档
安装
预编译二进制文件
从GitHub 发布页面 下载最新版本 。
Docker 镜像
拉取 jq 镜像 即可快速启动 Docker。
使用 Docker 运行
package.json示例:从文件 中提取版本号
docker run --rm -i ghcr.io/jqlang/jq:latest < package.json ' .version'
Enter fullscreen mode
Exit fullscreen mode
package.json示例:从已挂载卷的文件 中提取版本信息
docker run --rm -i -v " $PWD :$PWD " -w " $PWD " ghcr.io/jqlang/jq:latest ' .version' package.json
Enter fullscreen mode
Exit fullscreen mode
从源头构建
依赖关系
指示
git submodule update --init # if building from git to get …
Enter fullscreen mode
Exit fullscreen mode
direnv/direnv:清理你的 .profile 文件
我的.profile文件很糟糕,所以我很期待尝试这个。
direnv -- 清理你的 .profile 文件
direnv是一个 shell 扩展。它为现有的 shell 添加了一项新功能,可以根据当前目录加载和卸载环境变量。
用例
工作原理
在每次提示符出现之前,direnv 会检查当前目录和父目录中 是否存在某个 .envrc文件(以及 可选的 子目录)。如果该文件存在(且已授权),则会将其加载到 bash 子 shell 中,direnv 会捕获所有导出的变量,并将其提供给当前 shell 使用。 .env
它支持所有常用 shell 的钩子,例如 bash、zsh、tcsh 和 fish。这允许设置项目特定的环境变量,而不会使文件变得杂乱 ~/.profile。
由于 direnv 被编译成一个单独的静态可执行文件,因此它的速度非常快,每次启动时几乎察觉不到。它……
jonas/tig:git 的文本模式界面
Tig:Git 的文本模式界面
什么是TIG?
Tig 是一个基于 ncurses 的 Git 文本模式界面。它主要用作 Git 仓库浏览器,但也可以辅助将更改暂存到代码块级别以进行提交,并充当各种 Git 命令输出的分页器。
安装与新闻
有关如何构建和安装 Tig 的信息可在 安装说明 中找到。
有关版本发布、最新功能和错误修复的新闻,请参阅 发行说明 。
tmux/tmux:终端复用器
tmux 是一个终端复用器:它允许从单个屏幕创建、访问和控制多个终端。tmux 可以从屏幕上分离并继续在后台运行,之后再重新连接。
欢迎使用 tmux!
tmux 是一个终端复用器:它允许从单个屏幕创建、访问和控制多个终端。tmux 可以从屏幕上分离出来并在后台继续运行,之后再重新连接到屏幕上。
该版本可在 OpenBSD、FreeBSD、NetBSD、Linux、macOS 和 Solaris 上运行。
依赖关系
tmux 依赖于 libevent 2.x,可从此 页面 获取。
它还依赖于 ncurses ,可从此 页面 获取。
要构建 tmux,需要 C 编译器(例如 gcc 或 clang)、make、pkg-config 和合适的 yacc(yacc 或 bison)。
安装
二进制包
有些平台提供 tmux 的二进制软件包,但这些软件包有时会过时。 本页 列出了一些示例。
从发布版 tarball 中获取
要从发布版 tar 包构建并安装 tmux,请使用:
./configure && make
sudo make install
Enter fullscreen mode
Exit fullscreen mode
tmux 可以使用 utempter 库来更新 utmp(5),如果……
santinic/how2:从终端访问 Stack Overflow
StackOverflow 是开发者工作流程中如此重要的一部分,为什么不将其自动化呢?
how2:终端人工智能
how2 能在 Unix shell 中找到执行某项操作的最简方法。它类似于 `?` man,但你可以用自然语言查询。它结合了 AI 代码补全和 Stack Overflow 搜索技术。
它有效地取代了 Chrome => 新标签页 => Google => 点击 StackOverflow => 向下滚动到第一个答案。
请访问 how2terminal.com 获取更多信息。
演示视频
v5.mp4
安装
MacOSX(通过 HowBrew):
brew tap how2terminal/how2
brew install how2
使用 NPM:
如果你安装时没有使用 `--install` 参数 sudo,那么你必须 npx how2手动运行该命令或为其设置别名。
Ubuntu/Debian:
下载最新的 .deb 文件 ,然后运行:
wget how2terminal.com/how2.deb
sudo dpkg -i how2.deb
二进制文件:
请前往最新版本 并下载二进制文件。
用法
默认情况下,how2 使用外部 AI 服务器来查找最佳的 Unix 命令行建议。如果您添加 -s……
BurntSushi/ripgrep:类似 grep,但更好。
ripgrep 会递归地在目录中搜索正则表达式模式,同时遵守你的 .gitignore 文件。
ripgrep 会递归地在目录中搜索正则表达式模式,同时遵守你的 .gitignore 文件。
ripgrep (rg)
ripgrep 是一款面向行的搜索工具,它会递归地在当前目录中搜索符合正则表达式模式的文件。默认情况下,ripgrep 会遵循 .gitignore 规则,自动跳过隐藏文件/目录和二进制文件。(要禁用所有默认的自动过滤,请使用.)ripgrep 在 Windows、macOS 和 Linux 上都提供了完善的支持, 每个版本 rg -uuu都提供二进制下载 。ripgrep 与其他流行的搜索工具(例如 Silver Searcher、ack 和 grep)类似。
采用 MIT 或UNLICENSE 双重许可 。
更新日志
请查看 变更 日志以获取版本发布历史记录。
文档快速链接
搜索结果截图
快速示例比较工具
此示例在运行命令后, 搜索整个 Linux 内核源代码树 make defconfig && make -j8,查找 [A-Z]+_SUSPEND所有匹配项,其中所有匹配项都必须是单词。计时数据是在某个系统上收集的……
sharkdp/bat:一只长着翅膀的猫(1)克隆体。
为大量编程语言和标记语言提供语法高亮显示,为什么不呢?
你可以给它起个别名。
$ alias cat=bat
junegunn/fzf:一个命令行模糊查找器
查找文件就像在 Visual Studio Code 或 IntelliJ IDEA 中一样简单。
fzf 是一个通用的命令行模糊查找器。
这是一个交互式过滤程序,适用于任何类型的列表;文件、命令历史记录、进程、主机名、书签、git 提交等等。它实现了“模糊”匹配算法,因此您可以快速输入省略字符的模式,仍然可以获得您想要的结果。
精彩片段
📦 便携 — 以单个二进制文件形式分发,方便安装
⚡ 速度极快 — 高度优化的代码可瞬间处理数百万个项目
🛠️ 功能极其丰富 ——可通过事件-动作绑定机制完全自定义
🔋 内置电池 — 集成了 bash、zsh、fish、Vim 和 Neovim
赞助商❤️
我要感谢所有赞助这个项目的赞助商,正是有了他们的支持,我才能继续改进 fzf。
如果…
sharkdp/fd:类似于查找,但更好
一个简单、快速且用户友好的“查找”替代方案
fd
[ 中文 ] [ 한국어 ]
fd是一个用于查找文件系统条目的程序。它是 的一个简单、快速且用户友好的替代方案。 find虽然它并不旨在支持 find的所有强大功能,但它为大多数使用场景提供了合理的(带有主观倾向的)默认值。
安装 • 使用方法 • 故障排除
特征
直观的语法: fd PATTERN而不是 find -iname '*PATTERN*'。
正则表达式(默认)和基于 glob 的模式。
由于采用了并行目录遍历, 速度非常快。
使用颜色突出显示不同的文件类型(与...相同 ls)。
支持 并行命令执行
智能区分大小写:默认情况下搜索不区分大小写。如果模式包含大写字符 * ,则切换为区分大小写。
默认情况下会忽略隐藏目录和文件。
默认情况下会忽略您提供的模式 .gitignore。
命令名称 比原名称 短 50% * find :-)。
演示
如何使用
首先,要……
等待/自动跳跃
一个会学习的 cd 命令——可以轻松地从命令行浏览目录
一个会学习的 cd 命令——可以轻松地从命令行浏览目录
姓名
自动跳转——一种更快浏览文件系统的方式
描述
自动跳转是一种更快捷的文件系统导航方式。它的工作原理是维护一个数据库,记录你通过命令行最常使用的目录。
必须先访问目录,然后才能跳转到该目录。
用法
j是 的一个便捷包装函数 autojump。任何可以与 一起使用的选项 autojump都可以与 一起使用 j,反之亦然。
跳转到包含以下内容的目录 foo:
跳转到子目录:
有时直接跳转到子目录(当前目录的子目录)比输入完整名称更方便。
打开文件管理器并选择目录(而不是跳转到其他目录):
您可以打开文件资源管理器窗口(Mac Finder、Windows 资源管理器、GNOME Nautilus 等)来打开该目录,而不是直接跳转到该目录。
打开文件管理器……
inconshreveable/ngrok:内省隧道到本地主机
你的 Web 应用程序在本地主机上运行正常,但 CI 出现故障,你无法与同事共享你的工作成果。
但有了 ngrok,你就可以做到!
github/hub:
一个命令行工具,使 Git 与 GitHub 的配合使用更加便捷。
一个命令行工具,使 Git 与 GitHub 的配合使用更加便捷。
hub 是一个命令行工具,它封装了 GitHub, git以便为其添加额外的功能和命令,从而简化与 GitHub 的交互。
如需官方的、可能更易于使用的 GitHub 命令行界面,请参阅 cli.github.com 和 此比较 。
此仓库及其问题跟踪系统 并非用于报告 GitHub.com 网页界面的问题。如果您遇到 GitHub 本身的问题,请 联系 GitHub 支持团队 。
用法
$ hub clone rtomayko/tilt
# => git clone https://github.com/rtomayko/tilt.git
# or, if you prefer the SSH protocol:
$ git config --global hub.protocol ssh
$ hub clone rtomayko/tilt
# => git clone git@github.com:rtomayko/tilt.git
Enter fullscreen mode
Exit fullscreen mode
请参阅 使用示例 或 完整参考文档 ,以查看所有可用命令和标志。
hub 还可以用来创建 直接与 GitHub API 交互 的 shell 脚本。
hub 可以安全地 别名 为 git,因此您可以输入 $ git <command>…
构建你自己的命令行工具,但也许不用 Bash。
命令行工具非常适合自动化和简化您的开发工作流程。
别人编写的工具固然好,但为什么不自己编写工具呢?
我对这个问题持有一种既强烈又摇摆不定的观点:
在尝试使用 Bash 编程 15 年并不断试错之后,我认为是时候放弃 Bash 了。
为什么不使用你最喜欢的编程语言呢?
我发现它们比 Bash 好 10 倍。
Python、Go 和 JavaScript 都是编写 CLI 工具的好选择。
我最喜欢的语言是 Kotlin,所以我想用 Kotlin 多平台编写一个用于我自己的 CLI 工具的入门项目。
如果允许我厚颜无耻地做个广告,不妨看看 kotlin-cli-starter GitHub 模板。
一个使用 Kotlin 多平台构建命令行工具的入门项目
包含对一个真实世界命令行工具的重新实现: git-standup
安装
您可以使用以下列出的选项之一进行安装。
来源
命令
节点
npm install -g kotlin-cli-starter
安装程序
curl -L https://raw.githubusercontent.com/jmfayard/kotlin-cli-starter/main/installer.sh | sudo sh
测试
./gradlew allTests
Kotlin 全平台
跑步 ./gradlew allRun
Kotlin JVM
跑步 ./gradlew run
Kotlin Native
./gradlew install然后 运行 $ git standup
Kotlin Node.js
跑步 ./gradlew jsNodeRun
为什么?
能够编写自己的命令行工具是一项很棒的技能。让一切自动化!
你可以用 Kotlin 编写 CLI 工具,并享受使用它带来的好处。
一种现代编程语言
现代 IDE 支持
现代实践,例如单元测试和持续集成
利用 Kotlin 多平台库
在 JVM 上运行您的代码,并受益于丰富的 Java 库。
或者构建一个本地可执行文件,它的启动速度非常快,而且……
我还有什么没提到的好用工具吗?
这样的清单永远不可能完整,所以请在评论中添加您的推荐。
来自读者的最新消息
jesseduffield/lazygit 一个简单的 Git 命令终端界面
lazygit 是一个非常酷的 Git 客户端
观看演示
VIDEO
casey/just:🤖 只是个命令执行者
受制作启发
目录
↗️
just
just是一种保存和运行项目特定命令的便捷方法。
此自述文件也可作为一 本书 获取。
(中文文档在 这里 快来看过!)
命令(称为配方)存储在一个名为 `recipes` 的文件中, justfile其语法灵感来自 make:
然后你可以用以下命令运行它们 just RECIPE:
$ just test-all
cc *.c -o main
./test --all
Yay, all your tests passed!
Enter fullscreen mode
Exit fullscreen mode
just它拥有大量实用功能,并且相比以往版本有很多改进 make:
just是一个命令运行器,而不是一个构建系统,因此它避免了许多的 make复杂性和怪癖 。无需 .PHONY配方!
Linux、MacOS 和 Windows 均受支持,无需任何额外依赖项(但如果您的系统没有 sh,则需要 选择其他 shell )。
错误信息具体明确,语法错误会连同其上下文一起报告。
食谱可以……
gsamokovarov/jump:Jump 通过学习你的导航习惯,帮助你更快地找到方向。✌️
另一种方法 cd感觉就像能读懂你的心思。
Jump 通过学习你的导航习惯,帮助你更快地找到方向。✌️
[发布]
Jump 可以与你的 shell 集成,并通过跟踪你访问的目录来了解你的导航习惯。它会根据你输入的最短搜索词,为你提供访问次数最多的目录。
安装
Jump 提供适用于以下平台的软件包。
平台
命令
macOS
brew install jump或者 port install jump
Linux
sudo snap install jump
尼克斯
nix-env -iA nixpkgs.jump
去
go install github.com/gsamokovarov/jump@latest
Linux 发行版特定软件包
分配
命令
空白
xbps-install -S jump
Ubuntu
wget https://github.com/gsamokovarov/jump/releases/download/v0.51.0/jump_0.51.0_amd64.deb && sudo dpkg -i jump_0.51.0_amd64.deb
Debian
wget https://github.com/gsamokovarov/jump/releases/download/v0.51.0/jump_0.51.0_amd64.deb && sudo dpkg -i jump_0.51.0_amd64.deb
Fedora
wget https://github.com/gsamokovarov/jump/releases/download/v0.51.0/jump-0.51.0-1.x86_64.rpm && sudo rpm -i jump-0.51.0-1.x86_64.rpm
一体化
您是通过 Jump 的 shell 辅助函数来使用它的 j。要获得该辅助函数,您需要将 Jump 集成到您的 shell 中。
bash / zsh
在以下位置添加一行 ~/.bashrc, ~/bash_profile或 ~/.zshrc:
eval " $( jump shell) "
Enter fullscreen mode
Exit fullscreen mode
鱼
在……中添加以下代码行
文章来源:https://dev.to/jmfayard/15-command-line-tools-which-spark-joy-in-your-terminal-45ln