Perintah Direktori Sentuh Linux

9

Apa perintah 'sentuh' ketika diterapkan ke direktori?

$ 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
Dragos Rizescu
sumber

Jawaban:

8

Seperti yang dinyatakan dalam manual , penggunaan utama touchadalah:

Perbarui waktu akses dan modifikasi setiap FILE ke waktu saat ini.

Sehingga memperbarui waktu akses dan modifikasi direktori.

Jorge Suárez de Lis
sumber
4

Contoh di atas tidak memperjelas bahwa "sentuhan" menetapkan waktu direktori (waktu baru dalam daftar sama dengan aslinya, hanya karena sentuhannya begitu cepat setelah direktori dibuat). Ya, definisi "FILE" dalam dokumentasi tidak termasuk direktori, sehingga Anda dapat menggunakan sentuhan untuk mengubah cap waktu mereka, TAPI ...

Ada beberapa situasi di mana Anda tidak dapat mengubah stempel waktu direktori (untuk beberapa jenis direktori yang dipasang dari jarak jauh) bahkan jika Anda memiliki izin untuk melakukan hal lain. misalnya pemasangan NFS ini:

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

Anda juga dapat mengalami masalah dengan beberapa tanggal lama yang tidak didukung di beberapa server, misalnya:

$ 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

Ini bekerja:

$ 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

Ini akan bekerja pada dir lokal tetapi memberikan tanggal aneh di bawah Samba mount:

$ 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
                              ~~~~~~~~~~~~~
pengguna235510
sumber
2

touchadalah program Unix standar yang digunakan untuk mengubah akses file dan cap waktu modifikasi. Ini juga digunakan untuk membuat file kosong baru.

Single Unix Spesifikasi (SUS) menentukan bahwa sentuhan harus mengubah waktu akses, waktu modifikasi, atau keduanya, untuk file. File diidentifikasi oleh nama path yang disediakan sebagai argumen tunggal. Ini juga menentukan bahwa jika file yang diidentifikasi tidak ada, file dibuat dan waktu akses dan modifikasi ditetapkan seperti yang ditentukan. Jika tidak ada cap waktu yang ditentukan, sentuh menggunakan waktu saat ini.

-Wikipedia

Anda dapat menemukan informasi lebih mendalam tentang touchperintah (atau perintah lain yang ingin Anda ketahui) dengan menggunakan manperintah seperti ini:

man touch

Atari911
sumber
2

Alasan langsung untuk pertanyaan ini adalah kenyataan bahwa resolusi waktu default ls -ladalah dalam hitungan menit, sehingga entri sistem file yang disentuh dalam menit yang sama akan muncul persis sama di ls -loutput default .

Solusi untuk ini dijelaskan di /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp dan pada dasarnya melibatkan berlari ls -l --time-style=full-isosebagai gantinya.

Josip Rodin
sumber