Manajemen File dan Direktori

Manajemen File dan Direktori

Bitnesia Aug 16, 2026 21 EN

Pada bab sebelumnya Anda telah belajar menjelajahi filesystem menggunakan pwd, ls, dan cd. Sekarang saatnya memanipulasi isi filesystem tersebut. Bab ini membahas perintah-perintah untuk membuat file dan direktori, menyalin, memindahkan, serta menghapusnya, melihat isi file, mencari file, menggunakan wildcard, dan membuat symbolic link. Keterampilan ini adalah inti dari pekerjaan sehari-hari di terminal dan akan terus Anda gunakan pada bab-bab selanjutnya.

Membuat File dan Direktori

Langkah pertama dalam mengelola file adalah menciptakannya. Linux menyediakan perintah sederhana untuk membuat file kosong dan direktori baru.

touch: Membuat File Kosong

Perintah touch digunakan untuk membuat file baru yang kosong. Cukup ketik touch diikuti nama file yang ingin dibuat:

touch catatan.txt

Jika file belum ada, touch akan membuatnya. Jika file sudah ada, touch akan memperbarui waktu modifikasinya tanpa mengubah isi file. Anda juga dapat membuat beberapa file sekaligus dalam satu perintah:

touch file1.txt file2.txt file3.txt

mkdir: Membuat Direktori

Perintah mkdir (singkatan dari make directory) digunakan untuk membuat direktori baru:

mkdir proyek

Perintah ini membuat direktori bernama proyek di dalam direktori aktif Anda.

mkdir -p: Membuat Direktori Bertingkat

Secara default, mkdir hanya dapat membuat satu tingkat direktori. Jika Anda ingin membuat direktori yang bersarang, misalnya proyek/dokumen/2026, dan direktori induknya belum ada, gunakan opsi -p (parents):

mkdir -p proyek/dokumen/2026

Opsi -p membuat seluruh direktori induk yang diperlukan sekaligus, tanpa menampilkan kesalahan meskipun sebagian direktori sudah ada.

Menyalin, Memindahkan, dan Menghapus

Setelah file dan direktori dibuat, Anda perlu mengetahui cara menyalin, memindahkan, dan menghapusnya.

cp: Menyalin File atau Direktori

Perintah cp (singkatan dari copy) digunakan untuk menyalin file atau direktori. Polanya adalah cp sumber tujuan:

cp catatan.txt backup.txt

Perintah ini menyalin catatan.txt menjadi file baru bernama backup.txt. Untuk menyalin sebuah direktori beserta seluruh isinya, gunakan opsi -r (recursive):

cp -r proyek proyek-backup

Tanpa opsi -r, cp akan menolak menyalin direktori. Opsi ini memastikan seluruh subdirektori dan file di dalamnya ikut tersalin.

Beberapa opsi tambahan yang berguna untuk cp:

  • -i (interactive): meminta konfirmasi sebelum menimpa file tujuan yang sudah ada. Sangat disarankan untuk dibiasakan, terutama saat pertama kali belajar, misalnya cp -i catatan.txt backup.txt.
  • -v (verbose): menampilkan setiap file yang sedang disalin, berguna untuk memantau proses penyalinan yang melibatkan banyak file.
  • -a (archive): menyalin sambil mempertahankan permission, kepemilikan, dan timestamp asli, serta bekerja secara rekursif tanpa perlu menambahkan -r lagi. Opsi ini cocok digunakan saat menyalin data yang atribut aslinya perlu dijaga, misalnya cp -a proyek proyek-backup.

mv: Memindahkan atau Mengganti Nama

Perintah mv (singkatan dari move) memiliki dua fungsi: memindahkan file ke lokasi lain, atau mengganti nama file. Polanya sama dengan cp, yaitu mv sumber tujuan:

mv catatan.txt dokumen/

Perintah ini memindahkan catatan.txt ke dalam direktori dokumen. Jika tujuan adalah nama file, mv justru mengganti namanya:

mv catatan.txt catatan-baru.txt

