ഷെൽ പ്രോഗ്രാമിങ്ങ്/ഭാഗം 2

വിക്കിപാഠശാല, ഒരു സ്വതന്ത്ര ഉള്ളടക്കത്തോടുകൂടിയ പാഠശാല.

ഫയൽ സിസ്റ്റത്തിലെ വിവിധ ഡയറക്റ്ററികളിലേക്ക് ആവശ്യാനുസരണം മാറുകയും ജോലി ചെയ്യാൻ ആവശ്യമായ ഫയലുകളും ഡയറക്റ്ററികളും തേടി കണ്ടു പിടിക്കുകയും ചെയ്യുന്നതിനാണ് പൊതുവിൽ ഫയൽ സിസ്റ്റം ബ്രൗസിങ്ങ് / ഡയറക്റ്ററി ബ്രൗസിങ്ങ് എന്നു പറയുന്നത്. ഇതിനു പ്രധാനമായും ഉപയോഗിക്കുന്നത് സിഡി, എൽഎസ് എന്നീ കമാൻഡുകളാണ്. ഇതിന്റെ ഉപയോഗം ചെറിയ തോതിൽ മുൻപത്തെ ഭാഗത്തിൽ വിശദീകരിച്ചിരുന്നു. ഈ വിഷയത്തിൽ കൂടുതൽ കാര്യങ്ങൾ പഠിക്കുന്നതിനു മുൻപ് ഇതിന് അടിസ്ഥാനമായ ചില സാങ്കേതിക സംജ്ഞകൾ അറിഞ്ഞിരിക്കണം. ആബ്സൊല്യൂട് പാത്തും റിലേറ്റീവ് പാത്തും റൂട്ട് ഡയറക്റ്ററിയിൽ നിന്നും ഒരു ഡയറക്റ്ററി/ഫയൽ ലേക്കു പോകാനുള്ള വഴിയാണ് ( പാത്ത് ) ആ ഡയറക്റ്ററി/ഫയലിന്റെ ആബ്സൊല്യൂട് പാത്ത്. ഉദാഹരണത്തിന് എന്റെ ഹോം ഡയറക്റ്ററിക്കകത്തുള്ള ( /home/prasobh)‌ Documents എന്ന ഡയറക്റ്ററിയിൽ reusume.pdf എന്ന ഫയൽ ഉണ്ടെന്നു വിചാരിക്കുക. അതിന്റെ ആബ്സൊല്യൂട്ട് പാത്ത് “/home/prasobh/Documents/resume.pdf” എന്നായിരിക്കും. പ്രസന്റ് വർക്കിങ്ങ് ഡയറക്ടറി ( പി.ഡബ്ളു.ഡി – PWD ) യിൽ നിന്നും ഒരു ഡയറക്ടറി/ഫയൽ ലേക്കു പോകാനുള്ള വഴിയാണ് ആ ഡയറക്ടറി/ഫയലിന്റെ റിലേറ്റീവ് പാത്ത്. മേല്പറഞ്ഞ ഫയലിന്റെ കാര്യം തന്നെ എടുക്കുക. എന്റെ നിലവിലുള്ള പി.ഡബ്ള്യു.ഡി. എന്റെ ഹോം ഡയറക്റ്ററി തന്നെ ആണെന്നു വെക്കുക. അവിടെ നിന്നും ഈ ഫയലിലെത്തിച്ചേരാൻ “Documents/resume.pdf” എന്ന റിലേറ്റീവ് പാത്ത് ആണ് ഉപയോഗിക്കേണ്ടത്.

ഈ വഴികളെ രണ്ടിനെയും പൊതുവായി പാത്ത് എന്നും പറയാറുണ്ട്. ഇതിൽ ശ്രദ്ധിക്കേണ്ട കാര്യം ആബ്സൊല്യൂട്ട് പാത്തിന്റെ ഇടതു വശം “/” ൽ ആരംഭിക്കുമ്പോൾ റിലേറ്റീവ് പാത്തിന് അതിന്റെ ആവശ്യമില്ല എന്നുള്ളതാണ്. ഷെല്ലിൽ നിങ്ങൾ എവിടയാണ് നിൽക്കുന്നത് ( പ്രസന്റ് വർക്കിങ്ങ് ഡയറക്ടറി ഏതാണ് ) എന്നു നിങ്ങൾക്കറിയാമെങ്കിൽ റിലേറ്റീവ് പാത്ത് ഉപയോഗിക്കുന്നതാണ് എളുപ്പം. അല്ലാത്ത പക്ഷം ആബ്സൊല്യൂട്ട് പാത്ത് തന്നെ ഉപയോഗിക്കുക.

