Cara memanipulasi nama file yang memiliki spasi dan karakter khusus di Linux

Cara memanipulasi nama file yang memiliki spasi dan karakter khusus di Linux

Kami menemukan file dan nama folder secara teratur. Di sebagian besar kasus file/nama folder terkait dengan konten file/folder dan dimulai dengan nomor dan karakter. Nama file alfa-numerik cukup umum dan sangat banyak digunakan, tetapi ini tidak terjadi ketika kita harus berurusan dengan nama file/folder yang memiliki karakter khusus di dalamnya.

Catatan: Kami dapat memiliki file jenis apa pun tetapi untuk kesederhanaan dan implementasi yang mudah kami akan berurusan dengan file teks (.txt), sepanjang artikel.

Contoh nama file yang paling umum adalah:

ABC.txt avi.txt debian.txt… 

Contoh nama file numerik adalah:

121.TXT 3221.txt 674659.txt… 

Contoh nama file alfa-numerik adalah:

EG84235.txt 3kf43nl2.txt 2323ddw.txt… 

Contoh nama file yang memiliki karakter khusus dan tidak terlalu umum:

#232.txt #bkf.TXT #BJSD3469.txt #121nkfd.txt -2232.txt -fbjdew.txt -gi32kj.txt --321.txt -BK34.txt… 

