Topik ini membahas perintah inti untuk mengelola isi sistem berkas, yaitu mkdir untuk membuat direktori, cp untuk menyalin, mv untuk memindahkan dan mengganti nama, serta rm untuk menghapus. Seluruh contoh bekerja pada satu struktur praktik berisi laporan nilai dan catatan piket, sehingga setiap operasi dapat diikuti dari awal hingga akhir. Bagian akhir membahas wildcard, yaitu karakter pola yang diperluas oleh shell menjadi daftar nama, beserta cara menggunakannya dengan aman sebelum menyentuh berkas sungguhan. Setelah topik ini selesai, struktur berkas dapat disusun dan dibersihkan tanpa menyentuh editor sama sekali.
Membuat struktur direktori dengan mkdir#
Perintah mkdir membuat direktori baru dan menerima satu argumen atau lebih berupa path direktori yang diinginkan. Apabila induk dari direktori tersebut sudah ada, argumen relatif biasa sudah cukup. Struktur contoh topik ini berisi direktori praktik/nilai beserta tiga berkas di dalamnya, lalu pembuatan direktori tambahan dicoba di atas fondasi itu.
# membuat struktur contoh untuk seluruh topik ini
mkdir -p praktik/nilai
printf 'Kelas 10A, Matematika, 88\n' > praktik/nilai/10a.txt
printf 'Kelas 10B, Matematika, 84\n' > praktik/nilai/10b.txt
printf 'Senin, Ali\nSelasa, Budi\n' > praktik/piket.txt
# membuat direktori catatan di dalam praktik
mkdir praktik/catatan
ls -1 praktikcatatan
nilai
piket.txtApabila direktori induknya belum ada, mkdir gagal dengan pesan error karena tidak pernah membuat lebih dari satu tingkat sekaligus. Opsi -p menghilangkan keterbatasan itu, yaitu seluruh induk yang belum ada dibuat berurutan sampai tingkat terdalam, dan direktori yang sudah ada pun dibiarkan tanpa pesan error. Opsi inilah yang lazim digunakan pada skrip karena membuat perintah dapat diulang tanpa efek samping.
Penamaan direktori pada lingkungan UNIX sebaiknya dijaga sederhana, yaitu huruf kecil, angka, dan tanda hubung, tanpa spasi. Spasi pada nama memaksa argumen diapit tanda kutip agar shell tidak memecahnya menjadi dua argumen berbeda, dan pencegahan itu lebih mudah daripada penanganannya. Konvensi yang sama berlaku sepanjang jalur ini, sehingga seluruh contoh memakai nama seperti praktik dan cadangan-nilai.
# membuat bertingkat sekaligus dengan opsi -p
mkdir -p praktik/catatan/2025/semester-1
ls -R praktik/catatanpraktik/catatan:
2025
praktik/catatan/2025:
semester-1
praktik/catatan/2025/semester-1:Menyalin dengan cp#
Perintah cp menyalin berkas dari argumen pertama menuju argumen kedua. Apabila argumen kedua adalah nama yang belum ada, cp membuat berkas baru berisi salinan tersebut, sedangkan apabila argumen kedua adalah direktori, salinannya diletakkan di dalam direktori itu dengan nama yang sama. cp juga menerima beberapa berkas sumber sekaligus selama argumen terakhirnya berupa direktori. Contoh pertama membuat salinan cadangan dari laporan nilai kelas 10A pada direktori yang sama.
# menyalin satu berkas menjadi cadangan
cp praktik/nilai/10a.txt praktik/nilai/10a-cadangan.txt
ls -1 praktik/nilai10a-cadangan.txt
10a.txt
10b.txtMenyalin direktori memerlukan opsi -r, singkatan dari recursive, karena cp harus menyalin seluruh isi direktori berulang ke tingkat terdalam. Tanpa opsi itu, cp menolak dan hanya memberi pesan bahwa direktori dilewati. Pada contoh berikut, seluruh direktori nilai disalin menjadi direktori cadangan utuh.
# menyalin direktori beserta seluruh isinya
cp -r praktik/nilai praktik/cadangan-nilai# memeriksa isi salinannya
ls -1 praktik/cadangan-nilai10a-cadangan.txt
10a.txt
10b.txtMemindahkan dan mengganti nama dengan mv#
Perintah mv memindahkan berkas atau direktori dari argumen pertama menuju argumen kedua, dan berkas pada posisi asal hilang setelah perintah dijalankan. Apabila argumen keduanya adalah nama berkas baru pada direktori yang sama, efeknya tidak lain adalah penggantian nama. Pada perpindahan di dalam satu sistem berkas yang sama, mv tidak menyalin datanya, melainkan hanya memperbarui catatan letak, sehingga prosesnya berlangsung sekejap walaupun berkasnya besar. Berbeda dengan cp, mv tidak memerlukan opsi apa pun untuk memindahkan direktori beserta isinya.
# mengganti nama berkas dengan mv
mv praktik/nilai/10b.txt praktik/nilai/kelas-10b.txt
ls -1 praktik/nilai10a-cadangan.txt
10a.txt
kelas-10b.txtArgumen kedua berupa direktori membuat mv memindahkan berkas ke dalamnya tanpa mengubah namanya. Contoh berikut memindahkan catatan piket ke dalam direktori catatan, sehingga isi praktik hanya berupa direktori. Perlu dicatat pula bahwa mv menimpa tujuan yang sudah ada tanpa peringatan, sama seperti cp, sehingga opsi -i tetap berguna apabila nama tujuan berisiko bertabrakan dengan berkas lain.
# memindahkan berkas ke dalam direktori catatan
mv praktik/piket.txt praktik/catatan/piket.txt
ls -1 praktikcadangan-nilai
catatan
nilaiMenghapus dengan rm dan rmdir#
Perintah rm menghapus berkas yang namanya disebut sebagai argumen, dan tidak ada tempat sampah pada lingkungan terminal, sehingga berkas yang terhapus tidak dapat dipulihkan lagi. Direktori praktik/nilai masih memuat salinan cadangan dari bagian sebelumnya, dan berkas itu dihapus terlebih dahulu sebagai contoh. Apabila konfirmasi diinginkan, opsi -i membuat rm bertanya untuk setiap berkas sebelum menghapusnya, sehingga cocok untuk keadaan yang berisiko.
# menghapus satu berkas
rm praktik/nilai/10a-cadangan.txt
ls -1 praktik/nilai10a.txt
kelas-10b.txtMenghapus direktori dapat dilakukan melalui dua jalur tergantung isinya. Perintah rmdir hanya menghapus direktori kosong, sehingga aman untuk struktur yang sudah ditinggalkan, sedangkan rm dengan opsi -r menghapus direktori beserta seluruh isinya sekaligus. rm tanpa opsi -r yang diarahkan ke direktori justru gagal dengan pesan bahwa target adalah direktori, sehingga lapisan pengaman ini mengharuskan rmdir dan rm -r dibedakan dengan sadar. Contoh berikut membongkar tingkat semester-1 yang kosong, lalu menghapus direktori cadangan-nilai lengkap dengan isinya.
# rmdir hanya menghapus direktori kosong
rmdir praktik/catatan/2025/semester-1
rmdir praktik/catatan/2025
ls -R praktik/catatanpraktik/catatan:
piket.txt# menghapus direktori beserta seluruh isinya
rm -r praktik/cadangan-nilai
ls -1 praktikcatatan
nilaiWildcard dan penggunaannya dengan aman#
Wildcard adalah karakter pola yang diperluas shell menjadi daftar nama sebelum perintah dijalankan, dan proses perluasan ini disebut glob. Karakter * mewakili sembarang deret karakter, sedangkan ? mewakili tepat satu karakter. Sifat pentingnya adalah perluasan yang dikerjakan oleh shell, bukan oleh perintah yang menerima argumennya, sehingga ls, cp, maupun rm hanya melihat daftar nama biasa hasil perluasan tersebut.
# wildcard * mewakili sembarang deret karakter
ls -1 praktik/nilai/*.txtpraktik/nilai/10a.txt
praktik/nilai/kelas-10b.txt# wildcard ? mewakili tepat satu karakter
ls -1 praktik/nilai/1??.txtpraktik/nilai/10a.txtPola 1??.txt hanya menemukan 10a.txt karena kelas-10b.txt tidak diawali angka satu. Ada satu karakter pola lagi yang sering berguna, yaitu kurung siku seperti [ab] yang mewakili tepat satu karakter di antara pilihan yang dituliskan. Karakter-karakter pola tersebut dapat digabungkan pada perintah apa pun yang menerima nama berkas, termasuk cp, mv, dan perintah penghapusan. Karena itu, pola selalu diuji terlebih dahulu dengan perintah yang aman seperti ls.
# menguji pola dengan ls terlebih dahulu
ls -1 praktik/nilai/10*.txt
# pola sudah sesuai harapan, barulah berkas dihapus
rm praktik/nilai/10*.txt
ls -1 praktik/nilaipraktik/nilai/10a.txt
kelas-10b.txtKesalahan umum#
Kesalahan yang paling sering terjadi pada operasi berkas adalah menyalin direktori tanpa opsi -r. Perintahnya berjalan sebagian, lalu berhenti dengan pesan error, sehingga hasil yang tersisa bisa keliru dianggap lengkap. Pesan errornya menyebut direktori yang dilewati, dan perbaikannya hanya berupa penambahan opsi yang sama seperti contoh berikut.
# menyalin direktori tanpa opsi -r
cp praktik/nilai praktik/nilai-salincp: -r not specified; omitting directory 'praktik/nilai'Kesalahan kedua adalah membuat direktori bertingkat tanpa opsi -p, yang gagal dengan pesan No such file or directory apabila induknya belum ada. Kesalahan ketiga berasal dari wildcard pada rm yang diperluas di direktori yang keliru, misalnya karena posisi tidak diperiksa dengan pwd terlebih dahulu. rm yang diarahkan langsung ke direktori tanpa opsi -r pun ikut gagal, dan pesannya menunjukkan bahwa target adalah direktori, bukan berkas biasa. Kebiasaan yang menahan keempat kesalahan itu sama, yaitu memeriksa posisi dan daftar nama dengan ls sebelum perintah yang mengubah berkas dijalankan, serta menyebut opsi -p atau -r sejak awal ketika target berupa direktori.
Ringkasan#
- mkdir membuat direktori, dengan opsi
-puntuk membuat seluruh induk sekaligus dan agar perintah dapat diulang tanpa error. - cp menyalin berkas dan memerlukan opsi
-runtuk direktori, sedangkan mv memindahkan sekaligus mengganti nama tanpa opsi tambahan. - rm menghapus berkas secara permanen, rmdir hanya menghapus direktori kosong, dan
rm -rmenghapus direktori beserta seluruh isinya. - Wildcard diperluas oleh shell menjadi daftar nama sebelum perintah dijalankan, sehingga pola diuji dahulu dengan ls sebelum digunakan pada rm.
Referensi#
- GNU Coreutils Manual — Free Software Foundation — dokumentasi resmi mkdir, cp, mv, rm, dan rmdir beserta perilaku opsinya.
- GNU Bash Reference Manual — Free Software Foundation — dokumentasi perluasan nama berkas yang menjelaskan glob dan karakter wildcard.
- The Linux Command Line — William Shotts — bab manipulasi berkas dan direktori yang membahas cp, mv, rm, serta wildcard dengan aman.