答案1
通常,@
表示符号链接。在文件列表中显示文件名时,通常会将某些相对标准的格式指示符附加到文件名上,以便您快速了解它是什么;我不确定它们是否源自ls
,但ls -F
有一个很好的列表:/
是目录,@
是符号链接(意味着文件实际上指向其他地方的文件),|
,>
和=
是用于进程间通信的不同特殊“文件”。此外,具有执行位的文件通常会在后面显示*
。
这些实际上不是文件名的一部分;它们显示给用户,以便让他们快速将文件归类为常规文件、程序、目录、符号链接或其他内容。
在这种情况下,查看 yadr 的安装脚本,似乎它将所有配置文件放在.yadr
目录中的非隐藏文件中,大概是为了使它们更容易管理。因为没有其他东西在那里寻找点文件,所以它默认从您的主目录创建到它安装的目录的符号链接(从 yadr 中的第 301 行开始查看Rakefile
;file_operation
通常是符号链接~/.file
到的$PWD/file
)。在 中install.sh
,我们可以看到 yadr 通常在 中运行其 rakefile ~/.yadr
,因此默认安装将使用符号链接替换许多点文件到~/.yadr
。在 rakefile 的第 24 行,我们看到发生了以下情况:在和file_operation
上调用,意味着和分别符号链接到和。前一个被移至。vim
vimrc
~/.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
就是这样!