まだディレクトリシンボリックリンクを追跡しながら、長い形式(-l)を使用してlsする方法は?


27

ls -l出力のフォーマットを変更するだけでなく、ディレクトリシンボリックリンクの処理方法も変更することに気付きました。

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/

シンボリックリンク/rmnに関する情報ではなく、内容の詳細なリストを取得したいと思い/rmnます。

私が考えることができる1つの回避策は、このような何かをするシェル関数を作成することです:

cd /rmn
ls -l
cd -

しかし、それはあまりにもハックが多いようですcd -。特に、次のの使用が台無しになるためです。もっと良い方法はありますか?

(私はCentOS 2.6.9を使用しています)


私もそれに気づき、グーグルで誰かが気づいたかどうかを確認しました。それが私がここに来た方法です。:)
エフゲニー・アファナシエフ

回答:


27

lsにオプションがあるかどうかを確認します。

 -H, --dereference-command-line
     follow symbolic links listed on the command line 
 --dereference-command-line-symlink-to-dir
     follow each command line symbolic link that points to a directory

これらが役に立たない場合は、以下を実行することで、混乱することなくマクロを機能させることができますcd -

(cd /rmn ; ls -l)

サブシェルで実行されます。


があり-H、それはトリックをしました。ありがとうございました!
RomanSt

4
--dereference-command-line-symlink-to-dir短い形式にしたかったのですが。
wchargin

14

この単純な問題についての考えがそれほど複雑でなければならない理由はよくわかりませんが、おそらく間違った方法で質問を受けただけかもしれません。とにかく:私は同様の機能が必要なとき、私は使用しました:

ls -lL

それが私の場合のトリックでした。lsmanページから:

-L, --dereference
     when showing file information for a symbolic link, 
     show  information  for  the file the link references
     rather than for the link itself

たとえば/media/stick、USBスティックのデータにアクセスするためのショートカットを作成しました。ls -l /media/stickは実際のリンクls -lL /media/stickを表示し、USBスティックの内容を表示します。

内部の仕組みの違いについていくつかのより深く研究した後-H-L、私は最終的にこの問題に関する優れた記事に出くわした浅い思考ブログ(も、あなたの喜びのために、いくつかのきちんとしたシェルスクリプトのトリックをフィーチャー!)

これは、2つのオプションの微妙な違いを示しています(元のマニュアルよりも優れています!)。

  • -H -コマンドラインで明示的に言及されているリンクのみを間接参照する
  • -L-リンクがコマンドラインで言及されていない場合でもリンクを逆参照する

(これら2つを単純な日常のタスクで使用する場合、一般に出力に違いはないはずです。)

その上:長い形(--option)を覚えたいなら、の非常に--dereference長い怪物よりも暗記するのが面倒ではないでしょう--dereference-command-line-symlink-to-dir


5
ls -l /rmn/

それをするか

ls -l /rmn/.

ただし、振る舞いはがある場合とない場合で異なり-lます。のエイリアスをお持ちですlsか?


3
lsフラグはクレイジーです。 -lのように-Hデフォルトをオフにし-Fます。coreutils-リストされているファイルを参照してください。
ミケル

@Mikel、あなたはそれについて完全に正しいようです。そして、はい、それはナッツです。(また、私はLSの別名を持っていない、それを脱出しようとしたが、結果は同じです)
RomanSt

確かに、POSIXで指定されています。私はls='ls -F'実際にエイリアスを持つ人でした。
ステファンシャゼル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.