Salah satu pertanyaan yang paling jelas di sini adalah - siapa di bumi yang membuat/menangani nama file/folder memiliki hash (#), semi-kolon (;), tanda hubung (-) atau karakter khusus lainnya.

Saya setuju untuk Anda, bahwa nama file seperti itu tidak umum masih shell Anda tidak boleh pecah/menyerah ketika Anda harus berurusan dengan nama file semacam itu. Juga berbicara secara teknis setiap hal baik itu folder, driver atau apa pun diperlakukan sebagai file di linux.

Berurusan dengan file yang memiliki dasbor (-) di namanya

Buat file yang dimulai dengan tanda hubung (-), mengatakan -abx.txt.

$ touch -abc.txt 
Output sampel
Sentuh: Opsi Tidak Valid -'B' Coba 'Touch --help' untuk informasi lebih lanjut. 

Alasan kesalahan di atas, shell itu menginterpretasikan apa pun setelah berlari (-), Sebagai opsi, dan jelas tidak ada opsi seperti itu, karenanya adalah kesalahannya.

Untuk menyelesaikan kesalahan seperti itu, kita harus memberi tahu shell bash (yup ini dan sebagian besar contoh lain dalam artikel ini PESTA) tidak menafsirkan apa pun setelah karakter khusus (di sini dasbor), sebagai opsi.

Ada dua cara untuk menyelesaikan kesalahan ini sebagai:

$ touch --abc.txt [opsi #1] $ touch ./-abc.txt [opsi #2] 

Anda dapat memverifikasi file yang dibuat dengan cara di atas dengan menjalankan perintah ls atau ls -l untuk daftar panjang.

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 11:05 -ABC.txt 

Untuk mengedit file di atas yang dapat Anda lakukan:

$ nano --abc.txt atau $ nano ./-abc.txt 

Catatan: Anda dapat mengganti nano dengan editor pilihan Anda yang lain katakan vim sebagai:

$ vim --abc.txt atau $ vim ./-abc.txt 

Demikian pula untuk memindahkan file tersebut yang harus Anda lakukan:

$ MV --ABC.txt -A.txt atau $ mv --a.txt -abc.txt 

Dan untuk menghapus file ini, Anda harus melakukan:

$ rm --abc.txt atau $ rm ./-abc.txt 

Jika Anda memiliki banyak file di folder yang nama yang berisi dasbor, dan Anda ingin menghapus semuanya sekaligus, lakukan sebagai:

$ rm ./-* 
Perlu diperhatikan:

1. Aturan yang sama seperti yang dibahas di atas berikut untuk sejumlah HEGEN atas nama file dan kejadiannya. Yaitu., -A-B-C.txt, AB-C.txt, ABC-.txt, dll.

2. Aturan yang sama seperti yang dibahas di atas berikut untuk nama folder yang memiliki sejumlah hipen dan kejadiannya, kecuali fakta bahwa untuk menghapus folder yang harus Anda gunakan 'rm -rf' sebagai:

$ rm -rf --abc atau $ rm -rf ./-abc 

Berurusan dengan file yang memiliki hash (#) di namanya

Simbol # memiliki makna yang sangat berbeda dalam bash. Apapun setelah a # ditafsirkan sebagai komentar dan karenanya diabaikan oleh bash.

Memahaminya menggunakan contoh:

Buat file #abc.txt.

$ touch #abc.txt 
Output sampel
Sentuh: Operan File Hilang Coba 'Sentuh --help' untuk informasi lebih lanjut. 

Alasan kesalahan di atas, Bash itu menafsirkan #abc.txt komentar dan karenanya mengabaikan. Jadi sentuhan perintah telah dilewati tanpa operan file, dan karenanya kesalahannya.

Untuk menyelesaikan kesalahan seperti itu, Anda dapat meminta Bash untuk tidak menafsirkan # sebagai komentar.

$ touch ./#ABC.txt atau $ touch '#abc.txt' 

dan verifikasi file yang baru saja dibuat sebagai:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 12:14 #abc.txt 

Sekarang buat file yang berisi nama yang berisi # di mana saja kecuali saat mengemis.

$ touch ./a#bc.txt $ touch ./ABC#.txt atau $ touch 'a#bc.txt '$ touch' ABC#.txt' 

Berlari 'ls -l'Untuk memverifikasinya:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 12:16 a#bc.txt -RW-R-R-- 1 AVI AVI 0 Jun 8 12:16 ABC#.txt 

Apa yang terjadi saat Anda membuat dua file (katakanlah A Dan #bc) sekaligus:

$ touch a.txt #bc.txt 

Verifikasi file yang baru saja dibuat:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 12:18 A.txt 

Jelas dari contoh di atas hanya file yang dibuat 'A'dan file'#bc'telah diabaikan. Untuk menjalankan situasi di atas dengan sukses yang bisa kita lakukan,

$ touch a.txt ./#bc.txt atau $ touch a.txt '#BC.txt' 

dan verifikasi sebagai:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 12:20 A.txt -RW-R-R-- 1 AVI AVI 0 Jun 8 12:20 #bc.txt 

Anda dapat memindahkan file sebagai:

$ MV ./#bc.txt ./#CD.txt atau $ mv '#bc.txt "#cd.txt' 

Salin sebagai:

$ cp ./#CD.txt ./#de.txt atau $ cp '#cd.txt "#de.txt' 

Anda dapat mengeditnya sebagai menggunakan editor pilihan Anda sebagai:

$ vi ./#CD.txt atau $ vi '#cd.txt' 
$ nano ./#CD.txt atau $ nano '#cd.txt' 

Dan hapus sebagai:

$ rm ./#bc.txt atau $ rm '#bc.txt' 

Untuk menghapus semua file yang memiliki hash (#) Dalam nama file, Anda dapat menggunakan:

 # rm ./#* 

Berurusan dengan file yang memiliki titik koma (;) dalam namanya

Jika Anda tidak sadar, titik koma bertindak sebagai pemisah perintah dalam bash dan mungkin shell lainnya juga. Titik koma memungkinkan Anda menjalankan beberapa perintah dalam sekali jalan dan bertindak sebagai pemisah. Pernahkah Anda berurusan dengan nama file apa pun yang memiliki titik koma di dalamnya? Jika tidak di sini Anda akan melakukannya.

Buat file yang memiliki semi-kolon di dalamnya.

$ touch; ABC.txt 
Output sampel
Sentuh: Operan File Hilang Coba 'Sentuh --help' untuk informasi lebih lanjut. Bash: ABC.txt: perintah tidak ditemukan 

Alasan kesalahan di atas, bahwa saat Anda menjalankan perintah Bash perintah di atas menyentuh Sebagai perintah tetapi tidak dapat menemukan operan file apa pun sebelum titik koma dan karenanya melaporkan kesalahan. Itu juga melaporkan kesalahan lain bahwa 'ABC.txt'Perintah tidak ditemukan, hanya karena setelah semikolon Bash mengharapkan perintah lain dan'ABC.txt', bukan perintah.

Untuk menyelesaikan kesalahan seperti itu, beri tahu Bash untuk tidak menafsirkan titik koma sebagai pemisah perintah, sebagai:

$ touch ./'; ABC.txt 'atau $ touch'; ABC.txt' 

Catatan: Kami telah melampirkan nama file dengan penawaran tunggal ". Itu memberitahu Bash itu ; adalah bagian dari nama file dan bukan pemisah perintah.

Sisa aksi (yaitu., Salin, Pindahkan, Hapus) Pada file dan folder yang memiliki titik koma atas namanya dapat dilakukan dengan lurus ke depan dengan melampirkan nama dalam kutipan tunggal.

Berurusan dengan karakter khusus lainnya dalam nama file/folder

Tanda plus (+) dalam nama file

Tidak membutuhkan sesuatu yang ekstra, lakukan saja dengan cara normal, sebagai nama file sederhana seperti yang ditunjukkan di bawah ini.

$ Touch +12.txt 

Dollar Sign ($) dalam nama file

Anda harus memasukkan nama file dalam kutipan tunggal, seperti yang kami lakukan dalam kasus titik koma. Sisa barangnya lurus ke depan…

$ touch '$ 12.txt' 

Persen (%) dalam nama file

Anda tidak perlu melakukan sesuatu yang berbeda, memperlakukannya sebagai file normal.

$ touch %12.txt 

Asterisk (*) dalam nama file

Memiliki tanda bintang dalam nama file tidak mengubah apa pun dan Anda dapat terus menggunakannya sebagai file normal.

$ touch *12.txt 

Catatan: Ketika Anda harus menghapus file yang dimulai dengan *, Jangan pernah menggunakan perintah berikut untuk menghapus file tersebut.

$ rm * atau $ rm -rf * 

Alih -alih gunakan,

$ rm ./*.txt 

Tanda seru (!) dalam nama file

Cukup lampirkan nama file dalam kutipan tunggal dan sisanya sama.

$ touch '!12.txt' 

AT Sign (@) di nama file

Tidak ada tambahan, perlakukan nama file yang memiliki tanda sebagai file nonrmal.

$ touch '@12.txt' 

^ Dalam nama file

Tidak ada perhatian ekstra yang dibutuhkan. Gunakan file yang memiliki ^ di nama file sebagai file normal.

$ touch ^12.txt 

Ampersand (&) dalam nama file

Nama file harus dilampirkan dalam kutipan tunggal dan Anda siap untuk pergi.

$ touch '& 12.txt' 

Tanda kurung () di nama file

Jika nama file memiliki tanda kurung, Anda harus melampirkan nama file dengan satu kutipan.

$ touch '(12.txt)' 

Kawat gigi di nama file

Tidak ada perawatan ekstra yang dibutuhkan. Perlakukan saja sebagai file lain.

$ touch 12.txt 

Chevron di nama file

Nama file yang memiliki chevron harus terlampir dalam kutipan tunggal.

$ touch '' 

Braket persegi [] di nama file

Perlakukan nama file yang memiliki tanda kurung persegi sebagai file normal dan Anda tidak perlu merawatnya secara ekstra.

$ touch [12.txt] 

Di bawah skor (_) dalam nama file

Mereka sangat umum dan tidak memerlukan sesuatu yang ekstra. Lakukan saja apa yang akan Anda lakukan dengan file normal.

$ Touch _12.txt 

Equal-to (=) dalam nama file

Memiliki tanda yang setara tidak mengubah apapun, Anda dapat menggunakannya sebagai file normal.

$ touch = 12.txt 

Berurusan dengan Back Slash (\)

Backslash memberitahu Shell untuk mengabaikan karakter berikutnya. Anda harus memasukkan nama file dalam kutipan tunggal, seperti yang kami lakukan dalam kasus titik koma. Sisa barangnya lurus ke depan.

$ touch '.txt' 

Kasus Khusus Slash Forward

Anda tidak dapat membuat file yang termasuk namanya termasuk Slash Maju (/), Sampai sistem file Anda memiliki bug. Tidak ada cara untuk melarikan diri dari slash ke depan.

Jadi jika Anda dapat membuat file seperti '/12.txt' atau 'b/c.txt' maka sistem file Anda memiliki bug atau Anda memiliki dukungan unicode, yang memungkinkan Anda membuat file dengan slash maju. Dalam hal ini slash maju bukanlah miring ke depan yang nyata tetapi karakter unicode yang terlihat seperti slash maju.

Tanda tanya (?) dalam nama file

Sekali lagi, contoh di mana Anda tidak perlu melakukan upaya khusus. Nama file yang memiliki tanda tanya dapat diperlakukan dengan cara yang paling umum.

$ touch ?12.txt 

DOT Mark (.) dalam nama file

File yang dimulai dengan DOT (.) sangat istimewa di Linux dan disebut file dot. Mereka adalah file tersembunyi secara umum merupakan file konfigurasi atau sistem. Anda harus menggunakan sakelar '-A' atau '-A' dengan perintah ls Untuk melihat file seperti itu.

Membuat, mengedit, mengganti nama dan menghapus file semacam itu langsung.

$ touch .12.txt 

Catatan: Di linux Anda mungkin memiliki titik sebanyak mungkin (.) seperti yang Anda butuhkan dalam nama file. Tidak seperti titik -titik sistem lainnya dalam nama file tidak berarti memisahkan nama dan ekstensi. Anda dapat membuat file yang memiliki beberapa titik sebagai:

$ touch 1.2.3.4.5.6.7.8.9.10.txt 

dan periksa sebagai:

$ ls -l total 0 -rw-r-r-- 1 avi avi 0 Jun 8 14:32 1.2.3.4.5.6.7.8.9.10.txt 

Koma (,) dalam nama file

Anda dapat memiliki koma dalam nama file, sebanyak yang Anda inginkan dan Anda tidak memerlukan sesuatu yang ekstra. Lakukan saja dengan cara normal, sebagai nama file sederhana.

$ touch, 12.txt atau $ touch, 12,.txt 

Colon (:) dalam nama file

Anda dapat memiliki usus besar dalam nama file, sebanyak yang Anda inginkan dan Anda tidak memerlukan sesuatu yang ekstra. Lakukan saja dengan cara normal, sebagai nama file sederhana.

$ touch: 12.txt atau $ touch: 12:.txt 

Memiliki kutipan (tunggal dan ganda) dalam nama file

Untuk memiliki kutipan dalam nama file, kita harus menggunakan aturan pertukaran. SAYA.E, jika Anda perlu memiliki penawaran tunggal di nama file, lampirkan nama file dengan kutipan ganda dan jika Anda perlu memiliki penawaran ganda dalam nama file, lampirkannya dengan penawaran tunggal.

$ touch "15 '.txt "dan $ touch '15".txt' 

Tilde (~) dalam nama file

Beberapa editor di Linux suka Emacs Buat file cadangan file yang sedang diedit. File cadangan memiliki nama file asli ditambah tilde di akhir nama file. Anda dapat memiliki file yang nama termasuk Tilde, di lokasi mana pun hanya sebagai:

$ touch ~ 1a.txt atau $ touch 2b ~.txt 

Ruang putih dalam nama file

Buat file nama yang memiliki ruang antara karakter/kata, katakan "hai nama saya avishek.txt".

Bukan ide yang baik untuk memiliki nama file dengan spasi dan jika Anda harus nama yang dapat dibaca, Anda harus menggunakan, menggarisbawahi atau berlari. Namun jika Anda harus membuat file seperti itu, Anda harus menggunakan slash mundur yang mengabaikan karakter berikutnya. Untuk membuat file di atas, kami harus melakukannya dengan cara ini…

$ touch hai \ my \ name \ is \ avishek.txt hai nama saya avishek.txt 

Saya telah mencoba meliput semua skenario yang mungkin Anda temui. Sebagian besar implementasi di atas secara eksplisit untuk shell bash dan mungkin tidak berfungsi di shell lain.

Jika Anda merasa bahwa saya melewatkan sesuatu (itu adalah sifat yang sangat umum dan manusia), Anda dapat memasukkan saran Anda dalam komentar di bawah. Tetap terhubung, terus berkomentar. Tetap disini dan terhubung! Suka dan bagikan kami dan bantu kami menyebar!