เดตเดฟเตปเดกเตเดธเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดเตเดฆเตเดฏเด: โเดเดจเตเดคเตเดเตเดฃเตเดเต เดเดชเตเดชเตเดดเตเด เดเดฒเตเดฒ <ะะกะขะะะฌะขะ ะขะฃะข ะะฎะะะะฃะฎ ะะะะะะะฃ LINUX>
?. เด
เดคเต เดถเดเตเดคเดฎเดพเดฏ เดธเตเดตเตเดชเตเดชเต เดเดฃเตเดเตเดเดฟเดฒเตเด less
เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏ เดเดชเดเดฐเดฃเดเตเดเตพ grep
เด
เดฅเดตเดพ sed
, Windows เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด
เดตเดฐเตเดเต เดฆเตเดจเดเดฆเดฟเดจ เดเตเดฒเดฟเดฏเดฟเตฝ เด เดเดฎเดพเตปเดกเตเดเตพ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต.
wsl.exe
(เดเดฆเดพ. wsl ls
). เดเดคเต เดเดพเดฐเตเดฏเดฎเดพเดฏ เดชเตเดฐเตเดเดคเดฟเดฏเดพเดฃเตเดเตเดเดฟเดฒเตเด, เด เดเดชเตเดทเตป เดจเดฟเดฐเดตเดงเดฟ เดฆเตเดทเดเตเดเดณเดพเตฝ เดเดทเตเดเดชเตเดชเตเดเตเดจเตเดจเต.
- เดธเตผเดตเตเดตเดตเตเดฏเดพเดชเดฟเดฏเดพเดฏ เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตฝ
wsl
เดฎเดเตเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเตเด เดชเตเดฐเดเตเดคเดฟเดตเดฟเดฐเตเดฆเตเดงเดตเตเดฎเดพเดฃเต. - เดกเดฏเดฑเดเตโเดเดฑเดฟ เดธเตเดชเตเดชเดฑเตเดฑเตเดฑเดฑเตเดเดณเตเดเตเดเดพเตพ เดฌเดพเดเตเดเตโเดธเตเดฒเดพเดทเตเดเตพ เดเดธเตโเดเตเดชเตเดชเต เดชเตเดฐเดคเตเดเดเตเดเดณเดพเดฏเดฟ เดตเตเดฏเดพเดเตเดฏเดพเดจเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดฟเดฒเต เดตเดฟเตปเดกเตเดธเต เดชเดพเดคเตเดคเตเดเตพ เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ.
- เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดฟเดฒเต เดตเดฟเตปเดกเตเดธเต เดชเดพเดฅเตเดเตพ WSL-เดฒเต เดฎเตเดฃเตเดเต เดชเตเดฏเดฟเดจเตเดฑเดฟเดฒเตเดเตเดเต เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- เด เดชเดฐเดจเดพเดฎเดเตเดเดณเตเด เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด เดเดณเตเดณ WSL เดชเตเดฐเตเดซเตเดฒเตเดเดณเดฟเตฝ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดฎเดพเดจเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- Linux เดชเดพเดคเตเดคเต เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- เดเดฎเดพเตปเดกเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- เดตเดพเดฆเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฒเดฟเดจเดเตเดธเต เดเดฎเดพเตปเดกเตเดเตพ เดตเดฟเตปเดกเตเดธเดฟเดจเต เดเตเดดเดฟเตฝ เดฐเดฃเตเดเดพเด เดคเดฐเด เดชเตเดฐเดจเตเดฎเดพเดฐเตเดชเตเดชเตเดฒเตเดฏเดพเดฃเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเดจเตเดจเดคเต - เดเตเดเดพเดคเต เดจเตเดฑเตเดฑเตเดตเต เดเดฎเดพเตปเดกเตเดเดณเตเดเตเดเดพเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฃเต. เด เดตเดฐเตเดเต เด เดตเดเดพเดถเดเตเดเตพ เดคเตเดฒเตเดฏเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดค เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต.
เดชเดตเตผเดทเตเตฝ เดซเดเดเตเดทเตป เดฑเดพเดชเตเดชเดฑเตเดเตพ
PowerShell เดซเดเดเตโเดทเตป เดฑเดพเดชเตเดชเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต, เดจเดฎเตเดเตเดเต เดเดฎเดพเตปเดกเต เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดเตเตผเดเตเดเดพเดจเตเด เดชเตเดฐเดฟเดซเดฟเดเตโเดธเตเดเดณเตเดเต เดเดตเดถเตเดฏเดเดค เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด. wsl
, เดตเดฟเตปเดกเตเดธเต เดชเดพเดคเตเดคเตเดเตพ WSL เดชเดพเดคเตเดคเตเดเดณเดฟเดฒเตเดเตเดเต เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดทเตเดฒเตเดฒเตเดเตพเดเตเดเตเดณเตเดณ เด
เดเดฟเดธเตเดฅเดพเดจ เดเดตเดถเตเดฏเดเดคเดเตพ:
- เดเดฐเต Linux เดเดฎเดพเตปเดกเดฟเดจเตเด เดเดฐเต เดชเตเดฐเดฟเตฝ เดเดฐเต เดซเดเดเตเดทเตป เดฑเดพเดชเตเดชเตผ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด.
- เดทเตเตฝ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดพเดฏเดฟ เดชเดพเดธเตเดธเดพเดเตเดเดฟเดฏ เดตเดฟเตปเดกเตเดธเต เดชเดพเดคเตเดคเตเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเตเดเดฏเตเด เด เดตเดฏเต WSL เดชเดพเดคเตเดคเตเดเดณเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเดเดฏเตเด เดตเตเดฃเด.
- เดทเตเตฝ เดตเดฟเดณเดฟเดเตเดเดฃเด
wsl
เดเดคเตเดเตเดเดฟเดฒเตเด เดชเตเดชเตเดชเตเดฒเตเตป เดเตปเดชเตเดเตเดเดฟเดฒเตเดเตเดเต เดเดเดฟเดคเดฎเดพเดฏ Linux เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดซเดเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเดฟเดฏ เดเดคเตเดเตเดเดฟเดฒเตเด เดเดฎเดพเตปเดกเต เดฒเตเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เดเตเดฎเดพเดฑเตเด.
เดเดคเต เดเดฎเดพเตปเดกเดฟเดฒเตเด เด เดชเดพเดฑเตเดฑเตเตบ เดชเตเดฐเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด เดฑเดพเดชเตเดชเดฑเตเดเดณเตเดเต เดจเดฟเตผเดตเดเดจเด เดจเดฎเตเดเตเดเต เด เดฎเตเตผเดคเตเดคเดฎเดพเดเตเดเดพเดจเตเด เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดฎเดพเตปเดกเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดตเดฏเต เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
# The commands to import.
$commands = "awk", "emacs", "grep", "head", "less", "ls", "man", "sed", "seq", "ssh", "tail", "vim"
# Register a function for each command.
$commands | ForEach-Object { Invoke-Expression @"
Remove-Alias $_ -Force -ErrorAction Ignore
function global:$_() {
for (`$i = 0; `$i -lt `$args.Count; `$i++) {
# If a path is absolute with a qualifier (e.g. C:), run it through wslpath to map it to the appropriate mount point.
if (Split-Path `$args[`$i] -IsAbsolute -ErrorAction Ignore) {
`$args[`$i] = Format-WslArgument (wsl.exe wslpath (`$args[`$i] -replace "", "/"))
# If a path is relative, the current working directory will be translated to an appropriate mount point, so just format it.
} elseif (Test-Path `$args[`$i] -ErrorAction Ignore) {
`$args[`$i] = Format-WslArgument (`$args[`$i] -replace "", "/")
}
}
if (`$input.MoveNext()) {
`$input.Reset()
`$input | wsl.exe $_ (`$args -split ' ')
} else {
wsl.exe $_ (`$args -split ' ')
}
}
"@
}
เดชเดเตเดเดฟเด $command
เดเดฑเดเตเดเตเดฎเดคเดฟ เดเดฎเดพเตปเดกเตเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดฐเตเดจเตเดจเดฟเดจเตเด เดเดฐเต เดซเดเดเตเดทเตป เดฑเดพเดชเตเดชเตผ เดกเตเดจเดพเดฎเดฟเดเต เดเดฏเดฟ เดเดจเดฑเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต Invoke-Expression
(เดซเดเดเตเดทเดจเตเดฎเดพเดฏเดฟ เดตเตเดฐเตเดฆเตเดงเตเดฏเดฎเตเดณเตเดณ เดเดคเตเดเตเดเดฟเดฒเตเด เด
เดชเดฐเดจเดพเดฎเดเตเดเตพ เดเดฆเตเดฏเด เดจเตเดเตเดเด เดเตเดฏเตเดคเตเดเตเดฃเตเดเต).
เดเดฎเดพเตปเดกเต เดฒเตเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดฟเดฒเตเดเต เดซเดเดเตเดทเตป เดเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดเดฎเดพเตปเดกเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดตเดฟเตปเดกเตเดธเต เดชเดพเดฅเตเดเตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดจเตเดจเต Split-Path
ะธ Test-Path
เดคเตเดเตผเดจเตเดจเต เด เดชเดพเดคเดเดณเต WSL เดชเดพเดคเดเดณเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดเดฐเต เดธเดนเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดเต เดเดเตเดเตพ เดชเดพเดคเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต Format-WslArgument
, เด
เดคเต เดเดเตเดเตพ เดชเดฟเดจเตเดจเตเดเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเด. เดคเตเดฑเตเดฑเดพเดฏเดฟ เดตเตเดฏเดพเดเตเดฏเดพเดจเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจ เดธเตโเดชเตเดฏเตโเดธเตเดเดณเตเด เดชเดฐเดพเตปเดคเตเดธเดฟเดธเตเด เดชเตเดฒเตเดณเตเดณ เดชเตเดฐเดคเตเดฏเตเด เดชเตเดฐเดคเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเต เดฐเดเตเดทเดชเตเดชเตเดเตเดจเตเดจเต.
เดเดเตเดตเดฟเตฝ, เดเดเตเดเตพ เด
เดฑเดฟเดฏเดฟเดเตเดเตเดจเตเดจเต wsl
เดชเตเดชเตเดชเตเดฒเตเตป เดเตปเดชเตเดเตเดเตเด เดเดคเตเดเตเดเดฟเดฒเตเด เดเดฎเดพเตปเดกเต เดฒเตเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเตเด.
เด เดฑเดพเดชเตเดชเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต เดเตเตผเดเตเดเดพเดคเต เดคเดจเตเดจเต เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดฟเดฏเดชเตเดชเตเดเตเด Linux เดเดฎเดพเตปเดกเตเดเดณเต เดเตเดเตเดคเตฝ เดธเตเดตเดพเดญเดพเดตเดฟเดเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดตเดฟเดณเดฟเดเตเดเดพเด wsl
เดชเดพเดคเดเตพ เดเดเตเดเดจเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดฒเดชเตเดชเตเดเดพเดคเต:
man bash
less -i $profile.CurrentUserAllHosts
ls -Al C:Windows | less
grep -Ein error *.log
tail -f *.log
เดเดฎเดพเตปเดกเตเดเดณเตเดเต เด
เดเดฟเดธเตเดฅเดพเดจ เดธเตเดฑเตเดฑเต เดเดตเดฟเดเต เดเดพเดฃเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดฒเดฟเดธเตโเดฑเตเดฑเดฟเตฝ เดเตเตผเดคเตเดคเตเดเตเดฃเตเดเต เดเดคเต เดฒเดฟเดจเดเตโเดธเต เดเดฎเดพเตปเดกเดฟเดจเตเด เดทเตเตฝ เดธเตเดทเตโเดเดฟเดเตเดเดพเดจเดพเดเตเด. เดจเดฟเดเตเดเดณเดฟเดฒเตเดเตเดเต เด เดเตเดกเต เดเตเตผเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ
เดฒเดฟเดจเดเตเดธเดฟเตฝ, เดฒเตเดเดฟเตป เดชเตเดฐเตเดซเตเดฒเตเดเดณเดฟเตฝ เด
เดชเดฐเดจเดพเดฎเดเตเดเดณเตเด เดเตเดเดพเดคเต/เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต, เดชเดคเดฟเดตเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฎเดพเตปเดกเตเดเตพเดเตเดเดพเดฏเดฟ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, alias ls=ls -AFh
เด
เดฅเดตเดพ export LESS=-i
). เดเดฐเต เดจเตเตบ-เดเดจเตเดฑเดฑเดพเดเตเดเตเดตเต เดทเตเดฒเตเดฒเดฟเดฒเตเดเต เดชเตเดฐเตเดเตโเดธเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดฐเดพเดฏเตเดฎ wsl.exe
- เดชเตเดฐเตเดซเตเดฒเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เด เดเดชเตเดทเดจเตเดเตพ เดกเดฟเดซเตเตพเดเตเดเดพเดฏเดฟ เดฒเดญเตเดฏเดฎเดฒเตเดฒ (เด
เดคเดพเดฏเดคเต. ls
WSL เตฝ เดเดชเตเดชเด wsl ls
เดฎเตเดเดณเดฟเตฝ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เด
เดชเดฐเดจเดพเดฎเดคเตเดคเดฟเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเตเดฎเดพเดฑเตเด).
PowerShell เดจเตฝเดเตเดจเตเดจเต -a
เดเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต -ArgumentList
), เดญเดพเดเดฟเด เดชเตเดฐเตเดเตพ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเดพเดฏเดฟ เดเดเตเดเตเดเตเดจเตเดจ เดฒเดฟเดจเดเตเดธเต เดเดฎเดพเตปเดกเตเดเดณเตเดฎเดพเดฏเดฟ เดเดคเต เดตเตเดฐเตเดฆเตเดงเตเดฏเดฎเดพเดเตเด), เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดพเดเตเดฏเดเดเดจ เดเดฑเตเดฑเดตเตเด เดเดเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฟเดฒเตเดฒ (เดกเดฟเดซเตเตพเดเตเดเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพเดเตเดเต เดเตเดฏเดฟเดฒเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดตเดถเตเดฏเดฎเดพเดฃเต, เดเดฎเดพเตปเดกเต เดจเดพเดฎเด เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ) .
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดเตเดเดณเตเดเต เดทเตเดฒเตเดฒเตเดเดณเดฟเตฝ เดเตเดฑเดฟเดฏ เดฎเดพเดฑเตเดฑเด เดตเดฐเตเดคเตเดคเดฟเดฏเดพเตฝ, เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต เดฎเดพเดคเตเด เดจเดฎเตเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด $PSDefaultParameterValues
, เดเดชเตเดชเด Linux เดเดฎเดพเตปเดกเตเดเตพเดเตเดเดพเดฏเดฟ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเดชเตเดทเดจเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเด!
function global:$_() {
โฆ
`$defaultArgs = ((`$WslDefaultParameterValues.$_ -split ' '), "")[`$WslDefaultParameterValues.Disabled -eq `$true]
if (`$input.MoveNext()) {
`$input.Reset()
`$input | wsl.exe $_ `$defaultArgs (`$args -split ' ')
} else {
wsl.exe $_ `$defaultArgs (`$args -split ' ')
}
}
เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต $WslDefaultParameterValues
เดเดฎเดพเตปเดกเต เดฒเตเดจเดฟเดฒเตเดเตเดเต, เดเดเตเดเตพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดตเดดเดฟ เด
เดฏเดฏเตเดเตเดเตเดจเตเดจเต wsl.exe
. เดกเดฟเดซเตเตพเดเตเดเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเดเตเดเดณเตเดเต PowerShell เดชเตเดฐเตเดซเตเดฒเดฟเดฒเตเดเตเดเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเดคเต เดเดเตเดเดจเตเดฏเตเดจเตเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต. เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเดคเต เดเตเดฏเตเดฏเดพเด!
$WslDefaultParameterValues["grep"] = "-E"
$WslDefaultParameterValues["less"] = "-i"
$WslDefaultParameterValues["ls"] = "-AFh --group-directories-first"
เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดฎเดพเดคเตเดเดฏเดฟเตฝ เดเดฏเดคเดฟเดจเดพเตฝ $PSDefaultParameterValues
, เดจเดฟเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเตเด "Disabled"
เด
เตผเดคเตเดฅเดคเตเดคเดฟเดฒเตเดเตเดเต $true
. เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดนเดพเดทเต เดชเดเตเดเดฟเดเดฏเตเดเต เด
เดงเดฟเด เดจเตเดเตเดเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเดพเดฃเต $WslDefaultParameterValues
เดจเดฟเดจเตเดจเต เดชเตเดฐเดคเตเดฏเตเดเด $PSDefaultParameterValues
.
เดตเดพเดฆเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด
เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเต เดเตเดฐเตเดฏเดฟเดฒเดฑเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเดพเตป PowerShell เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต Register-ArgumentCompleter
. เดฌเดพเดทเดฟเดจเต เดถเดเตเดคเดฟเดฏเตเดฃเตเดเต
# Register an ArgumentCompleter that shims bash's programmable completion.
Register-ArgumentCompleter -CommandName $commands -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
# Map the command to the appropriate bash completion function.
$F = switch ($commandAst.CommandElements[0].Value) {
{$_ -in "awk", "grep", "head", "less", "ls", "sed", "seq", "tail"} {
"_longopt"
break
}
"man" {
"_man"
break
}
"ssh" {
"_ssh"
break
}
Default {
"_minimal"
break
}
}
# Populate bash programmable completion variables.
$COMP_LINE = "`"$commandAst`""
$COMP_WORDS = "('$($commandAst.CommandElements.Extent.Text -join "' '")')" -replace "''", "'"
for ($i = 1; $i -lt $commandAst.CommandElements.Count; $i++) {
$extent = $commandAst.CommandElements[$i].Extent
if ($cursorPosition -lt $extent.EndColumnNumber) {
# The cursor is in the middle of a word to complete.
$previousWord = $commandAst.CommandElements[$i - 1].Extent.Text
$COMP_CWORD = $i
break
} elseif ($cursorPosition -eq $extent.EndColumnNumber) {
# The cursor is immediately after the current word.
$previousWord = $extent.Text
$COMP_CWORD = $i + 1
break
} elseif ($cursorPosition -lt $extent.StartColumnNumber) {
# The cursor is within whitespace between the previous and current words.
$previousWord = $commandAst.CommandElements[$i - 1].Extent.Text
$COMP_CWORD = $i
break
} elseif ($i -eq $commandAst.CommandElements.Count - 1 -and $cursorPosition -gt $extent.EndColumnNumber) {
# The cursor is within whitespace at the end of the line.
$previousWord = $extent.Text
$COMP_CWORD = $i + 1
break
}
}
# Repopulate bash programmable completion variables for scenarios like '/mnt/c/Program Files'/<TAB> where <TAB> should continue completing the quoted path.
$currentExtent = $commandAst.CommandElements[$COMP_CWORD].Extent
$previousExtent = $commandAst.CommandElements[$COMP_CWORD - 1].Extent
if ($currentExtent.Text -like "/*" -and $currentExtent.StartColumnNumber -eq $previousExtent.EndColumnNumber) {
$COMP_LINE = $COMP_LINE -replace "$($previousExtent.Text)$($currentExtent.Text)", $wordToComplete
$COMP_WORDS = $COMP_WORDS -replace "$($previousExtent.Text) '$($currentExtent.Text)'", $wordToComplete
$previousWord = $commandAst.CommandElements[$COMP_CWORD - 2].Extent.Text
$COMP_CWORD -= 1
}
# Build the command to pass to WSL.
$command = $commandAst.CommandElements[0].Value
$bashCompletion = ". /usr/share/bash-completion/bash_completion 2> /dev/null"
$commandCompletion = ". /usr/share/bash-completion/completions/$command 2> /dev/null"
$COMPINPUT = "COMP_LINE=$COMP_LINE; COMP_WORDS=$COMP_WORDS; COMP_CWORD=$COMP_CWORD; COMP_POINT=$cursorPosition"
$COMPGEN = "bind `"set completion-ignore-case on`" 2> /dev/null; $F `"$command`" `"$wordToComplete`" `"$previousWord`" 2> /dev/null"
$COMPREPLY = "IFS=`$'n'; echo `"`${COMPREPLY[*]}`""
$commandLine = "$bashCompletion; $commandCompletion; $COMPINPUT; $COMPGEN; $COMPREPLY" -split ' '
# Invoke bash completion and return CompletionResults.
$previousCompletionText = ""
(wsl.exe $commandLine) -split 'n' |
Sort-Object -Unique -CaseSensitive |
ForEach-Object {
if ($wordToComplete -match "(.*=).*") {
$completionText = Format-WslArgument ($Matches[1] + $_) $true
$listItemText = $_
} else {
$completionText = Format-WslArgument $_ $true
$listItemText = $completionText
}
if ($completionText -eq $previousCompletionText) {
# Differentiate completions that differ only by case otherwise PowerShell will view them as duplicate.
$listItemText += ' '
}
$previousCompletionText = $completionText
[System.Management.Automation.CompletionResult]::new($completionText, $listItemText, 'ParameterName', $completionText)
}
}
# Helper function to escape characters in arguments passed to WSL that would otherwise be misinterpreted.
function global:Format-WslArgument([string]$arg, [bool]$interactive) {
if ($interactive -and $arg.Contains(" ")) {
return "'$arg'"
} else {
return ($arg -replace " ", " ") -replace "([()|])", ('$1', '`$1')[$interactive]
}
}
เดฌเดพเดทเดฟเดจเตเดฑเต เดเดฟเดฒ เดเดจเตเดคเดฐเดฟเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเดคเต เดเตเดกเต เด เตฝเดชเตเดชเด เดธเดพเดจเตเดฆเตเดฐเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เด เดเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดคเดพเดฃเต:
- เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดชเดพเดธเดพเดเตเดเดฟ เดเดเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เดซเดเดเตโเดทเตป เดฑเดพเดชเตเดชเดฑเตเดเตพเดเตเดเตเดฎเดพเดฏเดฟ เดเดฐเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเต เดเดเดชเตเดฒเตเดฑเตเดฑเตผ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต
$commands
เดชเดฐเดพเดฎเตเดฑเตเดฑเดฑเดฟเตฝ-CommandName
เดตเตเดฃเตเดเดฟRegister-ArgumentCompleter
. - เดฌเดพเดทเต เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดทเตเตฝ เดซเดเดเตโเดทเดจเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดฐเต เดเดฎเดพเตปเดกเตเด เดฎเดพเดชเตเดชเต เดเตเดฏเตเดฏเตเดจเตเดจเต (เดฏเดพเดจเตเดคเตเดฐเดฟเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃ เดธเดตเดฟเดถเตเดทเดคเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเดพเตป, เดฌเดพเดทเต เดเดชเดฏเตเดเดเตเดเตพ
$F
, เดเดจเตเดจเดคเดฟเดจเตเดฑเต เดเตเดฐเตเดเตเดเตเดดเตเดคเตเดคเตcomplete -F <FUNCTION>
). - PowerShell เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต
$wordToComplete
,$commandAst
ะธ$cursorPosition
เดธเตเดชเตเดธเดฟเดซเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเดจเตเดธเดฐเดฟเดเตเดเต เดฌเดพเดทเดฟเดจเตเดฑเต เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดเตเดเตเดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจ เดฏเดพเดจเตเดคเตเดฐเดฟเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดฌเดพเดทเต. - เดเตเดฎเดพเดฑเดพเตป เดเดเตเดเตพ เดเดฐเต เดเดฎเดพเตปเดกเต เดฒเตเตป เดฐเดเดฟเดเตเดเตเดจเตเดจเต
wsl.exe
, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเตเดเดฏเตเด เดเดเดฟเดคเดฎเดพเดฏ เดเดเตเดเต-เดเดเดชเตเดฒเตเดทเตป เดซเดเดเตโเดทเดจเต เดตเดฟเดณเดฟเดเตเดเตเดเดฏเตเด เดซเดฒเดเตเดเตพ เดฒเตเตป-เดฌเต-เดฒเตเตป เดซเดพเดทเดจเดฟเตฝ เดเดเตเดเตโเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. - เด
เดชเตเดชเตเตพ เดเดเตเดเตพ เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต
wsl
เดเดฎเดพเตปเดกเต เดฒเตเตป เดเดชเดฏเตเดเดฟเดเตเดเต, เดฒเตเตป เดธเตเดชเตเดชเดฑเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดเตเดเตเดชเตเดเตเดเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเต เดเดฐเตเดจเตเดจเดฟเดจเตเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเตCompletionResults
, เด เดตเดฏเต เด เดเตเดเตเดเตเดเดฏเตเด เดธเตโเดชเตเดฏเตโเดธเตเดเดณเตเด เดชเดฐเดพเตปเดคเตเดธเดฟเดธเตเด เดชเตเดฒเตเดณเตเดณ เดชเตเดฐเดคเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดเตเดทเดชเตเดชเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดคเต เดคเตเดฑเตเดฑเดพเดฏเดฟ เดตเตเดฏเดพเดเตเดฏเดพเดจเดฟเดเตเดเดชเตเดชเตเดเตเด.
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเดณเตเดเต Linux เดเดฎเดพเตปเดกเต เดทเตเดฒเตเดฒเตเดเตพ เดฌเดพเดทเดฟเดจเตเดฑเต เด เดคเต เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเตเด! เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:
ssh -c <TAB> -J <TAB> -m <TAB> -O <TAB> -o <TAB> -Q <TAB> -w <TAB> -b <TAB>
เดเดฐเต เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเดตเตเด เดฎเตเดฎเตเดชเดคเตเดคเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเดฟเดจเต เดชเตเดฐเดคเตเดฏเตเด เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเต, WSL-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดนเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฒเตเดณเตเดณ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต!
<TAB>
เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเดฟเดฒเตเดเต เดธเตเดเตเดเดฟเตพ เดเตเดฏเตเดฏเตเด. <Ctrl + ะฟัะพะฑะตะป>
เดฒเดญเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดเดชเตเดทเดจเตเดเดณเตเด เดเดพเดฃเดฟเดเตเดเตเด.
เดเตเดเดพเดคเต, เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดฌเดพเดทเต เดธเตเดตเดฏเดฎเตเดต เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดเดณเตเดณเดคเดฟเดจเดพเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต PowerShell-เตฝ เดจเตเดฐเดฟเดเตเดเต Linux เดชเดพเดคเตเดคเตเดเตพ เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด!
less /etc/<TAB>
ls /usr/share/<TAB>
vim ~/.bash<TAB>
เดฌเดพเดทเต เดฏเดพเดจเตเดคเตเดฐเดฟเด เดชเตเตผเดคเตเดคเตเดเดฐเดฃเด เดซเดฒเดเตเดเดณเตเดจเตเดจเตเด เดเดฃเตเดเดพเดเตเดเดพเดคเตเดค เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ, เดชเดตเตผเดทเตเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดกเดฟเดซเตเตพเดเตเดเต เดตเดฟเตปเดกเตเดธเต เดชเดพเดคเตเดคเตเดเดณเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ, เดจเดฟเดเตเดเดณเตเดเต เดตเดฟเดตเตเดเดจเดพเดงเดฟเดเดพเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดฐเดฃเตเดเต เดชเดพเดคเดเดณเตเด เดเดฐเตเดธเดฎเดฏเด เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดคเตเดฐเตเดฎเดพเดจเด
เดชเดตเตผเดทเตเตฝ, เดกเดฌเตเดฒเตเดฏเตเดเดธเตเดเตฝ เดเดจเตเดจเดฟเดต เดเดชเดฏเตเดเดฟเดเตเดเต, เดจเดฎเตเดเตเดเต เดฒเดฟเดจเดเตเดธเต เดเดฎเดพเตปเดกเตเดเตพ เดตเดฟเตปเดกเตเดธเดฟเดฒเตเดเตเดเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. Win32 เดฌเดฟเตฝเดกเตเดเตพ เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฒเดฟเดจเดเตเดธเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพเดเตเดเดพเดฏเดฟ เดคเดฟเดฐเดฏเตเดเดฏเต เดฒเดฟเดจเดเตเดธเต เดทเตเดฒเตเดฒเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดจเดฟเดเตเดเดณเตเดเต เดตเตผเดเตเดเตเดซเตเดฒเต เดคเดเดธเตเดธเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดฒเตเดฒ. เดตเตเดฑเตเด
เดฎเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเด เดฎเตเดดเตเดตเตป เดธเตเดดเตโเดธเต เดเตเดกเตเด เด
เดคเต เดจเดฟเดเตเดเดณเตเดเต เดตเตผเดเตเดเตเดซเตเดฒเตเดฏเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด
เดงเดฟเด เดฎเดพเตผเดเตเดเดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดฒเดญเตเดฏเดฎเดพเดฃเต
เดเดคเต Linux เดเดฎเดพเตปเดกเตเดเดณเดพเดฃเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฑเตเดฑเดตเตเด เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเดคเต? เดตเดฟเตปเดกเตเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดฎเดฑเตเดฑเต เดเดจเตเดคเต เดธเดพเดงเดพเดฐเดฃ เดเดพเดฐเตเดฏเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒ? เด
เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเดฟเตฝ เดเดดเตเดคเตเด เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ
เด
เดตเดฒเดเดฌเด: www.habr.com