ഷെൽ പ്രോഗ്രാമിങ്ങ്/ഭാഗം 5
ഫയലുകളും ഡയറക്റ്ററികളും കംപ്യൂട്ടറിൽ നിന്നും നീക്കം ചെയ്യുന്നതിനുള്ള കമാൻഡ് ആണ് ആർ.എം. (rm). ഈ കമാന്റ് ഉപയോഗിക്കുന്ന വിധം : rm കമാൻഡിനു ശേഷം നീക്കം ചെയ്യേണ്ട ഒന്നോ അതിൽ കൂടുതലോ ഫയലുകളോ ഡയറക്റ്ററികളോ ഓരോ സ്പെയ്സുകൾ ഇട വിട്ട് നൽകുകയാണ് ഏറ്റവും അടിസ്ഥാനമായ ഉപയോഗ രീതി. ആവശ്യമെങ്കിൽ പ്രത്യേക ഓപ്ഷനുകൾ rm കമാൻഡിനും ഫയൽ / ഡയറക്റ്ററി കളുടെ പേരിനും ഇടയിലായി നല്കാവുന്നതാണ്. ഡയറക്റ്ററി / ഫയൽ ന്റെ പേര് ആബ്സൊല്യൂട്ടോ റിലേറ്റീവോ ആയ പാത്തുകൾ ആയി വേണം നൽകാൻ.
ഒരു ഉദാഹരണം നോക്കാം: MyNotes എന്ന ഡയറക്റ്ററിയിൽ നിന്നും gazal.txt എന്ന ഫയൽ നീക്കം ചെയ്യാൻ ആ ഡയറക്റ്ററിക്കകത്തു നിന്നും rm എന്ന കമാൻഡിനു ശേഷം gazal.txt എന്നു നൽകിയാൽ മതി.
[prasobh@localhost MyNotes]$ ls backup bsd-certifications.txt dupauth.txt gazal.txt interview.txt ip-network.ml.txt LinuxScripting.txt vbox-gns.txt vpn-howto.txt [prasobh@localhost MyNotes]$ rm gazal.txt [prasobh@localhost MyNotes]$ ls backup bsd-certifications.txt dupauth.txt interview.txt ip-network.ml.txt LinuxScripting.txt vbox-gns.txt vpn-howto.txt
ഇതേ കമാൻഡ് ആബ്സൊല്യൂട്ട് പാത്ത് ചേർത്ത് ഇങ്ങനെ ഉപയോഗിക്കാം: [prasobh@localhost tmp]$ rm /home/prasobh/MyNotes/gazal.txt
ഇനി മേൽപറഞ്ഞ ഡയറക്റ്ററിയിൽ നിന്ന് ഒന്നിൽ കൂടുതൽ ഫയലുകൾ നീക്കം ചെയ്യണം എന്നുണ്ടെങ്കിൽ താഴെപറയും വിധം ചെയ്യാവുന്നതാണ്.
[prasobh@localhost MyNotes]$ rm ip-network.ml.txt LinuxScripting.txt vbox-gns.txt [prasobh@localhost MyNotes]$ ls backup bsd-certifications.txt dupauth.txt interview.txt vpn-howto.txt
ഇനി ഡയറക്റ്ററി നീക്കം ചെയ്യുന്നതെങ്ങനെയാണെന്നു നോക്കാം. MyNotes എന്ന ഡയറക്റ്ററിക്കുളിൽ backup എന്നതു ഒരു ഡയറക്റ്ററി ആണ്. ഫയൽ നീക്കം ചെയ്ത അതേ രീതിയിൽ ഡയറക്റ്ററി നീക്കം ചെയ്യാൻ ഒന്നു ശ്രമിച്ചു നോക്കാം.
[prasobh@localhost MyNotes]$ rm backup/ rm: cannot remove `backup/’: Is a directory
സാധാരണ ഫയലുകൾ നീക്കം ചെയ്യുന്ന അതേ രീതിയിൽ ഡയറക്റ്ററികൾ നീക്കം ചെയ്യാനാവില്ല എന്നു മനസ്സിലായല്ലോ, ഇതിനു വേണ്ടി നമുക്കു “-r” എന്ന ഓപ്ഷൻ ഉപയോഗിക്കേണ്ടി വരും.
[prasobh@localhost MyNotes]$ rm -r backup/ [prasobh@localhost MyNotes]$ ls bsd-certifications.txt dupauth.txt interview.txt vpn-howto.txt
ഉപയോഗപ്രദമായ ഒരു ഓപ്ഷനാണ് “-i” (interactive എന്നു സൂചിപ്പിക്കുന്നു ). ഈ ഓപ്ഷൻ ഉപയോഗിച്ചാൽ ഓരോ ഫയലും നീക്കം ചെയ്യുന്നതിനു മുൻപ് ഉപയോക്താവിന്റെ സമ്മതം ചോദിക്കും. ആവശ്യമുള്ള ഫയലുകൾ അബദ്ധത്തിൽ നീക്കം ചെയ്യുമോ എന്നു ഭയമുണ്ടെങ്കിൽ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാവുന്നതാണ്.
[prasobh@localhost MyNotes]$ ls bsd-certifications.txt dupauth.txt interview.txt vpn-howto.txt [prasobh@localhost MyNotes]$ rm -i vpn-howto.txt interview.txt rm: remove regular file `vpn-howto.txt’? y rm: remove regular file `interview.txt’? n [prasobh@localhost MyNotes]$ ls bsd-certifications.txt dupauth.txt interview.txt
മുകളിൽ “vpn-howto.txt’” എന്ന ഫയൽ നീക്കം ചെയ്യണോ എന്ന ചോദ്യത്തിന് അതെ എന്ന അർഥത്തിൽ y (yes) എന്നും “interview.txt’” നീക്കം ചെയ്യേണ്ട എന്ന അർഥത്തിൽ n (no) എന്നും നൽകി. അതിനാൽ vpn-howto.txt നീക്കം ചെയ്യുകയും interview.txt നില നിർത്തുകയും ചെയ്തു.
ചില സാഹചര്യങ്ങളിൽ ഓപറേറ്റിങ്ങ് സിസ്റ്റം നമ്മൾ ആവശ്യപ്പെടാതെ തന്നെ “-i” എന്ന ഓപ്ഷൻ ഉപയോഗിക്കും. ഉദാഹരണത്തിന് ഒരു ഉപയോക്താവിന് ഒരു ഡയറക്റ്ററിക്കകത്ത് മാറ്റങ്ങൾ വരുത്താനുള്ള അനുവാദം ഉണ്ടെന്നിരിക്കട്ടെ, ആ ഡയറക്റ്ററിക്കകത്ത് വേറൊരു ഉപയോക്താവിന്റെ ഉടമസ്ഥതയിൽ ഉള്ള ഒരു ഫയൽ ഉണ്ടെന്നും വെക്കുക. ഡയറക്റ്ററിയുടെ ഉടമസ്ഥനായ ഉപയോക്താവ് അതിനെ നീക്കം ചെയ്യാൻ ശ്രമിക്കുകയാണെങ്കിൽ നീക്കം ചെയ്യുന്നതിനു മുൻപു ഓ.എസ്. വീണ്ടും ചോദിച്ച് ഉറപ്പു വരുത്തും.
[prasobh@localhost MyNotes]$ ls -ld ~/MyNotes drwxr-xr-x 3 prasobh prasobh 4096 2009-09-15 00:18 /home/prasobh/MyNotes [prasobh@localhost MyNotes]$ ls -l total 16 -rwx—— 1 prasobh prasobh 48 2009-08-03 21:13 bsd-certifications.txt -rwx—— 1 prasobh prasobh 553 2009-08-03 21:13 dupauth.txt -rwx—— 1 prasobh prasobh 1828 2009-08-03 21:13 interview.txt -rw-r–r– 1 riyad riyad 0 2009-09-15 00:17 myblog.txt [prasobh@localhost MyNotes]$ rm myblog.txt rm: remove write-protected regular empty file `myblog.txt’? y [prasobh@localhost MyNotes]$ ls bsd-certifications.txt dupauth.txt interview.txt
ഇവിടെ prasobh എന്ന ഉപയോക്താവിന്റെ ഉടമസ്ഥതയിലുള്ള ഡയറക്റ്ററിക്കകത്ത് riyad എന്ന ഉപയോക്താവിന്റെ ഉടമസഥതയിലുള്ള myblog.txt എന്ന ഫയൽ ഉണ്ട്. ഇതിനെ നീക്കം ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ ഓ.ഏസ് വീണ്ടും ചോദിച്ച് ഉറപ്പു വരുത്തുന്നത് കണ്ടല്ലോ. ഒറ്റ ഫയൽ മാത്രമുള്ള സാഹചര്യങ്ങളിൽ പ്രശ്നമാകാറില്ലെങ്കിലും ഒരുപാടു ഫയലുകൾ ഒന്നിച്ചു നീക്കം ചെയ്യുമ്പോൾ ഇതൊരു ബുദ്ധിമുട്ടായി മാറാം. ഇതൊഴിവാക്കാൻ -f ( force - നിർബന്ധപൂർവം ) എന്ന ഓപ്ഷൻ ഉപയോഗിച്ചാൽ മതി.
[prasobh@localhost MyNotes]$ ls -l total 16 -rw-r–r– 1 riyad riyad 0 2009-09-15 00:28 biodata.txt -rwx—— 1 prasobh prasobh 48 2009-08-03 21:13 bsd-certifications.txt -rw-r–r– 1 riyad riyad 0 2009-09-15 00:28 cyber.txt -rwx—— 1 prasobh prasobh 553 2009-08-03 21:13 dupauth.txt -rwx—— 1 prasobh prasobh 1828 2009-08-03 21:13 interview.txt [prasobh@localhost MyNotes]$ rm -rf biodata.txt cyber.txt [prasobh@localhost MyNotes]$ ls bsd-certifications.txt dupauth.txt interview.txt
rm കമാൻഡിനെ കുറിച്ച് കൂടുതൽ അറിയാൻ man rm ഉപയോഗിക്കാം.
ലിനക്സിലെ ഏറ്റവും അപകടകാരിയായ ഒരു കമാൻഡ് ആണ് rm. ലിനക്സിൽ ഡാറ്റാ റിക്കവറിക്കു പല വഴികളുമുണ്ടെങ്കിലും ഒരു സാധാരണ ഉപയോക്താവിന് ഒരിക്കൽ നീക്കം ചെയ്ത ഫയലുകൾ വീണ്ടെടുക്കുക എന്നതു പ്രായോഗികമായി അസാധ്യം തന്നെയാണ് . അതിനാൽ rm കമാൻഡ് ഉപയോഗിക്കുമ്പോൾ ശരിയായ ഡയറക്റ്ററി അല്ലെങ്കിൽ ഫയൽ ന്റെ മേൽ ആണ് അതു പ്രയോഗിക്കുന്നതു എന്നു ഉറപ്പു വരുത്തണം.