不是那种ls -la级别的入门技巧,是我用了很多年Linux之后才慢慢发现的几个操作,知道的人不多,但每次用都能省不少时间。
1. Ctrl+R之后按Ctrl+R继续翻
这个知道的人不少但很多人不会用。Ctrl+R进入反向搜索后,输入关键词找到第一个匹配。如果这不是你要的命令,再按一次Ctrl+R,会继续往前翻。不用重新输入,特别好用。
还有一个小众用法:Ctrl+R之后按Ctrl+Shift+R,可以在搜索结果中跳过当前这条看下一个匹配。
2. fc命令——把上一条命令放进编辑器
你打了一条很长的命令,发现中间有个地方写错了。大部分人会用方向键移上去改,或者用readline的快捷键。试试这个:直接在终端输入fc,它会把你上一条命令放进默认编辑器(通常是vim或nano)里,编辑完保存退出,命令自动执行。
如果只想编辑倒数第N条命令:fc -l列出历史编号,然后fc 编号。比方向键翻半天快多了。
3. !$和!!的进阶用法
!$表示上一条命令的最后一个参数。比如你先mkdir -p /var/www/very/long/path,然后想cd进去,直接cd !$就行。比手打路径快10倍。
但更厉害的是可以组合:!$:h表示去掉最后一个路径段的目录(dirname),!$:t表示只取文件名部分(basename),!$:r表示去掉扩展名。这三个组合起来,处理文件路径的效率起飞。
4. tee命令的真实用途
大部分人知道tee可以同时输出到屏幕和文件:command | tee output.txt。但tee的真正威力在于权限:sudo echo something > /etc/protected_file不行但echo something | sudo tee /etc/protected_file可以。因为tee本身有sudo权限。
还有一个用法:把中间过程的输出存下来同时继续管道传递。比如:cat huge.log | tee filtered.log | grep ERROR | wc -l。你既得到了ERROR的行数,又保存了一份过滤后的日志。
5. trap捕获信号做清理
写脚本的时候,加一行trap 'rm -f /tmp/mytempfile; echo interrupted' EXIT。这样不管脚本是正常结束还是被Ctrl+C中断还是报错退出,临时文件都会被清理。这个习惯可以避免服务器上积累一堆没用的临时文件。
陷阱信号可以指定:trap 'echo cleanup' INT TERM EXIT。INT是Ctrl+C,TERM是kill默认信号,EXIT是无论怎么退出都触发。
这五个技巧每个只用一行,不用装任何工具,全部内置于bash。学会了之后日常运维效率能明显提升,特别是fc和!$,用顺手了根本回不去。
还木有评论哦,快来抢沙发吧~