在单行 bash 别名中修剪尾随换行符

Sea*_*son 8 terminal bash whitespace newlines macos

我正在尝试在 Mac OS X 终端上编写一个简单的别名来复制当前工作目录。我有这个:

alias cpwd="echo \`pwd\` | pbcopy; echo \"Copied \`pwd\`\""
Run Code Online (Sandbox Code Playgroud)

然后我可以运行以下命令来复制它:

$ cpwd
Run Code Online (Sandbox Code Playgroud)

问题是最后echo pwd包含换行符。所以当我粘贴它时,它会立即执行(如果粘贴在终端中)。

我想要做的就是去掉试用换行符,但我在互联网上找到的任何东西似乎都不适合我。看过涉及sed,awk和 的各种解决方案cut,但我不太明白。似乎很容易做到。

mnm*_*mnc 5

我相信这应该有效:

alias cwd="echo -n `pwd` | pbcopy; echo \"Copied `pwd`\""
Run Code Online (Sandbox Code Playgroud)

-n说“不换行”。或者你总是可以通过输出tr并删除这样的换行符:

alias cwd="echo `pwd` | tr -d "\n" | pbcopy; echo \"Copied `pwd`\""
Run Code Online (Sandbox Code Playgroud)

我不确定您是否要从第一个回声或两者中删除尾随的新行字符 - 但我想您可以弄清楚它是否适用于第一个 ;)