質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

MacOSターミナルでのハードリンクの数について

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 639

takapon_

score 13

前提・実現したいこと

初めまして、初めてteratailを使っております、何か失礼があったらお教えください。

現在、MacOSのターミナルを扱えるように色々と勉強しております。
そこで、"ls"コマンドがあるとおもうのですが、その挙動について少し疑問に思うことがあり、ご教授いただきたいです。

試したこと

"ls -l"でその詳細情報を確認していたら普通のファイル(abc.c等)にもハードリンクがあり、試しにls abc.cとすると、abc.cが表示されました。("ls abc.c/abc.c"はできませんでした。)

ここで、一つ目のご質問なんですが、lsコマンドでファイル名をlsした場合の出力は一体なにが出力されているんでしょうか...?
自分なりに調べてみたのですが、lsはディレクトリのファイル一覧表示〜といった説明しかなかったので...

また、"mkdir"で新しく作成したTestディレクトリ内には ".",".."があらかじめ生成され、親ディレクトリにて"ls -l"コマンドでTestディレクトリを確認するとハードリンク数は"2"で、それらがハードリンクとして数えられているようなのです...
実際にTestへ移動し、"ls ."をすると確かにTestディレクトリ内にリンクされているのですが、 ".."は親ディレクトリにリンクされています...

親ディレクトリの中に子ディレクトリが有り、その子ディレクトリの".."がその親ディレクトリのハードリンクとなると思うのですが...

そこで二つ目の質問で、なぜTestディレクトリのハードリンクの数が2つになっているんでしょうか...?

”ハードリンクはそのファイルやフォルダの別名”と理解していているのですが、これらのことから推測すると、ハードリンクにはファイルあるいはディレクトリの名前自身(別名ではなくそれ自身)も含んでいるのでしょうか?

そしてlsで確認しようとするとファイルの場合、特に追加していなければファイル自身の名前(ハードリンク?)のみが表示され、ディレクトリを作成するとディレクトリ下に自身と親を表す'.','..'が自動生成され、さらに表示はされませんが、'自分のディレクトリ名'というハードリンクがあり、'.' と'自分のディレクトリ名'で2になったといった理解でいいのでしょうか...?

色々とみてみてもなかなか腑に落ちなく...ご教授いただければと思います。
また、"abc.c"ファイルはTestのために適当に作ったものです。
よろしくお願いいたします。

//以下端末上の表示画面
Takapon:~ taka$ pwd
/Users/taka
Takapon:~ taka$ ls -l
total 8
drwxr-xr-x   2 taka  staff    64  4  7 13:36 Test
-rw-r--r--   1 taka  staff     6  4  7 12:23 abc.c
Takapon:~ taka$ ls -a abc.c
abc.c
Takapon:~ taka$ ls -a Test
.    ..
Takapon:~ taka$ cat abc.c
Hello World

補足情報(FW/ツールのバージョンなど)

Macbookのターミナルにて実行しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • y_waiwai

    2019/04/07 16:16

    あなたのいうハードリンクとはなんのことを言ってるのでしょうか。
    なにを見てハードリンクと判断されてますか

    キャンセル

  • takapon_

    2019/04/07 17:07

    ハードリンクを調べると多々でてきますが...
    例えばこちらのような内容を参考にさせていただきました。
    https://wa3.i-3-i.info/word1152.html
    ここでは"あだな"と称されています。
    つまり、ハードリンクとは"ディレクトリやファイルの別名"と理解しております。
    また、端末上で "taka"ディレクトリにいた場合、"."はtakaディレクトリを表す”別名”です。
    なので、"."は”takaディレクトリのハードリンクである”と判断しております。

    キャンセル

回答 3

checkベストアンサー

0

ファイルやディレクトリはinodeで管理されています。名前自体がハードリンクです。
また、ディレクトリの中には自身を指すハードリンクがあるためリンク数は2です。
tttディクレトリを作成してinodeを調べると、34656258となります。
ttt/.も同じinodeを指していることがわかります。

$ mkdir ttt
$ ls -lid ttt
34656258 drwxr-xr-x  2 user1  staff  64  4  7 17:35 ttt
$ ls -lid ttt/.
34656258 drwxr-xr-x  2 user1  staff  64  4  7 17:35 ttt/.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/07 18:08

    なるほど...!
    やはりディレクトリ自体もハードリンクのひとつに数えられていたんですね!
    もやもやが解消できました!
    ありがとうございました!

    キャンセル

0

. とか .. は、ハードリンク、というのとは全く関係ありません。
それらはすべてのディレクトリで表示されてますぜw

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/07 17:50

    全く無関係だったんですか...!
    '.'や'..'が全てのディレクトリに生成されるというのは知ってるのですが、カレントディレクトリの位置によってそれが表すものは異なりますよね?
    ディレクトリ作成時は自動生成で'.'や'..'が生成されて、それらは'.'や'..'という文字を'あだ名'としてtakaへリンクしているからそれがハードリンクになっているんだと思いました...
    '.'や'..'はハードリンクに関係ないのであれば...
    生成されたばかりのTestディレクトリのハードリンクとは一体なんなんでしょうか...?

    キャンセル

  • 2019/04/07 18:22

    .や..が生成される、わけではなく、ディレクトリ構造の中に、現在のディレクトリと一個上のディレクトリが含まれる、ということですな

    キャンセル

  • 2019/04/07 19:10

    なるほど!
    おかげさまで自分なりに噛み砕いて理解ができました!
    ありがとうございました!

    キャンセル

0

”ハードリンクはそのファイルやフォルダの別名”と理解していているのですが、これらのことから推測すると、ハードリンクにはファイルあるいはディレクトリの名前自身(別名ではなくそれ自身)も含んでいるのでしょうか? 

ハードリンクに、本名と別名の区別はありません。ハードリンク数が2以上の場合、名前が複数あると言うことで、全部対等です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る