目標

「Linux」OSの基本操作(ファイルの操作)について理解して行える。

Linux OS の基本操作

Linux OS の基本操作

Linux OS の基本コマンドと操作(ファイル操作)

Linux OS の基本コマンド(ファイル操作)

OSの基本操作の2つめとして「ファイル操作」を行ってみようと思います。

ファイルはデータをまとめて管理することができて、そのデータの提供と受け取りを行える「仕組み」のことを言います。データのひとまとまりを表す単位としても扱われます。

コマンドについて詳細は参考資料をご確認下さい。ここでは「何をするものなのか」「どんな記述ルールがあるのか」のみ取り上げています。利用方法については記事内の「実際の操作」で利用しているものについて解説しています。

touchコマンド

ファイルの更新日時を変更するコマンドです。
ファイルが存在しない場合は新規のファイルを作成します。
文法:
touch [省略できるOP] ファイル名
※OP:オプションのことです。
コマンド参考資料はこちら

cpコマンド

指定したファイルを指定した場所にコピーするコマンドです
文法:
cp [省略できるOP] コピー元のファイル名 コピー先としてのファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら

コピー先が存在しない場合は新規で作成してコピーされます。
コピー先が存在する場合は上書きするか確認のメッセージが表示されます。

mvコマンド

指定したファイルを指定した場所へ移動します。
文法:
mv [省略できるOP] 移動元のファイル名 移動先のディレクトリ名
※OP:オプションのことです。
コマンドの参考資料はこちら

このコマンドは名前の変更にも利用できます。※指定したファイルを同じ場所へ移動する操作として利用した場合、その場所にファイルを移動して名前を変更するという操作となるので名前変更のコマンドとしても利用されます。
文法:
mv [省略できるOP] 変更前のファイル名 変更後のファイル名

rmコマンド

ファイルやディレクトリを削除するコマンドです。
文法:
rm [省略できるOP] ファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら

オプションとして「f」「i」「r」はよく利用します。

findコマンド

ファイルを検索するコマンドです。
文法:
find [省略できるOP] 検索するディレクトの指定 検索式
※OP:オプションのことです。
コマンドの参考資料はこちら

findコマンドの場合、検索はディレクトリの中身をひとつひとつ確認する検索のため処理が遅くなります。

locateコマンド

ファイルを検索するコマンドです。
文法:
locate [省略できるOP] 検索のキーワード
※OP:オプションのことです。
コマンドの参考資料はこちら

findコマンドとの違いはファイルのパスを登録しているDBから検索するので検索の処理が高速に行えます。標準ではLinuxに装備されていないコマンドなのでインストールが必要になります。

ファイルの実際の操作

ここからは実際の操作を行ってみたいと思います。まず、Virtual Boxの仮想マシンを立ち上げてから、ブラウザでCockpitにアクセスします。Cockpitの端末を立ち上げたら次の操作を行います。

①touchコマンド…ファイルの更新日時を変更するコマンドです。
(ファイルが存在しない場合は新規のファイルを作成します。)

まずは、新規でファイルを作成してみたいと思います。

[rocky001@rockylinux001 ~]$ ls(カレントディレクトリの中身を確認)
※ 中身がないので何も表示されません。
[rocky001@rockylinux001 ~]$ touch sample1.txt(新規でファイルを作成)
[rocky001@rockylinux001 ~]$ ls(再度カレントディレクトリの中身を確認)
sample1.txt ←sample1.txtファイルが作成されています。

続けて、オプション「c」を付けて実行してみます。「c」を付けると新規のファイルを作成しないようにすることができます。

[rocky001@rockylinux001 ~]$ touch -c sample2.txt
[rocky001@rockylinux001 ~]$ ls(カレントディレクトリの中身を確認)
sample1.txt ←sample2.txtファイルは作成されていません。

次にタイムスタンプの更新を行ってみたいと思います。まずは作成したsample1.txtの作成時間を「ls -l」で確認します。

