.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "PARSET 1" .TH PARSET 1 2026-07-25 20260722 parallel .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" parset \- مقداردهی متغیرهای شل به‌صورت موازی .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBparset\fR \fIvariablename\fR [گزینه‌های GNU Parallel] .PP \&\fBenv_parset\fR \fIvariablename\fR [گزینه‌های GNU Parallel] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" \&\fBparset\fR یک تابع شل است که خروجی GNU \&\fBparallel\fR را درون متغیرهای شل قرار می‌دهد. .PP \&\fBenv_parset\fR یک تابع شل است که خروجی \&\fBenv_parallel\fR را درون متغیرهای شل قرار می‌دهد. .PP توابع \fBparset\fR و \fBenv_parset\fR به‌عنوان بخشی از \&\fBenv_parallel\fR تعریف شده‌اند. .PP اگر \fIvariablename\fR یک نام متغیر منفرد باشد، با آن به‌عنوان متغیر مقصد رفتار می‌شود. اگر متغیر به‌صورت یک آرایه انجمنی (با استفاده از \fBtypeset \-A myassoc\fR) تعریف شده باشد، از همان استفاده خواهد شد. در غیر این صورت، متغیر به یک آرایه معمولی تبدیل می‌شود. .PP اگر \fIvariablename\fR شامل چندین نام باشد که با \*(Aq,\*(Aq یا فاصله از هم جدا شده‌اند، آن نام‌ها متغیرهای مقصد خواهند بود. تعداد نام‌ها باید حداقل به اندازه تعداد کارها باشد..SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" مشابه GNU \fBparallel\fR، اما \fIپس از\fR متغیر مقصد قرار می‌گیرند. .SH "پوسته‌های پشتیبانی‌شده (SUPPORTED SHELLS)" .IX Header "SUPPORTED SHELLS" .SS Bash/Zsh/Ksh/Mksh .IX Subsection "Bash/Zsh/Ksh/Mksh" \fIمثال‌ها\fR .IX Subsection "Examples" .PP قرار دادن خروجی در \fBmyarray\fR: .PP .Vb 2 \& parset myarray seq 3 ::: 4 5 6 \& echo "${myarray[1]}" .Ve .PP قرار دادن خروجی در متغیرهای \fR\f(CB$seq\fR\fB، \fR\f(CB$pwd\fR\fB، \fR\f(CB$ls\fR\fB\fR: .PP .Vb 2 \& parset "seq pwd ls" ::: "seq 10" pwd ls \& echo "$ls" .Ve .PP قرار دادن خروجی در متغیرهای \fR\f(CB$seq\fR\fB، \fR\f(CB$pwd\fR\fB، \fR\f(CB$ls\fR\fB\fR: .PP .Vb 3 \& into_vars=(seq pwd ls) \& parset "${into_vars[*]}" ::: "seq 10" pwd ls \& echo "$ls" .Ve .PP قرار دادن خروجی در آرایه انجمنی \fBmyassoc\fR (در mksh پشتیبانی نمی‌شود): .PP .Vb 3 \& typeset \-A myassoc \& parset myassoc seq ::: 4 5 ::: 6 7 \& echo "${myassoc[4 7]}" .Ve .PP دستوراتی که قرار است اجرا شوند می‌توانند یک آرایه باشند: .PP .Vb 4 \& cmd=("echo first" "echo \*(Aq<>\*(Aq" "pwd") \& parset data ::: "${cmd[@]}" \& echo "${data[1]}" \& echo "${data[2]}" .Ve .PP دستور \&\fBparset\fR می‌تواند از stdin (ورودی استاندارد) بخواند، در صورتی که یک فایل باشد: .PP .Vb 1 \& parset res echo < parallel_input_file .Ve .PP اما \fBparset\fR \fIنمی‌تواند\fR بخشی از یک پایپ (pipe) باشد. این موضوع به‌ویژه بدان معناست که نمی‌تواند از یک پایپ بخواند یا در یک پایپ بنویسد: .PP .Vb 1 \& seq 10 | parset res echo Does not work .Ve .PP بلکه در عوض باید از یک فایل موقت (tempfile) استفاده کند: .PP .Vb 4 \& seq 10 > parallel_input \& parset res echo :::: parallel_input \& echo "${res[1]}" \& echo "${res[9]}" .Ve .PP یا یک FIFO: .PP .Vb 5 \& mkfifo input_fifo \& seq 30 > input_fifo & \& parset res echo :::: input_fifo \& echo "${res[1]}" \& echo "${res[29]}" .Ve .PP یا جایگزینی فرایند (process substitution) در Bash/Zsh/Ksh: .PP .Vb 3 \& parset res echo :::: <(seq 100) \& echo "${res[1]}" \& echo "${res[99]}" .Ve .PP \fIنصب\fR .IX Subsection "Installation" .PP این مورد را در \fR\f(CB$HOME\fR\fB/.bashrc\fR یا \fB\fR\f(CB$HOME\fR\fB/.zshenv\fR یا \fB\fR\f(CB$HOME\fR\fB/.kshrc\fR مربوطه قرار دهید: .PP .Vb 3 \& . env_parallel.bash \& . env_parallel.zsh \& source \`which env_parallel.ksh\` .Ve .PP به‌عنوان مثال با انجام: .PP .Vb 3 \& echo \*(Aq. env_parallel.bash\*(Aq >> $HOME/.bashrc \& echo \*(Aq. env_parallel.zsh\*(Aq >> $HOME/.zshenv \& echo \*(Aqsource \`which env_parallel.ksh\`\*(Aq >> $HOME/.kshrc .Ve .PP یا با اجرای: .PP .Vb 1 \& env_parallel \-\-install .Ve.SS "ash/dash (FreeBSD\*(Aqs /bin/sh)" .IX Subsection "ash/dash (FreeBSD's /bin/sh)" \fIمثال‌ها\fR .IX Subsection "Examples" .PP پوسته ash از آرایه‌ها پشتیبانی نمی‌کند. .PP قرار دادن خروجی در متغیرهای \fR\f(CB$seq\fR\fB، \fR\f(CB$pwd\fR\fB، \fR\f(CB$ls\fR\fB\fR: .PP .Vb 2 \& parset "seq pwd ls" ::: "seq 10" pwd ls \& echo "$ls" .Ve .PP دستور \fBparset\fR می‌تواند از stdin (ورودی استاندارد) بخواند، در صورتی که یک فایل باشد: .PP .Vb 1 \& parset res1,res2,res3 echo < parallel_input_file .Ve .PP اما \fBparset\fR نمی‌تواند بخشی از یک pipe باشد. به‌ویژه، این بدان معناست که نمی‌تواند از یک pipe بخواند یا در یک pipe بنویسد: .PP .Vb 1 \& seq 3 | parset res1,res2,res3 echo Does not work .Ve .PP بلکه در عوض باید از یک فایل موقت (tempfile) استفاده کند: .PP .Vb 5 \& seq 3 > parallel_input \& parset res1,res2,res3 echo :::: parallel_input \& echo "$res1" \& echo "$res2" \& echo "$res3" .Ve .PP یا از یک FIFO: .PP .Vb 6 \& mkfifo input_fifo \& seq 3 > input_fifo & \& parset res1,res2,res3 echo :::: input_fifo \& echo "$res1" \& echo "$res2" \& echo "$res3" .Ve .PP \fIنصب\fR .IX Subsection "Installation" .PP مورد مناسب از میان این گزینه‌ها را در \fR\f(CB$HOME\fR\fB/.profile\fR قرار دهید: .PP .Vb 3 \& . env_parallel.sh \& . env_parallel.ash \& . env_parallel.dash .Ve .PP به‌عنوان مثال با انجام: .PP .Vb 1 \& echo \*(Aq. env_parallel.ash\*(Aq >> $HOME/.bashrc .Ve .PP یا با انجام: .PP .Vb 1 \& env_parallel \-\-install .Ve .SH "وضعیت خروج (EXIT STATUS)" .IX Header "EXIT STATUS" مشابه با GNU \fBparallel\fR. .SH "نویسندگان (AUTHORS)" .IX Header "AUTHOR" هنگام استفاده از GNU \fBparallel\fR برای یک نشریه علمی یا مقاله، لطفاً ارجاع دهید به: .PP O. Tange (2011): GNU Parallel \- The Command\-Line Power Tool, ;login: The USENIX Magazine, February 2011:42\-47. .PP این کار به تأمین مالی توسعه بیشتر کمک می‌کند؛ و هیچ هزینه‌ای برای شما نخواهد داشت. اگر 10000 EUR پرداخت کنید، می‌توانید بدون ارجاع دادن با خیال راحت از GNU Parallel استفاده کنید. .PP Copyright (C) 2007\-10\-18 Ole Tange, http://ole.tange.dk .PP Copyright (C) 2008\-2010 Ole Tange, http://ole.tange.dk .PP Copyright (C) 2010\-2026 Ole Tange, http://ole.tange.dk و Free Software Foundation, Inc..SH "مجوز (LICENSE)" .IX Header "LICENSE" این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخه ۳ پروانه و چه (به دلخواه خودتان) هر نسخه بعدی دیگری. .PP این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به «پروانه عمومی همگانی گنو» نگاه کنید. .PP شما باید یک نسخه از «پروانه عمومی همگانی گنو» را به همراه این برنامه دریافت کرده باشید. در غیر این صورت، نگاه کنید به . .SS "مجوز مستندات ۱ (Documentation license I)" .IX Subsection "Documentation license I" اجازه کپی، توزیع و/یا تغییر این مستندات تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود؛ بدون بخش‌های ناپیوسته، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این پروانه در فایل LICENSES/GFDL\-1.3\-or\-later.txt گنجانده شده است. .SS "مجوز مستندات ۲ (Documentation license II)" .IX Subsection "Documentation license II" شما آزادید: .IP "\fBاشتراک‌گذاری (to Share)\fR" 9 .IX Item "to Share" برای کپی، توزیع و انتقال اثر .IP "\fBتلفیق (to Remix)\fR" 9 .IX Item "to Remix" برای تطبیق و اقتباس از اثر .PP تحت شرایط زیر: .IP "\fBانتساب (Attribution)\fR" 9 .IX Item "Attribution" شما باید اثر را به شیوه‌ای که توسط پدیدآورنده یا اعطاکننده مجوز تعیین شده است ارجاع دهید (اما نه به گونه‌ای که القاگر تأیید شما یا استفاده شما از اثر توسط آن‌ها باشد). .IP "\fBاشتراک یکسان (Share Alike)\fR" 9 .IX Item "Share Alike" اگر این اثر را تغییر دهید، تبدیل کنید یا بر پایه آن چیزی بسازید، اثر حاصل را تنها می‌توانید تحت همان پروانه، مشابه یا سازگار با آن توزیع کنید. .PP با این درک که: .IP "\fBچشم‌پوشی (Waiver)\fR" 9 .IX Item "Waiver" در صورت اخذ اجازه از دارنده حق نشر، از هر یک از شرایط فوق می‌توان صرف‌نظر کرد. .IP "\fBمالکیت عمومی (Public Domain)\fR" 9 .IX Item "Public Domain" در جایی که اثر یا هر یک از اجزای آن بر اساس قوانین حاکم در مالکیت عمومی قرار دارد، این وضعیت به هیچ وجه تحت تأثیر این پروانه قرار نمی‌گیرد. .IP "\fBسایر حقوق (Other Rights)\fR" 9 .IX Item "Other Rights" به هیچ وجه هیچ‌یک از حقوق زیر تحت تأثیر این پروانه قرار نمی‌گیرند: .RS 9 .IP \(bu 2 حقوق استفاده منصفانه یا معامله منصفانه شما، یا سایر استثناها و محدودیت‌های قانونی حق نشر؛ .IP \(bu 2 حقوق معنوی پدیدآورنده؛ .IP \(bu 2 حقوقی که سایر افراد ممکن است در خود اثر یا در نحوه استفاده از آن داشته باشند، مانند حقوق تبلیغات یا حریم خصوصی. .RE .RS 9 .RE .IP "\fBاعلامیه (Notice)\fR" 9 .IX Item "Notice" برای هرگونه استفاده مجدد یا توزیع، باید شرایط پروانه این اثر را برای دیگران روشن کنید. .PP نسخه‌ای از متن کامل پروانه در فایل LICENCES/CC\-BY\-SA\-4.0.txt گنجانده شده است. .SH "وابستگی‌ها (DEPENDENCIES)" .IX Header "DEPENDENCIES" \&\fBparset\fR از GNU \fBparallel\fR استفاده می‌کند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBparallel\fR(1)، \fBenv_parallel\fR(1)، \fBbash\fR(1).