常用命令行使用技巧,有些你可能已经知道,有些可能不知道。

基础

💻 学会使用 Vim (vi)编辑你的文本

$ vi text.txt

💻 学会使用 man 查阅文档

$ man ls

💻 学会使用输入输出重定向:<> ,学会使用重定向管道:|

$ echo 'Hello World' > hello.txt
$ ls | grep .txt

💻 学会使用任务管理工具 ctrl+Z, ctrl+C, jobs, fg, bg, kill

<ctrl+z>
[1] +65847 suspended  vi hello.txt

$ jobs
[1] +suspended  vi hello.txt

💻 学会使用 ssh 进行远程命令行登录,以及 ssh-agentssh-add 等命令来实现基础的无密码认证登录。

$ ssh root@<yourserver>

💻 学会基本的文件管理工具:lsls -l (了解 ls -l 中每一列代表的意义),lessheadtailtail -f (甚至 less +F),lnln -s (了解硬链接与软链接的区别),chownchmoddu (硬盘使用情况概述:du -hs *)。 关于文件系统的管理,学习 dfmountfdiskmkfslsblk。知道 inode 是什么(与 ls -idf -i 等命令相关)。

💻 学习基本的网络管理工具:ipifconfigdig

💻 学习 git,并熟悉使用基于 git 的代码托管平台,如:Github, Gitlab, Bitbucket。

💻 熟悉正则表达式,学会使用 grepegrep,它们的参数中 -i-o-v-A-B-C 这些是很常用并值得认真学习的。

日常必备

💻 在 Bash 中,可以通过按 Tab 键实现自动补全参数,使用 ctrl+r 搜索命令行历史记录(按下按键之后,输入关键字便可以搜索,重复按下 ctrl+r 会向后查找匹配项,按下 Enter 键会执行当前匹配的命令,而按下右方向键会将匹配项放入当前行中,不会直接执行,以便做出修改)。

$ vi he <Tab>
$ vi hello.txt

<ctrl+r>
$ vi hello.txt
bck-i-search: vi _

💻 在 Bash 中,可以按下 ctrl+W 删除你键入的最后一个单词,ctrl+U 可以删除行内光标所在位置之前的内容,alt+Balt+F 可以以单词为单位移动光标,ctrl+A 可以将光标移至行首,ctrl+E 可以将光标移至行尾,ctrl+K 可以删除光标至行尾的所有内容,ctrl+L 可以清屏。键入 man readline 可以查看 Bash 中的默认快捷键。内容有很多,例如 alt+. 循环地移向前一个参数,而 alt-* 可以展开通配符。

💻 键入 history 查看命令行历史记录,再用 !n(n 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是 !$, 它用于指代上次键入的参数,而 !! 可以指代上次键入的命令了(参考 man 页面中的“HISTORY EXPANSION”)。不过这些功能,你也可以通过快捷键 ctrl+Ralt-. 来实现。

$ history
10245  history
10246  vi hello.txt

💻 cd 命令可以切换工作路径,输入 cd ~ 可以进入 home 目录。要访问你的 home 目录中的文件,可以使用前缀 ~(例如 ~/.bashrc)。在 sh 脚本里则用环境变量 $HOME 指代 home 目录的路径。pwd 可以查看当前目录位置。

💻 如果经常使用 autojump 跳到一个特定路径,想要回到前一个工作路径:cd -

$ pwd
/User/hanggi/great/works

$ j hell_
/User/hanggi/hello

$ cd -
~/great/works

💻 如果你输入命令的时候中途改了主意,按下 alt-# 在行首添加 # 把它当做注释再按下回车执行(或者依次按下 ctrl+A#enter)。这样做的话,之后借助命令行历史记录,你可以很方便恢复你刚才输入到一半的命令。

💻 使用 xargs( 或 parallel)。他们非常给力。注意到你可以控制每行参数个数(-L)和最大并行数(-P)。如果你不确定它们是否会按你想的那样工作,先使用 xargs echo 查看一下。此外,使用 -I{} 会很方便。例如:

$ find . -name '*.py' | xargs grep some_function
$ cat hosts | xargs -I{} ssh root@{} hostname

使用 uptimew来查看系统已经运行多长时间。

$ uptime
14:48  up 13 days, 48 mins, 2 users, load averages: 1.32 1.69 1.98

$ w
14:48  up 13 days, 48 mins, 2 users, load averages: 1.32 1.69 1.98
USER     TTY      FROM              LOGIN@  IDLE WHAT
hanggi   console  -                22May20 13days -
hanggi   s000     -                22May20    31 tmux

💻 使用 data 查看当前时间

$ date
Wed Jun 17 14:49:36 GMT 2020

💻 使用 alias 来创建常用命令的快捷形式。例如:alias ll='ls -latr' 创建了一个新的命令别名 ll。 也可以吧这个命令写进 ~/.bashrc~/.zshrc 中保存。

💻 使用 screentmux 来使用多份屏幕,当你在使用 ssh 时(保存 session 信息)将尤为有用。而 byobu 可以为它们提供更多的信息和易用的管理工具。另一个轻量级的 session 持久化解决方案是 dtach

💻 以其他用户的身份执行命令,使用 sudo。默认以 root 用户的身份执行;使用 -u 来指定其他用户。使用 -i 来以该用户登录(需要输入_你自己的_密码)。

可能有用

  • yes : 疯狂打印字符串

  • cal : 漂亮的日历 📅

  • printenv : 打印环境变量

  • seq : 顺序打印数字

  • bc : 计算器

  • file : 确定文件类型

  • time : 执行命令,并计算执行时间

  • timeout : 在指定时长范围内执行命令,并在规定时间结束后停止进程

  • htop : top 的加强版

  • last : 登入记录