GNU/Linux >> Belajar Linux >  >> Linux

Cara Memanipulasi Nama File yang Memiliki Spasi dan Karakter Khusus di Linux

Kami menemukan nama file dan folder dengan sangat teratur. Dalam sebagian besar kasus, nama file/folder terkait dengan konten file/folder dan dimulai dengan angka dan karakter. Nama file Alpha-Numeric 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 :Kita dapat memiliki file jenis apa pun tetapi untuk kesederhanaan dan implementasi yang mudah, kita akan berurusan dengan file Teks (.txt ), di seluruh 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 paling jelas di sini adalah – siapa yang membuat/menangani nama file/folder yang memiliki Hash (#) , (;) semi titik koma , tanda hubung (-) atau karakter khusus lainnya.

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

Menangani file yang namanya tanda hubung (-)

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

$ touch -abc.txt
Contoh Keluaran
touch: invalid option -- 'b'
Try 'touch --help' for more information.

Alasan kesalahan di atas, shell itu menafsirkan apa pun setelah tanda hubung (-) , sebagai opsi, dan jelas tidak ada opsi seperti itu, karena itulah kesalahannya.

Untuk mengatasi kesalahan seperti itu, kita harus memberi tahu shell Bash (ya ini dan sebagian besar contoh lain dalam artikel ini adalah untuk BASH ) untuk tidak menafsirkan apa pun setelah karakter khusus (di sini tanda hubung), sebagai opsi.

Ada dua cara untuk mengatasi kesalahan ini sebagai:

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

Anda dapat memverifikasi file yang dibuat dengan kedua 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, Anda dapat melakukan:

$ nano -- -abc.txt 
or 
$ nano ./-abc.txt 

Catatan :Anda dapat mengganti nano dengan editor lain pilihan Anda, ucapkan vim sebagai:

$ vim -- -abc.txt 
or 
$ vim ./-abc.txt 

Demikian pula untuk memindahkan file tersebut yang harus Anda lakukan:

$ mv -- -abc.txt -a.txt
or
$ mv -- -a.txt -abc.txt

dan untuk Menghapus file ini, Anda harus melakukan:

$ rm -- -abc.txt
or
$ rm ./-abc.txt 

Jika Anda memiliki banyak file dalam folder yang namanya berisi tanda hubung, dan Anda ingin menghapus semuanya sekaligus, lakukan sebagai:

$ rm ./-*
Penting untuk Diperhatikan:

1. Aturan yang sama seperti yang dibahas di atas mengikuti sejumlah hypen dalam nama file dan kemunculannya. Yaitu, -a-b-c.txt , ab-c.txt , abc-.txt , dll.

2. Aturan yang sama seperti yang dibahas di atas mengikuti nama folder yang memiliki sejumlah tanda hubung dan kemunculannya, kecuali fakta bahwa untuk menghapus folder Anda harus menggunakan 'rm -rf ' sebagai:

$ rm -rf -- -abc
or
$ rm -rf ./-abc

Menangani file yang namanya HASH (#)

Simbol # memiliki arti yang sangat berbeda dalam BASH. Apa pun setelah # ditafsirkan sebagai komentar dan karenanya diabaikan oleh BASH.

Pahami menggunakan contoh:

buat file #abc.txt .

$ touch #abc.txt
Contoh Keluaran
touch: missing file operand
Try 'touch --help' for more information.

Alasan kesalahan di atas, bahwa Bash menafsirkan #abc.txt komentar dan karenanya mengabaikan. Jadi perintah sentuh telah diteruskan tanpa file Operand, dan karenanya adalah kesalahannya.

Untuk mengatasi kesalahan tersebut, Anda dapat meminta BASH untuk tidak menafsirkan # sebagai komentar.

$ touch ./#abc.txt
or
$ 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 namanya berisi # di mana saja kecuali saat mengemis.

$ touch ./a#bc.txt
$ touch ./abc#.txt

or
$ touch 'a#bc.txt'
$ touch 'abc#.txt'

Jalankan ‘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 (misalnya 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 itu hanya membuat file 'a ‘ dan file ‘#bc ' telah diabaikan. Untuk menjalankan situasi di atas dengan sukses dapat kita lakukan,

$ touch a.txt ./#bc.txt
or
$ 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
or
$ mv '#bc.txt' '#cd.txt'

Salin sebagai:

$ cp ./#cd.txt ./#de.txt
or
$ cp '#cd.txt' '#de.txt'

Anda dapat mengeditnya menggunakan editor pilihan Anda sebagai:

$ vi ./#cd.txt
or
$ vi '#cd.txt'
$ nano ./#cd.txt
or
$ nano '#cd.txt'

Dan Hapus sebagai:

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

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

 # rm ./#*

Menangani file yang namanya titik koma (;)

Jika Anda tidak mengetahuinya, titik koma bertindak sebagai pemisah perintah di BASH dan mungkin juga shell lainnya. Titik koma memungkinkan Anda menjalankan beberapa perintah sekaligus dan bertindak sebagai pemisah. Pernahkah Anda berurusan dengan nama file yang memiliki titik koma di dalamnya? Jika tidak di sini Anda akan melakukannya.

Buat file yang memiliki titik koma di dalamnya.

$ touch ;abc.txt
Contoh Keluaran
touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found

Alasan kesalahan di atas, bahwa ketika Anda menjalankan perintah di atas, BASH menafsirkan sentuh 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 titik koma BASH mengharapkan perintah lain dan 'abc.txt ', bukan perintah.

Untuk mengatasi kesalahan tersebut, beri tahu BASH untuk tidak menafsirkan titik koma sebagai pemisah perintah, seperti:

$ touch ./';abc.txt'
or
$ touch ';abc.txt'

Catatan :Kami telah menyertakan nama file dengan tanda kutip tunggal '' . Ini memberitahu BASH bahwa ; adalah bagian dari nama file dan bukan pemisah perintah.

Tindakan lainnya (yaitu menyalin, memindahkan, menghapus) pada file dan folder yang namanya titik koma dapat dilakukan langsung dengan menyertakan nama dalam tanda kutip tunggal.

Berurusan dengan karakter khusus lainnya dalam nama file/folder

Tanda Tambah (+) di nama file

Tidak perlu tambahan apa-apa, lakukan saja seperti biasa, nama file sederhana seperti gambar di bawah ini.

$ touch +12.txt 

Tanda dolar ($) dalam nama file

Anda harus menyertakan nama file dalam tanda kutip tunggal, seperti yang kami lakukan dalam kasus titik koma. Sisanya lurus ke depan..

$ touch '$12.txt'

Persen (%) dalam nama file

Anda tidak perlu melakukan sesuatu yang berbeda, perlakukan itu sebagai file biasa.

$ touch %12.txt

Asterisk (*) pada nama file

Memiliki Asterisk di nama file tidak mengubah apa pun dan Anda dapat terus menggunakannya sebagai file biasa.

$ touch *12.txt

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

$ rm *
or
$ rm -rf *

Sebagai gantinya gunakan,

$ rm ./*.txt

Tanda seru (!) pada nama file

Cukup Lampirkan nama file dalam tanda kutip tunggal dan sisanya sama.

$ touch '!12.txt'

Pada Masuk (@) dalam nama file

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

$ touch '@12.txt'

^ dalam nama file

Tidak diperlukan perhatian ekstra. Gunakan file yang memiliki ^ dalam nama file sebagai file biasa.

$ touch ^12.txt

Ampersand (&) dalam nama file

Nama file harus diapit dalam tanda kutip tunggal dan Anda siap untuk pergi.

$ touch '&12.txt'

Kurung () dalam nama file

Jika nama file memiliki Tanda kurung, Anda harus menyertakan nama file dengan tanda kutip tunggal.

$ touch '(12.txt)'

Mengikat {} dalam nama file

Tidak perlu Perawatan Ekstra. Perlakukan saja sebagai file lain.

$ touch {12.txt}

Chevron <> dalam nama file

Nama file yang memiliki Chevron harus diapit dalam tanda kutip tunggal.

$ touch '<12.txt>'

Kurung Kotak [ ] dalam nama file

Perlakukan nama file yang memiliki Kurung Kotak sebagai file biasa dan Anda tidak perlu terlalu berhati-hati.

$ touch [12.txt]

Di bawah skor (_) dalam nama file

Mereka sangat umum dan tidak memerlukan tambahan apa pun. Lakukan saja apa yang akan Anda lakukan dengan file biasa.

$ touch _12.txt

sama dengan (=) dalam nama file

Memiliki tanda Sama dengan tidak mengubah apa pun, Anda dapat menggunakannya sebagai file biasa.

$ touch =12.txt

Menangani garis miring terbalik (\)

Backslash memberitahu shell untuk mengabaikan karakter berikutnya. Anda harus menyertakan nama file dalam tanda kutip tunggal, seperti yang kami lakukan dalam kasus titik koma. Sisanya lurus ke depan.

$ touch '.txt'

Kasus Khusus Forward Slash

Anda tidak dapat membuat file yang namanya menyertakan garis miring (/) , hingga sistem file Anda memiliki bug. Tidak ada cara untuk menghindari tebasan 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 garis miring. Dalam hal ini, garis miring ke depan bukanlah garis miring yang sebenarnya, melainkan karakter Unicode yang terlihat seperti garis miring.

Tanda Tanya (?) pada nama file

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

$ touch ?12.txt

Tanda Titik (.) pada nama file

File dimulai dengan titik (.) sangat istimewa di Linux dan disebut file titik. Mereka adalah file tersembunyi yang umumnya 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 sangat mudah.

$ touch .12.txt

Catatan :Di Linux Anda mungkin memiliki banyak titik (.) yang Anda butuhkan dalam nama file. Tidak seperti titik sistem lainnya dalam nama file tidak berarti memisahkan nama dan ekstensi. Anda dapat membuat file yang memiliki banyak 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 (,) pada nama file

Anda dapat memiliki koma dalam nama file, sebanyak yang Anda inginkan dan Anda tidak memerlukan tambahan apa pun. Lakukan saja dengan cara biasa, seperti nama file sederhana.

$ touch ,12.txt
or
$ touch ,12,.txt

Titik dua (:) pada nama file

Anda dapat memiliki titik dua dalam nama file, sebanyak yang Anda inginkan dan Anda tidak memerlukan tambahan apa pun. Lakukan saja dengan cara biasa, seperti nama file sederhana.

$ touch :12.txt
or
$ touch :12:.txt

Memiliki Kutipan (tunggal dan Ganda) dalam nama file

Untuk memiliki kutipan dalam nama file, kita harus menggunakan aturan pertukaran. Yaitu, jika Anda perlu memiliki tanda kutip tunggal dalam nama file, lampirkan nama file dengan tanda kutip ganda dan jika Anda perlu memiliki tanda kutip ganda dalam nama file, sertakan dengan tanda kutip tunggal.

$ touch "15'.txt"

and

$ touch '15”.txt'

Tilde (~) dalam nama file

Beberapa Editor di Linux seperti emacs buat file cadangan dari file yang sedang diedit. File cadangan memiliki nama file asli ditambah tilde di akhir nama file. Anda dapat memiliki file yang namanya menyertakan tilde, di lokasi mana pun hanya sebagai:

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

Ruang Putih dalam nama file

Buat file yang namanya memiliki spasi antara karakter/kata, katakan “hai nama saya avishek.txt ”.

Bukan ide yang baik untuk memiliki nama file dengan spasi dan jika Anda harus membedakan nama yang dapat dibaca, Anda harus menggunakan, garis bawah atau tanda hubung. Namun jika Anda harus membuat file seperti itu, Anda harus menggunakan garis miring terbalik yang mengabaikan karakter berikutnya. Untuk membuat file di atas kita harus melakukannya dengan cara ini..

$ touch hi\ my\ name\ is\ avishek.txt

hi my name is avishek.txt

Saya telah mencoba mencakup semua skenario yang mungkin Anda temui. Sebagian besar implementasi di atas secara eksplisit untuk BASH Shell dan mungkin tidak berfungsi di Shell lain.

Jika Anda merasa bahwa saya melewatkan sesuatu (yang sangat umum dan sifat manusia), Anda dapat memasukkan saran Anda di komentar di bawah. Tetap Terhubung, Tetap Berkomentar. Tetap Terhubung dan terhubung! Sukai dan bagikan kami dan bantu kami menyebar!


Linux
  1. Cara Mengarahkan Output ke File dan Stdout di Linux

  2. Apa itu NFS dan bagaimana cara menginstalnya di Linux

  3. Bagaimana Mencegah Modifikasi File/Direktori, Penghapusan dan Penggantian Nama di Linux?

  1. Cara mengekstrak file .gz dan .tar.gz di Linux

  2. Cara memasang dan memasang sistem file di Linux

  3. Bagaimana cara mengetik karakter khusus di Linux?

  1. Cara Kompres dan Dekompresi File .bz2 di Linux

  2. Perintah File Linux:Apa Fungsinya dan Bagaimana Cara Menggunakannya

  3. Bagaimana saya melihat du dalam GB bukannya MB di linux?