ഒരു ഡയറക്റ്ററിയുടെ ആബ്സൊല്യൂട്ട് പാത്ത് കണ്ടു പിടിക്കാൻ ആ ഡയറക്ടറിയിൽ നിന്നു കൊണ്ട് “pwd” എന്ന കമാൻഡ് ടൈപ് ചെയ്താൽ മതി.

സിഡി (CD) ചെയ്ഞ്ച് ഡയറക്റ്ററി എന്നതിന്റെ ചുരുക്കം എന്ന രീതിയിലാണ് സിഡി കമാൻഡ് ഉപയോഗിക്കുന്നത്. പേരു സൂചിപ്പിക്കും പോലെ ഒരു ഡയറക്റ്ററിയിൽ നിന്ന് വേറൊന്നിലേക്കു മാറുക എന്നതാണ് സിഡി യുടെ ഉപയോഗം. സി.ഡി എന്ന കമാൻഡിന്റെ വലതു വശത്തായി ഏതു ഡയറക്റ്ററിയിലേക്കാണോ മാറേണ്ടത് ആ ഡയറക്ടറിയുടെ പാത്ത് ( ആബ്സൊല്യൂട്ടോ റിലേറ്റീവോ ) നലികിയാൽ മതി. ഉദാഹരണത്തിന് എനിക്കു എന്റെ ഹോം ഡയറക്റ്ററിയിലെ “Videos/Hindi” എന്ന ഡയറക്റ്ററിയിൽ പോകണം എന്നു വിചാരിക്കുക. ഞാൻ ഇപ്പോൾ നിൽക്കുന്നത് എന്റെ ഹോം ഡയറക്റ്ററിയിലാണെങ്കിൽ (PWD = /home/prasobh ) എനിക്ക് “cd Videos/Hindi” എന്നു മാത്രം ടൈപ് ചെയ്തു ആ ഡയറക്റ്ററിയിലേക്ക് പോകാൻ കഴിയും. എന്നാൽ ഞാൻ നിൽക്കുന്നത് “/home” എന്ന ഡയറക്റ്ററിയിൽ ആണെങ്കിൽ ( PWD ‘/home’ ആണെങ്കിൽ ) “cd prasobh/Videos/Hindi” എന്നു ഉപയോഗിക്കേണ്ടി വരും. നേരെ മറിച്ച് ഹോം ഡയറക്റ്ററിക്കകത്തെ Videos എന്ന ഡയറക്റ്ററിയിലാണ് നിൽക്കുന്നതെങ്കിൽ ( PWD ‘/home/prasobh/Videos’ ആണെങ്കിൽ ) “cd Hindi” എന്നു മാത്രം ഉപയോഗിച്ചാൽ മതിയാവും. ഇതിലെല്ലാം ഞാൻ ഉപയോഗിച്ചത് റിലേറ്റീവ് പാത്ത് ആണ്. ഇനി ഇതിന്റെ ആബ്സൊല്യൂട്ട് പാത്ത് ആയ /home/prasobh/Videos/Hindi എന്നാണ് ഉപയോഗിക്കുന്നതെങ്കിൽ നിങ്ങൾ ഷെല്ലിൽ എവിടെയാണ് എന്നുള്ളത് ഒരു വിഷയമേ അല്ല. മേൽപറഞ്ഞ മൂന്നു ഡയറക്ടറികളിൽ എവിടെ നിന്നു “cd /home/prasobh/Videos/Hindi” എന്നുപയോഗിച്ചാലും നിങ്ങൾക്ക് ഈ ഡയറക്റ്ററിയിൽ എത്തിച്ചേരാൻ സാധിക്കും. ഇനി ഇവിടെയൊന്നുമല്ല നിങ്ങൾ തികച്ചും വ്യത്യസ്തമായ ഒരു ഡയറക്റ്ററി ( ഉദാ: /tmp , /usr/local പോലെ ഏതെങ്കിലും ) യിൽ ആണെങ്കിൽ പോലും ആബ്സൊല്യൂട്ട് പാത്ത് ഉപയോഗിക്കുന്നിടത്തോളം കാലം നിങ്ങൾക്ക് നിർദ്ദിഷ്ട ഡയറക്റ്ററിയിൽ എത്തിച്ചേരാൻ സാധിക്കും.

