touchコマンドについて詳しくまとめました 【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

touchはファイルのタイムスタンプを変更するコマンドだ。

また、存在しないファイル名を指定することで、内容の入っていないファイルを新規作成する機能も持っている。

タイムスタンプには3種類の日時がある。

日時はファイルの内容を書き換えた日時がmtimeと呼ばれる更新日時がある。

更新日時にプラスして、ファイルのアクセス権設定などを変更した日時ctimeがある。

最後にatimeという、所有者がファイルを読み取り以外の操作をした場合に変更となる日時がある。

touchコマンドは、mtimeとctimeを書き換える。

touchコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ touch ファイル名

ファイルa.datのファイルスタンプを現在にする場合は、次のコマンドだ。

$ touch a.dat

touchコマンド

はじめは13:57であったファイルa.datのタイムスタンプがtouchコマンド実行後に13:58に変更された。

ファイルの新規作成

ファイルの新規作成の方法も上記と全く同じだ。

$ touch a.dat

touchコマンド

はじめは存在しなかったファイルa.datのタイムスタンプがtouchコマンド実行後に新規作成された。

touchコマンドのオプションたち

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -d(オプション--date=STRING)

日時を指定する

オプション -c(オプション--no-create)

ファイルを新規作成しない

オプション -r(オプション--reference=FILE)

他のファイルのタイムスタンプに合わせる

オプション -m

ctimeのみを変更する

-dオプション(--date=STRINGオプション):日時を指定する

日時を指定する書式は次のとおりだ。

$ touch -d 日付 ファイル名

ファイルa.datのタイムスタンプを2016年9月20日20:30に指定する場合は、次のコマンドだ。

$ touch -d "2016-9-20 20:30" a.dat

touchコマンド

はじめは10月3日13:58だったファイルa.datのタイムスタンプが上記コマンド実行後、9月20日20:30に変更になった。

日時は""で囲む。

日本語は使えないが、日時として認識できる形であればある程度エラーにはならない。

"2/3 0:0"では、年は変更日の年となり2月3日の0時となる。

"23:58"では、変更日の23:58となる。

時刻は"3:23 pm"のような12時間表記にも対応する。

年は下2桁でも認識する。

月は"jan 25 1989"のように英語表記も可能だ。

-cオプション(--no-createオプション):ファイルを新規作成しない

オプションなしでは指定したファイル名のファイルがなければ新規作成するが、-cオプションを指定すれば新規作成は行わない。

書式は次の通りだ。

$ touch -c ファイル名

ファイルb.datのファイルが存在しなければ新規作成、存在していればタイムスタンプを書き換えるコマンドは次の通りだ。

$ touch -c b.dat

touchコマンド

ファイルb.datが存在しないのでファイルは作成しなかった。

-rオプション(--reference=FILEオプション):他のファイルのタイムスタンプに合わせる

ファイルのタイムスタンプを指定するのではなく、既存のファイルのタイムスタンプと同一にするオプションで、書式は次の通りだ。

$ touch -r 既存のファイル名 対象ファイル名

ファイルa.datのタイムスタンプをファイルb.datのタイムスタンプと同一に指定する場合は、次のコマンドだ。

$ touch -r b.dat a.dat

touchコマンド

はじめは10月5日17:45だったファイルa.datのタイムスタンプが上記コマンド実行後、ファイルb.datのタイムスタンプ7月30日00:05に変更になった。

-mオプション:ctimeのみを変更する

ctimeのみを変更するオプションで書式は次の通りだ。

$ touch -m 対象ファイル名

ファイルa.datのctimeのみを2016年10月15日17:45に指定する場合は、次のコマンドだ。

$ touch -m a.dat

touchコマンド

lsコマンドの-lオプションでctimeを表示し、-ulオプションでmtimeを表示し、-clオプションでatimeを表示している。

ファイルa.datのctimeのみを2016年10月15日17:45に変更になっている。

touch関連コマンド

最後にtouchコマンドに関連して、基本的なファイル操作のコマンドも紹介しておく

lsコマンド

ディレクトリやファイルの一覧を表示する。

catコマンド

ファイルの内容を表示する。

まとめ

このページでは、touchコマンドを使ったタイムスタンプの変更の方法を解説した。

touchコマンドを実行すると-dオプションで日付を指定したとしてもatimeは現在日付に書き換えられることに注意したい。

touchコマンドを実行するということは、読み取り以上にファイル内容を書き換えているのだ。

atimeのみを指定するオプション-aもtouchコマンドには用意されているが、実際には、touchコマンド実行時の日時がatimeに格納されるので常に現在時刻となる。

プログラムやシステムのファイルがすべて同じ日時になっているのを見たことがないだろうか。

パッケージプログラムラムなどは見た目を良くするために納品前にtouchコマンドでバラバラだったタイムスタンプを同一のものに書き換えていたりするのだ。

また、ファイルの作成日付はプログラム作成途中ではバージョン管理をする上で重要な要素であり、アーカイブでは常に新しいタイムスタンプのものが最新と判断されるため、touchコマンドの不要な操作は混乱を招くかもしれない。

ファイルスタンプ書き換えの操作は慎重に行おう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リカレントテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リカレントテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する