【Linux】touchコマンドでタイムスタンプ更新&空ファイル作成
こんにちは。
普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
今回は、linuxについての解説記事です。
「Linuxのtouchコマンドの使い方について知りたい。」
こんな悩みを解決します。
本記事の内容
この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。
これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。
本記事で扱うのはLinux/Macのtouchコマンドです
本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。
touchコマンドには大きく2つの用途があります
主な用途
- 用途1: 空ファイルを作成したい
- 用途2: ファイルのタイムスタンプを更新したい
いずれの用途でも同じ構文です。使い方の違いは、用途1では未作成のファイル名を指定し、用途2では既に存在するファイル名を指定します。
【基本的な使い方】touch 《ファイル名》
touchコマンドを使うには、以下の構文を用います。
【用途1】touchで空ファイルを作成する
以下の例では、touchコマンドを実行し、空ファイルを作成します。
- ① lsコマンドで事前にファイルが存在しないことを確認
- ② touchコマンドで空ファイルを作成
- ③ 事後に0バイトの空ファイルが作成されたことを確認
実行結果は以下のようになります。
$ ls -l file1.txt ←① ls: file1.txt: No such file or directory $ touch file1.txt ←② $ ls -l file1.txt ←③ -rw-r--r-- 1 root staff 0 7 26 09:16 file1.txt
【用途1】実務での利用用途
エンジニアが実務でtouchコマンドにより空ファイルを作成する事例を挙げます。
- 例1:業務処理中、処理完了などの状態を、空ファイルの有無で表す場合
- 例2:ファイルにデータを書き込む前に、まずファイルを作っておきたい場合
- 例3:テストなどの目的で、大量のダミーファイルを作成したい場合
【用途2】touchでファイルのタイムスタンプを更新する
既にあるファイルのタイムスタンプを更新します。元のタイムスタンプ(9:16)から現在時刻(9:27)にタイムスタンプが更新されています(★の箇所を参照)。
$ ls -l file1.txt -rw-r--r-- 1 root staff 0 7 26 09:16 file1.txt $ touch file1.txt $ ls -l file1.txt -rw-r--r-- 1 root staff 0 7 26 09:27★ file1.txt
【用途2】実務での利用用途
エンジニアが実務でtouchコマンドによりタイムスタンプを更新する事例を挙げます。
- 例1:findのmtimeオプションでタイムスタンプを基準にファイル検索したい場合
- 例2:処理を行った証跡としてタイムスタンプを明示的に更新したい場合
- 例3:JSPの自動コンパイルのきっかけとしてJSPのタイムスタンプを更新する場合
未来日付または過去日付でタイムスタンプを更新する
touchコマンドでは、現在時刻以外の時間でタイムスタンプを更新することもできます。以下のようにtオプションを使います。
未来日付(★2045年)でタイムスタンプを更新する例を示します。
$ touch -t 4502100830 file1.txt $ ls -l file1.txt -rw-r--r-- 1 includingme staff 0 2 10 2045★ file1.txt
過去日付(★2000年)でも同様です。
$ touch -t 0002100830 file1.txt $ ls -l file1.txt -rw-r--r-- 1 includingme staff 0 2 10 2000★ file1.txt
ファイルを空ファイルにして更新したい場合
touchコマンドでは、ファイルがあればタイムスタンプが更新され、なければ空ファイルが生成されます。しかしファイルがあった場合も空ファイルにして、中身も含め更新したい場合もあります。そういうときは以下のようにします。
/dev/nullをcatしてリダイレクトする事で、ファイルサイズが0バイト(★)の空ファイルになります。
$ ls -rlt file0.txt -rw-r--r-- 1 root staff 3745 7 26 20:50 file0.txt $ cat /dev/null > file0.txt $ ls -rlt file0.txt -rw-r--r-- 1 root staff 0★ 7 26 20:56 file0.txt
touchの戻り値
touchの戻り値は以下の仕様です。
- ファイルのタイムスタンプを更新できた
戻り値:0 - ファイルのタイムスタンプを更新できなかった
戻り値:1
通常は戻り値0です。エラー(戻り値1)となる例を示します。
$ touch / touch: /: Read-only file system $ echo $?
[実行結果]
1
運用業務上の注意点
運用業務上、touchコマンドを使って過去日付や未来日付で更新するのは避けたほうが良いでしょう。
障害調査などでファイルのタイムスタンプから時系列を確認する際、事実と異なるタイムスタンプを使っていると混乱します。タイムスタンプを更新したい場合は現在時刻で更新するのが大原則です。
おわりに
今回は以上です。touchコマンドの2つの用途(用途1:空ファイルを作成する、用途2:タイムスタンプを更新する)について解説しました。実務で利用する場合の参考になりますと幸いです。
Blog TOP Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ
Linux&Linuxコマンドを勉強したい人向けの記事もくじ
用語解説・技術一般
"UNIXとLINUX"の違いについて解説します
CUIとGUIの違い・特徴について解説します
サーバリソースを確認するコマンドの使い方
【Linux】CPU使用率を確認する3つの方法を解説します
【Linux】topコマンドで,CPU消費の原因を特定する方法
【Linux】ps実行時に-efオプションを付ける理由について
【Linux】メモリ使用率を確認する|容量・空きの確認も
【Linux】ディスク容量を確認する|ディスク容量監視も
ファイル操作に関するコマンドの使い方
【Linux】ファイルの行数をカウントする方法を解説
【Linux】文字コード変換ならiconvコマンド1択です
【Linux】/dev/nullを、エンジニアが使う2つの目的
【Linux】findのexecオプションの使い方とその注意点
【Linux】findの結果から圧縮ファイルを作るコマンド
【Linux】hostsの場所はどこ?→/etc/hostsにあります
【Linux】touchコマンドで,時刻更新&空ファイル作成
Linux管理者用コマンドの使い方
【Linux】再起動コマンド(shutdown)の使い方と注意点
よく使う便利なコマンドの使い方
【Linux】改行なしでechoコマンドを使う時の -nオプション
【Linux】sleepコマンドの使用例と注意点について解説する
【Linux】rmコマンドでディレクトリを削除する方法を解説
【Linux】ファイルを削除するコマンド2選【rm以外もあり】
【Linux】awkの区切り文字を指定する,-Fオプションを解説
【Linux】sedで文字列の置換をするeオプションを解説する
【Linux】dateコマンドのフォーマットとその便利な使い方
【Linux】大文字から小文字に変換する方法【小文字から大文字も】
シェルの便利機能
「今の会社を辞めて転職します。エンジニア職に強みのあるおすすめの転職サイト・転職エージェントを教えて欲しい。また好条件で転職するにはどうすれば良いですか?」こんな悩みに答えます。 ITエンジニアに強いおすすめの転職サイト・転職エージェント3選 転職成功には強くてニューゲームが条件。どうやって実現する?