Seperti kebanyakan sistem operasi, Linux mendukung nama file dengan spasi di dalamnya. Namun menggunakan nama file ini pada baris perintah tidak selalu mudah. Berikut beberapa cara untuk menangani nama file yang mengandung spasi.
Bagaimana Cara Kerja Nama File Linux?
Semua yang disimpan di hard drive komputer Anda harus memiliki nama. Tanpa nama, tidak ada file yang ada. Semua aplikasi dan daemon yang diluncurkan saat komputer Anda boot, dan semua perangkat lunak yang Anda gunakan, harus diidentifikasi dan disimpan dalam sistem file. Identifikasi itu adalah nama file.`
Hal yang sama berlaku untuk file yang Anda buat atau instal. Semua dokumen, gambar, dan musik Anda memerlukan nama file. Tanpa nama file, aset digital Anda tidak akan ada. Karena nama file sangat penting, Linux berusaha keras untuk menerapkan aturan sesedikit mungkin tentang komposisinya.
Di Linux, nama file dapat berisi karakter apa pun selain garis miring “/” dan karakter nol, 0x00. Karakter null digunakan untuk menandai akhir dari sebuah string, sehingga tidak dapat ada dalam string itu sendiri, atau Linux akan memotong nama file pada posisi karakter null. Garis miring “/” digunakan sebagai pemisah dalam jalur direktori.
Nama file peka huruf besar-kecil, dan panjangnya bisa mencapai 255 byte, termasuk karakter nol. Panjang jalur direktori bisa mencapai 4096 byte, termasuk karakter null. Perhatikan bahwa ini adalah panjangnya dalam byte, yang mungkin tidak langsung disamakan dengan karakter. Karakter Unicode 16-bit, misalnya, masing-masing membutuhkan dua byte. Penggemar komputasi retro dan mereka yang memiliki ingatan panjang akan mengetahui bahwa pada masa-masa awal komputer pribadi, Sistem Operasi Disk Microsoft, DOS, tidak peka huruf besar-kecil dan memiliki batasan nama file terdiri dari delapan karakter, ditambah ekstensi tiga karakter.
Anda harus sangat bijaksana dan terkadang kreatif saat memberi nama file. Sebagai perbandingan, kebebasan yang kita miliki saat ini berarti kita dapat memberi nama file apa pun yang kita inginkan, tanpa memikirkan apa pun selain deskripsi yang kita buat untuk file tersebut.
Tetapi dengan nama file, yang paling sering membuat kita tersandung bukanlah karakter yang kita gunakan. ketik, itu adalah spasi di antara keduanya.
Mengapa Spasi di Nama File Linux Menyakitkan
Shell seperti Bash akan menafsirkan rangkaian kata yang dipisahkan spasi sebagai argumen perintah individual, bukan argumen tunggal. Berikut contohnya, menggunakan sentuhan untuk membuat file baru bernama “my.txt.”
touch my.txt ls
Seperti yang bisa kita lihat, ls menunjukkan kepada kita bahwa ada tiga file yang dibuat, satu bernama “saya”, yang lain disebut “baru “, dan satu lagi yang disebut”file.txt.”
Perhatikan bahwa sentuhan tidak mengeluh atau menimbulkan kesalahan. Ia melakukan apa yang menurutnya kita minta. Jadi secara diam-diam ia mengembalikan kita ke baris perintah. Jika kita tidak termotivasi untuk memeriksa, kita tidak akan tahu segala sesuatunya tidak berjalan sesuai rencana.
Untuk membuat file yang kita inginkan, kita harus mengutip atau melarikan diri.
Cara Mengutip dan Melarikan Diri dari Spasi
Jika kita mengutip keseluruhan nama file, sentuh tahu itu perlu memperlakukan teks yang dikutip sebagai argumen tunggal.
touch 'file baru saya.txt' ls
Kali ini kita mendapatkan satu file yang kita harapkan.
Kita bisa mendapatkan hasil yang sama jika kita menggunakan karakter garis miring terbalik “” untuk melarikan diri dari ruang. Dengan “menghilangkan” spasi, spasi tersebut tidak diperlakukan sebagai karakter khusus — yaitu, pemisah argumen — spasi tersebut dianggap sebagai spasi biasa.
touch my second new file.txt ls
Itu berfungsi, tetapi keluar dari spasi membuat pengetikan nama file menjadi lebih lambat dan rawan kesalahan. Segalanya bisa menjadi sangat buruk jika Anda memiliki nama direktori dengan spasi di dalamnya juga.
cp dir one/my text file.txt dir two/my text file.bak ls
Perintah itu menyalin satu file teks dari direktori bernama “dir one ” ke direktori bernama “dir two”, dan menyimpan salinannya sebagai file BAK. Dan ini adalah contoh yang cukup sederhana.
Cara Memperbaiki Masalah Ruang di Sumbernya
Jika itu adalah file Anda sendiri, Anda dapat mengambil keputusan kebijakan untuk tidak pernah menggunakan spasi, dan membuat (atau mengganti nama secara massal) nama file seperti ini.
mynewtextfile.txt
Harus diakui, itu solusi yang kuat tetapi tetap saja jelek. Ada opsi yang lebih baik, seperti menggunakan tanda hubung “-” atau garis bawah “_” untuk memisahkan kata-kata Anda.
my-new-text-file.txt my_new_text_file.txt
Keduanya akan menghindari masalah, dan dapat dibaca. Jika Anda tidak ingin menambahkan karakter tambahan ke nama file Anda, Anda dapat menggunakan CamelCase untuk membuat nama file Anda dapat dibaca, seperti ini:
MyNewTextFile.txt
Perluasan Tab Membuat Menangani Spasi Menjadi Mudah
Tentu saja, mengadopsi konvensi penamaan dan mematuhinya hanya akan membantu ketika Anda berurusan dengan file Anda sendiri. File yang berasal dari tempat lain kemungkinan besar tidak mengikuti konvensi penamaan yang Anda adopsi.
Anda dapat menggunakan perluasan tab untuk membantu Anda “mengisi” nama file secara akurat untuk kami. Katakanlah kita ingin menghapus file BAK yang kita buat di “dir dua”, menggunakan rm.
Kita mulai dengan mengetik “rm dir” karena kita menggunakan perintah rm dan kita tahu nama direktori dimulai dengan “dir.”
rm dir
Menekan tombol “Tab” menyebabkan Bash memindai kecocokan di direktori saat ini.
Ada dua direktori yang dimulai dengan “dir”, dan dalam kedua kasus, karakter berikutnya adalah spasi. Jadi Bash menambahkan karakter garis miring terbalik “” dan spasi. Bash kemudian menunggu kita memberikan karakter selanjutnya. Dibutuhkan karakter berikutnya untuk membedakan antara dua kemungkinan kecocokan dalam direktori ini.
Kami akan mengetikkan “t”, untuk “dua”, lalu tekan “Tab” sekali lagi.
Bash melengkapi nama direktori untuk kami dan menunggu kami untuk mengetikkan awal nama file.
Kami hanya memiliki satu file di direktori ini, jadi mengetikkan huruf pertama dari nama file, “m”, sudah cukup untuk memberi tahu Bash file mana yang ingin kami gunakan. Mengetik “m” dan menekan “Tab” akan melengkapi nama file untuk kami, dan “Enter” menjalankan seluruh perintah. Perluasan
Tab memudahkan Anda memastikan Anda mendapatkan nama file dengan benar, dan juga mempercepat navigasi dan pengetikan pada baris perintah secara umum .
Cara Menggunakan Nama File Dengan Spasi di Skrip Bash
Tidak mengherankan jika skrip memiliki masalah yang sama persis dengan spasi pada nama file seperti yang terjadi pada baris perintah. Jika Anda meneruskan nama file sebagai variabel, pastikan Anda mengutip nama variabel.
Skrip kecil ini memeriksa direktori saat ini untuk mencari file yang cocok dengan pola file “*.txt”, dan menyimpannya dalam variabel bernama file_list. Perulangan for digunakan untuk melakukan tindakan sederhana pada masing-masing file.
#!/bin/bash file_list=*.txt for file in $file_list do ls -hl $file done
Salin teks ini ke editor dan simpan ke file bernama “files.sh .” Kemudian gunakan perintah chmod untuk membuatnya dapat dieksekusi.
chmod +x files.sh
Kami memiliki beberapa file di direktori ini. Satu memiliki nama file yang sederhana, dan dua lainnya menggunakan garis bawah “_” atau tanda hubung “-” sebagai ganti spasi. Inilah yang kita lihat saat kita menjalankan skrip.
./files.sh
Sepertinya berfungsi dengan baik. Tapi mari kita ubah file di direktori untuk file yang mengandung spasi di namanya.
./files.sh
Setiap kata di setiap nama file ditangani seolah-olah itu adalah nama file tersendiri, sehingga skrip gagal. Namun yang perlu kita lakukan untuk membuat skrip menangani spasi pada nama file adalah dengan mengutip variabel $file di dalam loop for.
#!/bin/bash file_list=*.txt for file in $file_list do ls -hl "$file" done
Perhatikan bahwa tanda dolar “$” ada di dalam tanda kutip. Kami membuat perubahan itu dan menyimpannya ke file skrip “files.sh”. Kali ini, nama file ditangani dengan benar.
./files.sh
Menghindari spasi pada nama file Anda sendiri hanya akan membawa Anda sejauh ini. Tidak dapat dihindari bahwa Anda akan menemukan file dari sumber lain dengan nama yang mengandung spasi. Untungnya, jika Anda perlu menangani file-file itu pada baris perintah atau skrip, ada cara mudah untuk melakukannya.