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:

bash
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .rahasia
ls

Output yang Dihasilkan:

text
catatan.txt
laporan.txt

Perintah 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):

bash
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .rahasia
ls -a

Output yang Dihasilkan:

text
.
..
.rahasia
catatan.txt
laporan.txt

Listing 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:

NamaIsi
.bashrckonfigurasi shell untuk sesi interaktif
.profilekonfigurasi 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:

bash
mkdir -p latihan
cd latihan
touch laporan.txt catatan.txt .config-test .data-lama
echo *
echo .*

Output yang Dihasilkan:

text
catatan.txt laporan.txt
.config-test .data-lama

Ekspansi 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:

bash
mkdir -p konfig-latihan
cat > konfig-latihan/.bashrc << 'EOF'
# Alias latihan
alias lihat='ls -la'
alias pulang='cd ~'
EOF
ls konfig-latihan

Output yang Dihasilkan:

text

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.