[rocky001@rockylinux001 ~]$ ls -l
total 0
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 12:06 sample1.txt
ファイルの作成時間は「12:06」となっています。

次にtouchコマンドでsample1.txtを指定します。

[rocky001@rockylinux001 ~]$ touch sample1.txt
[rocky001@rockylinux001 ~]$ ls -l(再度ファイルの詳細を確認)
total 0
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 12:07 sample1.txt
ファイルの更新日時が「12:07」となっているのが確認できます。

②cpコマンド…指定したファイルを指定した場所にコピーするコマンドです

実際に「cpコマンド」を利用したファイルのコピーを行ってみたいと思います。

[rocky001@rockylinux001 ~]$ ls(カレントディレクトリの中身を確認)
sample1.txt  ←sample1.txtファイルが確認できます。
[rocky001@rockylinux001 ~]$ cp sample1.txt sample2.txt
[rocky001@rockylinux001 ~]$ ls(カレントディレクトリの中身を確認)
sample1.txt sample2.txt ←sample2.txtファイルが作成されています。

ファイルを存在しないディレクトリにコピーしようとすると作成できませんというメッセージが表示されます。
[rocky001@rockylinux001 ~]$ cp sample1.txt dir1/dir2/sample3.txt
cp: cannot create regular file ‘dir1/dir2/sample3.txt’: No such file or directory

続けて、ディレクトリを作成してその中にファイルをコピーしてみます。
[rocky001@rockylinux001 ~]$ mkdir dir
[rocky001@rockylinux001 ~]$ cp sample1.txt dir/sample3.txt
[rocky001@rockylinux001 ~]$ ls dir/(カレントディレクトリの中身を確認)
sample3.txt

最後にディレクトリを別のディレクトリにコピーをしてみます。この時、再帰的に処理を行う「r」といオプションが必要になります。
[rocky001@rockylinux001 ~]$ cp dir dircopy(「r」がない場合)
cp: -r not specified; omitting directory ‘dir’ ←作成できません。
[rocky001@rockylinux001 ~]$ cp -r dir dircopy
[rocky001@rockylinux001 ~]$ ls -l(カレントディレクトリの中身を詳細を確認)
total 0
drwxrwxr-x. 2 rocky001 rocky001 25 Apr 24 13:13 dir
drwxrwxr-x. 2 rocky001 rocky001 25 Apr 24 13:14 dircopy
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 12:07 sample1.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 13:10 sample2.txt
[rocky001@rockylinux001 ~]$ ls dircopy/(dirディレクトリの中身を確認)
sample3.txt

③mvコマンド…指定したファイルを指定した場所へ移動します。

今度はmvコマンドを利用してファイルを移動してみたいと思います。

[rocky001@rockylinux001 ~]$ ls
dir dircopy sample1.txt sample2.txt
[rocky001@rockylinux001 ~]$ mv sample1.txt dir(sample1.txtをdirへ移動)
[rocky001@rockylinux001 ~]$ ls
dir dircopy sample2.txt
[rocky001@rockylinux001 ~]$ ls dir(dirディレクトリ内を確認)
sample1.txt sample3.txt ←sample1.txtが移動しています。

次にディレクトリを別のディレクトリに移動してみたいと思います。

[rocky001@rockylinux001 ~]$ ls
dir dircopy sample2.txt
[rocky001@rockylinux001 ~]$ mv dir dircopy(dirをdircopyへ移動)
[rocky001@rockylinux001 ~]$ ls
dircopy sample2.txt
[rocky001@rockylinux001 ~]$ ls dircopy
dir sample3.txt ←dirが移動しています。

最後はファイルの名前を変更してみたいと思います。

[rocky001@rockylinux001 ~]$ ls
dircopy sample2.txt
mvコマンドで「sample2.txt」を「changename.txt」に変更してみます。
[rocky001@rockylinux001 ~]$ mv sample2.txt changename.txt
[rocky001@rockylinux001 ~]$ ls
changename.txt dircopy ←ファイル名が「changename.txt」に変更されています。

