这个问题与为什么别名的行为与直接运行 bash 命令不同?因为我已经尝试过该解决方案,但没有奏效。我用双引号替换了所有单引号,反之亦然。该命令不起作用。
我正在尝试实现一个别名,sys
这将打开一个我跟踪系统更改的文件sys.md
,附加一个日期,拉出该行,粘贴该行,将其替换-
为 markdown h2 格式的 's,打开一个新行,并为 markdown 项目符号格式插入一个-
。从 vi.stackexchange.com 我收到了一些实现命令的帮助。有用:
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
当我用双引号替换单引号时, $pu_ 被评估并且我得到
zsh: event not found: date
所以单引号很重要。但是,当我实现别名时
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
别名失败。nvim
opens ,但日期附加到第二行而不是底部。显然 $pu_ 被评估为来自 BASH 的变量。(nvim
的语法检查器甚至显示它被评估。) 反转双打和单打以产生
alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md'
具有相同的行为。反引号,
alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md`
冻结 bash 上source .zshrc
。我不知道该怎么做。任何帮助将不胜感激。
只需将其放入 bash 函数中(您可以将函数添加到
.bashrc
):然后您可以像使用别名一样调用它。
如果您唯一的问题是了解如何
single quote
在单引号字符串中包含一个字符,那么这里是方法。利用:对于
single quote
单引号字符串中的字符。这会结束当前引用的字符串,然后插入一个带引号的引号,然后开始一个新的带引号的字符串。
顺便说一句:由于这是一个常见问题,因此
bosh
提供了一种自动化此转换的方法。您可以获取schilytools
并编译它们,然后使用bosh
. 如果你打电话:in 的值
aliasreplacement
是在 mode 中输入的raw
,如果您稍后调用:您会以正确引用的形式看到别名,如果您输入
raw
您会在模式中看到别名。