oarg에서 xargs -d를 대체하십시오.


17

리눅스에서는 xargs -d, 신속하게 hostname 명령을 다음과 같은 순차 이름을 가진 4 개의 다른 서버에 대해 실행하십시오.

echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname

OSX xargs 명령이 delimiter 매개 변수를 지원하지 않는 것 같습니다. 형식이 다른 형식으로 동일한 결과를 얻을 수 있습니까? echo, 또는 다른 명령 줄 유틸리티를 통해?

답변:


10

어때?

echo {1..4} | xargs -n1 -I{} ssh root@www{}.example.com hostname

에서 man xargs:

-n number
Set the maximum number of arguments taken from standard input for each invocation of utility.

1
값에 공백, 줄 바꿈 또는 탭이 포함될 수있는 경우 다음과 같은 것을 사용할 수 있습니다. printf 'a\0a' | xargs -0 -n1 echo.
Lri

37

또는 GNU를 항상 설치할 수 있습니다. xargs ...을 통하여 자작 나무 와 GNU findutils 꾸러미.

Homebrew 설치 :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

지시를 따르다. 그런 다음 findutils를 설치하십시오.

brew install findutils

이것은 당신에게 GNU를 줄 것이다. xargs 같이 gxargsGNU / Linux에서 익숙한 구문을 사용할 수 있습니다. findutils 패키지에있는 다른 기본 명령들도 마찬가지입니다. gfind 또는 glocate 또는 gupdatedbOS X에서 다른 BSD를 가지고있다.


1

병렬로 실행하려면 GNU Parallel을 사용하십시오.

parallel ssh root@www{}.example.com hostname ::: {1..4}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.