PowerShellã¯ã¯ãã¹ãã©ãããã©ãŒã ãç®æããŠããŸãããWindowsãšLinuxã®äž¡æ¹ã®ãã¹ã§ã®æäœã§å€ãã®åé¡ãçºçããŠããŸãã è¿ãå°æ¥ãWindowsã§\
ããµããŒãããå¿
èŠãããããšã¯ç解ããŠããŸãããå°ãªããšãããã©ã«ãã®ãã¹åºåãæåã/
ã«èšå®ããããšã§ãããã©ã«ãã®ãã¹æåãWindowsãš* nixã®äž¡æ¹ã§åãã«ããããšæããŸãã -replace "\\", "/"
ã䜿çšããŠãã¹ãæ£èŠåããããã«åŒ·å¶ããããšã§ãã
çŸåšã®ä»£æ¿æ¡ã¯ããŠãŒã¶ãŒã«ãã¹ã®æ£èŠåã匷å¶ããããšã§ã
PowerShellã¯ãã§ã«æ©èœããŠããããã¹ãæ£èŠåããå¿
èŠã¯ãããŸããã
ããã§ã¯ãPowerShellã¯éåžžã«ãŠãŒã¶ãŒãã¬ã³ããªãŒã§ãããŠãŒã¶ãŒã¯ããã©ãããã©ãŒã ã«é¢ä¿ãªãå¿«é©ãªã¹ã©ãã·ã¥ã䜿çšã§ããŸãã
ãã¹ããã©ã¯ãã£ã¹ã¯ããªãã©ã«ãã¹ã®äœ¿çšãé¿ãããã¹ã³ãã³ãã¬ããã䜿çšããããšã§ãã
ãã¹ããã©ã¯ãã£ã¹ã¯ããªãã©ã«ãã¹ã®äœ¿çšãé¿ãããã¹ã³ãã³ãã¬ããã䜿çšããããšã§ãã
@iSazonovã¯ãããããã
ãã¡ããããã¹ã»ã°ã¡ã³ããçµã¿åãããå Žåã¯ããã¹ã³ãã³ãã¬ããã䜿çšã§ããŸãã ãã ããè€æ°ã®ã»ã°ã¡ã³ããæã€çžå¯Ÿãã¹ãåç §ããã¹ã¯ãªãããäœæããŠããŠãã¹ã¯ãªãããã¯ãã¹ãã©ãããã©ãŒã ã§æ©èœããããšãæå³ããŠããå Žåã¯ãããããã€ããã¯ãããŸããã
Windowsã®PowerShell7ãã¬ãã¥ãŒ3ã§ã¯ãã¿ãè£å®ã¯åèšå·ã䜿çšããŠãã¹ãè£å®ããŸãã ããã¯ãPowerShellãã¯ãã¹ãã©ãããã©ãŒã ã§ãããããç§ãã¡ãééã£ãŠãããšæãå Žæã®1ã€ã§ãã å°ãªããšããã¿ãè£å®ã®äžéšãšããŠWindowsã§äœ¿çšãããã£ã¬ã¯ããªåºåãæåãéžæãããªãã·ã§ã³ãå¿
èŠã§ãïŒ [System.IO.Path]::DirectorySeparatorChar
ãŸãã¯[System.IO.Path]::AltDirectorySeparatorChar
ã ç§ãã¡ãä»æ¥ããå Žæãèãããšãã¯ãã¹ãã©ãããã©ãŒã ã®äœæ¥ãè¡ãã»ãšãã©ã®äººã¯ãWindowsã§ããã©ã«ãã§AltDirectorySeparatorChar
ã䜿çšãããã¹ã®ã¿ãè£å®ãæãã§ãããšæããŸãããç§ãç¥ãéãããããè¡ãæ¹æ³ã¯ãããŸããã
@chriskuech ïŒãã¹ã®ã¿ãè£å®ä»¥å€ã«ã DirectorySeparatorChar
ã䜿çšãããªãã·ã§ã³ãå¿
èŠãªå Žæã§ã AltDirectorySeparatorChar
ã䜿çšãããŠããªããšæããå Žæã¯ãããŸããïŒ äœãæãã€ããªãã
@KirkMunro ãä»æ¥PowerShellã§ãã¹ãæ£èŠåããïŒå°ãªããšãéšåçã«å®è£
ãããïŒæ¹æ³ããããšèšã£ãŠããŸããïŒ ãããããªããããã¯ææ°ã®6.xã§åäœããŸããïŒ ç§ãåé¡ãæ±ããŠãããŠãŒã¹ã±ãŒã¹ã¯ãèªåå€æ°ãš*-Path
ã³ãã³ãã§ããã
@iSazonov ãææ¡ããããœãªã¥ãŒã·ã§ã³ã¯ãWindowsã§ãã¹ã®ãªã¹ããçæããLinuxã§ãã¹ã®ãªã¹ããçæããããããæ¯èŒããããšãããããç§ã®ã·ããªãªã§ã¯æ©èœããŸããã§ããããã»ãã¬ãŒã¿ãŒãåå ã§å€±æããŸããã
èªåå€æ°ã«ã¯åžžã«æ«å°Ÿã®ãã£ã¬ã¯ããªåºåãæåããªããããPowerShellã§ã¯ãªãã©ã«ã䜿çšããŠãã¹ãçŸããäœæã§ããŸãã å ïŒ
$RepoRoot = "$PSScriptRoot/../.."
$SourceRoot = "$RepoRoot/src"
$BuildRoot = "$RepoRoot/.build"
ããã¯ããæ確ã ãšæããŸã
$RepoRoot = Join-Path $PSScriptRoot "../.."
$SourceRoot = Join-Path $RepoRoot "src"
$BuildRoot = Join-Path $RepoRoot ".build"
ã§ããããããã©ã«ãã§ãªããŠããå°æ¥çã«ã¯æ©èœããããšãé¡ã£ãŠããŸãã
@chriskuechç§ã®å人çãªç¿æ £ã¯æ¬¡ã®ããã«ãªããŸããïŒ
$SourceRoot = $RepoRoot | Join-Path -ChildPath 'src'
å°ããããããããªã£ãŠããŸãããå®ç§ã§ã¯ãããŸããã
Join-Path
ã«ã¯ãæååé
åãåãå
¥ããAdditionalChildPath
ããããŸãã
@chriskuechè¿œå æ å ±ãããããšãã
PowerShellããã¹ã®æ£èŠåãéšåçã«ãµããŒãããŠããããšã瀺åããŠããŸããã§ããã ç§ã¯ãã¿ãè£å®ãWindowsã§ã¯ããã©ã«ãã§ããã¯ã¹ã©ãã·ã¥ã䜿çšããLinuxãŸãã¯macOSã§ã¯ããã©ã«ãã§ã¹ã©ãã·ã¥ã䜿çšããããšãå人çã«å«ã£ãŠããããšãåã«åŒã³ãããŠããŸããã
èšå®ã埮調æŽããŠãããã©ã«ãã§Windowsãã¹ã§ãã¹ã©ãã·ã¥ã䜿çšãããããã«å€æŽã§ããã°ããã®å€æŽãè¡ãããšã«ãªããŸããããã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®PowerShellãããç°¡åã«æ©èœãããæ©äŒããããšæãå Žæã®1ã€ã§ãã Join-Path
ã¯ããã¹åºåãæåãšããŠ[System.IO.Path]::DirectorySeparatorChar
ã䜿çšããŸãã çæ³çã«ã¯ãã¹ã¯ãªãããäœæãããšãã«ç®çã®ãã¹åºåãæåãèšå®ããèšå®ãããå ŽåïŒã¹ã¯ãªãããäœæãããã©ãããã©ãŒã ã«é¢ä¿ãªããåžæããæ¹æ³ã§ã¹ã¯ãªãããç°¡åã«äœæã§ããã¯ããªã®ã§ïŒãäž¡æ¹ã®ã¿ãè£å®ã«åæ ãããŸãããã¹ãšJoin-Path
ãåæ§ã§ãã
ãããã®å人çãªããŒãºã¯ããŠããã Compare-Path
ã³ãã³ãã¬ããã圹ç«ã€ãã©ããçåã«æããŸãã ãã¹ã»ãã¬ãŒã¿ãæ£èŠåãããã¹ã®1ã€ã絶察ãã¹ã§ããå Žåã¯ãæ¯èŒãè¡ãããåã«çžå¯Ÿãã¹ã解決ããããšã«ããã絶察ãã¹ãçžå¯Ÿãã¹ãšæ¯èŒããããšãã§ããŸãã
ãããšã Convert-Path
ãšResolve-Path
ã§_ãã©ãããã©ãŒã åºæã®_æ£èŠåãååŸããŸãïŒ
PS> Convert-Path C:/Windows
C:\Windows # normalized to Windows-native "\"
ãããã£ãŠãããããCompare-Path
ã³ãã³ãã¬ãããå°å
¥ãã代ããã«ã Convert-Path
ãšResolve-Path
ãæ¡åŒµããŠ-UseSlash
ã¹ã€ããïŒååã¯äº€æžå¯èœïŒããµããŒãããããšãã§ããŸãã
ãããšã¯å¥ã«ãè£å®çã«ãKirkãææ¡ããWindowsã§/
ã䜿çšããããã®ãªããã€ã³èšå®ã¡ã«ããºã ã¯ã Convert-Path
ãšResolve-Path
ã«ãé©çšã§ããŸãïŒã¿ãè£å®ãšJoin-Path
ã«å ããŠïŒ
çŸæç¹ã§ã®èœãšãç©Žã¯ã Convert-Path
ãšResolve-Path
ã¯_existing_ãã¹ã§ã®ã¿æ©èœãããšããããšã§ããã @ jaykulãããªãåã«ææ¡ããããã«ãããèªäœã§å€æŽãã䟡å€ããããŸã-ïŒ2993ãåç
§ããŠãã ãã
ãã¹è£å®ã§ãè£å®ããã¹ãã«æ瀺çã«è¡šç€ºããããã¹åºåãæåã䜿çšãããšäŸ¿å©ã ãšæããŸãããã¹åºåãæåããªãå Žåã¯ãããã©ã«ãã§ãã©ãããã©ãŒã ã®ãã€ãã£ãåºåãæåã«ãªããŸãã
ãããã£ãŠãWindowsã§ã¯ã c:\w
ã¯c:\Windows\
$ã«å®äºãã c:/w
㯠'cïŒ/ Windows /'ã«å®äºããŸãã
ããã¯ãæ§æãªãã·ã§ã³ãå¿ èŠãšããã«ç ©ãããã®å€§éšåãã«ããŒãããšæããŸããäœããã®çç±ã§ä»ã®ãã©ãŒã ãå¿ èŠã«ãªãå Žåããããããå®éã«ã¯æãŸããæ¹æ³ã§ãã
@lzybkr ãç§ãèšåããªãã£ãæ§æ/èšå®å€æ°ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ã«é¢ããæžå¿µã«ç §ãããŠãç§ã¯ãã®ã¢ã€ãã¢ã奜ãã§ãã éåžžã®_dynamic_ã¹ã³ãŒãã§ã¯ããã¹ã»ãã¬ãŒã¿ãŒã«ã€ããŠåºå®ãããä»®å®ãè¡ãã³ãŒããå£ããããšããããŸãïŒhttps://github.com/PowerShell/PowerShell-RFC/issues/7ã®ãšã³ãŒããããŸãïŒã
@lzybkrãšäž¡æ¹ã®ã¹ã©ãã·ã¥ã䜿çšãããŠããå Žåã¯ïŒ C:\Program Files/A
->ïŒ
éåžžã«å€ãã®ãªãã·ã§ã³-ã©ã³ãã ãããããã亀äºã«ãåžžã«ã¹ã©ãã·ã¥b / cã転éããããã1ã€ã®çã®ãã¹åºåãæåãªã©ã§ãã
ãã£ãšçå£ã«èšããšãæåŸã«äœ¿çšãããã®ãéžæããã ãã§ãããããããŠãŒã¶ãŒãå ¥åãããã®ã§ãããä»ã®äººã¯å ¥åããªãå ŽåããããŸãã
@lzybkr ïŒãã ãã1ã€ã®åé¡ããããŸãã
ãã¹åºåãæåãªãã§èµ·åããå ŽåãçŸåšã®ãã£ã¬ã¯ããªå
ã®ãã¡ã€ã«/ãã©ã«ããŒãåç
§ããããã«ãPowerShellã¯ãå°ãªããšã.\<filename>
ãŸãã¯./<filename>
ã«å±éãããçŸåšã®å®äºã¢ã«ãŽãªãºã ã«åºã¥ããŠéžæãè¡ãå¿
èŠããããŸãã .\<folder>\
ãŸãã¯./<folder>/
ããã©ãããã©ãŒã ã«é©ããŠããŸãã
_files_ as _arguments_ã®å Žåãããšãã°ã fil
ãfile
ã«æ¡åŒµããããšã§ããã®åé¡ãåé¿ã§ããŸãïŒ .\
/ ./
ãã¬ãã£ãã¯ã¹ãªãïŒã
ã§ãïŒ
_executables_ã®å Žåãèªåçã«è¿œå ããã.\
/ ./
ãã¬ãã£ãã¯ã¹ã¯ãçŸåšã®ãã£ã¬ã¯ããªã«ããã¹ã¯ãªãããå®éã«å®è¡ããããšãç®çãšããŠããå Žåã«éåžžã«äŸ¿å©ã§ãã
_directories_ã®å Žåãåæ§ã«ã_æ«å°Ÿã®ãã¹åºåãæå_ïŒ <folder>\
ãŸãã¯<folder>/
ïŒã䜿çšããŠæ¡åŒµããããšãéèŠã§ãã
ã©ã¡ãã®å Žåããåªå ã»ãã¬ãŒã¿ãŒãæ瀺ãããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã¯ãããŸããã
ãšã¯ããããããã解決çã¯æ¬¡ã®ãšããã§ããã»ãã¬ãŒã¿ãå¶åŸ¡ããå Žåã¯ã_æåã§_ ./
ãŸãã¯.\
ããéå§ããã¿ãè£å®ã§ãããå°éããŸãã
ãã®åé¡ã¯åçæžã¿ãšããŠããŒã¯ãããŠããã 1æ¥éã¢ã¯ãã£ããã£ããããŸããã ããŠã¹ããŒãã³ã°ã®ããééãããŠããŸãã
@iSazonov ïŒããã¯å®éã«ã¯çããããŠããªãã®ã§ãé²è¡äžã®è°è«ãããã解決ãç¶ããããšãã§ããããã«åéããå¿ èŠããããŸãã OPã«ã¯ã圌ã«è¿ããã質åã«çããæ©äŒãããããŸããã§ããã
ç§ã¯ãã¹ãŠã®è³ªåã«çãããšæããŸãããçããªãã£ãå Žåã¯ç¥ãããŠãã ããã ç§ããã®åé¡ã解決ãããçç±ãããããŸããã ããã¯ãã£ã¹ã«ãã·ã§ã³ã¹ã¬ãããšããŠã§ã¯ãªããæ©èœã®ãªã¯ãšã¹ããšããŠæå³ãããŠããŸããã
æå ã«ããæ ¹æ¬çãªåé¡ïŒ
éçºè
ã«ã³ãã³ãã¬ããã䜿çšããŠæååãæåã§æ£èŠåããããã«åŒ·å¶ããããšã¯ãééããªãééã£ãåãã ãšæããŸãã åè¿°ã®ããã«ãPowerShellã¯äž¡æ¹ã®çš®é¡ã®ã¹ã©ãã·ã¥ã®åŠçã«éåžžã«åªããŠãããããããã©ã«ã/
ã䜿çšãããšWindowsã§åé¡ãçºçããã·ããªãªã¯ãããŸããã ããããšã©ãŒãåŒãèµ·ãããããªèª¬åŸåã®ããç¶æ³ã誰ããæäŸã§ããªãéããããã©ã«ã/
ã䜿çšããªãã®ã¯ãªãã§ããïŒ ããããããã®åé¡ã¯RFCã«ç§»è¡ããå¿
èŠããããŸãã
ããå€ãã®äººã
ãã¯ã©ãŠãã«ç§»è¡ããã«ã€ããŠããŸããŸãå€ãã®äººã
ãWindowsã§PowerShellã³ãŒããéçºãããããLinuxã§å®è¡ããŸãã 確ãã«å°æ¥çã«ã¯ïŒãŸã ééããŠããªãå ŽåïŒãçã®ã¯ãã¹ãã©ãããã©ãŒã åäœã奜ããŠãŒã¶ãŒã®æ°ããWindowsã§\
ãç¶æããããšã匷ãæãã§ãããŠãŒã¶ãŒãè¶
ãããã€ã³ãããããŸãã
@chriskuech ïŒæªãããšã«ãç§ã¯ããªãã«å
·äœçã«è³ªåãããŸããã§ããã Conpare-Path
ã³ãã³ãã¬ããã圹ç«ã€ãšæãããã©ããçåã«æããŸããã ãã®è³ªåã¯ããŠãããæ£èŠåãªãã·ã§ã³ãèŠãããšæããŸãã
@KirkMunro Compare-Path
ã圹ç«ã€ãã©ããã¯ããããŸãããããã¯ãå
ã®ãŠãŒã¹ã±ãŒã¹ïŒLinuxãšWindowsã®ãã¹ãæ¯èŒïŒã§ã¯ã«ãŒããã¡ã€ã«ã·ã¹ãã ãç°ãªãããã Resolve-Path -Relative
ãåŒã³åºãå¿
èŠãããããã§ãã ãã®æç¹ã§ãæ¯èŒã®ãŠãŒã¹ã±ãŒã¹ã¯åãªãã¯ã³ã©ã€ããŒã§ãïŒ | ? {($_ -replace "\\", "/") -in $ExpectedPaths}
ã
ãã ããã³ãã³ãã¬ããããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ã¯æ ¹æ¬çãªåé¡ã解決ããããã¹ã®æååè£éãçŠæ¢ãããããã¹ãŠã®ãã¹æååå®çŸ©ã«ã³ãŒããå€æŽããå¿
èŠããããããç§ã¯ã³ãã³ãã¬ããããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãæšå¥šããããšãéåžžã«èºèºããŠããŸãã å
·äœçã«ã¯ã Compare-Path
ã¯ããã°ã«èšé²ããããã¹ãŠã®ãã¹ãã¹ã©ãã·ã¥ãæ··åšããŠä¿®æ£ããããã§ã¯ãããŸããã
@KirkMunro @ mklement0åé¡ã¯ããã¯ãããŠãããã誰ã§ãã³ã¡ã³ããåŒãåºãããšãã§ããŸãã
æ°ããã³ã¡ã³ããé²å±ããªããŸãŸãå€ãã®åé¡ããããŸãã ãªãŒãã³ã¹ããŒã¿ã¹ã¯ãã®æå³ã倱ããŸããã
ã¡ã³ãããšããŠãPRã«ãªããããããå³å¯ãªä»æ§ã«è°è«ãä¿ãããã«ãããå³å¯ã«ããããšæããŸãã
åé¡ã«é¢ããŠã¯ãããã¯ç¡éã«ãªããŸã-æåã®èŠæ±ã¯ãWindowsã§ã¹ã©ãã·ã¥ã䜿çšãããã次ã«ããã¹ãæ¯èŒãããã§ããã 次ã¯äœã§ããïŒ ãªã¢ãŒãã£ã³ã°ïŒ ç¶ç¶ããããšã¯ã§ããŸãããééãããŸãã
ãžã§ã€ãœã³ããã®å®éã®ææ¡ã¯1ã€ã ãã§ãããïŒå®äºã匷åããããïŒã远跡ã®åé¡ãéããŠå®éã®PRã§éããããšãã§ããŸããã
æ確ã«ããããã«ãåé¡ã¯ãŸã ãWindowsã§ã¹ã©ãã·ã¥ã䜿çšãããããšã§ãã ããã¹ã®æ¯èŒãã¯ãïŒè€æ°ã®ïŒåæ©ä»ãã®äŸã®1ã€ãšããŠã®ã¿åãäžããããŸããã
ææ¡
çã®ã¯ãã¹ãã©ãããã©ãŒã åäœãå®è£
ããŸãããŠãŒã¶ãŒããã§ã«\
ãå«ããã¹ãã¿ãã§å®äºããŠããªãéãããã¹åºåãæåã¯ãã¹ãŠã®ãã©ãããã©ãŒã ã§ããã©ã«ãã§/
ã«ãªããŸãã ããã¯ä»ã®ãšããå®éšçãªæ©èœãšããŠé ãããŠãããšæããŸãããå°ãªããšãLinuxãã¿ãŒã²ãããšããWindowséçºè
ã®éçºãšã¯ã¹ããªãšã³ã¹ãæé©åããããã«ãã³ãŒãã§ãã¯ãã¹ãã©ãããã©ãŒã ã®åäœãæ倧åãããæ©èœãæå¹ã«ã§ããã¯ãã§ãã
ãããäžåçãªå Žåã¯ãPowerShellã®èšèšããã©ãããã©ãŒã éã§ç°ãªãå Žåã®çç±ãšã¬ã€ããšãªãããã¥ã¡ã³ãããããã©ãããç¥ããããšæããŸãã
@iSazonov ïŒPSãªããžããªã®ã¡ã³ããã¯ãè°è«ãªãã«ãŠãŒã¶ãŒã®åé¡ãåŠå®ããã¹ãã§ã¯ãããŸããã åœåãOPã®ããŒãºãç解ããããã«æéããããã«è¿ä¿¡ããåé¡ãåçæžã¿ãšããŠããŒã¯ããŸããããåé¡ã¯è³ªåãšããŠæçš¿ãããŠããããæ©èœãªã¯ãšã¹ããšããŠæçš¿ãããŠããããã£ã¹ã«ãã·ã§ã³ãããããããã«ãæ確ã«ç€ºãããŠããŸããçããªãã£ã"ã
ãªãŒãã³ã¹ããŒã¿ã¹ã¯ãã®æå³ã倱ããŸããã
誰ãèšããŸããïŒ ããã¯çµ¶å¯Ÿã«çå®ã§ã¯ãããŸããã æªè§£æ±ºã®åé¡ã¯æªè§£æ±ºã§ãããæªè§£æ±ºã®åé¡ã¯è§£æ±ºãããŠããŸãã ãããã®2ã€ã®éãã¯éåžžã«æ確ãªæå³ãæã£ãŠããŸãã ã¯ããŒãºãããåé¡ã¯èªåã®ãã®ã§ããå Žåã«ã®ã¿ç¢ºèªããæ»ã£ãŠäœãã確èªããããšæããŸãã ãŸãã«ãç¹å®ã®ãããã¯ã«é¢ãããã£ã¹ã«ãã·ã§ã³ã®ããã«ãã¯ããŒãºãããåé¡ãæ€çŽ¢ããå ŽåããããŸãã ããããç§ã®åé¡ã«è²»ããæéã®90ïŒ ä»¥äžã¯ãåœç¶ã®ããšãªããæªè§£æ±ºã®åé¡ã«ãããŸãã 2ã€ã®éã®å¢çç·ãææ§ã«ããæªè§£æ±ºã®åé¡ã®æå³ã倱ãå¯äžã®ããšã¯ããã®åé¡ã§è¡ã£ãããã«ã解決ãããåã«ãããããŸãšããŠéããããšã§ãã
ïŒè°è«ïŒã¯ç¶ç¶ããããã«éãããŠããŸãããéããããŸãã
åé¡ã管çãããã®ã¢ãããŒãã«åºã¥ããŠããªãŒãã³ãšã¯ããŒãºã®åºå¥ã倱ãããšãäœåãªããããŠããããããªãŒãã³ã®åé¡ã«çŠç¹ãåãããã®ã§ã¯ãªãããã¹ãŠã®åé¡ãæ€çŽ¢ããå¿ èŠããããŸããã€ãŸãã2Kã®ãªãŒãã³ã®åé¡ãš4Kã®ã¯ããŒãºã®åé¡ããã§ãã¯ããå¿ èŠããããŸããæªè§£æ±ºã®åé¡ã ãã«çŠç¹ãåœãŠãã®ã§ã¯ãªãããããã«é¢é£ããè°è«ã®ããã«ã ããã¯å£ãããæ¬ é¥ã®ããåé¡ç®¡çæŠç¥ã§ãã
åé¡ã«é¢ããŠã¯ãããã¯ç¡éã«ãªããŸã-æåã®èŠæ±ã¯ãWindowsã§ã¹ã©ãã·ã¥ã䜿çšãããã次ã«ããã¹ãæ¯èŒãããã§ããã 次ã¯äœã§ããïŒ ãªã¢ãŒãã£ã³ã°ïŒ
ããã¯ã°ãããŠããŸãã ã¯ãã¹ãã©ãããã©ãŒã çšã®ã¹ã¯ãªãããäœæãããšãã«ãããã©ã«ããšããŠããã¯ã¹ã©ãã·ã¥ãæã€Windowsã®åŠçã«çŠç¹ãåœãŠãŠããŸãã ããã¯ãã®ãããã¯ã«çŠç¹ãåããç¶ããŠããŸãã ãŸã£ããçŠç¹ãåã£ãŠããªãããã«èãããããã«ããããšããŠããŸãã
@iSazonov ãæªè§£æ±ºã®åé¡ãå€ãããããšã«åæããŸãã ãã ããæªè§£æ±ºã®åé¡ãå€ããããšããäºå®ã¯ãæ°ããåé¡ã«ã€ããŠã®äŒè©±ãææå°æ©ã«åŠå®ããã·ã£ããããŠã³ããå¿ èŠãããããšãæå³ãããã®ã§ã¯ãããŸããã åŒãç¶ããã£ãŒãããã¯ã奚å±ããæªè§£æ±ºã®åé¡ã«ã€ããŠPowerShellã«ã€ããŠãªãŒãã³ã«è©±ãåããçã«è§£æ±ºãããå Žåã«ã®ã¿çµäºããå¿ èŠããããŸãã æªè§£æ±ºã®åé¡ã®éã¯ãå¥ã®æ¹æ³ã§åŠçããå¿ èŠããããŸãã
å¿ å®ãªLinuxãŠãŒã¶ãŒïŒç解ã§ããªãã¢ããã€ã¹ã
ããªãã¯ãã€ã¯ããœããã説åŸããããšãã§ããŸãã ã·ã¹ãã ãã¡ã€ã«ãã¹ãšããŠããã¯ã¹ã©ãã·ã¥ã䜿çšããããã«äŸé ŒããŸãã
ããã§ãã£ã€ã ã鳎ããããã®ã§ãããWindowsã§ããã¹ã©ãã·ã¥ä»ãã®ãªãã©ã«ãã¹ãå¿ èŠãªãŠãŒã¹ã±ãŒã¹ããããŸãã
.netAPIã䜿çšããŠzipã¢ãŒã«ã€ããæäœããã³äœæããã¹ã¯ãªãããæžããŠããŸããã ãã®APIã䜿çšããŠzipãã¡ã€ã«ã«ãšã³ããªãè¿œå ããŸãã
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile(
$zip, $file, $entry,
[System.IO.Compression.CompressionLevel]::Optimal
) > $null
ãã®ç¹å®ã®ã±ãŒã¹ã§ã¯ã$ entryã¯zipã¢ãŒã«ã€ãå ã®ãã¹ã§ãã ããŸããŸãªãã¹ã³ãã³ãã¬ããã«ãã£ãŠè¿ãããWindowsãã¹ãæž¡ãã ãã§ã¯ãå°çäžã®ãã¹ãŠã®zipãŠãŒãã£ãªãã£ããzipãã¡ã€ã«ã®ã¹ã©ãã·ã¥ãééã£ãŠãããšããèŠåãçºããŸãã
ãŸããé·å¹Žã®LinuxãŠãŒã¶ãŒããã³éçºè ãšããŠãç§ã¯PowerShellã倧奜ãã§ããããåŠã¶ã®ããšãŠã楜ããã§ãã sshãä»ããŠæ°ããWindowsServerã³ã¢ãPowerShell7ã§éãã§æ¥œããã§ããŸãããŸããLinuxäžã®PowerShellã§å®å šã«æ©èœããã¹ã¯ãªãããå ¬éããŠããŸãã ç§ã¯ãããã©ãã»ã©ããŸãæ©èœãããã«é©ããã å®éãã¯ãã¹ãã©ãããã©ãŒã ã«ãããããã€ãã®ããã°ã©ã /ã¹ã¯ãªããã§ã¯ãPowerShellãæåã®éžæè¢ã«ãªããŸãã
ãã ããã¿ãã®è£å®ããã¹ãŠåèšå·ã§æžãçŽãããã®ãèŠããšãããã§ãæ²ãããªããŸãã
ç§ã¯ãã€ãWindowsã§/ users / foo / somefileã®ãããªãã¹ã䜿çšããŠãããããã䜿çšããããšæã£ãŠããŸãã
ã»ãšãã©ã®WindowsAPIã¯ãã¹ã©ãã·ã¥ãé©åã«ãµããŒãããŠããŸãã ãŠãŒãã£ãªãã£ãAPIãã€ãŸãcmd.exeã®åŒã³åºããªã©ãããã€ãã®äŸå€ãããããšã«æ°ä»ããŸããããããã¯ã¹ã©ãã·ã¥ãæ瀺çã«äœ¿çšããŠããªãéããããã©ã«ãã§ãã¹ãŠã®ãã¹ã«ã¹ã©ãã·ã¥ãå«ãŸããããã«ã$ profileã«äœããèšå®ããããšæããŸãã
ããã¯ãããã¯ã¹ã©ãã·ã¥ã«æ £ããŠããWindowsãŠãŒã¶ãŒãéçºè ã«ãšã£ãŠã¯äžå¿«ã§ã¯ãããŸãããããã¯ãåã«ãã®èšå®ã䜿çšãããããã©ã«ãã§ãªãã«ãªãããã§ãã ãã¡ãããããšãã°ã¯ãã¹ãã©ãããã©ãŒã ã®ã¹ã¯ãªãããã¢ãžã¥ãŒã«ãããã«äœæããããšã«ããå Žåã¯ãããã䜿çšããããšãã§ããŸãã
äžèšã®ãããªäºæããªãåé¡ãçºçããªãããã«ãã¹ã¯ãªãããšã¢ãžã¥ãŒã«ã«ããã®èšå®ãå¿ èŠã§ãã
@iSazonovãŠãŒã¶ãŒã¯ããã©ãããã©ãŒã ã«é¢ä¿ãªãå¿«é©ãªã¹ã©ãã·ã¥ã䜿çšã§ããŸãã
ããã¯ããŠãŒã¶ãŒãšããŠã®æ¹ãå¿«é©ãªã®ã§ãã¹ã©ãã·ã¥ã䜿çšããããã«PowerShellãæ§æã§ããããšãæå³ããŸããïŒ ããã³ããã«è¡šç€ºããããã¹ãšãçŸåšã¹ã©ãã·ã¥ãããã¯ã¹ã©ãã·ã¥ã«å€æŽããŠããã¿ãã®ãªãŒãã³ã³ããªãŒããå€æŽããããšæããŸãã
@aaronfranke ãããããçŸåšãPowerShellããã®ããã«æ§æããæ¹æ³ã¯ãããŸããã @iSazonovãèšãããšããŠããã®ã¯ããã¹ãæåã§å
¥åããå Žåã \
ãš/
ã®ã©ã¡ãããèªç±ã«éžæã§ãããšããããšã ãšæããŸãïŒåäžã®ãã¹ã«ããããæ··åšãããããšãã§ããŸãïŒ ã
æ±çšæ§ãèæ ®ãããšã/ããã³ã®ä»£ããã«æ°ãããã¹ã·ã³ãã«ãæå¹ã«ããå¿ èŠããããŸããåŸæ¥ã®ã·ã³ãã«ã¯ããã©ãããã©ãŒã éã§ã®å€æã®é£ãããå¢ããŸãã
@iSazonovãèšãããšããŠããã®ã¯ããã¹ãæåã§å ¥åãããšãã¯ããš/ã®ã©ã¡ãããèªç±ã«éžæã§ãããšããããšã ãšæããŸãïŒ1ã€ã®ãã¹ã«ããããæ··åšãããããšãã§ããŸãïŒã
ã¯ããPowerShellã®èšèšã§ãã
ããã¯ãå®äºæã«ãã¹ã»ãã¬ãŒã¿ã匷å¶çã«äº€æããããéžæãããã¹ã»ãã¬ãŒã¿ã䜿çšããããã«ãã¹ã³ãã³ãã¬ãããæ§æããããããªã©ãããã§æèµ·ãããåé¡ã®è§£æ±ºçã§ã¯ãããŸããã ïŒ
@rkitoverç§ã¯äœå¹Žãåã«ãã®ãããªã·ããªãªã«ã€ããŠå°ããŸããïŒããªãã¯åé¡ãèŠã€ããããšãã§ããŸãïŒè§£æ±ºçã¯ãããŸããã ããã¯ãå€ãã®åŽåãå¿ èŠãšããŸãããããã¯èŠãç®ã®å€æŽã§ãããšç§ã«ç¢ºä¿¡ãããŸãã ãã®åéã«æè³ããŠPRãè¡ãæºåãã§ããŠããå Žåã¯ãæ°ãããã£ã¹ã«ãã·ã§ã³ãéãã®ãçã«ããªã£ãŠããŸãã
CP / Mãšã¯ããŒã³ã¯ããªãã·ã§ã³ã«/
ã䜿çšããŸããäŸïŒ DIR/P
ã CMD/CECHO
ã ãããã¯æå¹ãªã³ãã³ãã§ãã ã©ãã§ã\
ã/
ã«çœ®ãæãããšãæªã誀解ãçããã®ã§ã¯ãªãããšå¿é
ããŠããŸãã
誰ãCP / Mããã䜿çšããŠããŸããã
ãªãã·ã§ã³ãšãã¹ã®äž¡æ¹ã«åæã«/
ã䜿çšããããšã¯ãç§ã®ãã¹ãã§ã¯Windowsã§åé¡ãªãæ©èœããŸãã
PowerShellããŒã«ã.NETãªã©ã®ä»ã®MicrosoftããŒã«ãªã©ãææ°ã®ããŒã«ã¯ä»£ããã«ãªãã·ã§ã³ã«-
ã䜿çšããŸãã ãªãã·ã§ã³ã«/
ã䜿çšããããšã¯ãäžäœäºææ§ã®ããã«ç¶æããå¿
èŠããããŸããããŠãŒã¶ãŒã¯ææ°ã®ããŒã«ãšæ··åããããšã¯ãããŸããã
ãŸããã¹ã©ãã·ã¥/
ã¯ãWin32ãã¡ã€ã«åã§ã¯ç¡å¹ãªæååã§ããããšã«æ³šæããŠãã ããã
https://gist.github.com/doctaphred/d01d05291546186941e1b7ddc02034d3
èŠæšWindowsãã¡ã€ã«åã®æåãç¡å¹ã§ãã GitHub GistïŒã³ãŒããã¡ã¢ãã¹ãããããå³åº§ã«å ±æããŸãã
ã¯ãã¹ãã©ãããã©ãŒã ã¹ã¯ãªãããªã©ã§ã®ã¿ã¹ã©ãã·ã¥ã䜿çšãå§ããã·ã³ããªãã¯ãªã³ã¯ã§åé¡ãçºçããããšãææããããšæããŸãã
äŸãšããŠã
new-item -itemtype SymbolicLink -path TestScript8.ps1 -target ./TestScript.ps1
Windowsã§ã¯ãWindowsã®VSCodeã§TestScript8.ps1ãéãããšã¯ã§ããŸããã
@ markm77 ãããªãã¯_bug_ãçºèŠããŸãã-æ°ããåé¡ãäœæããŠããã ããŸããïŒ [_update _ïŒïŒ13064ãåç
§]
ããã©ã«ãã§/
ã @ aaronfrankeã«èšå®ããããã®ãªããã€ã³ã¡ã«ããºã ã«å察ããè°è«ã§ã¯ãããŸãããã \
/
ïŒ$ããŸã å£ããŠãããšããžã±ãŒã¹ã¯ã»ãšãã©ãªãããšã«æ³šæããŠãã ããWindowsäžã®ãã®; äŸãã°ïŒ
PS> cmd /c dir C:/
Invalid switch - ""
ãã¹ãäºéåŒçšç¬Šã§å²ããšãäžæè°ãªããšã«_directory_ãã¹ã§ã®ã¿åœ¹ç«ã¡ãŸããhttpsïŒ //stackoverflow.com/a/43297482/45375ãåç
§ããŠãã ãããããã¯ãExcel COM Automationã©ã€ãã©ãªã/
ããµããŒãããŠããªãããšã瀺ããŠããŸãã
ã¹ã¿ãã¯ãªãŒããŒãããŒ$ Path = 'DïŒ/ETL_Data/TwitchTVData.xlsx' $ csvPath = 'DïŒ/ETL_Data/TwitchTVData2.csv'ïŒExcelããã¥ã¡ã³ããéãã' Sheet1 'ã¯ãŒã¯ã·ãŒãããã«ããŸã$ Excel = New-Object -Com Excel.Application $ Workbook..ã
@ markm77 ããã°ãçºèŠããŸãã-æ°ããåé¡ãäœæããŠããã ããŸããïŒ
ããããããã¯PowerShellã®ãã°ã§ããïŒ PowerShellã¯ã dir
ã䜿çšããŠã·ã³ããªãã¯ãªã³ã¯ã調ã¹ãããšã§æ€èšŒãããããã«ãæå®ãããã¹ã©ãã·ã¥ã§æ£ããã·ã³ããªãã¯ãªã³ã¯ãäœæããŸãã ãã ããééã£ãã¹ã©ãã·ã¥ã¿ã€ãã§äœæãããã·ã³ããªãã¯ãªã³ã¯ã¯ãVSCodeãªã©ã®ã¢ããªã§ã¯äœ¿çšã§ããªããªãå¯èœæ§ããããŸãã ãããããããç解ã§ããŸãã
泚æïŒã·ã³ããªãã¯ãªã³ã¯ã¿ãŒã²ããã§convert-item
ãå®è¡ããããšã§ããã®åé¡ãåé¿ããã®ã¯éåžžã«ç°¡åã§ããããã«ã¯ãã·ã³ããªãã¯ãªã³ã¯ã絶察ãã¹ãæãããã«ãããšããè¿œå ã®å©ç¹ããããŸãïŒããããé©åã§ãïŒã
泚æïŒã·ã³ããªãã¯ãªã³ã¯ã¿ãŒã²ããã§
convert-item
ãå®è¡ããããšã§ããã®åé¡ãåé¿ããã®ã¯éåžžã«ç°¡åã§ããããã«ã¯ãã·ã³ããªãã¯ãªã³ã¯ã絶察ãã¹ãæãããã«ãããšããè¿œå ã®å©ç¹ããããŸãïŒããããé©åã§ãïŒã
äžé©åãåããŠã³ãæã«ç ŽæããŸãð
äžé©åãåããŠã³ãæã«ç ŽæããŸãð
å
¬æ£ãªã³ã¡ã³ãã§ããåããŠã³ãã¯ããŸããïŒããã¯ããŒã«ã«éçºäœæ¥çšã§ãïŒããªã³ã¯ãåçæããããã®ã¹ã¯ãªãããããããã€ã§ãå®è¡ã§ããŸãã join-path
ã¯æããã«ä»ã®è§£æ±ºçã§ããããªã³ã¯ããã©ãããã©ãŒã ã«é©ããŠããããšã確èªããããã®new-item
ãªãã·ã§ã³ã®æ¹ãããã«è¯ãã§ãããã
ïŒ12797ãåç §
ããããããã¯PowerShellã®ãã°ã§ããïŒ
_Windows_ã§ã¯WinAPIã®ãã°ã§ãããšäž»åŒµããããšãã§ããŸããã \
ãš/
ã¯éåžžäºæçã«ãµããŒããããŠãããããéã«ããŠãã¹ãããšãUnixã©ã€ã¯ãªãã©ãããã©ãŒã ã§ã¯ééããªããã°ã«ãªããŸãã -Target
\
ããŒã¹ã®ãã¹-ãã®ãããªãã©ãããã©ãŒã ã§ã¯ã /
ã®ã¿ããã€ãã£ãã«ãµããŒããããŸãïŒ \
ã次ã®ããã«äœ¿çšã§ããã®ã¯PowerShellã®ã¿ã§ãç¬èªã®åé¡ã䌎ã代æ¿æ段-ïŒ9244ãåç
§ïŒãã·ã³ããªãã¯ãªã³ã¯ãäœæãããšãã«.\TestScript.ps1
ã®ãããªãã®ã./TestScript.ps1
ã«å€æããã®ã¯PowerShellã®è²¬ä»»ã§ãã
ãããä¿®æ£ãããšïŒPowerShellã§ãã¹ãæ£èŠåããŠïŒãã©ã€ããªïŒ_platform-native_ã»ãã¬ãŒã¿ãŒã䜿çšããããã«ããããšã§ïŒãWindowsã§ã®åé¡ãä¿®æ£ãããŸãã
@ iSazonov ãïŒ12797ã¯ãã·ã³ããªãã¯ãªã³ã¯ã¿ãŒã²ãããšããŠã®_relative_ãã¹ã®ãµããŒããåºæ¬çã«æå¹ã«ããŸããããåœé¢ã®åé¡ã¯ããã©ãããã©ãŒã ãã€ãã£ãã®ã»ãã¬ãŒã¿ãŒã®æ£èŠåããªããããçµæã®ã·ã³ããªãã¯ãªã³ã¯ãå£ããŠããŸãããšã§ãã
@iSazonov PowerShell Core 7.1.0-preview.4ïŒããã«ã¯ïŒ12797ãå«ãŸããŠããã¯ãã§ãïŒã®æç¹ã§ãŸã å£ããŠãããã®ã«ã€ããŠã¯ãïŒ13064ãåç §ããŠãã ããã
çžå¯Ÿçãªã·ã³ããªãã¯ãªã³ã¯ã®åäœã培åºçã«èª¿æ»ããåé¡ãæèµ·ããŠããã@ mklement0ã«æè¬ããŸãhttps://github.com/PowerShell/PowerShell/issues/13064ã ç§ãæ±ããŠããç¹å®ã®åé¡ãšãã®è°è«ãããã«ãã©ããŒã¢ããããããã«ã¡ã¢ãåããŸããããå®éã«ã¯https://github.com/PowerShell/PowerShell/issues/13064ã§ãã¹ãŠãã«ããŒããŠããããã§ãå®éã«ãã®æ¹æ³ãæããŠãããŸããPowerShellãã¹ããäœæããïŒPowerShellã¯åããŠã§ãïŒ...也æ¯ïŒ
ç§ã¯ãã®åé¡ã詳现ã«ãã©ããŒããŠããªãã£ãã®ã§ãäœãã足ããªãå Žåã¯ãã¿ãŸããã æåã®åé¡ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®æšæºåããããã¹åºåãæåïŒå Žåã«ãã£ãŠã¯ã¹ã©ãã·ã¥ïŒã§ããã @iSazonovã¯ãã®åé¡ã解決ããŸããã åé¡ã®ã¯ããŒãºã€ãã³ãã«ç»é²ãã人ã ããã©ããŒã§ããããã«ãããããã¯ãæå¹ã§ãªããšæãçç±ã®æŠèŠãæããŠãã ããã
https://github.com/PowerShell/PowerShell/issues/10509#issuecomment -644419471ã«ãããšãããã¯æ±ºããŠæå¹ã§ã¯ãããŸããã§ããã
@lzybkrãäžã§ææ¡ãããããªãã®ã¯ããŸã å®å šã«åççã§ãããããããç°¡åã«å®è£ ã§ããŸãã èŠç¹ããŸãšãããšïŒ
ãã¹è£å®ã§ãè£å®ããã¹ãã«æ瀺çã«è¡šç€ºããããã¹åºåãæåã䜿çšãããšäŸ¿å©ã ãšæããŸãããã¹åºåãæåããªãå Žåã¯ãããã©ã«ãã§ãã©ãããã©ãŒã ã®ãã€ãã£ãåºåãæåã«ãªããŸãã
ãã®å ŽåãWindowsã§/
ããŸã å£ããŠãã-ãŸããª-ãšããžã±ãŒã¹ãåé¿ããã®ã¯ãŠãŒã¶ãŒã®è²¬ä»»ã§ãïŒäžèšãåç
§ïŒã
ããã¯ãPowerShellãä»ããŠwslbashã¹ã¯ãªãããå®è¡ãããšãã«æ·±å»ãªåé¡ãåŒãèµ·ãããŸãã 奜ãïŒ
bash .\updateTemplate.sh
ããã¯ãªãŒãã³ã³ããªãŒãããå¿ èŠããããŸã
bash ./updateTemplate.sh
ãã®åé¡ã«å¯Ÿããä»ã®åé¿çã¯ãããŸããïŒ å ·äœçã«ã¯ãPSãbash / WSLã³ã³ããã¹ãã§ã®ã¿ã¹ã©ãã·ã¥ã䜿çšããŠãã¹ããªãŒãã³ã³ããªãŒãã§ããã°ããŸã£ããåé¡ãããŸããã
ãã®åé¡ã«å¯Ÿããä»ã®åé¿çã¯ãããŸããïŒ
bashã®ã«ã¹ã¿ã ã³ã³ããªãŒã¿ãŒãäœæããŸãã
ãã®åé¡ã«å¯Ÿããä»ã®åé¿çã¯ãããŸããïŒ
bashã®ã«ã¹ã¿ã ã³ã³ããªãŒã¿ãŒãäœæããŸãã
ããã¯ã©ããããã§ããïŒ
ãã®åé¡ã®æ ¹æ ã®ãªãééã«ã€ããŠããã以äžã®è°è«ã¯ãããŸãããïŒ ããã¯ãã¯ãã¹ãã©ãããã©ãŒã äœæ¥ã®å€§ããªåé¡ã§ãã ã¯ãã¹ãã©ãããã©ãŒã ããŒã«ã«ãã£ãŒãããããã¹ããŸãã¯wslãä»ããŠLinuxããŒã«ã«éæ¥çã«ãã£ãŒãããããã¹ãèªåå®äºãããã³ã«ããã¹å šäœã§ã«ãŒãœã«ãéæ¹åââã«ç§»åãããã¹ãŠã®ããã¯ã¹ã©ãã·ã¥ãã¹ã©ãã·ã¥ã«åå¥ã«çœ®ãæããå¿ èŠããããŸãã 誰ããã®ããã«äœæ¥ããå¿ èŠã¯ãããŸãããããã«ãããã³ãã³ãã©ã€ã³ãšããŠã®Powershellã¯ã»ãšãã©äœ¿çšã§ããªããªããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãã¹è£å®ã§ãè£å®ããã¹ãã«æ瀺çã«è¡šç€ºããããã¹åºåãæåã䜿çšãããšäŸ¿å©ã ãšæããŸãããã¹åºåãæåããªãå Žåã¯ãããã©ã«ãã§ãã©ãããã©ãŒã ã®ãã€ãã£ãåºåãæåã«ãªããŸãã
ãããã£ãŠãWindowsã§ã¯ã
c:\w
ã¯c:\Windows\
$ã«å®äºããc:/w
㯠'cïŒ/ Windows /'ã«å®äºããŸããããã¯ãæ§æãªãã·ã§ã³ãå¿ èŠãšããã«ç ©ãããã®å€§éšåãã«ããŒãããšæããŸããäœããã®çç±ã§ä»ã®ãã©ãŒã ãå¿ èŠã«ãªãå Žåããããããå®éã«ã¯æãŸããæ¹æ³ã§ãã