Setelah bisa membaca file, kita perlu bisa menciptakan dan menyingkirkannya — dua aksi yang menyertai hampir setiap pekerjaan di terminal. Membuat file catatan, menyiapkan struktur folder proyek, lalu membersihkan sisa-sisa percobaan semuanya berlangsung dari baris perintah. Pada Chapter ini kita akan memakai touch dan mkdir untuk membuat, lalu rm dan rmdir untuk menghapus, termasuk perilaku option -r yang menghapus direktori secara rekursif. Karena penghapusan di Linux bersifat permanen, kita juga akan membiasakan diri membaca pesan error yang menjaga kita dari kehilangan data.

Membuat file kosong dengan touch #

Perintah touch semula memang dirancang untuk hal lain: memperbarui timestamp sebuah file — waktu modifikasi terakhirnya. Namun bila file yang disebut belum ada, touch membuat file kosong berukuran 0 byte, dan kebiasaan itulah yang paling sering dipakai sehari-hari:

bash
mkdir -p proyek
cd proyek
touch catatan.txt daftar.txt draft.md
ls
stat -c '%n %s' catatan.txt

Output yang Dihasilkan:

text
catatan.txt
daftar.txt
draft.md
catatan.txt 0

Perintah touch menerima banyak nama file sekaligus sebagai argument — tiga file pun tercipta dalam satu baris. Perintah stat -c '%n %s' kemudian menampilkan nama dan ukuran catatan.txt, dan angka 0 mengonfirmasi file itu benar-benar kosong. Bila kita menjalankan touch pada file yang sudah ada, isinya tidak tersentuh sama sekali; hanya timestamp-nya yang diperbarui ke waktu sekarang.

Membuat direktori dengan mkdir dan mkdir -p #

Perintah mkdir (make directory) membuat direktori baru pada lokasi argument. Versi polosnya hanya sanggup membuat satu tingkat dan gagal bila direktori induknya belum ada. Option -p (parents) mengatasi keduanya sekaligus: seluruh rantai induk dibuat bila perlu, dan bila direktori tujuan ternyata sudah ada, mkdir -p diam saja tanpa error:

bash
mkdir -p dokumen/2025/laporan
mkdir -p dokumen/2025/laporan
ls -R dokumen

Output yang Dihasilkan:

text
dokumen:
2025

dokumen/2025:
laporan

dokumen/2025/laporan:

Mari kita telaah baris-baris di atas:

  1. Baris 1 (mkdir -p dokumen/2025/laporan): membuat tiga tingkat direktori sekaligus — dokumen, dokumen/2025, dan dokumen/2025/laporan.
  2. Baris 2 (perintah yang sama, diulang): tidak menghasilkan error maupun output karena -p menjadikan perintah ini idempoten — aman diulang kapan saja.
  3. Baris 3 (ls -R dokumen): menelusuri isi dokumen secara rekursif; setiap direktori dicetak sebagai judul diikuti isi listnya. Direktori laporan tampil tanpa isi karena memang masih kosong.

Membaca error: rm menolak direktori, mkdir menolak kembar #

Sekarang saatnya menguji dua penolakan yang paling sering dijumpai pemula. Tanda 2>&1 di baris berikut mengalihkan pesan error ke layar supaya ikut terbaca sebagai output, dan karena memang ada perintah yang gagal, blok ini menutup dengan exit code 1:

bash
mkdir -p proyek
printf "isi penting\n" > proyek/catatan.txt
rm proyek 2>&1
mkdir proyek 2>&1

Output yang Dihasilkan:

text
rm: cannot remove 'proyek': Is a directory
mkdir: cannot create directory ‘proyek’: File exists

Dua penolakan di atas punya maksud berbeda. Perintah rm proyek ditolak karena rm tanpa option -r memang menolak menyentuh direktori apa pun — kosong maupun berisi — demi mencegah penghapusan berantai yang tidak disengaja. Sebaliknya, mkdir proyek ditolak karena direktori tersebut sudah ada; hanya versi -p yang membiarkan keadaan itu. Membaca dua pesan ini dengan tenang adalah kebiasaan penting: keduanya menyebut objek dan alasannya secara langsung.

Menghapus dengan rm dan rmdir #

Penghapusan yang benar dimulai dari membedakan dua keadaan: menghapus file dan menghapus direktori. Perintah rm menghapus file; rmdir menghapus direktori yang benar-benar kosong; dan rm -r menghapus direktori beserta seluruh isinya tanpa kompromi:

bash
mkdir -p proyek/lama proyek/kosong
printf "catatan\n" > catatan.txt
printf "draft\n" > proyek/lama/draft.txt
rm catatan.txt
ls
rm -r proyek/lama
rmdir proyek/kosong
ls proyek

Output yang Dihasilkan:

text
proyek

Mari kita telaah baris-baris di atas:

  1. Baris 1-3 (mkdir dan printf): menyiapkan fixture — file catatan.txt, folder proyek/lama yang berisi satu file, dan folder proyek/kosong yang kosong.
  2. Baris 4 (rm catatan.txt): menghapus satu file; ls pada baris berikutnya membuktikan hanya proyek yang tersisa.
  3. Baris 6 (rm -r proyek/lama): menghapus folder tersebut beserta draft.txt di dalamnya secara rekursif — -r berarti telusuri dan hapus seluruh isinya dulu, baru folder-nya.
  4. Baris 7 (rmdir proyek/kosong): jalur aman untuk direktori kosong; rmdir menolak direktori yang masih berisi sehingga tidak pernah menghapus lebih dari yang terlihat.
  5. Baris 8 (ls proyek): tidak mencetak apa pun karena kedua subfolder sudah tiada.

Option lain yang perlu kita kenal dirangkum berikut:

PerintahPerilaku
rm filehapus satu file, permanen
rm -r folderhapus folder beserta seluruh isinya
rmdir folderhapus folder kosong saja, tolak bila berisi
rm -i fileminta konfirmasi y untuk setiap file (interaktif)

Option -i meminta jawaban untuk setiap file sebelum menghapus — cocok untuk pembersihan yang butuh kehati-hatian, tetapi butuh terminal interaktif sehingga tidak bisa dibuktikan dalam blok output otomatis. Sebagian distribusi bahkan mengatur rm sebagai rm -i secara bawaan lewat alias. Seluruh option rm lainnya diuraikan pada halaman manual rm(1) .

Kini kita bisa menciptakan dan membersihkan file. Keahlian berikutnya sama pentingnya: menyalin dan memindahkan file antar lokasi tanpa kehilangan data — materi Chapter Menyalin dan Memindahkan File.