我在.zshrc
的{{1}}文件中遇到了别名的问题。
这是别名:
macOS
当我打电话给它时,shell会回答我:
alias update='sudo softwareupdate -i -a; brew update; for i in $(brew cask outdated --quiet); do brew cask reinstall $i; done; brew cleanup -r; gem update --system; gem update; upgrade_oh_my_zsh; npm update -g; for x in $(pip3 list -o --format=columns | sed -n '3,$p' | cut -d' ' -f1); do pip3 install $x --upgrade; done';
我找不到问题的根源。
答案 0 :(得分:1)
问题的症结在于您使用单引号来定义别名,但您还尝试在其中使用单引号。这会打破定义alias foo=string
时需要查看的连续字符串zsh。您可以在单个带引号的字符串中使用单引号,方法是结束它,转义引号,然后重新开始。例如:
alias foo='command '\''$1'\'' another-arg'
或者在最后加入一个引号,只需结束引用的字符串并转义一个引号:
echo 'this is a single quote: '\'
答案 1 :(得分:1)
与piojo wrote一样,问题是单引号内不能使用单引号。
在这种情况下,我建议创建函数而不是别名,而不是解决引用。
update () {
sudo softwareupdate -i -a
brew update
for i in $(brew cask outdated --quiet); do
brew cask reinstall $i
done
brew cleanup -r
gem update --system
gem update
upgrade_oh_my_zsh
npm update -g
for x in $(pip3 list -o --format=columns |
sed -n '3,$p' | cut -d' ' -f1); do
pip3 install $x --upgrade
done
}
这样你只需要在命令行上需要的引号。我认为它还提高了可读性并使编辑更容易。 (当然,也可以使用多行别名定义)