OS Xのオートコンプリートでファイル名の末尾にある@はどういう意味ですか?


2

私がいたYADR私のラップトップにインストールされている、と私は実行することにより、それを取り除くことを決めたrm -rf ~/.yadrよう指示し、その作者で。しかし、私がその奇妙さを始めた後:vimrcを編集してタイプしようとすると

$ vi .vim

自動補完により、次のファイルが表示されます。

.vim@     .viminfo  .vimrc@

@.vimrcの最後にあるものは何ですか?入力vi .vimrcするだけで、それが新しいファイルであると主張します。編集したファイルを保存しようとすると、次のエラーが表示されます。

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

何か案は?


すでにシェルを再起動しましたか?どのシェルを使用していますか?
slhck 14

file @はシンボリックリンクを示していると思います。コマンドreadlink .vimrcは何を表示しますか?またはls -l .vim *?
Peregrino69 14

あなたのタイトルがあなたの特定の質問を要約したとは思いません。一般的に、OS X '端末の「ls」の出力で@はどういう意味ですか?その他多数。しかし、この特定のケースでは、オートコンプリートによって示されるように、わかりません。
アルジャン14

私はすでにその質問を見て、それはかなり違う@Arjan
abbood

ちょっと@Arimoが手に入れた!私はあなたのコメントに基づいて回答を書き込む..しかし、あなた自身を記述すること自由に感じ、私はあなたに正しい答え賞あげるよ
abbood

回答:


5

通常、@シンボリックリンクを表します。ファイルのリストにファイルを表示するときに、ファイル名に付加される特定の比較的標準的なフォーマットインジケータがあります。私は、彼らが起源かはわからないlsが、ls -Fそれらの素敵なリストを持っています/、ディレクトリで@シンボリックリンク(ファイルを意味するが、実際に他の場所でファイルを指している)され、そして|>=異なる特別な「ファイル」が使用されていますプロセス間通信用。また、実行ビットのあるファイルは、多くの場合末尾に*

これらは実際にはファイル名の一部ではありません。ファイルを通常のファイル、プログラム、ディレクトリ、シンボリックリンクなどにすばやく分類できるように、ユーザーに表示されます。

この場合、yadrのインストールスクリプトを調べると.yadr、おそらく管理を容易にするために、すべての構成ファイルがディレクトリ内の非表示でないファイルに配置されているようです。そこにドットファイルを探すものは他にないので、デフォルトではホームディレクトリからインストール先のディレクトリへのシンボリックリンクを作成します(yadrの301行目から見てくださいRakefile; file_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するには、現在のシンボリックリンクを削除し、自動作成されたバックアップ(存在する場合)からやり直すか、ゼロから開始する(存在しない場合)必要があります。


ニース、シャーロック!それでも、@(Tab)自動補完の出力に追加されたものは見たことがありませんが、質問の質問者が見るエラーについては最後の段落で確実に説明されているようです。
アルジャン14

@Arjanオートコンプリートで起こることはシェルに依存すると思います。私のzshショー形式インジケータ。私bashはしません。
cpast

それは素晴らしいことです。しかし、どうすればシンボリックリンクファイルを削除できますか?それは私が実行した場合の質問は本当にすべてについて...例えばある何rm .vim@私が取得rm: .vim@: No such file or directory
abbood

@abbood はファイル名の一部で@はありません。シェルによってディスプレイに追加されます。あなただけを行う必要がrm .vimありrm .vimrcます。
cpast 14

0

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

以上です!


1
ln -sしない示し、それは、シンボリックリンクを作るシンボリックリンクを。
cpast 14

私の悪い..修正
abbood 14

1
ちなみに、ls -a隠しファイル(つまり、ドットファイルやドットディレクトリなど.vim)を表示します。したがって、隠しファイルのシンボリックリンクを表示するには、ls -al(実際llに標準のシェル構成でこのエイリアスを使用しています)。
cpast
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.