| JSHELL(1) | JDK Commands | JSHELL(1) |
نام (NAME)
jshell - محیط تعاملی و ابزار REPL زبان جاوا (نسخه ۱۷)
خلاصه دستور (SYNOPSIS)
jshell [گزینهها] [فایلهای-بارگذاری]
- گزینهها
- گزینههای خط فرمان که با فاصله از هم جدا میشوند. بخش گزینههای jshell را ببینید.
- فایلهای-بارگذاری
- یک یا چند اسکریپت که هنگام شروع ابزار اجرا میشوند. اسکریپتها میتوانند شامل هر قطعهکد معتبر یا دستورات JShell باشند.
اسکریپت میتواند یک فایل محلی یا یکی از اسکریپتهای از پیش تعریفشده زیر باشد:
- DEFAULT
- موردهای پیشفرض را بارگذاری میکند که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را ایمپورت میکند.
- PRINTING
- متدهای print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند.
برای بیش از یک اسکریپت، از فاصله برای جداسازی نامها استفاده کنید. اسکریپتها به ترتیبی که در خط فرمان وارد شدهاند اجرا میشوند. اسکریپتهای خط فرمان پس از اسکریپتهای راهاندازی (startup) اجرا میشوند. برای اجرای یک اسکریپت پس از شروع JShell، از دستور /open استفاده کنید.
برای پذیرش ورودی از ورودی استاندارد (standard input) و غیرفعال کردن I/O تعاملی، یک خط تیره (-) برای فایلهای-بارگذاری وارد کنید. این گزینه استفاده از ابزار jshell را در زنجیره لولهها (pipe chains) ممکن میسازد.
توضیحات (DESCRIPTION)
ابزار JShell روشی برای ارزیابی تعاملی اعلانها، دستورات و عبارتهای زبان برنامهنویسی جاوا فراهم میکند که یادگیری زبان، کاوش در کدها و APIهای ناآشنا و ساخت پیشنمونههای کد پیچیده را آسانتر میسازد. دستورات جاوا، تعاریف متغیرها، تعاریف متدها، تعاریف کلاسها، دستورات import و عبارتها پذیرفته میشوند. به قطعات کد واردشده قطعهکد (snippet) گفته میشود.
با ورود قطعهکدها، آنها ارزیابی شده و بازخورد ارائه میشود. بازخورد بسته به قطعهکد واردشده و حالت بازخورد انتخابشده، از نتایج و توضیحات عملیات تا هیچ چیز متغیر است. خطاها صرفنظر از حالت بازخورد شرح داده میشوند. برای دریافت بیشترین بازخورد هنگام یادگیری ابزار، با حالت پرگو (verbose) شروع کنید.
گزینههای خط فرمان برای پیکربندی محیط اولیه هنگام شروع JShell در دسترس هستند. درون JShell، دستوراتی برای اصلاح محیط در صورت نیاز وجود دارد.
قطعهکدهای موجود را میتوان از یک فایل برای مقداردهی اولیه نشست JShell یا در هر زمانی درون یک نشست بارگذاری کرد. قطعهکدها را میتوان درون نشست تغییر داد تا حالتهای مختلف آزمایش شوند و اصلاحات انجام گیرد. برای نگهداری قطعهکدها جهت استفاده بعدی، آنها را در یک فایل ذخیره کنید.
گزینههای JSHELL (OPTIONS FOR JSHELL)
- --add-exports module/package
- بستهای را مشخص میکند که باید از ماژول تعریفکنندهاش اکسپورتشده تلقی شود.
- --add-modules module[,module...]
- ماژولهای ریشه را مشخص میکند که علاوه بر ماژول اولیه باید حل (resolve) شوند.
- -Cflag
- فلگی را برای ارسال به کامپایلر فراهم میکند. برای ارسال بیش از یک فلگ، برای هر فلگ یا آرگومان فلگ مورد نیاز، یک نمونه از این گزینه ارائه دهید.
- --class-path path
- پوشهها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، پوشه جاری جستجو میشود. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- --enable-preview
- امکان وابستگی کد به قابلیتهای پیشنمایش (preview features) این نسخه را فراهم میکند.
- --execution specification
- یک موتور اجرای جایگزین را مشخص میکند، که در آن specification یک مشخصه ExecutionControl است. برای ساختار نحوی این مشخصه، مستندات بسته jdk.jshell.spi را ببینید.
- --feedback mode
- سطح اولیه بازخورد ارائهشده در پاسخ به ورودیها را تنظیم میکند. سطح اولیه را میتوان درون نشست با استفاده از دستور /set feedback mode تغییر داد. مقدار پیشفرض normal است.
مقادیر زیر برای mode معتبر هستند:
- verbose
- بازخورد با جزئیات کامل برای ورودیها ارائه میدهد. اطلاعات تکمیلی درباره عملیات انجامشده پس از نتیجه عملیات نمایش داده میشود. اعلان (prompt) بعدی با یک خط خالی از بازخورد جدا میشود.
- normal
- میزان متوسطی از بازخورد را ارائه میدهد. اعلان بعدی با یک خط خالی از بازخورد جدا میشود.
- concise
- حداقل بازخورد را ارائه میدهد. اعلان بعدی بلافاصله پس از قطعهکد یا بازخورد میآید.
- silent
- هیچ بازخوردی ارائه نمیدهد. اعلان بعدی بلافاصله پس از قطعهکد میآید.
- custom
- بازخورد سفارشی بر اساس نحوه تعریف حالت ارائه میدهد. حالتهای بازخورد سفارشی درون JShell با استفاده از دستور /set mode ایجاد میشوند.
- --help یا -h یا -?
- خلاصهای از گزینههای استاندارد را چاپ کرده و از ابزار خارج میشود.
- --help-extra یا -X
- خلاصهای از گزینههای غیراستاندارد را چاپ کرده و از ابزار خارج میشود. گزینههای غیراستاندارد بدون اطلاع قبلی ممکن است تغییر کنند.
- -Jflag
- فلگی را برای ارسال به سیستم زمان اجرا (runtime system) فراهم میکند. برای ارسال بیش از یک فلگ، برای هر فلگ یا آرگومان فلگ مورد نیاز، یک نمونه از این گزینه ارائه دهید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- --no-startup
- از اجرای اسکریپتهای راهاندازی هنگام شروع JShell جلوگیری میکند. از این گزینه برای اجرای تنها اسکریپتهای واردشده در خط فرمان هنگام شروع JShell، یا شروع JShell بدون هیچ اطلاعات از پیش بارگذاریشده در صورت عدم ورود اسکریپت، استفاده کنید. در صورت استفاده از گزینه --startup، این گزینه قابل استفاده نیست.
- -q
- حالت بازخورد را روی concise تنظیم میکند که معادل وارد کردن --feedback concise است.
- -Rflag
- فلگی را برای ارسال به سیستم زمان اجرای راه دور (remote runtime system) فراهم میکند. برای ارسال بیش از یک فلگ، برای هر فلگ یا آرگومان فلگ، یک نمونه از این گزینه ارائه دهید.
- -s
- حالت بازخورد را روی silent تنظیم میکند که معادل وارد کردن --feedback silent است.
- --show-version
- اطلاعات نسخه را چاپ کرده و وارد ابزار میشود.
- --startup file
- اسکریپت راهاندازی پیشفرض را برای این نشست بازنویسی میکند. اسکریپت میتواند شامل هر قطعهکد یا دستور معتبر باشد.
اسکریپت میتواند یک فایل محلی یا یکی از اسکریپتهای از پیش تعریفشده زیر باشد:
- DEFAULT
- موردهای پیشفرض را بارگذاری میکند که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را ایمپورت میکند.
- PRINTING
- متدهای print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند.
برای بیش از یک اسکریپت، یک نمونه جداگانه از این گزینه برای هر اسکریپت ارائه دهید. اسکریپتهای راهاندازی هنگام شروع اولیه JShell و هنگامی که نشست با دستورات /reset، /reload یا /env راهاندازی مجدد میشود، اجرا میگردند. اسکریپتهای راهاندازی به ترتیبی که در خط فرمان وارد شدهاند اجرا میشوند.
در صورت استفاده از گزینه --no-startup، این گزینه قابل استفاده نیست.
- -v
- حالت بازخورد را روی verbose تنظیم میکند که معادل وارد کردن --feedback verbose است.
- --version
- اطلاعات نسخه را چاپ کرده و از ابزار خارج میشود.
دستورات JSHELL (JSHELL COMMANDS)
درون ابزار jshell، دستورات برای اصلاح محیط و مدیریت قطعهکدها به کار میروند.
- /drop {name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدهای مشخصشده با نام، شناسه (ID) یا بازهای از شناسهها را حذف (drop) کرده و آنها را غیرفعال میکند. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیستی از موارد، آنها را با فاصله جدا نمایید. برای مشاهده شناسههای قطعهکدها از دستور /list استفاده کنید.
- /edit [option]
- یک ویرایشگر باز میکند. اگر گزینهای وارد نشود، ویرایشگر با قطعهکدهای فعال باز میشود.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- ویرایشگر را با قطعهکدهای مشخصشده با نام، شناسه یا بازه شناسه باز میکند. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- -all
- ویرایشگر را با تمام قطعهکدها باز میکند، از جمله قطعهکدهای راهاندازی و قطعهکدهایی که ناموفق بودهاند، بازنویسی شدهاند یا حذف شدهاند.
- -start
- ویرایشگر را با قطعهکدهای راهاندازی که هنگام شروع JShell ارزیابی شدهاند باز میکند.
برای خروج از حالت ویرایش، پنجره ویرایشگر را ببندید، یا در صورتی که هنگام تنظیم ویرایشگر از گزینه -wait استفاده شده باشد، به اعلان نمایش دادهشده پاسخ دهید.
برای تعیین ویرایشگر مورد استفاده، از دستور /set editor استفاده کنید. اگر هیچ ویرایشگری تنظیم نشده باشد، متغیرهای محیطی زیر به ترتیب بررسی میشوند: JSHELLEDITOR، VISUAL و EDITOR. اگر هیچ ویرایشگری در JShell تنظیم نشده باشد و هیچیک از متغیرهای محیطی ویرایشگر نیز مقدار نداشته باشند، از یک ویرایشگر پیشفرض ساده استفاده میشود.
- /env [options]
- تنظیمات محیط را نمایش میدهد، یا تنظیمات محیط را بهروزرسانی کرده و نشست را مجدداً راهاندازی میکند. اگر گزینهای وارد نشود، تنظیمات فعلی محیط نمایش داده میشود. اگر یک یا چند گزینه وارد شود، نشست به شرح زیر مجدداً راهاندازی میشود:
- •
- تنظیمات محیط را با گزینههای ارائهشده بهروزرسانی میکند.
- •
- وضعیت اجرا را بازنشانی میکند.
- •
- اسکریپتهای راهاندازی را اجرا میکند.
- •
- تاریخچه را به ترتیبی که وارد شدهاند در پسزمینه بازپخش (replay) میکند. تاریخچه شامل تمام قطعهکدهای معتبر یا دستورات /drop واردشده در اعلان jshell، در اسکریپتهای واردشده در خط فرمان، یا اسکریپتهای واردشده با دستور /open است.
تنظیمات محیط که در خط فرمان وارد شدهاند یا با دستور قبلی /reset، /env یا /reload ارائه شدهاند، حفظ میشوند مگر اینکه گزینهای (option) وارد شود که آن تنظیم را بازنویسی کند.
گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را مشخص میکند که علاوه بر ماژول اولیه باید حل شوند.
- --add-exports source-module/package=target-module[,target-module]*
- یک اکسپورت از package از source-module به target-module اضافه میکند.
- --class-path path
- پوشهها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، پوشه جاری جستجو میشود. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- /exit [integer-expression-snippet]
- از ابزار خارج میشود. اگر قطعهکدی وارد نشود، وضعیت خروج صفر خواهد بود. اگر قطعهکدی وارد شود و نتیجه آن یک عدد صحیح باشد، آن نتیجه به عنوان وضعیت خروج استفاده میشود. اگر خطایی رخ دهد یا نتیجه قطعهکد عدد صحیح نباشد، خطا نمایش داده شده و ابزار فعال باقی میماند.
- /history
- آنچه در این نشست وارد شده است را نمایش میدهد.
- /help [command|subject]
- اطلاعاتی درباره دستورات و موضوعات نمایش میدهد. اگر گزینهای وارد نشود، خلاصهای از اطلاعات همه دستورات و فهرستی از موضوعات موجود نمایش داده میشود. اگر دستوری معتبر ارائه شود، اطلاعات تفصیلی مربوط به آن دستور نمایش مییابد. اگر موضوعی معتبر وارد شود، اطلاعات مربوط به آن موضوع نمایش داده میشود.
مقادیر زیر برای subject معتبر هستند:
- context
- گزینههای موجود برای پیکربندی محیط را شرح میدهد.
- intro
- مقدمهای بر این ابزار ارائه میدهد.
- shortcuts
- کلیدهای میانبر برای تکمیل دستورات و قطعهکدها را شرح میدهد. بخش میانبرهای ورودی را ببینید.
- /imports
- ایمپورتهای فعال فعلی را نمایش میدهد، از جمله مواردی که از اسکریپتهای راهاندازی و اسکریپتهای واردشده در خط فرمان هنگام شروع JShell آمدهاند.
- /list [option]
- فهرستی از قطعهکدها و شناسههای آنها را نمایش میدهد. اگر گزینهای وارد نشود، تمام قطعهکدهای فعال نمایش داده میشوند، اما قطعهکدهای راهاندازی نشان داده نمیشوند.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدهای مشخصشده با نام، شناسه یا بازه شناسه را نمایش میدهد. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید.
- -all
- تمام قطعهکدها را نمایش میدهد، از جمله قطعهکدهای راهاندازی و قطعهکدهایی که ناموفق بودهاند، بازنویسی شدهاند یا حذف شدهاند. شناسههایی که با s شروع میشوند، قطعهکدهای راهاندازی هستند. شناسههایی که با e شروع میشوند، قطعهکدهای ناموفق هستند.
- -start
- قطعهکدهای راهاندازی که هنگام شروع JShell ارزیابی شدهاند را نمایش میدهد.
- /methods [option]
- اطلاعاتی درباره متدهای واردشده نمایش میدهد. اگر گزینهای وارد نشود، نام، نوع پارامترها و نوع بازگشتی همه متدهای فعال نمایش داده میشود.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- اطلاعات متدهای مشخصشده با نام، شناسه یا بازه شناسه را نمایش میدهد. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- -all
- اطلاعات تمام متدها را نمایش میدهد، از جمله متدهایی که هنگام شروع JShell اضافه شدهاند و متدهایی که ناموفق بودهاند، بازنویسی شدهاند یا حذف شدهاند.
- -start
- اطلاعات متدهای راهاندازی که هنگام شروع JShell اضافه شدهاند را نمایش میدهد.
- /open file
- اسکریپت مشخصشده را باز کرده و قطعهکدهای آن را درون ابزار میخواند. اسکریپت میتواند یک فایل محلی یا یکی از اسکریپتهای از پیش تعریفشده زیر باشد:
- DEFAULT
- موردهای پیشفرض را بارگذاری میکند که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را ایمپورت میکند.
- PRINTING
- متدهای print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند.
- /reload [options]
- نشست را به شرح زیر مجدداً راهاندازی میکند:
- •
- تنظیمات محیط را با گزینههای ارائهشده (در صورت وجود) بهروزرسانی میکند.
- •
- وضعیت اجرا را بازنشانی میکند.
- •
- اسکریپتهای راهاندازی را اجرا میکند.
- •
- تاریخچه را به ترتیبی که وارد شدهاند بازپخش میکند. تاریخچه شامل تمام قطعهکدهای معتبر یا دستورات /drop واردشده در اعلان jshell، در اسکریپتهای واردشده در خط فرمان، یا اسکریپتهای واردشده با دستور /open است.
تنظیمات محیط که در خط فرمان وارد شدهاند یا با دستور قبلی /reset، /env یا /reload ارائه شدهاند، حفظ میشوند مگر اینکه گزینهای (option) وارد شود که آن تنظیم را بازنویسی کند.
گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را مشخص میکند که علاوه بر ماژول اولیه باید حل شوند.
- --add-exports source-module/package=target-module[,target-module]*
- یک اکسپورت از package از source-module به target-module اضافه میکند.
- --class-path path
- پوشهها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، پوشه جاری جستجو میشود. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- -quiet
- تاریخچه معتبر را بدون نمایش آن بازپخش میکند. خطاها نمایش داده میشوند.
- -restore
- محیط را به وضعیت ابتدای اجرای قبلی ابزار یا به آخرین باری که دستور /reset، /reload یا /env در اجرای قبلی انجام شده بود، بازنشانی میکند. تاریخچه معتبر از آن نقطه به بعد بازپخش میشود. از این گزینه برای بازیابی نشست قبلی JShell استفاده کنید.
- /reset [options]
- تمام قطعهکدهای واردشده را دور ریخته و نشست را به شرح زیر مجدداً راهاندازی میکند:
- •
- تنظیمات محیط را با گزینههای ارائهشده (در صورت وجود) بهروزرسانی میکند.
- •
- وضعیت اجرا را بازنشانی میکند.
- •
- اسکریپتهای راهاندازی را اجرا میکند.
تاریخچه بازپخش نمیشود. تمام کدهایی که وارد شده بودند از دست میروند.
تنظیمات محیط که در خط فرمان وارد شدهاند یا با دستور قبلی /reset، /env یا /reload ارائه شدهاند، حفظ میشوند مگر اینکه گزینهای (option) وارد شود که آن تنظیم را بازنویسی کند.
گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را مشخص میکند که علاوه بر ماژول اولیه باید حل شوند.
- --add-exports source-module/package=target-module[,target-module]*
- یک اکسپورت از package از source-module به target-module اضافه میکند.
- --class-path path
- پوشهها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، پوشه جاری جستجو میشود. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای لینوکس و macOS از دو نقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای ویندوز از نقطه ویرگول (;) برای جداسازی موارد استفاده کنید.
- /save [options] file
- قطعهکدها و دستورات را در فایل مشخصشده ذخیره میکند. اگر گزینهای وارد نشود، قطعهکدهای فعال ذخیره میشوند.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدها و دستورات مشخصشده با نام، شناسه یا بازه شناسه را ذخیره میکند. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- -all
- تمام قطعهکدها را ذخیره میکند، از جمله قطعهکدهای راهاندازی و قطعهکدهایی که بازنویسی شده یا ناموفق بودهاند.
- -history
- تاریخچه ترتیبی تمام دستورات و قطعهکدهای واردشده در نشست جاری را ذخیره میکند.
- -start
- تنظیمات راهاندازی جاری را ذخیره میکند. اگر هیچ اسکریپت راهاندازی ارائه نشده باشد، یک فایل خالی ذخیره میشود.
- /set [setting]
- اطلاعات پیکربندی، شامل ویرایشگر خارجی، تنظیمات راهاندازی و حالت بازخورد را تنظیم میکند. این دستور همچنین برای ایجاد یک حالت بازخورد سفارشی با مقادیر سفارشی اعلان، قالببندی و کوتاهسازی به کار میرود. اگر تنظیمی وارد نشود، تنظیمات فعلی برای ویرایشگر، تنظیمات راهاندازی و حالت بازخورد نمایش داده میشوند.
مقادیر زیر برای setting معتبر هستند:
- editor [options] [command]
- دستور مورد استفاده برای شروع یک ویرایشگر خارجی را هنگام وارد کردن دستور /edit تنظیم میکند. دستور میتواند شامل آرگومانهای دستور باشد که با فاصله جدا شدهاند. اگر هیچ دستور یا گزینهای وارد نشود، تنظیم جاری نمایش داده میشود.
گزینههای زیر معتبر هستند:
- -default
- ویرایشگر را روی ویرایشگر پیشفرض ارائهشده همراه با JShell تنظیم میکند. در صورت وارد کردن دستوری برای شروع ویرایشگر، این گزینه قابل استفاده نیست.
- -delete
- ویرایشگر را روی ویرایشگری تنظیم میکند که هنگام شروع نشست فعال بود. اگر همراه با گزینه -retain استفاده شود، تنظیم ویرایشگر نگهداریشده حذف شده و ویرایشگر روی اولین متغیر محیطی از متغیرهای زیر که یافت شود تنظیم میگردد: JSHELLEDITOR، VISUAL یا EDITOR. اگر هیچیک از متغیرهای محیطی ویرایشگر تنظیم نشده باشند، این گزینه ویرایشگر را روی ویرایشگر پیشفرض قرار میدهد.
در صورت وارد کردن دستوری برای شروع ویرایشگر، این گزینه قابل استفاده نیست.
- -retain
- تنظیم ویرایشگر را برای نشستهای بعدی ذخیره میکند. اگر گزینه یا دستور دیگری وارد نشود، تنظیم جاری ذخیره میشود.
- -wait
- از کاربر میخواهد تا پایان ویرایش را اعلام کند. در غیر این صورت، پس از خروج ویرایشگر، کنترل به JShell بازمیگردد. اگر ویرایشگر مورد استفاده بلافاصله خارج میشود (مثلاً زمانی که پنجره ویرایشگر از قبل باز است)، از این گزینه استفاده کنید. این گزینه فقط زمانی معتبر است که دستوری برای شروع ویرایشگر وارد شده باشد.
- feedback [mode]
- حالت بازخورد مورد استفاده در پاسخ به ورودی را تنظیم میکند. اگر حالتی وارد نشود، حالت فعلی نمایش داده میشود.
حالتهای زیر معتبر هستند: concise، normal، silent، verbose و هر حالت سفارشی ایجادشده با دستور /set mode.
- format mode field "format-string" selector
- قالب بازخورد ارائهشده در پاسخ به ورودی را تنظیم میکند. اگر حالتی وارد نشود، قالبهای فعلی برای تمام فیلدها در همه حالتهای بازخورد نمایش داده میشوند. اگر فقط یک حالت وارد شود، قالبهای فعلی برای آن حالت نمایش مییابند. اگر فقط حالت و فیلد وارد شوند، قالبهای فعلی برای آن فیلد نمایش داده میشوند.
برای تعریف یک قالب، آرگومانهای زیر الزامی هستند:
- mode
- حالت بازخوردی را مشخص میکند که قالب پاسخ بر آن اعمال میشود. تنها حالتهای سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
- field
- فیلد وابسته به زمینهای را مشخص میکند که قالب پاسخ بر آن اعمال میشود. فیلدها در راهنمای برخط شرح داده شدهاند که از طریق JShell با دستور /help /set format در دسترس است.
- "format-string"
- رشتهای را مشخص میکند که به عنوان قالب پاسخ برای فیلد و گزینشگر (selector) تعیینشده استفاده میشود. ساختار رشته قالب در راهنمای برخط شرح داده شده است که از طریق JShell با دستور /help /set format در دسترس است.
- selector
- زمینهای را مشخص میکند که در آن قالب پاسخ اعمال میشود. گزینشگرها در راهنمای برخط شرح داده شدهاند که از طریق JShell با دستور /help /set format در دسترس است.
- mode [mode-name] [existing-mode] [options]
- یک حالت بازخورد سفارشی با نام حالت ارائهشده ایجاد میکند. اگر نام حالتی وارد نشود، تنظیمات همه حالتها نمایش داده میشود که شامل تنظیمات حالت، اعلان، قالب و کوتاهسازی است. اگر نام یک حالت موجود ارائه شود، تنظیمات آن حالت موجود در حالت در حال ساخت کپی میشود.
گزینههای زیر معتبر هستند:
- -command|-quiet
- سطح بازخورد نمایش دادهشده برای دستورات هنگام استفاده از این حالت را مشخص میکند. این گزینه هنگام ایجاد یک حالت بازخورد الزامی است. از -command برای نمایش اطلاعات و بازخورد اعتبارسنجی برای دستورات استفاده کنید. از -quiet برای نمایش تنها بازخوردهای ضروری برای دستورات، مانند پیامهای خطا، استفاده کنید.
- -delete
- حالت بازخورد نامبردهشده را برای این نشست حذف میکند. نام حالتی که باید حذف شود الزامی است. برای حذف دائمی یک حالت نگهداریشده، از گزینه -retain همراه با این گزینه استفاده کنید. حالتهای از پیش تعریفشده قابل حذف نیستند.
- -retain
- حالت بازخورد نامبردهشده را در طول نشستها ذخیره میکند. نام حالتی که باید نگهداری شود الزامی است.
حالت بازخورد جدید را با استفاده از دستورات /set prompt، /set format و /set truncation پیکربندی کنید.
برای شروع استفاده از حالت جدید، از دستور /set feedback استفاده کنید.
- prompt mode "prompt-string" "continuation-prompt-string"
- اعلانها را برای ورودی درون JShell تنظیم میکند. اگر حالتی وارد نشود، اعلانهای فعلی برای تمام حالتهای بازخورد نمایش داده میشوند. اگر فقط یک حالت وارد شود، اعلانهای فعلی برای آن حالت نمایش مییابند.
برای تعریف اعلان، آرگومانهای زیر الزامی هستند:
- mode
- حالت بازخوردی را مشخص میکند که اعلانها بر آن اعمال میشوند. تنها حالتهای سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
- "prompt-string"
- رشتهای را مشخص میکند که به عنوان اعلان برای خط اول ورودی استفاده میشود.
- "continuation-prompt-string"
- رشتهای را مشخص میکند که به عنوان اعلان برای خطوط ورودی اضافی مورد نیاز برای تکمیل یک قطعهکد استفاده میشود.
- start [-retain] [file [file...]|option]
- نام اسکریپتهای راهاندازی مورد استفاده هنگام اجرای دستور بعدی /reset، /reload یا /env را تنظیم میکند. اگر بیش از یک اسکریپت وارد شود، اسکریپتها به ترتیبی که وارد شدهاند اجرا میشوند. اگر هیچ اسکریپت یا گزینهای وارد نشود، تنظیمات راهاندازی فعلی نمایش داده میشوند.
اسکریپتها میتوانند فایلهای محلی یا یکی از اسکریپتهای از پیش تعریفشده زیر باشند:
- DEFAULT
- موردهای پیشفرض را بارگذاری میکند که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را ایمپورت میکند.
- PRINTING
- متدهای print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند.
گزینههای زیر معتبر هستند:
- -default
- تنظیمات راهاندازی را روی تنظیمات پیشفرض قرار میدهد.
- -none
- مشخص میکند که هیچ تنظیم راهاندازی استفاده نشود.
از گزینه -retain برای ذخیره تنظیم شروع در طول نشستها استفاده کنید.
- truncation mode length selector
- حداکثر طول یک مقدار نمایشدادهشده را تنظیم میکند. اگر حالتی وارد نشود، مقادیر کوتاهسازی فعلی برای تمام حالتهای بازخورد نمایش داده میشوند. اگر فقط یک حالت وارد شود، مقادیر کوتاهسازی فعلی برای آن حالت نمایش مییابند.
برای تعریف مقادیر کوتاهسازی، آرگومانهای زیر الزامی هستند:
- mode
- حالت بازخوردی را مشخص میکند که مقدار کوتاهسازی بر آن اعمال میشود. تنها حالتهای سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
- length
- عدد صحیح بدون علامتی را مشخص میکند که به عنوان حداکثر طول برای گزینشگر تعیینشده استفاده میشود.
- selector
- زمینهای را مشخص میکند که در آن مقدار کوتاهسازی اعمال میشود. گزینشگرها در راهنمای برخط شرح داده شدهاند که از طریق JShell با دستور /help /set truncation در دسترس است.
- /types [option]
- کلاسها، اینترفیسها و enumهای واردشده را نمایش میدهد. اگر گزینهای وارد نشود، تمام کلاسها، اینترفیسها و enumهای فعال فعلی نمایش داده میشوند.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- اطلاعات کلاسها، اینترفیسها و enumهای مشخصشده با نام، شناسه یا بازه شناسه را نمایش میدهد. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- -all
- اطلاعات تمام کلاسها، اینترفیسها و enumها را نمایش میدهد، از جمله مواردی که هنگام شروع JShell اضافه شدهاند و مواردی که ناموفق بودهاند، بازنویسی شدهاند یا حذف شدهاند.
- -start
- اطلاعات کلاسها، اینترفیسها و enumهای راهاندازی که هنگام شروع JShell اضافه شدهاند را نمایش میدهد.
- /vars [option]
- نام، نوع و مقدار متغیرهای واردشده را نمایش میدهد. اگر گزینهای وارد نشود، تمام متغیرهای فعال فعلی نمایش داده میشوند.
گزینههای زیر معتبر هستند:
- {name|id|startID-endID} [{name|id|startID-endID}...]
- اطلاعات متغیرهای مشخصشده با نام، شناسه یا بازه شناسه را نمایش میدهد. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- -all
- اطلاعات تمام متغیرها را نمایش میدهد، از جمله متغیرهایی که هنگام شروع JShell اضافه شدهاند و متغیرهایی که ناموفق بودهاند، بازنویسی شدهاند یا حذف شدهاند.
- -start
- اطلاعات متغیرهای راهاندازی که هنگام شروع JShell اضافه شدهاند را نمایش میدهد.
- /?
- مشابه دستور /help.
- /!
- آخرین قطعهکد را مجدداً اجرا میکند.
- /{name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدهای مشخصشده با شناسه، بازهای از شناسهها یا نام را مجدداً اجرا میکند. برای بازهای از شناسهها، شناسه شروع و شناسه پایان را با خط تیره جدا کنید. برای ارائه لیست، موارد را با فاصله جدا نمایید. اولین مورد در لیست باید شناسه یا بازه شناسه باشد. برای دیدن شناسههای قطعهکدها از دستور /list استفاده کنید.
- /-n
- قطعهکد -nام قبلی را مجدداً اجرا میکند. برای مثال، اگر ۱۵ قطعهکد وارد شده باشد، دستور /-4 قطعهکد یازدهم را اجرا میکند. دستورات در شمارش لحاظ نمیشوند.
میانبرهای ورودی (INPUT SHORTCUTS)
میانبرهای زیر برای وارد کردن دستورات و قطعهکدها در JShell در دسترس هستند.
تکمیل خودکار با کلید Tab
- <tab>
- هنگام وارد کردن قطعهکدها، دستورات، زیردستورات، آرگومانهای دستور یا گزینههای دستور، از کلید Tab برای تکمیل خودکار مورد استفاده کنید. اگر مورد بر اساس آنچه وارد شده قابل تشخیص نباشد، گزینههای ممکن ارائه میشوند.
هنگام وارد کردن فراخوانی یک متد، از کلید Tab پس از پرانتز باز فراخوانی متد استفاده کنید تا پارامترهای متد را مشاهده نمایید. اگر متد دارای بیش از یک امضا (signature) باشد، تمام امضاها نمایش داده میشوند. فشردن کلید Tab برای بار دوم، توضیحات متد و پارامترها را برای اولین امضا نمایش میدهد. برای دیدن توضیحات هر امضای اضافی، به فشردن کلید Tab ادامه دهید.
- Shift+<Tab> V
- پس از وارد کردن یک عبارت کامل، از این ترکیب کلید برای تبدیل عبارت به اعلان متغیر از نوعی که توسط نوع عبارت تعیین میشود، استفاده کنید.
- Shift+<Tab> M
- پس از وارد کردن یک عبارت یا دستور کامل، از این ترکیب کلید برای تبدیل عبارت یا دستور به اعلان متد استفاده کنید. اگر یک عبارت وارد شده باشد، نوع بازگشتی بر اساس نوع عبارت خواهد بود.
- Shift+<Tab> I
- هنگامی که یک شناسه وارد شده که قابل حل نیست، از این ترکیب کلید استفاده کنید تا ایمپورتهای ممکن که شناسه را بر اساس محتوای مسیر کلاس مشخصشده حل میکنند، نشان داده شوند.
مخففهای دستورات
مخفف یک دستور در صورتی پذیرفته میشود که به طور منحصربهفرد یک دستور را مشخص کند. برای مثال، /l به عنوان دستور /list شناخته میشود. با این حال، /s یک مخفف معتبر نیست زیرا مشخص نیست که منظور دستور /set است یا /save. از /se برای دستور /set یا از /sa برای دستور /save استفاده کنید.
مخففها همچنین برای زیردستورات، آرگومانهای دستور و گزینههای دستور پذیرفته میشوند. برای مثال، از /m -a برای نمایش همه متدها استفاده کنید.
پیمایش در تاریخچه
تاریخچه موارد واردشده در طول نشستها نگهداری میشود. از کلیدهای جهتنمای بالا و پایین برای پیمایش در میان دستورات و قطعهکدهای نشست جاری و گذشته استفاده کنید. از کلید Ctrl همراه با جهتنماهای بالا و پایین برای پرش از تمام خطوط به جز خط اول قطعهکدهای چندخطی استفاده کنید.
جستجو در تاریخچه
از ترکیب کلیدهای Ctrl+R برای جستجوی رشته واردشده در تاریخچه استفاده کنید. اعلان برای نمایش رشته و مورد منطبق تغییر میکند. ترکیب Ctrl+R از مکان فعلی در تاریخچه به سمت عقب و میان ورودیهای قبلی جستجو میکند. ترکیب Ctrl+S از مکان فعلی در تاریخچه به سمت جلو و میان ورودیهای بعدی جستجو میکند.
ویرایش ورودی (INPUT EDITING)
قابلیتهای ویرایش JShell شبیه به دیگر شلهای رایج است. کلیدها و ترکیبهای کلیدی صفحهکلید میانبرهای ویرایش خط را فراهم میکنند. کلیدهای Ctrl و Meta در ترکیبهای کلیدی استفاده میشوند. اگر صفحهکلید شما کلید Meta ندارد، کلید Alt معمولاً برای ارائه قابلیت کلید Meta نگاشت میشود.
| کلید یا ترکیب کلیدی | عملیات |
| Return | خط جاری را وارد میکند. |
| کلید جهتنمای چپ | مکاننما را یک کاراکتر به چپ میبرد. |
| کلید جهتنمای راست | مکاننما را یک کاراکتر به راست میبرد. |
| Ctrl+A | مکاننما را به ابتدای خط میبرد. |
| Ctrl+E | مکاننما را به انتهای خط میبرد. |
| Meta+B | مکاننما را یک کلمه به چپ میبرد. |
| Meta+F | مکاننما را یک کلمه به راست میبرد. |
| Delete | کاراکتر زیر مکاننما را حذف میکند. |
| Backspace | کاراکتر قبل از مکاننما را حذف میکند. |
| Ctrl+K | متن از مکاننما تا انتهای خط را حذف میکند. |
| Meta+D | متن از مکاننما تا انتهای کلمه را حذف میکند. |
| Ctrl+W | متن از مکاننما تا فاصله سفید قبلی را حذف میکند. |
| Ctrl+Y | آخرین متن حذفشده را درون خط جایگذاری میکند. |
| Meta+Y | پس از Ctrl+Y، برای گردش میان متنهای قبلاً حذفشده فشار داده میشود. |
مثالهایی از شروع و پایان نشست JSHELL (EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION)
ابزار JShell همراه با JDK ارائه میشود. برای شروع یک نشست، jshell را در خط فرمان وارد کنید. یک پیام خوشآمدگویی چاپ شده و اعلانی برای ورود دستورات و قطعهکدها ارائه میشود.
-
% jshell | Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell>
برای مشاهده اینکه چه قطعهکدهایی هنگام شروع JShell به طور خودکار بارگذاری شدهاند، از دستور /list -start استفاده کنید. قطعهکدهای راهاندازی پیشفرض، دستورات import برای بستههای رایج هستند. شناسه هر قطعهکد با حرف s شروع میشود که نشاندهنده یک قطعهکد راهاندازی (startup) است.
-
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>
برای پایان دادن به نشست، از دستور /exit استفاده کنید.
-
jshell> /exit | Goodbye %
مثالهایی از وارد کردن قطعهکدها (EXAMPLE OF ENTERING SNIPPETS)
قطعهکدها شامل دستورات جاوا، تعاریف متغیرها، تعاریف متدها، تعاریف کلاسها، دستورات import و عبارتها هستند. نقطه ویرگولهای پایانی در صورت جا افتادن، به طور خودکار به انتهای یک قطعهکد کاملشده اضافه میشوند.
مثال زیر تعریف دو متغیر و یک متد، و سپس اجرای متد را نشان میدهد. توجه داشته باشید که یک متغیر موقت (scratch variable) به طور خودکار برای نگهداری نتیجه ایجاد میشود زیرا هیچ متغیری مشخص نشده بود.
-
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
مثالهایی از تغییر قطعهکدها (EXAMPLE OF CHANGING SNIPPETS)
تعریف یک متغیر، متد یا کلاس را با وارد کردن مجدد آن تغییر دهید.
مثالهای زیر تعریف یک متد و اجرای آن را نشان میدهند:
-
jshell> String grade(int testScore) { ...> if (testScore >= 90) { ...> return "Pass"; ...> } ...> return "Fail"; ...> } | created method grade(int) jshell> grade(88) $3 ==> "Fail"
برای تغییر متد grade جهت قبولی تعداد بیشتری از دانشجویان، تعریف متد را مجدداً وارد کرده و نمره قبولی را به 80 تغییر دهید. از کلید جهتنمای بالا برای بازیابی ورودیهای قبلی استفاده کنید تا از ورود مجدد آنها بینیاز شوید و تغییر را در عبارت if اعمال نمایید. مثال زیر تعریف جدید را نشان داده و متد را مجدداً اجرا میکند تا نتیجه جدید را نمایش دهد:
-
jshell> String grade(int testScore) { ...> if (testScore >= 80) { ...> return "Pass"; ...> } ...> return "Fail"; ...> } | modified method grade(int) jshell> grade(88) $5 ==> "Pass"
برای قطعهکدهایی که بیش از چند خط طول دارند، یا برای اعمال تغییرات بیشتر، از دستور /edit برای باز کردن قطعهکد در یک ویرایشگر استفاده کنید. پس از اتمام تغییرات، پنجره ویرایش را ببندید تا کنترل به نشست JShell بازگردد. مثال زیر دستور و بازخورد ارائهشده هنگام بسته شدن پنجره ویرایش را نشان میدهد. از دستور /list برای نشان دادن اینکه نمره قبولی به 85 تغییر یافته، استفاده شده است.
-
jshell> /edit grade | modified method grade(int) jshell> /list grade 6 : String grade(int testScore) { if (testScore >= 85) { return "Pass"; } return "Fail"; }
مثال ساخت حالت بازخورد سفارشی (EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE)
حالت بازخورد تعیینکننده اعلانی است که نمایش داده میشود، پیامهای بازخوردی که با ورود قطعهکدها ارائه میشوند و حداکثر طول یک مقدار نمایشدادهشده است. حالتهای بازخورد از پیش تعریفشده ارائه شدهاند. دستوراتی برای ایجاد حالتهای بازخورد سفارشی نیز فراهم شده است.
از دستور /set mode برای ایجاد یک حالت بازخورد جدید استفاده کنید. در مثال زیر، حالت جدید mymode بر اساس حالت بازخورد از پیش تعریفشده normal ایجاد شده و بازخورد اعتبارسنجی دستورات نمایش داده میشود:
-
jshell> /set mode mymode normal -command | Created new feedback mode: mymode
از آنجا که حالت جدید بر اساس حالت normal است، اعلانها یکسان هستند. مثال زیر نحوه مشاهده اعلانهای مورد استفاده و سپس تغییر اعلانها به رشتههای سفارشی را نشان میدهد. رشته اول نشاندهنده اعلان استاندارد JShell است. رشته دوم نشاندهنده اعلان برای خطوط اضافی در قطعهکدهای چندخطی است.
-
jshell> /set prompt mymode | /set prompt mymode "\njshell> " " ...> " jshell> /set prompt mymode "\nprompt$ " " continue$ "
حداکثر طول یک مقدار نمایشدادهشده با تنظیمات کوتاهسازی (truncation) کنترل میشود. انواع مختلف مقادیر میتوانند طولهای متفاوتی داشته باشند. مثال زیر مقدار کوتاهسازی کلی ۷۲ و مقدار کوتاهسازی ۵۰۰ را برای عبارتهای مقدار متغیر تنظیم میکند:
-
jshell> /set truncation mymode 72 jshell> /set truncation mymode 500 varvalue
بازخورد نمایشدادهشده پس از ورود قطعهکدها توسط تنظیمات قالب کنترل میشود و بر اساس نوع قطعهکد واردشده و عملیات انجامشده برای آن قطعهکد است. در حالت از پیش تعریفشده normal، هنگام ایجاد یک متد رشته created نمایش داده میشود. مثال زیر نحوه تغییر آن رشته به defined را نشان میدهد:
-
jshell> /set format mymode action "defined" added-primary
از دستور /set feedback برای شروع استفاده از حالت بازخوردی که ساخته شد استفاده کنید. مثال زیر حالت سفارشی را در حال استفاده نشان میدهد:
-
jshell> /set feedback mymode | Feedback mode: mymode prompt$ int square (int num1){ continue$ return num1*num1; continue$ } | defined method square(int) prompt$
| 2021 | JDK 17 |