Perintah touch Linux: file kosong dan perubahan waktu file

Perintah touch membuat file kosong jika nama file belum ada, atau memperbarui waktu akses dan modifikasi file yang sudah ada tanpa menghapus isinya. Waktu akses disebut access time (atime), sedangkan waktu perubahan isi disebut modification time (mtime).

Contoh-contohnya menggunakan perilaku GNU Coreutils. Periksa touch --help, man touch, dan dokumentasi distribusi Anda ketika portabilitas atau opsi spesifik versi menjadi penting.

Apa itu Perintah touch?

Tanpa opsi waktu, touch mengatur atime dan mtime ke waktu sekarang. File yang belum ada dibuat sebagai file biasa berukuran 0 byte, kecuali pembuatannya dicegah, misalnya dengan -c. Waktu perubahan status metadata (ctime) dan waktu pembuatan (birth time) berbeda dari dua kolom tersebut; keduanya tidak dapat diberi nilai sembarang dengan touch.

Sintaks Dasar

touch [OPSI]... FILE...

Kutip jalur yang berisi spasi. Pada GNU, gunakan touch -- -draft.txt untuk nama yang diawali tanda hubung. Nama tepat - memiliki arti khusus bagi GNU sebagai file pada keluaran standar; gunakan touch ./- bila yang dimaksud benar-benar file bernama tanda minus.

Penggunaan touch Dasar

Membuat file kosong

Jalankan latihan dalam direktori baru yang dapat Anda tulisi, misalnya masuk dengan cd ke direktori hasil mktemp -d. Pastikan nama contoh belum ada bila ingin mengamati pembuatan file kosong. touch tidak membuat direktori induk yang hilang; siapkan direktori tersebut lebih dahulu. Beberapa nama dapat diproses dalam satu perintah.

touch notes.txt
touch file1.txt file2.txt file3.txt
touch "annual report.txt"

Perbarui cap waktu ke waktu saat ini

Ketika file sudah ada, isi dan ukurannya tetap sama sementara waktu akses dan modifikasi diperbarui. Gunakan stat untuk membaca metadata file sebelum dan sesudahnya. Jika kedua perintah berjalan sangat berdekatan, perbedaan mungkin tidak terlihat pada resolusi waktu sistem file tersebut.

stat notes.txt
touch notes.txt
stat notes.txt

Jangan buat file yang hilang

Gunakan -c atau --no-create untuk memperbarui file yang ada tanpa membuat file baru. Jika existing.txt belum ada, nama itu tetap tidak ada, tanpa diagnostik untuk kondisi tersebut; GNU dapat mengembalikan status 0. Karena itu, status berhasil dengan -c tidak membuktikan file ada.

touch -c existing.txt

Memeriksa hasil eksekusi

Perintah touch biasanya tidak menampilkan apa pun di layar meskipun berhasil. Untuk memeriksa apakah file yang baru dibuat memiliki ukuran 0 byte, lakukan kueri sebagai berikut.

touch empty-demo.txt
stat -c '%s %n' empty-demo.txt

Contoh output:

0 empty-demo.txt

Hasil 0 empty-demo.txt berlaku jika nama tersebut baru dibuat; file lama yang berisi data tetap berukuran semula. Untuk melihat kedua waktu, gunakan stat -c '%x %y' empty-demo.txt. Jika perintah gagal, periksa status dengan printf '%s\n' "$?" segera sesudahnya. Pada beberapa operand, sebagian file mungkin sudah berubah sebelum kegagalan dilaporkan.

Opsi utama

Opsi Tujuan
-a Ubah hanya waktu akses.
-m Ubah hanya waktu modifikasi.
-c Jangan buat file yang hilang.
-d STRING Analisis string tanggal yang dapat dibaca manusia.
-t STAMP Gunakan format cap waktu [[CC]YY]MMDDhhmm[.ss].
-r FILE Salin waktu akses dan modifikasi dari file referensi.
-h Ubah tautan simbolik itu sendiri daripada targetnya jika didukung.
--time=WORD Pilih access atau atime untuk akses, dan modify atau mtime untuk modifikasi.

Opsi panjang sering membuat skrip yang diperiksa lebih mudah dipahami. Ketika skrip harus dijalankan di sistem non-GNU, periksa setiap opsi non-POSIX di platform target.

Contoh praktis

Ubah waktu akses atau waktu modifikasi secara terpisah

Opsi -a memilih atime dan -m memilih mtime. Untuk membandingkan kolom yang tidak dipilih, gunakan file yang sudah ada: file baru tetap memperoleh kedua waktu saat dibuat. Menentukan kedua opsi setara dengan memilih kedua kolom.

touch -a access-log.txt
touch -m generated.css

Periksa hasil dengan stat -c '%x %y' access-log.txt generated.css. Kata “hanya” merujuk pada pilihan atime dan mtime; ctime masih dapat diperbarui oleh kernel ketika metadata diubah.

