PARSET(1) parallel PARSET(1)

parset - مقداردهی متغیرهای شل به‌صورت موازی

parset variablename [گزینه‌های GNU Parallel]

env_parset variablename [گزینه‌های GNU Parallel]

parset یک تابع شل است که خروجی GNU parallel را درون متغیرهای شل قرار می‌دهد.

env_parset یک تابع شل است که خروجی env_parallel را درون متغیرهای شل قرار می‌دهد.

توابع parset و env_parset به‌عنوان بخشی از env_parallel تعریف شده‌اند.

اگر variablename یک نام متغیر منفرد باشد، با آن به‌عنوان متغیر مقصد رفتار می‌شود. اگر متغیر به‌صورت یک آرایه انجمنی (با استفاده از typeset -A myassoc) تعریف شده باشد، از همان استفاده خواهد شد. در غیر این صورت، متغیر به یک آرایه معمولی تبدیل می‌شود.

اگر variablename شامل چندین نام باشد که با ',' یا فاصله از هم جدا شده‌اند، آن نام‌ها متغیرهای مقصد خواهند بود. تعداد نام‌ها باید حداقل به اندازه تعداد کارها باشد..SH "گزینه‌ها (OPTIONS)" مشابه GNU parallel، اما پس از متغیر مقصد قرار می‌گیرند.

مثال‌ها

قرار دادن خروجی در myarray:

parset myarray seq 3 ::: 4 5 6
echo "${myarray[1]}"

قرار دادن خروجی در متغیرهای $seq، $pwd، $ls:

parset "seq pwd ls" ::: "seq 10" pwd ls
echo "$ls"

قرار دادن خروجی در متغیرهای $seq، $pwd، $ls:

into_vars=(seq pwd ls)
parset "${into_vars[*]}" ::: "seq 10" pwd ls
echo "$ls"

قرار دادن خروجی در آرایه انجمنی myassoc (در mksh پشتیبانی نمی‌شود):

typeset -A myassoc
parset myassoc seq ::: 4 5 ::: 6 7
echo "${myassoc[4 7]}"

دستوراتی که قرار است اجرا شوند می‌توانند یک آرایه باشند:

cmd=("echo first" "echo '<<joe  \"double  space\"  cartoon>>'" "pwd")
parset data ::: "${cmd[@]}"
echo "${data[1]}"
echo "${data[2]}"

دستور parset می‌تواند از stdin (ورودی استاندارد) بخواند، در صورتی که یک فایل باشد:

parset res echo < parallel_input_file

اما parset نمی‌تواند بخشی از یک پایپ (pipe) باشد. این موضوع به‌ویژه بدان معناست که نمی‌تواند از یک پایپ بخواند یا در یک پایپ بنویسد:

seq 10 | parset res echo Does not work

بلکه در عوض باید از یک فایل موقت (tempfile) استفاده کند:

seq 10 > parallel_input
parset res echo :::: parallel_input
echo "${res[1]}"
echo "${res[9]}"

یا یک FIFO:

mkfifo input_fifo
seq 30 > input_fifo &
parset res echo :::: input_fifo
echo "${res[1]}"
echo "${res[29]}"

یا جایگزینی فرایند (process substitution) در Bash/Zsh/Ksh:

parset res echo :::: <(seq 100)
echo "${res[1]}"
echo "${res[99]}"

نصب

این مورد را در $HOME/.bashrc یا $HOME/.zshenv یا $HOME/.kshrc مربوطه قرار دهید:

. env_parallel.bash
. env_parallel.zsh
source `which env_parallel.ksh`

به‌عنوان مثال با انجام:

echo '. env_parallel.bash' >> $HOME/.bashrc
echo '. env_parallel.zsh' >> $HOME/.zshenv
echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc

یا با اجرای:

  env_parallel --install
مثال‌ها
پوسته ash از آرایه‌ها پشتیبانی نمی‌کند.
قرار دادن خروجی در متغیرهای $seq، $pwd، $ls:
parset "seq pwd ls" ::: "seq 10" pwd ls
echo "$ls"

دستور parset می‌تواند از stdin (ورودی استاندارد) بخواند، در صورتی که یک فایل باشد:

parset res1,res2,res3 echo < parallel_input_file

اما parset نمی‌تواند بخشی از یک pipe باشد. به‌ویژه، این بدان معناست که نمی‌تواند از یک pipe بخواند یا در یک pipe بنویسد:

