| JSHELL(1) | JDK Commands | JSHELL(1) |
نام (NAME)
jshell - ارزیابی تعاملی اعلانها، دستورها و عبارتهای زبان برنامهنویسی Java در یک حلقه خواندن-ارزیابی-چاپ (REPL)
خلاصه دستور (SYNOPSIS)
jshell [options] [load-files]
- options
- گزینههای خط فرمان، جداشده با فاصله. بخش گزینههای jshell را ببینید.
- load-files
- یک یا چند اسکریپت برای اجرا هنگام شروع به کار ابزار. اسکریپتها میتوانند شامل هر قطعهکد معتبر یا دستورهای JShell باشند.
- DEFAULT
- ورودیهای پیشفرض را بارگذاری میکند، که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را وارد (import) میکند.
- PRINTING
- توابع print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند.
- TOOLING
- متدهای javac، jar و سایر متدها را برای اجرای ابزارهای JDK از طریق رابط خط فرمان آنها درون ابزار jshell تعریف میکند. برای بیش از یک اسکریپت، از فاصله برای جداسازی نامها استفاده کنید. اسکریپتها به همان ترتیبی که در خط فرمان وارد شدهاند اجرا میشوند. اسکریپتهای خط فرمان پس از اسکریپتهای راهاندازی (startup) اجرا میشوند. برای اجرای یک اسکریپت پس از شروع JShell، از دستور /open استفاده کنید. برای پذیرش ورودی از ورودی استاندارد (standard input) و غیرفعال کردن ورودی/خروجی تعاملی، یک خط تیره (-) برای load-files وارد کنید. این گزینه امکان استفاده از ابزار jshell را در زنجیرههای خط لوله (pipe) فراهم میکند.
توضیحات (DESCRIPTION)
ابزار JShell روشی برای ارزیابی تعاملی اعلانها، دستورها و عبارتهای زبان برنامهنویسی Java فراهم میکند، و یادگیری زبان، کاوش در کدها و APIهای ناآشنا و پیشنمونهسازی کدهای پیچیده را آسانتر میسازد. دستورهای Java، تعاریف متغیرها، تعاریف متدها، تعاریف کلاسها، دستورهای import و عبارتها پذیرفته میشوند. تکهکدهای وارد شده، قطعهکد (snippet) نامیده میشوند.
با ورود قطعهکدها، آنها ارزیابی شده و بازخورد ارائه میشود. بسته به قطعهکد وارد شده و حالت بازخورد انتخابشده، بازخوردها از نتایج و توضیحات عملیات گرفته تا هیچچیز متغیر است. خطاها صرفنظر از حالت بازخورد، توضیح داده میشوند. هنگام یادگیری این ابزار، کار را با حالت پرگو (verbose) آغاز کنید تا بیشترین بازخورد را دریافت نمایید.
گزینههای خط فرمان برای پیکربندی محیط اولیه در زمان راهاندازی JShell در دسترس هستند. درون JShell، دستورهایی برای تغییر محیط بر حسب نیاز وجود دارد.
قطعهکدهای موجود را میتوان از یک فایل برای مقداردهی اولیه یک نشست JShell یا در هر زمان از نشست بارگذاری کرد. قطعهکدها را میتوان درون نشست تغییر داد تا حالتهای گوناگون را بررسی کرده و اصلاحات انجام داد. برای نگهداشتن قطعهکدها جهت استفادههای بعدی، آنها را در یک فایل ذخیره کنید.
گزینههای JSHELL (OPTIONS FOR JSHELL)
- --add-exports module/package
- بستهای را مشخص میکند تا به عنوان صادرشده از ماژول تعریفکنندهاش در نظر گرفته شود.
- --add-modules module[,module...]
- ماژولهای ریشه را برای تحلیل علاوه بر ماژول اولیه مشخص میکند.
- -Cflag
- مقدار flag را به کامپایلر Java درون JShell منتقل میکند. برای نمونه، -C-Xlint تمامی هشدارهای توصیهشده lint را فعال میکند، و -C--release=<N> کدی برای Java SE N کامپایل میکند، درست همانطور که --release N مشخص شده باشد.
- --class-path path
- دایرکتوریها و بایگانیهایی که برای یافتن فایلهای کلاس جستجو میشوند را مشخص میکند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را باطل (override) میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو میشود. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از یک نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- --enable-preview
- امکان وابستگی کد به ویژگیهای پیشنمایش (preview features) این نسخه را فراهم میکند.
- --execution specification
- یک موتور اجرای جایگزین را مشخص میکند که در آن specification یک مشخصه ExecutionControl است. برای ساختار نحوی مشخصه، مستندات بسته jdk.jshell.spi را ببینید.
- --feedback mode
- سطح اولیه بازخورد ارائهشده در پاسخ به ورودیها را تنظیم میکند. سطح اولیه را میتوان در طول نشست با استفاده از دستور /set feedback mode تغییر داد. پیشفرض normal است.
- verbose
- بازخورد مفصلی برای ورودیها ارائه میدهد. اطلاعات بیشتر درباره عملیات انجامشده پس از نتیجه عملیات نمایش داده میشود. اعلان ورودی (prompt) بعدی با یک خط خالی از بازخورد جدا میشود.
- normal
- میزان بازخورد متوسطی ارائه میدهد. اعلان ورودی بعدی با یک خط خالی از بازخورد جدا میشود.
- concise
- حداقل بازخورد را ارائه میدهد. اعلان ورودی بعدی بلافاصله پس از قطعهکد یا بازخورد قرار میگیرد.
- silent
- هیچ بازخوردی ارائه نمیدهد. اعلان ورودی بعدی بلافاصله پس از قطعهکد قرار میگیرد.
- custom
- بر اساس نحوه تعریف حالت، بازخورد سفارشی ارائه میدهد. حالتهای بازخورد سفارشی درون JShell با استفاده از دستور /set mode ساخته میشوند.
- --help یا -h یا -?
- خلاصهای از گزینههای استاندارد را چاپ کرده و از ابزار خارج میشود.
- --help-extra یا -X
- خلاصهای از گزینههای غیراستاندارد را چاپ کرده و از ابزار خارج میشود. گزینههای غیراستاندارد ممکن است بدون اطلاع قبلی تغییر کنند.
- -Jflag
- مقدار flag را به سامانه زمان اجرا منتقل میکند، اما تأثیری بر اجرای قطعهکدها ندارد. برای تعیین پرچمهایی که بر اجرای قطعهکدها اثر میگذارند، از -Rflag استفاده کنید. همچنین میتوانید از -Jflag به همراه --execution local استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- --no-startup
- از اجرای اسکریپتهای راهاندازی هنگام شروع JShell جلوگیری میکند. از این گزینه برای اجرای صرف اسکریپتهای وارد شده در خط فرمان هنگام شروع JShell، یا برای شروع JShell بدون هیچ اطلاعات از پیش بارگذاریشده در صورت عدم ورود اسکریپت، استفاده کنید. اگر از گزینه --startup استفاده شود، نمیتوان این گزینه را به کار برد.
- -q
- حالت بازخورد را روی concise تنظیم میکند، که معادل وارد کردن --feedback concise است.
- -Rflag
- تنها در هنگام اجرای قطعهکدها، flag را به سامانه زمان اجرا منتقل میکند. برای نمونه، -R-Dfoo=bar به این معنی است که اجرای قطعهکد System.getProperty("foo") مقدار "bar" را بازمیگرداند.
- -s
- حالت بازخورد را روی silent تنظیم میکند، که معادل وارد کردن --feedback silent است.
- --show-version
- اطلاعات نسخه را چاپ کرده و وارد ابزار میشود.
- --startup file
- اسکریپت راهاندازی پیشفرض را برای این نشست جایگزین (override) میکند. اسکریپت میتواند شامل هر قطعهکد یا دستور معتبری باشد.
- DEFAULT
- ورودیهای پیشفرض را بارگذاری میکند، که معمولاً به عنوان import استفاده میشوند.
- JAVASE
- تمام بستههای Java SE را وارد (import) میکند.
- PRINTING
- توابع print، println و printf را به عنوان متدهای jshell برای استفاده درون ابزار تعریف میکند..TP TOOLING متدهای javac، jar و سایر متدها را برای اجرای ابزارهای JDK از طریق واسط خط فرمان آنها در ابزار jshell تعریف میکند. برای بیش از یک اسکریپت، برای هر اسکریپت یک نمونهٔ جداگانه از این گزینه ارائه دهید. اسکریپتهای راهاندازی هنگامی که JShell برای نخستین بار آغاز میشود و زمانی که نشست با دستورهای /reset، /reload یا /env بازراهاندازی میشود، اجرا میگردند. اسکریپتهای راهاندازی به همان ترتیبی که در خط فرمان وارد شدهاند اجرا میشوند. اگر از گزینهٔ --no-startup استفاده شود، نمیتوان از این گزینه استفاده کرد.
دستورات JSHELL (JSHELL COMMANDS)
درون ابزار jshell، از دستورات برای تغییر محیط و مدیریت قطعهکدها استفاده میشود.
- /drop {name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدهای مشخصشده بر اساس نام، شناسه یا بازهای از شناسهها را حذف کرده و آنها را غیرفعال میسازد. برای بازهای از شناسهها، شناسهٔ شروع و شناسهٔ پایان را با یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد فهرست را با فاصله جدا کنید. از دستور /list برای دیدن شناسههای قطعهکدها استفاده کنید.
- /edit [option]
- یک ویرایشگر باز میکند. اگر گزینهای وارد نشود، ویرایشگر با قطعهکدهای فعال باز میشود.
- {name|id|startID-endID} [{name|id|startID-endID}...]
- ویرایشگر را با قطعهکدهای مشخصشده بر اساس نام، شناسه یا بازهای از شناسهها باز میکند. برای بازهای از شناسهها، شناسهٔ شروع و شناسهٔ پایان را با یک خط پیوند جدا کنید. برای ارائهٔ یک فهرست، موارد درون فهرست را با فاصله جدا کنید. از دستور /list برای مشاهدهٔ شناسههای قطعهکدها استفاده کنید.
- -all
- ویرایشگر را با تمام قطعهکدها باز میکند، شامل قطعهکدهای راهاندازی و قطعهکدهایی که با شکست مواجه شده، بازنویسی شده یا حذف شدهاند.
- -start
- ویرایشگر را با قطعهکدهای راهاندازی که هنگام شروع JShell ارزیابی شدهاند باز میکند. برای خروج از حالت ویرایش، پنجرهٔ ویرایشگر را ببندید، یا در صورتی که گزینهٔ -wait هنگام تنظیم ویرایشگر استفاده شده است، به اعلان ارائهشده پاسخ دهید. از دستور /set editor برای تعیین ویرایشگر مورد استفاده بهره ببرید. اگر ویرایشگری تنظیم نشده باشد، متغیرهای محیطی زیر به ترتیب بررسی میشوند: JSHELLEDITOR، VISUAL و EDITOR. اگر هیچ ویرایشگری در JShell تعیین نشده باشد و هیچیک از متغیرهای محیطی ویرایشگر نیز تنظیم نشده باشند، یک ویرایشگر پیشفرض ساده به کار گرفته میشود.
- /env [options]
- تنظیمات محیط را نمایش میدهد، یا تنظیمات محیط را بهروزرسانی کرده و نشست را بازراهاندازی میکند. اگر هیچ گزینهای وارد نشود، تنظیمات فعلی محیط نمایش داده میشود. اگر یک یا چند گزینه وارد شود، نشست به شیوهٔ زیر بازراهاندازی میگردد:
- تنظیمات محیط را با گزینههای ارائهشده بهروزرسانی میکند.
- وضعیت اجرا را بازنشانی میکند.
- اسکریپتهای راهاندازی را اجرا میکند.
- تاریخچه را به ترتیبی که وارد شده است بدون خروجی اضافه (در سکوت) دوباره اجرا میکند. تاریخچه شامل تمام قطعهکدهای معتبر یا دستورات /drop واردشده در اعلان jshell، در اسکریپتهای خط فرمان، یا اسکریپتهای واردشده با دستور /open است. تنظیمات محیطی واردشده در خط فرمان یا ارائهشده با دستور پیشین /reset، /env یا /reload حفظ میشوند مگر آنکه یک option وارد شود که آن تنظیم را بازنویسی کند. گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را مشخص میکند تا علاوه بر ماژول اولیه برطرف (resolve) شوند.
- --add-exports source-module/package=target-module[,target-module]*
- یک برونبری از package را از source-module به target-module اضافه میکند.
- --class-path path
- دایرکتوریها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را بازنویسی میکند. اگر متغیر محیطی تنظیم نشده باشد و از این گزینه نیز استفاده نشود، دایرکتوری جاری جستجو میشود. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- /exit [integer-expression-snippet]
- از ابزار خارج میشود. اگر هیچ قطعهکدی وارد نشود، وضعیت خروج صفر خواهد بود. اگر یک قطعهکد وارد شود و نتیجهٔ آن یک عدد صحیح باشد، آن نتیجه بهعنوان وضعیت خروج استفاده میشود. اگر خطایی رخ دهد، یا نتیجهٔ قطعهکد یک عدد صحیح نباشد، خطایی نمایش داده میشود و ابزار فعال باقی میماند.
- /history
- آنچه را که در این نشست وارد شده است نمایش میدهد.
- /help [command|subject]
- اطلاعاتی را دربارهٔ دستورات و موضوعات نمایش میدهد. اگر هیچ گزینهای وارد نشود، خلاصهای از اطلاعات مربوط به تمام دستورات و فهرستی از موضوعات در دسترس نمایش داده میشود. اگر یک دستور معتبر ارائه شود، اطلاعات تفصیلی برای آن دستور نمایش مییابد. اگر یک موضوع معتبر وارد شود، اطلاعات مربوط به آن موضوع نمایش داده میشود.
- /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 را وارد (import) میکند.
- PRINTING
- print، println و printf را به عنوان متدهای jshell جهت استفاده در درون این ابزار تعریف میکند.
- TOOLING
- متدهای javac، jar و متدهای دیگری را برای اجرای ابزارهای JDK از طریق واسط خطفرمان آنها در ابزار jshell تعریف میکند.
- /reload [options]
- نشست را به شرح زیر بازراهاندازی میکند:
- تنظیمات محیط را با گزینههای ارائهشده (در صورت وجود) بهروزرسانی میکند.
- وضعیت اجرا را بازنشانی میکند.
- اسکریپتهای راهاندازی را اجرا میکند.
- تاریخچه را به ترتیبی که وارد شدهاند مجدداً بازپخش میکند. تاریخچه شامل تمام قطعهکدهای معتبر یا دستورات /drop واردشده در اعلان jshell، در اسکریپتهای واردشده از طریق خطفرمان، یا اسکریپتهای واردشده با دستور /open است. تنظیمات محیط واردشده در خطفرمان یا ارائهشده با دستور قبلی /reset، /env یا /reload حفظ میشوند مگر اینکه یک گزینه وارد شود که آن تنظیمات را بازنویسی کند. گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را برای تفکیک، علاوه بر ماژول اولیه مشخص میکند.
- --add-exports source-module/package=target-module[,target-module]*
- یک برونریزی (export) از package از source-module به target-module اضافه میکند.
- --class-path path
- دایرکتوریها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را لغو (override) میکند. اگر این متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، دایرکتوری جاری جستجو میشود. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- -quiet
- تاریخچهٔ معتبر را بدون نمایش آن بازپخش میکند. خطاها نمایش داده میشوند.
- -restore
- محیط را به وضعیت آغاز اجرای قبلی ابزار، یا به آخرین باری که دستور /reset، /reload یا /env در اجرای قبلی اجرا شده بود، بازنشانی میکند. تاریخچهٔ معتبر از آن نقطه به بعد مجدداً بازپخش میشود. از این گزینه برای بازیابی نشست قبلی JShell استفاده کنید.
- /reset [options]
- تمام قطعهکدهای واردشده را دور میریزد و نشست را به شرح زیر بازراهاندازی میکند:
- تنظیمات محیط را با گزینههای ارائهشده (در صورت وجود) بهروزرسانی میکند.
- وضعیت اجرا را بازنشانی میکند.
- اسکریپتهای راهاندازی را اجرا میکند. تاریخچه بازپخش نمیشود. تمام کدهایی که وارد شده بودند از دست میروند. تنظیمات محیط واردشده در خطفرمان یا ارائهشده با دستور قبلی /reset، /env یا /reload حفظ میشوند مگر اینکه یک گزینه وارد شود که آن تنظیمات را بازنویسی کند. گزینههای زیر معتبر هستند:
- --add-modules module[,module...]
- ماژولهای ریشه را برای تفکیک، علاوه بر ماژول اولیه مشخص میکند.
- --add-exports source-module/package=target-module[,target-module]*
- یک برونریزی (export) از package از source-module به target-module اضافه میکند.
- --class-path path
- دایرکتوریها و آرشیوهایی را مشخص میکند که برای یافتن فایلهای کلاس جستجو میشوند. این گزینه مسیر موجود در متغیر محیطی CLASSPATH را لغو (override) میکند. اگر این متغیر محیطی تنظیم نشده باشد و از این گزینه استفاده نشود، دایرکتوری جاری جستجو میشود. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- --module-path modulepath
- محل یافتن ماژولهای برنامه را مشخص میکند. برای Linux و macOS، از دونقطه (:) برای جداسازی موارد در مسیر استفاده کنید. برای Windows، از نقطهویرگول (;) برای جداسازی موارد استفاده کنید.
- /save [options] file
- قطعهکدها و دستورات را در فایل مشخصشده ذخیره میکند. اگر هیچ گزینهای وارد نشود، قطعهکدهای فعال ذخیره میشوند.
- {name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدها و دستوراتی را که بر اساس نام، شناسه (ID) یا بازهای از شناساگرها مشخص شدهاند، ذخیره میکند. برای بازهای از شناسهها، شناسهٔ آغازین و پایانی را که با یک خط تیره جدا شدهاند وارد کنید. برای ارائهٔ یک فهرست، موارد موجود در فهرست را با فاصله (space) جدا کنید. از دستور /list برای مشاهدهٔ شناسههای قطعهکدها استفاده کنید.
- -all
- همهٔ قطعهکدها، از جمله قطعهکدهای راهاندازی و مواردی را که بازنویسی شده یا ناموفق بودهاند، ذخیره میکند.
- -history
- تاریخچهٔ ترتیبی تمام دستورات و قطعهکدهای واردشده در نشست جاری را ذخیره میکند.
- -start
- تنظیمات راهاندازی جاری را ذخیره میکند. اگر هیچ اسکریپت راهاندازی ارائه نشده باشد، یک فایل خالی ذخیره میشود.
- /set [setting]
- اطلاعات پیکربندی، شامل ویرایشگر خارجی، تنظیمات راهاندازی و حالت بازخورد (feedback mode) را تنظیم میکند. این دستور همچنین برای ایجاد یک حالت بازخورد سفارشی با مقادیر اعلان (prompt)، قالب و کوتاهسازی سفارشی به کار میرود. اگر مقداری برای setting وارد نشود، تنظیمات جاری مربوط به ویرایشگر، تنظیمات راهاندازی و حالت بازخورد نمایش داده میشوند.
- editor [options] [command]
- دستوری را تنظیم میکند که هنگام وارد کردن دستور /edit برای راهاندازی یک ویرایشگر خارجی استفاده میشود. این دستور میتواند شامل آرگومانهای دستوری باشد که با فاصله جدا شدهاند. اگر هیچ دستور یا گزینهای وارد نشود، تنظیمات جاری نمایش داده میشود.
- -default
- ویرایشگر را روی ویرایشگر پیشفرضی که همراه JShell ارائه شده است تنظیم میکند. در صورتی که دستوری برای راهاندازی ویرایشگر وارد شده باشد، نمیتوان از این گزینه استفاده کرد.
- -delete
- ویرایشگر را به گزینهای که هنگام آغاز نشست فعال بود بازمیگرداند. اگر با گزینهٔ -retain استفاده شود، تنظیمات حفظشدهٔ ویرایشگر حذف میشود و ویرایشگر روی اولین متغیر محیطیِ یافتشده از میان متغیرهای زیر تنظیم میگردد: JSHELLEDITOR، VISUAL یا EDITOR. اگر هیچیک از متغیرهای محیطی ویرایشگر تنظیم نشده باشند، این گزینه ویرایشگر را روی ویرایشگر پیشفرض قرار میدهد.
- -retain
- تنظیمات ویرایشگر را برای تمام نشستهای بعدی ذخیره میکند. اگر گزینه یا دستور دیگری وارد نشود، تنظیمات جاری ذخیره میشود.
- -wait
- از کاربر میخواهد تا پایان ویرایش را اعلام کند. در غیر این صورت با خروج از ویرایشگر، کنترل به JShell بازمیگردد. اگر ویرایشگر مورد استفاده فوراً خارج میشود (برای نمونه، هنگامی که پنجرهٔ ویرایش از قبل باز است)، از این گزینه استفاده کنید. این گزینه تنها زمانی معتبر است که دستوری برای راهاندازی ویرایشگر وارد شده باشد.
- feedback [mode]
- حالت بازخوردِ مورد استفاده برای پاسخگویی به ورودی را تنظیم میکند. اگر هیچ حالتی وارد نشود، حالت جاری نمایش داده میشود.
- mode
- حالت بازخوردی را مشخص میکند که قالب پاسخ روی آن اعمال میشود. تنها حالتهای سفارشی ساختهشده با دستور /set mode را میتوان تغییر داد.
- field
- فیلد وابسته به زمینهای را مشخص میکند که قالب پاسخ روی آن اعمال میشود. فیلدها در راهنمای برخط شرح داده شدهاند که از طریق JShell با استفاده از دستور /help /set format در دسترس است.
- "format-string"
- رشتهای را مشخص میکند که باید بهعنوان قالب پاسخ برای فیلد و گزینشگر (selector) مشخصشده استفاده شود. ساختار رشتهٔ قالب در راهنمای برخط شرح داده شده است که از طریق JShell با استفاده از دستور /help /set format در دسترس است.
- selector
- زمینهای (context) را مشخص میکند که قالب پاسخ در آن اعمال میشود. گزینشگرها در راهنمای برخط شرح داده شدهاند که از طریق JShell با استفاده از دستور /help /set format در دسترس است.
- mode [mode-name] [existing-mode] [options]
- یک حالت بازخورد سفارشی با نام حالت ارائهشده ایجاد میکند. اگر هیچ نام حالتی وارد نشود، تنظیمات تمام حالتها نمایش داده میشود که شامل تنظیمات حالت، اعلان (prompt)، قالب و کوتاهسازی (truncation) است. اگر نام یک حالت موجود وارد شود، تنظیمات آن حالت موجود در حالت در حال ایجاد رونوشت میشود.
- -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 جهت استفاده در ابزار تعریف میکند.
- TOOLING
- متدهای javac، jar و سایر متدها را برای اجرای ابزارهای JDK از طریق واسط خط فرمان آنها در ابزار jshell تعریف میکند. گزینههای زیر معتبر هستند:
- -default
- تنظیمات راهاندازی را به تنظیمات پیشفرض بازمیگرداند.
- -none
- مشخص میکند که از هیچ تنظیمات راهاندازی استفاده نشود. از گزینهٔ -retain برای ذخیرهٔ تنظیمات راهاندازی در طول نشستها استفاده کنید.
- truncation mode length selector
- حداکثر طول یک مقدار نمایشدادهشده را تنظیم میکند. اگر هیچ حالتی وارد نشود، مقادیر کوتاهسازی فعلی برای تمام حالتهای بازخورد نمایش داده میشوند. اگر فقط یک حالت وارد شود، مقادیر کوتاهسازی فعلی برای آن حالت نمایش داده میشوند.
- mode
- حالت بازخوردی را مشخص میکند که مقدار کوتاهسازی روی آن اعمال میشود. تنها حالتهای سفارشی ایجادشده با دستور /set mode قابل تغییر هستند.
- length
- عدد صحیح بدون علامتی را مشخص میکند که بهعنوان بیشینهٔ طول برای گزینشگرِ تعیینشده استفاده میشود.
- selector
- زمینهای را مشخص میکند که مقدار کوتاهسازی در آن اعمال میشود. گزینشگرها در راهنمای برخط شرح داده شدهاند که از طریق JShell با استفاده از دستور /help /set truncation در دسترس است.
- /types [option]
- کلاسها، رابطها (interfaces) و 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.
- /!
- آخرین قطعهکد (snippet) را دوباره اجرا میکند.
- /{name|id|startID-endID} [{name|id|startID-endID}...]
- قطعهکدهای مشخصشده بر اساس شناسه (ID)، بازهای از شناسهها، یا نام را دوباره اجرا میکند. برای بازهای از شناسهها، شناسه آغازین و شناسه پایانی را با یک خط تیره جدا کنید. برای ارائه یک فهرست، موارد درون فهرست را با فاصله (space) جدا نمایید. نخستین مورد در فهرست باید یک شناسه یا بازهای از شناسهها باشد. برای دیدن شناسههای قطعهکدها، از دستور /list استفاده کنید.
- /-n
- قطعهکد -nام قبلی را دوباره اجرا میکند. برای نمونه، اگر ۱۵ قطعهکد وارد شده باشد، دستور /-4 قطعهکد یازدهم را اجرا میکند. دستورها در این شمارش به حساب نمیآیند.
میانبرهای ورودی (INPUT SHORTCUTS)
میانبرهای زیر برای وارد کردن دستورها و قطعهکدها در JShell در دسترس هستند.
تکمیل خودکار با کلید Tab (Tab completion)
- <tab>
- هنگام وارد کردن قطعهکدها، دستورها، زیردستورها، آرگومانهای دستور، یا گزینههای دستور، از کلید Tab برای تکمیل خودکار مورد استفاده کنید. اگر مورد بر اساس آنچه وارد شده قابل تشخیص نباشد، گزینههای ممکن نمایش داده میشوند.
- Shift+<Tab> V
- پس از وارد کردن یک عبارت (expression) کامل، از این توالی کلیدها برای تبدیل عبارت به اعلان یک متغیر (variable declaration) با نوعی که بر اساس نوع عبارت مشخص میشود، استفاده کنید.
- Shift+<Tab> M
- پس از وارد کردن یک عبارت یا دستور کامل (statement)، از این توالی کلیدها برای تبدیل عبارت یا دستور به اعلان یک متد (method declaration) استفاده کنید. اگر یک عبارت وارد شده باشد، نوع بازگشتی بر پایه نوع عبارت خواهد بود.
- Shift+<Tab> I
- هنگامی که شناسهای (identifier) وارد شود که قابل تفکیک و حل نیست، از این توالی کلیدها برای نمایش importهای ممکنی که بر اساس محتوای class path مشخصشده شناسه را حل میکنند، استفاده کنید.
کوتهنوشتهای دستور (Command abbreviations)
کوتهنوشت یک دستور در صورتی پذیرفته میشود که به طور یکتا یک دستور را مشخص کند. برای نمونه، /l به عنوان دستور /list شناخته میشود. با این حال، /s یک کوتهنوشت معتبر نیست زیرا نمیتوان تشخیص داد که منظور دستور /set است یا /save. از /se برای دستور /set یا از /sa برای دستور /save استفاده کنید.
کوتهنوشتها برای زیردستورها، آرگومانهای دستور، و گزینههای دستور نیز پذیرفته میشوند. برای نمونه، از /m -a برای نمایش همه متدها استفاده کنید.
پیمایش تاریخچه (History navigation)
تاریخچهای از ورودیها در تمام نشستها (sessions) نگهداری میشود. از کلیدهای جهتنمای بالا و پایین برای پیمایش میان دستورها و قطعهکدهای نشست جاری و نشستهای گذشته استفاده کنید. از کلید Ctrl همراه با کلیدهای جهتنمای بالا و پایین برای پرش از تمام خطوط به جز خط نخست در قطعهکدهای چندخطی استفاده کنید.
جستجو در تاریخچه (History search)
از ترکیب کلیدهای Ctrl+R برای جستجوی رشته واردشده در تاریخچه استفاده کنید. اعلان خط فرمان (prompt) تغییر میکند تا رشته و مورد منطبق را نمایش دهد. ترکیب Ctrl+R از موقعیت جاری در تاریخچه به سمت عقب و در میان ورودیهای قبلی جستجو میکند. ترکیب Ctrl+S از موقعیت جاری در تاریخچه به سمت جلو و در میان ورودیهای بعدی جستجو میکند.
ویرایش ورودی (INPUT EDITING)
قابلیتهای ویرایشی JShell مشابه سایر شلهای رایج است. کلیدها و ترکیبهای کلیدی صفحهکلید، میانبرهایی برای ویرایش خط فراهم میکنند. کلیدهای Ctrl و Meta در ترکیبهای کلیدی به کار میروند. اگر صفحهکلید شما فاقد کلید Meta است، کلید Alt اغلب برای ارائه عملکرد کلید Meta نگاشت میشود.
میانبرهای ویرایش خط
| کلید یا ترکیب کلیدها | عملیات |
| Return | وارد کردن خط جاری. |
| Left arrow | حرکت دادن مکاننما به اندازه یک نویسه به چپ. |
| Right arrow | حرکت دادن مکاننما به اندازه یک نویسه به راست. |
| Ctrl+A | حرکت دادن مکاننما به ابتدای خط. |
| Ctrl+E | حرکت دادن مکاننما به انتهای خط. |
| Meta+B | حرکت دادن مکاننما به اندازه یک کلمه به چپ. |
| Meta+F | حرکت دادن مکاننما به اندازه یک کلمه به راست. |
| Delete | حذف نویسه زیر مکاننما. |
| Backspace | حذف نویسه پیش از مکاننما. |
| Ctrl+K | حذف متن از مکاننما تا انتهای خط. |
| Meta+D | حذف متن از مکاننما تا انتهای کلمه. |
| Ctrl+W | حذف متن از مکاننما تا فاصله خالی (white space) قبلی. |
| 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 برای بستههای رایج هستند. | |
| شناسه (ID) هر قطعهکد با حرف 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 و عبارتهای محاسباتی (expressions) هستند. | |
| در صورتی که نقطهویرگول پایانی وجود نداشته باشد، به طور خودکار به انتهای | |
| یک قطعهکد کامل افزوده میشود. | |
| مثال زیر تعریف دو متغیر و یک متد، و سپس اجرای آن متد را | |
| نشان میدهد. | |
| توجه داشته باشید از آنجا که متغیری مشخص نشده بود، یک متغیر موقت (scratch) | |
| به طور خودکار برای نگهداری نتیجه ایجاد میشود. | |
| 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) کنترل میشود. | |
| انواع مختلف مقادیر میتوانند طولهای متفاوتی داشته باشند. | |
| مثال زیر مقدار کوتاهسازی کلی را روی 72 و مقدار کوتاهسازی را برای عبارتهای مقدار متغیر روی 500 تنظیم میکند: | |
| jshell> /set truncation mymode 72 | |
| jshell> /set truncation mymode 500 varvalue | |
| بازخورد نمایشدادهشده پس از ورود قطعهکدها توسط تنظیم قالببندی (format) کنترل میشود و بر اساس نوع قطعهکد واردشده و عملیات انجامشده روی آن است. | |
| در حالت از پیش تعریفشدهٔ 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$ | |
| 2026 | JDK 26.0.2.1 |