メインコンテンツへスキップ
初級6分で読める

touchコマンドの意外な使い方

Linuxのtouchコマンドは単なるファイル作成だけでなく、タイムスタンプ操作など様々な用途に使えます。その活用法を詳しく解説します。

基礎編touchファイル操作タイムスタンプ初心者向け

🎯 この記事で学べること

  • 1
    `touch`コマンドで空のファイルを作成する方法をマスターできます
  • 2
    複数ファイルを一度に作成する効率的な方法がわかります
  • 3
    ファイルのタイムスタンプ(更新日時)を操作する方法を習得できます
  • 4
    スクリプトやビルドシステムでの実践的な活用法が身につきます
  • 5
    `touch`コマンドの意外な使い道を理解できます

読了時間: 約6

touchコマンドとは

こんにちは!今回は、ファイルを作成するtouchコマンドについて学んでいきましょう。

touchという名前を聞いて、「触る?」と思った方、正解です!このコマンドは文字通り「ファイルに触れる」ことから名付けられました。でも実際には、新しいファイルを作ったり、既存ファイルの更新日時を変更したりする、とても便利なコマンドなんです。

基本的な使い方

新規ファイルの作成

まずは一番よく使う、新しい空のファイルを作る方法から始めましょう!

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

touchで作られるファイルは、中身が空っぽ(0バイト)のファイルです。メモ帳で新規作成して何も書かずに保存したようなものですね。

複数ファイルの一括作成

実は、複数のファイルを一度に作ることもできるんです!

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

プロジェクトの初期セットアップ時に便利ですね!

タイムスタンプの操作

ここからがtouchコマンドの真の力です。ファイルの「更新日時」を自由に操作できるんです!

既存ファイルのタイムスタンプ更新

既にあるファイルにtouchを使うと、そのファイルの更新日時が「今」に変わります。

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

ファイルの中身は変わらずに、更新日時だけが変わります。これが「触る」という名前の由来です!

🎮 理解度チェック

ここまでの内容を理解できているか、確認してみましょう!

Q1: 新しい空のファイル「report.txt」を作成するコマンドは?

新しい空のファイル「report.txt」を作成するコマンドは?

Q2: touchコマンドで既存のファイルに対して実行すると何が起こりますか?

touchコマンドで既存のファイルに対して実行すると何が起こりますか?

実践的な使用例

プロジェクトの初期ファイル作成

新しいプロジェクトを始めるときの定番ファイルを一気に作成:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

日付入りファイルの作成

バックアップやログファイルに便利な、日付入りファイル名:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

便利なオプション

-t オプション(特定の日時を指定)

過去や未来の日時を指定してファイルを作成できます:

# 2025年1月1日 12:00のタイムスタンプで作成
$ touch -t 202501011200 newyear.txt

形式はYYYYMMDDhhmmです:

  • YYYY: 年(4桁)
  • MM: 月(2桁)
  • DD: 日(2桁)
  • hh: 時(2桁)
  • mm: 分(2桁)

-c オプション(新規作成しない)

既存ファイルのタイムスタンプだけ更新したい場合:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

応用テクニック

ビルドシステムでの活用

makeなどのビルドツールは、ファイルの更新日時を見て再ビルドの必要性を判断します:

# ソースファイルを「更新」して強制的に再コンパイル
$ touch src/main.c
$ make

ロックファイルの作成

スクリプトの多重実行を防ぐ仕組み:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

ワイルドカードとの組み合わせ

複数ファイルのタイムスタンプを一括更新:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

🎮 応用問題

Q3: プロジェクトでREADME.mdindex.htmlstyle.cssの3つのファイルを一度に作成するコマンドは?

README.md、index.html、style.cssの3つのファイルを一度に作成するコマンドは?

エラーとその対処法

権限エラー

$ touch /root/file.txt
touch: cannot touch '/root/file.txt': Permission denied

書き込み権限のある場所でファイルを作成しましょう:

$ touch ~/file.txt  # ホームディレクトリなら大丈夫

ディレクトリが存在しない

$ touch /nonexistent/file.txt
touch: cannot touch '/nonexistent/file.txt': No such file or directory

先にディレクトリを作成する必要があります:

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

意外な活用法

テスト用ダミーファイルの大量作成

# 連番付きのテストファイルを100個作成
for i in {1..100}; do touch test_$i.txt; done

条件付きスクリプト実行

最後の実行から一定時間経過したら実行する仕組み:

MARKER="/tmp/daily_task.marker"
# マーカーファイルが24時間以上古い、または存在しない場合
if [ ! -f "$MARKER" ] || [ $(find "$MARKER" -mtime +1 2>/dev/null) ]; then
    echo "日次タスクを実行します"
    touch "$MARKER"
fi

📝 まとめ

今回はtouchコマンドについて学びました!

  • touchは空のファイルを作成するコマンド
  • 複数ファイルを一度に作成できる
  • 既存ファイルのタイムスタンプを更新できる
  • -tオプションで特定の日時を指定可能
  • スクリプトやビルドシステムで幅広く活用される

touchは単純に見えて奥が深いコマンドです。ファイル作成だけでなく、タイムスタンプ操作を活用することで、より高度な処理が可能になります。

次は実際にファイルを編集する方法を学んでいきましょう!

まずは基本的なファイル作成から始めて、慣れてきたらタイムスタンプ操作にも挑戦してみてください。上のPlaygroundで色々試してみましょう!