Berbeda dengan cp, perintah mv tidak memerlukan opsi rekursif untuk memindahkan direktori. Sama seperti cp, mv juga mendukung opsi -i untuk meminta konfirmasi sebelum menimpa file tujuan, dan -v untuk menampilkan proses pemindahan secara rinci. Karena mv dapat menimpa file tujuan tanpa peringatan apa pun secara default, membiasakan diri dengan mv -i adalah kebiasaan yang baik ketika Anda belum yakin dengan hasil akhirnya.

rm: Menghapus File

Perintah rm (singkatan dari remove) digunakan untuk menghapus file atau direktori:

rm catatan.txt

Untuk menghapus direktori beserta seluruh isinya, gunakan opsi -r (recursive). Opsi -f (force) membuat penghapusan berjalan tanpa meminta konfirmasi:

rm -r proyek-backup
rm -rf direktori-lama

Perlu ditegaskan bahwa rm tidak memindahkan file ke Recycle Bin. File yang dihapus dengan rm hilang secara permanen dan sangat sulit untuk dipulihkan. Karena itu, gunakan rm dengan hati-hati, terutama ketika dikombinasikan dengan opsi -rf.

Sebagai langkah pengamanan, terutama saat masih belajar, biasakan menambahkan opsi -i agar rm meminta konfirmasi sebelum menghapus setiap file:

rm -i catatan.txt

Jika Anda menginginkan perilaku yang lebih mirip Recycle Bin di Windows atau Trash di macOS, GNOME menyediakan mekanisme trash yang dapat diakses dari terminal melalui perintah gio trash (bawaan GLib/GNOME, tersedia di Ubuntu maupun Fedora). Perintah ini memindahkan file ke Trash, bukan menghapusnya secara permanen, sehingga file masih dapat dipulihkan melalui aplikasi Files:

gio trash catatan.txt

Alternatif lain adalah paket pihak ketiga trash-cli, yang menyediakan perintah seperti trash-put dengan fungsi serupa. Untuk penghapusan yang benar-benar permanen dan disengaja, seperti membersihkan file cache atau direktori sementara, rm tetaplah perintah yang tepat.

rmdir: Menghapus Direktori Kosong

Perintah rmdir (singkatan dari remove directory) hanya dapat menghapus direktori yang kosong:

rmdir direktori-kosong

Jika direktori masih berisi file atau subdirektori, rmdir akan menolaknya dengan pesan kesalahan. Ini menjadikan rmdir pilihan yang lebih aman ketika Anda hanya ingin menghapus direktori kosong.

Melihat Isi File

Setelah membuat file, Anda tentu ingin membaca isinya. Linux menyediakan beberapa perintah untuk menampilkan isi file teks.

cat: Menampilkan Seluruh Isi

Perintah cat (singkatan dari concatenate) menampilkan seluruh isi sebuah file sekaligus:

cat catatan.txt

Perintah ini mencetak seluruh isi file ke layar. cat juga dapat digunakan untuk menggabungkan beberapa file, misalnya cat file1.txt file2.txt yang menampilkan isi keduanya secara berurutan. Namun, untuk file yang sangat panjang, cat kurang nyaman karena isinya langsung menggulung ke bawah.

less dan more: Membaca File Halaman per Halaman

Untuk file yang panjang, gunakan less atau more. Keduanya menampilkan isi file satu layar pada satu waktu:

less catatan-panjang.txt

less lebih modern dan fleksibel daripada more. Di dalam less, Anda dapat menggulir dengan tombol panah atau Page Up/Page Down, mencari teks dengan mengetik /kata, dan keluar dengan menekan tombol q. more hanya mendukung navigasi maju secara terbatas, sehingga less adalah pilihan yang lebih disarankan.

head dan tail: Melihat Awal dan Akhir File

head menampilkan sepuluh baris pertama sebuah file, sedangkan tail menampilkan sepuluh baris terakhir:

head catatan-panjang.txt
tail catatan-panjang.txt

