Jinsi ya Kudhibiti Majina ya Faili Kuwa na Nafasi na Herufi Maalum katika Linux


Tunakutana na faili na majina ya folda mara kwa mara. Katika visa vingi, jina la faili/folda linahusiana na yaliyomo kwenye faili/folda na huanza na nambari na wahusika. Jina la faili la Alpha-Numeric ni la kawaida sana na linatumika sana, lakini sivyo hivyo tunapolazimika kushughulika na jina la faili/folda ambalo lina herufi maalum ndani yake.

Kumbuka: Tunaweza kuwa na faili za aina yoyote lakini kwa urahisi na utekelezaji rahisi tutakuwa tunashughulikia faili ya Maandishi (.txt), katika makala yote.

Mfano wa majina ya faili ya kawaida ni:

abc.txt
avi.txt
debian.txt
...

Mfano wa majina ya faili za nambari ni:

121.txt
3221.txt
674659.txt
...

Mfano wa majina ya faili za Alpha-Numeric ni:

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

Mifano ya majina ya faili ambayo yana herufi maalum na si ya kawaida sana:

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

Mojawapo ya swali la wazi zaidi hapa ni - ni nani duniani kuunda/kushughulikia faili/folda jina kuwa na Hash (#), nusu koloni (;), a dashi (-) au herufi nyingine yoyote maalum.

Nakubali kwako, kwamba majina ya faili kama haya sio ya kawaida bado ganda lako halipaswi kuvunja/kukata tamaa wakati lazima ushughulikie majina yoyote ya faili kama hizo. Pia kuongea kitaalam kila kitu iwe folda, dereva au kitu kingine chochote kinachukuliwa kama faili kwenye Linux.

Kushughulika na faili ambayo ina dashi (-) kwa jina lake

Unda faili inayoanza na dashi (-), sema -abx.txt.

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

Sababu ya kosa hapo juu, kwamba ganda hutafsiri chochote baada ya dashi (-), kama chaguo, na ni wazi hakuna chaguo kama hilo, kwa hivyo ni kosa.

Ili kusuluhisha kosa kama hilo, lazima tuambie ganda la Bash (yup hii na mifano mingine mingi kwenye kifungu ni ya BASH) isitafsiri chochote baada ya herufi maalum (hapa dashi), kama chaguo.

Kuna njia mbili za kutatua kosa hili kama:

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

Unaweza kuthibitisha faili kwa hivyo iliyoundwa na njia zote mbili hapo juu kwa kuendesha amri ls au ls -l kwa uorodheshaji mrefu.

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 11:05 -abc.txt

Ili kuhariri faili iliyo hapo juu unaweza kufanya:

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

Kumbuka: Unaweza kubadilisha nano na mhariri mwingine wowote wa chaguo lako sema vim kama:

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

Vile vile kusonga faili kama hiyo lazima ufanye:

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

na kufuta faili hii, lazima ufanye:

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

Ikiwa una faili nyingi kwenye folda ambayo jina lake lina dashi, na unataka kufuta zote mara moja, fanya kama:

$ rm ./-*

1. Sheria sawa kama ilivyojadiliwa hapo juu ifuatavyo kwa idadi yoyote ya hypen kwa jina la faili na matukio yao. Viz., -a-b-c.txt, ab-c.txt, abc-.txt, nk.

2. Sheria ile ile kama ilivyojadiliwa hapo juu inafuata kwa jina la folda iliyo na idadi yoyote ya hypen na kutokea kwao, isipokuwa ukweli kwamba ili kufuta folda lazima utumie 'rm -rf' kama:

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

Kushughulika na faili zilizo na HASH (#) kwa jina

Alama # ina maana tofauti sana katika BASH. Chochote baada ya # kufasiriwa kama maoni na hivyo kupuuzwa na BASH.

unda faili #abc.txt.

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

Sababu ya makosa hapo juu, kwamba Bash anatafsiri #abc.txt maoni na hivyo kupuuza. Kwa hivyo mguso wa amri umepitishwa bila Operand ya faili yoyote, na kwa hivyo ni kosa.

Ili kutatua hitilafu kama hiyo, unaweza kuuliza BASH isitafsiri # kama maoni.

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

na uthibitishe faili iliyoundwa kama:

$ ls -l

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

Sasa unda faili ambayo jina lake lina # popote isipokuwa kwa ombaomba.

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

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

Endesha 'ls -l' ili kuithibitisha:

$ 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

Ni nini hufanyika unapounda faili mbili (sema a na #bc) mara moja:

$ touch a.txt #bc.txt

Thibitisha faili iliyoundwa hivi punde:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 12:18 a.txt

Ni wazi kutoka kwa mfano hapo juu iliunda faili tu 'a' na faili '#bc' imepuuzwa. Ili kutekeleza hali iliyo hapo juu kwa mafanikio tunaweza kufanya,

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

na uithibitishe kama:

$ 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

Unaweza kuhamisha faili kama:

$ mv ./#bc.txt ./#cd.txt
or
$ mv '#bc.txt' '#cd.txt'

Nakili kama:

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

Unaweza kuihariri kwa kutumia chaguo lako la kihariri kama:

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

Na uifute kama:

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

Ili kufuta faili zote ambazo zina hash (#) kwenye jina la faili, unaweza kutumia:

 # rm ./#*

Kushughulika na faili zilizo na semicolon (;) kwa jina lake

Ikiwa haujui, semicolon hufanya kama kitenganishi cha amri katika BASH na labda ganda lingine pia. Semicolon hukuruhusu kutekeleza amri kadhaa kwa kwenda moja na hufanya kama kitenganishi. Umewahi kushughulika na jina lolote la faili kuwa na semicolon ndani yake? Kama si hapa utakuwa.

Unda faili iliyo na nusu koloni ndani yake.

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

Sababu ya kosa hapo juu, kwamba unapoendesha amri hapo juu BASH kutafsiri touch kama amri lakini haikuweza kupata utendakazi wowote wa faili kabla ya semicolon na kwa hivyo inaripoti makosa. Pia inaripoti hitilafu nyingine ambayo amri ya 'abc.txt' haikupatikana, kwa sababu tu baada ya semicolon BASH ilikuwa ikitarajia amri nyingine na 'abc.txt', si amri.

Ili kusuluhisha kosa kama hilo, mwambie BASH asifasiri semicolon kama kitenganishi cha amri, kama:

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

Kumbuka: Tumeambatanisha jina la faili kwa nukuu moja . Inaambia BASH kwamba ; ni sehemu ya jina la faili na sio kitenganishi cha amri.

Kitendo kilichobaki (yaani, nakala, kusonga, kufuta) kwenye faili na folda iliyo na semicolon kwa jina lake inaweza kutekelezwa moja kwa moja kwa kuambatanisha jina katika nukuu moja.

Kushughulika na wahusika wengine maalum katika jina la faili/folda

Hauitaji chochote cha ziada, fanya tu kwa njia ya kawaida, kama jina rahisi la faili kama inavyoonyeshwa hapa chini.

$ touch +12.txt 

Lazima uambatishe jina la faili kwa nukuu moja, kama tulivyofanya katika kesi ya semicolon. Mambo mengine ni sawa mbele..

$ touch '$12.txt'

Huna haja ya kufanya chochote tofauti, ichukue kama faili ya kawaida.

$ touch %12.txt

Kuwa na kinyota katika jina la faili haibadilishi chochote na unaweza kuendelea kuitumia kama faili ya kawaida.

$ touch *12.txt

Kumbuka: Unapolazimika kufuta faili inayoanza na *, Kamwe usitumie amri zifuatazo kufuta faili kama hizo.

$ rm *
or
$ rm -rf *

Badala yake tumia,

$ rm ./*.txt

Ingiza tu jina la faili katika nukuu moja na mambo mengine ni sawa.

$ touch '!12.txt'

Hakuna cha ziada, chukulia jina la faili lililo na At Sign kama faili isiyo ya kawaida.

$ touch '@12.txt'

Hakuna tahadhari ya ziada inayohitajika. Tumia faili iliyo na ^ katika jina la faili kama faili ya kawaida.

$ touch ^12.txt

Jina la faili linapaswa kuambatanishwa katika nukuu moja na uko tayari kwenda.

$ touch '&12.txt'

Ikiwa jina la faili lina Mabano, unahitaji kuambatanisha jina la faili na nukuu moja.

$ touch '(12.txt)'

Hakuna Utunzaji wa Ziada unaohitajika. Ichukulie tu kama faili nyingine.

$ touch {12.txt}

Jina la faili lililo na Chevrons lazima liambatanishwe katika nukuu moja.

$ touch '<12.txt>'

Tibu jina la faili kuwa na Mabano ya Mraba kama faili za kawaida na hauitaji kuitunza zaidi.

$ touch [12.txt]

Wao ni wa kawaida sana na hauhitaji chochote cha ziada. Fanya tu kile ambacho ungefanya na faili ya kawaida.

$ touch _12.txt

Kuwa na saini ya Equal-to haibadilishi chochote, unaweza kuitumia kama faili ya kawaida.

$ touch =12.txt

Backslash inaambia ganda kupuuza herufi inayofuata. Lazima uambatishe jina la faili kwa nukuu moja, kama tulivyofanya katika kesi ya semicolon. Mambo mengine ni sawa mbele.

$ touch '.txt'

Huwezi kuunda faili ambayo jina lake linajumuisha kufyeka mbele (/), hadi mfumo wako wa faili uwe na hitilafu. Hakuna njia ya kukwepa kufyeka mbele.

Kwa hivyo ikiwa unaweza kuunda faili kama vile ‘/12.txt’ au ‘b/c.txt’ basi huenda Mfumo wako wa Faili una hitilafu au una usaidizi wa Unicode, ambayo hukuruhusu kuunda faili kwa kufyeka mbele. Katika kesi hii kufyeka mbele sio kufyeka halisi mbele bali ni herufi ya Unicode inayofanana na kufyeka mbele.

Tena, mfano ambapo huna haja ya kuweka jaribio lolote maalum. Jina la faili lenye alama ya Swali linaweza kutibiwa kwa njia ya jumla zaidi.

$ touch ?12.txt

Faili zinazoanza na nukta (.) ni maalum sana katika Linux na huitwa faili za nukta. Ni faili zilizofichwa kwa ujumla usanidi au faili za mfumo. Lazima utumie swichi '-a' au '-A' na ls amri kutazama faili kama hizo.

Kuunda, kuhariri, kubadilisha jina na kufuta faili kama hizo ni moja kwa moja.

$ touch .12.txt

Kumbuka: Katika Linux unaweza kuwa na vitone vingi (.) unavyohitaji katika jina la faili. Tofauti na dots zingine za mfumo katika jina la faili haimaanishi kutenganisha jina na kiendelezi. Unaweza kuunda faili yenye dots nyingi kama:

$ touch 1.2.3.4.5.6.7.8.9.10.txt

na uangalie kama:

$ 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

Unaweza kuwa na koma katika jina la faili, kadiri unavyotaka na hauhitaji chochote cha ziada. Fanya tu kwa njia ya kawaida, kama jina rahisi la faili.

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

Unaweza kuwa na koloni katika jina la faili, kadiri unavyotaka na hauitaji chochote cha ziada. Fanya tu kwa njia ya kawaida, kama jina rahisi la faili.

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

Ili kuwa na nukuu katika jina la faili, tunapaswa kutumia sheria ya kubadilishana. Ndio, ikiwa unahitaji kuwa na nukuu moja kwa jina la faili, ambatisha jina la faili na nukuu mbili na ikiwa unahitaji kuwa na nukuu mara mbili kwa jina la faili, iambatanishe na nukuu moja.

$ touch "15'.txt"

and

$ touch '15”.txt'

Baadhi ya Wahariri katika Linux kama emacs huunda faili chelezo ya faili inayohaririwa. Faili ya chelezo ina jina la faili asili pamoja na tilde mwishoni mwa jina la faili. Unaweza kuwa na faili ambayo jina lake ni pamoja na tilde, katika eneo lolote kama vile:

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

Unda faili ambayo jina lake lina nafasi kati ya herufi/neno, sema \hi jina langu ni avishek.txt.

Sio wazo nzuri kuwa na jina la faili na nafasi na ikiwa itabidi utofautishe jina linalosomeka, unapaswa kutumia, kusisitiza au dashi. Walakini ikiwa itabidi uunde faili kama hiyo, lazima utumie kufyeka nyuma ambayo hupuuza herufi inayofuata kwake. Ili kuunda faili hapo juu lazima tuifanye hivi ..

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

hi my name is avishek.txt

Nimejaribu kufunika hali zote ambazo unaweza kukutana nazo. Utekelezaji mwingi ulio hapo juu ni wa BASH Shell na unaweza usifanye kazi kwenye ganda lingine.

Ikiwa unahisi kuwa nimekosa kitu (hicho ni cha kawaida sana na asili ya kibinadamu), unaweza kujumuisha pendekezo lako katika maoni hapa chini. Endelea Kuunganishwa, Endelea Kutoa Maoni. Endelea Kufuatilia na uunganishwe! Like na kushiriki nasi na kutusaidia kuenea!