Tetapkan tanggal dan waktu tertentu

-d menafsirkan string tanggal. Pada contoh pertama, +0900 berarti sembilan jam di timur UTC. Bentuk numerik -t tidak membawa penanda zona waktu, sehingga contoh kedua menetapkan TZ=UTC0 untuk perintah itu saja. Keduanya menyatakan saat yang sama: 23 September 2026 pukul 05:30 UTC.

touch -d '2026-09-23 14:30:00 +0900' report.txt
TZ=UTC0 touch -t 202609230530.00 report.txt

Periksa dengan TZ=UTC0 stat -c '%y' report.txt; bagian tanggal dan jamnya harus 2026-09-23 05:30:00 dengan offset +0000. Pada [[CC]YY]MMDDhhmm[.ss], gunakan tahun empat digit agar tidak ambigu. Jika TZ tidak ditentukan, -t memakai zona waktu lingkungan atau sistem dan dapat menghasilkan saat berbeda dari contoh -d.

Salin cap waktu dari file lain

reference.txt harus ada. Jika perlu menyiapkan latihan, gunakan touch -d '2026-09-01T00:00:00Z' reference.txt, lalu jalankan contoh berikut. Opsi -r menyalin atime dan mtime; isi file tidak disalin, dan target.txt akan dibuat bila belum ada kecuali ditambah -c.

touch -r reference.txt target.txt
stat reference.txt target.txt

Bandingkan kolom akses dan modifikasi, bukan ctime atau waktu pembuatan. Sebelum mengubah waktu file penting, simpan nilai awal yang ditampilkan stat agar dapat dipulihkan dengan -a -d dan -m -d secara terpisah; pemulihan dua kolom itu tidak memulihkan ctime.

Mengubah waktu tautan simbolik

Secara default, touch mengikuti tautan simbolik dan mengubah targetnya. Pada sistem yang mendukungnya, touch -h -m -- config-link mengubah waktu modifikasi tautan yang sudah ada. Bandingkan stat config-link untuk tautannya dengan stat -L config-link untuk targetnya.

GNU -h tidak membuat file kosong untuk nama yang belum ada. Tambahkan -c jika kondisi nama yang tidak ada juga tidak perlu menghasilkan diagnostik. Jika -h dipakai bersama -r, waktu referensi juga diambil dari tautan referensi itu sendiri, bukan targetnya; dukungan dan keterlihatan atime tautan dapat berbeda antar sistem.

touch dan Perintah Terkait

Perintah atau metode Peran utama Penggunaan yang sesuai
touch Buat file kosong atau ubah atime dan mtime Menyiapkan file dan cap waktu
truncate Ubah ukuran logis sebuah file Membuat file dengan ukuran nol atau ukuran tetap
date Tampilkan dan konversi tanggal Perhitungan dan format tanggal
stat Baca metadata file Memverifikasi perubahan stempel waktu

Peringatan Penting

Ini tidak mengosongkan file yang sudah ada

Menjalankan touch pada file yang sudah ada mempertahankan datanya. Gunakan truncate -s 0 hanya ketika Anda sengaja ingin mengurangi file menjadi nol byte.

ctime dan waktu pembuatan berbeda

Kernel mengelola ctime saat status metadata inode, yaitu struktur informasi file, berubah. touch tidak menetapkan nilai ctime pilihan pengguna dan tidak mengubah birth time file yang sudah ada. Resolusi waktu dan dukungan waktu pembuatan bergantung pada sistem file.

Perubahan timestamp dapat menyembunyikan masalah dependensi

Mengubah waktu file dapat memicu atau melewatkan langkah build yang membandingkan waktu masukan dan keluaran. Gunakan perubahan itu dengan tujuan yang jelas agar tidak menutupi hubungan dependensi yang salah.

Jika muncul “Permission denied”, periksa izin penelusuran direktori, kepemilikan file, izin tulis, dan apakah sistem file hanya-baca. Mengatur tanggal tertentu dapat memerlukan kepemilikan atau hak yang sesuai meskipun pembaruan ke waktu sekarang diizinkan. -c bukan opsi untuk melewati pemeriksaan izin.

FAQ

Apakah perintah touch menghapus isi file yang sudah ada?

Tidak. Isi dan ukuran tetap sama; opsi menentukan waktu akses atau modifikasi yang diperbarui.

Bagaimana cara menghindari membuat file yang hilang?

Gunakan touch -c FILE.

Bagaimana cara mengubah hanya waktu modifikasi?

Gunakan touch -m FILE. Gunakan -a hanya untuk waktu akses.

Bisakah saya menyalin cap waktu dari file lain?

Ya. Gunakan touch -r REFERENCE_FILE TARGET_FILE.

Dokumentasi resmi

Untuk konteks tugas lain, lihat referensi perintah Linux menurut tugas (bahasa Inggris).