我意识到我在这个问题上花的时间超过了必要的时间,因此问题就出现了。
有时我需要将最后输入的shell命令保存到剪贴板中。 我可以这样做:
echo !! | xsel --clipboard
哪个成功。
但是当我尝试别名上面的命令时:
alias echoxs='echo !! | xsel --clipboard'
事情没有按预期发挥作用。特别是,剪贴板内容实际上是!!
。显然,我错过了关于bash预处理命令和别名的方法。我希望,一个别名,就像直观一样,就像C宏一样,输入别名就等于输入目标。
我尝试了其他方法,但似乎都没有。在脚本中使用HISTFILE
不起作用,因为shell会话缓存了这两个命令而没有立即写入文件,或者多个终端弄乱了文件,使得文件中的最后一个命令并不总是可靠的当前会话中的命令。
alias='history 1 | xsel --clipboard'
几乎所有工作,除了在尝试修改(例如,剪切或sed)历史输出时都失败,因为它是内置命令。
是通过sane stdout获取shell的最后一个命令的方法吗?
答案 0 :(得分:4)
我不太明白你所说的“在尝试修改历史输出时失败”,所以我希望我的解决方案适合你。我正在使用fc
来获取最后一个命令:
fc -ln -1 | xsel --clipboard
以下是选项的含义:
l
将使用标准输出n
将隐藏命令历史记录编号-1
是从历史记录中获取最后一个命令