刚工作的时候,我总会想 ———『为啥那个同事比我酷?』
你知道的,这个『酷』的来源,切切又隐隐,它并不从编码一方面来。而是…ta用一种很酷的技巧,便把问题轻松秒杀。那些技巧通常并不深奥,只是很多时候,我们并不知道它们存在。
多年的积淀,become『酷同事』,总结成果,如下几点:1. 擅用 Shell 快捷键;2. 熟练使用一些 Shell Bash 命令;3. 编写简易 Shell 脚本;4. 在 Vim 中编程。
可能有人会想,这些有什么可『酷』呢?那我先举个 Shell 快捷键的例子,在终端里,我们通常会按很多次↑
键,去找之前的 ssh 记录或者执行命令,那如果我说可以直接用ctrl+r
命令,搜索执行历史,那岂不是更高效。 你也可能会说用history
命令,但是有些环境,是没有这个命令的,比如开发跳板机。
像我我大厂工作十多年的同事,每次要 ssh 到服务器,就是先按很多次↑
键,如果还一直找不到,那就再去翻一遍文档。而我 ctrl+r
两秒搞定。真的,任何人不知道这个技巧,我都会难过的 🙃
Vim 编程的是个比较大的话题,网上资料也很多,本文暂时不讨论。对于每个技巧,我只是抛砖引玉,希望能给你一些帮助。
一. 擅用 Shell 快捷键
TOP 推荐:逆向搜索命令历史 ctrl+r
, 切换到上次访问的目录 cd -
, 光标移动到命令行首ctrl+a
、.
- 个人常用快捷键整理如下:
# 逆向搜索命令历史 【极力推荐 非常好用】
ctrl+r
# 切换到上次访问的目录 【也很推荐 互逆的】
cd -
# 光标移动到命令行首
ctrl+a
# 光标移动到命令行尾
ctrl+e
# 从光标处擅长至字首
ctrl+w
# 清屏
ctrl+l
# 终止前台命令的执行
ctrl+c
# 阻止屏幕输出(比如程序在执行,但不想看日志一直在屏幕上输出的时候)
ctrl+s
# 允许屏幕输出
ctrl+q
二. 熟练使用一些 Shell Bash 命令
1. Linux 三剑客 ——— grep
, sed
, awk
.
grep
在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配的行或文本。
通常字符串匹配或者过滤用它就够了。
sed
是一个使用简单紧凑的编程语言来解析和转换文本Unix实用程序。
比较适合用来做文本替换。
awk
是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。AWK提供了极其强大的功能:可以进行正则表达式的匹配,样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。
超级强大的工具,它不仅仅是一个工具,还是一个语言,有很多这方面的数据。一个比较典型的应用场景,从日志里捞某一些数据,并将其结构化的输出出来。
2. 常用命令
推荐的有,Vim 编辑器的diff 模式 vimdiff
, 将一个文件分割成数个split
, 去除文件中的重复内容行 uniq
, 对个文本文件内容进行排序 sort
等.
- 个人常用快捷键整理如下:
# vimdiff 是 Vim 编辑器的diff 模式, 等同于 vim -d 命令
# 例子:对比 a.txt 和 b.txt 文件
vimdiff a.txt b.txt
# split 可以将一个文件分割成数个
# 例子:将 a.txt 分隔为 200行一个的小文件,文件名前缀是 data-
split -l 200 a.txt data-
# uniq 去除文件中的重复内容行、sort 对个文本文件内容进行排序、head 指定显示文件前多少行内容的命令
# 例子: 查询一个文件重复最多的前10条记录
sort a.txt | uniq -c | sort -n -r | head -10
三. 编写简易 Shell 脚本
能简单解决的问题,绝不用复杂方式处理,我想这就是『酷』的定义吧。写 Shell 脚本,有时候就是这样。
1. 使用 Linux expect 实现 ssh 自动登录
#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "[lindex $argv 3]\n"}
}
interact
2. 简单方便的运维脚本
# 查找并删除 /log/ 文件夹里的 .log 文件
rm -rf $(find . -iregex ".*\/log\/.*\.log.*$")
# 查找超过 800M 的大文件
find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
# 在二级目录里查找大文件夹
du -h --max-depth=2 | sort -n
3. 轻量但是实用的小脚本
# 批量添加后缀
for i in * ; do mv $i $i".csv"; done
〇. 『One More Thing』Linux 中的有趣的命令
Linux 拥有丰富的命令,有一些强大且有用,但也有一些有趣且异想天开。最经典的比如 sl
小火车,cowsay
小牛说,下面会再举一些,我觉得很有意思的命令,喜欢的朋友可以安装玩玩。这些命令都不是系统自带,不过用系统自带的包管理工具,都可以轻松安装。
- sl: 一辆火车从屏幕右边开往左边
- cowsay: 是一个生成ASCII图片的程序,显示一头牛的消息
- cmatrix: 一个模拟黑客帝国风格的屏幕保护命令
- fortune: 用于显示随机引用、俏皮话或财富消息
- fortune-zh: fortune 的中文版
- htop: 比 top 更人性化的一个进程查看器
- figlet: 一款能够将文字转换为放大艺术字的命令
- hollywood: 在终端上伪造一个好莱坞黑客的屏幕(假装自己是黑客)
参考资料: