希望能相当简单地解释我运行以下命令时的用例(OS X 10.6):
$ pwd | pbcopy
粘贴板的末尾包含换行符。我想删除它。
nukf8bse1#
pwd | tr -d '\n' | pbcopy
c7rzv4ha2#
printf $(pwd) | pbcopy
或
echo -n $(pwd) | pbcopy
请注意,如果目录名称中有空白字符,则应将这些字符用引号括起来。例如:
echo -n "$(pwd)" | pbcopy
llmtgqce3#
我写了一个名为noeol的实用程序来解决这个问题,它将stdin连接到stdout,但是如果有换行符的话,就省略掉后面的换行符。
noeol
pwd | noeol | pbcopy
......我将copy别名为noeol | pbcopy。点击此处查看:https://github.com/Sidnicious/noeol
copy
noeol | pbcopy
w6lpcovy4#
对我来说,我对tr -d '\n'方法有问题。在OSX上,我碰巧通过brew install coreutils安装了coreutils包。这提供了所有“正常”的GNU实用程序,在它们的典型名称前面加上一个g前缀。所以head应该是ghead。使用此方法更安全IMO:
tr -d '\n'
brew install coreutils
head
ghead
pwd | ghead -c -1 | pbcopy
您可以使用od来查看输出结果:
od
$ pwd | ghead -c -1 | /usr/bin/od -h 0000000 552f 6573 7372 732f 696d 676e 6c6f 6c65 0000020 696c 0000022
与
$ 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之前“咀嚼”输出中的最后一个字符。
00
0a
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
t30tvxxf5#
我们可以先删除结尾的换行符(如果有的话),然后将其作为follows提供给pbcopy:
pbcopy
your_command | perl -0 -pe 's/\n\Z//' | pbcopy
我们也可以创建一个别名:
alias pbc="perl -0 -pe 's/\n\Z//' | pbcopy"
然后命令将变成:
pwd | pbc
5条答案
按热度按时间nukf8bse1#
pwd | tr -d '\n' | pbcopy
c7rzv4ha2#
或
请注意,如果目录名称中有空白字符,则应将这些字符用引号括起来。例如:
llmtgqce3#
我写了一个名为
noeol
的实用程序来解决这个问题,它将stdin连接到stdout,但是如果有换行符的话,就省略掉后面的换行符。......我将
copy
别名为noeol | pbcopy
。点击此处查看:https://github.com/Sidnicious/noeol
w6lpcovy4#
对我来说,我对
tr -d '\n'
方法有问题。在OSX上,我碰巧通过brew install coreutils
安装了coreutils包。这提供了所有“正常”的GNU实用程序,在它们的典型名称前面加上一个g前缀。所以head
应该是ghead
。使用此方法更安全IMO:
您可以使用
od
来查看输出结果:与
区别在哪里?
00
和0a
是nul和换行符的十六进制代码,ghead -c -1
只是在将输出传递给| pbcopy
之前“咀嚼”输出中的最后一个字符。t30tvxxf5#
我们可以先删除结尾的换行符(如果有的话),然后将其作为follows提供给
pbcopy
:我们也可以创建一个别名:
然后命令将变成: