【问题标题】:copy to clipboard the last n commands in a terminal将终端中的最后 n 个命令复制到剪贴板
【发布时间】:2016-11-11 12:37:19
【问题描述】:

我想像这样复制到剪贴板

$ 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

【问题讨论】:

  • 你知道tac 命令吗?还有这些其他问题? Q1Q2
  • 我之前没用过。谢谢!

标签: awk sed grep


【解决方案1】:

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

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

如果你想把它复制到剪贴板,你可以使用 xclip

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

归功于https://stackoverflow.com/a/4198169/2032943

【讨论】:

    【解决方案2】:

    也许你可以使用这些;

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

    tac - 反向连接和打印文件

    NR&lt;=3 :表示历史前的最后两个命令。 NR&gt;1 : 删除历史中的历史命令 $1="$" : 将行号替换为 $

    测试:

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

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2014-09-14
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多