从粘贴板中的输入字符串中删除换行符的最简单方法

And*_*w L 58 unix macos shell

希望相当简单,在运行以下命令时解释用例(OS X 10.6):

$ pwd | pbcopy
Run Code Online (Sandbox Code Playgroud)

粘贴板最后包含换行符.我想摆脱它.

gre*_*rep 87

pwd | tr -d '\n' | pbcopy

  • 这也是一个很好的别名,`alias copy ="tr -d'\n'| pbcopy"`. (18认同)
  • 不会剥离所有新线路吗?如果我只想删除最后一个换行怎么办? (8认同)
  • 尽管来自@TaylorHawkes的'head -c -1'在OSX上对我不起作用(BSD头不喜欢负值),但它确实指出它从所有行中剥离换行符,而不仅仅是尾随行.一个可行的变体是`alias pbc ='xargs echo -n | pbcopy'` (6认同)
  • @davidmh - 是的,剥掉了所有这些.我总是删除最后一个有效的字符:`head -c -1`.http://taylor.woodstitch.com/linux/copy-local-clipboard-remote-ssh-server/ (2认同)
  • 在 bashrc 中,我喜欢:`alias cpwd="pwd | tr -d '\n' | pbcopy"` :) (2认同)

Pau*_*ce. 32

printf $(pwd) | pbcopy
Run Code Online (Sandbox Code Playgroud)

要么

echo -n $(pwd) | pbcopy
Run Code Online (Sandbox Code Playgroud)

请注意,如果目录名中有空格字符,则应引用这些字符.例如:

echo -n "$(pwd)" | pbcopy
Run Code Online (Sandbox Code Playgroud)

  • 你可以这样安全:`printf'%s'$(pwd)| pbcopy` (3认同)
  • 第一个是不安全的:字符串中可能有 % 。 (2认同)
  • 第二个命令非常有价值.很高兴知道"echo without newline"选项:`echo -n"text"`或``text\c"` (2认同)

s4y*_*s4y 7

我写了一个实用程序noeol来解决这个问题.它将stdin管道传输到stdout,但是如果有的话,则会删除尾随的换行符.例如

pwd | noeol | pbcopy
Run Code Online (Sandbox Code Playgroud)

......我别名copynoeol | pbcopy.

在这里查看:https://github.com/Sidnicious/noeol