2016-11-11 24 views
0

我想复制如果您运行的历史,你会得到相反的顺序命令到剪贴板像这样复制到剪贴板最后n个命令,在终端

$ command1 
$ command2 

,所以我想就跳过了一些来自尾部的行,并用'$'替换输入行号。你可能会认为这是一个非常有用的速记,当你需要登录你的工作流程或写文档。

例子:

$ history 

1340 pass 
1341 pass insert m clouds/cloud9 
1342 pass insert -m clouds/cloud9 
1343 sudo service docker start 
1344 history 

所以,你怎么把它转换成:1

$ sudo service docker start 
$ pass insert -m clouds/cloud9 
...etc 
+0

你知道'tac'命令?还有这些其他问题? [Q1](http://stackoverflow.com/questions/742466/how-can-i-reverse-the-order-of-lines-in-a-file)[Q2](http://stackoverflow.com/问题/ 8017456/output-file-lines-from-last-to-first-in-bash) – Jdamian

+0

我之前没有使用它。谢谢! – grokkaine

回答

1

也许你可以使用这些;

TAC - 串联和反向

NR<=3打印文件:是指历史之前的最后两个命令。 NR>1:删除历史 $1="$" history命令:更换行号$

测试:

$ echo first 
first 
$ echo second 
second 

$ history | tac | awk 'NR>1&&NR<=3 {$1="$";print $0}' 
$ echo second 
$ echo first 
2

分配$作品,但如果你想复制它会留下一个前导空格

history | awk '{$1=""; print}' 

这到剪贴板,你可以使用XCLIP

history | awk '{$1=""; print}' | xclip 

幸得https://stackoverflow.com/a/4198169/2032943