Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

UNIX(Linux)
Beginner

  1. What is UNIX (Linux)? - Japanese Only
  2. What are Distributions? - Japanese Only
  3. About CentOS, macOS, and CUI - Japanese Only
  4. Installing CentOS with Virtualization Software and macOS CUI Environment - Japanese Only
  5. Login, root User, and Shutdown - Japanese Only
  6. Command Structure and Important Notes - Japanese Only
  7. File System and Navigating Directories (cd and pwd) - Japanese Only
  8. Key Directories and Listing Contents (ls) - Japanese Only
  9. Advanced Directory Navigation (cd) and Paths - Japanese Only
  10. Advanced ls Command (Part 1) and Dotfiles - Japanese Only
  11. Advanced ls Command (Part 2) - Japanese Only
  12. Tab Completion for Input - Japanese Only
  13. Creating Directories (mkdir) - Japanese Only
  14. Quick File Creation (touch) and About Files - Japanese Only
  15. Standard I/O, Redirection (> and >>), echo, and cat - Japanese Only
  1. Deleting Files and Directories (rm) - Japanese Only
  2. Copying Files and Directories (cp) - Japanese Only
  3. Moving and Renaming Files and Directories (mv) - Japanese Only
  4. What is the vi Editor? - Japanese Only
  5. Basic vi Usage (Part 1) - Japanese Only
  6. Basic vi Usage (Part 2) - Japanese Only
  7. Remote Operations via Terminal (SSH and Tera Term) - Japanese Only
  8. Installing Software (yum and Package Managers) - Japanese Only
  9. User Overview, Verification, Creation, and Switching (adduser and su) - Japanese Only
  10. User Passwords, Deletion, Modification, and sudo (passwd, userdel, usermod) - Japanese Only
  11. About Groups and the groups Command - Japanese Only
  12. Adding, Deleting, and Modifying Groups (groupadd, groupdel, groupmod) - Japanese Only
  13. About Permissions - Japanese Only
  14. Setting Permissions (chmod and chown) - Japanese Only
  1. Home
  2. UNIX(Linux)Beginner - Quick File Creation (touch) and About Files

Quick File Creation (touch) and About Files - Japanese Only

みなさまどうも。いかがおすごしでしょうか。続きましてファイルの簡易作成方法についてやっていきましょう。

最初に『touch』コマンドくんという子を紹介しておきます。この子はタイムスタンプ、更新時間を変更することができるコマンドでございますので色々と試してみます。

まず『mkdir』コマンドで『test』ディレクトリを作成してみましょう。

[root@localhost ~]# mkdir test

それを『ls -l』で詳細表示させるとこうなります。

