我是 zsh 的一个相对较新的用户,对 shell 不太了解(不幸的是)。尽管如此,我想在我的 .bashrc 中定义一个包含哈希值的别名。然而,zsh似乎不喜欢它。我的命令基本上用于用 sed 替换 LaTeX 文件中的字符串,对其运行 LaTeX,然后撤消替换,因此类似于
alias tex-build='
sed -i \
's~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~\\newcommand{\\command}\[1\]{}~' \
/path/to/mytexfile.tex &&
latex ... &&
sed -i \
's~\\newcommand{\\command}\[1\]{}~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~' \
/path/to/mytexfile.tex
'
谁能帮助我找到一种方法来让这个别名与 LaTeX 命令的哈希一起运行?提前致谢!
答案1
首先,zsh
不会读取.bashrc
- 这是一个资源控制文件bash
,而不是zsh
;您可能想将其放入.zshrc
或您的.profile
.
其次,您不能简单地嵌套任何类型的引号。 'a long 'nested' string'
不是一个带有嵌套引号的字符串,它是带引号的字符串a long
,后跟裸露的字符串nested
,后跟带引号的字符串string
。
您尝试做的事情更有可能是一个函数。此外,由于您正在修改文件,对修改后的表单执行一次性操作,然后将其更改回来,因此不修改文件而仅将其修改后的表单发送到管道中会更简单,因此:
tex-build() {
sed \
's~\\newcommand{\\command}\[1\]{{here_is_the_command_stuff #1}}~\\newcommand{\\command}\[1\]{}~' \
/path/to/mytexfile.tex | latex ...
}