.\" Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" '\" t .\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[R]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "JSHELL" "1" "2023" "JDK 21" "JDK Commands" .hy .SH "نام (NAME)" .PP jshell \- ارزیابی تعاملی اعلان‌ها، دستورات و عبارات زبان برنامه‌نویسی Java در یک حلقهٔ خواندن\-ارزیابی\-چاپ (REPL) .SH "خلاصه دستور (SYNOPSIS)" .PP \f[V]jshell\f[R] [\f[I]options\f[R]] [\f[I]load-files\f[R]] .TP \f[I]options\f[R] گزینه‌های خط فرمان، جدا شده با فاصله. بخش \f[B]Options for jshell\f[R] را ببینید. .TP \f[I]load-files\f[R] یک یا چند اسکریپت برای اجرا در هنگام راه‌اندازی ابزار. اسکریپت‌ها می‌توانند شامل هر قطعه‌کد معتبر یا دستورات JShell باشند. .RS .PP اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از پیش تعریف‌شدهٔ زیر باشد: .TP \f[V]DEFAULT\f[R] مدخل‌های پیش‌فرض را که معمولاً به عنوان import استفاده می‌شوند، بارگذاری می‌کند. .TP \f[V]JAVASE\f[R] تمام بسته‌های Java SE را وارد (import) می‌کند. .TP \f[V]PRINTING\f[R] متدهای \f[V]print\f[R]، \f[V]println\f[R] و \f[V]printf\f[R] را به عنوان متدهای \f[V]jshell\f[R] برای استفاده در این ابزار تعریف می‌کند. .TP \f[V]TOOLING\f[R] متدهای \f[V]javac\f[R]، \f[V]jar\f[R] و سایر متدها را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها در ابزار \f[V]jshell\f[R] تعریف می‌کند. .PP برای بیش از یک اسکریپت، از فاصله برای جداسازی نام‌ها استفاده کنید. اسکریپت‌ها به ترتیبی که در خط فرمان وارد شده‌اند اجرا می‌شوند. اسکریپت‌های خط فرمان پس از اسکریپت‌های راه‌اندازی اجرا می‌شوند. برای اجرای یک اسکریپت پس از شروع JShell، از دستور \f[V]/open\f[R] استفاده کنید. .PP برای پذیرش ورودی از ورودی استاندارد و غیرفعال‌سازی ورودی/خروجی تعاملی، یک خط تیره (-) برای \f[I]load-files\f[R] وارد کنید. این گزینه امکان استفاده از ابزار \f[V]jshell\f[R] را در زنجیره‌های لوله (pipe chains) فراهم می‌کند. .RE.SH "توضیحات (DESCRIPTION)" .PP ابزار JShell روشی برای ارزیابی تعاملی اعلان‌ها، دستورها و عبارت‌های زبان برنامه‌نویسی Java فراهم می‌کند و یادگیری زبان، بررسی کدها و APIهای ناآشنا، و نمونه‌سازی اولیهٔ کدهای پیچیده را آسان‌تر می‌سازد. دستورهای Java، تعریف متغیرها، تعریف متدها، تعریف کلاس‌ها، دستورهای import و عبارت‌ها پذیرفته می‌شوند. به بخش‌های کد واردشده، قطعه‌کد (snippet) می‌گویند. .PP با وارد کردن قطعه‌کدها، آن‌ها ارزیابی شده و بازخورد ارائه می‌شود. بسته به قطعه‌کد واردشده و حالت بازخورد انتخاب‌شده، بازخورد ممکن است از نمایش نتایج و توضیحات عملیات تا هیچ چیز متغیر باشد. خطاها صرف‌نظر از حالت بازخورد انتخاب‌شده تشریح می‌شوند. برای دریافت بیشترین بازخورد هنگام یادگیری کار با ابزار، با حالت verbose شروع کنید. .PP گزینه‌های خط فرمان برای پیکربندی محیط اولیه در زمان راه‌اندازی JShell در دسترس هستند. درون JShell نیز دستورهایی برای اصلاح محیط بر حسب نیاز وجود دارند. .PP می‌توان قطعه‌کدهای موجود را برای مقداردهی اولیهٔ نشست JShell یا در هر زمانی در طول نشست، از یک فایل بارگذاری کرد. قطعه‌کدها را می‌توان درون نشست تغییر داد تا حالت‌های گوناگون آزمایش شده و اصلاحات لازم صورت گیرد. برای نگه‌داشتن قطعه‌کدها جهت استفاده‌های بعدی، آن‌ها را در یک فایل ذخیره کنید. .SH "گزینه‌های JSHELL (OPTIONS FOR JSHELL)" .TP \f[V]--add-exports\f[R] \f[I]module\f[R]/\f[I]package\f[R] بسته‌ای را مشخص می‌کند که باید به‌عنوان صادرشده (exported) از ماژول تعریف‌کننده‌اش در نظر گرفته شود. .TP \f[V]--add-modules\f[R] \f[I]module\f[R][\f[V],\f[R]\f[I]module\f[R]...] ماژول‌های ریشه‌ای را مشخص می‌کند که باید علاوه بر ماژول اولیه تفکیک (resolve) شوند. .TP \f[V]-C\f[R]\f[I]flag\f[R] پرچمی را برای ارسال به کامپایلر مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم مورد نیاز، نمونه‌ای از این گزینه را تکرار کنید. .TP \f[V]--class-path\f[R] \f[I]path\f[R] دایرکتوری‌ها و آرشیوهایی را مشخص می‌کند که برای یافتن فایل‌های کلاس جستجو می‌شوند. این گزینه مسیر مشخص‌شده در متغیر محیطی \f[V]CLASSPATH\f[R] را بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو خواهد شد. برای Linux و macOS، از دونقطه (:) برای جدا کردن موارد در مسیر استفاده کنید. برای Windows، از نقطه\-ویرگول (;) برای جدا کردن موارد استفاده کنید. .TP \f[V]--enable-preview\f[R] به کد اجازه می‌دهد به ویژگی‌های پیش‌نمایش (preview features) این نسخه وابسته باشد. .TP \f[V]--execution\f[R] \f[I]specification\f[R] یک موتور اجرای جایگزین را مشخص می‌کند که در آن \f[I]specification\f[R] یک مشخصهٔ ExecutionControl است. برای نحو مشخصه، به مستندات بسته jdk.jshell.spi مراجعه کنید. .TP \f[V]--feedback\f[R] \f[I]mode\f[R] سطح اولیهٔ بازخورد ارائه‌شده در پاسخ به ورودی‌ها را تنظیم می‌کند. این سطح اولیه را می‌توان در طول نشست با استفاده از دستور \f[V]/set feedback\f[R] \f[I]mode\f[R] بازنویسی کرد. حالت پیش‌فرض \f[V]normal\f[R] است. .RS .PP مقدارهای زیر برای \f[I]mode\f[R] معتبر هستند: .TP \f[V]verbose\f[R] بازخوردی با جزئیات کامل برای ورودی‌ها ارائه می‌دهد. اطلاعات بیشتر دربارهٔ عملیات انجام‌شده، پس از نتیجهٔ عملیات نمایش داده می‌شود. اعلان (prompt) بعدی با یک خط خالی از بازخورد جدا می‌شود. .TP \f[V]normal\f[R] میزان متوسطی از بازخورد را ارائه می‌دهد. اعلان بعدی با یک خط خالی از بازخورد جدا می‌شود. .TP \f[V]concise\f[R] حداقل بازخورد را ارائه می‌دهد. اعلان بعدی بلافاصله پس از قطعه‌کد یا بازخورد قرار می‌گیرد. .TP \f[V]silent\f[R] هیچ بازخوردی ارائه نمی‌دهد. اعلان بعدی بلافاصله پس از قطعه‌کد قرار می‌گیرد. .TP \f[I]custom\f[R] بر اساس نحوهٔ تعریف این حالت، بازخورد سفارشی ارائه می‌دهد. حالت‌های بازخورد سفارشی درون JShell با استفاده از دستور \f[V]/set mode\f[R] ساخته می‌شوند. .RE .TP \f[V]--help\f[R] یا \f[V]-h\f[R] یا \f[V]-?\f[R] خلاصه‌ای از گزینه‌های استاندارد را چاپ کرده و از ابزار خارج می‌شود. .TP \f[V]--help-extra\f[R] یا \f[V]-X\f[R] خلاصه‌ای از گزینه‌های غیراستاندارد را چاپ کرده و از ابزار خارج می‌شود. گزینه‌های غیراستاندارد ممکن است بدون اطلاع قبلی تغییر کنند. .TP \f[V]-J\f[R]\f[I]flag\f[R] پرچمی را برای ارسال به سیستم زمان اجرا (runtime) مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم مورد نیاز، نمونه‌ای از این گزینه را تکرار کنید. .TP \f[V]--module-path\f[R] \f[I]modulepath\f[R] محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، از دونقطه (:) برای جدا کردن موارد در مسیر استفاده کنید. برای Windows، از نقطه\-ویرگول (;) برای جدا کردن موارد استفاده کنید. .TP \f[V]--no-startup\f[R] از اجرای اسکریپت‌های راه‌اندازی هنگام شروع JShell جلوگیری می‌کند. از این گزینه برای اجرای تنها اسکریپت‌های واردشده در خط فرمان هنگام راه‌اندازی JShell، یا شروع JShell بدون هیچ‌گونه اطلاعات از‌پیش‌بارگذاری‌شده (در صورت وارد نشدن اسکریپت) استفاده کنید. اگر از گزینهٔ \f[V]--startup\f[R] استفاده شده باشد، نمی‌توان از این گزینه استفاده کرد. .TP \f[V]-q\f[R] حالت بازخورد را روی \f[V]concise\f[R] تنظیم می‌کند، که معادل وارد کردن \f[V]--feedback concise\f[R] است. .TP \f[V]-R\f[R]\f[I]flag\f[R] پرچمی را برای ارسال به سیستم زمان اجرای راه دور مشخص می‌کند. برای ارسال بیش از یک پرچم، به ازای هر پرچم یا آرگومان پرچم ارسالی، نمونه‌ای از این گزینه را مشخص کنید. .TP \f[V]-s\f[R] حالت بازخورد را روی \f[V]silent\f[R] تنظیم می‌کند، که معادل وارد کردن \f[V]--feedback silent\f[R] است. .TP \f[V]--show-version\f[R] اطلاعات نسخه را چاپ کرده و وارد ابزار می‌شود. .TP \f[V]--startup\f[R] \f[I]file\f[R] اسکریپت راه‌اندازی پیش‌فرض را برای این نشست جایگزین می‌کند. این اسکریپت می‌تواند شامل هرگونه قطعه‌کد یا دستور معتبر باشد. .RS .PP اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از‌پیش‌تعریف‌شدهٔ زیر باشد: .TP \f[V]DEFAULT\f[R] ورودی‌های پیش‌فرضی را که معمولاً به‌عنوان import استفاده می‌شوند، بارگذاری می‌کند. .TP \f[V]JAVASE\f[R] تمام بسته‌های Java SE را import می‌کند. .TP \f[V]PRINTING\f[R] متدهای \f[V]print\f[R]، \f[V]println\f[R] و \f[V]printf\f[R] را به‌عنوان متدهای \f[V]jshell\f[R] برای استفاده در داخل ابزار تعریف می‌کند. .TP \f[V]TOOLING\f[R] متدهای \f[V]javac\f[R]، \f[V]jar\f[R] و متدهای دیگر را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها درون ابزار \f[V]jshell\f[R] تعریف می‌کند. .PP برای استفاده از بیش از یک اسکریپت، به ازای هر اسکریپت نمونهٔ جداگانه‌ای از این گزینه را مشخص کنید. اسکریپت‌های راه‌اندازی هنگام شروع اولیهٔ JShell و زمانی که نشست با دستورهای \f[V]/reset\f[R]، \f[V]/reload\f[R] یا \f[V]/env\f[R] راه‌اندازی مجدد می‌شود، اجرا می‌گردند. اسکریپت‌های راه‌اندازی به ترتیبی که در خط فرمان وارد شده‌اند اجرا می‌شوند. .PP اگر از گزینهٔ \f[V]--no-startup\f[R] استفاده شده باشد، نمی‌توان از این گزینه استفاده کرد. .RE .TP \f[V]-v\f[R] حالت بازخورد را روی \f[V]verbose\f[R] تنظیم می‌کند، که معادل وارد کردن \f[V]--feedback verbose\f[R] است. .TP \f[V]--version\f[R] اطلاعات نسخه را چاپ کرده و از ابزار خارج می‌شود..SH "دستورهای JSHELL (JSHELL COMMANDS)" .PP درون ابزار \f[V]jshell\f[R]، از دستورها برای تغییر محیط و مدیریت قطعه‌کدها استفاده می‌شود. .TP \f[V]/drop\f[R] {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه (ID) یا بازه‌ای از شناسه‌ها را حذف کرده و آن‌ها را غیرفعال می‌سازد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و شناسه پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای دیدن شناسه قطعه‌کدها، از دستور \f[V]/list\f[R] استفاده کنید. .TP \f[V]/edit\f[R] [\f[I]option\f[R]] یک ویرایشگر را باز می‌کند. اگر هیچ گزینه‌ای وارد نشود، ویرایشگر با قطعه‌کدهای فعال باز می‌شود. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] ویرایشگر را با قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها باز می‌کند. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای مشاهده شناسه‌های قطعه‌کدها، از دستور \f[V]/list\f[R] استفاده کنید. .TP \f[V]-all\f[R] ویرایشگر را با تمام قطعه‌کدها باز می‌کند، شامل قطعه‌کدهای راه‌اندازی و مواردی که با خطا مواجه شدند، بازنویسی شدند یا حذف شدند. .TP \f[V]-start\f[R] ویرایشگر را با قطعه‌کدهای راه‌اندازی که هنگام آغاز به کار JShell ارزیابی شدند، باز می‌کند. .PP برای خروج از حالت ویرایش، پنجره ویرایشگر را ببندید، یا در صورتی که گزینه \f[V]-wait\f[R] هنگام تعیین ویرایشگر به کار رفته باشد، به اعلان (prompt) ارائه‌شده پاسخ دهید. .PP از دستور \f[V]/set editor\f[R] برای مشخص کردن ویرایشگر مورد استفاده بهره بگیرید. اگر ویرایشگری تنظیم نشده باشد، متغیرهای محیطی زیر به ترتیب بررسی می‌شوند: \f[V]JSHELLEDITOR\f[R]، \f[V]VISUAL\f[R] و \f[V]EDITOR\f[R]. اگر در JShell هیچ ویرایشگری تنظیم نشده باشد و هیچ‌یک از این متغیرهای محیطی نیز مقداردهی نشده باشند، از یک ویرایشگر پیش‌فرض ساده استفاده می‌شود. .RE .TP \f[V]/env\f[R] [\f[I]options\f[R]] تنظیمات محیط را نمایش می‌دهد، یا تنظیمات محیط را به‌روزرسانی کرده و نشست (session) را مجدداً راه‌اندازی می‌کند. اگر هیچ گزینه‌ای وارد نشود، تنظیمات فعلی محیط نمایش داده می‌شوند. اگر یک یا چند گزینه وارد شوند، نشست به شرح زیر از نو آغاز می‌گردد: .RS .IP \[bu] 2 تنظیمات محیط را با گزینه‌های ارائه‌شده به‌روزرسانی می‌کند. .IP \[bu] 2 وضعیت اجرا را بازنشانی می‌کند. .IP \[bu] 2 اسکریپت‌های راه‌اندازی را اجرا می‌کند. .IP \[bu] 2 تاریخچه را بی‌صدا (بدون نمایش خروجی اضافه) به ترتیب ورود مجدداً اجرا می‌کند. این تاریخچه شامل تمام قطعه‌کدهای معتبر یا دستورهای \f[V]/drop\f[R] واردشده در اعلان \f[V]jshell\f[R]، در اسکریپت‌های خط فرمان یا در اسکریپت‌های واردشده با دستور \f[V]/open\f[R] است. .PP تنظیمات محیط واردشده در خط فرمان یا تعیین‌شده با دستور پیشین \f[V]/reset\f[R]، \f[V]/env\f[R] یا \f[V]/reload\f[R] حفظ می‌شوند مگر آنکه یک \f[I]option\f[R] وارد شود که آن تنظیم را بازنویسی کند. .PP گزینه‌های زیر معتبر هستند: .TP \f[V]--add-modules\f[R] \f[I]module\f[R][\f[V],\f[R]\f[I]module\f[R]...] ماژول‌های ریشه را مشخص می‌کند تا علاوه بر ماژول اولیه تفکیک (resolve) شوند. .TP \f[V]--add-exports\f[R] \f[I]source-module\f[R]\f[V]/\f[R]\f[I]package\f[R]\f[V]=\f[R]\f[I]target-module\f[R][\f[V],\f[R]\f[I]target-module\f[R]]* یک برون‌ریزی (export) از \f[I]package\f[R] از مبدأ \f[I]source-module\f[R] به مقصد \f[I]target-module\f[R] اضافه می‌کند. .TP \f[V]--class-path\f[R] \f[I]path\f[R] دایرکتوری‌ها و آرشیوهایی را مشخص می‌کند که برای یافتن فایل‌های کلاس جستجو می‌شوند. این گزینه مسیر موجود در متغیر محیطی \f[V]CLASSPATH\f[R] را باطل و بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و این گزینه نیز به کار نرود، دایرکتوری فعلی جستجو می‌شود. برای Linux و macOS، از دونقطه (\f[V]:\f[R]) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطه‌ویرگول (\f[V];\f[R]) برای جداسازی موارد استفاده کنید. .TP \f[V]--module-path\f[R] \f[I]modulepath\f[R] محل قرارگیری ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، از دونقطه (\f[V]:\f[R]) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطه‌ویرگول (\f[V];\f[R]) برای جداسازی موارد استفاده کنید. .RE .TP \f[V]/exit\f[R] [\f[I]integer-expression-snippet\f[R]] از ابزار خارج می‌شود. اگر هیچ قطعه‌کدی وارد نشود، وضعیت خروج صفر خواهد بود. اگر یک قطعه‌کد وارد شود و حاصل آن یک عدد صحیح باشد، آن مقدار به‌عنوان وضعیت خروج به کار می‌رود. اگر خطایی رخ دهد، یا نتیجه قطعه‌کد یک عدد صحیح نباشد، خطایی نمایش داده می‌شود و ابزار همچنان فعال می‌ماند. .TP \f[V]/history\f[R] آنچه را که در این نشست وارد شده است نمایش می‌دهد. .TP \f[V]/help\f[R] [\f[I]command\f[R]|\f[I]subject\f[R]] اطلاعات مربوط به دستورها و موضوعات را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، خلاصه‌ای از اطلاعات همه دستورها و فهرستی از موضوعات دردسترس نمایش داده می‌شود. اگر دستور معتبری وارد شود، اطلاعات تفصیلی برای آن دستور نمایش داده می‌شود. اگر موضوع معتبری وارد شود، اطلاعات مربوط به آن موضوع نمایش داده می‌شود. .RS .PP مقدارهای زیر برای \f[I]subject\f[R] معتبر هستند: .TP \f[V]context\f[R] گزینه‌هایی را که برای پیکربندی محیط در دسترس هستند شرح می‌دهد. .TP \f[V]intro\f[R] مقدمه‌ای بر این ابزار ارائه می‌دهد. .TP \f[V]shortcuts\f[R] کلیدهای میانبر برای تکمیل دستورها و قطعه‌کدها را شرح می‌دهد. بخش \f[B]Input Shortcuts\f[R] را ببینید. .RE .TP \f[V]/imports\f[R] واردسازی‌های (imports) فعال فعلی را نمایش می‌دهد، شامل مواردی از اسکریپت‌های راه‌اندازی و اسکریپت‌هایی که هنگام اجرای JShell در خط فرمان وارد شده‌اند. .TP \f[V]/list\f[R] [\f[I]option\f[R]] فهرستی از قطعه‌کدها و شناسه آن‌ها را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمام قطعه‌کدهای فعال نمایش داده می‌شوند، اما قطعه‌کدهای راه‌اندازی نمایش داده نخواهند شد. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] قطعه‌کدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. .TP \f[V]-all\f[R] تمام قطعه‌کدها را نمایش می‌دهد، شامل قطعه‌کدهای راه‌اندازی و قطعه‌کدهایی که با شکست مواجه شدند، بازنویسی شدند یا حذف شدند. شناسه‌هایی که با \f[V]s\f[R] آغاز می‌شوند، قطعه‌کدهای راه‌اندازی هستند. شناسه‌هایی که با \f[V]e\f[R] آغاز می‌شوند، قطعه‌کدهایی هستند که با خطا مواجه شده‌اند. .TP \f[V]-start\f[R] قطعه‌کدهای راه‌اندازی را که هنگام آغاز به کار JShell ارزیابی شدند نمایش می‌دهد. .RE .TP \f[V]/methods\f[R] [\f[I]option\f[R]] اطلاعات مربوط به متدهای واردشده را نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، نام، انواع پارامتر و نوع بازگشتی تمام متدهای فعال نمایش داده می‌شود. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] اطلاعات مربوط به متدهای مشخص‌شده بر اساس نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسه آغازین و پایانی را با یک خط پیوند جدا کنید. برای ارائه یک فهرست، موارد موجود در آن را با فاصله جدا کنید. برای مشاهده شناسه‌های قطعه‌کدها، از دستور \f[V]/list\f[R] استفاده کنید. .TP \f[V]-all\f[R] اطلاعات تمام متدها را نمایش می‌دهد، شامل مواردی که هنگام آغاز به کار JShell افزوده شدند و متدهایی که با شکست مواجه شدند، بازنویسی شدند یا حذف شدند..TP \f[V]-start\f[R] اطلاعات متدهای راه‌اندازی را که هنگام شروع JShell افزوده شده‌اند نمایش می‌دهد. .RE .TP \f[V]/open\f[R] \f[I]file\f[R] اسکریپت مشخص‌شده را باز کرده و قطعه‌کدها را در ابزار می‌خواند. اسکریپت می‌تواند یک فایل محلی یا یکی از اسکریپت‌های از پیش تعریف‌شدهٔ زیر باشد: .RS .TP \f[V]DEFAULT\f[R] مدخل‌های پیش‌فرض را که معمولاً به عنوان واردسازی‌ها (imports) به کار می‌روند، بارگذاری می‌کند. .TP \f[V]JAVASE\f[R] تمام بسته‌های Java SE را وارد می‌کند. .TP \f[V]PRINTING\f[R] توابع \f[V]print\f[R]، \f[V]println\f[R] و \f[V]printf\f[R] را به عنوان متدهای \f[V]jshell\f[R] برای استفاده در این ابزار تعریف می‌کند. .TP \f[V]TOOLING\f[R] دستورهای \f[V]javac\f[R]، \f[V]jar\f[R] و سایر متدها را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آن‌ها درون ابزار \f[V]jshell\f[R] تعریف می‌کند. .RE .TP \f[V]/reload\f[R] [\f[I]options\f[R]] نشست را به شرح زیر راه‌اندازی مجدد می‌کند: .RS .IP \[bu] 2 تنظیمات محیط را با گزینه‌های ارائه‌شده (در صورت وجود) به‌روزرسانی می‌کند. .IP \[bu] 2 وضعیت اجرا را بازنشانی می‌کند. .IP \[bu] 2 اسکریپت‌های راه‌اندازی را اجرا می‌کند. .IP \[bu] 2 تاریخچه را به ترتیبی که وارد شده‌اند، بازپخش می‌کند. تاریخچه شامل تمام قطعه‌کدهای معتبر یا دستورهای \f[V]/drop\f[R] واردشده در اعلان \f[V]jshell\f[R]، اسکریپت‌های ارائه‌شده در خط فرمان، یا اسکریپت‌های واردشده با دستور \f[V]/open\f[R] است. .PP تنظیمات محیطی واردشده در خط فرمان یا ارائه‌شده با دستور قبلی \f[V]/reset\f[R]، \f[V]/env\f[R] یا \f[V]/reload\f[R] حفظ می‌شوند، مگر اینکه یک \f[I]option\f[R] وارد شود که تنظیم را بازنویسی کند. .PP گزینه‌های زیر معتبر هستند: .TP \f[V]--add-modules\f[R] \f[I]module\f[R][\f[V],\f[R]\f[I]module\f[R]...] ماژول‌های ریشه را برای حل وابستگی علاوه بر ماژول اولیه مشخص می‌کند. .TP \f[V]--add-exports\f[R] \f[I]source-module\f[R]\f[V]/\f[R]\f[I]package\f[R]\f[V]=\f[R]\f[I]target-module\f[R][\f[V],\f[R]\f[I]target-module\f[R]]* یک برون‌بری (export) از \f[I]package\f[R] را از \f[I]source-module\f[R] به \f[I]target-module\f[R] اضافه می‌کند. .TP \f[V]--class-path\f[R] \f[I]path\f[R] دایرکتوری‌ها و آرشیوهایی را که برای یافتن فایل‌های کلاس جستجو می‌شوند مشخص می‌کند. این گزینه مسیر موجود در متغیر محیطی \f[V]CLASSPATH\f[R] را بازنویسی می‌کند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو می‌شود. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (\f[V]:\f[R]) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (\f[V];\f[R]) استفاده کنید. .TP \f[V]--module-path\f[R] \f[I]modulepath\f[R] محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (\f[V]:\f[R]) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (\f[V];\f[R]) استفاده کنید. .TP \f[V]-quiet\f[R] تاریخچه معتبر را بدون نمایش آن بازپخش می‌کند. خطاها نمایش داده می‌شوند. .TP \f[V]-restore\f[R] محیط را به وضعیتی که در ابتدای اجرای قبلی ابزار بود، یا به آخرین باری که یک دستور \f[V]/reset\f[R]، \f[V]/reload\f[R] یا \f[V]/env\f[R] در اجرای قبلی اجرا شده بود، بازنشانی می‌کند. تاریخچه معتبر از آن نقطه به بعد بازپخش می‌شود. از این گزینه برای بازیابی نشست قبلی JShell استفاده کنید. .RE .TP \f[V]/reset\f[R] [\f[I]options\f[R]] تمام قطعه‌کدهای واردشده را دور می‌ریزد و نشست را به شرح زیر راه‌اندازی مجدد می‌کند: .RS .IP \[bu] 2 تنظیمات محیط را با گزینه‌های ارائه‌شده (در صورت وجود) به‌روزرسانی می‌کند. .IP \[bu] 2 وضعیت اجرا را بازنشانی می‌کند. .IP \[bu] 2 اسکریپت‌های راه‌اندازی را اجرا می‌کند. .PP تاریخچه بازپخش نمی‌شود. همهٔ کدهایی که وارد شده بودند از بین می‌روند. .PP تنظیمات محیطی واردشده در خط فرمان یا ارائه‌شده با دستور قبلی \f[V]/reset\f[R]، \f[V]/env\f[R] یا \f[V]/reload\f[R] حفظ می‌شوند مگر اینکه یک \f[I]option\f[R] وارد شود که تنظیم را بازنویسی کند. .PP گزینه‌های زیر معتبر هستند: .TP \f[V]--add-modules\f[R] \f[I]module\f[R][\f[V],\f[R]\f[I]module\f[R]...] ماژول‌های ریشه را برای حل وابستگی علاوه بر ماژول اولیه مشخص می‌کند. .TP \f[V]--add-exports\f[R] \f[I]source-module\f[R]\f[V]/\f[R]\f[I]package\f[R]\f[V]=\f[R]\f[I]target-module\f[R][\f[V],\f[R]\f[I]target-module\f[R]]* یک برون‌بری (export) از \f[I]package\f[R] را از \f[I]source-module\f[R] به \f[I]target-module\f[R] اضافه می‌کند. .TP \f[V]--class-path\f[R] \f[I]path\f[R] دایرکتوری‌ها و آرشیوهایی را که برای یافتن فایل‌های کلاس جستجو می‌شوند مشخص می‌کند. این گزینه مسیر موجود در متغیر محیطی \f[V]CLASSPATH\f[R] را بازنویسی می‌کند. اگر این متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو می‌شود. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (\f[V]:\f[R]) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (\f[V];\f[R]) استفاده کنید. .TP \f[V]--module-path\f[R] \f[I]modulepath\f[R] محل یافتن ماژول‌های برنامه را مشخص می‌کند. برای Linux و macOS، برای جداسازی موارد در مسیر از دونقطه (\f[V]:\f[R]) استفاده کنید. برای Windows، برای جداسازی موارد از نقطه‌ویرگول (\f[V];\f[R]) استفاده کنید. .RE .TP \f[V]/save\f[R] [\f[I]options\f[R]] \f[I]file\f[R] قطعه‌کدها و دستورها را در فایل مشخص‌شده ذخیره می‌کند. اگر هیچ گزینه‌ای وارد نشود، قطعه‌کدهای فعال ذخیره می‌شوند. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] قطعه‌کدها و دستورهای شناسایی‌شده با نام، شناسه (ID)، یا بازه‌ای از شناسه‌ها را ذخیره می‌کند. برای بازه‌ای از شناسه‌ها، شناسه آغازین و شناسه پایانی را که با خط پیوند جدا شده‌اند ارائه دهید. برای ارائه یک فهرست، موارد درون فهرست را با فاصله جدا کنید. از دستور \f[V]/list\f[R] برای دیدن شناسه‌های قطعه‌کدها استفاده کنید. .TP \f[V]-all\f[R] همهٔ قطعه‌کدها، از جمله قطعه‌کدهای راه‌اندازی و قطعه‌کدهایی که بازنویسی شده یا ناموفق بوده‌اند را ذخیره می‌کند. .TP \f[V]-history\f[R] تاریخچهٔ ترتیبی تمام دستورها و قطعه‌کدهای واردشده در نشست فعلی را ذخیره می‌کند. .TP \f[V]-start\f[R] تنظیمات راه‌اندازی فعلی را ذخیره می‌کند. اگر هیچ اسکریپت راه‌اندازی ارائه نشده باشد، یک فایل خالی ذخیره می‌شود. .RE .TP \f[V]/set\f[R] [\f[I]setting\f[R]] اطلاعات پیکربندی، شامل ویرایشگر خارجی، تنظیمات راه‌اندازی و حالت بازخورد (feedback mode) را تنظیم می‌کند. این دستور همچنین برای ایجاد یک حالت بازخورد سفارشی با اعلان (prompt)، قالب‌بندی و مقادیر کوتاه‌سازی (truncation) سفارشی‌شده استفاده می‌شود. اگر هیچ تنظیمی وارد نشود، تنظیمات فعلی برای ویرایشگر، تنظیمات راه‌اندازی و حالت بازخورد نمایش داده می‌شوند. .RS .PP مقادیر زیر برای \f[V]setting\f[R] معتبر هستند: .TP \f[V]editor\f[R] [\f[I]options\f[R]] [\f[I]command\f[R]] دستور مورد استفاده برای راه‌اندازی یک ویرایشگر خارجی را هنگام وارد کردن دستور \f[V]/edit\f[R] تعیین می‌کند. این دستور می‌تواند شامل آرگومان‌های دستور باشد که با فاصله جدا شده‌اند. اگر هیچ دستور یا گزینه‌ای وارد نشود، تنظیمات فعلی نمایش داده می‌شوند. .RS .PP گزینه‌های زیر معتبر هستند: .TP \f[V]-default\f[R] ویرایشگر را روی ویرایشگر پیش‌فرضی که همراه JShell ارائه شده است تنظیم می‌کند. اگر دستوری برای راه‌اندازی یک ویرایشگر وارد شده باشد، نمی‌توان از این گزینه استفاده کرد..TP \f[V]-delete\f[R] ویرایشگر را به ویرایشگری که هنگام شروع نشست فعال بود، بازمی‌گرداند. اگر همراه با گزینهٔ \f[V]-retain\f[R] استفاده شود، تنظیم ذخیره‌شدهٔ ویرایشگر حذف شده و ویرایشگر روی اولین مورد یافت‌شده از میان متغیرهای محیطی زیر تنظیم می‌شود: \f[V]JSHELLEDITOR\f[R]، \f[V]VISUAL\f[R]، یا \f[V]EDITOR\f[R]. اگر هیچ‌یک از متغیرهای محیطی ویرایشگر مقداردهی نشده باشند، این گزینه ویرایشگر را روی ویرایشگر پیش‌فرض تنظیم می‌کند. .RS .PP اگر دستوری برای راه‌اندازی یک ویرایشگر وارد شده باشد، نمی‌توان از این گزینه استفاده کرد. .RE .TP \f[V]-retain\f[R] تنظیمات ویرایشگر را در طول نشست‌ها ذخیره می‌کند. اگر هیچ گزینه یا دستور دیگری وارد نشود، تنظیمات فعلی ذخیره می‌شود. .TP \f[V]-wait\f[R] از کاربر می‌خواهد تا اتمام ویرایش را مشخص کند. در غیر این صورت با خروج ویرایشگر، کنترل به JShell بازمی‌گردد. اگر ویرایشگر مورد استفاده بلافاصله خارج می‌شود، برای نمونه زمانی که یک پنجرهٔ ویرایش از قبل وجود دارد، از این گزینه استفاده کنید. این گزینه تنها زمانی معتبر است که دستوری برای راه‌اندازی ویرایشگر وارد شده باشد. .RE .TP \f[V]feedback\f[R] [\f[I]mode\f[R]] حالت بازخورد مورد استفاده برای پاسخ به ورودی را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، حالت فعلی نمایش داده می‌شود. .RS .PP حالت‌های زیر معتبر هستند: \f[V]concise\f[R]، \f[V]normal\f[R]، \f[V]silent\f[R]، \f[V]verbose\f[R]، و هر حالت سفارشی ساخته‌شده با دستور \f[V]/set mode\f[R]. .RE .TP \f[V]format\f[R] \f[I]mode\f[R] \f[I]field\f[R] \f[V]\[dq]\f[R]\f[I]format-string\f[R]\f[V]\[dq]\f[R] \f[I]selector\f[R] قالب بازخورد ارائه‌شده در پاسخ به ورودی را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، قالب‌های فعلی تمام فیلدها برای همهٔ حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، قالب‌های فعلی آن حالت نمایش داده می‌شوند. اگر فقط یک حالت و یک فیلد وارد شوند، قالب‌های فعلی آن فیلد نمایش داده می‌شوند. .RS .PP برای تعریف یک قالب، آرگومان‌های زیر مورد نیاز هستند: .TP \f[I]mode\f[R] حالت بازخوردی را که قالب پاسخ روی آن اعمال می‌شود، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور \f[V]/set mode\f[R] قابل تغییر هستند. .TP \f[I]field\f[R] یک فیلد وابسته به زمینه را که قالب پاسخ روی آن اعمال می‌شود، مشخص می‌کند. فیلدها در راهنمای برخط توضیح داده شده‌اند که از طریق دستور \f[V]/help /set format\f[R] در JShell قابل دسترسی است. .TP \f[V]\[dq]\f[R]\f[I]format-string\f[R]\f[V]\[dq]\f[R] رشته‌ای را مشخص می‌کند که به عنوان قالب پاسخ برای فیلد و گزینش‌گر (selector) مشخص‌شده استفاده می‌شود. ساختار رشتهٔ قالب در راهنمای برخط توضیح داده شده است که از طریق دستور \f[V]/help /set format\f[R] در JShell قابل دسترسی است. .TP \f[I]selector\f[R] زمینه‌ای را مشخص می‌کند که قالب پاسخ در آن اعمال می‌شود. گزینش‌گرها در راهنمای برخط توضیح داده شده‌اند که از طریق دستور \f[V]/help /set format\f[R] در JShell قابل دسترسی است. .RE .TP \f[V]mode\f[R] [\f[I]mode-name\f[R]] [\f[I]existing-mode\f[R]] [\f[I]options\f[R]] یک حالت بازخورد سفارشی با نام ارائه‌شده ایجاد می‌کند. اگر هیچ نام حالتی وارد نشود، تنظیمات تمام حالت‌ها نمایش داده می‌شود، که شامل تنظیمات حالت، اعلان (prompt)، قالب و کوتاه‌سازی (truncation) است. اگر نام یک حالت موجود وارد شود، تنظیمات آن حالت موجود در حالتی که در حال ایجاد است کپی می‌شود. .RS .PP گزینه‌های زیر معتبر هستند: .TP \f[V]-command\f[R]|\f[V]-quiet\f[R] سطح بازخورد نمایش‌داده‌شده برای دستورها را هنگام استفاده از این حالت مشخص می‌کند. این گزینه هنگام ایجاد یک حالت بازخورد الزامی است. از \f[V]-command\f[R] برای نمایش اطلاعات و بازخورد تأیید دستورها استفاده کنید. از \f[V]-quiet\f[R] برای نمایش بازخوردهای ضروری دستورها، مانند پیام‌های خطا، استفاده کنید. .TP \f[V]-delete\f[R] حالت بازخورد نام‌برده را برای این نشست حذف می‌کند. نام حالتی که باید حذف شود الزامی است. برای حذف دائمی یک حالت نگه‌داری‌شده، از گزینهٔ \f[V]-retain\f[R] همراه با این گزینه استفاده کنید. حالت‌های پیش‌تعریف‌شده نمی‌توانند حذف شوند. .TP \f[V]-retain\f[R] حالت بازخورد نام‌برده را در طول نشست‌ها ذخیره می‌کند. نام حالتی که باید نگه‌داری شود الزامی است. .PP حالت بازخورد جدید را با استفاده از دستورهای \f[V]/set prompt\f[R]، \f[V]/set format\f[R]، و \f[V]/set truncation\f[R] پیکربندی کنید. .PP برای شروع استفاده از حالت جدید، از دستور \f[V]/set feedback\f[R] استفاده کنید. .RE .TP \f[V]prompt\f[R] \f[I]mode\f[R] \f[V]\[dq]\f[R]\f[I]prompt-string\f[R]\f[V]\[dq]\f[R] \f[V]\[dq]\f[R]\f[I]continuation-prompt-string\f[R]\f[V]\[dq]\f[R] اعلان‌ها را برای ورودی درون JShell تنظیم می‌کند. اگر هیچ حالتی وارد نشود، اعلان‌های فعلی تمام حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، اعلان‌های فعلی آن حالت نمایش داده می‌شوند. .RS .PP برای تعریف یک اعلان، آرگومان‌های زیر مورد نیاز هستند: .TP \f[I]mode\f[R] حالت بازخوردی را که اعلان‌ها روی آن اعمال می‌شوند، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور \f[V]/set mode\f[R] قابل تغییر هستند. .TP \f[V]\[dq]\f[R]\f[I]prompt-string\f[R]\f[V]\[dq]\f[R] رشته‌ای را مشخص می‌کند که به عنوان اعلان خط اول ورودی استفاده می‌شود. .TP \f[V]\[dq]\f[R]\f[I]continuation-prompt-string\f[R]\f[V]\[dq]\f[R] رشته‌ای را مشخص می‌کند که به عنوان اعلان برای خطوط ورودی اضافیِ مورد نیاز جهت تکمیل یک قطعه‌کد استفاده می‌شود. .RE .TP \f[V]start\f[R] [\f[V]-retain\f[R]] [\f[I]file\f[R] [\f[I]file\f[R]...]|\f[I]option\f[R]] نام اسکریپت‌های راه‌اندازی را که هنگام اجرای دستور بعدی \f[V]/reset\f[R]، \f[V]/reload\f[R]، یا \f[V]/env\f[R] استفاده می‌شوند، تنظیم می‌کند. اگر بیش از یک اسکریپت وارد شود، اسکریپت‌ها به همان ترتیبی که وارد شده‌اند اجرا می‌شوند. اگر هیچ اسکریپت یا گزینه‌ای وارد نشود، تنظیمات فعلی راه‌اندازی نمایش داده می‌شوند. .RS .PP اسکریپت‌ها می‌توانند پرونده‌های محلی یا یکی از اسکریپت‌های پیش‌تعریف‌شدهٔ زیر باشند: .TP \f[V]DEFAULT\f[R] ورودی‌های پیش‌فرض را بارگیری می‌کند، که معمولاً به عنوان واردسازی‌ها (imports) استفاده می‌شوند. .TP \f[V]JAVASE\f[R] تمام بسته‌های Java SE را وارد می‌کند. .TP \f[V]PRINTING\f[R] متدهای \f[V]print\f[R]، \f[V]println\f[R]، و \f[V]printf\f[R] را به عنوان متدهای \f[V]jshell\f[R] برای استفاده در داخل ابزار تعریف می‌کند. .TP \f[V]TOOLING\f[R] متدهای \f[V]javac\f[R]، \f[V]jar\f[R]، و دیگر متدها را جهت اجرای ابزارهای JDK از طریق واسط خط فرمان آن‌ها در ابزار \f[V]jshell\f[R] تعریف می‌کند. .PP گزینه‌های زیر معتبر هستند: .TP \f[V]-default\f[R] تنظیمات راه‌اندازی را به تنظیمات پیش‌فرض بازمی‌گرداند. .TP \f[V]-none\f[R] مشخص می‌کند که از هیچ تنظیم راه‌اندازی استفاده نشود. .PP برای ذخیرهٔ تنظیمات راه‌اندازی در طول نشست‌ها، از گزینهٔ \f[V]-retain\f[R] استفاده کنید. .RE .TP \f[V]truncation\f[R] \f[I]mode\f[R] \f[I]length\f[R] \f[I]selector\f[R] حداکثر طول مقدار نمایش‌داده‌شده را تنظیم می‌کند. اگر هیچ حالتی وارد نشود، مقادیر فعلی کوتاه‌سازی برای تمام حالت‌های بازخورد نمایش داده می‌شوند. اگر فقط یک حالت وارد شود، مقادیر فعلی کوتاه‌سازی برای آن حالت نمایش داده می‌شوند. .RS.PP برای تعریف مقادیر کوتاه‌سازی (truncation)، آرگومان‌های زیر مورد نیاز هستند: .TP \f[I]mode\f[R] حالت بازخوردی (feedback mode) را که مقدار کوتاه‌سازی روی آن اعمال می‌شود، مشخص می‌کند. تنها حالت‌های سفارشی ایجادشده با دستور \f[V]/set mode\f[R] قابل تغییر هستند. .TP \f[I]length\f[R] عدد صحیح بدون علامتی را مشخص می‌کند که به عنوان بیشینهٔ طول برای گزینش‌گر (selector) تعیین‌شده به کار می‌رود. .TP \f[I]selector\f[R] زمینه‌ای (context) را که مقدار کوتاه‌سازی در آن اعمال می‌شود، مشخص می‌کند. گزینش‌گرها در راهنمای برخط شرح داده شده‌اند که از طریق JShell با دستور \f[V]/help /set truncation\f[R] قابل دسترسی است. .RE .RE .TP \f[V]/types\f[R] [\f[I]option\f[R]] کلاس‌ها، رابط‌ها (interfaces) و شمارش‌هایی (enums) را که وارد شده‌اند نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمامی کلاس‌ها، رابط‌ها و شمارش‌های فعال فعلی نمایش داده می‌شوند. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] اطلاعات مربوط به کلاس‌ها، رابط‌ها و شمارش‌های مشخص‌شده با نام، شناسه (ID) یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و پایان را به همراه یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد موجود در فهرست را با فاصله (space) جدا کنید. از دستور \f[V]/list\f[R] برای دیدن شناسه‌های قطعه‌کدها (snippets) استفاده کنید. .TP \f[V]-all\f[R] اطلاعات مربوط به تمام کلاس‌ها، رابط‌ها و شمارش‌ها را نمایش می‌دهد؛ از جمله مواردی که هنگام راه‌اندازی JShell اضافه شده‌اند، و مواردی که با خطا مواجه شدند، بازنویسی شدند یا کنار گذاشته شدند. .TP \f[V]-start\f[R] اطلاعات مربوط به کلاس‌ها، رابط‌ها و شمارش‌های راه‌اندازی اولیه را که در زمان شروع JShell افزوده شده‌اند نمایش می‌دهد. .RE .TP \f[V]/vars\f[R] [\f[I]option\f[R]] نام، نوع و مقدار متغیرهایی را که وارد شده‌اند نمایش می‌دهد. اگر هیچ گزینه‌ای وارد نشود، تمامی متغیرهای فعال فعلی نمایش داده می‌شوند. .RS .PP گزینه‌های زیر معتبر هستند: .TP {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] اطلاعات مربوط به متغیرهای مشخص‌شده با نام، شناسه یا بازه‌ای از شناسه‌ها را نمایش می‌دهد. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و شناسهٔ پایان را به همراه یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد فهرست را با فاصله جدا کنید. برای مشاهدهٔ شناسه‌های قطعه‌کدها از دستور \f[V]/list\f[R] استفاده کنید. .TP \f[V]-all\f[R] اطلاعات مربوط به تمام متغیرها را نمایش می‌دهد؛ از جمله متغیرهایی که هنگام راه‌اندازی JShell اضافه شده‌اند، و متغیرهایی که با خطا مواجه شدند، بازنویسی شدند یا کنار گذاشته شدند. .TP \f[V]-start\f[R] اطلاعات مربوط به متغیرهای راه‌اندازی اولیه را که هنگام شروع JShell اضافه شده‌اند نمایش می‌دهد. .RE .TP \f[V]/?\f[R] مشابه دستور \f[V]/help\f[R] است. .TP \f[V]/!\f[R] آخرین قطعه‌کد را دوباره اجرا می‌کند. .TP \f[V]/\f[R]{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[V]-\f[R]\f[I]endID\f[R]}...] قطعه‌کدهای مشخص‌شده بر اساس شناسه، بازه‌ای از شناسه‌ها یا نام را دوباره اجرا می‌کند. برای بازه‌ای از شناسه‌ها، شناسهٔ شروع و شناسهٔ پایان را که با یک خط پیوند جدا شده‌اند ارائه دهید. برای ارائهٔ یک فهرست، موارد فهرست را با فاصله جدا کنید. نخستین مورد در فهرست باید یک شناسه یا بازه‌ای از شناسه‌ها باشد. برای مشاهدهٔ شناسه‌های قطعه‌کدها از دستور \f[V]/list\f[R] استفاده کنید. .TP \f[V]/-\f[R]\f[I]n\f[R] \-\f[I]n\f[R]اُمین قطعه‌کد قبلی را دوباره اجرا می‌کند. به عنوان مثال، اگر ۱۵ قطعه‌کد وارد شده باشد، دستور \f[V]/-4\f[R] قطعه‌کد یازدهم را اجرا می‌کند. دستورها در این شمارش محاسبه نمی‌شوند..SH "میان‌برهای ورودی (INPUT SHORTCUTS)" .PP میان‌برهای زیر برای وارد کردن دستورات و قطعه‌کدها در JShell در دسترس هستند. .SS "تکمیل خودکار با کلید تب (Tab completion)" .TP \f[B]\f[R] هنگام وارد کردن قطعه‌کدها، دستورات، زیردستورات، آرگومان‌های دستور یا گزینه‌های دستور، از کلید Tab برای تکمیل خودکار مورد استفاده کنید. اگر مورد بر اساس آنچه وارد شده است قابل تشخیص نباشد، گزینه‌های ممکن ارائه می‌شوند. .RS .PP هنگام وارد کردن یک فراخوانی متد، پس از پرانتز بازِ فراخوانی متد از کلید Tab برای مشاهده پارامترهای متد استفاده کنید. اگر متد بیش از یک امضا داشته باشد، تمام امضاها نمایش داده می‌شوند. فشردن دوباره کلید Tab، توضیحات متد و پارامترهای امضای نخست را نمایش می‌دهد. برای مشاهده توضیحات سایر امضاها، به فشردن کلید Tab ادامه دهید. .RE .TP \f[B]Shift+ V\f[R] پس از وارد کردن یک عبارت کامل، از این توالی کلید برای تبدیل عبارت به اعلان متغیر (variable declaration) با نوعی که توسط نوع عبارت تعیین می‌شود، استفاده کنید. .TP \f[B]Shift+ M\f[R] پس از وارد کردن یک عبارت یا دستور کامل، از این توالی کلید برای تبدیل عبارت یا دستور به اعلان متد (method declaration) استفاده کنید. اگر یک عبارت وارد شده باشد، نوع بازگشتی بر اساس نوع عبارت تعیین خواهد شد. .TP \f[B]Shift+ I\f[R] هنگامی که شناسه‌ای وارد شود که قابل تحلیل (resolve) نباشد، از این توالی کلید برای نمایش واردسازی‌های (imports) احتمالی که شناسه را بر اساس محتوای مسیر کلاس (class path) مشخص‌شده حل می‌کنند، استفاده کنید. .SS "اختصارات دستور (Command abbreviations)" .PP اختصار یک دستور در صورتی پذیرفته می‌شود که به طور منحصربه‌فرد یک دستور را مشخص کند. برای نمونه، \f[V]/l\f[R] به عنوان دستور \f[V]/list\f[R] شناسایی می‌شود. با این حال، \f[V]/s\f[R] یک اختصار معتبر نیست زیرا نمی‌توان تشخیص داد که منظور دستور \f[V]/set\f[R] است یا \f[V]/save\f[R]. از \f[V]/se\f[R] برای دستور \f[V]/set\f[R] یا از \f[V]/sa\f[R] برای دستور \f[V]/save\f[R] استفاده کنید. .PP اختصارات برای زیردستورات، آرگومان‌های دستور و گزینه‌های دستور نیز پذیرفته می‌شوند. برای نمونه، از \f[V]/m -a\f[R] برای نمایش تمام متدها استفاده کنید. .SS "پیمایش تاریخچه (History navigation)" .PP تاریخچه‌ای از موارد واردشده در تمام نشست‌ها نگهداری می‌شود. از کلیدهای جهت‌نمای بالا و پایین برای پیمایش میان دستورات و قطعه‌کدهای نشست فعلی و نشست‌های پیشین استفاده کنید. از کلید Ctrl همراه با کلیدهای جهت‌نمای بالا و پایین برای رد کردن تمامی خطوط به جز خط نخستِ قطعه‌کدهای چندخطی استفاده کنید. .SS "جستجو در تاریخچه (History search)" .PP از ترکیب کلید Ctrl+R برای جستجوی رشته واردشده در تاریخچه استفاده کنید. اعلان خط فرمان تغییر می‌کند تا رشته و موردِ مطابقت‌یافته را نشان دهد. کلید Ctrl+R از مکان فعلی در تاریخچه به سمت عقب و در میان ورودی‌های پیشین جستجو می‌کند. کلید Ctrl+S از مکان فعلی در تاریخچه به سمت جلو و در میان ورودی‌های بعدی جستجو می‌کند. .SH "ویرایش ورودی (INPUT EDITING)" .PP قابلیت‌های ویرایشی JShell مشابه سایر شل‌های رایج است. کلیدها و ترکیب‌های کلیدی صفحه‌کلید، میان‌برهای ویرایش خط را فراهم می‌کنند. کلیدهای Ctrl و Meta در ترکیب‌های کلیدی به کار می‌روند. اگر صفحه‌کلید شما کلید Meta ندارد، کلید Alt اغلب برای ارائه عملکرد کلید Meta نگاشت شده است. .PP میان‌برهای ویرایش خط .TS tab(@); l l. T{ کلید یا ترکیب کلیدها T}@T{ عملکرد T} _ T{ Return T}@T{ خط فعلی را وارد می‌کند. T} T{ جهت‌نمای چپ T}@T{ مکان‌نما را یک نویسه به چپ می‌برد. T} T{ جهت‌نمای راست T}@T{ مکان‌نما را یک نویسه به راست می‌برد. T} T{ Ctrl+A T}@T{ مکان‌نما را به ابتدای خط می‌برد. T} T{ Ctrl+E T}@T{ مکان‌نما را به انتهای خط می‌برد. T} T{ Meta+B T}@T{ مکان‌نما را یک کلمه به چپ می‌برد. T} T{ Meta+F T}@T{ مکان‌نما را یک کلمه به راست می‌برد. T} T{ Delete T}@T{ نویسه زیر مکان‌نما را حذف می‌کند. T} T{ Backspace T}@T{ نویسه پیش از مکان‌نما را حذف می‌کند. T} T{ Ctrl+K T}@T{ متن را از مکان‌نما تا انتهای خط حذف می‌کند. T} T{ Meta+D T}@T{ متن را از مکان‌نما تا انتهای کلمه حذف می‌کند. T} T{ Ctrl+W T}@T{ متن را از مکان‌نما تا نویسه فاصله خالی (white space) قبلی حذف می‌کند. T} T{ Ctrl+Y T}@T{ آخرین متن حذف‌شده را در خط می‌چسباند (paste). T} T{ Meta+Y T}@T{ پس از Ctrl+Y، برای پیمایش چرخشی میان متن‌های حذف‌شده قبلی فشرده می‌شود. T} .TE.SH "مثالی از آغاز و پایان یک نشست JSHELL (EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION)" .PP ابزار JShell همراه با JDK ارائه می‌شود. برای شروع یک نشست، \f[V]jshell\f[R] را در خط فرمان وارد کنید. یک پیام خوش‌آمدگویی چاپ می‌شود و اعلانی برای وارد کردن دستورات و قطعه‌کدها فراهم می‌گردد. .IP .nf \f[CB] % jshell | Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell> \f[R] .fi .PP برای مشاهده این‌که چه قطعه‌کدهایی هنگام شروع JShell به‌طور خودکار بارگذاری شده‌اند، از دستور \f[V]/list -start\f[R] استفاده کنید. قطعه‌کدهای پیش‌فرض راه‌اندازی، دستورات import برای بسته‌های پرکاربرد هستند. شناسه (ID) هر قطعه‌کد با حرف \f[I]s\f[R] آغاز می‌شود که نشان‌دهنده راه‌اندازی (startup) بودن آن قطعه‌کد است. .IP .nf \f[CB] jshell> /list -start s1 : import java.io.*; s2 : import java.math.*; s3 : import java.net.*; s4 : import java.nio.file.*; s5 : import java.util.*; s6 : import java.util.concurrent.*; s7 : import java.util.function.*; s8 : import java.util.prefs.*; s9 : import java.util.regex.*; s10 : import java.util.stream.*; jshell> \f[R] .fi .PP برای پایان دادن به نشست، از دستور \f[V]/exit\f[R] استفاده کنید. .IP .nf \f[CB] jshell> /exit | Goodbye % \f[R] .fi .SH "مثالی از وارد کردن قطعه‌کدها (EXAMPLE OF ENTERING SNIPPETS)" .PP قطعه‌کدها شامل دستورات Java، تعاریف متغیر، تعاریف متد، تعاریف کلاس، عبارت‌های import و عبارات محاسباتی (expressions) هستند. اگر نقطه‌ویرگول پایانی (semicolon) در انتهای یک قطعه‌کد کامل وجود نداشته باشد، به‌طور خودکار افزوده می‌شود. .PP مثال زیر تعریف دو متغیر و یک متد و همچنین اجرای متد را نشان می‌دهد. توجه داشته باشید که به دلیل مشخص نشدن متغیر، یک متغیر موقت (scratch variable) به‌طور خودکار برای نگهداری نتیجه ایجاد می‌شود. .IP .nf \f[CB] jshell> int a=4 a ==> 4 jshell> int b=8 b ==> 8 jshell> int square(int i1) { ...> return i1 * i1; ...> } | created method square(int) jshell> square(b) $5 ==> 64 \f[R] .fi.SH "مثال تغییر قطعه‌کدها (EXAMPLE OF CHANGING SNIPPETS)" .PP تعریف یک متغیر، متد یا کلاس را با وارد کردن مجدد آن تغییر دهید. .PP مثال زیر تعریف یک متد و اجرای آن را نشان می‌دهد: .IP .nf \f[CB] jshell> String grade(int testScore) { ...> if (testScore >= 90) { ...> return \[dq]Pass\[dq]; ...> } ...> return \[dq]Fail\[dq]; ...> } | created method grade(int) jshell> grade(88) $3 ==> \[dq]Fail\[dq] \f[R] .fi .PP برای تغییر متد \f[V]grade\f[R] جهت امکان قبولی دانشجویان بیشتر، تعریف متد را دوباره وارد کرده و نمره قبولی را به \f[V]80\f[R] تغییر دهید. برای جلوگیری از تایپ مجدد، از کلید جهت‌نمای بالا برای بازیابی ورودی‌های قبلی استفاده کنید و تغییر را در عبارت \f[V]if\f[R] اعمال نمایید. مثال زیر تعریف جدید را نشان می‌دهد و متد را برای نمایش نتیجه جدید دوباره اجرا می‌کند: .IP .nf \f[CB] jshell> String grade(int testScore) { ...> if (testScore >= 80) { ...> return \[dq]Pass\[dq]; ...> } ...> return \[dq]Fail\[dq]; ...> } | modified method grade(int) jshell> grade(88) $5 ==> \[dq]Pass\[dq] \f[R] .fi .PP برای قطعه‌کدهایی که بیش از چند خط هستند، یا برای اعمال تغییرات بیشتر، از دستور \f[V]/edit\f[R] برای باز کردن قطعه‌کد در یک ویرایشگر استفاده کنید. پس از تکمیل تغییرات، پنجره ویرایش را ببندید تا کنترل دوباره به نشست JShell بازگردد. مثال زیر دستور و بازخورد ارائه‌شده پس از بستن پنجره ویرایش را نشان می‌دهد. از دستور \f[V]/list\f[R] برای نمایش اینکه نمره قبولی به \f[V]85\f[R] تغییر یافته است استفاده می‌شود. .IP .nf \f[CB] jshell> /edit grade | modified method grade(int) jshell> /list grade 6 : String grade(int testScore) { if (testScore >= 85) { return \[dq]Pass\[dq]; } return \[dq]Fail\[dq]; } \f[R] .fi .SH "مثال ایجاد حالت بازخورد سفارشی (EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE)" .PP حالت بازخورد (feedback mode)، اعلان (prompt) نمایش‌داده‌شده، پیام‌های بازخوردی که با ورود قطعه‌کدها ارائه می‌شوند و حداکثر طول مقادیر نمایش‌داده‌شده را تعیین می‌کند. حالت‌های بازخورد از پیش تعریف‌شده در دسترس هستند. دستورهایی نیز برای ایجاد حالت‌های بازخورد سفارشی ارائه شده است. .PP از دستور \f[V]/set mode\f[R] برای ایجاد یک حالت بازخورد جدید استفاده کنید. در مثال زیر، حالت جدید \f[V]mymode\f[R] بر پایه حالت بازخورد از پیش تعریف‌شده \f[V]normal\f[R] ایجاد شده و بازخورد دستوریِ تأییدکننده نمایش داده می‌شود: .IP .nf \f[CB] jshell> /set mode mymode normal -command | Created new feedback mode: mymode \f[R] .fi .PP از آنجا که حالت جدید بر پایه حالت \f[V]normal\f[R] است، اعلان‌ها یکسان هستند. مثال زیر نحوه مشاهده اعلان‌های مورد استفاده و سپس تغییر آنها به رشته‌های سفارشی را نشان می‌دهد. رشته اول نمایانگر اعلان استاندارد JShell است. رشته دوم نشان‌دهنده اعلان خطوط بعدی در قطعه‌کدهای چندخطی است. .IP .nf \f[CB] jshell> /set prompt mymode | /set prompt mymode \[dq]\[rs]njshell> \[dq] \[dq] ...> \[dq] jshell> /set prompt mymode \[dq]\[rs]nprompt$ \[dq] \[dq] continue$ \[dq] \f[R] .fi .PP حداکثر طول مقدار نمایش داده‌شده توسط تنظیم کوتاه‌سازی (truncation) کنترل می‌شود. انواع مختلف مقادیر می‌توانند طول‌های متفاوتی داشته باشند. مثال زیر مقدار کوتاه‌سازی کلی را روی 72 و مقدار کوتاه‌سازی را برای عبارت‌های مقدار متغیر روی 500 تنظیم می‌کند: .IP .nf \f[CB] jshell> /set truncation mymode 72 jshell> /set truncation mymode 500 varvalue \f[R] .fi .PP بازخورد نمایش‌داده‌شده پس از وارد کردن قطعه‌کدها توسط تنظیم قالب‌بندی (format) کنترل می‌شود و بر اساس نوع قطعه‌کد واردشده و عملیات انجام‌شده برای آن قطعه‌کد است. در حالت از پیش تعریف‌شده \f[V]normal\f[R]، هنگام ایجاد یک متد رشته \f[V]created\f[R] نمایش داده می‌شود. مثال زیر نحوه تغییر این رشته به \f[V]defined\f[R] را نشان می‌دهد: .IP .nf \f[CB] jshell> /set format mymode action \[dq]defined\[dq] added-primary \f[R] .fi .PP از دستور \f[V]/set feedback\f[R] برای شروع استفاده از حالت بازخوردی که به‌تازگی ایجاد شده است استفاده کنید. مثال زیر حالت سفارشی را در حال استفاده نشان می‌دهد: .IP .nf \f[CB] jshell> /set feedback mymode | Feedback mode: mymode prompt$ int square (int num1){ continue$ return num1*num1; continue$ } | defined method square(int) prompt$ \f[R] .fi