Anda dapat menentukan jumlah baris dengan opsi -n, misalnya head -n 5 file.txt untuk lima baris pertama. Perintah tail sangat berguna untuk memantau file log yang terus bertambah, terutama dengan opsi -f (follow) yang menampilkan baris baru secara real-time.

Mencari File

Semakin banyak file yang Anda miliki, semakin penting kemampuan menemukannya dengan cepat.

find: Pencarian Berdasarkan Kriteria

Perintah find adalah alat pencarian paling kuat di Linux. Pola dasarnya adalah find lokasi -name pola:

find ~ -name "catatan.txt"

Perintah ini mencari file bernama catatan.txt di dalam direktori home Anda dan seluruh subdirektorinya. Anda dapat menggunakan pola wildcard, misalnya find ~ -name "*.pdf" untuk mencari semua file PDF.

Selain berdasarkan nama, find juga dapat menyaring hasil berdasarkan tipe file dengan opsi -type, yang sering dipakai berdampingan dengan -name:

  • find ~ -type f -name "*.pdf": hanya mencari file biasa (f) berekstensi .pdf, mengabaikan direktori yang kebetulan bernama serupa.
  • find ~ -type d -name "proyek*": hanya mencari direktori (d) yang namanya diawali proyek.

find juga dapat mencari berdasarkan ukuran (-size) dan waktu modifikasi (-mtime), namun kriteria -name dan -type di atas sudah cukup untuk sebagian besar kebutuhan sehari-hari sebagai pemula.

locate: Pencarian dari Database

locate bekerja dengan cara berbeda: ia mencari melalui database yang telah diindeks sebelumnya, bukan menelusuri filesystem secara langsung. Hasilnya, locate jauh lebih cepat daripada find:

locate catatan.txt

Karena mengandalkan database, hasil locate bisa jadi tidak mencerminkan file yang baru saja dibuat atau dihapus. Anda dapat memperbarui database-nya secara manual dengan perintah sudo updatedb, meskipun pada umumnya pembaruan sudah dijadwalkan otomatis setiap hari.

Perintah locate tidak selalu terpasang secara default dan perlu diinstal terlebih dahulu. Implementasi yang digunakan Ubuntu 26.04 LTS maupun Fedora Workstation 44 saat ini adalah plocate, versi modern dari locate yang lebih cepat dan lebih hemat ruang dibandingkan mlocate lama, sambil tetap kompatibel dengan perintah locate yang sama:

sudo apt install plocate        # di Ubuntu
sudo dnf install plocate        # di Fedora

Setelah terpasang, Anda tetap memanggilnya dengan perintah locate seperti biasa; nama paket plocate hanya merujuk pada implementasi di baliknya.

which dan whereis: Menemukan Lokasi Program

which menampilkan lokasi dari program yang akan dijalankan ketika Anda mengetik perintahnya:

which python3

Perintah ini menunjukkan path lengkap dari program python3, misalnya /usr/bin/python3. Sementara itu, whereis memberikan informasi lebih lengkap, termasuk lokasi file biner, halaman manual, dan kode sumber:

whereis python3

Kedua perintah ini berguna untuk memastikan program yang dimaksud memang terpasang dan mengetahui lokasinya.

Wildcard dan Globbing

Wildcard adalah karakter khusus yang digunakan untuk mencocokkan beberapa nama file sekaligus. Mekanisme pencocokan ini disebut globbing dan sangat berguna ketika bekerja dengan banyak file. Tiga wildcard utama adalah:

  • *: mencocokkan nol atau lebih karakter apa pun. Contohnya, *.txt cocok dengan semua file berakhiran .txt.
  • ?: mencocokkan tepat satu karakter. Contohnya, file?.txt cocok dengan file1.txt, tetapi tidak dengan file12.txt.
  • [abc]: mencocokkan salah satu karakter dalam kurung. Contohnya, file[123].txt cocok dengan file1.txt, file2.txt, atau file3.txt.

Wildcard biasanya dikombinasikan dengan perintah lain. Sebagai contoh:

ls *.txt
rm file?.log
cp *.jpg gambar/

