PRF:20180823 CLI- improved.md

@DavidChenLiang
This commit is contained in:
Xingyu.Wang 2018-10-29 20:47:20 +08:00
parent 676baa63d5
commit e090f06dc0

View File

@ -7,7 +7,7 @@
### 怎么忽略我所做的命令行增强
通常情况下我会用别名将新的增强的命令行工具链接到原来的命令(如 `cat``ping`)。
通常情况下我会用别名将新的增强的命令行工具覆盖原来的命令(如 `cat``ping`)。
如果我需要运行原来的命令的话(有时我确实需要这么做),我会像下面这样来运行未加修改的原始命令。(我用的是 Mac你的用法可能不一样
@ -18,25 +18,25 @@ $ command cat # 忽略函数和别名
### bat > cat
`cat` 用于打印文件的内容,如果你平时用命令行很多的话,例如语法高亮之类的功能会非常有用。我首先发现了 [ccat][3] 这个有语法高亮功能的工具,然后我发现了 [bat][4],它的功能有语法高亮,分页,行号和 git 集成。
`cat` 用于打印文件的内容,如果你平时用命令行很多的话,例如语法高亮之类的功能会非常有用。我首先发现了 [ccat][3] 这个有语法高亮功能的工具,然后我发现了 [bat][4],它的功能有语法高亮、分页、行号和 git 集成。
`bat` 命令也能让我在输出里(多于一屏时)使用 `/` 搜索(和用 `less` 搜索功能一样)。
`bat` 命令也能让我在(多于一屏的)输出里使用 `/` 搜索(和用 `less` 搜索功能一样)。
![Simple bat output][5]
我将别名 `cat` 链接到了 `bat` 命令:
我将别名 `cat` 到了 `bat` 命令:
```
alias cat='bat'
```
💾 [安装指引][4]
- [安装指引][4]
### prettyping > ping
`ping` 非常有用,当我碰到“糟了,是不是 X 挂了?/我的网不通了?”这种情况下我最先想到的工具就是它了。但是 `prettyping`“prettyping” 可不是指“pre typing”`ping` 的基础上加了友好的输出,这可让我感觉命令行友好了很多呢。
![/images/cli-improved/ping.gif][6]
![prettyping][6]
我也将 `ping` 用别名链接到了 `prettyping` 命令:
@ -44,16 +44,20 @@ alias cat='bat'
alias ping='prettyping --nolegend'
```
💾 [安装指引][7]
- [安装指引][7]
### fzf > ctrl+r
命令行上使用 `ctrl+r` 将允许你在命令历史里[反向搜索][8]使用过的命令,这是个挺好的小技巧,但是它需要你给出非常精确的输入才能正常运行
终端里,使用 `ctrl+r` 将允许你在命令历史里[反向搜索][8]使用过的命令,这是个挺好的小技巧,尽管它有点麻烦
`fzf` 这个工具相比于 `ctrl+r` 有了**巨大的**进步。它能针对命令行历史进行模糊查询,并且提供了对可能的合格结果进行全面交互式预览。
![视频](https://player.vimeo.com/video/217497007)
除了搜索命令历史,`fzf` 还能预览和打开文件,我在下面的视频里展示了这些功能。
![视频](https://player.vimeo.com/video/286345188)
为了这个预览的效果,我创建了一个叫 `preview` 的别名,它将 `fzf` 和前文提到的 `bat` 组合起来完成预览功能,还给上面绑定了一个定制的热键 `ctrl+o` 来打开 VS Code
```
@ -62,7 +66,7 @@ alias preview="fzf --preview 'bat --color \"always\" {}'"
export FZF_DEFAULT_OPTS="--bind='ctrl-o:execute(code {})+abort'"
```
💾 [安装指引][9]
- [安装指引][9]
### htop > top
@ -72,10 +76,10 @@ export FZF_DEFAULT_OPTS="--bind='ctrl-o:execute(code {})+abort'"
一些很容易上手的热键:
* P - 按 CPU 使用率排序
* M - 按内存使用排序
* F4 - 用字符串过滤进程(例如只看包括 node 的进程)
* space - 锚定一个单独进程,这样我能观察它是否有尖峰状态
* `P` —— 按 CPU 使用率排序
* `M` —— 按内存使用排序
* `F4` —— 用字符串过滤进程(例如只看包括 node 的进程)
* `space` —— 锚定一个单独进程,这样我能观察它是否有尖峰状态
![htop output][10]
@ -85,7 +89,7 @@ export FZF_DEFAULT_OPTS="--bind='ctrl-o:execute(code {})+abort'"
alias top="sudo htop" # 给 top 加上别名并且绕过 Sierra 上的 bug
```
💾 [安装指引][11]
- [安装指引][11]
### diff-so-fancy > diff
@ -101,7 +105,7 @@ alias top="sudo htop" # 给 top 加上别名并且绕过 Sierra 上的 bug
show = diff-so-fancy | less --tabs=1,5 -RFX
```
💾 [安装指引][13]
- [安装指引][13]
### fd > find
@ -121,23 +125,23 @@ $ fd cli -x wc -w # 搜索 "cli" 并且在每个搜索结果上运行 `wc -w`
![fd output][15]
💾 [安装指引][16]
- [安装指引][16]
### ncdu > du
对我来说,知道当前磁盘空间被什么占用了非常重要。我用过 Mac 上的 [DaisyDisk][17],但是我觉得那个程序产生结果有点慢。
`du -sh` 命令是我经常会的命令(`-sh` 是指结果以“汇总”和“人类可读”的方式显示),我经常会想要深入挖掘那些占用了大量磁盘空间的目录,看看到底是什么在占用空间。
`du -sh` 命令是我经常会运行的命令(`-sh` 是指结果以“汇总”和“人类可读”的方式显示),我经常会想要深入挖掘那些占用了大量磁盘空间的目录,看看到底是什么在占用空间。
`ncdu` 是一个非常棒的替代品。它提供了一个交互式的界面并且允许快速的扫描那些占用了大量磁盘空间的目录和文件,它又快又准。(尽管不管在哪个工具的情况下,扫描我的 home 目录都要很长时间,它有 550G
一旦当我找到一个目录我想要“处理”一下(如删除,移动或压缩文件),我会使用 `commond+` 点击 [iTerm2][18] 上部的目录名字的方法在 Finder 中打开它。
一旦当我找到一个目录我想要“处理”一下(如删除,移动或压缩文件),我会使用 `cmd` + 点击 [iTerm2][18] 顶部的目录名字的方法在 Finder 中打开它。
![ncdu output][19]
还有另外一个选择[一个叫 nnn 的另外选择][20],它提供了一个更漂亮的界面,它也提供文件尺寸和使用情况,实际上它更像一个全功能的文件管理器。
还有另外[一个叫 nnn 的替代选择][20],它提供了一个更漂亮的界面,它也提供文件尺寸和使用情况,实际上它更像一个全功能的文件管理器。
我的 `ncdu` 使用下面的别名:
我的 `du` 是如下的别名:
```
alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"
@ -146,16 +150,16 @@ alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"
选项说明:
* `--color dark` 使用颜色方案
* `-rr` 只读模式(防止误删和运行新的登陆程序)
* `-rr` 只读模式(防止误删和运行新的 shell 程序)
* `--exclude` 忽略不想操作的目录
💾 [安装指引][21]
- [安装指引][21]
### tldr > man
几乎所有的命令行工具都有一个相伴的手册,它可以被 `man <命令名>` 来调出,但是在 `man` 的输出里找到东西可有点让人困惑,而且在一个包含了所有的技术细节的输出里找东西也挺可怕的。
这就是 TL;DR译注英文里“文档太长没空去读”的缩写项目创建的初衷。这是一个由社区驱动的文档系统,而且针对的是命令行。就我现在用下来,我还没碰到过一个命令没有它相应的文档,你[也可以做贡献][22]。
这就是 TL;DR 项目LCTT 译注:英文里“文档太长,没空去读”的缩写)创建的初衷。这是一个由社区驱动的文档系统,而且可以用在命令行上。就我现在使用的经验,我还没碰到过一个命令没有它相应的文档,你[也可以做贡献][22]。
![TLDR output for 'fd'][23]
@ -165,15 +169,15 @@ alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"
alias help='tldr'
```
💾 [安装指引][24]
- [安装指引][24]
### ack || ag > grep
`grep` 毫无疑问是一个强力的命令行工具,但是这些年来它已经被一些工具超越了,其中两个叫 `ack``ag`
我个人对 `ack``ag` 都尝试过,而且没有非常明显的个人偏好,(也就是说它们都很棒,并且很相似)。我倾向于默认只使用 `ack`,因为这三个字符就在指尖,很好打。并且 `ack` 有大量的 `ack --` 参数可以使用!(你一定会体会到这一点。)
我个人对 `ack``ag` 都尝试过,而且没有非常明显的个人偏好,(也就是说它们都很棒,并且很相似)。我倾向于默认只使用 `ack`,因为这三个字符就在指尖,很好打。并且 `ack` 有大量的 `ack --bar` 参数可以使用!(你一定会体会到这一点。)
`ack``ag` 都使用正则表达式来搜索,这非常契合我的工作,我能指定文件类型搜索,类似于 `--js``--html` 这种文件标识。(尽管 `ag``ack` 在文件类型过滤器里包括了更多的文件类型。)
`ack``ag` 默认都使用正则表达式来搜索,这非常契合我的工作,我能使用类似于 `--js``--html` 这种标识指定文件类型搜索。(尽管 `ag``ack` 在文件类型过滤器里包括了更多的文件类型。)
两个工具都支持常见的 `grep` 选项,如 `-B``-A` 用于在搜索的上下文里指代“之前”和“之后”。
@ -186,9 +190,8 @@ alias help='tldr'
--pager=less -FRX
```
💾 安装指引: [ack][26], [ag][27]
[关于 ack & ag 的更多信息][28]
- 安装指引:[ack][26][ag][27]
- [关于 ack & ag 的更多信息][28]
### jq > grep 及其它
@ -224,7 +227,12 @@ $ npm i $(echo $(\
}
```
转换结果为:(译注:原文此处并未给出结果)
转换结果为:
```
node-jq@1.2.0
uuid@3.2.1
```
上面的结果会被作为 `npm install` 的输入,你瞧,我的升级就这样全部搞定了。(当然,这里有点小题大做了。)
@ -248,7 +256,7 @@ via: https://remysharp.com/2018/08/23/cli-improved
作者:[Remy Sharp][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[DavidChenLiang](https://github.com/DavidChenLiang)
校对:[pityonline](https://github.com/pityonline)
校对:[pityonline](https://github.com/pityonline), [wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出