助け合いフォーラム

LinuC

LinuC Lv1-101(Ver10.0)
問題ID : 14504
問題を開く
「file.txt」ファイルのアクセス時刻のみを2012年1月1日11:22:33に変更したい。適切なコマンドは次のうちどれか。

正解

touch -at 201201011122.33 file.txt

解説

touchコマンドは、空のファイルを作成したり、ファイルのタイムスタンプ(アクセス時刻や修正時刻)を変更する際に利用します。

touchコマンドの書式と主なオプションは以下のとおりです。

touch [オプション] ファイル名 [ファイル名・・・]


上表より、適切なオプションは「-t」と「-a」です。
時刻は「CCYYMMDDhhmm.ss」形式で指定します。CCとYYは西暦年の上2桁と下2桁、MM、DD、hh、mm、ssはそれぞれ月、日、時、分、秒を表します。

したがって正解は
・touch -at 201201011122.33 file.txt
です。

タイムスタンプはファイルの詳細情報を表示するstatコマンドなどで確認できます。

以下は実行例です。


「Access」行でアクセス時刻、「Modify」行で修正時刻を確認できます。なお「Change」行はファイルの修正および属性(パーミッション等)を変更した時刻です。

なお、指定したファイルが存在しない場合は、空のファイルが作成されます。テスト用の空ファイルなどを簡単に作成できるので便利です。
また「-t」オプションで時刻を指定しない場合は、現在時刻が適用されます。

その他の選択肢については以下のとおりです。
・touch -t 201201011122.33 file.txt
アクセス時刻と修正時刻の両方が変更されますので、誤りです。

・touch -a 201201011122.33 file.txt
「201201011122.33」というファイルが存在しない場合は新規作成されます。また、「file.txt」ファイルのアクセス時刻が現在の時刻に変更されますので、誤りです。

・touch -m 201201011122.33 file.txt
修正時刻を変更するオプションですので、誤りです。
この場合、「201201011122.33」というファイルが存在しない場合は新規作成されます。また、「file.txt」ファイルの修正時刻が現在の時刻に変更されます

・touch -mt 201201011122.33 file.txt
修正時刻を変更するオプションですので、誤りです。

上に戻る

アクセス時刻のみ変更

公開日 2022/08/10

touchコマンドのオプションで、アクセス時刻のみを変更したい場合はーaオプション、と解説にも書いてあるのに、正解がーatなのは何故ですか?

2022/08/11 00:20

touchの動作は次のような感じになってます。
オプション無しで実行すると、アクセス時刻と修正時刻の「両方」が「現在時刻」になります。
-aをつけると、アクセス時刻だけが「現在時刻」になります。
-mをつけると、修正時刻だけが「現在時刻」になります。
-tをつけると、アクセス時刻と修正時刻が「指定した時間」になります。
-atをつけると、アクセス時刻だけが「指定した時間」になります。
-mtをつけると、修正時刻だけが「指定した時間」になります。

次のように私は考えています。
基本の動作は、アクセス時刻と修正時刻の「両方」を「現在時刻」にすること。
-tを使うと、「現在時刻」ではなく「指定した時間」になる。
-aや-mを使うと、アクセス時刻だけ、修正時刻だけ、にできる。
-tと-a(-m)を合わせて使うと、アクセス時刻(修正時刻)だけを「指定した時間」にできる。

正解がーatなのは何故ですか?

「現在時刻」ではなく「指定した時刻」にしなくてはいけない→ -t
アクセス時刻”のみ”変更しなくてはいけない→ -a
これら2つのオプションを同時に使用して-atとなってますよ。


コメント

r ruttey

2022/08/11 12:49

理解できました。ありがとうございます。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?