IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第5回 Linuxのファイルとディレクトリ基本 (2) ファイル操作の基本を理解しよう (濱田康貴) 2021年11月

みなさんこんにちは。株式会社パイプラインの濱田です。前回はディレクトリ操作の基本を取り上げました。今回はファイル操作の基本について取り上げます。

前回出題したクイズの解答

前回、以下のクイズを出題しました。皆さん、チャレンジしていただけましたでしょうか?
カレントディレクトリ以下に、以下の階層のディレクトリを作成せよ。同じ成果が得られるなら、入力した文字数が少なければ少ないほどよいものとする。

test
└test1
  └test2
    └test3
      └test4

一番シンプルな解答は以下になります。

mkdir -p test/test1/test2/test3/test4

文字数は多くなってしまいますが、bashシェルのfor文ループで回す方法もあります。下記コマンドは行が折り返されていますが、1行で実行します。

mkdir -p test ; cd test ; for D in $(seq 1 4); do mkdir -p test${D}; cd test${D}; mkdir -p test${D}; done

この方法を用いると、変数Dに与える値を4からもっと大きな数字に変更することで、より深い階層のディレクトリを一撃で作成することができます。すべて手打ちのコマンド入力よりも正確な作業ができますね。 ただし1点注意しておきたいのは、Linuxでは1つのファイルシステムに作成できるディレクトリ数や階層の深さなどに制限があり、また、1つのディレクトリの配下に多くのディレクトリやファイルがあると、ファイル操作の速度に影響が出ることがありますので、ディレクトリ構造の設計には充分注意してください。

ファイル操作の基本

今回は、以下の操作を取り上げます。

  • ファイルのコピー
  • ファイルの移動
  • ファイルのリネーム (ファイル名変更)
  • ファイルの削除
ファイルのコピー

ファイルのコピーを行うにはcpコマンドを利用します。A.txtをB.txtへコピーするには以下のコマンドを実行します。

cp A.txt B.txt

lsコマンドで確認してみましょう。図表1のように、「A.txt B.txt」と表示されていれば、コピーされた (A.txtとB.txtが存在する) ことが推測できます。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls A.txt B.txt
A.txt  B.txt

では何故ここで「コピーできました」と言い切らなかったのでしょうか?cpコマンドを実行するより前にB.txtが存在していたかも知れませんし、そのB.txtの内容がA.txtと同一であるという確証がないためです。それでは、lsコマンドに -l オプションをつけて詳細を表示してみましょう。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls -l A.txt B.txt
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:48 A.txt
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:50 B.txt

A.txtが作成されてから2分後にB.txtがコピーされていることがわかります。もし、同じファイルをタイムスタンプで世代管理したい場合、コピーした日時では不都合で、元のファイルのタイムスタンプでコピーしたいこともあるでしょう。この場合は、cpコマンドのオプションに -p をつけて実行します。 cp -p A.txt B.txt それでは出力結果を見てみましょう。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls -l A.txt B.txt
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:48 A.txt
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:48 B.txt

先ほどコピーしたB.txtのタイムスタンプが、オリジナルのA.txtのタイムスタンプで上書きされたことがおわかりいただけたかと思います。

ファイルの移動

あるファイルを異なるディレクトリへ移動するにはmvコマンドを利用します。実習用にSAMPLE1 SAMPLE2の2つのディレクトリを作成しましょう。

mkdir -p SAMPLE1 SAMPLE2

それではA.txtをSAMPLE1ディレクトリへ移動してみます。

mv A.txt SAMPLE1

SAMPLE1ディレクトリの中身をlsコマンドで確認してみましょう。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls -l SAMPLE1/
total 20
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:48 A.txt

次に、SAMPLE1ディレクトリにあるA.txtをSAMPLE2ディレクトリへ移動します。 mv SAMPLE1/A.txt SAMPLE2 先ほどと同様、lsコマンドで確認します。まずはSAMPLE1ディレクトリが空になっていることを確認です。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls -l SAMPLE1
total 0

先ほどあったA.txtがSAMPLE1ディレクトリの中にないことがわかりますね。それではSAMPLE2ディレクトリもlsコマンドで確認してみましょう。

nullpopopo@DESKTOP-FUJ2F2G:~$ ls -l SAMPLE2
total 20
-rw-r--r-- 1 nullpopopo nullpopopo 20377 Sep 11 22:48 A.txt

先ほどSAMPLE1ディレクトリにあったA.txtがSAMPLE2ディレクトリに移動されたことが確認できました。
さて、前回と今回はディレクトリやファイルの操作について学びましたが、次回からはテキストファイルの編集について最低限の操作を学んでいきたいと思います。

CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes