使っていますバッシュUbuntu のシェルは正確です。
私はシンボリックリンクでバッシュたとえハードリンクより容易に識別できるため、より意味があるだろうls対照的に、ハードリンク視覚的に比較する必要があるiノード数値。これは、lsソフトリンクでは、ターゲットが「-->」で表示され、異なる色分けを適用できます。lsハードリンクを「通常のファイル」と視覚的に区別しますか? たとえば、参照カウントが 1 を超えるファイルを異なる色で表示するなどでしょうか?
ハード リンクは概念的には inode の別名に過ぎず、「通常のファイル」と区別がつかず、シンボリック リンクのようなターゲットの概念も存在しないため、質問が正しく構成されていないことは理解していますが、私の使用例はご理解いただけると思います。
答え1
ls -l
出力には、権限と所有者間のファイルシステムエントリへのハードリンクの数が表示されます。
$ mkdir foo
$ ls -ld foo
drwxr-xr-x 2 danielbeck staff 68 15 Aug 18:49 foo
2
空のディレクトリの場合はデフォルトで になりますfoo/.
。foo
サブディレクトリごとに が追加されます..
。OS X を使用していて正気かどうか疑わしい場合を除き、これが取得できる唯一のディレクトリ ハード リンクです。
もちろん、ファイルには「実際の」ハード リンクのみが表示されるため、それ以外1
の場合はどこかにハード リンクがあることを示します。
$ touch bar
$ ln bar baz
$ ls -l bar baz
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 bar
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 baz
私の (BSD/OS X)にはハード リンクに関連するオプションはありませんが、次のように、ハード リンクの数だけを出力し、それ以外の場合は(面倒すぎる場合は)ls
出力する独自のシェル関数を作成できます。ls -F1
ls -l
function lss {
OLDIFS="$IFS"
IFS=$'\n'
for line in $( ls -d1 $@ )
do stat -f '%N%T (%l)' "$line"
done
IFS="$OLDIFS"
}
2 つのハードリンクと無関係なファイルの出力qux
:
$ lss bar baz qux
bar (2)
baz (2)
qux (1)