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を使用しています)
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)
これはサブシェルで実行されます。
この単純な問題についての考え方がなぜそれほど複雑である必要があるのか、私にはよくわかりません。しかし、おそらく間違った方法で質問をしただけでしょう。とにかく、私が同様の機能を必要とするとき、私は使用しました:
_ls -lL
_
私の場合はそれでうまくいった。 ls
manページから:
_-L, --dereference
when showing file information for a symbolic link,
show information for the file the link references
rather than for the link itself
_
たとえば、USBスティックのデータにアクセスするための_/media/stick
_ショートカットを作成しました。 _ls -l /media/stick
_は実際のリンクを表示し、_ls -lL /media/stick
_はUSBスティックのcontentsを表示します。
_-H
_と_-L
_の内部動作の違いについての詳細な調査の結果、この問題についての優れた記事に Shallow Thoughts ブログ(いくつかのきちんとした機能も含む)にようやく出会いましたあなたの喜びのためのシェルスクリプトのトリック!)
これは、2つのオプション間の微妙な違いを次のように指摘します(元のマニュアルよりも優れています!)。
-H
_-コマンドラインで明示的に言及されたリンクのみを逆参照します-L
_-コマンドラインでリンクが言及されていない場合でもリンクを逆参照します(これら2つをsimple日常タスクで使用する場合、一般的に出力に違いはないはずです。)
さらに:長い形式(_--option
_)を覚えておきたい場合、_--dereference
_を覚えるのは、_--dereference-command-line-symlink-to-dir
_。
ls -l /rmn/
やるか
ls -l /rmn/.
ただし、-l
の有無にかかわらず、動作に違いはありません。 ls
のエイリアスはありますか?