首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ZSH别名后面的所有内容放在其定义的中间?

问如何将ZSH别名后面的所有内容放在其定义的中间?
EN

Unix & Linux用户
提问于 2021-05-23 21:49:21
回答 1查看 133关注 0票数 0

我有一份文件:

代码语言:javascript
复制
/Users/MYUSERNAME/asciidots/asciidots/__main__.py

我想给它取别名,这样它就像在我的当前目录中一样运行。我在想这样的事情:

代码语言:javascript
复制
alias asciidots="OLDCWD=$PWD && cd /Users/MYUSERNAME/asciidots/asciidots/ && python3 __main__.py ALL_ARGUMENTS_FOLLOWING_THE_ALIAS && cd $OLDCWD"

但我不知道该怎么做。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-05-23 22:27:47

使用函数代替:

代码语言:javascript
复制
asciidots() (
    cd /Users/MYUSERNAME/asciidots/asciidots/ &&
    python3 __main__.py "$@"
)

"$@"扩展到函数的参数,在这里,我在函数体周围使用了( .. )而不是{ .. },以使它在子subshell中运行。子subshell环境有自己的工作目录,因此以后不需要跳回原来的目录。

(如果我没有弄错的话,至少对Zsh和Bash也是如此。)

参见:在Bash中,何时使用别名、何时编写脚本以及何时编写函数? (标题为Bash,但其中大部分内容可能也与Zsh相关)。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/651068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档