将终端中的最后n个命令复制到剪贴板

时间:2016-11-11 12:37:19

标签: awk sed grep

我想复制到这样的剪贴板

$ command1
$ command2

如果您运行历史记录,您将以相反的顺序获取命令,因此我想从尾部跳过多行,并用'$'替换输入行号。您可能怀疑在必须记录工作流程或编写文档时这是一个非常有用的简写。

示例:

$ history

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

那你怎么把它变成:

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

2 个答案:

答案 0 :(得分:2)

分配$ 1有效,但会留下前导空格

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

如果要将其复制到剪贴板,可以使用xclip

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

信用转到https://stackoverflow.com/a/4198169/2032943

答案 1 :(得分:1)

也许你可以使用这些;

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

tac - 反向连接和打印文件

NR<=3:表示历史之前的最后两个命令。 NR>1:删除历史记录中的历史命令 $1="$":将行号替换为$

测试:

$ echo first
first
$ echo second
second

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