touchコマンドでファイルをつくる方法

シェル / Shell
Cashback Campaign  
“And God said, “Let there be light,” and there was light.”
— (Genesis 1:3)
神は言われた。「光あれ。」すると光があった。
—(創世記 1章3節)
ねえミミ、ファイルってどうやってつくるの?キキちゃん、なにかクリエイティブなことがしたい!
Hey Mimi, how do you create a file? I want to do something creative!
ファイルをつくるのは簡単よ。touchコマンドを使うの
Creating a file is easy. You use the touch command.

1. touchコマンドの主な機能
Main Functions of touch Command

えっ、touchって、触るって意味じゃないの?それでファイルが作れるの?
Wait, doesn’t “touch” mean “to touch”? How does that create a file?
そうよ、「touch」には「触る」っていう意味があるけど、コンピューターの世界では、新しい空のファイルを作るか、既存のファイルのタイムスタンプを更新するために使われるのよ
Yes, “touch” means “to touch,” but in the computer world, it’s used to create an empty file or update the timestamp of an existing file.
ということは、touchコマンドには二つの役割があるの?
So, the touch command has two roles?
うん、touchコマンドの後ろに書いたファイル名がカレントディレクトリに存在すれば、そのファイルのタイムスタンプを更新して、存在しなければ、そのファイル名で空のファイルを作るのよ
Yes, if the file name you specify after the touch command exists in the current directory, it updates the file’s timestamp; if it doesn’t exist, it creates an empty file with that name.

2. タイムスタンプとは
What is a Timestamp?

タイムスタンプって、何でしたっけ?
What was a timestamp again?
タイムスタンプは、ファイルの最後のアクセス時間、変更時間、状態変更時間を記録しているの
A timestamp records the last access time, modification time, and change time of a file.

3種類のタイムスタンプ:
3 Different Timestamps:

  • アクセス時間(atime): ファイルが最後に読み取られた日時
    Access Time (atime): The date and time when the file was last read.
  • 変更時間(mtime): ファイルの内容が最後に変更された日時
    Modification Time (mtime): The date and time when the file’s content was last modified.
  • 状態変更時間(ctime): ファイルのメタデータが最後に変更された日時
    Change Time (ctime): The date and time when the file’s metadata was last changed.
touchコマンドで更新されるのはどのタイムスタンプ?
Which timestamps are updated by the touch command?
touchコマンドを使うと、アクセス時間と変更時間が現在時刻に更新されるよ
When you use the touch command, the access time and modification time are updated to the current time.
じゃあ、ファイルを作ったときの時間も記録されるの?
So, does it also record the time when I create a file?
そうよ。新しいファイルを作成したときには、これらのタイムスタンプが初期化されるの
Exactly. When you create a new file, these timestamps are initialized.
ls -lって打ったときに、右のほうに出てくる日時もタイムスタンプ?
When I type ls -l, is the date and time that appear on the right also a timestamp?
それはmtime。ファイルの最終変更時間よ
That’s the mtime—the file’s last modification time.

3. touchコマンドの使い方
How to Use touch Command

で、どうやって新しいファイルつくるの?キキちゃん、早くクリエイティブなことがしたい… So, how do I create a new file? I want to do something creative soon…
まず、ターミナルを開いて、touchコマンドのあとに好きなファイル名を入力するだけよ。たとえば、「kiki.txt」という名前のファイルをつくりたいなら、次のように打ち込むわ
First, open the terminal, and after the touch command, just type the file name you like. For example, if you want to create a file called “kiki.txt,” type this:
Terminal
$ touch kiki.txt
これでファイルがつくれるの?でも、ターミナルの画面には何も表示されてないけど…
That creates the file? But I don’t see anything happening on the terminal screen…
何も表示されないのは正常よ。エラーがないときは、ターミナルは何も言わないのが普通なの。心配しないで、ファイルはちゃんと作成されているわ。確認したいときは、lsコマンドを使ってみて
It’s normal for nothing to show up. When there’s no error, the terminal usually stays silent. Don’t worry, the file is created. If you want to check, use the ls command to list the files.
Terminal
$  ls
Desktop    Documents    Downloads    Library    Movies    Music    Pictures    Public    kiki.txt
ほんとだ、「kiki.txt」ってファイルができてる!でも、このファイルには何も入ってないの?
Wow, there really is a file named “kiki.txt”! But, is there nothing inside it?
そう、今のところは空のファイルよ。あとでこのファイルにテキストを書き込むことができるけど、touchコマンド自体は、あくまで空のファイルを作るためのものなの
Yes, for now, it’s an empty file. You can add text to it later, but the touch command is just for creating the file.
そうだ。ls -lで見てみよう
I think I can check it with ls -l.
Terminal
$ ls -l
total 0
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Desktop
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Documents
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Downloads
drwx‑‑‑‑‑‑+ 26 kiki  staff  832 Sep 23 20:41 Library
drwx‑‑‑‑‑‑   3 kiki  staff   96 Sep 23 20:41 Movies
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Music
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Pictures
drwxr‑xr‑x+  4 kiki  staff  128 Sep 23 20:41 Public
-rw-r-‑r-‑   1 kiki  staff    0 Sep 30 23:07 kiki.txt
ファイルだから、最初の1文字目がディレクトリのdじゃなくて、になってるね
Since it’s a file, the first character is instead of the directory d.
そしてファイルサイズは0バイトだ
And the file size is 0 bytes.
タイムスタンプもできてるね
The timestamp has also been created.
もう一回touchしてみよう
And the file size is 0 bytes.
Terminal
$ ls -l
total 0
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Desktop
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Documents
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Downloads
drwx‑‑‑‑‑‑+ 26 kiki  staff  832 Sep 23 20:41 Library
drwx‑‑‑‑‑‑   3 kiki  staff   96 Sep 23 20:41 Movies
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Music
drwx‑‑‑‑‑‑+  3 kiki  staff   96 Sep 23 20:41 Pictures
drwxr‑xr‑x+  4 kiki  staff  128 Sep 23 20:41 Public
-rw-r-‑r-‑   1 kiki  staff    0 Sep 30 23:08 kiki.txt
ちゃんとタイムスタンプが更新された!おもろ!
The timestamp was properly updated! How smart!
でしょ?
Right?
なるほど!じゃあ、このファイルを使っていろいろやってみようっと!
I see! I’m going to try doing different things with this file!

