Linuxタッチディレクトリコマンド


9

コマンドをディレクトリに適用すると、「タッチ」とは何ですか?

$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test

回答:



4

上の例では、 "touch"がディレクトリの時間を設定することは明確ではありません(リスト内の新しい時間は、タッチがディレクトリの作成直後なので、元の時間と同じでした)。 。はい、ドキュメントの「ファイル」の定義にはディレクトリが含まれているため、タッチを使用してタイムスタンプを変更できますが、...

他の操作を行う権限があっても、ディレクトリのタイムスタンプを変更できない場合があります(リモートでマウントされたディレクトリのタイプによっては)。たとえば、このNFSマウント:

$ touch -d "2014-07-02 12:15" /public/test.dir    
touch: setting times of ‘/public/test.dir’: Operation not permitted

また、一部のサーバーで古い日付がサポートされていないなどの問題が発生する可能性があります。例:

$ mkdir  /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir

これは機能します:

$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr  1  2014 /Acer/kopies/test.dir

これはローカルディレクトリで機能しますが、Sambaマウントでは奇妙な日付になります:

$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26  60410 /Acer/kopies/test.dir
                              ~~~~~~~~~~~~~

2

touchファイルのアクセスと変更のタイムスタンプを変更するために使用される標準のUnixプログラムです。また、新しい空のファイルを作成するためにも使用されます。

Single Unix Specification(SUS)は、touchがファイルのアクセス時間、変更時間、またはその両方を変更することを指定しています。ファイルは、単一の引数として指定されたパス名によって識別されます。また、識別されたファイルが存在しない場合、ファイルが作成され、アクセス時刻と変更時刻が指定どおりに設定されることも指定されています。新しいタイムスタンプが指定されていない場合、touchは現在の時刻を使用します。

-ウィキペディア

次のようなコマンドtouchを使用すると、コマンド(または知りたい他のコマンド)の詳細情報を見つけることができますman

man touch


2

質問の直接の理由は、のデフォルトの時間解決がls -l分単位であることです。そのため、同じ分内にタッチされたファイルシステムエントリは、デフォルトのls -l出力でもまったく同じように表示されます。

これの解決策は/superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp で説明されており、基本的にls -l --time-style=full-iso代わりに実行する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.