在 bash 中,当在目录下时,我们如何选择文件或子目录而不实际输入其名称或什至部分名称?
有没有办法枚举或交替文件或子目录,例如我们如何使用 TAB 在网页中的多个内容之间切换?
打开文件或子目录是否取决于应用程序?
如果是,
我们如何在多个子目录中选择一个子目录
cd
?我们如何从多个pdf文件中选择一个pdf文件
evince
?
例如
$ ls .
subdir1 subdir2
$ cd
我们可以选择subdir2
for cd
,而不需要输入subdir2
任何内容吗?理想情况下,最好使用键在和Tab之间进行选择和交替,这样我们就可以停在,然后点击。subdir1
subdir2
subdir2
Return
答案1
放
bind TAB:menu-complete
然后运行evince
TAB。多次点击TAB以浏览不同的文件。
答案2
文件可以通过以下方式枚举
for file in .* * do;
# if targeted at files:
test -f "$file" || continue
# if targeted at directories:
test -d "$file" || continue
# in both cases arises the question: What about symlinks?
done
或(以节省排序时间)
ls --quoting-style=escape | while IFS= read file; do...
: check type like above
done
find . -type f -maxdepth 1 -printf %f\\n | while IFS= read -r file; do...
find . -type d -maxdepth 1 -printf %f\\n | while IFS= read -r file; do...
(该find
变体不处理奇怪的文件名。)