目標
「Linux」OSの基本操作(ファイルの操作)について理解して行える。
Linux OS の基本操作
Linux OS の基本操作
Linux OS の基本コマンドと操作(ファイル操作)
Linux OS の基本コマンド(ファイル操作)
OSの基本操作の2つめとして「ファイル操作」を行ってみようと思います。
touchコマンド
ファイルの更新日時を変更するコマンドです。
ファイルが存在しない場合は新規のファイルを作成します。
文法:
touch [省略できるOP] ファイル名
※OP:オプションのことです。
コマンド参考資料はこちら
cpコマンド
指定したファイルを指定した場所にコピーするコマンドです。
文法:
cp [省略できるOP] コピー元のファイル名 コピー先としてのファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら
mvコマンド
指定したファイルを指定した場所へ移動します。
文法:
mv [省略できるOP] 移動元のファイル名 移動先のディレクトリ名
※OP:オプションのことです。
コマンドの参考資料はこちら
rmコマンド
ファイルやディレクトリを削除するコマンドです。
文法:
rm [省略できるOP] ファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら
findコマンド
ファイルを検索するコマンドです。
文法:
find [省略できるOP] 検索するディレクトの指定 検索式
※OP:オプションのことです。
コマンドの参考資料はこちら
locateコマンド
ファイルを検索するコマンドです。
文法:
locate [省略できるOP] 検索のキーワード
※OP:オプションのことです。
コマンドの参考資料はこちら
ファイルの実際の操作
ここからは実際の操作を行ってみたいと思います。まず、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
今回は以上になります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。