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

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

新規登録して質問してみよう
ただいま回答率
85.50%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

3回答

1942閲覧

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

takapon_

総合スコア13

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2019/04/07 05:33

前提・実現したいこと

初めまして、初めて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のターミナルにて実行しました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/04/07 07:16

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

2019/04/07 08:07

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

回答3

0

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

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

投稿2019/04/07 12:54

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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 08:49

fu7mu4

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takapon_

2019/04/07 09:08

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

0

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

投稿2019/04/07 08:17

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takapon_

2019/04/07 08:50

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

2019/04/07 09:22

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

2019/04/07 10:10

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問