如何自动补全特定目录下的文件?

2024-03-02

我创建了一个命令memo如下:

memo() {
  vi $HOME/memo/$1
}

我想将 bash-completion 应用于我的memo打开已经存在的文件$HOME/memo目录:

$ memo [TAB] # to show files in $HOME/memo

$HOME/memo包含目录,因此在下面列出该文件memo还不够。 换句话说,我想应用中使用的内容ls命令输入$HOME/memo to memo:

$ ls [TAB]
foo.md bar/

我尝试了以下方法,但它不适用于嵌套目录:

_memo() {
    local cur
    local files
    _get_comp_words_by_ref -n : cur
    files=$(ls $MEMODIR)
    COMPREPLY=( $(compgen -W "${files}" -- "${cur}") )
}
complete -F _memo memo

MEMODIR=$HOME/memo


这是一个简单的例子:

_memo()
{
    local MEMO_DIR=$HOME/memo
    local cmd=$1 cur=$2 pre=$3
    local arr i file

    arr=( $( cd "$MEMO_DIR" && compgen -f -- "$cur" ) )
    COMPREPLY=()
    for ((i = 0; i < ${#arr[@]}; ++i)); do
        file=${arr[i]}
        if [[ -d $MEMO_DIR/$file ]]; then
            file=$file/
        fi
        COMPREPLY[i]=$file
    done
}
complete -F _memo -o nospace memo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动补全特定目录下的文件? 的相关文章

  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 如何将参数传递给java bash脚本? [复制]

    这个问题在这里已经有答案了 我有一个简单的 bash 脚本来运行我的 java 程序 就这个 run sh bin sh java jar target my jar arch jar 我想将参数传递给这个脚本 该脚本必须将它们传递给jav
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 从 bash 从新的 Google Chrome 浏览器会话获取“用户代理”字符串

    我想要得到用户代理 HTTP 请求标头 https developer mozilla org en US docs Web HTTP Headers User Agent来自 bash 的新 Google Chrome 浏览器会话 刚刚打
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 匹配模式后添加行[重复]

    这个问题在这里已经有答案了 我有一个文件说test具有以下值 Linux Solaris Fedora Ubuntu AIX HPUX 如何在匹配 AIX 的行后面添加一行系统主机名 如果我做 echo hostname gt gt tes
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • 使用 find 命令搜索直到第一个匹配项

    我只需要搜索可以在任何地方的特定目录有没有办法运行此命令直到第一个匹配 谢谢 我现在使用 find noleaf name experiment type d wc l 正如鲁道夫 米尔鲍尔 Rudolf M hlbauer 所提到的 qu
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • bash中的用户名、密码程序

    我有一个程序 要求用户输入用户名和密码 然后将其存储在文本文件中 第一列是用户名 第二列是密码 我需要一个命令 在用户输入用户名和新密码时替换密码 如下我拥有的 bin bash admin menu Register User echo

随机推荐

  • 如何访问 Rcpp::List 中向量的元素

    我很困惑 以下编译并工作正常 include
  • VideoView 对于 HLS 来说太早触发 OnPreparedListener

    我想在用户等待 VideoView 开始播放 HLS 时向用户显示一些 ProgressDialog 我尝试为此使用 OnPreparedListener 但他提前触发 在玩家下载 m3u8 文件之后 而不是在视频开始时 VideoView
  • Java:基于磁盘的快速哈希集

    我需要存储一个大的哈希集 最多能够包含大约 2 亿个 40 位值 将其存储为 2 亿 64 位值是可以接受的 尽管有 2 亿 16 位丢失 要求是 内存占用很小 磁盘空间不是问题 内存才是问题 fast contains long l an
  • 在 Spring 批处理写入期间确定块中失败项目的方法

    有哪些方法可以记录在写入 10 个项目大小的块期间失败的确切项目 有没有办法在 ItemWriteListener 的 onWriteError 方法中捕获它 是否可以通过扩展 ItemWriter 接口来知道这一点 感谢致敬 尼克 你可以
  • 如何在 Python 2 中正确编码向量化函数条目

    所以我玩了一些我在网上找到的使用Python 3处理优化的代码 修改后 它呈现了这样的图 现在我正在使用Python 2 并且 尚未处理 我相信问题是Python迭代 但是当遵循中建议的括号技巧时我没有得到任何结果这个帖子 https st
  • 如何获取Xvfb显示编号

    如何获取运行 Xvfb 时使用的显示编号 例如有人跑 Xvfb 14 我需要以某种方式获取使用过的显示器编号 14 提前致谢 在 UNIX 系统上 运行 ps ef grep Xvfb 它应该将其与流程一起列出
  • 在 Android 中使用 RegEx 分割字符串

    我一直在尝试分开Strings使用正则表达式没有成功 这个想法是将给定的音乐文件元数据与其文件名分开 以便 01 Kodaline Autopilot mp3 会导致 metadata 0 01 metadata 1 Kodaline me
  • Rails:编辑表单中的序列化数据

    我有一个模型 它有一个参数 即序列化哈希 我希望能够使用内置的 Rails 功能来编辑表单中的哈希值 这是almost在职的 如果您填写表单并提交 参数将被正确序列化 并且在控制器中模型将使用预期值构建 当我希望表单显示现有模型时 它就会崩
  • 要求通用方法在 FAIL 时抛出特定异常类型

    是的 我知道我完全会看起来像个白痴 但我的大脑只是not今天早上开始工作 我想要一种方法 我可以说 如果它变坏 则返回这种类型的异常 对吧 例如 类似 这不起作用 static ExType TestException
  • CTC:空格和空白有什么区别?

    2006年article https www cs toronto edu graves icml 2006 pdf关于联结主义时间分类 Alex Graves co 引入了一种解码语音的模型27标签 26 个用于字母表字母 1 个用于bl
  • C++ 防止 const 方法通过成员指针或引用更改数据

    假设我有一个像这样的简单课程 class Foo public void foo const str 5 x obj gt changeTheWorld x 4 y get 5 obj2 gt changeTheWorld private
  • Mongodb查找对象内最长数组的查询

    我目前在 mongo 中为我的应用程序设置了这样的对象 简化的示例 为了清楚起见 我在这里删除了一些不相关的字段 id ObjectId 529159af5b508dd71500000a c somecontent l d 2013 11
  • JNI 错误:访问过时的弱全局引用

    我在本机代码中缓存了对 Java 对象的引用 如下所示 java global reference deleter JAVA ENV is an instance of JNIEnv that is cached globally and
  • Apache Nifi:使用更新记录处理器替换列中的值

    我有一个 csv 看起来像这样 name code age Himsara 9877 12 John 9437721 16 Razor 232 45 我必须更换色谱柱code根据一些正则表达式 我的逻辑如下面的 Scala 代码所示 if
  • 如何在 couchdb 中索引多维数组

    我有一个多维数组 我想用 CouchDB 对其进行索引 实际上使用 Cloudant 我的用户有他们所属团队的列表 我想搜索找到该团队的每个成员 因此 获取所有具有 ID 为 79d25d41d991890350af672e0b76faed
  • 数据建模草稿/报价/订单/发票

    我目前正在开发一个小项目 我需要对以下场景进行建模 Scenario 客户打电话来 他想要一辆新车的报价 销售代表 登记客户信息 销售代表 在系统中创建报价 并将一个项目添加到报价中 汽车 销售代表 通过电子邮件将报价发送给客户 客户接受报
  • GWT 应用程序仅在 IE 中抛出“JavaScriptException”,堆栈跟踪没有有用的信息

    我的 GWT 应用程序在某个时刻抛出 JavaScriptException 此问题仅出现在 Internet Explorer 中 IE 8 和运行 IE7 模式的 IE 8 堆栈跟踪如下 com google gwt core clie
  • App Center iOS 安装错误:“无法安装此应用程序,因为无法验证其完整性”

    我发现这个问题已被问过很多次 但我没有看到适合我的解决方案 因此我希望提供更多信息可能会有所启发 We use 应用中心 ms https appcenter ms 测试 iOS 应用程序 在我们的 iOS 证书过期之前 此方法运行良好 我
  • 从设备查看或检索 Core Data .sqlite 文件

    我怎样才能真正在真实设备 而不是模拟器 上查看核心数据存储的 sqlite 文件 是否有工具可以让您查看核心数据信息 在 Xcode 中 打开设备窗口 shift cmd 2 从左侧列表中选择您的设备 从 已安装的应用程序 列表中选择您的应
  • 如何自动补全特定目录下的文件?

    我创建了一个命令memo如下 memo vi HOME memo 1 我想将 bash completion 应用于我的memo打开已经存在的文件 HOME memo目录 memo TAB to show files in HOME mem