.TH "ZSHZFTPSYS" "1" "July 12, 2026" "zsh 5\&.9\&.2" .SH "نام (NAME)" zshzftpsys \- رابط کاربری توابع zftp .\" Yodl file: Zsh/zftpsys.yo .SH "توضیحات (DESCRIPTION)" .PP این بخش مجموعه‌ای از توابع شل عرضه‌شده همراه با توزیع مبدأ را به عنوان یک واسط برای دستور توکار \fBzftp\fP توصیف می‌کند، که به شما امکان می‌دهد عملیات‌های FTP را از خط فرمان شل یا از درون توابع یا اسکریپت‌ها انجام دهید\&. این واسط شبیه به یک کلاینت سنتی FTP است (برای مثال خود دستور \fBftp\fP، به \fIftp\fP(1) نگاه کنید)، اما از آنجا که کاملاً درون شل انجام می‌شود، تمام ویژگی‌های آشنای تکمیل خودکار (completion)، ویرایش و تطبیق الگو (globbing) و غیره حضور دارند، و نوشتن ماکروها به ویژه ساده است زیرا آن‌ها فقط توابع معمولی شل هستند\&. .PP پیش‌نیاز این است که دستور \fBzftp\fP، همان‌طور که در \fIzshmodules\fP(1) شرح داده شده است، باید در نسخهٔ \fBzsh\fP نصب‌شده در سیستم شما در دسترس باشد\&. اگر شل طوری پیکربندی شده باشد که دستورهای جدید را در زمان اجرا بارگیری کند، احتمالاً موجود است: وارد کردن «\fBzmodload zsh/zftp\fP» اطمینان حاصل خواهد کرد (اگر بدون خروجی اجرا شود، کار کرده است)\&. در غیر این صورت، ممکن است \fBzftp\fP به هر حال به صورت داخلی با شل پیوند (link) داده شده باشد: برای آزمایش این مورد، عبارت «\fBwhich zftp\fP» را بنویسید و اگر \fBzftp\fP در دسترس باشد پیام «\fBzftp: shell built\-in command\fP» را دریافت خواهید کرد\&. .PP دستورهایی که مستقیماً با دستور توکار \fBzftp\fP صادر می‌شوند ممکن است در میان توابع این مجموعه آمیخته شوند؛ در موارد اندکی، استفادهٔ مستقیم از \fBzftp\fP ممکن است باعث شود برخی از اطلاعات وضعیت ذخیره‌شده در متغیرهای شل نامعتبر شوند\&. به‌ویژه به توضیحات متغیرهای \fB$ZFTP_TMOUT\fP، \fB$ZFTP_PREFS\fP و \fB$ZFTP_VERBOSE\fP برای \fBzftp\fP توجه کنید\&. .PP .PP .SH "نصب (INSTALLATION)" .PP باید مطمئن شوید که تمامی توابع از دایرکتوری \fBFunctions/Zftp\fP توزیع مبدأ در دسترس هستند؛ همگی آن‌ها با دو حرف «\fBzf\fP» شروع می‌شوند\&. ممکن است آن‌ها از پیش روی سیستم شما نصب شده باشند؛ در غیر این صورت، باید آن‌ها را پیدا کرده و کپی کنید\&. این دایرکتوری باید به عنوان یکی از عناصر آرایهٔ \fB$fpath\fP ظاهر شود (اگر نصب شده باشند باید از قبل چنین باشد)، و حداقل تابع \fBzfinit\fP باید به صورت خودکار بارگیری (autoload) شود؛ این تابع باقی موارد را به طور خودکار بارگیری خواهد کرد\&. در نهایت، برای مقداردهی اولیهٔ استفاده از این سامانه، باید تابع \fBzfinit\fP را فراخوانی کنید\&. کد زیر در فایل \fB\&.zshrc\fP شما این کار را ترتیب می‌دهد؛ فرض کنید توابع در دایرکتوری \fB~/myfns\fP ذخیره شده‌اند: .PP .RS .nf \fBfpath=(~/myfns $fpath) autoload \-U zfinit zfinit\fP .fi .RE .PP توجه داشته باشید که \fBzfinit\fP فرض می‌کند شما از روش \fBzmodload\fP برای بارگیری دستور \fBzftp\fP استفاده می‌کنید\&. اگر این دستور از قبل در شل تعبیه شده است، \fBzfinit\fP را به \fBzfinit \-n\fP تغییر دهید\&. سودمند است (اگرچه ضروری نیست) که فراخوانی \fBzfinit\fP پس از هر کدی برای مقداردهی اولیهٔ سامانهٔ جدید تکمیل خودکار قرار گیرد، در غیر این صورت دستورهای غیرضروری \fBcompctl\fP صادر خواهند شد\&. .PP .SH "توابع (FUNCTIONS)" .PP ترتیب عملیات در انجام یک انتقال فایل اساساً همانند یک کلاینت استاندارد FTP است\&. توجه داشته باشید که به دلیل ویژگی خاصی در دستور توکار \fBgetopts\fP شل، برای توابعی که گزینه‌ها را پردازش می‌کنند، باید به‌جای «\fB\-\fP» از «\fB\-\fP\fB\-\fP» استفاده کنید تا اطمینان حاصل شود که آرگومان‌های باقی‌مانده به‌صورت تحت‌اللفظی رفتار می‌شوند (یک «\fB\-\fP» تنها به عنوان یک آرگومان در نظر گرفته می‌شود)\&. .PP .SS "باز کردن اتصال (Opening a connection)" .PD 0 .TP .PD \fBzfparams\fP [ \fIhost\fP [ \fIuser\fP [ \fIpassword\fP \&.\&.\&. ] ] ] تنظیم یا نمایش پارامترها برای یک \fBzfopen\fP آتی بدون آرگومان\&. اگر هیچ آرگومانی داده نشود، پارامترهای فعلی نمایش داده می‌شوند (رمز عبور به صورت خطی از ستاره‌ها نشان داده خواهد شد)\&. اگر یک \fIhost\fP داده شود، و \fIuser\fP یا \fIpassword\fP داده نشوند، برای دریافت آن‌ها اعلان (prompt) داده می‌شود؛ همچنین، برای هر پارامتری که به صورت «\fB?\fP» مشخص شود اعلان دریافت خواهد آمد، و اگر پس از «\fB?\fP» یک رشته بیاید، آن رشته به عنوان متن اعلان استفاده می‌شود\&. از آنجا که \fBzfopen\fP برای ذخیرهٔ پارامترها \fBzfparams\fP را فراخوانی می‌کند، معمولاً نیازی به فراخوانی مستقیم آن نیست\&. .RS .PP یک آرگومان تک «\fB\-\fP» پارامترهای ذخیره‌شده را حذف خواهد کرد\&. این کار همچنین باعث می‌شود حافظهٔ آخرین دایرکتوری (و موارد مشابه) در هاست دیگر نیز پاک شود\&. .RE .TP \fBzfopen\fP [ \fB\-1\fP ] [ \fIhost\fP [ \fIuser\fP [ \fIpassword\fP [ \fIaccount\fP ] ] ] ] اگر \fIhost\fP مشخص شده باشد، اتصالی به آن هاست با نام کاربری \fIuser\fP و رمز عبور \fIpassword\fP (و در موارد نادری که لازم است، حساب \fIaccount\fP) باز می‌کند\&. اگر یک پارامتر ضروری وجود نداشته باشد یا به صورت «\fB?\fP» داده شده باشد، برای دریافت آن اعلان داده می‌شود\&. اگر \fIhost\fP مشخص نشده باشد، از مجموعه‌ای از پارامترهای ذخیره‌شدهٔ قبلی استفاده می‌شود\&. .RS .PP اگر دستور موفقیت‌آمیز باشد و ترمینال با \fBxterm\fP سازگار بوده یا \fBsun\-cmd\fP باشد، خلاصه‌ای در نوار عنوان ظاهر می‌شود که \fBhost:directory\fP محلی و \fBhost:directory\fP راه دور را نمایش می‌دهد؛ این کار توسط تابع \fBzftp_chpwd\fP که در زیر توضیح داده شده مدیریت می‌شود\&. .PP به طور معمول، \fIhost\fP، \fIuser\fP و \fIpassword\fP به صورت داخلی برای اتصال مجدد در آینده ثبت می‌شوند، چه با یک \fBzfopen\fP بدون آرگومان، یا به صورت خودکار (به زیر مراجعه کنید)\&. با گزینهٔ «\fB\-1\fP»، هیچ اطلاعاتی ذخیره نمی‌شود\&. همچنین، اگر یک دستور open همراه با آرگومان با شکست مواجه شود، پارامترها حفظ نخواهند شد (و هرگونه پارامتر قبلی نیز حذف خواهد شد)\&. یک دستور \fBzfopen\fP به تنهایی، یا یک \fBzfopen \-1\fP، هرگز پارامترهای ذخیره‌شده را تغییر نمی‌دهد\&. .PP هر دو دستور \fBzfopen\fP و \fBzfanon\fP (اما نه \fBzfparams\fP) نشانی‌های وب به فرم \fBftp://\fP\fIhost\fP/\fIpath\&.\&.\&.\fP را به این معنا تفسیر می‌کنند که به \fIhost\fP متصل شوند و سپس دایرکتوری را به \fIpath\fP (که باید یک دایرکتوری باشد، نه یک فایل) تغییر دهند\&. بخش «\fBftp://\fP» را می‌توان حذف کرد؛ نویسهٔ پایانی «\fB/\fP» برای راه‌اندازی شناسایی \fIpath\fP کافی است\&. توجه داشته باشید پیشوندهایی غیر از «\fBftp:\fP» شناسایی نمی‌شوند، و تمام نویسه‌های پس از اولین اسلش بعد از \fIhost\fP در \fIpath\fP دارای اهمیت هستند\&. .RE .TP \fBzfanon\fP [ \fB\-1\fP ] \fIhost\fP یک اتصال به \fIhost\fP برای FTP ناشناس باز می‌کند\&. نام کاربری مورد استفاده «\fBanonymous\fP» است\&. رمز عبور (که بار اول گزارش خواهد شد) به صورت \fIuser\fP\fB@\fP\fIhost\fP تولید می‌شود؛ این مقدار سپس در پارامتر شل \fB$EMAIL_ADDR\fP ذخیره می‌شود که می‌توان آن را به صورت دستی نیز روی یک رشتهٔ مناسب تنظیم کرد\&. .PP.SS "مدیریت دایرکتوری (Directory management)" .PD 0 .TP .PD 0 \fBzfcd\fP [ \fIdir\fP ] .TP .PD 0 \fBzfcd \-\fP .TP .PD \fBzfcd\fP \fIold\fP \fInew\fP دایرکتوری جاری در سرور دوردست را تغییر می‌دهد: این دستور طوری پیاده‌سازی شده است که بسیاری از قابلیت‌های دستور توکار پوسته \fBcd\fP را داشته باشد\&. .RS .PP در شکل نخست با حضور \fIdir\fP، به دایرکتوری \fIdir\fP تغییر می‌یابد\&. دستور `\fBzfcd \&.\&.\fP\&' به‌صورت ویژه مدیریت می‌شود، بنابراین تضمین می‌شود که بر روی سرورهای غیر یونیکسی نیز کار کند (توجه داشته باشید که این مورد به‌طور داخلی توسط \fBzftp\fP انجام می‌شود)\&. اگر \fIdir\fP نادیده گرفته شود، اثری مشابه `\fBzfcd ~\fP\&' خواهد داشت\&. .PP شکل دوم، دایرکتوری را به دایرکتوری‌ای تغییر می‌دهد که پیش از این جاری بوده است\&. .PP شکل سوم تلاش می‌کند با جایگزینی نخستین رخداد رشتهٔ \fIold\fP با رشتهٔ \fInew\fP در دایرکتوری جاری، دایرکتوری جاری را تغییر دهد\&. .PP توجه داشته باشید که در این دستور، و در واقع هر جا که انتظار نام فایل دوردست می‌رود، رشته‌ای که در میزبان محلی معادل `\fB~\fP\&' است، پیش از ارسال به دستگاه دوردست، مجدداً به `\fB~\fP\&' تبدیل می‌شود\&. این امر به‌دلیل شیوهٔ انجام بسط در خط فرمان، پیش از آن‌که \fBzfcd\fP رشته را دریافت کند، بسیار سودمند است\&. برای نمونه، فرض کنید دستور `\fBzfcd ~/foo\fP\&' باشد\&. پوسته این عبارت را به یک مسیر کامل مانند `\fBzfcd /home/user2/pws/foo\fP\&' بسط می‌دهد\&. در این مرحله، \fBzfcd\fP مسیر اولیه را به‌عنوان معادل `\fB~\fP\&' شناسایی کرده و دایرکتوری را به‌صورت \fB~/foo\fP به میزبان دوردست ارسال می‌کند، تا `\fB~\fP\&' توسط سرور به دایرکتوری درست در میزبان دوردست بسط داده شود\&. سایر دایرکتوری‌های نام‌گذاری‌شده به شکل `\fB~name\fP\&' به این شیوه مدیریت نمی‌شوند\&. .RE .TP \fBzfhere\fP دایرکتوری را در سرور دوردست به دایرکتوری متناظر با دایرکتوری محلی جاری تغییر می‌دهد، همراه با رفتار ویژه نسبت به `\fB~\fP\&' همانند \fBzfcd\fP\&. برای نمونه، اگر دایرکتوری محلی جاری \fB~/foo/bar\fP باشد، آنگاه \fBzfhere\fP اثری همانند `\fBzfcd ~/foo/bar\fP\&' خواهد داشت\&. .TP \fBzfdir\fP [ \fB\-rfd\fP ] [ \fB\-\fP ] [ \fIdir\-options\fP ] [ \fIdir\fP ] فهرست‌بندی کاملی از دایرکتوری ارائه می‌دهد\&. آرگومان‌های \fIdir\-options\fP و \fIdir\fP مستقیماً به سرور فرستاده می‌شوند و تأثیر آن‌ها به پیاده‌سازی سرور وابسته است، اما تعیین یک دایرکتوری دوردست خاص \fIdir\fP معمولاً امکان‌پذیر است\&. خروجی از طریق یک صفحه‌بندی‌کننده (pager) که توسط متغیر محیطی \fB$PAGER\fP تعیین می‌شود، یا در صورت تنظیم نبودن آن، از طریق `\fBmore\fP\&' نمایش داده می‌شود\&. .RS .PP دایرکتوری معمولاً برای استفادهٔ دوباره کَش می‌شود\&. در واقع، دو کَش نگهداری می‌شود\&. یکی برای زمانی است که هیچ \fIdir\-options\fP یا \fIdir\fP وجود نداشته باشد، یعنی فهرست کاملی از دایرکتوری دوردست جاری؛ این کَش با تغییر دایرکتوری دوردست جاری خالی (flush) می‌شود\&. کَش دیگر برای استفادهٔ مکرر از \fBzfdir\fP با آرگومان‌های یکسان نگه داشته می‌شود؛ برای نمونه، استفادهٔ مکرر از `\fBzfdir /pub/gnu\fP\&' فقط در نخستین فراخوانی نیاز به واکشی دایرکتوری خواهد داشت\&. علاوه بر این، این کَش می‌تواند با گزینهٔ \fB\-r\fP دوباره مشاهده شود\&. از آنجا که دایرکتوری‌های نسبی ممکن است موجب سردرگمی \fBzfdir\fP شوند، می‌توان از گزینهٔ \fB\-f\fP استفاده کرد تا پیش از فهرست کردن دایرکتوری، کَش اجباراً پاک‌سازی شود\&. گزینهٔ \fB\-d\fP هر دو کَش را بدون نمایش فهرست دایرکتوری حذف می‌کند؛ همچنین در صورت وجود، کَشِ نام فایل‌ها در دایرکتوری دوردست جاری را نیز حذف خواهد کرد\&. .RE .TP \fBzfls\fP [ \fIls\-options\fP ] [ \fIdir\fP ] فایل‌ها را بر روی سرور دوردست فهرست می‌کند\&. بدون هیچ آرگومانی، این دستور فهرستی ساده از نام فایل‌ها را برای دایرکتوری دوردست جاری تولید خواهد کرد\&. هرگونه آرگومان مستقیماً به سرور ارسال می‌شود\&. از هیچ صفحه‌بندی‌کننده یا کَشی استفاده نمی‌شود\&. .PP .SS "دستورهای وضعیت (Status commands)" .PD 0 .TP .PD \fBzftype\fP [ \fItype\fP ] بدون هیچ آرگومانی، نوع داده‌ای که قرار است منتقل شود را نشان می‌دهد، که معمولاً ASCII یا باینری است\&. همراه با یک آرگومان، نوع داده را تغییر می‌دهد: انواع `\fBA\fP\&' یا `\fBASCII\fP\&' برای داده‌های ASCII و `\fBB\fP' یا `\fBBINARY\fP'، `\fBI\fP' یا `\fBIMAGE\fP\&' برای داده‌های باینری بدون حساسیت به حروف کوچک و بزرگ درک می‌شوند\&. .TP \fBzfstat\fP [ \fB\-v\fP ] وضعیت اتصال جاری یا آخرین اتصال، و همچنین وضعیت برخی از متغیرهای وضعیت \fBzftp\fP را نمایش می‌دهد\&. با گزینهٔ \fB\-v\fP، با پرس‌وجو از سرور دربارهٔ گزارش خودش از رویدادها نیز، فهرستی مشروح‌تر و با جزئیات بیشتر تولید می‌شود\&. .PP.SS "دریافت فایل‌ها (Retrieving files)" دستورهای دریافت فایل همگی دست‌کم دو گزینه می‌پذیرند\&. \fB\-G\fP از بسط نام فایل‌های دوردست که در غیر این صورت انجام می‌شد جلوگیری می‌کند (برای توضیحات دقیق‌تر در این باره، بخش زیر را ببینید)\&. \fB\-t\fP تلاش می‌کند زمان تغییر (modification time) فایل محلی را با زمان فایل دوردست تنظیم کند: برای اطلاعات بیشتر، توضیحات تابع \fBzfrtime\fP در زیر را ببینید\&. .PP .PD 0 .TP .PD \fBzfget\fP [ \fB\-Gtc\fP ] \fIfile1\fP \&.\&.\&. تمام فایل‌های فهرست‌شدهٔ \fIfile1\fP \&.\&.\&. را یکی‌یکی از سرور دوردست دریافت می‌کند\&. اگر نام یک فایل حاوی یک `\fB/\fP\&' باشد، نام کامل به سرور دوردست ارسال می‌شود، اما فایل به‌صورت محلی با نام برگرفته از بخش پس از آخرین `\fB/\fP\&' ذخیره می‌شود\&. گزینهٔ \fB\-c\fP (cat) تحمیل می‌کند که تمام فایل‌ها در قالب یک جریان یکپارچه به خروجی استاندارد ارسال شوند؛ در این حالت، گزینهٔ \fB\-t\fP هیچ تأثیری ندارد\&. .TP \fBzfuget\fP [ \fB\-Gvst\fP ] \fIfile1\fP \&.\&.\&. مشابه \fBzfget\fP است، اما تنها فایل‌هایی را دریافت می‌کند که نسخهٔ موجود روی سرور دوردست تازه‌تر باشد (زمان تغییر جدیدتری داشته باشد)، یا فایل محلی وجود نداشته باشد\&. اگر فایل دوردست قدیمی‌تر باشد اما اندازهٔ فایل‌ها متفاوت باشد، یا اندازه یکسان باشد اما فایل دوردست تازه‌تر باشد، معمولاً از کاربر سؤال خواهد شد\&. با گزینهٔ \fB\-s\fP، دستور در حالت بی‌صدا اجرا می‌شود و در هر یک از این دو حالت همواره فایل را دریافت خواهد کرد\&. با گزینهٔ \fB\-v\fP، دستور در حین بررسی این‌که آیا فایل‌ها باید منتقل شوند یا خیر، اطلاعات بیشتری دربارهٔ آن‌ها چاپ می‌کند\&. .TP \fBzfcget\fP [ \fB\-Gt\fP ] \fIfile1\fP \&.\&.\&. مشابه \fBzfget\fP است، اما اگر هر یک از فایل‌های محلی وجود داشته باشد و حجم آن کمتر از فایل دوردست متناظر باشد، دستور فرض می‌کند که این فایل نتیجهٔ یک انتقال ناتمام است و تلاش می‌کند باقی‌ماندهٔ فایل را دریافت کند\&. این قابلیت در اتصالات ضعیفی که مکرراً قطع می‌شوند سودمند است\&. .RS .PP توجه داشته باشید که این ویژگی نیازمند نسخه‌ای رایج اما غیر استاندارد از پروتکل FTP است، بنابراین کارکرد آن روی همهٔ سرورها تضمین نمی‌شود\&. .RE .TP .PD 0 \fBzfgcp\fP [ \fB\-Gt\fP ] \fIremote\-file\fP \fIlocal\-file\fP .TP .PD \fBzfgcp\fP [ \fB\-Gt\fP ] \fIrfile1\fP \&.\&.\&. \fIldir\fP این دستور فایل‌ها را با آرگومان‌هایی با رفتاری مشابه با دستور \fBcp\fP از سرور دوردست دریافت می‌کند\&. .RS .PP در شکل نخست، \fIremote\-file\fP را از سرور در فایل محلی \fIlocal\-file\fP کپی می‌کند\&. .PP در شکل دوم، تمام فایل‌های دوردست \fIrfile1\fP \&.\&.\&. را با حفظ همان نام پایه (basename) در دایرکتوری محلی \fIldir\fP کپی می‌کند\&. این عمل ساختار و مفاهیم دایرکتوری‌های UNIX را فرض می‌گیرد\&. .RE .PP .SS "ارسال فایل‌ها (Sending files)" .PD 0 .TP .PD \fBzfput\fP [ \fB\-r\fP ] \fIfile1\fP \&.\&.\&. تمام فایل‌های \fIfile1\fP \&.\&.\&. مشخص‌شده را به‌صورت جداگانه به سرور دوردست ارسال می‌کند\&. اگر نام یک فایل حاوی `\fB/\fP\&' باشد، نام کامل فایل به‌صورت محلی برای یافتن آن استفاده می‌شود، اما برای نام فایل در سرور دوردست تنها نام پایه (basename) به کار می‌رود\&. .RS .PP با گزینهٔ \fB\-r\fP، اگر هر یک از \fIfiles\fP دایرکتوری باشند، به‌صورت بازگشتی همراه با تمام زیردایرکتوری‌هایشان، از جمله فایل‌هایی که با `\fB\&.\fP\&' شروع می‌شوند ارسال می‌گردند\&. این امر مستلزم آن است که ماشین دوردست ساختار فایل‌های UNIX را بفهمد، زیرا از `\fB/\fP\&' به‌عنوان جداکنندهٔ دایرکتوری استفاده می‌شود\&. .RE .TP \fBzfuput\fP [ \fB\-vs\fP ] \fIfile1\fP \&.\&.\&. مشابه \fBzfput\fP است، اما تنها فایل‌هایی را ارسال می‌کند که از معادل‌های دوردست خود جدیدتر باشند، یا در صورتی که فایل دوردست وجود نداشته باشد\&. منطق آن مانند \fBzfuget\fP است، اما جای فایل‌های محلی و دوردست معکوس شده است\&. .TP \fBzfcput\fP \fIfile1\fP \&.\&.\&. مشابه \fBzfput\fP است، اما اگر هر فایل دوردستی از پیش موجود باشد و کوتاه‌تر از معادل محلی خود باشد، فرض می‌کند که نتیجهٔ یک انتقال ناقص است و باقی‌ماندهٔ فایل را برای الحاق به بخش موجود ارسال می‌کند\&. از آنجا که دستور الحاق (append) در FTP بخشی از مجموعهٔ دستورهای استاندارد است، این قابلیت در اصل شانس موفقیت بیشتری نسبت به \fBzfcget\fP دارد\&. .TP .PD 0 \fBzfpcp\fP \fIlocal\-file\fP \fIremote\-file\fP .TP .PD \fBzfpcp\fP \fIlfile1\fP \&.\&.\&. \fIrdir\fP این دستور فایل‌ها را با آرگومان‌هایی با رفتاری مشابه با دستور \fBcp\fP به سرور دوردست ارسال می‌کند\&. .RS .PP با دو آرگومان، \fIlocal\-file\fP را با نام \fIremote\-file\fP به سرور کپی می‌کند\&. .PP با بیش از دو آرگومان، تمام فایل‌های محلی \fIlfile1\fP \&.\&.\&. را با حفظ همان نام پایه در دایرکتوری دوردست موجود \fIrdir\fP کپی می‌کند\&. این عمل ساختار دایرکتوری‌های UNIX را پیش‌فرض می‌گیرد\&. .PP اگر تلاش کنید از دستور \fBzfpcp\fP \fIlfile1\fP \fIrdir\fP استفاده کنید، یعنی شکل دوم کپی اما با دو آرگومان، مشکلی رخ می‌دهد؛ زیرا دستور راه ساده‌ای برای تشخیص این‌که آیا \fIrdir\fP متناظر با یک دایرکتوری است یا یک نام فایل در دست ندارد\&. دستور تلاش می‌کند این موضوع را به روش‌های گوناگونی حل کند\&. نخست، اگر آرگومان \fIrdir\fP برابر با `\fB\&.\fP\&' یا `\fB\&.\&.\fP' باشد یا به یک اسلش ختم شود، دایرکتوری فرض می‌شود\&. دوم، چنانچه عملیات کپی به یک فایل دوردست در شکل اول شکست بخورد و سرور دوردست کد خطای مورد انتظار 553 و پاسخی شامل رشتهٔ `\fBIs a directory\fP\&' را بازگرداند، آنگاه \fBzfpcp\fP با استفاده از شکل دوم مجدداً تلاش خواهد کرد\&. .RE .PP.SS "بستن اتصال (Closing the connection)" .PD 0 .TP .PD \fBzfclose\fP اتصال را می‌بندد\&. .PP .SS "مدیریت نشست (Session management)" .PD 0 .TP .PD \fBzfsession\fP [ \fB\-lvod\fP ] [ \fIsessname\fP ] به شما امکان می‌دهد چندین نشست FTP را به‌طور همزمان مدیریت کنید\&. به‌طور پیش‌فرض، اتصالات در نشستی به نام «\fBdefault\fP\&» انجام می‌شوند؛ با اجرای فرمان «\fBzfsession\fP \fIsessname\fP\&» می‌توانید به یک نشست جدید یا موجود با نام دلخواه خود بروید\&. نشست جدید اتصال مختص به خود، پارامترهای مرتبط شل، و همچنین پارامترهای میزبان/کاربر تنظیم‌شده توسط \fBzfparams\fP را به خاطر می‌سپارد\&. از این رو می‌توانید نشست‌های متفاوتی برای اتصال به میزبان‌های گوناگون برپا کنید، به طوری که هر کدام میزبان، کاربر و گذرواژه مناسب را به خاطر داشته باشند\&. .RS .PP بدون آرگومان، \fBzfsession\fP نام نشست فعلی را چاپ می‌کند؛ با گزینه \fB\-l\fP تمام نشست‌های موجود فعلی را فهرست می‌کند، و با گزینه \fB\-v\fP فهرستی با جزئیات شامل میزبان و دایرکتوری هر نشست ارائه می‌دهد که در آن نشست فعلی با یک ستاره مشخص شده است\&. با \fB\-o\fP، به جدیدترین نشست قبلی جابه‌جا می‌شود\&. .PP با \fB\-d\fP، نشست مشخص‌شده (یا نشست فعلی) حذف می‌شود؛ تمام موارد مربوط به آن کاملاً فراموش خواهد شد\&. اگر تنها نشست موجود بود، نشست جدیدی به نام «\fBdefault\fP\&» ایجاد شده و نشست فعلی می‌شود\&. امن‌تر آن است که هنگام فعال بودن دستورهای پس‌زمینه با \fBzftp\fP، نشست‌ها حذف نشوند\&. .RE .TP \fBzftransfer\fP \fIsess1\fP\fB:\fP\fIfile1\fP \fIsess2\fP\fB:\fP\fIfile2\fP انتقال فایل‌ها بین دو نشست؛ هیچ نسخه محلی ایجاد نمی‌شود\&. فایل از نشست \fIsess1\fP به صورت \fIfile1\fP خوانده شده و در نشست \fIsess2\fP به عنوان فایل \fIfile2\fP نوشته می‌شود؛ \fIfile1\fP و \fIfile2\fP می‌توانند نسبت به دایرکتوری‌های فعلی نشست، نسبی باشند\&. هر یک از \fIsess1\fP یا \fIsess2\fP می‌توانند حذف شوند (اگرچه در صورت احتمال وجود علامت دونقطه در نام فایل، باید دونقطه حفظ شود) و پیش‌فرض آن نشست فعلی است؛ \fIfile2\fP می‌تواند حذف شود یا به یک اسلش ختم گردد، که در این صورت نام پایه (basename) مربوط به \fIfile1\fP اضافه خواهد شد\&. نشست‌های \fIsess1\fP و \fIsess2\fP باید متمایز باشند\&. .RS .PP عملیات با استفاده از لوله‌ها (pipes) انجام می‌شود، بنابراین لازم است که اتصالات در یک زیرپوسته (subshell) همچنان معتبر باشند، که این مورد در نگارش‌هایی از برخی سیستم‌های عامل احتمالاً به دلیل یک باگ سیستمی صدق نمی‌کند\&. .RE .PP .SS "نشانک‌ها (Bookmarks)" دو تابع \fBzfmark\fP و \fBzfgoto\fP به شما اجازه می‌دهند مکان فعلی (میزبان، کاربر و دایرکتوری) اتصال FTP کنونی را برای استفاده‌های بعدی «نشانک‌گذاری» کنید\&. فایلی که برای ذخیره و بازیابی نشانک‌ها استفاده می‌شود توسط پارامتر \fB$ZFTP_BMFILE\fP تعیین می‌شود؛ اگر هنگام فراخوانی یکی از این دو تابع تنظیم نشده باشد، روی فایل \fB\&.zfbkmarks\fP در دایرکتوری فایل‌های راه‌اندازی zsh شما (معمولاً \fB~\fP) تنظیم خواهد شد\&. .PP .PD 0 .TP .PD \fBzfmark\fP [ \fIbookmark\fP ] اگر آرگومانی داده شود، میزبان، کاربر و دایرکتوری فعلی را تحت نام \fIbookmark\fP برای استفاده بعدی توسط \fBzfgoto\fP نشانک‌گذاری می‌کند\&. اگر اتصالی باز نباشد، از مقادیر آخرین اتصال دقیقاً پیش از بسته شدنش استفاده می‌شود؛ اگر اتصالی وجود نداشته باشد، یک خطا است\&. هر نشانک موجود با نام مشابه بدون اطلاع قبلی جایگزین خواهد شد\&. .RS .PP اگر آرگومانی داده نشود، نشانک‌های موجود و نقاطی را که به آنها اشاره دارند به صورت \fIuser\fP\fB@\fP\fIhost\fP\fB:\fP\fIdirectory\fP فهرست می‌کند؛ این قالبی است که در آن ذخیره می‌شوند، و فایل را می‌توان مستقیماً ویرایش کرد\&. .RE .TP \fBzfgoto\fP [ \fB\-n\fP ] \fIbookmark\fP بازگشت به مکانی که توسط \fIbookmark\fP مشخص شده و قبلاً توسط \fBzfmark\fP تنظیم شده است\&. اگر مکان کاربر `\fBftp\fP\&' یا `\fBanonymous\fP' داشته باشد، اتصال را با \fBzfanon\fP باز می‌کند تا نیازی به گذرواژه نباشد\&. اگر پارامترهای کاربر و میزبان با مقادیر ذخیره‌شده برای نشست فعلی مطابقت داشته باشد، از آنها استفاده می‌شود و مجدداً گذرواژه‌ای نیاز نخواهد بود\&. در غیر این صورت گذرواژه درخواست خواهد شد\&. .RS .PP با گزینه \fB\-n\fP، نشانک به عنوان یک نام مستعار (nickname) ذخیره‌شده توسط برنامه \fBncftp\fP در فایل نشانک‌های آن در نظر گرفته می‌شود که فرض بر این است که \fB~/\&.ncftp/bookmarks\fP باشد\&. تابع در سایر جهات عملکردی یکسان دارد\&. توجه داشته باشید که هیچ سازوکاری برای افزودن یا ویرایش نشانک‌های \fBncftp\fP از طریق توابع zftp وجود ندارد\&. .RE .PP.SS "سایر توابع" غالباً این توابع به طور مستقیم فراخوانی نخواهند شد (به جز \fBzfinit\fP)، اما برای کامل بودن مستندات در اینجا شرح داده شده‌اند\&. به‌ویژه ممکن است مایل باشید \fBzftp_chpwd\fP و \fBzftp_progress\fP را تغییر دهید\&. .PP .PD 0 .TP .PD \fBzfinit\fP [ \fB\-n\fP ] همان‌طور که در بالا شرح داده شد، از این تابع برای راه‌اندازی اولیه سامانه توابع zftp استفاده می‌شود\&. اگر دستور zftp از پیش به صورت توکار درون شل وجود داشته باشد، باید از گزینه \fB\-n\fP استفاده شود\&. .TP \fBzfautocheck\fP [ \fB\-dn\fP ] این تابع برای پیاده‌سازی رفتار بازگشایی خودکار فراخوانی می‌شود، همان‌طور که در ادامه با جزئیات بیشتر توضیح داده شده است\&. گزینه‌ها باید در نخستین آرگومان قرار گیرند؛ \fB\-n\fP مانع از تغییر دایرکتوری دستور به دایرکتوری قبلی می‌شود، در حالی که \fB\-d\fP مانع از تنظیم متغیر \fBdo_close\fP توسط آن می‌گردد؛ متغیری که در غیر این صورت به عنوان نشانه‌ای برای بستن خودکار اتصال پس از یک انتقال تنظیم می‌شود\&. میزبان و دایرکتوری آخرین نشست در متغیر \fB$zflastsession\fP ذخیره می‌شوند، اما پارامترهای داخلی host/user/password نیز باید به‌درستی تنظیم شده باشند\&. .TP \fBzfcd_match \fIprefix\fP \fIsuffix\fP\fP این تابع تطبیق را برای تکمیل خودکار نام‌های دایرکتوری‌های راه دور انجام می‌دهد\&. اگر کارگزار راه دور UNIX باشد، تلاش می‌کند کارگزار را ترغیب کند تا دایرکتوری راه دور را به همراه علامت‌گذاری زیردایرکتوری‌ها فهرست کند، که این روش معمولاً کار می‌کند اما تضمین‌شده نیست\&. در سایر میزبان‌ها صرفاً \fBzfget_match\fP را فراخوانی می‌کند و از این رو تمام فایل‌ها را کامل می‌کند، نه فقط دایرکتوری‌ها را\&. در برخی سیستم‌ها، دایرکتوری‌ها ممکن است حتی شبیه نام فایل نباشند\&. .TP \fBzfget_match \fIprefix\fP \fIsuffix\fP\fP این تابع تطبیق را برای تکمیل خودکار نام‌های فایل‌های راه دور انجام می‌دهد\&. این تابع فایل‌های دایرکتوری جاری (تنها دایرکتوری جاری) را در پارامتر شل \fB$zftp_fcache\fP کش می‌کند\&. قالب آن به‌گونه‌ای است که توسط گزینه \fB\-K\fP دستور \fBcompctl\fP فراخوانی شود، اما هنگامی که از یک تابع تکمیل مبتنی بر ویجت با مقادیر مناسب برای \fIprefix\fP و \fIsuffix\fP فراخوانی شود نیز کار می‌کند\&. .TP \fBzfrglob \fIvarname\fP\fP تطبیق الگو (globbing) در سمت راه دور را انجام می‌دهد، همان‌طور که در ادامه با جزئیات بیشتر شرح داده شده است\&. \fIvarname\fP نام متغیری است که حاوی الگوی مورد نظر برای بسط است؛ در صورت وجود هرگونه تطابق، هنگام بازگشت همان متغیر با مجموعه بسط‌یافته نام فایل‌ها مقداردهی می‌شود\&. .TP \fBzfrtime\fP \fIlfile\fP \fIrfile\fP [ \fItime\fP ] زمان تغییر فایل محلی \fIlfile\fP را برابر با زمان تغییر فایل راه دور \fIrfile\fP، یا زمان صریح \fItime\fP در قالب FTP به صورت \fBCCYYMMDDhhmmSS\fP برای منطقه زمانی GMT تنظیم می‌کند\&. این تابع از ماژول \fBzsh/datetime\fP شل برای تبدیل زمان از GMT به زمان محلی استفاده می‌کند\&. .TP \fBzftp_chpwd\fP این تابع هر بار که اتصالی باز یا بسته می‌شود، یا دایرکتوری راه دور تغییر می‌کند، فراخوانی می‌شود\&. این نسخه، نوار عنوان یک شبیه‌ساز ترمینال سازگار با \fBxterm\fP یا \fBsun\-cmd\fP را برای بازتاب نام میزبان‌های محلی و راه دور و دایرکتوری‌های جاری تغییر می‌دهد\&. این تابع هنگامی که با تابع \fBchpwd\fP ترکیب شود بهترین عملکرد را دارد\&. به‌ویژه، تابعی به شکل .RS .PP .RS .nf \fBchpwd() { if [[ \-n $ZFTP_USER ]]; then zftp_chpwd else # usual chpwd e\&.g put host:directory in title bar fi }\fP .fi .RE .PP به‌خوبی با آن سازگار است\&. .RE .TP \fBzftp_progress\fP این تابع وضعیت انتقال را نشان می‌دهد\&. هیچ چیزی نخواهد نوشت مگر اینکه خروجی به یک ترمینال ارسال شود؛ با این حال، اگر فایل‌ها را در پس‌زمینه انتقال می‌دهید، باید گزارش‌های پیشرفت را دستی با استفاده از `\fBzstyle \&':zftp:*' progress none\fP'\& خاموش کنید\&. همچنین توجه داشته باشید که اگر آن را تغییر دهید، هرگونه خروجی \fIباید\fP به خطای استاندارد ارسال شود، چرا که خروجی استاندارد ممکن است فایلی باشد که در حال دریافت است\&. شکل نشانگر پیشرفت، یا اصلاً استفاده شدن یا نشدن از آن، می‌تواند بدون تغییر دادن تابع پیکربندی شود، همان‌طور که در بخش بعدی توضیح داده شده است\&. .TP \fBzffcache\fP از این تابع برای پیاده‌سازی کش کردن فایل‌ها در دایرکتوری جاری به طور جداگانه برای هر نشست استفاده می‌شود\&. این تابع توسط \fBzfget_match\fP و \fBzfrglob\fP استفاده می‌شود\&. .PP.SH "ویژگی‌های متفرقه (MISCELLANEOUS FEATURES)" .PP .SS "پیکربندی (Configuration)" .PP سبک‌های گوناگونی با استفاده از سازوکار استاندارد سبک پوسته در دسترس هستند که در \fIzshmodules\fP(1)\& شرح داده شده است. به‌طور خلاصه، دستور `\fBzstyle \&':zftp:*'\fP \fIstyle\fP \fIvalue\fP \&.\&.\&.'\&. سبک \fIstyle\fP را با مقدار \fIvalue\fP تعریف می‌کند؛ می‌توان بیش از یک مقدار ارائه داد، اگرچه در موارد شرح‌داده‌شده در اینجا کاربردی ندارد\&. این مقادیر سپس در سراسر سامانه توابع zftp استفاده خواهند شد\&. برای کنترل دقیق‌تر، آرگومان نخست که الگوی مطابق با زمینه‌های (\fIcontexts\fP) اعمال سبک را مشخص می‌کند، می‌تواند برای در برگرفتن یک تابع خاص تغییر داده شود؛ به عنوان مثال `\fB:zftp:zfget\fP\&': در این صورت، سبک داده‌شده تنها در تابع \fBzfget\fP اعمال خواهد شد و بر سبک‌های تعیین‌شده تحت `\fB:zftp:*\fP\&'\& اولویت خواهد داشت\&. توجه داشته باشید که تنها نام تابع سطح بالا، آن‌طور که توسط کاربر فراخوانی شده، استفاده می‌شود؛ فراخوانی توابع سطوح پایین‌تر برای کاربر شفاف (نامرئی) است\&. از این رو، تغییرات نوار عنوان در \fBzftp_chpwd\fP بسته به اینکه از کجا فراخوانی شده باشد، از زمینه‌های \fB:zftp:zfopen\fP، \fB:zftp:zfcd\fP و غیره استفاده می‌کند\&. سبک‌های زیر پشتیبانی می‌شوند: .PP .PD 0 .TP .PD \fBprogress\fP نحوه گزارش پیشرفت یک انتقال توسط \fBzftp_progress\fP را کنترل می‌کند\&. اگر خالی، تنظیم‌نشده، یا `\fBnone\fP\&` باشد، هیچ گزارش پیشرفتی ارائه نمی‌شود؛ اگر `\fBbar\fP\&` باشد، یک نوار پیش‌رونده به‌صورت تصویر معکوس (inverse video) نمایش داده می‌شود؛ اگر `\fBpercent\fP` (یا هر رشته دیگری، اگرچه ممکن است در آینده تغییر کند) باشد، درصد فایل منتقل‌شده نشان داده می‌شود\&. نوار پیشرفت نیازمند آن است که عرض ترمینال از طریق پارامتر \fB$COLUMNS\fP در دسترس باشد (معمولاً این مقدار به‌طور خودکار تنظیم می‌شود)\&. اگر اندازه فایل در حال انتقال در دسترس نباشد، نمایشگرهای \fBbar\fP و \fBpercent\fP صرفاً تعداد بایت‌های منتقل‌شده تا آن لحظه را نمایش می‌دهند\&. .RS .PP هنگام اجرای \fBzfinit\fP، اگر این سبک برای زمینه \fB:zftp:*\fP تعریف نشده باشد، روی `bar\&` تنظیم خواهد شد\&. .RE .TP \fBupdate\fP حداقل بازه زمانی بین به‌روزرسانی‌های نمایشگر پیشرفت را به ثانیه مشخص می‌کند\&. هیچ به‌روزرسانی انجام نمی‌شود مگر اینکه داده جدیدی دریافت شده باشد، بنابراین بازه زمانی واقعی تنها توسط \fB$ZFTP_TIMEOUT\fP محدود می‌شود\&. .RS .PP همان‌طور که برای \fBprogress\fP شرح داده شد، \fBzfinit\fP این مقدار را به‌طور پیش‌فرض به 1 وادار می‌کند\&. .RE .TP \fBremote\-glob\fP اگر روی `\fB1\fP\&`، `\fByes\fP` یا `\fBtrue\fP` تنظیم شود، تولید نام فایل (تطبیق الگو یا globbing) به‌جای خود zsh، روی ماشین دوردست انجام می‌شود؛ به پایین مراجعه کنید\&. .TP \fBtitlebar\fP اگر روی `\fB1\fP\&`، `\fByes\fP` یا `\fBtrue\fP` تنظیم شود، \fBzftp_chpwd\fP میزبان دوردست و دایرکتوری دوردست را در نوار عنوان شبیه‌سازهای ترمینال مانند xterm یا sun\-cmd که این اجازه را می‌دهند، قرار می‌دهد\&. .RS .PP همان‌طور که برای \fBprogress\fP شرح داده شد، \fBzfinit\fP این مقدار را به‌طور پیش‌فرض به 1 وادار می‌کند\&. .RE .TP \fBchpwd\fP اگر روی `\fB1\fP\&`، `\fByes\fP` یا `\fBtrue\fP` تنظیم شود، \fBzftp_chpwd\fP هنگام بسته شدن یک اتصال، تابع \fBchpwd\fP را فراخوانی می‌کند\&. این ویژگی زمانی مفید است که مشخصات میزبان دوردست توسط \fBzftp_chpwd\fP در نوار عنوان ترمینال قرار گرفته باشد و تابع \fBchpwd\fP معمول شما نیز نوار عنوان را تغییر دهد\&. .RS .PP هنگامی که \fBzfinit\fP اجرا می‌شود، بررسی می‌کند که آیا \fBchpwd\fP وجود دارد یا خیر؛ در این صورت، اگر مقداری از پیش تعیین نشده باشد، مقدار پیش‌فرض این سبک را به 1 تنظیم خواهد کرد\&. .RE .PP توجه داشته باشید که یک آرایه انجمنی به نام \fBzfconfig\fP نیز وجود دارد که شامل مقادیر استفاده‌شده توسط سامانه توابع است\&. این آرایه نباید تغییر داده شده یا بازنویسی شود\&. .PP .SS "تطبیق الگوی دوردست (Remote globbing)" .PP دستورهای دریافت فایل معمولاً روی آرگومان‌های خود تطبیق نام فایل (globbing) را انجام می‌دهند؛ این قابلیت را می‌توان با ارسال گزینه \fB\-G\fP به هر یک از این دستورها غیرفعال کرد\&. در حالت عادی، این کار با دریافت فهرست کاملی از فایل‌های دایرکتوری مورد نظر و سپس تطبیق محلی آن‌ها با الگوی ارائه‌شده انجام می‌شود\&. مزیت این روش آن است که می‌توان از طیف کامل الگوهای zsh (با رعایت تنظیمات گزینه \fBEXTENDED_GLOB\fP) بهره برد\&. با این حال، این بدان معناست که بخش دایرکتوری نام فایل بسط داده نخواهد شد و باید دقیقاً مشخص شود\&. اگر سرور دوردست از معناشناسی دایرکتوری یونیکس پشتیبانی نکند، مدیریت دایرکتوری مشکل‌ساز خواهد بود و توصیه می‌شود که تطبیق الگو تنها در دایرکتوری جاری استفاده شود\&. فهرست فایل‌های دایرکتوری جاری در صورت دریافت، کش (ذخیره موقت) خواهد شد تا تطبیق‌های بعدی در همان دایرکتوری بدون اجرای دستور میانی \fBzfcd\fP بسیار سریع‌تر انجام شوند\&. .PP اگر سبک \fBremote\-glob\fP (به بالا مراجعه کنید) تنظیم شده باشد، تطبیق الگو در عوض روی میزبان دوردست انجام می‌شود: از سرور فهرستی از فایل‌های منطبق درخواست می‌شود\&. این امر به‌شدت به نحوه پیاده‌سازی سرور وابسته است، اگرچه سرورهای یونیکس معمولاً از الگوهای پایه glob پشتیبانی می‌کنند\&. این روش در برخی موارد می‌تواند سریع‌تر باشد، زیرا از دریافت کل محتویات دایرکتوری جلوگیری می‌کند\&. .PP.SS "بازگشایی خودکار و موقت" .PP همان‌طور که برای دستور \fBzfopen\fP شرح داده شد، اجرای متعاقب \fBzfopen\fP بدون هیچ پارامتری اتصال به آخرین میزبان را مجدداً باز خواهد کرد (این شامل اتصالات برقرارشده با دستور \fBzfanon\fP نیز می‌شود)\&. اتصال بازشده به این شیوه، در دایرکتوری دوردست پیش‌فرض آغاز شده و تا زمانی که صریحاً بسته نشود باز خواهد ماند\&. .PP بازگشایی خودکار نیز در دسترس است\&. اگر اتصالی در حال حاضر باز نباشد و دستوری صادر شود که به اتصال نیاز دارد، آخرین اتصال به‌طور ضمنی مجدداً باز می‌شود\&. در این حالت، دایرکتوری‌ای که هنگام بسته شدن اتصال جاری بود، دوباره به دایرکتوری جاری تبدیل می‌شود (مگر این‌که البته دستور صادرشده آن را تغییر دهد)\&. بازگشایی خودکار همچنین در صورتی که اتصال به هر دلیلی توسط سرور دوردست بسته شده باشد (مانند وقفه زمانی یا timeout) رخ خواهد داد\&. اگر از گزینهٔ \fB\-1\fP برای \fBzfopen\fP یا \fBzfanon\fP استفاده شده باشد، این قابلیت در دسترس نیست\&. .PP علاوه بر این، اگر دستور صادرشده یک انتقال فایل باشد، اتصال پس از اتمام انتقال بسته خواهد شد، و بدین ترتیب یک حالت تک‌باره (one\-shot) را برای انتقال‌ها فراهم می‌کند\&. این موضوع در مورد دستورهای تغییر دایرکتوری یا فهرست‌گیری صدق نمی‌کند؛ به عنوان مثال یک دستور \fBzfdir\fP ممکن است اتصال را مجدداً باز کند اما آن را باز نگه خواهد داشت\&. همچنین، بسته شدن خودکار تنها در همان دستوری رخ می‌دهد که بازگشایی خودکار در آن انجام شده است، یعنی یک \fBzfdir\fP که بلافاصله پس از آن \fBzfget\fP اجرا شود، هرگز اتصال را به‌طور خودکار نخواهد بست\&. .PP اطلاعات دربارهٔ اتصال قبلی توسط تابع \fBzfstat\fP ارائه می‌شود\&. بنابراین، به عنوان مثال، اگر آن تابع چنین گزارش دهد: .PP .RS .nf \fBSession: default Not connected\&. Last session: ftp\&.bar\&.com:/pub/textfiles\fP .fi .RE .PP آنگاه دستور \fBzfget file\&.txt\fP تلاش خواهد کرد تا اتصال به \fBftp\&.bar\&.com\fP را مجدداً باز کند، فایل \fB/pub/textfiles/file\&.txt\fP را دریافت نماید، و سپس بلافاصله اتصال را دوباره ببندد\&. از طرف دیگر، \fBzfcd \&.\&.\fP اتصال را در دایرکتوری \fB/pub\fP باز کرده و آن را باز نگه خواهد داشت\&. .PP توجه داشته باشید که تمام موارد بالا محلی و مختص هر نشست است؛ اگر به یک نشست قبلی بازگردید، اتصالی که مجدداً باز خواهد شد اتصال مربوط به همان نشست است\&. .PP .SS "تکمیل خودکار (Completion)" .PP تکمیل خودکار فایل‌ها، دایرکتوری‌ها، نشست‌ها و نشانک‌های محلی و دوردست پشتیبانی می‌شود\&. تکمیل قدیمی‌تر به سبک \fBcompctl\fP هنگام فراخوانی \fBzfinit\fP تعریف می‌شود؛ پشتیبانی از سیستم تکمیل جدیدِ مبتنی بر ابزارک در تابع \fBCompletion/Zsh/Command/_zftp\fP ارائه شده است، که باید همراه با دیگر توابع سیستم تکمیل نصب شده باشد و در نتیجه باید به‌طور خودکار در دسترس باشد\&.