おさらい(はじめに)
前回までは主に以下のことを学習しました。(一部省略)
- 環境構築
- コマンドラインの操作方
- 基本的なコマンド①
- 基本的なコマンド②(ファイル操作)
今回は基本的なコマンド②の続きとして引き続きファイル操作を行っていきます。
今日学ぶこと
- ファイルの表示(cat,head,tail)
- リンクの作成(ハードリンク、シンボリックリンク)
ファイルの操作
ファイルの表示(catコマンド)
catコマンドは引数にファイル名を指定すると中身を表示できる
$cat /etc/hostname
上記を実行するとホスト名が表示される。
ちなみにオプションで-nオプションを指定すると行番号もつけることが可能。
先頭だけ表示する(headコマンド)
-nオプションの引数に整数値を渡すことで取得する行数を指定する
(オプションを指定しなかった場合は10行となる)
$head -n2 /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
この場合はcrontab(cronの設定を行うファイル)から先頭2行を取得するという意味
末尾だけ表示する(tailコマンド)
こちらもheadコマンド同様-nオプションに渡した整数値によって何行取得するか指定する
$tail -n2 /etc/crontab
# * * * * * user-name command to be executed
リンクの作成
ハードリンクの作成(lnコマンド)
そもそも"リンク"とはファイルやディレクトリに別名をつける機能。
その中で、ハードリンクは"ファイルの実体に名前を結びつける機能"となります。
例えば「file1」に「file2」という別名をつけるとどちらも同じファイルと結びついていることとなります。
試してみます。
「hello」と記載されている「file1」があると仮定してください。
$ ln file1 file2
$ ls
file1 file2
$ cat file2
hello
file1とfile2の実体は同じです。
一つのファイルを複数の名前で呼び出すことが可能となります。
ファイルに付いているハードリンクの数(リンクカウント)はlsコマンドの-lオプションで確認できます。
$ ls -l
total 4
-rw-r--r--. 2 masaki masaki 22 Sep 12 11:22 file1
-rw-r--r--. 2 masaki masaki 22 Sep 12 11:22 file2
ファイルに対して一番左に表示されている数字の部分ですね。
ここがハードリンクの数となります。
シンボリックリンクの作成(lnコマンド -sオプション)
シンボリックリンクは名前と名前を結びつけることで別名で呼び出せるようにする機能。
例えば「file2」というファイルに「file3」というシンボリックリンクを作成した場合。
「file3」を指定すると「file2」を呼び出すことが可能となる。
$ ln -s file2 file3
$ cat file3
hello
$ ls -F
file2 file3@
「file3」の「@」がシンボリックリンクを表す記号となる。
ハードリンクはディレクトリに対して作成することはできないが、シンボリックリンクはあくまで名前と名前を結びつけていることから、ディレクトリに対しても作成が可能である。
リンクを作成するメリットは?
①長くなりがちなパスを短い名前で呼び出せる
→階層が深い場合、いちいち入力するのは手間なので、リンクを作成することで手間を省ける
②ファイルの場所が変更されても呼び出し方法を変更せずに済む
→ファイルやディレクトリが変更されれば当然パスを変更しないとうまく動作しないことがあるが、リンクを作成することで呼び出し方を変えずに呼び出すことが可能
おつかれまでした
本日のファイル操作の部分についてもこの先頻回に使用するコマンドと思われます。
しっかり意味を覚えておきたいところです。
リンク、とくにシンボリックリンクはプログラミングを行っている中でなんとなくの解釈で使用しておりましたが、ハードリンクとシンボリックリンクの違いを学習することで、より「なぜそれを使用するべきか?」というポイントを押さえることができて、今後はより積極的に怖気ずに使用することができると思います。