频繁更改目录时如何尽量减少打字?

deh*_*ann 5 linux cd bash command-line tab-completion

有哪些好的 Linux 命令可以让命令行上的不同目录之间的切换更容易?

我经常不得不在具有长名称的不同目录之间切换,例如

cd foo/20100801-rev124-test2
ls 
cd ../20100801-rev124-test1
ls 
cd ../20100802-rev126-bar
Run Code Online (Sandbox Code Playgroud)

通常,我使用制表符完成,所以它是这样的:

cd ../2010080 Tab2 Tab-rev12 Tab6- Tabbar

但这很烦人,因为所有这些名称都非常相似,因此选项卡完成并没有真正节省多少工作。

在这种情况下,您使用什么技巧来减少打字?

顺便说一句,我使用pushdpopd有时,但在这里它不会帮助,因为我不访问的目录中给定的顺序。

更新:

有关一个不错的解决方案,请参阅我的其他相关问题的已接受答案。基本上,只需创建一个替代命令:cd

function cd2 { select a in $1*; do cd $a; break; done }
Run Code Online (Sandbox Code Playgroud)

它将一次列出所有可能的完成:

$ cd2 2010080
(1) 20100801-rev124-test2
(2) 20100801-rev124-test1
(3) 20100802-rev126-bar
Run Code Online (Sandbox Code Playgroud)

你可以通过输入它的号码来选择一个。

gar*_*ohn 3

dirs -v命令将列出目录堆栈,每个目录前面都有数字,您可以向该pushd命令提供数字参数以使其跳转到该目录。例如,如果dirs -v显示您要更改的目录位于2其前面(即,是列表中的第三个目录),则执行pushd +2将更改为该目录。

为了节省输入,您可以通过给它们指定别名来缩短这些命令,如下所示:

alias dv="dirs -v"
alias pd=pushd
Run Code Online (Sandbox Code Playgroud)