④rmコマンド…ファイルやディレクトリを削除するコマンドです。

「rmコマンド」を利用するとファイルやディレクトリが削除できます。オプションの「f」「i」「r」はよく使います。まずはファイルの削除を行ってみたいと思います。

[rocky001@rockylinux001 ~]$ ls
changename.txt dircopy
[rocky001@rockylinux001 ~]$ ls dircopy/
dir sample3.txt
次のコマンドでdircopyディレクトリのsample3.txtを削除します。
[rocky001@rockylinux001 ~]$ rm dircopy/sample3.txt
[rocky001@rockylinux001 ~]$ ls dircopy/
dir ←sampke3.txtが削除されています。

続けて、ディレクトリの削除を行ってみたいと思います。

[rocky001@rockylinux001 ~]$ ls
changename.txt dircopy
↓ディレクトリの削除はオプション「r」が必要になります。「r」がない場合は削除できない旨のメッセージが表示されます。
[rocky001@rockylinux001 ~]$ rm dircopy/
rm: cannot remove ‘dircopy/’: Is a directory
[rocky001@rockylinux001 ~]$ rm -r dircopy/(「r」を付けて実行します。)
[rocky001@rockylinux001 ~]$ ls
changename.txt ←dircopyが削除されています。

続けて、削除する前に警告を出すようにしてみます。Linux操作に慣れていない間はファイルの削除を行うときに「i」をつける癖をつけるのがいいかと思います。

[rocky001@rockylinux001 ~]$ rm -i changename.txt
↓削除してよいなら「y」削除しないなら「n」を入力します。
rm: remove regular empty file ‘changename.txt’? y
[rocky001@rockylinux001 ~]$ ls
※全て削除された(今回の操作ではchangename.txtのみの削除)ので何も表示されなくなりました。

⑤findコマンド…ファイルを検索するコマンドです。

findコマンドを利用するとファイルを検索することができます。まずはファイルとディレクトリの準備をします。

[rocky001@rockylinux001 ~]$ ls
少し長いですがtouchコマンドで6つのファイルを作成します。
[rocky001@rockylinux001 ~]$ touch rocky1.txt rocky2.txt rocky3.txt linux1.txt linux2.txt linux3.txt
[rocky001@rockylinux001 ~]$ ls
linux1.txt linux2.txt linux3.txt rocky1.txt rocky2.txt rocky3.txt
次にmkdirコマンドで3つのディレクトリを作成します。
[rocky001@rockylinux001 ~]$ mkdir dir1 dir2 dir3
[rocky001@rockylinux001 ~]$ ls -l
total 0
drwxrwxr-x. 2 rocky001 rocky001 6 Apr 24 14:31 dir1
drwxrwxr-x. 2 rocky001 rocky001 6 Apr 24 14:31 dir2
drwxrwxr-x. 2 rocky001 rocky001 6 Apr 24 14:31 dir3
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 linux1.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 linux2.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 linux3.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 rocky1.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 rocky2.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 14:30 rocky3.txt

まずはファイル名で検索を行ってみたいと思います。

ファイル名で検索を行うときは検索式に「-name」を指定します。
次のコマンドは「.(カレントディレクトリ)にある、-name(名前)がrockyと先頭にきている(*は何かしらの文字列という意味)ファイル名を検索」という意味になります。

[rocky001@rockylinux001 ~]$ find . -name “rocky*”
./rocky1.txt
./rocky2.txt
./rocky3.txt

続けてユーザー(ファイルの所有者)とファイルのタイプを指定して検索を行ってみたいと思います。次のコマンドは「-user(ファイル所有者)が「rocky001」でファイルのタイプが「f(ファイル)」であるファイルを検索」という意味になります。
typeには「d」ディレクトリ、「f」ファイル、「l」シンボリックリンクがあります。

