关于导航 (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"
我需要浏览一个文件夹,名称会因设备而异。当我到达终端时,我需要在终端中做的就是按 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"