Linuxとコマンドラインの基礎

$ echo hello > a.txt
$ ln a.txt h.txt
$ ln -s a.txt s.txt
$ rm a.txt
$ cat h.txt
$ cat s.txt

上のコマンドを順に実行したとき、最後の2つの cat の結果として、正しいものはどれか。

  1. Ah.txt も s.txt も hello を表示する
  2. Bh.txt はファイルが見つからないというエラーになり、s.txt は hello を表示する
  3. Ch.txt は hello を表示し、s.txt はファイルが見つからないというエラーになる
答えと解説を見る

正解:C. h.txt は hello を表示し、s.txt はファイルが見つからないというエラーになる

ln で作るハードリンクは、元のファイルと同じ inode(ファイルの中身と属性を管理する番号付きの情報)を指す、もう1つの名前です。rm a.txt で消えるのは a.txt という名前だけで、h.txt という名前が残っているので中身は消えず、cat h.txt は hello を表示します。ln -s で作るシンボリックリンクは「a.txt」というパスを中身として持つ別のファイルなので、a.txt が消えるとたどる先がなくなり、cat s.txt は「No such file or directory」のエラーになります。このように、たどる先がなくなったシンボリックリンクは、リンク切れの状態でそのまま残ります。

  • A. シンボリックリンクはパスをたどってファイルを開くので、a.txt が消えると s.txt からは読めません。
  • B. ハードリンクとシンボリックリンクの性質が逆です。名前が1つでも残っていれば、ハードリンクから中身を読めます。
  • C. 正しい。ハードリンクは同じ inode を指す名前なので残り、シンボリックリンクはリンク切れになります。
この分野を解く 分野ページへ

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Linuxとコマンドラインの基礎のほかの問題

  1. あるディレクトリに a1.txt、a2.txt、a10.txt、b1.txt、c1.txt、a1.csv の6つのファイルがある。このディレクトリで「ls [ab]?.txt」を実行したときに表示されるファイルの数として、正しいものはどれか。
  2. ファイル run.sh に「chmod 754 run.sh」を実行した後、「ls -l run.sh」の行の先頭に表示される権限の表記として、正しいものはどれか。
  3. touch は新しいファイルを 666 から、mkdir は新しいディレクトリを 777 から、umask のビットを取り除いた権限で作る。umask が 027 のシェルで新しいファイルと新しいディレクトリを作ったときの、それぞれの権限の組み合わせとして、正しいものはどれか。
  4. ディレクトリ d の権限が rwx--x--x(711)で、その中のファイル f.txt の権限が rw-r--r--(644)である。所有者でもスーパーユーザでもない利用者が「ls d」と「cat d/f.txt」を実行したときの結果として、正しいものはどれか。
  5. Linuxの sudo コマンドの説明として、正しいものはどれか。