PowerShell์ ํ๋ซํผ ๊ฐ์ ๋ชฉํ๋ก ํ์ง๋ง Windows์ Linux์ ๊ฒฝ๋ก์์ ์๋ํ๋ ๋ฐ ๋ง์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ Windows์์ \
๋ฅผ ์ง์ํด์ผ ํ ํ์์ฑ์ ์ดํดํ์ง๋ง, ๊ธฐ๋ณธ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ /
์ผ๋ก ์ค์ ํ์ฌ Windows์ *nix ๋ชจ๋์์ ์ต์ํ ๊ธฐ๋ณธ ๊ฒฝ๋ก ๋ฌธ์๋ฅผ ๋์ผํ๊ฒ ํ๊ณ ์ถ์ต๋๋ค. -replace "\\", "/"
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ์ ๊ทํํ๋๋ก ํ๋ ๊ฒ์
๋๋ค.
ํ์ฌ ๋์์ ์ฌ์ฉ์๊ฐ ๊ฒฝ๋ก๋ฅผ ์ ๊ทํํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
PowerShell์ ์ด๋ฏธ ์์
์ ์ํํ๋ฏ๋ก ๊ฒฝ๋ก๋ฅผ ์ ๊ทํํ ํ์๊ฐ ์์ต๋๋ค.
PowerShell์ ์ฌ๊ธฐ์์ ๋งค์ฐ ์ฌ์ฉ์ ์นํ์ ์
๋๋ค. ์ฌ์ฉ์๋ ํ๋ซํผ์ ๊ด๊ณ์์ด ํธ์ํ ์ฌ๋์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก๋ ๋ฆฌํฐ๋ด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฒฝ๋ก cmdlet์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก๋ ๋ฆฌํฐ๋ด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฒฝ๋ก cmdlet์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
@iSazonov ์ ๋ฐ ์๋์ค.
๋ฌผ๋ก , ๊ฒฝ๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฒฐํฉํ๋ ๊ฒฝ์ฐ ๊ฒฝ๋ก cmdlet์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๊ฐ ์๋ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฐธ์กฐํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์คํฌ๋ฆฝํธ๊ฐ ํ๋ซํผ ๊ฐ์ ์๋ํ๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ๊ฒ ํ์ง ์์ ๊ฒ์ ๋๋ค.
Windows์ PowerShell 7 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 3์์ ํญ ์์ฑ์ ๋ฐฑ์ฌ๋์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก PowerShell์ด โโํฌ๋ก์ค ํ๋ซํผ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์๋ชปํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ ํ ๊ณณ์
๋๋ค. ํญ ์์ฑ์ ์ผ๋ถ๋ก Windows์์ ์ฌ์ฉํ๋ ค๋ ๋๋ ํ ๋ฆฌ ๊ตฌ๋ถ ๋ฌธ์๋ฅผ ์ ํํ๋ ์ต์
์ด ์ต์ํ ์์ด์ผ ํฉ๋๋ค: [System.IO.Path]::DirectorySeparatorChar
๋๋ [System.IO.Path]::AltDirectorySeparatorChar
. ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ด๋์ ์๋์ง ๊ฐ์ํ ๋ ํฌ๋ก์ค ํ๋ซํผ ์์
์ ์ํํ๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก Windows์์ AltDirectorySeparatorChar
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฒฝ๋ก์ ํญ ์์ฑ์ ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง, ๋ด๊ฐ ์๋ ํ ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. .
@chriskuech : ๊ฒฝ๋ก์ ํญ ์์ฑ ์ธ์๋ DirectorySeparatorChar ๋์ 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์ ๋ ์ฝ๊ฒ ์๋ํ ์ ์๋ ๊ธฐํ๊ฐ ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Join-Path
๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ก [System.IO.Path]::DirectorySeparatorChar
๋ ์ฌ์ฉํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ๋ ์ํ๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ฅผ ์ค์ ํ๋ ์ค์ ์ด ์๋ ๊ฒฝ์ฐ(์๋ํ๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ๋ก ์ ํํ ํ๋ซํผ์ ๊ด๊ณ์์ด ์ํ๋ ๋ฐฉ์์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค), ๋ ํญ ์์ฑ์ ๋ฐ์๋ฉ๋๋ค. ๊ฒฝ๋ก ๋ฐ Join-Path
๋ ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ์ธ์ ์ธ ์๊ตฌ๋ ์ ์ณ๋๊ณ Compare-Path
cmdlet์ด ์ ์ฉํ ์ง ๊ถ๊ธํฉ๋๋ค. ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ฅผ ์ ๊ทํํ๊ณ ๊ฒฝ๋ก ์ค ํ๋๊ฐ ์ ๋ ๊ฒฝ๋ก์ธ ๊ฒฝ์ฐ ๋น๊ต๊ฐ ์ํ๋๊ธฐ ์ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ฌ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์๋ ๊ฒฝ๋ก์ ๋น๊ตํ ์๋ ์์ต๋๋ค.
๊ธ์, ์ฐ๋ฆฌ๋ Convert-Path
๋ฐ Resolve-Path
์์ _ํ๋ซํผ๋ณ_ ์ ๊ทํ๋ฅผ ์ป์ต๋๋ค.
PS> Convert-Path C:/Windows
C:\Windows # normalized to Windows-native "\"
๋ฐ๋ผ์ Compare-Path
cmdlet์ ๋์
ํ๋ ๋์ 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๋ ํ๋์ ์ง์ ํ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ ๋ฑ์ ๋๋ค.
๋ ์ง์งํ๊ฒ, ์๋ง๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ง์ง๋ง ํญ๋ชฉ์ ์ ํํ๊ณ ๋ค๋ฅธ ํญ๋ชฉ์ ์ ๋ ฅํ์ง ์์ ์ ์์ต๋๋ค.
@lzybkr : ํ์ง๋ง ํ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ ์์ด_ ์์ํ๋ ๊ฒฝ์ฐ _ํ์ฌ ๋๋ ํฐ๋ฆฌ_์ ์๋ ํ์ผ/ํด๋๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด PowerShell์ ์ต์ํ .\<filename>
๋๋ ./<filename>
๋ก ํ์ฅ๋๋ ํ์ฌ ์๋ฃ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. .\<folder>\
๋๋ ./<folder>/
, ํ๋ซํผ์ ์ ํฉํฉ๋๋ค.
_files_์ ๊ฒฝ์ฐ _arguments_์ ๊ฒฝ์ฐ fil
๋ฅผ file
๋ก ํ์ฅํ์ฌ ํด๋น ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค( .\
/ ./
์ ๋์ฌ ์์).
ํ์ง๋ง:
_executables_ ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ถ๊ฐ๋ .\
/ ./
์ ๋์ฌ๋ ์ค์ ๋ก ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ค๋ ์๋์ธ ๊ฒฝ์ฐ ์ ์ฉํ ํธ๋ฆฌํจ์
๋๋ค.
_directories_์ ๊ฒฝ์ฐ์ ์ ์ฌํ๊ฒ _trailing path separator_ ( <folder>\
๋๋ <folder>/
)๋ก ํ์ฅํ๋ ๊ฒ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ ํธํ๋ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์์ํ๋ ์ฌ์ฉ์ ์์ ์ด ์์ต๋๋ค.
์ฆ, ์๋ง๋ ํด๊ฒฐ์ฑ
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ ์ดํ๋ ค๋ฉด ./
๋๋ .\
๋ก _์๋์ผ๋ก ์์ํ๊ณ ํญ ์์ฑ์ด ์ด๋ฅผ ์ค์ํ๋๋ก ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ต๋ณ๋ ๊ฒ์ผ๋ก ํ์๋์์ผ๋ฉฐ 1์ผ ๋์ ํ๋์ด ์์ต๋๋ค. ํ์ฐ์คํคํ์ ์ํด ํ์๋์์ต๋๋ค.
@iSazonov : ์ด๊ฒ์ ์ค์ ๋ก ๋ต๋ณ๋์ง ์์์ผ๋ฉฐ ์งํ ์ค์ธ ํ ๋ก ์์ ์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ํด๊ฒฐํ ์ ์๋๋ก ๋ค์ ์ด์ด์ผ ํฉ๋๋ค. OP๋ ๊ทธ์๊ฒ ๋ค์ ๋ฌป๋ ์ง๋ฌธ์ ๋๋ตํ ๊ธฐํ์กฐ์ฐจ ์์์ต๋๋ค.
๋๋ ๋ชจ๋ ์ง๋ฌธ์ ๋์๊ฒ ๋ค๋ค๋ค๊ณ ์๊ฐํ์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค. ์ด ๋ฌธ์ ๊ฐ ์ ๋ซํ๋์ง ๋๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ ๋ก ์ค๋ ๋๊ฐ ์๋๋ผ ๊ธฐ๋ฅ ์์ฒญ์ด์์ต๋๋ค.
๋น๋ฉดํ ๊ทผ๋ณธ ๋ฌธ์ :
๊ฐ๋ฐ์๊ฐ cmdlet์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์๋์ผ๋ก ์ ๊ทํํ๋๋ก ๊ฐ์ํ๋ ๊ฒ์ ํ์คํ ์๋ชป๋ ํ๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก /
๋ฅผ ์ฌ์ฉํ๋ฉด Windows์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์๋๋ฆฌ์ค๊ฐ ๋ณด์ด์ง ์์ต๋๋ค. ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ PowerShell์ ๋ ์ข
๋ฅ์ ์ฌ๋์๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๊ฒ์ด ์ค๋ฅ๋ฅผ ์ผ์ผํฌ ์ ์๋ ๊ฐ๋ ฅํ ์ํฉ์ ์ ๊ณตํ ์ ์๋ ์ฌ๋์ด ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก /
๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์๋ง๋ ์ด ๋ฌธ์ ๋ RFC๋ก ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
๋ ๋ง์ ์ฌ๋๋ค์ด ํด๋ผ์ฐ๋๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ฉด์ ๋ ๋ง์ ์ฌ๋๋ค์ด Windows์์ PowerShell ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๊ณ Linux์์ ์คํํฉ๋๋ค. ๋ฏธ๋์๋ (์์ง ํต๊ณผ๋์ง ์์ ๊ฒฝ์ฐ) ์ง์ ํ ํฌ๋ก์ค ํ๋ซํผ ๋์์ ์ ํธํ๋ ์ฌ์ฉ์์ ์๊ฐ Windows์์ \
๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋ํด ๊ฐํ๊ฒ ๋๋ผ๋ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ๋ฅ๊ฐํ๋ ์์ ์ด ๋ถ๋ช
ํ ์์ ๊ฒ์
๋๋ค.
@chriskuech : ์ฃ์กํฉ๋๋ค. ํน๋ณํ ์ง๋ฌธ์ ๋๋ฆฐ ๊ฒ์ ์๋๋๋ค. Conpare-Path
cmdlet์ด ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ ์ง๋ฌธ์ ์ ์ณ๋๊ณ ์ ๊ทํ ์ต์
๋ ๋ณด๊ณ ์ถ์ต๋๋ค.
@KirkMunro Compare-Path
์ด ๋์์ด ๋ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ ์ฌ์ฉ ์ฌ๋ก(Linux ๋ฐ Windows์ ๊ฒฝ๋ก ๋น๊ต)์์ ๋ฃจํธ ํ์ผ ์์คํ
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ Resolve-Path -Relative
๋ฅผ ํธ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ ์์ ์์ ๋น๊ต ์ฌ์ฉ ์ฌ๋ก๋ | ? {($_ -replace "\\", "/") -in $ExpectedPaths}
ํ ์ค์ง๋ฆฌ์
๋๋ค.
๊ทธ๋ฌ๋ cmdlet ๊ธฐ๋ฐ ์๋ฃจ์
์ ๊ทผ๋ณธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๊ณ ๊ฒฝ๋ก์ ๋ํ ๋ฌธ์์ด ๋ณด๊ฐ์ ํ์ฉํ์ง ์๊ฑฐ๋ ๋ชจ๋ ๊ฒฝ๋ก ๋ฌธ์์ด ์ ์์ ๋ํ ์ฝ๋ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ฏ๋ก ์น์ธํ๋ ๊ฒ์ ๋งค์ฐ ์ฃผ์ ํฉ๋๋ค. ํนํ Compare-Path
๋ ๊ธฐ๋ก๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ๋์๊ฐ ํผํฉ๋ ์ํ๋ก ์์ ํ์ง ์์ต๋๋ค.
@KirkMunro @mklement0 ๋ฌธ์ ๋ ์ ๊ฒจ ์์ง ์์ผ๋ฉฐ ๋ชจ๋ ์ฌ๋์ด ๋๊ธ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์๋ก์ด ์๊ฒฌ๊ณผ ์งํ ์ํฉ์ด ์๋ ๋ฌธ์ ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฆฐ ์ํ๋ ์๋ฏธ๋ฅผ ์์์ต๋๋ค.
๋ฉ์ธํ
์ด๋๋ก์, ๋๋ ํ ๋ก ์ด PR๋ก ์ฝ๊ฒ ๋ฐ๋ ์ ์๋ ๋ณด๋ค ์๊ฒฉํ ์ฌ์์ด ๋๋๋ก ์ฅ๋ คํ๊ธฐ ์ํด ๋ณด๋ค ์๊ฒฉํ๊ฒ ํ ์๊ฐ์
๋๋ค.
๋ฌธ์ ์ ๊ดํด์๋ ๋ฌดํ์ผ๋ก ๋ฐ๋๋๋ค. ์ด๊ธฐ ์์ฒญ์ "Windows์์ ์ฌ๋์ ์ฌ์ฉ", "๊ฒฝ๋ก ๋น๊ต"์์ต๋๋ค. ๋ค์์ ๋ญ์ผ? ์๊ฒฉ? ๊ณ์ํ๊ธฐ ์ํด ์ด๋ ค ์์ง๋ง ๋ซํ ๊ฒ์
๋๋ค.
Jason์ ์ค์ ์ ์์ ๋จ ํ๋(์์ฑ ํฅ์์ ์ํด) ์์ ์์๊ณ ์ถ์ ๋ฌธ์ ๋ฅผ ์ด๊ณ ์ค์ PR๋ก ๋ซ์ ์ ์์์ต๋๋ค.
๋ถ๋ช ํ ํ๊ธฐ ์ํด ๋ฌธ์ ๋ ์ฌ์ ํ "Windows์์ ์ฌ๋์ ์ฌ์ฉ"์ ๋๋ค. "๊ฒฝ๋ก ๋น๊ต"๋ (์ฌ๋ฌ ๊ฐ ์ค) ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ์๋ก๋ง ์ธ๊ธ๋์์ต๋๋ค.
์ ์
์ฌ์ฉ์๊ฐ ์ด๋ฏธ \
๊ฐ ํฌํจ๋ ๊ฒฝ๋ก๋ฅผ ํญ ์์ฑํ์ง ์๋ ํ ๋ชจ๋ ํ๋ซํผ์์ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก /
์ธ ์ง์ ํ ํ๋ซํผ ๊ฐ ๋์์ ๊ตฌํํฉ๋๋ค. ํ์ฌ๋ก์๋ ์ด๊ฒ์ด ์คํ์ ๊ธฐ๋ฅ์ผ๋ก ์จ๊ฒจ์ ธ ์์ ๊ฒ์ผ๋ก ์์๋์ง๋ง Linux๋ฅผ ๋์์ผ๋ก ํ๋ Windows ๊ฐ๋ฐ์์ ๊ฐ๋ฐ ๊ฒฝํ์ ์ต์ ํํ๊ธฐ ์ํด ๋ด ์ฝ๋์์ "ํ๋ซํผ ๊ฐ ๋์ ์ต๋ํ" ๊ธฐ๋ฅ์ ํ์ฑํํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ๋ถํฉ๋ฆฌํ ๊ฒฝ์ฐ PowerShell ๋์์ธ์ด ํ๋ซํผ ๊ฐ์ ๋ถ๊ธฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ์๋ดํ๋ ๋ฌธ์๊ฐ ์๋ ์ด์ ์ ์ด์ ๋ฅผ ์๊ณ ์ถ์ต๋๋ค.
@iSazonov : PS ์ ์ฅ์์ ๊ด๋ฆฌ์๋ ํ ๋ก ์์ด ์ฌ์ฉ์ ๋ฌธ์ ๋ฅผ ๋ฌด์ํด์๋ ์ ๋ฉ๋๋ค. ๊ทํ๋ ์๋ OP์ ์๊ตฌ ์ฌํญ์ ์ดํดํ๋ ๋ฐ ์๊ฐ์ ๋ค์ด์ง ์๊ณ ๋ฌธ์ ๋ฅผ ๋ต๋ณ๋จ์ผ๋ก ํ์ํ์ฌ ๋ต๋ณํ์ง๋ง ๋ฌธ์ ๋ ์ง๋ฌธ์ผ๋ก ๊ฒ์๋์ง ์์๊ณ ๊ธฐ๋ฅ ์์ฒญ์ผ๋ก ๊ฒ์๋์์ผ๋ฉฐ ํ ๋ก ์์ ๋ณผ ์ ์๋ฏ์ด ๋ช ํํฉ๋๋ค. "๋ต๋ณ"์ด ์๋๋๋ค.
์ด๋ฆฐ ์ํ๋ ์๋ฏธ๋ฅผ ์์์ต๋๋ค.
๋๊ฐ ๋งํฉ๋๊น? ๊ทธ๊ฒ์ ์ฌ์ค์ด ์๋๋๋ค. ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์ด๋ ค ์๊ณ ๋ซํ ๋ฌธ์ ๊ฐ ๋ซํ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ง ๊ตฌ๋ถ์ ๋งค์ฐ ๋ถ๋ช ํ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค. ๋ซํ ๋ฌธ์ ๊ฐ ๋ด ๋ฌธ์ ์ธ ๊ฒฝ์ฐ์๋ง ํ์ธํ๊ณ ๋ค์ ๋์๊ฐ์ ํ์ธํ๊ณ ์ถ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ฌธ ๊ฒฝ์ฐ์ง๋ง ํน์ ์ฃผ์ ์ ๋ํ ํ ๋ก ์ ์ํด ๋น๊ณต๊ฐ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ์ ๋ํ ๋ด ์๊ฐ์ 90% ์ด์์ ๋น์ฐํ ๊ทธ๋์ผ ํ๋ ๋ฏธ๊ฒฐ ๋ฌธ์ ์ ์์ต๋๋ค. ๋ ์ฌ์ด์ ๊ฒฝ๊ณ๋ฅผ ํ๋ฆฌ๊ฒ ํ๊ณ ๋ฏธํด๊ฒฐ ๋ฌธ์ ์ ์๋ฏธ๋ฅผ ์๊ฒ ๋ง๋๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ด ๋ฌธ์ ์์ ํ๋ ๊ฒ์ฒ๋ผ ํด๊ฒฐ๋๊ธฐ ์ ์ ๊ฐ๋จํ ๋ซ๋ ๊ฒ์ ๋๋ค.
(ํ ๋ก ) ๊ณ์ํ๊ธฐ ์ํด ์ด๋ ค ์์ง๋ง ๋ซํ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด ์ฌ๋๋ค์ด ๊ณต๊ฐ ๋ฌธ์ ์ ๋น๊ณต๊ฐ ๋ฌธ์ ์ ๊ตฌ๋ถ์ ์๊ฒ ๋๋ฏ๋ก ๊ณต๊ฐ ๋ฌธ์ ์ ์ง์คํ๊ธฐ๋ณด๋ค ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๊ฒ์ํด์ผ ํฉ๋๋ค. ์ฆ, 2K ๊ณต๊ฐ ๋ฌธ์ ์ 4K ๋น๊ณต๊ฐ ๋ฌธ์ ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ๋ฏธํด๊ฒฐ ๋ฌธ์ ์๋ง ์ด์ ์ ๋ง์ถ๋ ๋์ ๊ทธ๋ค๊ณผ ๊ด๋ จ๋ ํ ๋ก ์ ์ํด. ๊ทธ๊ฒ์ ๋ถ์์ง๊ณ ๊ฒฐํจ์ด ์๋ ๋ฌธ์ ๊ด๋ฆฌ ์ ๋ต์ ๋๋ค.
๋ฌธ์ ์ ๊ดํด์๋ ๋ฌดํ์ผ๋ก ๋ฐ๋๋๋ค. ์ด๊ธฐ ์์ฒญ์ "Windows์์ ์ฌ๋์ ์ฌ์ฉ", "๊ฒฝ๋ก ๋น๊ต"์์ต๋๋ค. ๋ค์์ ๋ญ์ผ? ์๊ฒฉ?
๊ทธ๊ฑด ๋ง๋ ์๋ผ. ๋ ผ์๋ ํฌ๋ก์ค ํ๋ซํผ์ฉ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ๋ ๋ฐฑ์ฌ๋์๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ Windows๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ๊ทธ ์ฃผ์ ์ ๊ณ์ ์ด์ ์ ๋ง์ท์ต๋๋ค. ์ด์ ์ด ์ ํ ๋ง์ง ์๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋๋ก ํ๋ ค๊ณ ํฉ๋๋ค.
@iSazonov , ๋๋ฌด ๋ง์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ๋๋ฌด ๋ง๋ค๋ ์ฌ์ค์ด ์ฐ๋ฆฌ๊ฐ ์๋ก์ด ๋ฌธ์ ์ ๋ํด ๋ฌด์ํ๊ณ ์กฐ๊ธฐ์ ๋ํ๋ฅผ ์ข ๋ฃํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ์ํด์ ํผ๋๋ฐฑ์ ์ฅ๋ คํ๊ณ ๋ฏธํด๊ฒฐ ๋ฌธ์ ์์ PowerShell์ ๋ํ ํ ๋ก ์ ์ด์ด์ผ ํ๋ฉฐ, ์ง์ ์ผ๋ก ํด๊ฒฐ๋ ํ์๋ง ์ข ๋ฃํด์ผ ํฉ๋๋ค. ๋ฏธํด๊ฒฐ ๋ฌธ์ ์ ์์ ๋ค๋ฅด๊ฒ ๋ค๋ฃจ์ด์ผ ํฉ๋๋ค.
์ถฉ์ฑ์ค๋ฌ์ด Linux ์ฌ์ฉ์?์ดํดํ ์ ์๋ ์กฐ์ธ.
๋ง์ดํฌ๋ก์ํํธ๋ฅผ ์ค๋ํ ์ ์์ต๋๋ค. ์์คํ
ํ์ผ ๊ฒฝ๋ก๋ก ๋ฐฑ์ฌ๋์๋ฅผ ์ฌ์ฉํ๋๋ก ์์ฒญํ์ญ์์ค.
Windows์์๋ ์ฌ๋์๊ฐ ์๋ ๋ฆฌํฐ๋ด ๊ฒฝ๋ก๊ฐ ํ์ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ค๋ ์ ์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.
์ ๋ .net API๋ฅผ ์ฌ์ฉํ์ฌ zip ์์นด์ด๋ธ๋ฅผ ์กฐ์ํ๊ณ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์์์ต๋๋ค. ์ด API๋ฅผ ์ฌ์ฉํ์ฌ zip ํ์ผ์ ํญ๋ชฉ ์ถ๊ฐ:
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile(
$zip, $file, $entry,
[System.IO.Compression.CompressionLevel]::Optimal
) > $null
์ด ํน๋ณํ ๊ฒฝ์ฐ $entry๋ zip ์์นด์ด๋ธ ๋ด์ ๊ฒฝ๋ก์ ๋๋ค. ๋ค์ํ ๊ฒฝ๋ก cmdlet์์ ๋ฐํ๋ ๋๋ก Windows ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ๊ธฐ๋ง ํ๋ฉด ์ง๊ตฌ์์ ๋ชจ๋ zip ์ ํธ๋ฆฌํฐ์์ ๋ด zip ํ์ผ์ ์๋ชป๋ ์ฌ๋์๊ฐ ์๋ค๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
๋ํ ์ค๋ ์๊ฐ Linux ์ฌ์ฉ์์ด์ ๊ฐ๋ฐ์๋ก์ ์ ๋ powershell์ ์ฌ๋ํ๊ณ ๊ทธ๊ฒ์ ๋ฐฐ์ฐ๋ ๋ฐ ๋ง์ ์ฌ๋ฏธ๋ฅผ ๋๋ผ๊ณ ์์ต๋๋ค. ๋๋ ssh๋ฅผ ํตํด powershell 7๋ก๋ ์๋ก์ด Windows ์๋ฒ ์ฝ์ด๋ฅผ ๊ฐ์ง๊ณ ์ฌ๋ฏธ์๊ฒ ๋๊ณ ์์ผ๋ฉฐ Linux์ powershell๊ณผ ์๋ฒฝํ๊ฒ ์๋ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ํ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ์ ์๋ํ๋์ง ๋๋๋ค. ์ฌ์ค, powershell์ ๋ด๊ฐ ํฌ๋ก์ค ํ๋ซํผ์ ์ํ๋ ์ผ๋ถ ํ๋ก๊ทธ๋จ/์คํฌ๋ฆฝํธ์ ๋ํ ์ฒซ ๋ฒ์งธ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ด ๋ชจ๋ ํญ ์์ฑ์ด ๋ฐฑ์ฌ๋์๋ก ๋ค์ ์์ฑ๋๋ ๊ฒ์ ๋ณด๋ ์ฌ์ ํ ์ํ๊น์ต๋๋ค.
๋๋ Windows์์ ํญ์ /users/foo/somefile๊ณผ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ด๊ฒ์ด ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
๋๋ถ๋ถ์ Windows API๋ ์ฌ๋์๋ฅผ ์ ์ง์ํฉ๋๋ค. ์ ํธ๋ฆฌํฐ ๋ฐ API, ์ฆ ์ผ๋ถ cmd.exe ํธ์ถ์ ๋ช ๊ฐ์ง ์์ธ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋ฐฑ์ฌ๋์๋ฅผ ๋ช ์์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ๋ก์ ์ฌ๋์๊ฐ ์๋๋ก $profile์ ๋ฌด์ธ๊ฐ๋ฅผ ์ค์ ํ๊ณ ์ถ์ต๋๋ค.
๋ฐฑ์ฌ๋์๋ฅผ ์ฌ์ฉํ๋ Windows ์ฌ์ฉ์์ ๊ฐ๋ฐ์๋ ์ด ์ค์ ์ ์ฌ์ฉํ์ง ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ง์ผ๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๋ถ์พ๊ฐ์ ์ฃผ์ง ์์ต๋๋ค. ๋ฌผ๋ก ์๋ฅผ ๋ค์ด ํฌ๋ก์ค ํ๋ซํผ ์คํฌ๋ฆฝํธ์ ๋ชจ๋์ ๋ ๋ง์ด ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๋ด ์คํฌ๋ฆฝํธ์ ๋ชจ๋์๋ ์ด ์ค์ ์ ์ฌ์ฉํ์ฌ ์์์ ๋ณด์ฌ๋๋ฆฐ ๊ฒ๊ณผ ๊ฐ์ ์๊ธฐ์น ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๊ณ ์ถ์ต๋๋ค.
@iSazonov ์ฌ์ฉ์๋ ํ๋ซํผ์ ๊ด๊ณ์์ด ํธ์ํ ์ฌ๋์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฌ์ฉ์์๊ฒ ๋ ํธํ๊ธฐ ๋๋ฌธ์ PowerShell์ ๊ตฌ์ฑํ์ฌ ์ฌ๋์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ์ ๋๊น? ํ๋กฌํํธ์ ํ์๋ ๊ฒฝ๋ก์ ํ์ฌ ์ฌ๋์๋ฅผ ๋ฐฑ์ฌ๋์๋ก ๋ณ๊ฒฝํ๋ ํญ ์๋ ์์ฑ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค.
@aaronfranke , ์๋์, ํ์ฌ ์ด ๋ฐฉ์์ผ๋ก PowerShell์ ๊ตฌ์ฑํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. @iSazonov ๊ฐ ๋งํ๋ ค๊ณ ํ๋ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์
๋ ฅํ ๋ \
์ /
์ค์์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์๋ค๋ ๊ฒ์
๋๋ค(๋ํ ๋จ์ผ ๊ฒฝ๋ก์ ํผํฉํ ์๋ ์์) .
๋ค์์ฑ์ ๊ณ ๋ คํ์ฌ / ๋์ ์ ๊ฒฝ๋ก ๊ธฐํธ๋ฅผ ํ์ฑํํด์ผ ํฉ๋๋ค. ๏ผ์ ํต์ ์ธ ๊ธฐํธ๋ ํ๋ซํผ ๊ฐ ๋ณํ์ ์ด๋ ค์์ ๋์ ๋๋ค.
@iSazonov ๊ฐ ๋งํ๋ ค๊ณ ํ๋ ๊ฒ์ ์๋์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ ๋ ๋ฐ / ์ค์์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค(๋ํ ๋จ์ผ ๊ฒฝ๋ก์์ ํผํฉํ ์๋ ์์ต๋๋ค).
์, PowerShell ๋์์ธ์ ๋๋ค.
์ด๊ฒ์ ์๋ฃ ์ค ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ์ ๊ฐ์ ๊ต์ฒด ๋๋ ์ ํํ ๊ฒฝ๋ก ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฒฝ๋ก cmdlet์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ด ์ฌ๊ธฐ์์ ์ ๊ธฐ๋ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ?
@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์ VS Code์์ TestScript8.ps1์ ์ด ์ ์์ต๋๋ค.
@markm77 , _bug_๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค . ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น? [_update_: #13064 ์ฐธ์กฐ]
๊ธฐ๋ณธ๊ฐ์ /
, @aaronfranke ๋ก ์ค์ ํ๋ ์ตํธ์ธ ๋ฉ์ปค๋์ฆ์ ๋ํ ๋
ผ์์ ์๋์ง๋ง $#$2 /
๋์ \
๊ฐ ์ฌ์ ํ ์ค๋จ๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค. Windows์ ๊ฒ๋ค; ์:
PS> cmd /c dir C:/
Invalid switch - ""
๊ฒฝ๋ก๋ฅผ ํฐ๋ฐ์ดํ๋ก ๋ฌถ๋ ๊ฒ์ _directory_ ๊ฒฝ๋ก์๋ง ๋์์ด ๋ฉ๋๋ค. ํฅ๋ฏธ๋กญ๊ฒ๋ https://stackoverflow.com/a/43297482/45375 ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Excel COM ์๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ /
๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ๋ ๋ณด์ฌ์ค๋๋ค.
์คํ ์ค๋ฒํ๋ก$Path = 'D:/ETL_Data/TwitchTVData.xlsx' $csvPath = 'D:/ETL_Data/TwitchTVData2.csv' # Excel ๋ฌธ์๋ฅผ ์ด๊ณ 'Sheet1' ์ํฌ์ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. $Excel = New-Object -Com Excel.Application $์ํฌ๋ถ...
@markm77 , ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น?
๊ทธ๋ฌ๋ ์ด๊ฒ์ด PowerShell ๋ฒ๊ทธ์
๋๊น? PowerShell์ dir
๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฒ์ฌํ์ฌ ํ์ธ๋ ๋๋ก ์ง์ ๋ ์ฌ๋์๊ฐ ์๋ ์ฌ๋ฐ๋ฅธ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ง๋ญ๋๋ค. ์๋ชป๋ ์ฌ๋์ ์ ํ์ผ๋ก ์์ฑ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ VS Code์ ๊ฐ์ ์ฑ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ๊ทธ๊ฒ๋ ์๋ง๋ ์ดํดํ ์ ์์ต๋๋ค.
NB ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ๋ ์ถ๊ฐ ์ด์ ์ด ์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋์์์ convert-item
๋ฅผ ์คํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค(์ ์ ํ ์ ์์).
NB ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ๋ ์ถ๊ฐ ์ด์ ์ด ์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋์์์
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๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋์๊ณผ ๋ฌธ์ ์ ๊ธฐ https://github.com/PowerShell/PowerShell/issues/13064 ์ ๋ํ ์ฒ ์ ํ ์กฐ์ฌ์ ๋ํด @mklement0 ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ด๊ฐ ๊ฐ์ง ํน์ ๋ฌธ์ ์ ์ด ํ ๋ก ์ ๋ํ ํ์ ์กฐ์น๋ฅผ ์ํด ๋ฉ๋ชจ๋ฅผ ์์ฑํ์ง๋ง ์ค์ ๋ก https://github.com/PowerShell/PowerShell/issues/13064 ์ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ฃจ์์ผ๋ฉฐ ์ค์ ๋ก ๋ฐฉ๋ฒ์ ์๋ ค์ค ๊ฒ ๊ฐ์ต๋๋ค. PowerShell ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด(์ ๋ PowerShell์ ์ฒ์ ์ฌ์ฉํฉ๋๋ค).... ๊ฑด๋ฐฐ!
๋๋์ด ๋ฌธ์ ๋ฅผ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ๋ฐ๋ฅด์ง ์์์ผ๋ฏ๋ก ๋๋ฝ ๋ ์ฌํญ์ด ์์ผ๋ฉด ์ค๋กํฉ๋๋ค. ์ด๊ธฐ ๋ฌธ์ ๋ ํ๋ซํผ ๊ฐ ํ์คํ๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์(์ฌ๋์ ๊ฐ๋ฅ์ฑ ์์)์์ต๋๋ค. @iSazonov ๋ ์ด์ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ์ต๋๋ค. ์ด์ ๋ง๊ฐ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ ์ฌ๋๋ค์ด ๋ฐ๋ผ๊ฐ ์ ์๋๋ก ์ด๊ฒ์ด ๋ ์ด์ ์ ํจํ์ง ์๋ค๊ณ ์๊ฐํ๋ ์ด์ ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
https://github.com/PowerShell/PowerShell/issues/10509#issuecomment -644419471 ์ ๋ฐ๋ผ ์ ํจํ์ง ์์์ต๋๋ค.
์์์ @lzybkr ์ด ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ ํ โโ์๋ฒฝํ๊ฒ ํฉ๋ฆฌ์ ์ด๋ฉฐ ๊ตฌํํ๊ธฐ ์ฝ์ต๋๋ค. ์์ฝํ์๋ฉด:
๊ฒฝ๋ก ์์ฑ์ด ์์ฑ ํ ์คํธ์ ๋ช ์์ ์ผ๋ก ๋ํ๋๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ข์ ํ ๋ฐ, ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ซํผ ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ก ์ค์ ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ Windows์์ /
๊ฐ ์ฌ์ ํ ์ค๋จ๋๋ ๋๋ฌธ ๊ฒฝ์ฐ๋ฅผ ํผํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ฑ
์์
๋๋ค( ์ ์ฐธ์กฐ).
์ด๊ฒ์ powershell์ ํตํด wsl bash ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋ ์ ๋ง ๊ณจ์น ์ํ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. ์ข๋ค:
bash .\updateTemplate.sh
์ด๊ฒ์ ์๋ ์์ฑ๋์ด์ผํฉ๋๋ค
bash ./updateTemplate.sh
์ด ๋ฌธ์ ์ ๋ํ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ํนํ PS๊ฐ bash/WSL ์ปจํ ์คํธ์์๋ง ์ฌ๋์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ์๋ ์์ฑํ๋ฉด ์์ ํ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
bash์ ๋ํ ์ฌ์ฉ์ ์ ์ ์์ฑ๊ธฐ๋ฅผ ๋ง๋ญ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
bash์ ๋ํ ์ฌ์ฉ์ ์ ์ ์์ฑ๊ธฐ๋ฅผ ๋ง๋ญ๋๋ค.
์ด๋ป๊ฒ ํฉ๋๊น?
์ด ๋ฌธ์ ์ ๊ทผ๊ฑฐ ์๋ ์ข ๊ฒฐ์ ๋ํด ๋ ์ด์ ๋ ผ์ํ์ง ์์ต๋๊น? ์ด๊ฒ์ ํ๋ซํผ ๊ฐ ์์ ์ ๋ํ ์ฃผ์ ์ฑ๊ฐ์ฌ์ ๋๋ค. ํ๋ซํผ ๊ฐ ๋๊ตฌ ๋๋ wsl์ ํตํด ๊ฐ์ ์ ์ผ๋ก Linux ๋๊ตฌ์ ์ ๊ณต๋๋ ๊ฒฝ๋ก๋ฅผ ์๋ ์์ฑํ ๋๋ง๋ค ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ํตํด ์ปค์๋ฅผ ๋ค๋ก ์ด๋ํ๊ณ ๋ชจ๋ ๋จ์ผ ๋ฐฑ์ฌ๋์๋ฅผ ์ฌ๋์๋ก ๊ฐ๋ณ์ ์ผ๋ก ๊ต์ฒดํด์ผ ํฉ๋๋ค. ์๋ฌด๋ ์ด๋ฐ ์์ผ๋ก ์์ ํด์๋ ์ ๋๋ฉฐ, Powershell์ ๋ช ๋ น์ค๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฒฝ๋ก ์์ฑ์ด ์์ฑ ํ ์คํธ์ ๋ช ์์ ์ผ๋ก ๋ํ๋๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ข์ ํ ๋ฐ, ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ซํผ ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ก ์ค์ ๋ฉ๋๋ค.
๋ฐ๋ผ์ Windows์์
c:\w
๋c:\Windows\
๋ก ์๋ฃ๋๊ณc:/w
๋ 'c:/Windows/'๋ก ์๋ฃ๋ฉ๋๋ค.๋๋ ์ด๊ฒ์ด ๊ตฌ์ฑ ์ต์ ์ ์๊ตฌํ์ง ์๊ณ ์ฑ๊ฐ์ฌ์ ๋๋ถ๋ถ์ ์ปค๋ฒํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ, ์ด๋ค ์ด์ ๋ก๋ ๋๋๋ก ๋ค๋ฅธ ํ์์ด ํ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋ฐ๋์งํฉ๋๋ค.