命令行备忘录 navi 使用教程
文章首发于个人公众号:「阿拉平平」
在 Linux 中,我们可以通过 history 查询并运行之前执行过的命令。但是对于 高频使用 与 相对复杂 的命令行,有没有什么好用的工具便于我们去管理呢?
本文将介绍 navi 的安装和使用方法,版本为 v0.15.3。
navi 简介
navi 是一个可交互的命令行备忘工具。用户可以执行备忘录中的命令,navi 也支持自定义备忘录以及命令行参数提示。
源码安装
本文通过源码安装,演示环境为 CentOS 7.5。更多安装方法可以参考 GitHub[1] 。
安装 fzf
fzf 是一款功能强大的命令行模糊搜索工具。安装步骤如下:
# 下载 fzf
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
# 安装 fzf,执行后会询问一些开关配置,都设置开启即可
~/.fzf/install
# 重载配置文件
source ~/.bashrc
安装 navi
fzf 安装后,执行以下步骤安装 navi:
# 下载 navi
git clone --depth 1 https://github.com/denisidoro/navi /opt/navi
# 安装 navi
cd /opt/navi
sudo make install
# (可选)安装到其它路径,生成的文件相当于一个快捷方式
./scripts/install /some/path
使用方法
本章将会介绍 navi 的基本操作以及如何自定义备忘录。
基本操作
安装完成后,输入 navi 就可以进入到交互界面。如下:
如果不希望直接运行命令,可以加上 --print
参数,终端将会打印命令行:
navi --print
如果需要预先过滤输出结果,可以通过 query
子命令:
navi query <cmd>
如果本地丢失了默认的备忘录,可以通过 search
子命令从线上仓库搜索对应的备忘录:
navi search <cmd>
其它的选项可以通过 --help
参数进行查询。
自定义备忘录
navi 已经集成了许多备忘录。默认的备忘录都放在 cheats 目录下,一个 .cheat
文件即表示一张备忘录:
cheats
├── android.cheat
├── brew.cheat
├── compression.cheat
├── crontab.cheat
├── docker.cheat
├── fly.cheat
├── git.cheat
├── gpg.cheat
├── javascript.cheat
├── k3d.cheat
├── keytool.cheat
├── kubernetes.cheat
├── misc.cheat
├── mysql.cheat
├── network.cheat
├── openssl.cheat
├── osx.cheat
├── systemctl.cheat
└── yum.cheat
自定义备忘录是 navi 的核心功能。在编写前,我们需要了解下备忘录的语法:
%
:以%
开头的行表示为命令行添加特定的标签,多个标签以,
分隔。
#
:以#
开头的行表示对命令行的用途进行描述。
$
:以$
开头的行表示命令行参数的可选值。
<>
:以<>
包裹的字符串表示变量。
接下来我将自定义一张用户相关的备忘录,包含用户的查询、添加以及设置密码。
首先,在 cheats 目录下新建 user.cheat 文件,添加以下内容:
[root@localhost cheats]# vi user.cheat
% user, demo
# Active User List
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
说明:.cheat 文件可以放到任意路径下,然后通过 --path
参数去指定。但是,如果这张备忘录里只有一条命令则会直接执行。
上面的命令会显示系统中的活跃用户名、用户ID以及组ID。运行结果如下:
活跃用户
接着,新增添加用户的命令:
# Add User
useradd <username>
运行时会要求输入 username
:
最后,结合活跃用户的命令,新增设置用户密码的命令:
# Reset User Password
passwd <user>
$ user: cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1 }'|more
添加 www 用户后,设置密码时就可以选中该用户:
选择用户
再查看下活跃用户,可以看到 www 用户已在列表中:
活跃用户
参考文档:
[1] Github: https://github.com/denisidoro/navi