基本上我想尝试别名:
git files 9fa3
Run Code Online (Sandbox Code Playgroud)
...执行命令:
git diff --name-status 9fa3^ 9fa3
Run Code Online (Sandbox Code Playgroud)
但是git似乎没有将位置参数传递给alias命令.我试过了:
[alias]
files = "!git diff --name-status $1^ $1"
files = "!git diff --name-status {1}^ {1}"
Run Code Online (Sandbox Code Playgroud)
......以及其他一些但不起作用.
退化的情况是:
$ git echo_reverse_these_params a b c d e
e d c b a
Run Code Online (Sandbox Code Playgroud)
......我怎么能做这个工作?
基本上我想说:
echo `grep ^foo /usr/share/dict/words | popup_menu`
Run Code Online (Sandbox Code Playgroud)
...并且有一些类型的键盘可导航菜单弹出或选择工具,非常类似于vim的":Explore"机制的工作原理.
"使用标准工具随处可轻松工作"的极高奖励积分
也可以接受的是"需要某种额外的配置文件或5-10行shell脚本"
不太可接受的是"下载这个perl库或100行python脚本等等......"此时,我宁愿尝试找到一些实际的程序/包来安装并将其列为硬依赖.但是如果你能想出一个2-5行的perl/python脚本,它不需要追踪那些可能也可以工作的库.
我调查过:
Dialog - 看起来更适合"shell应用程序"而不是ad-hoc脚本(看起来可能有办法让它做我想做的事情),缺点是它会覆盖当前的屏幕状态
Curses - 似乎它的目标是"C"或者需要用作perl/python库的一部分,必须使用这个编写我自己的菜单程序
bash"select"内置 - 通过数字选择工作,而不是键盘导航,使用起来有点尴尬,但相当接近
Vim - "grep ^ foo/usr/share/dict/words | vim - "...这让你惊讶地接近,只是缺少"将输入键绑定到终端打印当前行并退出"
...那么,我如何制作或找到一个体面的,简单的,特别的菜单制作者用于bash脚本,当我在命令行上懒惰时?
... git checkout -b `git branch -a | menu`
... ssh `grep foo /etc/hosts | menu`
... rm `ls | menu` # ignore obvious quoting issues with this...
Run Code Online (Sandbox Code Playgroud)
编辑:感谢目前为止的答案,但我想再次强调我正在寻找ASCII /文本菜单(不是xwindows).我正在尝试一些本地的东西,但没有什么能够达到最佳状态.
alias ×1
bash ×1
command ×1
git ×1
interactive ×1
menu ×1
parameters ×1
position ×1
scripting ×1
shell ×1