3.30参加了CSDN主办的开源技术大会OSTC,会上linuxtoy的站长Toy发表了题为《像黑客一样使用linux命令行》的演讲。幻灯片
内容汇总为下文
1.使用^删掉多余部分
% grep fooo /var/log/auth.log #foo错敲成了fooo % ^o #用^o删掉历史命令中第一个匹配到的o % grep foo /var/log/auth.log #相当于执行了这条命令
2.使用^old^new替换输错的部分
% cat myflie #myfile错输成myflie % ^li^il #用il替换li % cat myfile #相当于执行了这条命令
3.使用!:gs/old/new将全部old替换成new
% ansible nginx -m command -a 'which nginx' % !:gs/nginx/squid #将nginx替换成squid % ansible squid -m command -a 'which squid'
4.使用ctrl-r逆向搜索命令
5.使用ctrl-p访问上一条命令
6.使用ctrl-n访问下一条命令
7.使用!!执行上一条命令
% apt-get install emacs #忘记加sudo了 % sudo !! #sudo上一条命令 % sudo apt-get install emacs #相当于执行了这条命令
8.使用!part执行历史中最近一次以part开头的命令
% ls /usr/bin % !ls #执行了上一条命令
9.使用!?part执行历史中最近一次包含part的命令
% ls /usr/bin % !?usr #执行了上一条命令
10.使用!n执行历史中第n条命令
11.使用!-n执行历史中倒数第n条命令
% ls /usr/bin % !-1 #执行了上一条命令
12.使用!#:n引用当前行第n个参数(命令本身的编号为0)
% echo hello world !#:1 !#:2 # !#:1代表了第一个参数hello !#:2代表了第二个参数world % echo hello world hello world #相当于执行了这条命
13.使用!$得到上条命令的最后一个参数
14.使用!^得到上条命令的第一个参数
15.使用!:n得到上条命令的第n个参数
16.使用!:m-n得到上条命令的第m-n个参数
17.使用!:n*得到上条命令从n开始到最后的参数
18.使用!:*得到上条命令的所有参数
% cp foo.txt ~/such/a/long/path/to/go % cd !$ #进入上条命令的目的文件夹 % cd ~/such/a/long/path/to/go #相当于执行了这条命令
19.使用:h选取路径开头(相当于dirname)
20.使用:t选取路径结尾
21.使用:r选取文件名
22.使用:r选取扩展名
% ls /usr/bin/nano % cd !$:h #进入/usr/bin