bash - 如何在 bash 中获取选项卡自动完成以替换扩展的 $(command)?
问题描述
我有一个小的 bash 脚本get_path
,它接受一个参数并返回一个预定路径到标准输出。例如,我可以使用它通过以下方式将文件复制到“project1”目录:
$ cp file1 $(get_path project1)
在上面的示例$(get_path project1)
中扩展为类似/path/to/project1/
. 要将文件复制到/path/to/project1/dir1/
我希望能够使用自动完成功能并执行以下操作:
$ cp file1 $(get_path project1)/d<tab_key>
当我尝试这个时,bash 自动完成它:
$ cp file1 $(get_path /path/to/project1/dir1/
即,$(get_path
不更换零件。我该如何解决?
解决方案
您可以shell-expand-line
readline
为此使用命令,通常绑定到Esc,Ctrl-e:
$ bind -P | grep shell-expand-line
shell-expand-line can be found on "\e\C-e".
例如,键入echo "$(echo foo)"
,按下并释放Esc后跟Ctrl-e,命令替换为echo foo
。
推荐阅读
- scala - 使用 Alpakka S3 连接器的多个下载请求
- css - 在css网格中同步切换列
- dart - Dart:实例无法访问静态字段?
- go - 停止阻塞的 goroutine
- nginx - 无法使用 nginx 提供静态内容。获取 403 禁止错误
- maven - 使用 maven 从子 pom 中的父 pom 扩展属性
- c# - Xamarin 中主详细信息视图之前的登录屏幕
- javascript - 如何每 30 秒重新加载一次 DIV 的内容?
- python - 如何将用户输入存储为多个条目,然后允许用户搜索他们创建的项目?
- reactjs - 如何使用 jest 和 (react-) testing-library 测试浏览器后退按钮的行为?