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

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

私はこれが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を使用しています)

答え1

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)

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

答え2

この簡単な質問について考えるのはなぜそれほど複雑なのか理解できません。しかし、たぶん私が間違って理解しているのかもしれません。とにかく、同様の機能が必要な場合は、次のものを使用しました。

ls -lL

これは私の場合に効果がありました。lsマニュアルページから:

-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- 逆参照リンクがあってもいいえコマンドラインで言及

(この二つを合わせるとシンプル日常的な作業の場合、通常は出力に違いはありません。 )

また:長い形式(--option--dereference)、過度に長いモンスターよりも覚えやすくなります--dereference-command-line-symlink-to-dir

答え3

ls -l /rmn/

これをするかどうか

ls -l /rmn/.

ただし、使用時と使用しないときは動作が変わってはいけません-l。エイリアスはありますかls

関連情報