SD:我的脚本目录

2021-03-16 06:17:50

$ tree〜/ sd / serues / ian /sd├─────────────────────── ── - 猫├──暗淡└──易感化├──edit├──────────────────────────── ─同步── - Tmux│├──init││──恢复└───哪个

SD是我的路径上的命令。它将其参数派代为我的脚本目录。

这听起来像是一个愚蠢的方式来拯救自己必须键入几个字符。它是。但它也比这更大:

SD有很好的标签完成。这是SD和〜/ SD之间唯一的真正区别:这些命令所做的事情的描述很小。

这些描述来自命令文件本身中的注释,或来自单独的命令.help文件(如果有很多可以说,或命令不是shell脚本)。

例如,在上面的演示中,我运行SD帮助nix sync,最终运行cat〜/ sd / nix / sync.help。第一行最终在完成菜单中最终,但其中的其余文本是在我忘记命令的工作原理。

我下午写了一个下午,当我在我的〜/ bin中找到一个脚本时,我会写一下。我知道它在那里 - 我知道它所做了什么 - 但我不记得我记得它的名字。

我在〜/ bin中靠近百种不同的脚本,所有这些都是在添加它们时具有完全感觉的名称:可视化,移植,部署等。

我已经够了,所以我添加了一点结构,而SD出生。

当他们命名为这样的命令时,更容易记住该命令。当您编写使用时,更容易记住如何使用它们。从那以后,我已经使用过SD,我认为我不能回到一个平坦的〜/ bin。

我的笔记本电脑上只有几个SD命令,因为我没有发现自己在家里写了很多复杂的剧本。但SD是为工作编写的,我有几十个助手由项目或工具或域名整齐地分类。这很好。

这不是真的。这更像是一个想法。如果你愿意,你可以自己实施自己。

但当然你不想弄清楚如何编写自己的shell完成。壳牌完成是一些奥术胡说。你要我已经完成了它。但这是事情:我只写了zsh完成,因为我只交互地使用zsh。

我有时会考虑重写SD,以除了一堆外壳和发布它并宣传并添加Bash支持以及您有什么影响。但你知道吗?我可能不会那样做。但也许别人会,如果他们喜欢这个想法。 1

但是,欢迎使用我的实现,如果你使用ZSH。它适用于MacOS和Linux。它生活在我的dotfiles repo中,因为我想要它在我使用的每台机器上,我很懒惰。另请参见箱/完井/ _SD和SD-Common /。 SD-common是一种脚本,如〜/ sd中必须存在的脚本,或者可能会破裂(我将它们安装为符号链接到我的dotfiles repo)。

如果要完成完成,则必须在您的.zshrc文件中添加它:

最后一个注意:SD只查找可执行文件,因此您可以添加来自同一目录中的多个脚本可以源的非可执行服务器。当SD调用命令时,$ 0是命令的绝对路径,所以您可以使用dirname" $ 0"到你的帮助者。就像你期望的那样。

能够键入sd new foo命令而不是vim〜/ bin /命令,键入shebang,试图运行它,实现我忘了使它可执行,再次运行它,并使mldr稍微使我的生活更好。因为它很容易拯救片段以后,我发现我更容易做到这一点 - 几个月后,很少可能发现自己梳理到Ctrl-R的可能性。

否则,你知道,它不是救生。它不会有助于你欣赏周围的较小的美女。你仍然会醒来感到悲恋。最近我一直在使用它来向NIX-ENV周围的用户友好的包装器作为我的系列的一部分,即如何学习NIX,这很好。

使SD新的支持A - Escape参数并将其余的参数视为脚本,以便轻松藏在内:SD New Foo Bar - Echo Foobar。

弄清楚如何在SD和自动完成脚本_SD之间共享逻辑。现在洛斯复制粘贴。

生成命令参数的命令完成的一些好方法,而不是仅用于命令本身。特别是对于像SD Cat和SD编辑的命令,它比应该更难使用。

在$ 0不是SD的情况下,将其视为脚本路径的一部分,因此您可以制作非常轻的命令包装,而无需键入SD。基本上是ln -s $(sd)〜/ bin / some-command,然后您可以键入一些命令foo而不是sd some-command foo。

支持SD Foo Bar - Help而不是SD帮助Foo Bar,因为重新定位光标很烦人。但这是一件整个蠕虫。是的真实解决方案是不使用shell,找到一些不错的替代方案,实际上了解命令行如何工作,但真的只是你知道它是2021,拜登是总统,抨击仍然是我们没有的唯一事情与我谈谈油壳,我知道关于油壳的所有信息

但SD就像一个95/20的情况。即使在被忽视的詹姆斯的状态下也很好。只要你正在使用ZSH。

如果您这样做,请告诉我,所以我可以切换到您的实现。 ↩︎