Linux终端常见用法总结
一、前言
熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率,笔者结合自身学习实践,总结以下终端用法供同行交流学习。
二、常见用法
1.快捷键
1.1.Alt + .
在光标位置插入上一次执行命令的最后一个参数。
1.2.Ctrl + R
模糊搜索历史执行命令。下载安装fzf可以提升该命令的交互性。
1.3.Ctrl + Z
将正在执行的命令送入后台,以继续使用终端。执行bg命令可以查看后台正在执行的命令列表,执行fg命令可以调回后台正在执行的命令。
1.4.Ctrl + A
移动光标到首位字符。例如,在已输入命令前追加sudo,赋予命令执行权限。
1.5.Ctrl + E
移动光标到末位字符。例如,在已输入命令后追加&,将命令送入后台执行。
1.6.Ctrl + U
删除全部已输入字符。
1.7.Ctrl + W
删除光标所在单词。
2.命令
2.1.cd
切换目录。例如,使用cd -回到上一次执行cd时所在目录。
2.2.mkdir
创建目录。例如,使用mkdir -p <**/*/dirname>创建嵌套目录。
2.3.xargs
将管道的标准输入作为执行命令的输入。例如,使用ls | xargs -I {} echo "{}"将ls展示的目录内文件列表重新分行打印,其中,-I {}是将标准输入表示为{}。
2.4.tee
将管道的标准输入同时写入标准输出和文件。例如,使用echo "foo" | tee <filename>打印文本并写入文件,使用echo “foo” | tee >(<command>)打印文本并作为命令输入,使用echo "foo" | tee >(xargs mkdir) >(wc -c)打印文本及其长度并创建同名目录。
2.5.find
在指定目录下查询目录或文件。例如,使用find . -f '*.log' -exec ls -l {} +将目录下log文件名转换为参数列表,使用find . -f '*.log' -exec ls -l {} \;逐行打印目录下log文件名。
2.6.tr
字符替换。例如,使用echo $PATH | tr ':' '\n'逐行打印系统路径。
2.7.cut
切分输入文本。例如,使用cur -f, 1 <csvfile>打印CSV文本的第一列。
2.8.awk
对多行输入文本中与模式(pattern)匹配的行实现基于列的操作(action)。例如,使用awk -F ',' '{print $NF}' <csvfile>打印CSV文本的最后一列。
2.9.nohup
命令执行进程不会随用户或终端退出。例如,使用nohup <command> &将命令进程送入后台,使用nohup >log.out 2>log.error保存命令执行日志。
2.10.tar
打包工具。例如,使用tar czvf <filename>.tar.gz打包并压缩日志文件,使用tar xvf <filename>.tar.gz解包文件。
2.11.lsof
列表已打开文件及其进程。例如,使用lsof -ti :<port> | xargs kill关闭端口进程。
2.12.tail -f
持续打印目标文件新增文本。例如,使用tail -f <filename>持续打印日志文件的新增文本。
2.13.watch
重复执行命令。例如,使用watch -n 1 nvidia-smi观测GPU的资源利用情况。
2.14.top
查看系统资源和进程的占用情况。
2.15.du
查看磁盘占用情况。例如,使用du -sh <dirname>查看目录的磁盘占用情况。
3.特殊字符
3.1.>
重定向。例如,使用command >log.out将标准输出写入log.out,使用command >>log.out将标准输出追加到log.out末尾,使用command 2>log.err将标准错误写入log.err,使用command &>log将标准输出和标准错误写入log,使用command 2>&1 >dev/null只打印标准错误。
3.2.$_
上一次执行命令的最后一个参数。
3.3.$?
上一次执行命令的退出码。
3.4.!!
重复上一次执行命令。除此之外,还可以使用!*重复上一次执行命令的参数列表,使用!$重复上一次执行命令的最后一个参数。
三、总结
掌握Linux终端的常见用法不仅是编写脚本和实现自动化的基础,也能有效提高运维及开发人员的系统运维和故障排查能力。本文从Linux终端快捷键、命令及特殊字符三大类出发,分别介绍常见用法并例举,希望与同行分享,共同学习进步。
作者:任吉宏