മേൽപറഞ്ഞ ഉദാഹരണങ്ങൾ കമ്പ്യൂട്ടറിൽ ഉപയോഗിച്ചിരിക്കുന്നതു നോക്കു. ഓരൊ കമാൻഡിനു മുൻപും പിൻപും ഞാൻ ഏതു ഡയറക്റ്ററിയിലായിരുന്നു എന്നറിയാൻ പിഡബ്ള്യുഡി കമാൻഡ് ഉപയോഗിച്ചിട്ടുണ്ട്.

   [prasobh@localhost ~]$ pwd
   /home/prasobh
   [prasobh@localhost ~]$cd Videos/Hindi/
   [prasobh@localhost Hindi]$ pwd
   /home/prasobh/Videos/Hindi
   [prasobh@localhost home]$ pwd
   /home
   [prasobh@localhost home]$cd prasobh/Videos/Hindi/
   [prasobh@localhost Videos]$pwd
   /home/prasobh/Videos

സിഡി കമാൻഡിന്റെ കൂടെ ഉപയോഗിക്കാവുന്ന ചില കുറുക്കുവഴികളുണ്ട്. ഇവ മിക്കതും ഏതെങ്കിലും ഡയറക്റ്ററിയ്ക്കുള്ള അപരനാമം (alias) ആയിരിക്കും. താഴെ കൊടുത്തവ നോക്കുക:

cd ~ അല്ലെങ്കിൽ cd  : ഇതിലേതു കമാൻഡ് ടൈപ് ചെയ്താലും ഉപയോക്താവിന് അയാളുടെ ഹോം ഡയറക്റ്ററിയിൽ എത്തിച്ചേരാൻ സാധിക്കും. ഇതിൽ “~” എന്നതു ഉപയോക്താവിന്റെ ഹോം ഡയറക്റ്ററിയുടെ ഒരു അപര നാമം ആണ്. ഈ അപരനാമം നിങ്ങൾക് ഏത് കമാൻഡിന്റെ കൂടെയും ഉപയോഗിക്കാൻ സാധിക്കും. ഉദാഹരണത്തിന് ഞാൻ /usr/share/doc ൽ നിന്നും ഇതിലേതെങ്കിലും കമാൻഡ് ടൈപ് ചെയ്താൽ /home/prasobh ൽ എത്തിച്ചേരും.

   [prasobh@localhost doc]$ pwd
   /usr/share/doc

പ്രസന്റ് വർകിങ്ങ് ഡയറക്റ്ററി യെക്കുറിച്ച് മുൻപ് വിശദീകരിച്ചല്ലോ, ഇതിന്റെ അപരനാമമായി “.” ( പൂർണവിരാമം ) ഉപയോഗിക്കാറുണ്ട്. ഉദാഹരണത്തിന് “/usr/share/doc” ൽ നിന്നു കൊണ്ടു “cd .” എന്നുപയോഗിക്കുന്നത് “cd /usr/share/doc” എന്ന കമാൻഡിനു തുല്യമായിരിക്കും. ഒരു ഡയറക്ടറിയിൽ നിന്നും ആ ഡയറക്റ്ററിയിലേക്കു തന്നെ മാറുക എന്നതു സാങ്കേതികമായി പ്രസക്തിയുള്ള ഒരു കാര്യമല്ല. എന്നാൽ മറ്റു പല കമാൻഡുകളുടെയും കൂടെ ഉപയോഗിക്കുമ്പോൾ ഈ സംജ്ഞ കൊണ്ടു പ്രയോജനം ഉണ്ട്.

