OS X 自动完成功能中文件名末尾的 @ 是什么意思?

OS X 自动完成功能中文件名末尾的 @ 是什么意思?

我有亚德尔rm -rf ~/.yadr安装在我的笔记本电脑上,我决定通过运行以下命令来摆脱它:指示作者。然而在我这样做之后,奇怪的事情开始了:如果我尝试编辑我的 vimrc 并输入

$ vi .vim

自动完成将显示以下文件:

.vim@     .viminfo  .vimrc@

那么@.vimrc 末尾的这个是什么?如果我直接输入,vi .vimrc它会声称这是一个新文件。然后,如果我尝试保存该编辑文件,我会收到此错误:

.vimrc" E166: Can't open linked file for writing

有任何想法吗?

答案1

通常,@表示符号链接。在文件列表中显示文件名时,通常会将某些相对标准的格式指示符附加到文件名上,以便您快速了解它是什么;我不确定它们是否源自ls,但ls -F有一个很好的列表:/是目录,@是符号链接(意味着文件实际上指向其他地方的文件),|>=是用于进程间通信的不同特殊“文件”。此外,具有执行位的文件通常会在后面显示*

这些实际上不是文件名的一部分;它们显示给用户,以便让他们快速将文件归类为常规文件、程序、目录、符号链接或其他内容。

在这种情况下,查看 yadr 的安装脚本,似乎它将所有配置文件放在.yadr目录中的非隐藏文件中,大概是为了使它们更容易管理。因为没有其他东西在那里寻找点文件,所以它默认从您的主目录创建到它安装的目录的符号链接(从 yadr 中的第 301 行开始查看Rakefilefile_operation通常是符号链接~/.file到的$PWD/file)。在 中install.sh,我们可以看到 yadr 通常在 中运行其 rakefile ~/.yadr,因此默认安装将使用符号链接替换许多点文件到~/.yadr。在 rakefile 的第 24 行,我们看到发生了以下情况:在和file_operation上调用,意味着和分别符号链接到和。前一个被移至。vimvimrc~/.vim~/.vimrc~/.yadr/vim~/.yadr/vimrc~/.vimrc~/.vimrc.backup

因此,这里发生的事情是,yadr 的安装将您的移动.vimrc.vimrc.backup,并将其替换为指向其自己的文件的链接,位于~/.yadr。当您删除时~/.yadr,链接现在指向一个不存在的目录;vim 可以创建一个文件当它不存在时,但它不能保存在不存在的目录。要编辑.vimrc,您必须删除当前符号链接并从自动创建的备份重新开始(如果存在),或者从头开始(如果不存在)。

答案2

arimo 的评论我这样做了:

$ readlink .vim
/Users/abdallah/.yadr/vim

$ ls -l .vim*
lrwxr-xr-x  1 abdallah  staff     25 Apr 23  2014 .vim -> /Users/abdallah/.yadr/vim
-rw-------  1 abdallah  staff  12602 Dec 24 07:27 .viminfo
lrwxr-xr-x  1 abdallah  staff     27 Apr 23  2014 .vimrc -> /Users/abdallah/.yadr/vimrc

棘手的部分是我知道输入ls -l将显示符号链接。我只是不知道如何显示符号链接点文件。我还一直试图删除以@结尾的文件。例如

$ rm .vim@
rm: .vim@: No such file or directory

但是然后我根据上面的输出..我直接删除了.vim 文件:

$ ls -l .vim*
lrwxr-xr-x  1 abdallah  staff     25 Apr 23  2014 .vim -> /Users/abdallah/.yadr/vim
-rw-------  1 abdallah  staff  12602 Dec 24 07:27 .viminfo
lrwxr-xr-x  1 abdallah  staff     27 Apr 23  2014 .vimrc -> /Users/abdallah/.yadr/vimrc

$ rm .vim

$ ls -l .vim*
-rw-------  1 abdallah  staff  12602 Dec 24 07:27 .viminfo
lrwxr-xr-x  1 abdallah  staff     27 Apr 23  2014 .vimrc -> /Users/abdallah/.yadr/vimrc

就是这样!

相关内容