seq 3 | parset res1,res2,res3 echo Does not work

بلکه در عوض باید از یک فایل موقت (tempfile) استفاده کند:

seq 3 > parallel_input
parset res1,res2,res3 echo :::: parallel_input
echo "$res1"
echo "$res2"
echo "$res3"

یا از یک FIFO:

mkfifo input_fifo
seq 3 > input_fifo &
parset res1,res2,res3 echo :::: input_fifo
echo "$res1"
echo "$res2"
echo "$res3"

نصب

مورد مناسب از میان این گزینه‌ها را در $HOME/.profile قرار دهید:

. env_parallel.sh
. env_parallel.ash
. env_parallel.dash

به‌عنوان مثال با انجام:

echo '. env_parallel.ash' >> $HOME/.bashrc

یا با انجام:

env_parallel --install

مشابه با GNU parallel.

هنگام استفاده از GNU parallel برای یک نشریه علمی یا مقاله، لطفاً ارجاع دهید به:

O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.

این کار به تأمین مالی توسعه بیشتر کمک می‌کند؛ و هیچ هزینه‌ای برای شما نخواهد داشت. اگر 10000 EUR پرداخت کنید، می‌توانید بدون ارجاع دادن با خیال راحت از GNU Parallel استفاده کنید.

Copyright (C) 2007-10-18 Ole Tange, http://ole.tange.dk

Copyright (C) 2008-2010 Ole Tange, http://ole.tange.dk

Copyright (C) 2010-2026 Ole Tange, http://ole.tange.dk و Free Software Foundation, Inc..SH "مجوز (LICENSE)" این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخه ۳ پروانه و چه (به دلخواه خودتان) هر نسخه بعدی دیگری.

این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به «پروانه عمومی همگانی گنو» نگاه کنید.

شما باید یک نسخه از «پروانه عمومی همگانی گنو» را به همراه این برنامه دریافت کرده باشید. در غیر این صورت، نگاه کنید به http://www.gnu.org/licenses.

اجازه کپی، توزیع و/یا تغییر این مستندات تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های ناپیوسته، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این پروانه در فایل LICENSES/GFDL-1.3-or-later.txt گنجانده شده است.

شما آزادید:

اشتراک‌گذاری (to Share)
برای کپی، توزیع و انتقال اثر
تلفیق (to Remix)
برای تطبیق و اقتباس از اثر

تحت شرایط زیر:

انتساب (Attribution)
شما باید اثر را به شیوه‌ای که توسط پدیدآورنده یا اعطاکننده مجوز تعیین شده است ارجاع دهید (اما نه به گونه‌ای که القاگر تأیید شما یا استفاده شما از اثر توسط آن‌ها باشد).
اشتراک یکسان (Share Alike)
اگر این اثر را تغییر دهید، تبدیل کنید یا بر پایه آن چیزی بسازید، اثر حاصل را تنها می‌توانید تحت همان پروانه، مشابه یا سازگار با آن توزیع کنید.

با این درک که:

چشم‌پوشی (Waiver)
در صورت اخذ اجازه از دارنده حق نشر، از هر یک از شرایط فوق می‌توان صرف‌نظر کرد.
مالکیت عمومی (Public Domain)
در جایی که اثر یا هر یک از اجزای آن بر اساس قوانین حاکم در مالکیت عمومی قرار دارد، این وضعیت به هیچ وجه تحت تأثیر این پروانه قرار نمی‌گیرد.
سایر حقوق (Other Rights)
به هیچ وجه هیچ‌یک از حقوق زیر تحت تأثیر این پروانه قرار نمی‌گیرند:
  • حقوق استفاده منصفانه یا معامله منصفانه شما، یا سایر استثناها و محدودیت‌های قانونی حق نشر؛
  • حقوق معنوی پدیدآورنده؛
  • حقوقی که سایر افراد ممکن است در خود اثر یا در نحوه استفاده از آن داشته باشند، مانند حقوق تبلیغات یا حریم خصوصی.
اعلامیه (Notice)
برای هرگونه استفاده مجدد یا توزیع، باید شرایط پروانه این اثر را برای دیگران روشن کنید.

نسخه‌ای از متن کامل پروانه در فایل LICENCES/CC-BY-SA-4.0.txt گنجانده شده است.

parset از GNU parallel استفاده می‌کند.

parallel(1)، env_parallel(1)، bash(1).

2026-07-25 20260722