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

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

有哪些好的 Linux 命令可以更轻松地在命令行上在不同目录之间切换?

我经常需要在名称较长的不同目录之间切换,例如

cd foo/20100801-rev124-test2
ls 
cd ../20100801-rev124-test1
ls 
cd ../20100802-rev126-bar

通常,我使用制表符补全,因此它是这样的:

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

但这很烦人,因为所有这些名称都非常相似,因此制表符补全实际上并没有节省太多工作。

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

pushd顺便说一句,我有时确实会使用popd,但在这里它不会有太大帮助,因为我没有按照给定的顺序访问目录。

更新:

欲了解更好的解决方案,请参阅接受的答案对我的另一个,相关问题基本上,只需创建一个替代cd命令:

function cd2 { select a in $1*; do cd $a; break; done }

它将立即列出所有可能的完成:

$ cd2 2010080
(1) 20100801-rev124-test2
(2) 20100801-rev124-test1
(3) 20100802-rev126-bar

您可以通过输入编号来选择一个。

答案1

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

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

alias dv="dirs -v"
alias pd=pushd

答案2

您可以使用通配符:

cd ../*test1 or even cd *t1
cd ../2010*test2
cd ../*bar

它们更加灵活,您不需要为每种不同情况规划脚本,一旦您习惯了它们,您就可以将它们用于所有类型的目录。示例:

cd /e*/n*k will take you to /etc/network
cd /h* to /home

它们可以在任何地方使用(ls当然你也可以过滤想要查看的内容)

bash 通配符

答案3

  1. 尝试使用 hist 命令调出您已执行的所有命令的历史记录。
  2. 为您经常使用 cd 转到的每个目录创建一个包含 cd 命令的 shell 脚本。

答案4

对于这样的问题,我想说一下你使用的 shell。每个 shell 的工具略有不同。我在这里的答案适用于 bash,也就是你大概使用。

此外,对于“Frank Computer”,您不能使用 shell 脚本,它会创建自己的进程,cd 在该进程中,退出,并且您当前的 shell 仍然在您所在的位置。

我认为“别名”是你的朋友。添加类似以下内容:

alias CD_test2-'cd /absolute/path/to/foo/20100801-rev124-test2'

到你的 .bashrc (或 .kshrc 或 zshrc)

bash 还具有环境变量CDPATH,可将其用作 cd 进入相对路径的锚点。例如:

CDPATH=/usr:.; cd bin

会看到有一个,/usr/bin并将您放在那里,如果没有,则将您放在./bin。这可能对您没有帮助,因为您可能必须输入整个子目录才能使其工作:

CDPATH=/root/to/all/testing/dirs:.; cd 20100801-rev124-test2

我认为 alias 是你能得到的最好的工具,至少在 bash 中是这样。zsh 中可能会有更好的工具。

相关内容