$PROFILEãæ¹å
ååã¯é¢æ°ã䜿ã£ãŠLinuxã®ã³ãã³ããWindowsã®ã³ãã³ãã®ããã«ããŠäœ¿ãæ¹æ³ã玹ä»ãããåååãäžããèšå®ïŒ$PROFILEïŒã¯ã·ã³ãã«ãªãã®ã ãä»åã¯ååã®ãã¡ã€ã«ãããå°ãã¢ããããŒããã以äžã®èšå®ãã¡ã€ã«ãåãäžããã
function _path_to_linux {
$linuxpath = @()
# Convert arguments to Linux path style
ForEach($winpath in $Args) {
if ($winpath -eq $null) {
Break
}
# Change drive path to mount path
if ($winpath -match '^[A-Z]:') {
$drive = $winpath.Substring(0,1).ToLower()
$linuxpath += "/mnt/" + $drive + $winpath.Substring(2).Replace('\','/')
}
# Option is not converted
elseif ($winpath -match '^[-+]') {
$linuxpath += $winpath
}
# Other argument is converted
else {
$linuxpath += ([String]$winpath).Replace('\','/')
}
}
$linuxpath
}
function less {
wsl less $(_path_to_linux $Args)
}
function lv {
wsl lv $(_path_to_linux $Args)
}
function vi {
wsl vi $(_path_to_linux $Args)
}
function vim {
wsl vim $(_path_to_linux $Args)
}
function nvim {
wsl nvim $(_path_to_linux $Args)
}
function tree {
wsl tree $(_path_to_linux $Args)
}
function git {
wsl git $(_path_to_linux $Args)
}
function grep {
$pattern_exists = $False
$path_exists = $False
$skip = $False
$i = 0
ForEach($a in $Args) {
if ($skip) {
$skip = $False
$i++
continue
}
# Options without argumetn
if ($a -cmatch '^-[abcdDEFGHhIiJLlmnOopqRSsUVvwxZ]') {
}
# Options with argument
elseif ($a -cmatch '^-[ABC]') {
$skip = $True
}
# Pattern file specification option
elseif ($a -ceq '-f') {
$skip = $True
$pattern_exists = $True
$Args[$i+1] = _path_to_linux $Args[$i+1]
}
# Pattern specification option
elseif ($a -ceq '-e') {
$skip = $True
$pattern_exists = $True
}
# Pattern or file path
elseif ($a -cnotmatch '^-') {
if ($pattern_exists) {
$path_exists = $True
}
else {
$pattern_exists = $True
}
}
$i++
}
# Change file path
if ($path_exists) {
$Args[-1] = _path_to_linux $Args[-1]
}
$Input | wsl grep $Args
}
Set-Alias -Name open -Value explorer
function ll { Get-ChildItem -Force }
function la { Get-ChildItem -Force }
Set-Alias -Name edge -Value "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
Set-Alias -Name chrome -Value "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
颿°ãšããŠå®çŸ©ããã³ãã³ããããã€ã远å ããŠããã»ããååãpath_to_linuxããšããŠçšæãããã¹å€æçšã®ãŠãŒã¶ãŒå®çŸ©é¢æ°ãã_path_to_linuxããšåç§°å€æŽããäžèº«ãæ¡åŒµããŠããããŸããgrep颿°ã«ã€ããŠã¯åå¥ã«åŒæ°ãããŒã¹ããåŠçã«å€æŽããã以éã§ã¯ã倿Žããå 容ã«ã€ããŠå ·äœçã«èª¬æããŠãããã
_path_to_linux颿°ã§åŒæ°ããããšãªãåããŠåŠç
path_to_linux颿°ã®ç®çã¯ãåŒæ°ãšããŠæž¡ãããWindowsã®ãã¹ãLinuxã§å©çšã§ãããã¹ã«å€æãããšãããã®ã ãååãã¡ãã£ãšããæ¡åŒµãšããŠãè€æ°ã®åŒæ°ãåããããã«ããŠããã
macOSãLinuxã§äœ¿ãããã³ãã³ãã®åŒæ°ã«ã¯çµ¶å¯Ÿçãªæ±ºãŸããšãããã®ããªãããæ £äŸçã«ãããã£ãæãã«ãªã£ãŠããããšãå€ãããšã¯èšããã®ã ããããã«åŒ·å¶åã¯ãªãããã®ãããå šãŠã®ã³ãã³ãã«å¯ŸããŠé©åãªããŒã¹ãè¡ã£ãŠåŠçãããããªå€æé¢æ°ãæžãããšã¯ã§ããªããå³å¯ã«ããããšããã°ãå šãŠã®ã³ãã³ãã«å¯ŸããŠåå¥ã«ããŒãµãæžãããå šãŠã®ã³ãã³ãã«å¯ŸããŠåå¥ã«ããŒãµåãã®ã«ãŒã«ãæžãå¿ èŠããããã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ã®å ¥åè£å®æ©èœãªã©ã¯ããã«è©²åœããŠãããã³ãã³ãããšã«åå¥ã«è£å®ã«ãŒã«ãæžãããã¡ã€ã«ãçšæãããŠãããããã
ãããããããèªåã§å®è£ ããã®ã¯æéã ããã䜿ãã³ãã³ãã«å¯ŸããŠã®ã¿ããããªãã«åäœãããã®ãäœã£ãŠãããããã§ããã ãããããã§ãåålinux_to_path颿°ãšããŠäœæãããã®ããæ¬¡ã®ããã«æ¡åŒµãã_path_to_linux颿°ãšããã
function _path_to_linux {
$linuxpath = @()
# Convert arguments to Linux path style
ForEach($winpath in $Args) {
if ($winpath -eq $null) {
Break
}
# Change drive path to mount path
if ($winpath -match '^[A-Z]:') {
$drive = $winpath.Substring(0,1).ToLower()
$linuxpath += "/mnt/" + $drive + $winpath.Substring(2).Replace('\','/')
}
# Option is not converted
elseif ($winpath -match '^[-+]') {
$linuxpath += $winpath
}
# Other argument is converted
else {
$linuxpath += ([String]$winpath).Replace('\','/')
}
}
$linuxpath
}
äž»ãªå€æŽå å®¹ã¯æ¬¡ã®éãã ã
- 颿°åç§°ãpath_to_linuxãã_path_to_linuxãžå€æŽããã®é¢æ°ã¯ãŠãŒã¶ãŒãçŽæ¥äœ¿çšããã¿ã€ãã®é¢æ°ã§ã¯ãªããã»ãã®é¢æ°ããã¹å€æçšã®ããŒã«ãšããŠå©çšãããããåç§°ã®åã«ã¢ã³ããŒããŒãä»ããŠåºå¥ãã
- 倿ãããã©ã€ãåããC:ãã«åºå®ãããŠããã®ã§ãããããAããããZããŸã§äœ¿ããããã«å€æŽ
- åŒæ°ãã-ããŸãã¯ã+ãããå§ãŸã£ãŠããå Žåã«ã¯ãã¹å€æã®å¯Ÿè±¡ã§ã¯ãªããã®ãšããŠå€æãè¡ããªãããã«å€æŽ
- åŒæ°ãæ°å€ã ã£ãå Žåã¯èªåçã«æ°å€åã«å€æãããŠããŸãæåå倿ãã§ããªããªãã®ã§ãæååãžæç€ºçã«ãã£ã¹ãããŠããåŠçããããã«å€æŽ
Windowsã§ã¯Cãã©ã€ãã«ã·ã¹ãã é¢ä¿ã®ãã¡ã€ã«ããããã€ãããä»çµã¿ã«ãªã£ãŠãããCãã©ã€ã以å€ã®ã¹ãã¬ãŒãžã«é¢ããŠã¯ããããç¶æ³ã«å¿ããŠDãã©ã€ããEãã©ã€ããFãã©ã€ãâŠâŠãšãã£ãå
·åã«ãã©ã€ãåãåœãŠãããããã«ãªã£ãŠãããååã®å®è£
ã¯Cãã©ã€ãåºå®ã«ãªã£ãŠããã®ã§ããã®éšåãAããZãŸã§äœ¿çšã§ããããã«å€æŽããã
該åœããåŠçéšåã¯ä»¥äžã®éãã ããŸãåŒæ°ããã©ã€ãåã§å§ãŸã£ãŠãããã©ãããæ£èŠè¡šçŸã§å€å®ããåŸã¯æåå倿ãè¡ã£ãŠLinuxã§äœ¿çšã§ãããã¹ãžå€æããŠããã
# Change drive path to mount path
if ($winpath -match '^[A-Z]:') {
$drive = $winpath.Substring(0,1).ToLower()
$linuxpath += "/mnt/" + $drive + $winpath.Substring(2).Replace('\','/')
}
macOSãLinuxã®ã³ãã³ãã§ã¯ã-ãããå§ãŸãåŒæ°ã¯ãªãã·ã§ã³ãšããŠæå®ãããŠããããšãå€ããããã«ãã¹ãèšèŒãããããšã¯ãŸããªãããªãã·ã§ã³ã¯ã-ãã§ã¯ãªãã+ãã§å§ãŸã£ãŠããããšãããããã¹ã«é¢ããŠãããã¹ãã®ãã®ãã-ããã+ãããå§ãŸã£ãŠããããšãããŸããªãïŒäœããªãããã§ã¯ãªãããããã£ãååãä»ããããšãå°ãªãïŒãããããããšãããã-ããŸãã¯ã+ãããå§ãŸã£ãŠããæååã¯ãããã倿ã®å¯Ÿè±¡ãšããªãããã«ä»¥äžã®åŠçã远å ããã
# Option is not converted
elseif ($winpath -match '^[-+]') {
$linuxpath += $winpath
}
ã³ãã³ãã«ãã£ãŠã¯åŒæ°ã«æ°å€ãåããã®ãããã®ã ããPowerShellã§ã¯ãã®æã®ããŒã¿ã¯èªåçã«æ°å€åã«å€æãããããšã«ãªãããã®ããã.Replace()ã«ããæåå眮æãã§ããªããªãããã®ããã_path_to_linux颿°ã§ã¯æ¬¡ã®ããã«æç€ºçã«æååã«ãã£ã¹ãããŠãã眮æåŠçãè¡ãããã«èª¿æŽããã
# Other argument is converted
else {
$linuxpath += ([String]$winpath).Replace('\','/')
}
macOSãLinuxã®ã³ãã³ãã§ã¯ãâããç¹å¥ãªæå³ãæã£ãŠããããšãå€ãããâããæå®ããã以éã¯ããããã-ããã+ãããå§ãŸã£ãŠããŠããªãã·ã§ã³ãšããŠã¯åŠçããåŒæ°ãšããŠåŠçãããšãããã®ã ãããã颿°ã§ãåŠçããŠãããããšããã ããã$Argsãã䜿ãå ŽåããŸãåŠçã§ããªãã
ããã¯ããâããPowerShellã«ãšã£ãŠæå³ã®ãããã®ãšããŠåŠçãããããã ããâããåŒæ°ã«æž¡ããŠã$Argsã«æŽçãããæ®µéã§åãé€ãããŠããŸãããâããå«ããŠåŠçããããšãããšã$Argsãžåé¢ããæ®µéã®åŠçã«é¢ããŠãèªåã§å®è£ ããªããã°ãªããªããé¢åãªã®ã§ããããŸã§ããªããŠããããšæãã
ããããŠæ°ããæŽçãã_path_to_linux颿°ã詊ãã«å®è¡ããŠã¿ããšã次ã®ããã«ãªãã
åŒæ°ã«æ£èŠè¡šçŸããšãã¿ã€ãã®ã³ãã³ãã ãšåé¡ãçºçããããšãããã®ã ãããã以å€ã®ã³ãã³ãã§ããã°åŒæ°ã_path_to_linux颿°ã§ãŸãããšåŠçãããããšã§ãããã䜿ããæãã«ã¯ãªãã
grep颿°ã§ã¯ç¬èªã«ãªãã·ã§ã³è§£æããŒãµãå®è£
grepã³ãã³ãã®åŒæ°ã¯æ¬¡ã®ãããªæãã§æå®ã§ããããã«ãªã£ãŠããã_path_to_linux颿°ã§ãåŠçã§ããã±ãŒã¹ã§ããã°ã誀ã£ãŠãã¿ãŒã³ã«å¯ŸããŠãã¹å€æããããŠããŸãããšãããåŸãã
âgrepã³ãã³ãã®æå®äŸ - macOS (BSD General Commands Manual)
grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color[=when]]
[--colour[=when]] [--context[=num]] [--label] [--line-buffered]
[--null] [pattern] [file ...]
ããŸãå³å¯ã«ãã®èŸºããå®è£ ããŠããåŽåã®å²ã«ã¯ããã»ã©å©çããªããã ããgrepã³ãã³ãã¯é »çšããã³ãã³ãã®1ã€ã ããã¿ãŒã³ããã¹å€æããããšãããé¢åãªã®ã§ãgrepã«å¯ŸããŠã¯å°çšã«åŒæ°ã®ããŒã¹åŠçãããªãããã¹ã ãããã³ãã€ã³ãã«å€æãããããæ¬¡ã®ãããªgrep颿°ãäœæããŠããã
function grep {
$pattern_exists = $False
$path_exists = $False
$skip = $False
$i = 0
ForEach($a in $Args) {
if ($skip) {
$skip = $False
$i++
continue
}
# Options without argumetn
if ($a -cmatch '^-[abcdDEFGHhIiJLlmnOopqRSsUVvwxZ]') {
}
# Options with argument
elseif ($a -cmatch '^-[ABC]') {
$skip = $True
}
# Pattern file specification option
elseif ($a -ceq '-f') {
$skip = $True
$pattern_exists = $True
$Args[$i+1] = _path_to_linux $Args[$i+1]
}
# Pattern specification option
elseif ($a -ceq '-e') {
$skip = $True
$pattern_exists = $True
}
# Pattern or file path
elseif ($a -cnotmatch '^-') {
if ($pattern_exists) {
$path_exists = $True
}
else {
$pattern_exists = $True
}
}
$i++
}
# Change file path
if ($path_exists) {
$Args[-1] = _path_to_linux $Args[-1]
}
$Input | wsl grep $Args
}
ä»åã¯grep颿°ã«ã€ããŠè©³ãã説æã¯è¡ããªãããèŠããã«grepã³ãã³ãã®åŒæ°ã«åããããã¹ã ããèŠã€ããŠãã³ãã€ã³ãã§_path_to_linux颿°ã§ãã¹å€æããŠãããã©ããã£ãgrepã³ãã³ããå®è¡ãããããšã«ãªããåºåããããã«ãã¡ãã£ãšå€æŽããç¶æ ã®å®è¡äŸã次ã«èšèŒããã
grep颿°ã®åŠçã¯ããã¡ãã£ãšæ±çšçã«åºããŠæŽçããŠããã°ãâabcdDEFGHhIiJLlmnOopqRSsUVvwxZâ âABCefâ âfâ (åŒæ°ãªããªãã·ã§ã³ãåŒæ°ãããªãã·ã§ã³ãåŒæ°ãããªãã·ã§ã³ã§ãã¹å€æãããªãã·ã§ã³)ã®ãããªåŒæ°ãäžããŠèªåçã«ããŒã¹ããŠå€æãããããªåŠçãå®è£ ããããšãã§ããããããŸã§ããå¿ èŠã¯ãªããšæãããPowerShell颿°ãçµã課é¡ãšããŠã¯å®çšçã§é¢çœããããããªãã
å¿ èŠã«å¿ããŠåŸã ã«ã«ã¹ã¿ãã€ãº
ã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãšããŠPowerShellã䜿ã£ãŠããäžã§ã¯$PROFILEãããã«ã¯ãªãŒã³ã§ãã€åœ¹ã«ç«ã€ç¶æ ã«ããŒããããã倧åã«ãªã£ãŠãããããŸããã ããããããšè¥å€§åããŠã¡ã³ããã³ã¹ã§ããªããªãã®ã§ãã»ã©ãããšããã§çããŠããã»ãããããšæãã
ãããŠãããç¹°ãè¿ãæžããŠããããããããããšã«åãããŠçްãã調æŽããŠããããšããã€ã³ãã ãäžäŸ¿ã ãšæã£ããã$PROFILEãã«ã¹ã¿ãã€ãºãããããããäœæ¥ãç¹°ãè¿ããŠããããšã§èªåã ãã®äœ¿ããããç°å¢ãåºæ¥äžãã£ãŠãããã¹ãã¬ã¹ããªãŒãªç°å¢ãšããã®ã¯ãæ¯æ¥äœæ¥ãããŠããäžã§ãšãŠã倧åã§ããã

