병렬 명령을 실행하고 출력을 특정 이름의 파일로 리디렉션

병렬 명령을 실행하고 출력을 특정 이름의 파일로 리디렉션

병렬 명령이 어떻게 작동하는지 잘 모르겠습니다.

다음 간단한 명령을 실행해야 합니다. (100회)

curl https://jsonplaceholder.typicode.com/todos/1
curl https://jsonplaceholder.typicode.com/todos/2
curl https://jsonplaceholder.typicode.com/todos/3
...
curl https://jsonplaceholder.typicode.com/todos/100

end는 출력을 다음 이름의 파일로 리디렉션합니다.

1.txt
2.txt
3.txt
....
100.txt

답변1

이와 같이:

parallel curl https://jsonplaceholder.typicode.com/todos/{} ">" {}.txt ::: {1..100}

20분 정도 시간을 내어 GNU Parallel 2018 책(인쇄 버전:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html온라인:https://doi.org/10.5281/zenodo.1146014). 당신의 명령줄은 당신을 좋아할 것입니다.

답변2

글쎄, 이것은 약간 과도하게 엔지니어링된 Bash 솔루션이지만 작동하고 다음 명령의 사용을 명확하게 해주기를 바랍니다 parallel.

function xx(){ curl "https://jsonplaceholder.typicode.com/todos/$1" > "$1.txt";}
parallel xx -- {1..100}

첫 번째 줄은 xx실행 시 컬 명령이 실행되도록 하고 표준 출력을 파일로 리디렉션하는 새로운 "명령" 또는 함수를 생성합니다. 함수 xx는 단일 숫자를 인수로 사용하며 함수 본문 내에서는 첫 번째 위치 인수인 "$1"이라고 합니다.

parallel두 번째 라인은 목록 1, 2, 3, ..., 100의 각 매개변수에 대해 한 번 실행되는 명령의 사용을 보여줍니다 xx(목록 1 2 3 ... 100은 다음 조건에서 쉘에 의해 생성됩니다). : {1..100})에서 버팀대 확장을 수행합니다.

parallelmoreutils참고: 이 답변은 Commands 가 아닌 Debian 시스템 패키지의 Commands 와 관련이 있습니다 GNU parallel.

관련 정보