关于导航 (cd),模拟选项卡以在 bash 脚本中自动填充?

Emulating tab to autofill within a bash script in regards to navigation (cd)?

我需要浏览一个文件夹,名称会因设备而异。当我到达终端时,我需要在终端中做的就是按 Tab 键自动填充名称(它是该目录中唯一的文件夹)并继续。

例如。 cd /dir1/dir2/[tab]/dir3/

如何将此 'tab to autocomplete' 功能转换为 bash 脚本? bash 相对较新,所以我无法理解和吸收一些更有经验的 posts/solutions,因为我无法全部理解。如果可能的话,ELI5 将不胜感激。

鉴于您的条件(假设)“它是该目录中的唯一文件夹”。

如果您的 objective 只是将目录 cd 更改到最深处 directory/folder,您可以尝试如下操作:

例如,给定这样的目录结构 main_folder/abc/def/ghi/unknown1/unknown2/..../deepest_unknown_folder/

首先是使用find命令找到main_folder里面最深的未知文件夹的路径,如下:

bash$ find main_folder/ -type d -print
main_folder/abc/def/ghi/unknown1/unknown2/..../deepest_unknown_folder

-type d是告诉find你只对目录感兴趣

-print就是告诉find要print/show结果

因为我们要在后面cd使用这个路径,所以我们应该将find返回的这个路径存储为一个变量。让我们将它存储到变量 deepest_path:

bash$ deepest_path=$( find main_folder/ -type d -print )

您可以使用 echo

打印出来验证此变量 deepest_path 的值
bash$ echo "$deepest_path"
main_folder/abc/def/ghi/unknown1/unknown2/..../deepest_unknown_folder

最后,你可以简单地cd

bash$ cd "$deepest_path"

将这些步骤合并到一个 bash 脚本中,您将需要“将目录更改为 main_folder 中最深的未知文件夹,因为每个级别只有 1 个子文件夹” :

#!/bin/bash

deepest_path=$( find main_folder/ -type d -print )
echo "$deepest_path"
cd "$deepest_path"