目录

简单命令行增强

这里介绍三个我日常经常用到的工具, 对于需要频繁命令行操作的工作, 能带来一定效率的提升.(之 前公司内部的分享, 现在整理一下, 重新发布)

fish

Shell 有好几种,目前最常用是 Bash 和 Zsh。1 fish 是“friendly interactive shell”的缩写,是一个“交互式的、对用户友好的 命令行 shell”。2

Features

Fish 有如下特性:

Auto suggestions

Fish 会自动根据历史和补全进行智能提示:

Tab completions

使用 Tab 键进行补全:

Fish 还能根据 Man Page 自动生成补全:

Syntax highlighting

Fish 对于不正确的命令会显示红色, 正确的命令会显示蓝色:

不存在的路径:

不存在的命令:

存在的命令:

注意事项

在使用中需要注意的是 fish 被有意设计成不完全与 POSIX 兼容. fish 的作者们认为 POSIX 中存在 一些缺陷和矛盾, 并通过 fish 简化的或不同的语法解决这些问题. 因此, 即使简单的 POSIX 兼容 的脚本也可能需要较多的修改, 甚至完全重写, 才能在 fish 中运行.2 在遇到不兼容的情 况下, 我们可以切换到 Bash 下进行操作.

安装

我们的测试服务器的系统基本都是 CentOS 7. 虽然 EPEL 里有 fish 包, 但是不推荐 这种方式, 一是 fish 版本比较老, 二是安装速度慢(不知道启用了 fastestmirror 插 件为啥还是这么慢). 建议直接下载 RPM 包扔到服务器上安装.

RPM 包可以进这个网站下载: Install package shells:fish:release:3 / fish.

scp fish-3.0.2-1.13.x86_64.rpm root@10.252.3.108:/tmp/fish-3.0.2-1.13.x86_64.rpm
rpm -i /tmp/fish-3.0.2-1.13.x86_64.rpm
rm /tmp/fish-3.0.2-1.13.x86_64.rpm

fzf

GitHub - junegunn/fzf: A command-line fuzzy finder

简介

fzf is a general-purpose command-line fuzzy finder.3

It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.

我一般用来快速执行历史命令(CTRL-R):

使用 CTRL-T 可以快速获取当前目录及子目录的文件路径:

fzf 结合其他命令可以组合出很多种用法, 大家可以网上搜一下, 或者直接看 fzf GitHub Wiki.

安装

# Install
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

# Or update
cd ~/.fzf && git pull && ./install

z.lua

GitHub - skywind3000/z.lua: A new cd command that helps you navigate faster b…

z.lua 是一个快速跳转目录的工具, 它是 z 一个改进版, 与之类似的还有 autojump.

Features

快速跳转到目录:

列出访问过的目录:

自动补全:

安装

安装的话比较简单, 从 GitHub 上下载下来 z.lua 就可以, 然后在 shell 的初始化脚本 里加入初始化代码就 ok 了.

Bash:

# NOTE: Replace `/path/to/z.lua` to real path
eval "$(lua /path/to/z.lua --init bash enhanced once)"

Fish:

Create ~/.config/fish/conf.d/z.fish with following code.

source (lua /path/to/z.lua --init fish enhanced once | psub)

  1. Fish shell 入门教程 - 阮一峰的网络日志 ↩︎

  2. fish (简体中文) - ArchWiki ↩︎

  3. GitHub - junegunn/fzf: A command-line fuzzy finder ↩︎