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

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

എം.വി. (mv) കമാൻഡ് : ഫയലുകളും ഡയറക്ടറികളും ഒരിടത്തു നിന്ന് വേറൊരിടത്തേക്ക് മാറ്റുന്നതിനുപയോഗിക്കുന്ന കമാൻഡ് ആണ് എംവി. എംവി എന്നത് മൂവ് (move) എന്ന വാക്കിനെ സൂചിപ്പിക്കുന്നതാണ് . ഇതേ കമാൻഡ് തന്നെ ഫയൽ / ഡയറക്റ്ററി യുടെ പേരു മാറ്റുന്നതിനും ഉപയോഗിക്കാം.

ഉപയോഗിക്കുന്ന വിധം:

ഫയലുകൾ /ഡയറക്റ്ററികൾ എന്നിവ ഒരു ഡയറക്റ്ററിയിൽ നിന്നും വേറൊരു ഡയറക്റ്ററിയിലേക്ക് മാറ്റുന്നതിന് :

mv കമാൻഡിനു ശേഷം മാറ്റാൻ ഉദ്ദേശിക്കുന്ന ഒന്നോ അതിലധികമോ ഫയൽ / ഡയറക്റ്ററി കളുടെ പേരുകൾ (ആബ്സൊല്യൂട് / റിലേറ്റീവ് പാത്തോടു കൂടി ) നല്കിയ ശേഷം ഏറ്റവും ഒടുവിലായി എങ്ങോട്ടാണോ മാറ്റാൻ ഉദ്ദേശിക്കുന്നത്, ആ ഡയറക്റ്ററിയുടെ ആബ്സൊല്യൂട് / റിലേറ്റീവ് പാത്ത് നൽകുക. മാറ്റം ചെയ്യേണ്ട ഫയലുകൾ / ഡയറക്റ്ററികൾ പൊതുവിൽ സോഴ്സ് (source) എന്നറിയപ്പെടുമ്പോൾ ഏതു ഡയറക്റ്ററിയിലേക്കാണോ മാറ്റുന്നത് ആ ഡയറക്റ്ററി ഡെസ്റ്റിനേഷൻ / ടാർഗറ്റ് (destination/ target) എന്നറിയപ്പെടുന്നു.

ഉദാഹരണം: /home/prasobh/LinuxNotes എന്ന ഡയറക്റ്ററിയിൽ നിന്ന് harddisk.txt എന്ന ഫയൽ /tmp/Notes/ എന്ന ഡയറക്റ്ററിയിലേക്ക് മാറ്റാൻ

mv /home/prasobh/LinuxNotes/harddisk.txt /tmp/Notes/ എന്ന കമാൻഡ് ഉപയോഗിച്ചാൽ മതി. താഴെ കാണിച്ച ഉദാഹരണത്തിൽ harddisk.txt യുടെ റിലേറ്റീവ് പാത്ത് ആണ് ഉപയോഗിച്ചിരിക്കുന്നത്.

[prasobh@localhost LinuxNotes]$ ls

apache.txt bash.txt harddisk.txt

[prasobh@localhost LinuxNotes]$ mv harddisk.txt /tmp/Notes/

[prasobh@localhost LinuxNotes]$ ls

apache.txt bash.txt

[prasobh@localhost LinuxNotes]$ ls /tmp/Notes/

harddisk.txt

ഒന്നിൽ കൂടുതൽ ഡയറക്റ്ററികളോ ഫയലുകളോ ഇതു പോലെ മാറ്റണമെങ്കിൽ ഇവയുടെയെല്ലാം പേരുകൾ /പാത്തുകൾ mv കമാൻഡിനും /tmp/Notes/ ഉം ഇടയിലായി നൽകിയാൽ മതി. താഴെ കാണിച്ച ഉദാഹരണം നോക്കുക.

[prasobh@localhost LinuxNotes]$ mv apache.txt bash.txt /home/prasobh/LinuxHelps /tmp/Notes/

ഇതിൽ /home/prasobh/LinuxNotes/ എന്ന ഡയറക്റ്ററിയിലെ apache.txt,bash.txt എന്നീ ഫയലുകളും /home/prasobh/LinuxHelps എന്ന ഡയറക്റ്ററിയും /tmp/Notes/ എന്ന ഡയറക്റ്ററിയിലേക്കു നീക്കി.

