pbcopy 在复制的一次性密码中添加换行符

Dyl*_*att 2 macos

我正在围绕我的密码管理系统设置一个生产力工作流程,其中一步是从命令行实用程序获取一次性密码,并将其粘贴到对话框中(不幸的是没有命令行工具)。

我的命令是

passwordtool get otp | pbcopy
Run Code Online (Sandbox Code Playgroud)

不幸的是,pbcopy 似乎故意在复制的文本中添加了一个新行,因此当我将其粘贴进去时,还有一个额外的后退间距步骤。对我个人来说没什么大不了的,但我想分享这个流程,我想让其他人尽可能简单。关于解决方法有什么建议吗?

Spi*_*iff 6

pbcopy不添加换行符。一定是你passwordtool在这么做。由于各种原因,命令行工具通常会stdout在默认情况下添加尾随换行符。需要覆盖该约定的工具通常提供一个命令行选项来覆盖它,例如echo's-n选项。

为了证明,我在这里运行echo-n确保echo不添加换行符,并将其通过管道传输到pbcopy. 然后我通过输出剪贴板/粘贴板pbpaste并将其通过管道连接hexdump -C以查看它到底包含什么:

% echo -n "单词" | pbcopy && pbpaste | pbcopy && pbpaste | 十六进制转储-C
00000000 77 6f 72 64 |字|
00000004

如果我去掉-nfrom echo,我们会看到包含换行符时的样子:

% 回显“单词”| pbcopy && pbpaste | pbcopy && pbpaste | 十六进制转储-C
00000000 77 6f 72 64 0a |字。|
00000005

  • 接下来,看起来像`| tr -d \\n | pbcopy` 是要走的路。谢谢你的时间! (2认同)
  • @DylanWatt Uhm,我认为你的 `tr` 调用会吃掉任何值为 0x0a 的字节,即使它位于 OTP 数据的中间。 (2认同)