4. touchコマンドのオプション
Options of the touch Command

touchコマンドのオプションってある?
Are there any options for the touch command?
それはいい質問ね。touch -atouch -mで、それぞれアクセス時間、変更時間だけが更新されるよ
That’s a good question. Using touch -a and touch -m, you can update only the access time and only the modification time respectively.
状態変更時間だけを更新するのはtouch -c
Is touch -c used to update only the change time?
残念だけど状態変更時間だけを更新するオプションはないわ。touch -cは、既存のファイルがなかったら何もしないというオプションよ
Unfortunately, there is no option to update only the change time. The touch -c option does nothing if the specified file does not exist.
マニアック…
That’s kind of obscure…
touch -tで、特定の日時にタイムスタンプを設定することもできるよ。例えば、kiki.txtのタイムスタンプを2024年10月1日12時34分56秒にしたかったら、こんな感じ
You can also set the timestamp to a specific date and time using touch -t. For example, if you want to set the timestamp of kiki.txt to October 1, 2024, at 12:34:56, you would do it like this:
Terminal
$  touch -t 202410011234.56 kiki.txt
これは使えそうだ
This could be useful.
そうよ。ファイル操作において、タイムスタンプは意外と重要だから、ぜひ活用してみてね
Exactly. Timestamps are surprisingly important in file operations, so be sure to make use of them.

5. statコマンドでファイルの詳細を確認しよう
Check File Details Using the stat Command

3種類のタイムスタンプを見るオプションはないの?
Is there any option to check 3 different timestamps
ターミナルでstat [ファイル名]と入力するだけよ。たとえば、kiki.txtの情報を見たいなら、こうするわ
Just type stat [filename] in the terminal. For example, to see information about kiki.txt, you would do this:
Terminal
$  stat kiki.txt
16777232 17778116 -rw-r–r– 1 kiki staff 0 0 “Oct  1 12:34:56 2024” “Oct  1 12:34:56 2024” “Oct  3 22:29:01 2024” “Sep 30 23:07:02 2024” 4096 0 0 kiki.txt
おお、たくさん情報が出てきた!
Wow, there’s a lot of information!
そうでしょ?ここでアクセス時間(atime)、変更時間(mtime)、状態変更時間(ctime)がすべて確認できるの
Right? Here you can see the access time (atime), modification time (mtime), and change time (ctime).
便利だね!
That’s convenient!
他にもファイルのサイズやパーミッション、所有者などの情報も確認できるから、ファイルの詳細を調べたいときに役立つわ
You can also check information like file size, permissions, and ownership, so it’s useful when you want to examine file details.

まとめ/Summary

  • touchコマンド:新規にファイルを作成したり、既存のファイルのタイムスタンプを更新したりする
    The touch command creates a new file or updates the timestamp of an existing file.
  • touch [ファイル名]で新しい空のファイルを作成できる
    You can create a new empty file with touch [filename].
  • タイムスタンプとは、ファイルのアクセス時間(atime)、変更時間(mtime)、状態変更時間(ctime)の記録
    Timestamps are records of a file’s access time (atime), modification time (mtime), and change time (ctime).
  • 新規に作成したファイルは空ファイルになるが、あとで内容を追加できる
    A newly created file will be empty, but you can add content to it later.
  • touchコマンドのオプションを使うと、特定のタイムスタンプを更新したり、日時を指定して設定できる
    By using options with the touch command, you can update specific timestamps or set them to a specified date and time.
  • statコマンドを使うと、ファイルの詳細な情報やタイムスタンプを確認できる
    You can view detailed information and timestamps of a file using the stat command.