Bash 如何将命令历史记录中的最后一个命令通过管道传输到剪贴板?

Bash 如何将命令历史记录中的最后一个命令通过管道传输到剪贴板?,bash,shell,zsh,Bash,Shell,Zsh,当涉及到grep/awk/sed/cut时,我是一个彻头彻尾的傻瓜,所以我需要这方面的帮助。我有这样一个:history | tail-n1 | pbcopy返回1968*mv~/iPhoto\Library.zip./;bell这很好,因为这是我运行的最后一个命令,但我需要删除开头的数字。我尝试过各种各样的awk、grep、sed和cut迭代,但正如我所说,对于这些类型的命令,我是个笨蛋。我该怎么做呢?只需将输出传输到 awk '{for(i=2;i<NF;i++)printf "%s"

当涉及到grep/awk/sed/cut时,我是一个彻头彻尾的傻瓜,所以我需要这方面的帮助。我有这样一个:
history | tail-n1 | pbcopy
返回
1968*mv~/iPhoto\Library.zip./;bell
这很好,因为这是我运行的最后一个命令,但我需要删除开头的数字。我尝试过各种各样的
awk
grep
sed
cut
迭代,但正如我所说,对于这些类型的命令,我是个笨蛋。我该怎么做呢?

只需将输出传输到

awk '{for(i=2;i<NF;i++)printf "%s",$i OFS; if (NF) printf "%s",$NF; printf ORS}'

你可以试试这个sed命令

history | tail -n 1 | pbcopy | sed 's/^[0-9]\+//g'
通过awk

history | tail -n 1 | pbcopy | awk '{sub(/^[0-9]+/,"")}1'
输出:

mv ~/iPhoto\ Library.zip ./ ; bell
mv ~/iPhoto\ Library.zip ./ ; bell

zsh
中,您可以告诉
history
(它是
fc-l
的同义词)不要打印带有
-n
的数字。此外,您还可以使用
-1
,使其仅打印最后一个条目:

history -n -1 | pcopy
fc -l -n -1 | pcopy
bash
history
中,没有此选项,但是还有一个
fc
命令,它甚至支持所需的选项。不幸的是,“suppress command numbers”(来自
man1bash
)似乎意味着“打印一个制表符”,因此输出以一个制表符和一个空格开始,可以用sed删除

fc -l -n -1 | sed 's/^\t //' | pcopy

这很好用,谢谢。堆栈溢出的时间限制目前不允许我接受这个答案,但如果可以,我肯定会接受。使用单引号
,因为shell扩展:别名cmdtocb='history | tail-n1 | awk'{for(i=2;ipbcopy是指向OS X剪贴板的命令行界面。它对于复制文件内容或命令输出非常有用。一个简单的例子是在目录中创建一个jpg列表,其中包含
find./-iname'*.jpg'| pbcopy',或者复制网站的源代码
curl example.com | pbcopy`奇怪……我仍然很好奇。)被大喊大叫。在“”附近分析错误)“但我不知道是哪一个。谢谢你的帮助。很好!太棒了!谢谢你。在命令行中的生活刚刚好了100倍。我想他出于任何原因将
*
编辑到历史id。@polym现在没问题了。为什么长命令这个简单的命令会删除开始时的所有数字
awk'{sub(/^[0-9]+/,”“)}”1'