如何在命令行中使用制表符完成扩展相对路径?

cwd*_*cwd 6 command-line bash command-history autocomplete

bash有没有什么办法,扩大相对路径为绝对路径,或许与tab完成?

我问是因为有时我会搜索一个文件,找到它,然后vim它:

cd /etc
cd apache2
cd sites-available
vim 000-default
Run Code Online (Sandbox Code Playgroud)

然后我会做一些其他的事情并更改目录:

cd /tmp
ls
cd ~
ls
Run Code Online (Sandbox Code Playgroud)

然后我会发现我需要再次编辑同一个文件,但是不能使用history,(或历史搜索),因为文件路径是相对的。

当前的解决方法

如果我知道我将多次重用一个文件,在我找到它之后,我将使用以下内容获取完整路径realpath

$ realpath 000-default
/etc/apache2/sites-available/000-default
(copy and paste path into next command:)
$ vi /etc/apache2/sites-available/000-default
Run Code Online (Sandbox Code Playgroud)

注意事项

这仍然需要复制和粘贴。我相信应该有一种更简单的方法可以将文件的完整路径添加到我的历史记录中。我有哪些选择?

我相信我(不小心)在将相对路径扩展为完整路径之前按下了一些组合键。我知道在 bash 中你可以输入:

cd /etc
ls bash_*(control+x *)
Run Code Online (Sandbox Code Playgroud)

并得到:

ls bash.bashrc bash_completion bash_completion.d
Run Code Online (Sandbox Code Playgroud)

那么有没有一种方法可以将相对路径扩展为绝对路径,以便我可以使用该文件的完整路径保存对历史记录中文件的操作?

Mik*_*kel 5

我找不到这样做的好方法。

我所做的是$PWD在文件名之前键入,然后按Tab以展开它。在bash您可能需要按Ctrl+ Alt+e而不是Tab

例如

vi $PWD/000-default
Run Code Online (Sandbox Code Playgroud)

然后

Ctrl+ Alt+e

然后

Enter