Perintah pertama menampilkan semua file .txt, perintah kedua menghapus file log dengan satu karakter, dan perintah ketiga menyalin semua file JPG ke direktori gambar. Wildcard membuat pekerjaan yang melibatkan banyak file menjadi jauh lebih efisien.

Menangani Nama File dengan Spasi atau Karakter Khusus

Sebagaimana disinggung pada Chapter 11, Linux memperbolehkan spasi dalam nama file, misalnya Catatan Rapat.txt. Namun, shell menafsirkan spasi sebagai pemisah argumen, sehingga perintah seperti rm Catatan Rapat.txt justru akan dianggap sebagai dua argumen terpisah, yaitu Catatan dan Rapat.txt, dan bisa berakibat fatal jika salah satu nama tersebut kebetulan cocok dengan file lain.

Untuk menangani nama file semacam ini dengan aman, Anda dapat membungkusnya dengan tanda kutip, atau menggunakan escape character berupa \ sebelum spasi:

rm "Catatan Rapat.txt"
rm Catatan\ Rapat.txt

Cara paling praktis dan minim risiko salah ketik adalah mengetik sebagian nama file lalu menekan Tab untuk memanfaatkan tab completion (lihat Chapter 14), karena shell akan otomatis menambahkan tanda escape yang diperlukan untuk Anda.

Symbolic Link

Symbolic link (atau symlink) adalah file khusus yang menunjuk ke file atau direktori lain. Bayangkan symlink sebagai "pintasan" seperti shortcut di Windows. Perintah untuk membuatnya adalah ln dengan opsi -s (symbolic):

ln -s /home/nama-pengguna/proyek pintasan-proyek

Perintah ini membuat symlink bernama pintasan-proyek yang menunjuk ke direktori /home/nama-pengguna/proyek. Ketika Anda mengakses pintasan-proyek, sebenarnya Anda mengakses direktori aslinya.

Symlink berguna untuk membuat akses cepat ke file atau direktori yang lokasinya panjang, atau ketika sebuah program mengharapkan file di lokasi tertentu tetapi file aslinya berada di tempat lain. Perhatikan bahwa jika target asli dihapus, symlink akan menjadi "putus" dan tidak berfungsi, meskipun symlink itu sendiri tetap ada.

Perlu diketahui, ln tanpa opsi -s sebenarnya membuat jenis link yang berbeda, yaitu hard link. Berbeda dengan symlink yang hanya berisi "petunjuk" ke lokasi lain, hard link menunjuk langsung ke nomor inode yang sama dengan file aslinya, sebagaimana dijelaskan pada konsep inode di Chapter 11. Konsekuensinya, hard link tetap berfungsi normal meskipun nama file aslinya dihapus, karena data sesungguhnya baru benar-benar hilang setelah tidak ada satu pun nama yang merujuk ke inode tersebut. Meski demikian, hard link memiliki keterbatasan, yaitu tidak dapat menunjuk ke direktori dan tidak dapat melintasi partisi atau filesystem yang berbeda, sehingga symlink jauh lebih umum digunakan dalam pekerjaan sehari-hari.

Pada bab ini Anda telah mempelajari perintah-perintah dasar untuk mengelola file dan direktori: membuat file dengan touch, membuat direktori dengan mkdir dan mkdir -p, menyalin dengan cp (beserta opsi -i, -v, dan -a), memindahkan dan mengganti nama dengan mv, serta menghapus dengan rm, rmdir, dan alternatif yang lebih aman melalui gio trash. Anda juga telah mempelajari cara melihat isi file menggunakan cat, less, more, head, dan tail, mencari file dengan find (termasuk penyaringan -type), locate/plocate, which, dan whereis, memanfaatkan wildcard beserta cara menangani nama file berspasi, serta membuat symbolic link dan mengenal perbedaannya dengan hard link.

Pada bab berikutnya, Anda akan mempelajari cara mendapatkan bantuan ketika lupa atau tidak memahami sebuah perintah, menggunakan man, --help, info, dan tldr.