为了快速移动,我添加了一条 CDPATH 路径,其中包含指向不同位置的符号链接。我通过将以下行添加到 .bashrc 来做到这一点:
export CDPATH=~/symlinks
使用目录时,一切都很好,我可以从任何地方访问符号链接的文件夹。
例如,如果我这样做:
$ ln -s ~/path/to/folder ~/symlinks/folder
然后我可以写:
$ cd folder
进入符号链接文件夹,无论我当前的目录如何。
但是,当我创建一个文件的符号链接,然后尝试使用编辑器打开它时,我会得到一个空文件,除非我位于符号链接目录中。
例如,如果我这样做:
$ ln -s ~/path/to/file/filename ~/symlinks/filename
然后写:
$ kwrite filename
如果我不在符号链接文件夹中,我会得到一个空文件。
我想从任何地方访问该文件,我怎样才能实现这一点?
答案1
简单的答案是你不能。
CDPATH 的作用是,如果您输入“cd 文件夹”,它首先检查“文件夹”是否存在于您的 CDPATH 中;如果没有,它将检查您当前所在的文件夹。但这特定于目录更改; kwrite 不检查 CDPATH 并且 AFAIK 没有配置选项可以让它在任何特定目录中查找。
您可以做的是制作一个小 shell 脚本来替换 kwrite,如下所示:
#!/bin/sh
FILE=$1
if [ -f "$HOME/symlinks/$FILE" ]
then
kwrite "HOME/symlinks/$FILE"
else
kwrite "$FILE"
fi
然后运行脚本(您可以将其命名为“akwrite”),而不是直接运行 kwrite。
答案2
您可以做的是将快捷方式定义为 shell 变量。
fn=~/path/to/file/filename
kwrite $fn
在 zsh 中,您可以通过使用目录哈希来避免与 shell 变量发生名称冲突。这些是随后扩展的文件名的别名~
(如用户名)。尽管有它们的名称,这些别名不必指向目录,它们可以扩展到任意文本。
hash -d fn=~/path/to/file/filename
kwrite ~fn