希望相当简单,在运行以下命令时解释用例(OS X 10.6):
$ pwd | pbcopy
粘贴板末尾包含换行符。我想摆脱它。
答案 0 :(得分:83)
pwd | tr -d '\n' | pbcopy
答案 1 :(得分:30)
printf $(pwd) | pbcopy
或
echo -n $(pwd) | pbcopy
请注意,如果目录名中有空格字符,则应引用这些字符。例如:
echo -n "$(pwd)" | pbcopy
答案 2 :(得分:7)
我写了一个名为noeol
的实用程序来解决这个问题。它将stdin管道传输到stdout,但是如果有的话,则会删除尾随的换行符。 E.g。
pwd | noeol | pbcopy
...我将copy
别名为noeol | pbcopy
。
答案 3 :(得分:0)
对我来说,我在tr -d '\n'
方法上遇到了问题。在OSX上,我碰巧通过brew install 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。
$ pwd | /usr/bin/od -h
0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65
0000020 696c 000a
0000023
区别?
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