നിങ്ങളുടെ ബാഷ് സ്ക്രിപ്റ്റ് ഡയറക്ടറി കണ്ടെത്തുന്നു
പല സ്ക്രിപ്റ്റിംഗ് സാഹചര്യങ്ങളിലും, നിങ്ങളുടെ ബാഷ് സ്ക്രിപ്റ്റ് എവിടെയാണെന്ന് അറിയേണ്ടത് അത്യാവശ്യമാണ്. സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറിയിലേക്ക് നാവിഗേറ്റ് ചെയ്യാനും അതിനുള്ളിലെ ഫയലുകളിൽ ഫലപ്രദമായി പ്രവർത്തിക്കാനും ഈ അറിവ് നിങ്ങളെ അനുവദിക്കുന്നു.
നിങ്ങൾ മറ്റൊരു ആപ്ലിക്കേഷൻ സമാരംഭിക്കുന്നതിനോ അല്ലെങ്കിൽ നിർദ്ദിഷ്ട ഫയലുകളിൽ പ്രവർത്തനങ്ങൾ നടത്തുന്നതിനോ നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുകയാണെങ്കിൽ, സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി കണ്ടെത്തുന്നത് സുഗമവും പ്രവചിക്കാവുന്നതുമായ നിർവ്വഹണം ഉറപ്പാക്കുന്നു. ഈ ടാസ്ക് എങ്ങനെ നിർവഹിക്കാമെന്ന് ഈ ഗൈഡ് കാണിക്കും.
| കമാൻഡ് | വിവരണം |
|---|---|
| ${BASH_SOURCE[0]} | ബാഷിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റിൻ്റെ മുഴുവൻ പാതയും സൂചിപ്പിക്കുന്നു. |
| cd $(dirname ...) | നിലവിലെ ഡയറക്ടറിയെ നിർദ്ദിഷ്ട ഫയലിൻ്റെയോ സ്ക്രിപ്റ്റിൻ്റെയോ പാരൻ്റ് ഡയറക്ടറിയിലേക്ക് മാറ്റുന്നു. |
| pwd | നിലവിലുള്ള ഡയറക്ടറി പ്രിൻ്റ് ചെയ്യുന്നു. |
| realpath() | പൈത്തണിലെ നിർദ്ദിഷ്ട ഫയൽ നാമത്തിൻ്റെ കാനോനിക്കൽ പാത്ത് നൽകുന്നു. |
| sys.argv[0] | പൈത്തൺ സ്ക്രിപ്റ്റ് വിളിക്കാൻ ഉപയോഗിച്ച സ്ക്രിപ്റ്റ് നാമം അടങ്ങിയിരിക്കുന്നു. |
| os.chdir() | പൈത്തണിലെ നിർദ്ദിഷ്ട പാതയിലേക്ക് നിലവിലെ വർക്കിംഗ് ഡയറക്ടറി മാറ്റുന്നു. |
| os.system() | പൈത്തണിലെ സബ്ഷെല്ലിൽ ഒരു കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു. |
| ls -al | നിലവിലെ ഡയറക്ടറിയിൽ വിശദമായ വിവരങ്ങളുള്ള എല്ലാ ഫയലുകളും ഡയറക്ടറികളും ലിസ്റ്റുചെയ്യുന്നു. |
സ്ക്രിപ്റ്റ് ഡയറക്ടറി ലൊക്കേഷൻ മനസ്സിലാക്കുന്നു
നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകൾ ഒരു ബാഷ് സ്ക്രിപ്റ്റ് സ്ഥിതിചെയ്യുന്ന ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിനുള്ള രീതികൾ കാണിക്കുന്നു. ബാഷ് സ്ക്രിപ്റ്റ് ഉദാഹരണത്തിൽ, കമാൻഡ് ${BASH_SOURCE[0]} സ്ക്രിപ്റ്റിൻ്റെ പാത ലഭിക്കാൻ ഉപയോഗിക്കുന്നു, അതേസമയം cd $(dirname ...) സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറിയിലേക്ക് വർക്കിംഗ് ഡയറക്ടറി മാറ്റുന്നു. ദി pwd കമാൻഡ് നിലവിലെ പ്രവർത്തിക്കുന്ന ഡയറക്ടറി പ്രിൻ്റ് ചെയ്യുന്നു, അത് മാറ്റം പരിശോധിക്കുന്നു. സ്ക്രിപ്റ്റിൻ്റെ ലൊക്കേഷനിൽ നിന്ന് ആപ്ലിക്കേഷനുകൾ സമാരംഭിക്കുന്നതിന് ഇത് അത്യന്താപേക്ഷിതമാണ്, എല്ലാ പ്രവർത്തനങ്ങളും ശരിയായ സന്ദർഭത്തിൽ നടക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുന്നു.
പൈത്തൺ സ്ക്രിപ്റ്റ് ഉദാഹരണത്തിൽ, os.path.dirname(os.path.realpath(sys.argv[0])) സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി വീണ്ടെടുക്കുന്നു, ഒപ്പം os.chdir() പ്രവർത്തന ഡയറക്ടറി മാറ്റുന്നു. ദി os.system() മറ്റൊരു ആപ്ലിക്കേഷൻ എക്സിക്യൂട്ട് ചെയ്യാൻ കമാൻഡ് ഉപയോഗിക്കുന്നു. വിപുലമായ ബാഷ് സ്ക്രിപ്റ്റ് ഉദാഹരണം ഈ സാങ്കേതികതകളെ സംയോജിപ്പിക്കുന്നു ls -al സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറിയിൽ ഫയലുകൾ ലിസ്റ്റ് ചെയ്യാൻ. ലൊക്കേഷനുമായി ബന്ധപ്പെട്ട ഫയലുകൾ കൈകാര്യം ചെയ്യാനോ പ്രവർത്തിപ്പിക്കാനോ ആവശ്യമായ സ്ക്രിപ്റ്റുകൾക്ക് ഈ സമീപനം ഉപയോഗപ്രദമാണ്.
ഒരു ബാഷ് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കുക
ബാഷ് സ്ക്രിപ്റ്റ് ഉദാഹരണം
# Method to get the directory of the scriptDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"# Print the directoryecho "The script is located in: $DIR"# Change to the script's directorycd "$DIR"# Execute another application./application
സ്ക്രിപ്റ്റിൻ്റെ ലൊക്കേഷനിലേക്ക് വർക്കിംഗ് ഡയറക്ടറി മാറ്റുന്നു
പൈത്തൺ സ്ക്രിപ്റ്റ് ഉദാഹരണം
import osimport sysdef get_script_directory():return os.path.dirname(os.path.realpath(sys.argv[0]))# Get the script's directoryscript_dir = get_script_directory()# Print the directoryprint(f"The script is located in: {script_dir}")# Change to the script's directoryos.chdir(script_dir)# Execute another applicationos.system("./application")
ഷെൽ സ്ക്രിപ്റ്റിൽ സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി കണ്ടെത്തുന്നു
വിപുലമായ ബാഷ് സ്ക്രിപ്റ്റ് ഉദാഹരണം
#!/bin/bash# Resolve the directory of the scriptSCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)# Print the resolved directoryecho "Script directory is: $SCRIPT_DIR"# Move to the script's directorycd "$SCRIPT_DIR"# Example operation in script's directoryecho "Listing files in script directory:"ls -al# Launch another application from the script directory./application
സ്ക്രിപ്റ്റ് ഡയറക്ടറി കണ്ടെത്തുന്നതിനുള്ള അധിക രീതികൾ
ഒരു സ്ക്രിപ്റ്റ് സ്ഥിതിചെയ്യുന്ന ഡയറക്ടറി കണ്ടെത്തുന്നതിനുള്ള മറ്റൊരു ഉപയോഗപ്രദമായ മാർഗ്ഗം എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ പ്രയോജനപ്പെടുത്തുന്നത് ഉൾപ്പെടുന്നു. ചില സിസ്റ്റങ്ങളിൽ, ദി $0 വേരിയബിളിൽ നിലവിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റിലേക്കുള്ള പാത അടങ്ങിയിരിക്കുന്നു. ഇതുപോലുള്ള കമാൻഡുകളുമായി ഇത് സംയോജിപ്പിച്ച് dirname ഒപ്പം readlink, നിങ്ങൾക്ക് സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി കൂടുതൽ പോർട്ടബിൾ രീതിയിൽ നിർണ്ണയിക്കാനാകും. വ്യത്യസ്ത പരിതസ്ഥിതികളിലോ സിംലിങ്കുകളിലൂടെയോ സ്ക്രിപ്റ്റുകൾ എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.
ഉപയോഗിക്കുന്നത് readlink അവയുടെ യഥാർത്ഥ ഫയൽ പാതകളിലേക്കുള്ള പ്രതീകാത്മക ലിങ്കുകൾ പരിഹരിക്കാൻ കഴിയും, ഇത് ഡയറക്ടറി നിർണ്ണയിക്കുന്നതിൽ കൃത്യത ഉറപ്പാക്കുന്നു. ഉദാഹരണത്തിന്, DIR="$(dirname "$(readlink -f "$0")")" ഒരു സിംലിങ്ക് ആണെങ്കിലും സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നൽകും. ഈ രീതികൾ മനസ്സിലാക്കുന്നത് നിങ്ങളുടെ സ്ക്രിപ്റ്റിംഗ് ടൂൾകിറ്റ് വിശാലമാക്കുന്നു, കൂടുതൽ കരുത്തുറ്റതും പൊരുത്തപ്പെടുത്താവുന്നതുമായ സ്ക്രിപ്റ്റ് വിന്യാസം അനുവദിക്കുന്നു.
പൊതുവായ ചോദ്യങ്ങളും ഉത്തരങ്ങളും
- ബാഷിൽ ഒരു സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി എനിക്ക് എങ്ങനെ ലഭിക്കും?
- ഉപയോഗിക്കുക ${BASH_SOURCE[0]} സംയോജിച്ച dirname ഒപ്പം pwd ഡയറക്ടറി കണ്ടെത്താൻ.
- സ്ക്രിപ്റ്റ് ഡയറക്ടറി നിർണ്ണയിക്കുന്നത് പ്രധാനമായിരിക്കുന്നത് എന്തുകൊണ്ട്?
- സ്ക്രിപ്റ്റിനുള്ളിലെ പ്രവർത്തനങ്ങൾ ശരിയായ സന്ദർഭത്തിൽ നടക്കുന്നുണ്ടെന്ന് ഇത് ഉറപ്പാക്കുന്നു, പ്രത്യേകിച്ചും ആപേക്ഷിക ഫയൽ പാതകൾ കൈകാര്യം ചെയ്യുമ്പോൾ.
- സ്ക്രിപ്റ്റ് ഡയറക്ടറി കണ്ടെത്താൻ എനിക്ക് എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ ഉപയോഗിക്കാമോ?
- അതെ, വേരിയബിളുകൾ പോലെ $0 തുടങ്ങിയ കമാൻഡുകൾ readlink സ്ക്രിപ്റ്റിൻ്റെ സ്ഥാനം നിർണ്ണയിക്കാൻ സഹായിക്കും.
- എന്താണ് ചെയ്യുന്നത് readlink -f ചെയ്യണോ?
- ഇത് അവരുടെ അന്തിമ ലക്ഷ്യസ്ഥാനത്തേക്കുള്ള എല്ലാ പ്രതീകാത്മക ലിങ്കുകളും പരിഹരിക്കുന്നു, ഒരു സമ്പൂർണ്ണ പാത നൽകുന്നു.
- എങ്ങിനെയാണ് sys.argv[0] പൈത്തൺ സ്ക്രിപ്റ്റുകളിൽ പ്രവർത്തിക്കുന്നുണ്ടോ?
- സ്ക്രിപ്റ്റിൻ്റെ ഡയറക്ടറി നിർണ്ണയിക്കാൻ ഉപയോഗപ്രദമായ പൈത്തൺ സ്ക്രിപ്റ്റ് അഭ്യർത്ഥിക്കാൻ ഉപയോഗിക്കുന്ന സ്ക്രിപ്റ്റ് നാമം ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
- ആണ് os.path.realpath() പൈത്തൺ സ്ക്രിപ്റ്റുകളിൽ ആവശ്യമുണ്ടോ?
- അതെ, ഇത് നിർദ്ദിഷ്ട ഫയൽ നാമത്തിൻ്റെ കാനോനിക്കൽ പാത്ത് നൽകുന്നു, ഇത് കേവല പാത നിർണ്ണയിക്കാൻ സഹായിക്കുന്നു.
- മറ്റ് സ്ക്രിപ്റ്റിംഗ് ഭാഷകളിൽ ഈ രീതികൾ ഉപയോഗിക്കാമോ?
- പ്രത്യേകതകൾ വ്യത്യാസപ്പെട്ടിരിക്കാമെങ്കിലും, സ്ക്രിപ്റ്റ് ലൊക്കേഷനുകൾ നിർണ്ണയിക്കുന്നതിന് സമാനമായ ആശയങ്ങൾ മറ്റ് ഭാഷകളിൽ പ്രയോഗിക്കാവുന്നതാണ്.
സ്ക്രിപ്റ്റ് ഡയറക്ടറി ലൊക്കേഷനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
സ്ക്രിപ്റ്റ് വിശ്വാസ്യതയ്ക്കും ശരിയായ ഫയൽ മാനേജ്മെൻ്റിനും ഒരു ബാഷ് സ്ക്രിപ്റ്റ് താമസിക്കുന്ന ഡയറക്ടറി കണ്ടെത്തേണ്ടത് അത്യാവശ്യമാണ്. തുടങ്ങിയ കമാൻഡുകൾ ഉപയോഗിച്ച് ${BASH_SOURCE[0]}, dirname, ഒപ്പം pwd, നിങ്ങളുടെ സ്ക്രിപ്റ്റ് അതിൻ്റെ ഉദ്ദേശിച്ച ഡയറക്ടറിയിൽ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് നിങ്ങൾക്ക് ഉറപ്പാക്കാം. ഈ സമീപനം ബാഷിൽ ഫലപ്രദമാണ് മാത്രമല്ല പൈത്തൺ സ്ക്രിപ്റ്റുകൾ ഉപയോഗിക്കാനും ഇത് ഉപയോഗിക്കാം os.path.realpath() ഒപ്പം sys.argv[0]. ഈ ടെക്നിക്കുകൾ അവയുടെ എക്സിക്യൂഷൻ പരിതസ്ഥിതി പരിഗണിക്കാതെ തന്നെ ഫയലുകൾ കൈകാര്യം ചെയ്യാനും ആപ്ലിക്കേഷനുകൾ കൃത്യമായി സമാരംഭിക്കാനും കഴിവുള്ള ശക്തമായ സ്ക്രിപ്റ്റുകൾ സൃഷ്ടിക്കാൻ സഹായിക്കുന്നു.