Sebagian file di Linux sengaja tidak tampil pada listing direktori biasa. File-file tersebut bernama hidden file dan hanya berbeda satu hal dari file biasa: namanya diawali titik. Kebiasaan ini bermula dari cara ls menafsirkan pola pencocokan file, lalu berkembang menjadi konvensi menyimpan konfigurasi pribadi agar home directory tetap rapi. Pada Chapter ini kita akan melihat bagaimana file tersembunyi bekerja, cara menampilkannya, dan bagaimana pola wildcard memperlakukannya secara berbeda.
Aturan Dasar File Tersembunyi #
Sebuah file atau direktori menjadi tersembunyi bila namanya diawali titik (.). Titik tersebut adalah bagian dari nama file, bukan penanda khusus yang terpisah. Mari kita buat fixture sederhana untuk melihat perilakunya:
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .rahasia
lsOutput yang Dihasilkan:
catatan.txt
laporan.txtPerintah ls polos hanya menampilkan dua file biasa; file .rahasia tidak muncul padahal tetap ada di direktori. Untuk membuktikannya, kita bangun ulang fixture yang sama lalu menambahkan option -a (all):
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .rahasia
ls -aOutput yang Dihasilkan:
.
..
.rahasia
catatan.txt
laporan.txtListing kini memuat lima entri: dua file biasa, .rahasia, ditambah dua entri khusus . dan ... Entri . merujuk direktori saat ini dan .. merujuk direktori induk — dua nama ini selalu ada di setiap direktori, itulah sebabnya cd . dan cd .. selalu berfungsi. Option -A (huruf besar) menampilkan semua hidden file tanpa kedua entri tersebut, sehingga hasilnya lebih bersih untuk keperluan sehari-hari.
Mengapa File Tersembunyi Ada #
Asal-usulnya bersifat teknis dan sedikit tidak sengaja. Program ls versi awal diminta mencocokkan semua file dengan pola *, dan pola tersebut kebetulan juga cocok dengan . dan .. yang selalu ada di setiap direktori. Agar keduanya tidak ikut tampil, ls dibuat melewati semua nama berawalan titik — dan konvensi itu lalu dipakai pemakai untuk menyembunyikan file konfigurasi pribadi.
Konvensi tersebut kini menjalar ke mana-mana. Home directory pada sistem desktop umumnya berisi puluhan hidden file dan direktori:
| Nama | Isi |
|---|---|
.bashrc | konfigurasi shell untuk sesi interaktif |
.profile | konfigurasi untuk login shell |
.ssh/ | kunci SSH dan konfigurasi klien |
.config/ | konfigurasi aplikasi mengikuti spesifikasi XDG |
.local/ | data dan program milik user |
.cache/ | berkas cache yang aman dihapus |
Hidden File dan Wildcard #
Perilaku yang sering mengejutkan pemula: pola wildcard * tidak mencocokkan nama berawalan titik. Mari kita buktikan dengan fixture yang berisi campuran file biasa dan hidden file:
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .config-test .data-lama
echo *
echo .*Output yang Dihasilkan:
catatan.txt laporan.txt
.config-test .data-lamaEkspansi echo * hanya memuat dua file biasa, sedangkan echo .* memuat hidden file. Pada bash versi 5.2, pola .* tidak lagi menyertakan entri . dan ..; pada shell yang lebih lama keduanya ikut ter-expansi — itulah alasan perintah rm .* berbahaya pada shell lama. Shell-lah yang melakukan perluasan pola sebelum perintah dijalankan, sehingga aturan ini berlaku untuk semua perintah, bukan hanya echo. Akibat praktisnya, perintah seperti rm * relatif lebih aman daripada kelihatannya: file konfigurasi tersembunyi tidak ikut terhapus.
Dotfile sebagai Konfigurasi #
Dalam praktik, hidden file paling sering kita temui sebagai dotfile konfigurasi. Sebagai contoh nyata, berikut isi .bashrc latihan yang menyalakan alias sederhana:
mkdir -p konfig-latihan
cat > konfig-latihan/.bashrc << 'EOF'
# Alias latihan
alias lihat='ls -la'
alias pulang='cd ~'
EOF
ls konfig-latihanOutput yang Dihasilkan:
Listing direktori konfig-latihan tampak kosong, padahal file .bashrc barusan dibuat di dalamnya. File tersebut hanya terlihat setelah ls -a konfig-latihan dijalankan. Pola seperti inilah yang membuat banyak program menyimpan pengaturan di home directory tanpa membuat tampilan berantakan: file konfigurasi hadir untuk program, bukan untuk dilihat setiap saat.
File tersembunyi adalah bagian kecil namun selalu ada dalam kehidupan Linux. Setelah memahaminya, kita siap membahas tipe tautan antar file — symbolic link dan hard link — yang menyimpan inode sebagai identitas sebenarnya dari sebuah file.