由于超出此问题范围的原因,我手动重新创建bash的历史记录扩展。这就是说,我知道这个功能与另一个bash方法一起存在,但是我构建我的bash历史的方式,每个会话都有自己的会话历史文件,即
HISTFILE="${HOME}/.history/$(date -u +%Y/%m/%d.%H.%M.%S)_${HOSTNAME_SHORT}_$$"
要求我建立自己的历史搜索功能。
我写了以下功能:
function historysearch {
ack "$1" ~/.history
}
function historycopy {
mycopy=$(historysearch $1 | ack $2 | rev | cut -d: -f1 | rev)
echo ${mycopy%\\n} | pbcopy
}
用法如下:
$ historysearch foo
...
~/.history/2015/10/10.14.53.34_user-5_16778
6:hexedit assets/wav/foo_mu.wav
13:hexedit assets/wav/foo_mu.wav
...
确定了我想要的命令后,我
$ historycopy foo 778:13
其中第二个参数是会话历史名称后跟:
的最后三位数字,然后是与我想要的命令相关联的数字。以上将我想要的命令复制到我的系统剪贴板。不幸的是,即使我在函数中运行字符串替换命令${mycopy%\\n}
,它也会使用一个托架。这就是问题......
如果我将命令粘贴到终端,它会立即执行。我更希望将命令复制到剪贴板,以便我能够粘贴它,必要时更改它然后手动执行。
如何在传递给pbcopy
的字符串末尾删除换行符?
更新:我的字符串替换命令似乎从ack
删除了换行符,但后来echo
正在添加另一个换行符。已解决-n
标志。
答案 0 :(得分:1)
echo
在最后添加换行符。为避免这种情况,请使用echo -n