我最喜欢的命令行快捷键
我每天都会用到 shell。几乎每次我都想重复执行之前的命令,或者稍作修改后再执行一次。一个非常方便的方法是使用向上箭头键来查找最近使用的命令。另一个常用的技巧是按 Ctrl+R,然后逐步搜索之前用过的命令。不过,还有两个我经常使用的重复执行命令的技巧,但它们并不广为人知。
转义点(或 !$)
很多时候,你只想重复前一个命令的最后一个参数。例如,假设你想运行`git diff path/to/tests`,然后再运行 `git add path/to/tests`。对于第二个命令,你可以输入`git add escape-dot`(转义符后跟一个句点),它会被展开为 ` path/to/tests`(前一个命令的最后一个参数)。
我发现自己经常需要对同一个参数运行另一个命令,而使用转义点是最方便的方法。虽然也可以用 !$ 代替转义点,但这稍微麻烦一些,所以我现在不用了。
历史与!
有时我知道之前用过某个命令,但我没有合适的字符串来用 Ctrl+R 搜索(或者搜索结果太多,找不到我想要的)。这种情况下,我会使用历史记录来获取最近使用的命令列表。假设我在列表的第 456 个位置看到了想要重复使用的命令,那么输入!456就可以重新运行该命令。
如果我想在运行命令前对其进行修改,我会输入!456:p。然后我使用向上箭头键进行修改,最后再运行命令。
我喜欢保留很长的 shell 命令历史记录(几千条)。为了能够在 shell 中向上滚动而不只看到历史记录,我创建了一个别名,只显示列表中的最后 100 条:
alias his='history | tail -n 100; echo “仅显示最近 100 条记录。要查看完整记录,请键入:history” '
所以我通常直接输入他的命令,就能得到最近 100 条命令的列表。
编辑
我经常需要在运行命令之前编辑命令行中的内容(尤其是我使用向上箭头键查看最近一次输入的命令时)。以下是我最常用的编辑方法:
- Ctrl+A 移动到行首
- Ctrl+E 移动到行尾
- Ctrl+U 清除光标位置之前的行
- Ctrl+W 删除光标位置之前的单词
结论
我接触过的大多数人在重复命令时都会使用向上箭头和 Ctrl+R。然而,很少有人熟悉使用 Esc 点号和从历史记录列表中重复命令。由于我经常使用这四种方法,所以我想写篇文章来分享一下。
说到命令行快捷键,我还要推荐《Unix Power Tools》这本书。它包含了超过一千页条理清晰、相互参照的命令行技巧。对于任何想要提升命令行技能的人来说,这都是一本绝佳的参考书。
文章来源:https://dev.to/henrikwarne/my-favorite-command-line-shortcuts-3bc6
