常用命令行使用技巧,有些你可能已经知道,有些可能不知道。
基础
💻 学会使用 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-agent,ssh-add 等命令来实现基础的无密码认证登录。
$ ssh root@<yourserver>
💻 学会基本的文件管理工具:ls 和 ls -l (了解 ls -l 中每一列代表的意义),less,head,tail 和 tail -f (甚至 less +F),ln 和 ln -s (了解硬链接与软链接的区别),chown,chmod,du (硬盘使用情况概述:du -hs *)。 关于文件系统的管理,学习 df,mount,fdisk,mkfs,lsblk。知道 inode 是什么(与 ls -i 和 df -i 等命令相关)。
💻 学习基本的网络管理工具:ip 或 ifconfig,dig
💻 学习 git,并熟悉使用基于 git 的代码托管平台,如:Github, Gitlab, Bitbucket。
💻 熟悉正则表达式,学会使用 grep/egrep,它们的参数中 -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+B 和 alt+F 可以以单词为单位移动光标,ctrl+A 可以将光标移至行首,ctrl+E 可以将光标移至行尾,ctrl+K 可以删除光标至行尾的所有内容,ctrl+L 可以清屏。键入 man readline 可以查看 Bash 中的默认快捷键。内容有很多,例如 alt+. 循环地移向前一个参数,而 alt-* 可以展开通配符。
💻 键入 history 查看命令行历史记录,再用 !n(n 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是 !$, 它用于指代上次键入的参数,而 !! 可以指代上次键入的命令了(参考 man 页面中的“HISTORY EXPANSION”)。不过这些功能,你也可以通过快捷键 ctrl+R 和 alt-. 来实现。
$ 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
使用 uptime 或 w来查看系统已经运行多长时间。
$ 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 中保存。
💻 使用 screen 或 tmux 来使用多份屏幕,当你在使用 ssh 时(保存 session 信息)将尤为有用。而 byobu 可以为它们提供更多的信息和易用的管理工具。另一个轻量级的 session 持久化解决方案是 dtach。
💻 以其他用户的身份执行命令,使用 sudo。默认以 root 用户的身份执行;使用 -u 来指定其他用户。使用 -i 来以该用户登录(需要输入_你自己的_密码)。
可能有用
- yes: 疯狂打印字符串
- cal: 漂亮的日历 📅
- printenv: 打印环境变量
- seq: 顺序打印数字
- bc: 计算器
- file: 确定文件类型
- time: 执行命令,并计算执行时间
- timeout: 在指定时长范围内执行命令,并在规定时间结束后停止进程
- htop: top 的加强版
- last: 登入记录