ആമുഖം: വിൻഡോസിൽ മറഞ്ഞിരിക്കുന്ന കമാൻഡ് പാത്തുകൾ അനാവരണം ചെയ്യുന്നു
വിൻഡോസ് കമാൻഡ് ലൈനിൽ സ്ക്രിപ്റ്റുകളും കമാൻഡുകളും ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന ഡവലപ്പർമാർക്ക് പാത്ത് വൈരുദ്ധ്യങ്ങൾ ഒരു പതിവ് പ്രശ്നമാണ്. നിങ്ങളുടെ സ്ക്രിപ്റ്റുകളിലൊന്ന് മറ്റൊരു പ്രോഗ്രാമിനാൽ മറയ്ക്കപ്പെടുമ്പോൾ, നൽകിയിരിക്കുന്ന കമാൻഡിൻ്റെ മുഴുവൻ പാതയും തിരിച്ചറിയുന്നത് നിർണായകമാകും. ഈ സാഹചര്യം പലപ്പോഴും ഉപയോക്താക്കളെ UNIX 'which' കമാൻഡിന് തുല്യമായ ഒരു കമാൻഡിലേക്ക് നയിക്കുന്നു, ഇത് ഒരു കമാൻഡിൻ്റെ കൃത്യമായ പാത കണ്ടെത്തുന്നത് ലളിതമാക്കുന്നു.
UNIX സിസ്റ്റങ്ങളിൽ, ഒരു നിർദ്ദിഷ്ട കമാൻഡിൻ്റെ മുഴുവൻ പാതയും പ്രദർശിപ്പിക്കുന്നതിന് 'which' കമാൻഡ് ഉപയോഗിക്കുന്നു, ഇത് അത്തരം നിഴൽ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിന് സഹായിക്കുന്നു. എന്നിരുന്നാലും, അവരുടെ പ്ലാറ്റ്ഫോമിൽ സമാനമായ ഒരു യൂട്ടിലിറ്റി ലഭ്യമാണോ എന്ന് വിൻഡോസ് ഉപയോക്താക്കൾ ചിന്തിച്ചേക്കാം. തുടർന്നുള്ള ചർച്ചയിൽ, സമാന പ്രവർത്തനക്ഷമത കൈവരിക്കുന്നതിന് വിൻഡോസിൽ ലഭ്യമായ ഓപ്ഷനുകൾ ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യുകയും പാതയുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങൾ ഫലപ്രദമായി കൈകാര്യം ചെയ്യാൻ നിങ്ങളെ സഹായിക്കുകയും ചെയ്യും.
കമാൻഡ് | വിവരണം |
---|---|
setlocal | ഒരു ബാച്ച് ഫയലിൽ എൻവയോൺമെൻ്റ് വേരിയബിളുകളുടെ പ്രാദേശികവൽക്കരണം ആരംഭിക്കുന്നു, മാറ്റങ്ങൾ ആഗോള പരിസ്ഥിതിയെ ബാധിക്കില്ലെന്ന് ഉറപ്പാക്കുന്നു. |
for %%i in ("%command%") do | ഓരോ ഇനത്തിലും പ്രവർത്തനങ്ങൾ നടത്താൻ അനുവദിക്കുന്ന നിർദ്ദിഷ്ട ഇനങ്ങളിലൂടെ ആവർത്തിക്കുന്നു. |
if exist "%%j\%%~i.exe" | നൽകിയിരിക്കുന്ന പാതയിൽ ഒരു നിർദ്ദിഷ്ട ഫയൽ നിലവിലുണ്ടോയെന്ന് പരിശോധിക്കുന്നു. |
param | ഒരു PowerShell സ്ക്രിപ്റ്റിലേക്ക് കൈമാറിയ പാരാമീറ്ററുകൾ നിർവചിക്കുകയും വീണ്ടെടുക്കുകയും ചെയ്യുന്നു. |
Join-Path | രണ്ടോ അതിലധികമോ സ്ട്രിംഗുകൾ ഒരു പാതയിലേക്ക് സംയോജിപ്പിക്കുന്നു, പവർഷെല്ലിൽ സെപ്പറേറ്റർ പ്രതീകങ്ങൾ ഉചിതമായി കൈകാര്യം ചെയ്യുന്നു. |
Test-Path | PowerShell-ൽ ഒരു നിർദ്ദിഷ്ട പാതയുടെയോ ഫയലിൻ്റെയോ അസ്തിത്വം സ്ഥിരീകരിക്കുന്നു. |
os.pathsep | ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഉപയോഗിക്കുന്ന പാത്ത് സെപ്പറേറ്റർ വീണ്ടെടുക്കുന്നു, സാധാരണയായി വിൻഡോസിൽ ഒരു അർദ്ധവിരാമം (;). |
os.access(exe, os.X_OK) | പൈത്തണിൽ ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ ആണോ എന്ന് പരിശോധിക്കുന്നു. |
വിൻഡോസ് കമാൻഡ് ലൈൻ സ്ക്രിപ്റ്റുകൾ മനസ്സിലാക്കുന്നു
നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകളിൽ, ഓരോന്നും UNIX-ൻ്റെ പ്രവർത്തനക്ഷമതയെ അനുകരിക്കുന്ന തരത്തിലാണ് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത് which കമാൻഡ്, ഒരു കമാൻഡിൻ്റെ മുഴുവൻ പാതയും കണ്ടെത്തുന്നതിന് ഉപയോഗിക്കുന്നു. ആദ്യത്തെ സ്ക്രിപ്റ്റ് വിൻഡോസ് കമാൻഡ് പ്രോംപ്റ്റിനായി ഒരു ബാച്ച് ഫയൽ ഉപയോഗിക്കുന്നു. എന്ന് തുടങ്ങുന്നു setlocal പരിസ്ഥിതി വേരിയബിൾ മാറ്റങ്ങൾ പ്രാദേശികവൽക്കരിക്കാൻ. സ്ക്രിപ്റ്റ് പിന്നീട് കമാൻഡ് നെയിം വേരിയബിളിലേക്ക് സജ്ജമാക്കുന്നു %command% അത് ശൂന്യമാണോ എന്ന് പരിശോധിക്കുന്നു. ദി for %%i in ("%command%") do ൽ ലിസ്റ്റ് ചെയ്തിരിക്കുന്ന ഡയറക്ടറികളിലൂടെ ലൂപ്പ് ആവർത്തിക്കുന്നു PATH പരിസ്ഥിതി വേരിയബിൾ. ഈ ലൂപ്പിനുള്ളിൽ, ദി if exist "%%j\%%~i.exe" ലൂപ്പിൻ്റെ നിലവിലെ ഡയറക്ടറിയിൽ എക്സിക്യൂട്ടബിൾ ഫയൽ നിലവിലുണ്ടോ എന്ന് പരിശോധിക്കുന്നു. കണ്ടെത്തിയാൽ, അത് പാത്ത് ഔട്ട്പുട്ട് ചെയ്യുകയും പുറത്തുകടക്കുകയും ചെയ്യുന്നു.
PowerShell-ൽ എഴുതിയ രണ്ടാമത്തെ സ്ക്രിപ്റ്റ്, പാരാമീറ്ററുകൾ നിർവചിച്ചുകൊണ്ടാണ് ആരംഭിക്കുന്നത് param. സ്ക്രിപ്റ്റ് കമാൻഡ് നെയിം വീണ്ടെടുത്ത് വിഭജിക്കുന്നു PATH പരിസ്ഥിതി വേരിയബിൾ ഉപയോഗിച്ച് വ്യക്തിഗത ഡയറക്ടറികൾ $env:PATH -split ';'. ദി Join-Path കമാൻഡ് ഓരോ ഡയറക്ടറിയും കമാൻഡ് നാമവുമായി സംയോജിപ്പിച്ച് എക്സിക്യൂട്ടബിൾ പാത്തുകൾ ഉണ്ടാക്കുന്നു. പിന്നീട് അത് ഉപയോഗിക്കുന്നു Test-Path ഈ പാതകളുടെ അസ്തിത്വം പരിശോധിക്കാൻ. എക്സിക്യൂട്ടബിൾ കണ്ടെത്തിയാൽ, അത് പാത്ത് ഔട്ട്പുട്ട് ചെയ്ത് പുറത്തുകടക്കുന്നു. പൈത്തണിൽ എഴുതിയ മൂന്നാമത്തെ സ്ക്രിപ്റ്റ് ഒരു ഫംഗ്ഷനെ നിർവചിക്കുന്നു which ൽ ലിസ്റ്റ് ചെയ്തിരിക്കുന്ന ഡയറക്ടറികളിൽ കമാൻഡിനായി തിരയാൻ PATH പരിസ്ഥിതി വേരിയബിൾ. അത് ഉപയോഗിക്കുന്നു os.pathsep സിസ്റ്റത്തിൻ്റെ പാത്ത് സെപ്പറേറ്റർ ലഭിക്കുന്നതിന് ഒപ്പം os.access എക്സിക്യൂട്ടബിലിറ്റി പരിശോധിക്കാൻ. കമാൻഡ് നാമം വ്യക്തമാക്കുന്ന ഒരു കമാൻഡ്-ലൈൻ ആർഗ്യുമെൻ്റ് ഉപയോഗിച്ചാണ് ഈ സ്ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്നത്, കമാൻഡ് കണ്ടെത്തിയാൽ അത് മുഴുവൻ പാത്തും പ്രിൻ്റ് ചെയ്യുന്നു.
വിൻഡോസിൽ ഒരു കമാൻഡിൻ്റെ മുഴുവൻ പാതയും നിർണ്ണയിക്കുന്നു
വിൻഡോസ് കമാൻഡ് പ്രോംപ്റ്റ് ഉപയോഗിക്കുന്നു
@echo off
setlocal
set "command=%1"
if "%command%"=="" (
echo Usage: %~n0 command_name
exit /b 1
)
for %%i in ("%command%") do (
for %%j in (".;%PATH:;=;.;%;") do (
if exist "%%j\%%~i.exe" (
echo %%j\%%~i.exe
exit /b 0
)
)
)
echo %command% not found
endlocal
PowerShell-ൽ കമാൻഡ് പാഥുകൾ കണ്ടെത്തുന്നു
PowerShell സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു
param (
[string]$command
)
if (-not $command) {
Write-Output "Usage: .\script.ps1 command_name"
exit 1
}
$path = $env:PATH -split ';'
foreach ($dir in $path) {
$exe = Join-Path $dir $command.exe
if (Test-Path $exe) {
Write-Output $exe
exit 0
}
}
Write-Output "$command not found"
പൈത്തൺ ഉപയോഗിച്ച് കമാൻഡ് ലൊക്കേഷനുകൾ കണ്ടെത്തുന്നു
പൈത്തൺ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു
import os
import sys
def which(command):
path = os.getenv('PATH')
for dir in path.split(os.pathsep):
exe = os.path.join(dir, command)
if os.path.isfile(exe) and os.access(exe, os.X_OK):
return exe
return None
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python script.py command_name")
sys.exit(1)
command = sys.argv[1]
path = which(command)
if path:
print(path)
else:
print(f"{command} not found")
വിൻഡോസിലെ വിപുലമായ പാത്ത് മാനേജ്മെൻ്റ് ടെക്നിക്കുകൾ
ഒരു കമാൻഡിൻ്റെ പൂർണ്ണ പാത കണ്ടെത്തുന്നതിന് അപ്പുറം, നിയന്ത്രിക്കുക PATH പൊരുത്തക്കേടുകൾ ഒഴിവാക്കുന്നതിനും സ്ക്രിപ്റ്റുകളുടെ സുഗമമായ നിർവ്വഹണം ഉറപ്പാക്കുന്നതിനും പരിസ്ഥിതി വേരിയബിൾ നിർണായകമാണ്. വിൻഡോസിൽ, എഡിറ്റ് ചെയ്യാൻ സിസ്റ്റം പ്രോപ്പർട്ടീസ് ഇൻ്റർഫേസ് ഉപയോഗിക്കാം PATH വേരിയബിൾ, എന്നാൽ ഇടയ്ക്കിടെയുള്ള മാറ്റങ്ങൾക്ക് ഇത് ബുദ്ധിമുട്ടായിരിക്കും. പകരം, ഉപയോഗിക്കുന്നത് setx കമാൻഡ് പ്രോംപ്റ്റിലെയോ പവർഷെല്ലിലെയോ കമാൻഡിന് ഈ വേരിയബിളുകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള കൂടുതൽ കാര്യക്ഷമമായ മാർഗം നൽകാൻ കഴിയും. ദി setx എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ സ്ഥിരമായി സജ്ജീകരിക്കാൻ കമാൻഡ് ഉപയോക്താക്കളെ അനുവദിക്കുന്നു, ഇത് പ്രത്യേക ഉപകരണങ്ങളോ ആപ്ലിക്കേഷനുകളോ മുൻഗണന നൽകേണ്ട സ്ക്രിപ്റ്റുകൾക്ക് ഉപയോഗപ്രദമാണ്. PATH.
മറ്റൊരു ഉപയോഗപ്രദമായ ഉപകരണം where കമാൻഡ്, ഇത് UNIX-ന് സമാനമായി പ്രവർത്തിക്കുന്ന ഒരു അന്തർനിർമ്മിത വിൻഡോസ് യൂട്ടിലിറ്റിയാണ് which കമാൻഡ്. ദി where തിരയൽ മാനദണ്ഡവുമായി പൊരുത്തപ്പെടുന്ന എക്സിക്യൂട്ടബിൾ ഫയലുകളുടെ പാതകൾ കണ്ടെത്താനും പ്രദർശിപ്പിക്കാനും കമാൻഡിന് കഴിയും. ഉദാഹരണത്തിന്, ഓട്ടം where python കമാൻഡ് പ്രോംപ്റ്റിൽ കാണുന്ന പൈത്തൺ എക്സിക്യൂട്ടബിളിൻ്റെ എല്ലാ സ്ഥാനങ്ങളും ലിസ്റ്റ് ചെയ്യും PATH. ഒരു ടൂളിൻ്റെ ഒന്നിലധികം പതിപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ വൈരുദ്ധ്യങ്ങൾ തിരിച്ചറിയുന്നതിനും പരിഹരിക്കുന്നതിനും ഇത് പ്രത്യേകിച്ചും സഹായകമാകും. ഉപയോഗം സംയോജിപ്പിച്ച് setx ഒപ്പം where, ഉപയോക്താക്കൾക്ക് അവരുടെ പരിസ്ഥിതിയെ മികച്ച രീതിയിൽ കൈകാര്യം ചെയ്യാനും കമാൻഡുകളുടെ ശരിയായ പതിപ്പുകൾ എക്സിക്യൂട്ട് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കാനും കഴിയും.
കമാൻഡ് പാത്ത് പ്രശ്നങ്ങളെക്കുറിച്ച് പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- എന്താണ് where വിൻഡോസിൽ കമാൻഡ്?
- ദി where വിൻഡോസിലെ കമാൻഡ് തിരയൽ മാനദണ്ഡങ്ങളുമായി പൊരുത്തപ്പെടുന്ന എക്സിക്യൂട്ടബിൾ ഫയലുകളുടെ പാതകൾ കണ്ടെത്തുകയും പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്നു.
- ഞാൻ എങ്ങനെ എഡിറ്റ് ചെയ്യും PATH പരിസ്ഥിതി വേരിയബിൾ?
- നിങ്ങൾക്ക് എഡിറ്റ് ചെയ്യാം PATH സിസ്റ്റം പ്രോപ്പർട്ടീസ് ഇൻ്റർഫേസ് വഴിയോ അല്ലെങ്കിൽ ഉപയോഗിച്ച് വേരിയബിൾ setx കമാൻഡ് പ്രോംപ്റ്റിലോ പവർഷെലിലോ ഉള്ള കമാൻഡ്.
- ഒരു കമാൻഡിൻ്റെ പാത കണ്ടെത്താൻ എനിക്ക് PowerShell ഉപയോഗിക്കാമോ?
- അതെ, ലിസ്റ്റുചെയ്തിരിക്കുന്ന ഡയറക്ടറികളിലൂടെ ആവർത്തിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു കമാൻഡിൻ്റെ പാത കണ്ടെത്താൻ PowerShell ഉപയോഗിക്കാം. PATH പരിസ്ഥിതി വേരിയബിൾ.
- എന്താണ് തമ്മിലുള്ള വ്യത്യാസം setx ഒപ്പം set കമാൻഡ് പ്രോംപ്റ്റിൽ?
- ദി set കമാൻഡ് നിലവിലെ സെഷനിൽ മാത്രം എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ സജ്ജമാക്കുന്നു setx സെഷനുകളിലുടനീളം അവയെ സ്ഥിരമായി സജ്ജമാക്കുന്നു.
- പൈത്തണിൽ ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ ആണോ എന്ന് എനിക്ക് എങ്ങനെ പരിശോധിക്കാം?
- പൈത്തണിൽ ഒരു ഫയൽ എക്സിക്യൂട്ടബിൾ ആണോ എന്ന് നിങ്ങൾക്ക് പരിശോധിക്കാം os.access(file, os.X_OK).
- എന്ത് ചെയ്യുന്നു os.pathsep പൈത്തണിൽ ചെയ്യണോ?
- ദി os.pathsep ആട്രിബ്യൂട്ട് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഉപയോഗിക്കുന്ന പാത്ത് സെപ്പറേറ്റർ നൽകുന്നു, ഇത് വിൻഡോസിൽ ഒരു അർദ്ധവിരാമം (;) ആണ്.
അന്തിമ ചിന്തകൾ:
പൊരുത്തക്കേടുകൾ ഒഴിവാക്കുന്നതിനും ശരിയായ സ്ക്രിപ്റ്റ് എക്സിക്യൂഷൻ ഉറപ്പാക്കുന്നതിനും വിൻഡോസ് കമാൻഡ് ലൈനിലെ കമാൻഡ് പാഥുകൾ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുകയും കണ്ടെത്തുകയും ചെയ്യുന്നത് വളരെ പ്രധാനമാണ്. ബാച്ച് ഫയലുകൾ, പവർഷെൽ സ്ക്രിപ്റ്റുകൾ, പൈത്തൺ എന്നിവ ഉപയോഗിക്കുന്നതിലൂടെ, ഉപയോക്താക്കൾക്ക് UNIX 'which' കമാൻഡിൻ്റെ പ്രവർത്തനക്ഷമത ആവർത്തിക്കാനാകും. കൂടാതെ, എവിടെ കമാൻഡ് പോലെയുള്ള ടൂളുകൾ പ്രയോജനപ്പെടുത്തുകയും PATH വേരിയബിൾ കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നത് ഈ പ്രക്രിയയെ കൂടുതൽ കാര്യക്ഷമമാക്കും. ഈ സാങ്കേതിക വിദ്യകൾ ശുദ്ധവും കാര്യക്ഷമവുമായ വികസന അന്തരീക്ഷം നിലനിർത്തുന്നതിന് ശക്തമായ പരിഹാരങ്ങൾ നൽകുന്നു, പാതയുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങൾ വേഗത്തിൽ തിരിച്ചറിയാനും പരിഹരിക്കാനും ഉപയോക്താക്കളെ സഹായിക്കുന്നു.