2

问题基本上是这样。尝试使用给定的组合键实现“后退”和“前进”功能。我认为最好的方法是创建一堆访问过的目录,一个用于前进,一个用于后退。这是最好的方法吗?是否有一个变量已经保存了我可以调用的这些信息?在我意识到我不能只保存最新的目录之前,我就有了这个。

previous_wd='~'
next_wd='~'
cd()
{
    previous_wd=$(pwd)
    builtin cd "$@"
}

back_to_previous_directory()
{
    next_wd=$(pwd)
    cd "$previous_wd"
}

forward_to_previous_directory()
{
    cd "$next_wd"
}

up_a_directory()
{
    cd ..
}

# \C-u clears the line
bind '"\e[1;3D":" \C-uback_to_previous_directory\n"'        # go back a directory on alt+left
bind '"\e[1;3A":" \C-uup_a_directory\n"'                    # go up a directory on alt+up
bind '"\e[1;3C":" \C-uforward_to_previous_directory\n"'     # go forward a directory on alt+right
4

1 回答 1

1

您可能有兴趣使用pushdandpopd而不是cd.

这两个命令应该一起使用 - pushd(push directory) 会将当前目录推送到堆栈上,并导航到新目录(作为参数提供)。popd(pop directory) 将返回上一个目录,并将其从堆栈中删除

addison:~$ pushd /tmp
addison:/tmp$ pushd /etc
addison:/etc$ popd
addison:/tmp$ popd
addison:~$ popd

这些应该让您有效地来回导航。平时pushd每次都cd用,然后用popd回上一个位置!

于 2019-12-27T03:50:23.920 回答