gpt4 book ai didi

linux - Bash:cd 到程序输出提供的目录

转载 作者:太空狗 更新时间:2023-10-29 11:45:19 26 4
gpt4 key购买 nike

我有一个返回系统路径的短 shell 程序。我想要做的是使用 bash 别名 CD 到该路径。

我的理想输出是

~$ pwd
/home/username
~$ mark home
~$ cd /
/$ pwd
/
/$ place home
~$ pwd
/home/username

我有“标记”部分在工作,但“地点”不在:

alias place="cd \"~/marker.sh go $@\";"

我的想法是,我想 cd 到 ~/marker.sh go $@ 的输出

问题是 bash 将其解释为一个命令,并给出错误:

-bash: cd: ~/marker.sh go : No such file or directory
-bash: home: command not found

我假设这意味着 shell 正在将整个别名解析为字符串。

我已经为别名 $()、`` 等的 shell 脚本部分尝试了各种形式的引用,但它们要么尝试在 bash 启动时运行脚本,要么根本不执行而只是保留一个字符串。

我编写此程序主要是为了学习 bash 命令,但我无法理解这一部分!

如果重要的话,我在 iTerm 1.0.0.20130624 中运行 OSX 10.9。

编辑:我明白 cd-ing inside a script won't work ,这就是为什么我试图使用我的程序返回正确的路径并使用内置别名系统来进行目录的实际更改。

最佳答案

你想要一个函数,而不是一个别名:

place () {
cd $( ~/marker.sh go "$@" )
}

别名不带参数;它们只是就地扩展,参数出现在别名扩展到的任何位置之后。

(你应该总是更喜欢一个函数而不是一个别名,除非这个函数不能适应你想要的。)

关于linux - Bash:cd 到程序输出提供的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com