Apa gunanya touch
perintah itu? Saya tahu saya dapat membuat file kosong dengan itu, tetapi demikian juga halnya dengan echo -n
.
Kalau tidak, mengapa seseorang perlu mengubah cap waktu suatu file? Kecuali untuk membuat kesan salah tentang usia file, saya tidak melihat penggunaan lain, dan ini bukan yang sah (dari sudut pandang saya).
command
timestamps
touch
Feora Quora
sumber
sumber
echo -n > filename
, Anda dapat menjalankan yang berikut ini:>filename
Unless to create the false impression about the age of a file
. Tidak perlu kesan salah. Bagaimana jika Anda ingin mengubah waktu modifikasi? Ini bisa berguna dalam skrip. Script ini sangat tergantung padatouch
perintah dan sangat mudah dan sederhana untuk memilikinya seperti itu.tar
(atau pengarsipan lainnya) lakukan ketika mereka mengekstrak arsip. Umumnya mereka mengatur waktu modifikasi file ke waktu dari arsip, bukan waktu arsip diekstraksi, dan ini adalah fitur yang diinginkan. Karena sah untuk program mode pengguna untuk membuat cap waktu palsu, tidak ada banyak argumen mengapatouch
(atau program baris perintah lainnya) tidak boleh mengizinkannya berdasarkan argumen baris perintah. Belajar C tidak membuat Anda lebih sah daripada seseorang yang menulissh
naskah ;-)age
tentang suatu file. Itu akan menjadicreation
timestamp dan tidak ada timestamp untuk file di unix.Jawaban:
Salah satu keuntungannya
touch
adalah dapat menentukan stempel waktu sewenang-wenang, sementaraecho -n
akan selalu menghasilkan waktu saat ini.Contoh penggunaan yang sah adalah untuk memperbarui stempel waktu dari file kode sumber sehingga program seperti
make
akan mempertimbangkan file sumber lebih baru dari objek yang dikompilasi dan membangunnya kembali.Kegunaan lain adalah untuk membuat file yang berfungsi semata-mata berdasarkan keberadaannya misalnya
/etc/nologin
, yang melarang login jika ada. Saya juga berpendapat bahwa itutouch myfile
adalah konstruksi yang lebih sederhana daripadaecho -n >> myfile
, juga lebih pendek untuk mengetik.sumber
echo -n
saya melihat bahwa ia mengatakan "jangan output baris baru". Jadi saya tidak melihat bagaimana ini bisa membuat file kosong. Bisakah Anda mengklarifikasi?echo -n
akan menampilkan string kosong, dan dengan sendirinya tidak melakukan apa pun. Mengarahkan output melalui>>
menyebabkan output kosong ditambahkan ke file. Pengalihan akan menyebabkan file dibuat jika file tidak ada.echo -n
untuk perintah yang tidak melakukan apa pun.echo -n
dapat menampilkan string "-n" di bawah beberapa shell. Jika Anda benar-benar membutuhkan perintah yang tidak melakukan apa-apa,:
atautrue
merupakan opsi yang lebih baik, tetapi>> myfile
dengan sendirinya juga merupakan cara yang sah untuk membuat file jika tidak ada. Semua ini, tentu saja, mendukung jawaban Anda bahwa Anda hanya perlu menggunakan "sentuhan".Panggilan sistem yang mendasarinya (
utime
) penting untuk berbagai utilitas sepertitar
untuk dapat mengatur stempel waktu dari file yang baru disalin (tidak ter-tar). Beberapa utilitas cadangan juga dapat dipilih untuk mengatur ulang waktu akses terakhir dari file yang telah mereka salin.Salah satu penggunaan sah
touch
adalah untuk membuat file dengan cap waktu tertentu. File "referensi" seperti itu kemudian dapat digunakan oleh perintah sepertifind
. Misalnya, untuk menemukan semua file yang lebih baru dimodifikasi daripada 1 November 2013 (mis. 2013/11/01) "sumber
201311010000
berarti 1 November 2013? Apakah ada utilitas yang akan memberi tahu saya hal ini? Dengan kata lain bagaimana cara menentukan input yang akan disentuh?20131101
,, dapat dipecah menjadi2013-11-01
, atau 1 November 2013. Anda kemudian dapat mengasumsikan bahwa0000
bagian tersebut menunjukkan waktu tertentu dalam sehari, dalam hal ini 00 jam, 00 menit. Atau Anda bisa melihat halaman manual untuktouch
, yang memberitahu Anda apa formatnya (lihat-t
).The
touch
Tujuan utama perintah ini adalah memanipulasi cap waktu file, dan untuk membuat file.Contohnya
1. membuat file
CATATAN: The
total 0
Output darils -l
benar. Implementasi inils
menunjukkan jumlah blok yang digunakan oleh file ketika mereka terdaftar. Anda dapat meyakinkan diri sendiri tentang fakta ini dengan menambahkan-s
peralihan kels
. Ini akan mencantumkan blok yang digunakan oleh setiap file. Di sini saya telah menambahkan 2 karakter ke file1 & file2.Contoh
2. info waktu / tanggal suatu file - perintah stat
Kita dapat menggunakan
touch
untuk memanipulasi berbagai cap waktu pada file yang diberikan.3. kutipan dari halaman manual sentuh
4. memanipulasi waktu akses
5. memanipulasi waktu modifikasi
Anda mungkin bertanya-tanya tentang waktu perubahan (waktu). Itu tidak bisa dimanipulasi menggunakan
touch
. Itu melacak waktu salah satu data meta disentuh pada file. Lihat U&L T&J ini untuk perincian lebih lanjut, berjudul: Apa yang dapat Anda lakukan pada file tanpa memicu cap waktu "Ubah"? .sumber
ls -l
dalam direktori di mana file memiliki ukuran 0, dan belum ada yang lain. Segera setelah Anda memberikan salah satu ukuran file maka total akan muncul dengan jumlah blok yang digunakan oleh file. Lihat pembaruan saya jika Anda tidak yakin, saya telah menambahkan contoh.Terlepas dari dua jawaban lain yang sangat baik yang Anda dapatkan, namun kegunaan lain adalah, dalam kata-kata Anda, untuk
misalnya untuk digunakan dalam skema cadangan . Anda mungkin ingin tidak memperbarui cadangan dengan yang lebih baru karena identik, atau karena perubahan tidak relevan dibandingkan dengan biaya memperbarui cadangan pada, katakanlah, garis lambat ke host jarak jauh. Untuk mencapai ini, Anda memiliki opsi sederhana untuk menandai file cadangan dengan stempel waktu yang lebih baru, bukan berpura - pura tetapi menyatakan bahwa stempel waktu validitas file itu sekarang berbeda.
Kesan tentang usia file sekarang memang salah, tetapi maknanya nyata dan sah.
sumber
Salah satu penggunaan yang paling umum
touch
adalah - atau paling tidak dulu - untuk memicu pembangunan kembali kode.Alat bangun biasa -
make
dan turunannya - mencoba untuk menyimpan pekerjaan dengan tidak mengkompilasi ulang / membangun kembali file kecuali salah satu file yang dibuat telah berubah - misalnya, jika file .o lebih baru daripada .c sumber, biasanya aman untuk menganggap bahwa sumber C tidak berubah sejak dikompilasi untuk menghasilkan file objek.Tetapi ada kalanya Anda ingin memaksa sesuatu untuk dibangun kembali. Anda dapat membuat modifikasi yang tidak perlu ke salah satu file sumbernya, tetapi itu berisiko merusak sesuatu secara tidak sengaja. Sebagai gantinya, Anda dapat dengan mudah
touch
membuat file tersebut, menjadikannya tampak baru tanpa risiko mengubah kontennya - dan itu sudah cukup untuk meyakinkanmake
bahwa sudah waktunya untuk membangun kembali semua yang tergantung pada file itu.Ada kegunaan lain, tetapi secara historis itu yang besar.
sumber
touch
juga dengan perubahan manual. Untuk menyebabkan pembangunan kembali, saya sarankan menghapus file output.o
dari sumber yang dimaksud.Saya telah bekerja dengan setidaknya satu kerangka kerja web (tidak ingat yang mana) yang dalam mode pengembangan menyaksikan file kode sumber untuk perubahan dan memuat ulang aplikasi ketika itu terjadi.
Tentu saja kadang-kadang Anda ingin memuat ulang setelah mengubah sesuatu yang tidak ditonton, dalam hal
touch
ini file konfigurasi utamanya melakukan trik.Jadi, dalam kasus umum, setiap kali Anda ingin memulai proses yang dipicu oleh perubahan pada file, tanpa benar-benar mengubah file.
sumber
Penggunaan sentuhan yang sah:
sumber
Satu kegunaan adalah untuk memperbaiki timestamp file yang tidak semestinya diatur.
Sebagai contoh, sebagian besar cara Anda menyalin file (dan untuk beberapa cara Anda dapat memindahkan file) menghasilkan file baru memiliki timestamp waktu saat ini, bukan timestamp dari file asli.
Biasanya, ini bukan yang diinginkan. Sentuhan dapat "memperbaiki" itu.
Penggunaan lain adalah untuk mencerminkan modifikasi file yang dibatalkan dengan mengembalikan stempel waktu file ke apa itu sebelum operasi "edit ... undo-edit".
sumber
alias cp='cp --preserve=timestamps'
lebih cocok untuk saya di tanah PC ...Perbedaan penting vs.
things
sukaecho
(atau yang lebih baik> file
seperti yang disebutkan oleh orang lain) adalah sentuhan tidak akan menghancurkan konten.> file
akan mengosongkan file.touch
tidak akan. Alih-alih memikirkan trik untuk menghindari kerusakan konten, cukup gunakan sentuhan! Lagipula ia akan bekerja lebih sedikit di kernel, karena ia hanya akan bekerja dengan atribut-atribut file tanpa membuang waktu untuk mempersiapkan pembukaan dan kemudian melakukan penutupan.Sentuhan mungkin dapat mengubah stempel waktu meskipun file saat ini berada di bawah kunci wajib atau penasihat, atau pembukaan eksklusif. Hmmm, belum pernah diuji atau baca tentang itu ...
sumber
>>
akan menambahkan alih-alih menimpaIni salah satunya - saya menggunakan program perangkat lunak yang disebut SageTV untuk merekam acara TV - ini sering direkam dalam MPEG-2 yang bukan codec yang sangat efisien, juga tidak ramah iPad / iPhone. Jadi saya mengonversi file ke file .mp4. Tetapi ketika memutar file, SageTV mengharapkan timestamp file tersebut menjadi saat acara TV dimulai - jika tidak, skrup waktu timeline acara tidak mudah untuk FF atau REW. Oleh karena itu saya menggunakan sentuhan untuk mengatur ulang stempel waktu dari file .mp4 agar sama dengan file orignal.
Apakah itu sah?
sumber
Seringkali Anda mungkin memiliki proses yang berubah dari userid, seperti dari root -> sesuatu yang lain. Sentuh dapat memberi Anda kesempatan untuk membuat file di tempat yang hanya dapat disentuh oleh root sebelum aplikasi mulai masuk ke file tersebut sebagai pengguna lain.
sumber
Di tempat kerja kami memiliki arsip peta digital yang berusia 15 tahun ke belakang. Peta-peta lama ini disimpan dalam berbagai format seperti PostScript, EMF, PRN, hpgl2, pdf, dll. Yang sebagian besar program tidak mengerti. Atau Anda perlu selusin program berbeda untuk melihat semuanya.
Untuk memudahkan pencarian dan penelusuran semua format yang berbeda ini kami membuat versi peta jpeg, dan kemudian menggunakan sentuhan untuk membuat file jpeg cocok dengan stempel waktu file sumber asli - seringkali bertahun-tahun setelah yang asli dibuat.
Sekarang kita dapat menggunakan satu program seperti Picasa untuk melihat seluruh pustaka dan dengan mudah menemukan rentang tanggal tertentu. Tanpa sentuhan kita harus menambahkan metadata tanggal untuk setiap gambar tunggal, mungkin secara manual, dan kemudian mencari string itu ketika mencari rentang tanggal tertentu.
sumber
Saya belum menggunakannya untuk tujuan ini, tetapi saya memiliki skrip yang membaca file dan tanggalnya dari direktori dan membacanya untuk digunakan pada halaman web. Jika saya harus mengedit satu, itu akan mengubah tanggalnya. Saya telah mempertimbangkan
touch
mereka untuk mengatur ulang pesanan mereka.sumber
Beberapa skrip init membandingkan cap waktu file konfigurasi dengan file pid mereka sendiri. Hasilnya memutuskan apakah akan memuat ulang layanan yang sedang berjalan atau tidak.
Jika ada situasi di mana Anda tidak ingin mengubah konfigurasi tetapi ingin memaksa memuat ulang, sentuh membantu Anda di sini.
sumber
Saya memiliki pekerjaan cron yang mendapatkan perubahan dari database yang telah terjadi antara menjalankan pekerjaan terakhir, dan menjalankan saat ini. Ini menghasilkan file XML dari perubahan yang kemudian diolah menjadi database yang berbeda. Ini mendapatkan waktu menjalankan terakhir dari cap waktu pada file output XML. *
Jika ada yang salah dalam pemrosesan file XML, saya mungkin ingin mengulangi proses dari tanggal asli, bukan dari tanggal yang disebutkan pada cap waktu file XML baru.
Cara paling sederhana untuk melakukan ini, daripada mengedit skrip yang disebut dll adalah menyentuh file XML dan memaksa cap waktu menjadi tanggal yang saya butuhkan.
Juga jika saya mulai dari awal (tanpa file output XML sebelumnya) saya hanya dapat mensimulasikan keberadaannya menggunakan sentuhan.
[*] Sebelum seseorang menunjukkannya - saya menyadari saat pekerjaan dimulai dan penulisan file XML menyisakan jarak waktu beberapa menit di mana perubahan DB dapat terjadi. Pekerjaan berjalan pada saat perubahan DB sangat tidak mungkin. Itu alasan saya dan saya berpegang teguh pada itu :-)
sumber