我有一个 shell 脚本,它为每个 Markdown 文件创建一个函数(在 bashscript 文件中.bashrc
),以便在编辑器中打开它。
例子:
ls /home/nikhil/Notes/Studies
Physics.md
Chemistry.md
Studies.md
index.md
ls /home/nikhil/Notes/Sports
Football.md
Cricket.md
index.md
如您所见,某些文件夹(例如 Studies)包含同名文件(Studies.md)和 index.md,而其他文件夹(例如 Sports)包含 index.md 但不包含 Sports.md
现在,我的 bashscript 创建以下函数
oPhysics(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Physics.md }
oChemistry(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Chemistry.md }
oStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/Studies.md }
oiStudies(){ ${Editor:-vim} /home/nikhil/Notes/Studies/index.md }
oFootball(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Football.md}
oCricket(){ ${Editor:-vim} /home/nikhil/Notes/Sports/Cricket.md}
oiSports(){ ${Editor:-vim} /home/nikhil/Notes/Sports/index.md}
注意:oStudies
andoiStudies
存在,while 只oiSports
存在。
应用
现在,作为用户,我想输入oStudies
or oSports
(这会失败)而不是oiSports
,它应该在函数不存在oiSports
时自动运行。oSports
这是因为,大多数时候用户对打开正常的 markdown 文件感兴趣,只有当它们不存在时用户才想打开index.md
. 用户不记得只有 index.md 存在于哪个文件夹(例如 Sports 文件夹)。
我怎样才能做到这一点?我正在寻找的模式是在不存在的情况下运行一个函数oiBlahBlah
,oBlahBlah
因为它oBlahBlah
是由用户调用的。
回复建议
制作别名不起作用,因为我不想oStudies
执行oiStudies
另一个问题的答案。如果用户想要编辑主 Markdown 文件,并且只想编辑不存在的索引文件,为什么不编写函数来做到这一点呢?然后才有
oSports
功能。重构以在函数中具有公共代码。情况并不明显,但一个简单的解决方案可能是:
首先像这样定义每个函数:
oStudies() { oiStudies; }
等等然后让你的脚本在需要的地方覆盖这些函数。