ഇനി ഈ കമാൻഡിൽ തന്നെ /home/prasobh/LinuxHelps എന്ന ഡയറക്റ്ററി മുഴുവനായി നീക്കുന്നതിനു പകരം ഡയറക്റ്ററിക്കകത്തെ ഫയലുകൾ /tmp/Notes/ ലേക്കു മാറ്റുകയും ഒഴിഞ്ഞ /home/prasobh/LinuxHelps ഡയറക്റ്ററി യഥാസ്ഥാനത്തു നില നിർത്തുകയും വേണം എന്നു കരുതുക. ഇതിനായി താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിക്കാം.

[prasobh@localhost]$ mv /home/prasobh/LinuxHelps/* /tmp/Notes/

ഇവിടെ /home/prasobh/LinuxHelps/ നകത്തെ എല്ലാ ഫയലുകളും എന്നു സൂചിപ്പിക്കാൻ “*” ഉപയോഗിച്ചിരിക്കുന്നു. ഇതിനു വൈൽഡ്കാർഡ് (wildcard) എന്നാണ് പറയുക. വൈൽഡ് കാർഡുകളെ കുറിച്ച് പിന്നീടൊരിക്കൽ പറയാം.

mv കമാൻഡിൽ ശ്രദ്ധിക്കേണ്ട ഒരു കാര്യം നിങ്ങൾ സോഴ്സിൽ നിന്നും മാറ്റുന്ന ഫയലിന്റെ അതേ പേരിലുള്ള ഒരു ഫയൽ ഡെസ്റ്റിനേഷൻ ഡയറക്റ്ററിയിൽ നിലവിലുണ്ടെങ്കിൽ ആ ഫയലിനെ നീക്കം ചെയ്ത് പകരം സോഴ്സിലുള്ള ഫയൽ ആ സ്ഥാനത്തേക്ക് നീക്കും – ഈ പ്രവർത്തി ഓവർ റൈറ്റിങ്ങ് (overwriting)എന്നറിയപ്പെടുന്നു. ഇങ്ങനെ സംഭവിക്കുന്നുണ്ടോ എന്നു അറിയുന്നതിനു വേണ്ടി -i ( interactive) എന്ന ഓപ്ഷൻ ഉപയോഗിക്കാവുന്നതാണ്. mv കമാൻഡിനൊപ്പം ഇതുപയോഗിക്കുന്നുണ്ടെങ്കിൽ ഡെസ്റ്റിനേഷൻ ഡയറക്റ്ററിയിലെ ഫയൽ നീക്കം ചെയ്യുന്നതിനു മുൻപ് ഉപയോക്താവിന് മുന്നറിയിപ്പ് നൽകും.

ഇനി ഒരു ഫയൽ/ഡയറക്റ്ററി യുടെ പേരു മാറ്റണമെങ്കിൽ mv കമാൻഡിനു ശേഷം ഫയൽ/ഡയറക്റ്ററി യുടെ നിലവിലുള്ള പേരും അതിനു ശേഷം നൽകാനുദ്ദേശിക്കുന്ന പുതിയ പേരും നല്കിയാൽ മതി.

/tmp/Notes/ ന്റെ അകത്തുള്ള harddisk.txt എന്ന ഫയലിന്റെ പേര് cddrive.txt എന്നാക്കണം എന്നു കരുതുക.

[prasobh@localhost]$ cd /tmp/Notes/

[prasobh@localhost Notes]$ ls

harddisk.txt

[prasobh@localhost Notes]$ mv harddisk.txt cddrive.txt

[prasobh@localhost Notes]$ ls

cddrive.txt

ഇവിടെ സോഴ്സിന്റെയും ഡെസ്റ്റിനേഷന്റെയും പേരുകൾ റിലേറ്റീവ് പാത്ത് ആയി ആണ് നൽകിയിരിക്കുന്നത്. ഇത് ആബ്സൊല്യൂട്ട് പാത്ത് ആയും നൽകാവുന്നതാണ്. ഇതിൽ ശ്രദ്ധിക്കേണ്ട കാര്യം പാത്ത് ഏതു രീതിയിൽ നൽകിയാലും സോഴ്സ് ഫയൽ/ഡയറക്റ്ററി എതു ഡയറക്റ്ററിക്കകത്താണോ അതേ ഡയറക്റ്ററിക്കകത്തായിരിക്കണം പുതുതായി നല്കുന്ന പേരും വരേണ്ടത് എന്നാണ്.

mv യെക്കുറിച്ച് കൂടുതലറിയാൻ “man mv” കമാൻഡ് ഉപയോഗിക്കുക.