シンボリックリンクの内容を表示

シンボリックリンクの内容を表示

私はzshシンボリックリンクを作成しました。

$ ln -s ~/Documents symboliclink

それでは、このシンボリックリンクの中に何があるのか​​知りたいです。

$ ls -l symboliclink
> lrwxrwxrwx 1 user user 21 Oct 10 15:56 symboliclink -> /home/user/Documents

これはシンボリックリンクのみを表示し、その中にあるものは表示しません。 just を使用するとls内容が一覧表示されますが、flags を使用すると-l内容は一覧表示されません。これはforbashおよびlsで機能しますls -l。どうすればzshこのような行動も得られますか?

答え1

lsオプションは次のとおりです-H

ls -lH  symboliclink

からman 1p ls

- 時間

ディレクトリタイプファイルを参照するシンボリックリンクがコマンドラインで指定されている場合、lsはリンク自体ではなくリンクが参照するファイルのファイル情報とファイルタイプを評価します。ただし、lsはリンク自体の名前を作成する必要があります。 、参照文書リンクではありません。

-Lオプションも参照してください。

-エル

すべてのシンボリックリンクのファイル情報とファイルタイプ(コマンドラインで名前が付けられているかファイル階層で見つかったか)は、リンク自体ではなくリンクによって参照されるファイルのものと評価されます。ただし、lsは次の名前を作成する必要があります。リンクが参照するファイルではなく、リンク自体です。 -Lを-lと一緒に使用すると、シンボリックリンクの内容が長い形式で記録されます(STDOUTセクションを参照)。

答え2

ls -l2つの出力差が見える理由の1つ扱いにくいそして強く打つ-completionを使用TabしてAUTO_REMOVE_SLASH有効にすることです。扱いにくい(デフォルトです)。

スラッシュの自動削除<ディ>

完成結果の最後の文字がスラッシュで、次に入力される文字が単語区切り文字、スラッシュ、またはコマンドを終了する文字(セミコロンやアンパサンドなど)の場合は、スラッシュを削除します。

ls -l symbTabと入力すると、zshとをbash実行しますls -l symboliclink//最後の項目を参照)。違いは、それを押すだけ(つまり、コマンドの終了)スラッシュが削除されることですzsh(有効になっている場合AUTO_REMOVE_SLASH)。Enter

だからあなたは効果的にls -l symboliclink/走るでしょう強く打つls -lリンクの後ろを見てください。しかし、扱いにくいターゲットディレクトリではなくリンクに関する情報を確認するようにls -l symboliclink指示します。ls -l

lsオプションがない場合は、最後に-l関係なく常にターゲットディレクトリの内容が表示されます。/


得るために扱いにくい末尾のスラッシュを削除しない場合は、TAB-completion 後に明示的にスラッシュを入力するだけで十分です。通常、完成したテキストは顕著に変わりませんが、/スペースを入力したりコマンドを確認したりしても保持されます。 「通常」は、マゼンタや太字など、自動的に追加されたサフィックス文字に対して強調表示を設定できるためです。

zle_highlight[(r)suffix:*]="suffix:fg=magenta,bold"

メモ:外部使用時には動作しない場合があります。ZSH構文強調プラグイン)

(明らかに)もう一つの解決策はを無効にすることですAUTO_REMOVE_SLASH

setopt noautoremoveslash

答え3

最後に「/」を追加するだけです。

ls -l symboliclink/

答え4

プログラムの動作は、プログラムlsが呼び出されるシェルには依存しません。 Bashとzshで異なる動作が観察された場合、lsこれはあるシェルではエイリアス(または関数)を呼び出したが、ls別のシェルでは呼び出さなかったためです。 zsh で観察される動作はlsbash の動作と一致するため、これを呼び出すには別のオプションを使用する必要があります。

シンボリックリンクを逆参照するように、またはにlsエイリアスを指定した可能性があります。 alias()をバイパスする以外に、シンボリックリンク自体に関する情報を取得できないため、これは悪い考えです。ls -Hls -L\ls

ファイルがディレクトリへのシンボリックリンクの場合は、末尾のスラッシュを追加してファイルの代わりにディレクトリで作業できます。 .seels -l symboliclink/と同じです。ls -l symboliclink/.シンボリックリンクはいつシンボリックリンクと同様にリンクされると考えられますか?

関連情報