JP *_*Lew 11 macos bash terminal pbcopy .bash-profile
我经常发现自己使用以下命令将历史命令复制到剪贴板:
echo !123 | pbcopy
终端可以正常工作.假设!123 = cd ..它看起来像这样:
$ echo !123 | pbcopy
echo cd .. | pbcopy
//result: `cd ..` is in the clipboard
Run Code Online (Sandbox Code Playgroud)
为了让生活更轻松,我将这个bash函数添加到我的.bashrc中:
function pb() {
echo $1 | pbcopy
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,将调用此命令,如下所示:pb !!.但是,这不起作用.这是发生的事情:
$ pb !123
pb cd .. | pbcopy
//result: `!!` is in the clipboard
Run Code Online (Sandbox Code Playgroud)
无论我调用什么历史命令,它总是返回!!到剪贴板.我也试过制作别名,但是它有同样的问题:
alias pb='echo !! | pbcopy'
有什么指针吗?
Sam*_*een 12
你的功能有点不对劲.它应该使用$@而不是$1
那是
function pb() {
echo "$@" | pbcopy
}
Run Code Online (Sandbox Code Playgroud)
结果:
samveen@minime:/tmp $ function pb () { echo "$@" | pbcopy ; }
samveen@minime:/tmp $ pb !2030
pb file `which bzcat`
//result: `file /bin/bzcat` is in the clipboard
samveen@minime:/tmp $
Run Code Online (Sandbox Code Playgroud)
为了解释为什么alias不起作用,它!!是在单引号内,如果!!没有引用则发生历史替换.因为它是命令历史的替代品,根据定义是交互式的,将其保存为变量和别名非常棘手.
| 归档时间: |
|
| 查看次数: |
12856 次 |
| 最近记录: |