പിഡബ്ള്യുഡി എന്ന സംജ്ഞയുമായി ബന്ധമുള്ളതാണ് ഓൾഡ് പിഡബ്ള്യുഡി ( ഓപിഡബ്ള്യുഡി ) എന്ന സംജ്ഞ. ഇതു നിങ്ങൾ പി.ഡബ്ള്യു.ഡി യിലേക്കു മാറുന്നതിനു തൊട്ടു മുൻപു ഏതു ഡയറക്റ്ററിയിലായിരുന്നു എന്നു സൂചിപ്പിക്കുന്നു. ഉദാഹണത്തിനു നിങ്ങൾ “/usr/share/doc” ൽ നിന്നു “/home/prasobh/Videos/Hindi/” ലേക്കു മാറി എന്നു കരുതുക. ഇവിടെ നിങ്ങളുടെ പിഡബ്ള്യുഡി /home/prasobh/Videos/Hindi/ ഉം ഓൾഡ് പിഡബ്ള്യുഡി /usr/share/doc ഉം ആണ്. ഇനി നിങ്ങൾക്ക് തിരിച്ചു ഓപിഡബ്ള്യുഡി യിലേക്കു പോകണം എന്നു വിചാരിക്കുക. സാധാരണ ഗതിയിൽ നിങ്ങൾക്ക് “cd /usr/share/doc” എന്നുപയോഗിക്കേണ്ടി വരും, എന്നാൽ നിങ്ങൾ തിരിച്ചു പോകുന്നത് ഓ.പി.ഡബ്ള്യു.ഡി യിലേക്കായതിനാൽ ഇതിനു പകരം “cd – or (cd .. )” എന്നുപയോഗിച്ചാൽ മതി. താഴെ കൊടുത്തിരിക്കുന്ന ഉദാഹരണം നോക്കുക.

   [prasobh@localhost doc]$ pwd
   /usr/share/doc
   [prasobh@localhost doc]$ cd /home/prasobh/Videos/Hindi/
   [prasobh@ocalhost Hindi]$ pwd
   /home/prasobh/Videos/Hindi
   [prasobh@localhost Hindi]$ cd –
   [prasobh@localhost doc]$ pwd
   /usr/share/doc

പ്രസന്റ് വർകിങ്ങ് ഡയറക്റ്ററിയുടെ പാരന്റ് ഡയറക്റ്ററിയെ സൂചിപ്പിക്കാൻ “..” എന്ന സംജ്ഞ ഉപയോഗിക്കറുണ്ട്. അതായത് നിങ്ങളുടെ പിഡബ്ള്യുഡി “/usr/share/doc” ആണെങ്കിൽ “..” എന്നതു “/usr/share/” നെ സൂചിപ്പിക്കുന്നു.

   [prasobh@localhost doc]$ pwd
   /usr/share/doc
   [prasobh@localhost doc]$ cd ..
   [prasobh@localhost share]$ pwd
   /usr/share

“..” ന്റെ ഉപയോഗം കുറച്ചു കൂടി വിശദമാക്കുന്ന ഒരു ഉദാഹരണത്തോടെ ഈ പാഠം അവസാനിപ്പിക്കാം.

/home/prasobh/Videos/ എന്ന ഡയറക്റ്ററിക്കകത്ത് Hindi, English എന്നിങ്ങനെ രണ്ട് ഡയറക്റ്ററികൾ ഉണ്ടെന്നും നിങ്ങൾ അതിൽ Hindi ഡയറക്റ്ററിയിൽ ആണെന്നും വിചാരിക്കുക. ഇവിടെ നിന്നും English എന്ന ഡയറക്റ്ററിയിലേക്കു പോകാൻ അതിന്റെ ആബ്സൊല്യൂട്ട് പാത്ത് ആയ “/home/prasobh/Videos/English” ഉപയോഗിക്കാം. എന്നാൽ “..” ഉപയോഗിച്ച് നമുക്കു ഇതിനു തുല്യമായ റിലേറ്റീവ് പാത്ത് ഉണ്ടക്കാൻ സാധിക്കും. നിങ്ങളുടെ പിഡബ്ള്യുഡി ആയ /home/prasobh/Videos/Hindi യുടെ പാരന്റ് ഡയറക്റ്ററിയായ /home/prasobh/Videos/ ന്റെ സബ് ഡയറക്റ്ററി തെന്നെയാണല്ലോ English. വേറൊരു രീതിയിൽ പറഞ്ഞാൽ “..” ന്റെ സബ് ഡയറക്റ്ററി, അതായത് ../English. അപ്പോൾ /home/prasobh/Videos/Hindi ൽ നിന്നും /home/prasobh/Videos/English ലേക്കു പോകാൻ “cd ../English” എന്ന കമാൻഡ് ഉപയോഗിച്ചാൽ മതി. ഇനി ഇവിടെ നിന്നു /home/prasobh ലേക്കു പോകണമെങ്കിലോ? “cd ../..” എന്ന കമാൻഡ് ഉപയോഗിക്കാം.