助け合いフォーラム
正解
touch -at 201201011122.33 file.txt
解説
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
修正時刻を変更するオプションですので、誤りです。
touchコマンドのオプションについて
質問:アクセス時刻と修正時刻のどちらか一方のみ指定した時刻に修正したい場合でもオプション「-t」が必要なのか?
質問者の認識:
①問題文に「「file.txt」ファイルのアクセス時刻のみを2012年1月1日11:22:33に変更したい。」とありtouchコマンドの「-t」オプションはアクセス時刻と修正時刻のどちらも指定した時刻に変更する際に使用するものと認識している。
②アクセス時刻と修正時刻をそれぞれ変更する際に-aや-mをつけるので、問題文の答えとしては「touch -a 201201011122.33 file.txt」のほうが正しいのでは?
調べてはみましたが、欲しい答えが見つからなかったのでご教授いただければ幸いです。
質問:アクセス時刻と修正時刻のどちらか一方のみ指定した時刻に修正したい場合でもオプション「-t」が必要なのか?
はい、時刻を指定するには何はともあれオプション「-t」が必要です。
touchコマンドの「-t」オプションはアクセス時刻と修正時刻のどちらも指定した時刻に変更する際に使用するものと認識している。
いえ、-tオプションは「アクセス時刻だけを、指定した時刻に変更する際」も、「修正時刻だけを、指定した時刻に変更する際」も、「アクセス時刻と修正時刻のどちらも、指定した時刻に変更する際」も使えます。-tは「現在時刻ではなく、指定した時刻を使うときに指定するオプション」です。対象がアクセス時刻か修正時刻かは無関係です。
問題文の答えとしては「touch -a 201201011122.33 file.txt」のほうが正しいのでは?
そのコマンドだと、201201011122.33がファイル名とみなされて、201201011122.33というファイルが(たぶんそのような変な名前のファイルはまだ無いので)新規作成されます。「2012年1月1日11:22:33」のような特定の時刻を指定するには-tオプションが必要です。
このような誤解が生じたのは、「解説」にあるオプションを説明する表に、「-t アクセス時刻と修正時刻を指定した時刻に変更」と簡潔に書いてあったためだと思いますが、詳しく書くと「-t アクセス時刻や修正時刻を変更する際、その時刻を(現在時刻の代わりに)指定して変更」という意味です。
コメント
この投稿に対して返信しませんか?
M Mahiro_goto
2024/11/27 09:10
tnishita2さん ご回答いただきありがとうございます。 とても分かりやすい回答で、疑問点解消できました。 lpic関連全般に言えますが、問題に対しての答えや、コマンド等の説明が不足気味だったり、試験自体は直訳っぽく日本語おかしかったりで大変ですね…。 (手元にLinux環境があれば検証してみるのが手っ取り早いんですけど…)