[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun 13 10:41 2018 test

上記の「Jun 13 10:41 2018」って部分に注目ですね。この記事を執筆している現在時刻、ディレクトリを作成した時間がタイムスタンプとして保存されています。

このディレクトリを「1990年1月1日2時3分にしたい」となると以下のように

[root@localhost ~]# touch -t 199001010203 test/
[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun  1 02:03 1990 test

『touch -t 日付と時刻 対象ディレクトリやファイル』という形式で入力すればOKです。この際の時刻の指定方法なのですが「1990年1月1日2時3分」ならば「199001010203」、「年(4桁)」、「月」、「日」、「時」、「分」という順番で指定します。

秒も指定する場合は「年(4桁)」、「月」、「日」、「時」、「分」の後に「.」と「秒」を指定してしまえばOKです。「1990年1月1日2時3分4秒」だとするとこんな感じですね。「.」を忘れないようにご注意です。

[root@localhost ~]# touch -t 199101010203.04 test/

そこで『ls』コマンドくんには『--full-time』というオプションが居まして、このオプションを付けると更にタイムスタンプを細かく出力してくれるようになりますのでそれを使ってみるとこうなります。

[root@localhost ~]# touch -t 199101010203.04 test/
[root@localhost ~]# ls --full-time
total 24
drwxr-xr-x. 2 root root  4096 1991-01-01 02:03:04.000000000 +0900 test

「1991-01-01 02:03:04.000000000」って感じで秒まで更新されているのが確認できたと思います。

そして『touch』コマンドに『-t』を付けず、『touch 対象ディレクトリやファイル』とするとタイムスタンプが現在時刻への変更となります。こんな感じですね。

[root@localhost ~]# touch test/
[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun 13 11:05 2018 test

「Jun 13 11:05 2018」って感じでタイムスタンプが現在時刻へ変更されたのが確認出来たと思います。

と、ここまでがメインとなるはずの『touch』コマンドくんの使い方なのですが実は『touch』コマンドくんにはタイムスタンプの更新以外にもう1つのオマケ機能があったりします。それは「ファイルの作成」です。なんと『touch』コマンドくんは存在しないファイル名を引数に指定すると新規ファイルを作成してくれるのでございます。

ちょいと試してみましょう。

現在の『/root/』にはディレクトリ『test』が1つ居るだけになっていますよね。

[root@localhost ~]# ls
test

ここで『touch test.txt』と打ってみます。

[root@localhost ~]# touch test.txt

そしてもういっちょ『ls』コマンドで中身を確認するとこんな感じです。

[root@localhost ~]# ls
test  test.txt

『test.txt』ってファイルが生成されていますね。『touch』コマンドくんはこんな感じで新規ファイルを作成出来るというオマケ機能があったりするのでございます。

そしてちょっと余談なんですが『touch』コマンドくんが使われる場合の99.99%以上がファイルの作成目的で叩かれるって感じになっておりましてメイン機能よりもオマケ機能の方がはるかに使用率が高いっていう不思議な状況になっちゃっているのは内緒です。

そんでもってこう言ってしまうとあれですが『touch』コマンドくんのタイムスタンプを更新する機能は特に覚えなくてもOKかもでございます。タイムスタンプを更新する必要のある状況なんぞあまり無いわけですし皆様はぜひ
「『touch』コマンドってタイムスタンプを更新するオマケ機能があったんだー全然知らなかったわー(*'ω'*)」
って感じになっちゃって下さい。

さて、ここでちょいと話は変わりますが生成された新規ファイルについてです。

先程生成した『test.txt』ってファイルを『ls -l』で詳細表示させてみるとこんな感じになります。

[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun 13 15:28 2018 test
-rw-r--r--. 1 root root     0  Jun 13 15:33 2018 test.txt

上記の『0』ってとこに注目ですね。『4096』の下になります。これは「データ量が『0』だぜー」ってことになるのですがデータ量が0のファイルってちょっと不思議な感じがしますよね。

そしてファイル名、特に拡張子の部分にも注目です。

先程は『touch test.txt』ってコマンドを叩いたので拡張子が『.txt』なテキストファイルが出来上がったわけなのですが、「じゃあ『touch』コマンドでJPG画像を作ることは出来るの?」って言われるとそちらも作成可能なのでございます。こんな感じですね。

[root@localhost ~]# touch test.jpg
[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun 13 15:28 2018 test
-rw-r--r--. 1 root root     0  Jun 13 17:19 2018 test.jpg
-rw-r--r--. 1 root root     0  Jun 13 15:33 2018 test.txt

そんでもって「じゃあ音楽とかで使うmp3は?動画とかで使うmp4は?」と言われてももちろんそちらも作成可能でございます。というか『touch』コマンドを使えばほぼなんでも生成可能だったりしますね。

[root@localhost ~]# touch test.mp3
[root@localhost ~]# touch test.mp4
[root@localhost ~]# ls -l
total 24
drwxr-xr-x. 2 root root  4096  Jun 13 15:28 2018 test
-rw-r--r--. 1 root root     0  Jun 13 17:19 2018 test.jpg
-rw-r--r--. 1 root root     0  Jun 13 17:31 2018 test.mp3
-rw-r--r--. 1 root root     0  Jun 13 17:31 2018 test.mp4
-rw-r--r--. 1 root root     0  Jun 13 15:33 2018 test.txt

拡張子についてはこちら

なんだか『touch』コマンドだけで様々なファイルが生成出来てしまっているわけなのですがこれがなんだか不思議な感じがするという方も多いと思いますのでかるーく解説しておきます。

世間ではテキストだったり画像だったり動画だったりっていう様々なデータが存在しているのですがPCやスマホなどで使われているこれらのデジタルデータは全てバイナリデータ、つまり0か1の集合で作られています。

なのでテキストも画像も動画もその実体は全て同じものなんですね。「じゃあ拡張子って何者なんだぜ?」と聞かれるとそのファイルの種類を特定したり、操作するソフトウェアを選択する為に使われるのが主な目的となっておりまして全ては同じバイナリデータになります。

ただ「このファイルはこういうデータ構成にしてね!」というのは厳密に決められているのでそれを守らないとあまりよろしくない感じにはなっちゃいます。例えばJPG画像のデータはJPG画像のデータを構成する際のルールをちゃんと守らないとJPG画像を開けるソフトウェアで開けなくなってしまうためにJPG画像にはなりえないのですね。

じゃあ『touch』コマンドくんでなんでも作れるのはなぜなんだろうというと先程のデータ量の部分に注目です、データ量は0になっていましたね。つまりデータが無いような状態なのでデータ構成など一切関係なくデータが作れていたのでした。

ただデータ量が0のJPG画像はJPG画像と呼べるのかと聞かれるとJPG画像とは呼べないような気もしなくもないのでそう考えるとどんなファイルも作れてないっていうべきなのかもしれません。なので「データの卵を作れるんだな!」ってイメージが正解かもですね。

そんでもってUNIX系OSでは拡張子っていう概念は元々無かったりするのでそこもちょいとご注意です。拡張子っていう概念自体は結構古くからあるのですが、拡張子の概念が普及したのはやっぱりWindowsOSの影響が大きいわけでしてUNIX系OSでは今でも拡張子っていう概念が弱っちい部分があります。『.jpg』や『.mp3』なファイルにテキストを書いたりってことが簡単に出来ちゃったりしますのであまり拡張子を過信しすぎないほうがよいかもですね。

WindowsOSのみを長年使っていたりすると「拡張子を変更するとファイルが開けなくなる可能性があります!」とか沢山脅されるわけで「データと拡張子って凄く関連性が高いんだな!」って思い込みがちですが実際はそんな事ないのでここはちょいと気を付けて下さい。

というわけでファイルの簡易作成方法はこんな感じになりますね、『touch』コマンドは使用頻度が非常に高いのでバシッと暗記してしまって下さい。

次の記事では『echo』と『cat』についてやっていきましょう。ではではこの辺で。失礼致します。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .