Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

UNIX(Linux)
入門編

  1. UNIX(Linux)とは
  2. ディストリビューションとは
  3. CentOSとMacOSとCUIについて
  4. 仮想化ソフトウェアを使ったCentOSのインストールとMacOSのCUI環境について
  5. ログインとrootユーザーとシャットダウン等について
  6. コマンドの構造と注意点について
  7. ファイルシステムとカレントディレクトリの移動と表示(cdとpwd)について
  8. 各主要ディレクトリの解説とディレクトリ等の内容表示(ls)について
  9. ちょっと高度なディレクトリの移動(cd)とパスについて
  10. 『ls』コマンドの応用(1)とドットファイルについて
  11. 『ls』コマンドの応用(2)
  12. タブキーを使った入力補完について
  13. ディレクトリの作成方法(mkdir)について
  14. ファイルの簡易作成(touch)とファイルについて
  15. 標準入出力とリダイレクション(>と>>)を使ったファイル生成とechoとcatについて
  1. ファイルとディレクトリの削除(rm)について
  2. ファイルとディレクトリのコピー(cp)について
  3. ファイルとディレクトリの移動と名前変更(mv)について
  4. viエディタとは
  5. viの基本的な使い方(1)
  6. viの基本的な使い方(2)
  7. ターミナル(sshとTera Term)を使ったリモート操作について
  8. ソフトウェアのインストール方法(yumとパッケージ管理ツール)について
  9. ユーザーの概要と確認と追加と切り替え(adduserとsu)について
  10. ユーザーのパスワードと削除と更新と管理者権限での実行(passwdとuserdelとusermodとsudo)について
  11. グループの概要と確認方法(groups)について
  12. グループの追加と削除と設定変更(groupaddとgroupdelとgroupmod)とユーザー追加方法について
  13. パーミッション(権限)について
  14. パーミッションの設定方法(chmodとchown)について
  1. トップページ
  2. UNIX(Linux)入門編 - ファイルの簡易作成(touch)とファイルについて

ファイルの簡易作成(touch)とファイルについて

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

最初に『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』についてやっていきましょう。ではではこの辺で。失礼致します。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。