【发布时间】:2013-10-28 18:13:18
【问题描述】:
我有一个返回系统路径的简短 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,这就是为什么我试图使用我的程序返回正确的路径并使用内置的别名系统来进行目录的实际更改。
【问题讨论】:
-
对了,你看过
bash的目录栈特性,特别是popd和pushd命令吗? -
就像我说的,我对 bash 脚本非常陌生。我现在就去看看!
-
它们与您尝试执行的操作非常相似,尽管您正在实现目录的哈希表,而不是堆栈。
-
是的 - 我想要一个哈希表。我还存储了哈希表(实际上在不同的脚本中使用了 python 字典),然后将 dict 作为平面文件存储在我的硬盘上,这样我就可以使用常用目录的自定义名称在我的操作系统上跳转。
标签: linux macos bash shell alias