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:
mkdir -p proyek
cd proyek
touch catatan.txt daftar.txt draft.md
ls
stat -c '%n %s' catatan.txtOutput yang Dihasilkan:
catatan.txt
daftar.txt
draft.md
catatan.txt 0Perintah 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:
mkdir -p dokumen/2025/laporan
mkdir -p dokumen/2025/laporan
ls -R dokumenOutput yang Dihasilkan:
dokumen:
2025
dokumen/2025:
laporan
dokumen/2025/laporan:Mari kita telaah baris-baris di atas:
- Baris 1 (
mkdir -p dokumen/2025/laporan): membuat tiga tingkat direktori sekaligus —dokumen,dokumen/2025, dandokumen/2025/laporan. - Baris 2 (perintah yang sama, diulang): tidak menghasilkan error maupun output karena
-pmenjadikan perintah ini idempoten — aman diulang kapan saja. - Baris 3 (
ls -R dokumen): menelusuri isidokumensecara rekursif; setiap direktori dicetak sebagai judul diikuti isi listnya. Direktorilaporantampil 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:
mkdir -p proyek
printf "isi penting\n" > proyek/catatan.txt
rm proyek 2>&1
mkdir proyek 2>&1Output yang Dihasilkan:
rm: cannot remove 'proyek': Is a directory
mkdir: cannot create directory ‘proyek’: File existsDua 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:
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 proyekOutput yang Dihasilkan:
proyekMari kita telaah baris-baris di atas:
- Baris 1-3 (
mkdirdanprintf): menyiapkan fixture — filecatatan.txt, folderproyek/lamayang berisi satu file, dan folderproyek/kosongyang kosong. - Baris 4 (
rm catatan.txt): menghapus satu file;lspada baris berikutnya membuktikan hanyaproyekyang tersisa. - Baris 6 (
rm -r proyek/lama): menghapus folder tersebut besertadraft.txtdi dalamnya secara rekursif —-rberarti telusuri dan hapus seluruh isinya dulu, baru folder-nya. - Baris 7 (
rmdir proyek/kosong): jalur aman untuk direktori kosong;rmdirmenolak direktori yang masih berisi sehingga tidak pernah menghapus lebih dari yang terlihat. - Baris 8 (
ls proyek): tidak mencetak apa pun karena kedua subfolder sudah tiada.
Option lain yang perlu kita kenal dirangkum berikut:
| Perintah | Perilaku |
|---|---|
rm file | hapus satu file, permanen |
rm -r folder | hapus folder beserta seluruh isinya |
rmdir folder | hapus folder kosong saja, tolak bila berisi |
rm -i file | minta 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.