在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)
那么有没有一种方法可以将相对路径扩展为绝对路径,以便我可以使用该文件的完整路径保存对历史记录中文件的操作?
假设我在 zsh 中执行以下操作
cd ~
cd dir1
cd dir2
cd dir3
evince foo.pdf
Run Code Online (Sandbox Code Playgroud)
zsh 在其历史文件中写入完全相同的内容。
现在我的问题是是否有可能
cd ~
cd ~/dir1
cd ~/dir1/dir2
cd ~/dir1/dir2/dir3
evince ~/dir1/dir2/dir3/foo.pdf
Run Code Online (Sandbox Code Playgroud)
在 zsh 历史中。即 zsh 只记住完整路径。