[rocky001@rockylinux001 ~]$ find . -user “rocky001” -type “f”
./.bash_logout
./.bash_profile
./.bashrc
./.zshrc
./.bash_history
./.viminfo
./rocky1.txt
./rocky2.txt
./rocky3.txt
./linux1.txt
./linux2.txt
./linux3.txt

findコマンドでは検索したファイルに対して、続けてコマンドの実行が行えます。次はコマンドの実行も行ってみたいと思います。コマンドの実行にはfindコマンドの式に対して「-exec コマンド {} \;」か「-ok コマンド {} \;」と入力して行わせます。

今回は検索した「linux○○○」のファイルを削除するという入力をしてみたいと思います。コマンドは次にように入力します。

[rocky001@rockylinux001 ~]$ find . -name “linux*” -ok rm {} \;

入力を行うと一行ずつ削除するかを聞かれます。削除する場合は「y」、しない場合は「n」と入力します。

< rm … ./linux1.txt > ? y ←削除します。
< rm … ./linux2.txt > ? y ←削除します。
< rm … ./linux3.txt > ? n ←削除しません。

[rocky001@rockylinux001 ~]$ ls(削除後の状況を確認します。)
dir1 dir2 dir3 linux3.txt rocky1.txt rocky2.txt rocky3.txt

検索では検索のできる範囲というものがあります。アクセス権限のないファイルに対しては検索を行うことができません。

⑥locateコマンド…ファイルを検索するコマンドです。

locateコマンドを利用するとfindコマンドと同様にファイルを検索することができます。locateコマンドはRocky Linux のインストール時に「サーバー」を選択していればインストールされています。そうでなければパッケージのインストールが必要になります。

locateコマンドのインストール
※この記事ではRocky Linux のインストール時に「サーバー」を選択しているので今回は手段のみ確認しています。もしインストールされていない場合はスーパーユーザーに切り替えてから次のコマンドを実施します。

[rocky001@rockylinux001 ~]$ su –
Password:
[root@rockylinux001 ~]# dnf install mlocate

データベースの作成と更新
locateコマンドを利用するにはデータベースの作成が必要になります。また新たに作成したファイルを検索するにはデータベースの更新が必要になります。データベースの作成と更新はスーパーユーザーに切り替えて「updatedbコマンド」と入力して行います。

[rocky001@rockylinux001 ~]$ su –
Password:
[root@rockylinux001 ~]# updatedb(データベースの更新を行います。)
※Rocky Linux で「サーバー」と指定してインストールした場合は既にデータベースが作成されているので同じコマンドですが更新を行っていることになります。
[root@rockylinux001 ~]# exit
ログアウト
次のコマンドで「rocky○○○」と付いたファイルを検索します。
[rocky001@rockylinux001 ~]$ locate rocky*
/home/rocky001/rocky1.txt
/home/rocky001/rocky2.txt
/home/rocky001/rocky3.txt

新規ファイルを追加します。
[rocky001@rockylinux001 ~]$ touch rocky4.txt rocky5.txt
データベースの更新が行われないと新規で追加したファイルは検索されません。
[rocky001@rockylinux001 ~]$ locate rocky*
/home/rocky001/rocky1.txt
/home/rocky001/rocky2.txt
/home/rocky001/rocky3.txt

データベースの更新(更新は一般ユーザーでは行えません。)
[rocky001@rockylinux001 ~]$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db’

データベースの更新をスーパーユーザーで行って再度検索します。
[rocky001@rockylinux001 ~]$ su –
Password:
[root@rockylinux001 ~]# updatedb
[root@rockylinux001 ~]# exit
ログアウト

↓新しく追加したファイルも含めて検索が可能になります。
[rocky001@rockylinux001 ~]$ locate rocky*
/home/rocky001/rocky1.txt
/home/rocky001/rocky2.txt
/home/rocky001/rocky3.txt
/home/rocky001/rocky4.txt
/home/rocky001/rocky5.txt

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...