Macos 在粘贴板中从输入字符串中剥离换行符的最简单方法
当我运行以下命令(OS X 10.6)时,希望能够非常简单地解释用例:Macos 在粘贴板中从输入字符串中剥离换行符的最简单方法,macos,unix,shell,Macos,Unix,Shell,当我运行以下命令(OS X 10.6)时,希望能够非常简单地解释用例: 粘贴板的末尾包含一个换行符。我想把它扔掉。pwd | tr-d'\n'| pbcopy printf $(pwd) | pbcopy 或 请注意,如果目录名中有空格字符,则应该引用这些字符。例如: echo -n "$(pwd)" | pbcopy 我编写了一个名为noeol的实用程序来解决这个问题。它通过管道将stdin传输到stdout,但如果有尾随的换行符,则将其忽略。例如 pwd | noeol | pbcopy
粘贴板的末尾包含一个换行符。我想把它扔掉。
pwd | tr-d'\n'| pbcopy
printf $(pwd) | pbcopy
或
请注意,如果目录名中有空格字符,则应该引用这些字符。例如:
echo -n "$(pwd)" | pbcopy
我编写了一个名为
noeol
的实用程序来解决这个问题。它通过管道将stdin传输到stdout,但如果有尾随的换行符,则将其忽略。例如
pwd | noeol | pbcopy
…我把copy
化名为noeol | pbcopy
$ man ascii | grep -E '\b00\b|\b0a\b'
00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel
08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si
在这里查看:对于我来说,我在
tr-d'\n'
方法上遇到了问题。在OSX上,我碰巧通过brew安装coreutils
安装了coreutils包。这提供了所有“普通”GNU实用程序,它们的典型名称前面都有一个前缀g。例如,head
就是ghead
在IMO中,使用此选项更安全:
pwd | ghead -c -1 | pbcopy
您可以使用od
查看输出情况:
$ pwd | ghead -c -1 | /usr/bin/od -h
0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65
0000020 696c
0000022
vs
区别是什么
00
和0a
是nul和换行符的十六进制代码。ghead-c-1
仅“咀嚼”输出中的最后一个字符,然后将其交给|pbcopy
$ man ascii | grep -E '\b00\b|\b0a\b'
00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel
08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si
第一个是不安全的:字符串中可能有%。您可以这样使其安全:
printf'%s'$(pwd)| pbcopy
第二个命令非常有用。了解“echo而不换行”选项非常好:echo-n“text”
或“text\c”
此解决方案对我更有效,因为我使用别名来复制上一个命令:alias cplc='echo-n$(fc-ln-1)| pbcopy'side注意:如果您想这样做的原因是粘贴到Finder中的“Go to”字段中(键入~
),您只需使用pwd | pbcopy
,粘贴到文本字段中,然后按backspace。这也可以创建一个很好的别名,alias copy=“tr-d'\n'| pbcopy”
。那不是要删除所有新行吗?如果我只想删除最后一行怎么办?@davidmm-是的,删除所有新行。我总是删除最后一个对我来说很有效的字符:head-c-1
。在bashrc中,我喜欢:别名cpwd=“pwd | tr-d'\n'| pbcopy”
)尽管@TaylorHawkes中的'head-c-1'在OSX上对我不起作用(BSD head不喜欢负值),但它确实指出它从所有行中剥离了新行,而不仅仅是从后面的行。一个有效的变体是alias pbc='xargs echo-n | pbcopy'
$ pwd | /usr/bin/od -h
0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65
0000020 696c 000a
0000023
$ man ascii | grep -E '\b00\b|\b0a\b'
00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel
08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si