前提・実現したいこと
初めまして、初めて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のターミナルにて実行しました。
回答3件
あなたの回答
tips
プレビュー