将last bash命令复制到剪贴板中

时间:2014-07-17 14:41:27

标签: bash shell history

我意识到我在这个问题上花的时间超过了必要的时间,因此问题就出现了。

有时我需要将最后输入的shell命令保存到剪贴板中。 我可以这样做:

echo !! | xsel --clipboard

哪个成功。

但是当我尝试别名上面的命令时:

alias echoxs='echo !! | xsel --clipboard'

事情没有按预期发挥作用。特别是,剪贴板内容实际上是!!。显然,我错过了关于bash预处理命令和别名的方法。我希望,一个别名,就像直观一样,就像C宏一样,输入别名就等于输入目标。

我尝试了其他方法,但似乎都没有。在脚本中使用HISTFILE不起作用,因为shell会话缓存了这两个命令而没有立即写入文件,或者多个终端弄乱了文件,使得文件中的最后一个命令并不总是可靠的当前会话中的命令。

alias='history 1 | xsel --clipboard'

几乎所有工作,除了在尝试修改(例如,剪切或sed)历史输出时都失败,因为它是内置命令。

是通过sane stdout获取shell的最后一个命令的方法吗?

1 个答案:

答案 0 :(得分:4)

我不太明白你所说的“在尝试修改历史输出时失败”,所以我希望我的解决方案适合你。我正在使用fc来获取最后一个命令:

fc -ln -1 | xsel --clipboard

以下是选项的含义:

  • l将使用标准输出
  • n将隐藏命令历史记录编号
  • -1是从历史记录中获取最后一个命令