PowerShell의 xargs와 동등한 수준은 얼마입니까?
POSIX 정의 명령어는 표준 입력에서 수신하는 모든 항목을 가져와 자신의 명령줄에서 수신하는 명령어에 명령줄 인수로 전달합니다.예:grep -rn "String" | xargs rm
.
PowerShell에 해당하는 기능은 무엇입니까?
다음 질문은 모두 다음과 같습니다.
하지만 정답은 없습니다. 왜냐하면 모든 정답은 다음과 같이 사용하기 때문입니다.ForEach-Object
, 한 번에 하나씩 항목을 처리할 것입니다(예:xargs -n1
주어진 예제에 대해 원하는 결과를 얻거나 중간 결과를 변수에 저장하여 내 함수 명령줄-fu를 불쾌하게 합니다.
제가 찾은 방법은 두 가지입니다.첫 번째는 아마도 더 관용적인 PowerShell일 것이고, 두 번째는 파이프 기반 정신에 더 충실할 것입니다.xargs
.
예를 들어, 우리가 우리의 모든 고양이 사진을 전달하고 싶다고 하자,myapp.exe
.
방법 #1: 명령어 대체
$(명령 대체)를 사용하는 것과 유사한 작업을 수행할 수 있습니다.sh
명령 문자열에 파이프라인을 포함시킴으로써:
&"myapp.exe" @(Get-ChildItem -Recurse -Filter *.jpg | Another-Step)
그@(...)
내부의 명령에서 어레이를 생성하고, PowerShell은 다음으로 전달되는 어레이를 자동으로 확장합니다.&
별도의 명령줄 매개 변수로 변환할 수 있습니다.
그러나 전달하려는 명령을 제어할 수 있는 경우에만 작동하기 때문에 질문에 실제로 답하지 않습니다.
방법 #2: 참 배관
하위 표현식을 사용하여 개체를 파이프링한 다음 배열을 배열로 수집한 다음 배열을 최종 명령으로 파이프링함으로써 "이중 파이프라인"을 구성할 수도 있습니다.
,@(Get-ChildItem -Recurse -Filter *.jpg | Another-Step) | %{&"myapp.exe" $_}
그@(...)
이전과 같이 항목을 배열로 수집하고 배열은 다음을 사용하여 호출되는 최종 명령으로 피핑됩니다.%
(ForEach-Object
일반적으로 이는 각 항목을 개별적으로 루프합니다. 왜냐하면 파워셸은 파이프에 연결될 때 배열을 자동으로 평평하게 만들기 때문입니다. 하지만 이는 다음과 같이 추가함으로써 방지할 수 있습니다.,
오퍼레이터. 더$_
그런 다음 통과된 배열을 포함하기 위해 특수 변수가 정규 변수로 사용합니다.
따라서 중요한 것은 수집하려는 파이프라인을 포장하는 것입니다.,@(...)
, 그 다음엔 파이프로 뭔가를 집어넣습니다.%{...}
.
이 필터는 기본적으로 사용해 왔습니다.xargs
집행
filter xargs { ($h,$t) = $args; & $h ($t + $_) }
이는 대략 다음과 맞먹습니다.
filter xargs { & $args[0] ($args[1..$args.length] + $_) }
예
docker ps -q | xargs docker stop
gem list | % { $_.split()[0] } | xargs gem uninstall -aIx
전에 이런 문제가 있었습니다.
PowerShell에서는 다음을 사용할 수 있습니다.
docker ps -aq | ForEach-Object { docker rm $_ }
가장 가까이 갈 수 있는 것은 스플랫팅을 사용하는 것이라고 생각합니다.이 예제에서 사용하는foreach
: loop:합니다.
function Xargs {
param(
$Cmd
)
process {
$args += ,$_
}
end {
& $Cmd @args
}
}
이제 테스트:
PS> '-c','"print(123)"' | Xargs python
123
이름이 지정된 매개 변수나 플래그에서는 작동하지 않습니다. 순수한 위치 매개 변수만 전달하므로 cmdlet이 아닌 경우에 가장 잘 작동해야 합니다.
그 말은 내가 당신이 노력하는 것을 매우 단념시킨다는 뜻이기도 합니다. '-WhatIf' | Xargs Remove-WholeSystem
.
언급URL : https://stackoverflow.com/questions/36428949/whats-the-equivalent-of-xargs-in-powershell
'it-source' 카테고리의 다른 글
워드프레스 - 특정메뉴에 대한 wp_nav_메뉴 맞춤형 (0) | 2023.10.13 |
---|---|
PowerShell 시도/잡기/마침내 (0) | 2023.10.13 |
mysql에서 쿼리 성능 테스트 (0) | 2023.10.13 |
라인 아이템 우커머스 주문 받기 (0) | 2023.10.13 |
C에서 메모리를 동적으로 할당해야 하는 이유는 무엇입니까? (0) | 2023.10.13 |