1 .\"t
   2 .\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
   3 .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 .\"
   5 .\" This code is free software; you can redistribute it and/or modify it
   6 .\" under the terms of the GNU General Public License version 2 only, as
   7 .\" published by the Free Software Foundation.
   8 .\"
   9 .\" This code is distributed in the hope that it will be useful, but WITHOUT
  10 .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 .\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 .\" version 2 for more details (a copy is included in the LICENSE file that
  13 .\" accompanied this code).
  14 .\"
  15 .\" You should have received a copy of the GNU General Public License version
  16 .\" 2 along with this work; if not, write to the Free Software Foundation,
  17 .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 .\"
  19 .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 .\" or visit www.oracle.com if you need additional information or have any
  21 .\" questions.
  22 .\"
  23 .\" Automatically generated by Pandoc 2.3.1
  24 .\"
  25 .TH "JSHELL" "1" "2018" "JDK 13" "JDK Commands"
  26 .hy
  27 .SH NAME
  28 .PP
  29 jshell \- interactively evaluate declarations, statements, and
  30 expressions of the Java programming language in a read\-eval\-print loop
  31 (REPL)
  32 .SH SYNOPSIS
  33 .PP
  34 \f[CB]jshell\f[R] [\f[I]options\f[R]] [\f[I]load\-files\f[R]]
  35 .TP
  36 .B \f[I]options\f[R]
  37 Command\-line options, separated by spaces.
  38 See \f[B]Options for jshell\f[R].
  39 .RS
  40 .RE
  41 .TP
  42 .B \f[I]load\-files\f[R]
  43 One or more scripts to run when the tool is started.
  44 Scripts can contain any valid code snippets or JShell commands.
  45 .RS
  46 .PP
  47 The script can be a local file or one of following predefined scripts:
  48 .TP
  49 .B \f[CB]DEFAULT\f[R]
  50 Loads the default entries, which are commonly used as imports.
  51 .RS
  52 .RE
  53 .TP
  54 .B \f[CB]JAVASE\f[R]
  55 Imports all Java SE packages.
  56 .RS
  57 .RE
  58 .TP
  59 .B \f[CB]PRINTING\f[R]
  60 Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
  61 \f[CB]jshell\f[R] methods for use within the tool.
  62 .RS
  63 .RE
  64 .PP
  65 For more than one script, use a space to separate the names.
  66 Scripts are run in the order in which they\[aq]re entered on the command
  67 line.
  68 Command\-line scripts are run after startup scripts.
  69 To run a script after JShell is started, use the \f[CB]/open\f[R] command.
  70 .PP
  71 To accept input from standard input and suppress the interactive I/O,
  72 enter a hyphen (\-) for \f[I]load\-files\f[R].
  73 This option enables the use of the \f[CB]jshell\f[R] tool in pipe chains.
  74 .RE
  75 .SH DESCRIPTION
  76 .PP
  77 JShell provides a way to interactively evaluate declarations,
  78 statements, and expressions of the Java programming language, making it
  79 easier to learn the language, explore unfamiliar code and APIs, and
  80 prototype complex code.
  81 Java statements, variable definitions, method definitions, class
  82 definitions, import statements, and expressions are accepted.
  83 The bits of code entered are called snippets.
  84 .PP
  85 As snippets are entered, they\[aq]re evaluated, and feedback is
  86 provided.
  87 Feedback varies from the results and explanations of actions to nothing,
  88 depending on the snippet entered and the feedback mode chosen.
  89 Errors are described regardless of the feedback mode.
  90 Start with the verbose mode to get the most feedback while learning the
  91 tool.
  92 .PP
  93 Command\-line options are available for configuring the initial
  94 environment when JShell is started.
  95 Within JShell, commands are available for modifying the environment as
  96 needed.
  97 .PP
  98 Existing snippets can be loaded from a file to initialize a JShell
  99 session, or at any time within a session.
 100 Snippets can be modified within the session to try out different
 101 variations and make corrections.
 102 To keep snippets for later use, save them to a file.
 103 .SH OPTIONS FOR JSHELL
 104 .TP
 105 .B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
 106 Specifies the root modules to resolve in addition to the initial module.
 107 .RS
 108 .RE
 109 .TP
 110 .B \f[CB]\-C\f[R]\f[I]flag\f[R]
 111 Provides a flag to pass to the compiler.
 112 To pass more than one flag, provide an instance of this option for each
 113 flag or flag argument needed.
 114 .RS
 115 .RE
 116 .TP
 117 .B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
 118 Specifies the directories and archives that are searched to locate class
 119 files.
 120 This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
 121 variable.
 122 If the environment variable isn\[aq]t set and this option isn\[aq]t
 123 used, then the current directory is searched.
 124 For Oracle Solaris, Linux, and macOS, use a colon (:) to separate items
 125 in the path.
 126 For Windows, use a semicolon (;) to separate items.
 127 .RS
 128 .RE
 129 .TP
 130 .B \f[CB]\-\-feedback\f[R] \f[I]mode\f[R]
 131 Sets the initial level of feedback provided in response to what\[aq]s
 132 entered.
 133 The initial level can be overridden within a session by using the
 134 \f[CB]/set\ feedback\f[R] \f[I]mode\f[R] command.
 135 The default is \f[CB]normal\f[R].
 136 .RS
 137 .PP
 138 The following values are valid for \f[I]mode\f[R]:
 139 .TP
 140 .B \f[CB]verbose\f[R]
 141 Provides detailed feedback for entries.
 142 Additional information about the action performed is displayed after the
 143 result of the action.
 144 The next prompt is separated from the feedback by a blank line.
 145 .RS
 146 .RE
 147 .TP
 148 .B \f[CB]normal\f[R]
 149 Provides an average amount of feedback.
 150 The next prompt is separated from the feedback by a blank line.
 151 .RS
 152 .RE
 153 .TP
 154 .B \f[CB]concise\f[R]
 155 Provides minimal feedback.
 156 The next prompt immediately follows the code snippet or feedback.
 157 .RS
 158 .RE
 159 .TP
 160 .B \f[CB]silent\f[R]
 161 Provides no feedback.
 162 The next prompt immediately follows the code snippet.
 163 .RS
 164 .RE
 165 .TP
 166 .B \f[I]custom\f[R]
 167 Provides custom feedback based on how the mode is defined.
 168 Custom feedback modes are created within JShell by using the
 169 \f[CB]/set\ mode\f[R] command.
 170 .RS
 171 .RE
 172 .RE
 173 .TP
 174 .B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R] or \f[CB]\-?\f[R]
 175 Prints a summary of standard options and exits the tool.
 176 .RS
 177 .RE
 178 .TP
 179 .B \f[CB]\-\-help\-extra\f[R] or \f[CB]\-X\f[R]
 180 Prints a summary of nonstandard options and exits the tool.
 181 Nonstandard options are subject to change without notice.
 182 .RS
 183 .RE
 184 .TP
 185 .B \f[CB]\-J\f[R]\f[I]flag\f[R]
 186 Provides a flag to pass to the runtime system.
 187 To pass more than one flag, provide an instance of this option for each
 188 flag or flag argument needed.
 189 .RS
 190 .RE
 191 .TP
 192 .B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
 193 Specifies where to find application modules.
 194 For Oracle Solaris, Linux, and macOS, use a colon (:) to separate items
 195 in the path.
 196 For Windows, use a semicolon (;) to separate items.
 197 .RS
 198 .RE
 199 .TP
 200 .B \f[CB]\-\-no\-startup\f[R]
 201 Prevents startup scripts from running when JShell starts.
 202 Use this option to run only the scripts entered on the command line when
 203 JShell is started, or to start JShell without any preloaded information
 204 if no scripts are entered.
 205 This option can\[aq]t be used if the \f[CB]\-\-startup\f[R] option is
 206 used.
 207 .RS
 208 .RE
 209 .TP
 210 .B \f[CB]\-q\f[R]
 211 Sets the feedback mode to \f[CB]concise\f[R], which is the same as
 212 entering \f[CB]\-\-feedback\ concise\f[R].
 213 .RS
 214 .RE
 215 .TP
 216 .B \f[CB]\-R\f[R]\f[I]flag\f[R]
 217 Provides a flag to pass to the remote runtime system.
 218 To pass more than one flag, provide an instance of this option for each
 219 flag or flag argument to pass.
 220 .RS
 221 .RE
 222 .TP
 223 .B \f[CB]\-s\f[R]
 224 Sets the feedback mode to \f[CB]silent\f[R], which is the same as entering
 225 \f[CB]\-\-feedback\ silent\f[R].
 226 .RS
 227 .RE
 228 .TP
 229 .B \f[CB]\-\-show\-version\f[R]
 230 Prints version information and enters the tool.
 231 .RS
 232 .RE
 233 .TP
 234 .B \f[CB]\-\-startup\f[R] \f[I]file\f[R]
 235 Overrides the default startup script for this session.
 236 The script can contain any valid code snippets or commands.
 237 .RS
 238 .PP
 239 The script can be a local file or one of the following predefined
 240 scripts:
 241 .TP
 242 .B \f[CB]DEFAULT\f[R]
 243 Loads the default entries, which are commonly used as imports.
 244 .RS
 245 .RE
 246 .TP
 247 .B \f[CB]JAVASE\f[R]
 248 Imports all Java SE packages.
 249 .RS
 250 .RE
 251 .TP
 252 .B \f[CB]PRINTING\f[R]
 253 Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
 254 \f[CB]jshell\f[R] methods for use within the tool.
 255 .RS
 256 .RE
 257 .PP
 258 For more than one script, provide a separate instance of this option for
 259 each script.
 260 Startup scripts are run when JShell is first started and when the
 261 session is restarted with the \f[CB]/reset\f[R], \f[CB]/reload\f[R], or
 262 \f[CB]/env\f[R] command.
 263 Startup scripts are run in the order in which they\[aq]re entered on the
 264 command line.
 265 .PP
 266 This option can\[aq]t be used if the \f[CB]\-\-no\-startup\f[R] option is
 267 used.
 268 .RE
 269 .TP
 270 .B \f[CB]\-v\f[R]
 271 Sets the feedback mode to \f[CB]verbose\f[R], which is the same as
 272 entering \f[CB]\-\-feedback\ verbose\f[R].
 273 .RS
 274 .RE
 275 .TP
 276 .B \f[CB]\-\-version\f[R]
 277 Prints version information and exits the tool.
 278 .RS
 279 .RE
 280 .SH JSHELL COMMANDS
 281 .PP
 282 Within the \f[CB]jshell\f[R] tool, commands are used to modify the
 283 environment and manage code snippets.
 284 .TP
 285 .B \f[CB]/drop\f[R] {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 286 Drops snippets identified by name, ID, or ID range, making them
 287 inactive.
 288 For a range of IDs, provide the starting ID and ending ID separated with
 289 a hyphen.
 290 To provide a list, separate the items in the list with a space.
 291 Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
 292 .RS
 293 .RE
 294 .TP
 295 .B \f[CB]/edit\f[R] [\f[I]option\f[R]]
 296 Opens an editor.
 297 If no option is entered, then the editor opens with the active snippets.
 298 .RS
 299 .PP
 300 The following options are valid:
 301 .TP
 302 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 303 Opens the editor with the snippets identified by name, ID, or ID range.
 304 For a range of IDs, provide the starting ID and ending ID separated with
 305 a hyphen.
 306 To provide a list, separate the items in the list with a space.
 307 Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
 308 .RS
 309 .RE
 310 .TP
 311 .B \f[CB]\-all\f[R]
 312 Opens the editor with all snippets, including startup snippets and
 313 snippets that failed, were overwritten, or were dropped.
 314 .RS
 315 .RE
 316 .TP
 317 .B \f[CB]\-start\f[R]
 318 Opens the editor with startup snippets that were evaluated when JShell
 319 was started.
 320 .RS
 321 .RE
 322 .PP
 323 To exit edit mode, close the editor window, or respond to the prompt
 324 provided if the \f[CB]\-wait\f[R] option was used when the editor was set.
 325 .PP
 326 Use the \f[CB]/set\ editor\f[R] command to specify the editor to use.
 327 If no editor is set, then the following environment variables are
 328 checked in order: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], and
 329 \f[CB]EDITOR\f[R].
 330 If no editor is set in JShell and none of the editor environment
 331 variables is set, then a simple default editor is used.
 332 .RE
 333 .TP
 334 .B \f[CB]/env\f[R] [\f[I]options\f[R]]
 335 Displays the environment settings, or updates the environment settings
 336 and restarts the session.
 337 If no option is entered, then the current environment settings are
 338 displayed.
 339 If one or more options are entered, then the session is restarted as
 340 follows:
 341 .RS
 342 .IP \[bu] 2
 343 Updates the environment settings with the provided options.
 344 .IP \[bu] 2
 345 Resets the execution state.
 346 .IP \[bu] 2
 347 Runs the startup scripts.
 348 .IP \[bu] 2
 349 Silently replays the history in the order entered.
 350 The history includes all valid snippets or \f[CB]/drop\f[R] commands
 351 entered at the \f[CB]jshell\f[R] prompt, in scripts entered on the command
 352 line, or scripts entered with the \f[CB]/open\f[R] command.
 353 .PP
 354 Environment settings entered on the command line or provided with a
 355 previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
 356 maintained unless an \f[I]option\f[R] is entered that overwrites the
 357 setting.
 358 .PP
 359 The following options are valid:
 360 .TP
 361 .B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
 362 Specifies the root modules to resolve in addition to the initial module.
 363 .RS
 364 .RE
 365 .TP
 366 .B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
 367 Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
 368 \f[I]target\-module\f[R].
 369 .RS
 370 .RE
 371 .TP
 372 .B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
 373 Specifies the directories and archives that are searched to locate class
 374 files.
 375 This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
 376 variable.
 377 If the environment variable isn\[aq]t set and this option isn\[aq]t
 378 used, then the current directory is searched.
 379 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 380 separate items in the path.
 381 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 382 .RS
 383 .RE
 384 .TP
 385 .B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
 386 Specifies where to find application modules.
 387 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 388 separate items in the path.
 389 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 390 .RS
 391 .RE
 392 .RE
 393 .TP
 394 .B \f[CB]/exit\f[R] [\f[I]integer\-expression\-snippet\f[R]]
 395 Exits the tool.
 396 If no snippet is entered, the exit status is zero.
 397 If a snippet is entered and the result of the snippet is an integer, the
 398 result is used as the exit status.
 399 If an error occurs, or the result of the snippet is not an integer, an
 400 error is displayed and the tool remains active.
 401 .RS
 402 .RE
 403 .TP
 404 .B \f[CB]/history\f[R]
 405 Displays what was entered in this session.
 406 .RS
 407 .RE
 408 .TP
 409 .B \f[CB]/help\f[R] [\f[I]command\f[R]|\f[I]subject\f[R]]
 410 Displays information about commands and subjects.
 411 If no options are entered, then a summary of information for all
 412 commands and a list of available subjects are displayed.
 413 If a valid command is provided, then expanded information for that
 414 command is displayed.
 415 If a valid subject is entered, then information about that subject is
 416 displayed.
 417 .RS
 418 .PP
 419 The following values for \f[I]subject\f[R] are valid:
 420 .TP
 421 .B \f[CB]context\f[R]
 422 Describes the options that are available for configuring the
 423 environment.
 424 .RS
 425 .RE
 426 .TP
 427 .B \f[CB]intro\f[R]
 428 Provides an introduction to the tool.
 429 .RS
 430 .RE
 431 .TP
 432 .B \f[CB]shortcuts\f[R]
 433 Describes keystrokes for completing commands and snippets.
 434 See \f[B]Input Shortcuts\f[R].
 435 .RS
 436 .RE
 437 .RE
 438 .TP
 439 .B \f[CB]/imports\f[R]
 440 Displays the current active imports, including those from the startup
 441 scripts and scripts that were entered on the command line when JShell
 442 was started.
 443 .RS
 444 .RE
 445 .TP
 446 .B \f[CB]/list\f[R] [\f[I]option\f[R]]
 447 Displays a list of snippets and their IDs.
 448 If no option is entered, then all active snippets are displayed, but
 449 startup snippets aren\[aq]t.
 450 .RS
 451 .PP
 452 The following options are valid:
 453 .TP
 454 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 455 Displays the snippets identified by name, ID, or ID range.
 456 For a range of IDs, provide the starting ID and ending ID separated with
 457 a hyphen.
 458 To provide a list, separate the items in the list with a space.
 459 .RS
 460 .RE
 461 .TP
 462 .B \f[CB]\-all\f[R]
 463 Displays all snippets, including startup snippets and snippets that
 464 failed, were overwritten, or were dropped.
 465 IDs that begin with \f[CB]s\f[R] are startup snippets.
 466 IDs that begin with \f[CB]e\f[R] are snippets that failed.
 467 .RS
 468 .RE
 469 .TP
 470 .B \f[CB]\-start\f[R]
 471 Displays startup snippets that were evaluated when JShell was started.
 472 .RS
 473 .RE
 474 .RE
 475 .TP
 476 .B \f[CB]/methods\f[R] [\f[I]option\f[R]]
 477 Displays information about the methods that were entered.
 478 If no option is entered, then the name, parameter types, and return type
 479 of all active methods are displayed.
 480 .RS
 481 .PP
 482 The following options are valid:
 483 .TP
 484 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 485 Displays information for methods identified by name, ID, or ID range.
 486 For a range of IDs, provide the starting ID and ending ID separated with
 487 a hyphen.
 488 To provide a list, separate the items in the list with a space.
 489 Use the \f[CB]/list\f[R] command to see the IDs of code snippets.
 490 .RS
 491 .RE
 492 .TP
 493 .B \f[CB]\-all\f[R]
 494 Displays information for all methods, including those added when JShell
 495 was started, and methods that failed, were overwritten, or were dropped.
 496 .RS
 497 .RE
 498 .TP
 499 .B \f[CB]\-start\f[R]
 500 Displays information for startup methods that were added when JShell was
 501 started.
 502 .RS
 503 .RE
 504 .RE
 505 .TP
 506 .B \f[CB]/open\f[R] \f[I]file\f[R]
 507 Opens the script specified and reads the snippets into the tool.
 508 The script can be a local file or one of the following predefined
 509 scripts:
 510 .RS
 511 .TP
 512 .B \f[CB]DEFAULT\f[R]
 513 Loads the default entries, which are commonly used as imports.
 514 .RS
 515 .RE
 516 .TP
 517 .B \f[CB]JAVASE\f[R]
 518 Imports all Java SE packages.
 519 .RS
 520 .RE
 521 .TP
 522 .B \f[CB]PRINTING\f[R]
 523 Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
 524 \f[CB]jshell\f[R] methods for use within the tool.
 525 .RS
 526 .RE
 527 .RE
 528 .TP
 529 .B \f[CB]/reload\f[R] [\f[I]options\f[R]]
 530 Restarts the session as follows:
 531 .RS
 532 .IP \[bu] 2
 533 Updates the environment settings with the provided options, if any.
 534 .IP \[bu] 2
 535 Resets the execution state.
 536 .IP \[bu] 2
 537 Runs the startup scripts.
 538 .IP \[bu] 2
 539 Replays the history in the order entered.
 540 The history includes all valid snippets or \f[CB]/drop\f[R] commands
 541 entered at the \f[CB]jshell\f[R] prompt, in scripts entered on the command
 542 line, or scripts entered with the \f[CB]/open\f[R] command.
 543 .PP
 544 Environment settings entered on the command line or provided with a
 545 previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
 546 maintained unless an \f[I]option\f[R] is entered that overwrites the
 547 setting.
 548 .PP
 549 The following options are valid:
 550 .TP
 551 .B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
 552 Specifies the root modules to resolve in addition to the initial module.
 553 .RS
 554 .RE
 555 .TP
 556 .B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
 557 Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
 558 \f[I]target\-module\f[R].
 559 .RS
 560 .RE
 561 .TP
 562 .B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
 563 Specifies the directories and archives that are searched to locate class
 564 files.
 565 This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
 566 variable.
 567 If the environment variable isn\[aq]t set and this option isn\[aq]t
 568 used, then the current directory is searched.
 569 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 570 separate items in the path.
 571 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 572 .RS
 573 .RE
 574 .TP
 575 .B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
 576 Specifies where to find application modules.
 577 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 578 separate items in the path.
 579 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 580 .RS
 581 .RE
 582 .TP
 583 .B \f[CB]\-quiet\f[R]
 584 Replays the valid history without displaying it.
 585 Errors are displayed.
 586 .RS
 587 .RE
 588 .TP
 589 .B \f[CB]\-restore\f[R]
 590 Resets the environment to the state at the start of the previous run of
 591 the tool or to the last time a \f[CB]/reset\f[R], \f[CB]/reload\f[R], or
 592 \f[CB]/env\f[R] command was executed in the previous run.
 593 The valid history since that point is replayed.
 594 Use this option to restore a previous JShell session.
 595 .RS
 596 .RE
 597 .RE
 598 .TP
 599 .B \f[CB]/reset\f[R] [\f[I]options\f[R]]
 600 Discards all entered snippets and restarts the session as follows:
 601 .RS
 602 .IP \[bu] 2
 603 Updates the environment settings with the provided options, if any.
 604 .IP \[bu] 2
 605 Resets the execution state.
 606 .IP \[bu] 2
 607 Runs the startup scripts.
 608 .PP
 609 History is not replayed.
 610 All code that was entered is lost.
 611 .PP
 612 Environment settings entered on the command line or provided with a
 613 previous \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command are
 614 maintained unless an \f[I]option\f[R] is entered that overwrites the
 615 setting.
 616 .PP
 617 The following options are valid:
 618 .TP
 619 .B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]
 620 Specifies the root modules to resolve in addition to the initial module.
 621 .RS
 622 .RE
 623 .TP
 624 .B \f[CB]\-\-add\-exports\f[R] \f[I]source\-module\f[R]\f[CB]/\f[R]\f[I]package\f[R]\f[CB]=\f[R]\f[I]target\-module\f[R][\f[CB],\f[R]\f[I]target\-module\f[R]]*
 625 Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to
 626 \f[I]target\-module\f[R].
 627 .RS
 628 .RE
 629 .TP
 630 .B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]
 631 Specifies the directories and archives that are searched to locate class
 632 files.
 633 This option overrides the path in the \f[CB]CLASSPATH\f[R] environment
 634 variable.
 635 If the environment variable isn\[aq]t set and this option isn\[aq]t
 636 used, then the current directory is searched.
 637 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 638 separate items in the path.
 639 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 640 .RS
 641 .RE
 642 .TP
 643 .B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]
 644 Specifies where to find application modules.
 645 For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) to
 646 separate items in the path.
 647 For Windows, use a semicolon (\f[CB];\f[R]) to separate items.
 648 .RS
 649 .RE
 650 .RE
 651 .TP
 652 .B \f[CB]/save\f[R] [\f[I]options\f[R]] \f[I]file\f[R]
 653 Saves snippets and commands to the file specified.
 654 If no options are entered, then active snippets are saved.
 655 .RS
 656 .PP
 657 The following options are valid:
 658 .TP
 659 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 660 Saves the snippets and commands identified by name, ID, or ID range.
 661 For a range of IDs, provide the starting ID and ending ID separated with
 662 a hyphen.
 663 To provide a list, separate the items in the list with a space.
 664 Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
 665 .RS
 666 .RE
 667 .TP
 668 .B \f[CB]\-all\f[R]
 669 Saves all snippets, including startup snippets and snippets that were
 670 overwritten or failed.
 671 .RS
 672 .RE
 673 .TP
 674 .B \f[CB]\-history\f[R]
 675 Saves the sequential history of all commands and snippets entered in the
 676 current session.
 677 .RS
 678 .RE
 679 .TP
 680 .B \f[CB]\-start\f[R]
 681 Saves the current startup settings.
 682 If no startup scripts were provided, then an empty file is saved.
 683 .RS
 684 .RE
 685 .RE
 686 .TP
 687 .B \f[CB]/set\f[R] [\f[I]setting\f[R]]
 688 Sets configuration information, including the external editor, startup
 689 settings, and feedback mode.
 690 This command is also used to create a custom feedback mode with
 691 customized prompt, format, and truncation values.
 692 If no setting is entered, then the current setting for the editor,
 693 startup settings, and feedback mode are displayed.
 694 .RS
 695 .PP
 696 The following values are valid for \f[CB]setting\f[R]:
 697 .TP
 698 .B \f[CB]editor\f[R] [\f[I]options\f[R]] [\f[I]command\f[R]]
 699 Sets the command used to start an external editor when the
 700 \f[CB]/edit\f[R] command is entered.
 701 The command can include command arguments separated by spaces.
 702 If no command or options are entered, then the current setting is
 703 displayed.
 704 .RS
 705 .PP
 706 The following options are valid:
 707 .TP
 708 .B \f[CB]\-default\f[R]
 709 Sets the editor to the default editor provided with JShell.
 710 This option can\[aq]t be used if a command for starting an editor is
 711 entered.
 712 .RS
 713 .RE
 714 .TP
 715 .B \f[CB]\-delete\f[R]
 716 Sets the editor to the one in effect when the session started.
 717 If used with the \f[CB]\-retain\f[R] option, then the retained editor
 718 setting is deleted and the editor is set to the first of the following
 719 environment variables found: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], or
 720 \f[CB]EDITOR\f[R].
 721 If none of the editor environment variables are set, then this option
 722 sets the editor to the default editor.
 723 .RS
 724 .PP
 725 This option can\[aq]t be used if a command for starting an editor is
 726 entered.
 727 .RE
 728 .TP
 729 .B \f[CB]\-retain\f[R]
 730 Saves the editor setting across sessions.
 731 If no other option or a command is entered, then the current setting is
 732 saved.
 733 .RS
 734 .RE
 735 .TP
 736 .B \f[CB]\-wait\f[R]
 737 Prompts the user to indicate when editing is complete.
 738 Otherwise control returns to JShell when the editor exits.
 739 Use this option if the editor being used exits immediately, for example,
 740 when an edit window already exists.
 741 This option is valid only when a command for starting an editor is
 742 entered.
 743 .RS
 744 .RE
 745 .RE
 746 .TP
 747 .B \f[CB]feedback\f[R] [\f[I]mode\f[R]]
 748 Sets the feedback mode used to respond to input.
 749 If no mode is entered, then the current mode is displayed.
 750 .RS
 751 .PP
 752 The following modes are valid: \f[CB]concise\f[R], \f[CB]normal\f[R],
 753 \f[CB]silent\f[R], \f[CB]verbose\f[R], and any custom mode created with the
 754 \f[CB]/set\ mode\f[R] command.
 755 .RE
 756 .TP
 757 .B \f[CB]format\f[R] \f[I]mode\f[R] \f[I]field\f[R] \f[CB]"\f[R]\f[I]format\-string\f[R]\f[CB]"\f[R] \f[I]selector\f[R]
 758 Sets the format of the feedback provided in response to input.
 759 If no mode is entered, then the current formats for all fields for all
 760 feedback modes are displayed.
 761 If only a mode is entered, then the current formats for that mode are
 762 displayed.
 763 If only a mode and field are entered, then the current formats for that
 764 field are displayed.
 765 .RS
 766 .PP
 767 To define a format, the following arguments are required:
 768 .TP
 769 .B \f[I]mode\f[R]
 770 Specifies a feedback mode to which the response format is applied.
 771 Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
 772 modified.
 773 .RS
 774 .RE
 775 .TP
 776 .B \f[I]field\f[R]
 777 Specifies a context\-specific field to which the response format is
 778 applied.
 779 The fields are described in the online help, which is accessed from
 780 JShell using the \f[CB]/help\ /set\ format\f[R] command.
 781 .RS
 782 .RE
 783 .TP
 784 .B \f[CB]"\f[R]\f[I]format\-string\f[R]\f[CB]"\f[R]
 785 Specifies the string to use as the response format for the specified
 786 field and selector.
 787 The structure of the format string is described in the online help,
 788 which is accessed from JShell using the \f[CB]/help\ /set\ format\f[R]
 789 command.
 790 .RS
 791 .RE
 792 .TP
 793 .B \f[I]selector\f[R]
 794 Specifies the context in which the response format is applied.
 795 The selectors are described in the online help, which is accessed from
 796 JShell using the \f[CB]/help\ /set\ format\f[R] command.
 797 .RS
 798 .RE
 799 .RE
 800 .TP
 801 .B \f[CB]mode\f[R] [\f[I]mode\-name\f[R]] [\f[I]existing\-mode\f[R]] [\f[I]options\f[R]]
 802 Creates a custom feedback mode with the mode name provided.
 803 If no mode name is entered, then the settings for all modes are
 804 displayed, which includes the mode, prompt, format, and truncation
 805 settings.
 806 If the name of an existing mode is provided, then the settings from the
 807 existing mode are copied to the mode being created.
 808 .RS
 809 .PP
 810 The following options are valid:
 811 .TP
 812 .B \f[CB]\-command\f[R]|\f[CB]\-quiet\f[R]
 813 Specifies the level of feedback displayed for commands when using the
 814 mode.
 815 This option is required when creating a feedback mode.
 816 Use \f[CB]\-command\f[R] to show information and verification feedback for
 817 commands.
 818 Use \f[CB]\-quiet\f[R] to show only essential feedback for commands, such
 819 as error messages.
 820 .RS
 821 .RE
 822 .TP
 823 .B \f[CB]\-delete\f[R]
 824 Deletes the named feedback mode for this session.
 825 The name of the mode to delete is required.
 826 To permanently delete a retained mode, use the \f[CB]\-retain\f[R] option
 827 with this option.
 828 Predefined modes can\[aq]t be deleted.
 829 .RS
 830 .RE
 831 .TP
 832 .B \f[CB]\-retain\f[R]
 833 Saves the named feedback mode across sessions.
 834 The name of the mode to retain is required.
 835 .RS
 836 .RE
 837 .PP
 838 Configure the new feedback mode using the \f[CB]/set\ prompt\f[R],
 839 \f[CB]/set\ format\f[R], and \f[CB]/set\ truncation\f[R] commands.
 840 .PP
 841 To start using the new mode, use the \f[CB]/set\ feedback\f[R] command.
 842 .RE
 843 .TP
 844 .B \f[CB]prompt\f[R] \f[I]mode\f[R] \f[CB]"\f[R]\f[I]prompt\-string\f[R]\f[CB]"\f[R] \f[CB]"\f[R]\f[I]continuation\-prompt\-string\f[R]\f[CB]"\f[R]
 845 Sets the prompts for input within JShell.
 846 If no mode is entered, then the current prompts for all feedback modes
 847 are displayed.
 848 If only a mode is entered, then the current prompts for that mode are
 849 displayed.
 850 .RS
 851 .PP
 852 To define a prompt, the following arguments are required:
 853 .TP
 854 .B \f[I]mode\f[R]
 855 Specifies the feedback mode to which the prompts are applied.
 856 Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
 857 modified.
 858 .RS
 859 .RE
 860 .TP
 861 .B \f[CB]"\f[R]\f[I]prompt\-string\f[R]\f[CB]"\f[R]
 862 Specifies the string to use as the prompt for the first line of input.
 863 .RS
 864 .RE
 865 .TP
 866 .B \f[CB]"\f[R]\f[I]continuation\-prompt\-string\f[R]\f[CB]"\f[R]
 867 Specifies the string to use as the prompt for the additional input lines
 868 needed to complete a snippet.
 869 .RS
 870 .RE
 871 .RE
 872 .TP
 873 .B \f[CB]start\f[R] [\f[CB]\-retain\f[R]] [\f[I]file\f[R] [\f[I]file\f[R]...]|\f[I]option\f[R]]
 874 Sets the names of the startup scripts used when the next
 875 \f[CB]/reset\f[R], \f[CB]/reload\f[R], or \f[CB]/env\f[R] command is entered.
 876 If more than one script is entered, then the scripts are run in the
 877 order entered.
 878 If no scripts or options are entered, then the current startup settings
 879 are displayed.
 880 .RS
 881 .PP
 882 The scripts can be local files or one of the following predefined
 883 scripts:
 884 .TP
 885 .B \f[CB]DEFAULT\f[R]
 886 Loads the default entries, which are commonly used as imports.
 887 .RS
 888 .RE
 889 .TP
 890 .B \f[CB]JAVASE\f[R]
 891 Imports all Java SE packages.
 892 .RS
 893 .RE
 894 .TP
 895 .B \f[CB]PRINTING\f[R]
 896 Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as
 897 \f[CB]jshell\f[R] methods for use within the tool.
 898 .RS
 899 .RE
 900 .PP
 901 The following options are valid:
 902 .TP
 903 .B \f[CB]\-default\f[R]
 904 Sets the startup settings to the default settings.
 905 .RS
 906 .RE
 907 .TP
 908 .B \f[CB]\-none\f[R]
 909 Specifies that no startup settings are used.
 910 .RS
 911 .RE
 912 .PP
 913 Use the \f[CB]\-retain\f[R] option to save the start setting across
 914 sessions.
 915 .RE
 916 .TP
 917 .B \f[CB]truncation\f[R] \f[I]mode\f[R] \f[I]length\f[R] \f[I]selector\f[R]
 918 Sets the maximum length of a displayed value.
 919 If no mode is entered, then the current truncation values for all
 920 feedback modes are displayed.
 921 If only a mode is entered, then the current truncation values for that
 922 mode are displayed.
 923 .RS
 924 .PP
 925 To define truncation values, the following arguments are required:
 926 .TP
 927 .B \f[I]mode\f[R]
 928 Specifies the feedback mode to which the truncation value is applied.
 929 Only custom modes created with the \f[CB]/set\ mode\f[R] command can be
 930 modified.
 931 .RS
 932 .RE
 933 .TP
 934 .B \f[I]length\f[R]
 935 Specifies the unsigned integer to use as the maximum length for the
 936 specified selector.
 937 .RS
 938 .RE
 939 .TP
 940 .B \f[I]selector\f[R]
 941 Specifies the context in which the truncation value is applied.
 942 The selectors are described in the online help, which is accessed from
 943 JShell using the \f[CB]/help\ /set\ truncation\f[R] command.
 944 .RS
 945 .RE
 946 .RE
 947 .RE
 948 .TP
 949 .B \f[CB]/types\f[R] [\f[I]option\f[R]]
 950 Displays classes, interfaces, and enums that were entered.
 951 If no option is entered, then all current active classes, interfaces,
 952 and enums are displayed.
 953 .RS
 954 .PP
 955 The following options are valid:
 956 .TP
 957 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 958 Displays information for classes, interfaces, and enums identified by
 959 name, ID, or ID range.
 960 For a range of IDs, provide the starting ID and ending ID separated with
 961 a hyphen.
 962 To provide a list, separate the items in the list with a space.
 963 Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
 964 .RS
 965 .RE
 966 .TP
 967 .B \f[CB]\-all\f[R]
 968 Displays information for all classes, interfaces, and enums, including
 969 those added when JShell was started, and classes, interfaces, and enums
 970 that failed, were overwritten, or were dropped.
 971 .RS
 972 .RE
 973 .TP
 974 .B \f[CB]\-start\f[R]
 975 Displays information for startup classes, interfaces, and enums that
 976 were added when JShell was started.
 977 .RS
 978 .RE
 979 .RE
 980 .TP
 981 .B \f[CB]/vars\f[R] [\f[I]option\f[R]]
 982 Displays the name, type, and value of variables that were entered.
 983 If no option is entered, then all current active variables are
 984 displayed.
 985 .RS
 986 .PP
 987 The following options are valid:
 988 .TP
 989 .B {\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
 990 Displays information for variables identified by name, ID, or ID range.
 991 For a range of IDs, provide the starting ID and ending ID separated with
 992 a hyphen.
 993 To provide a list, separate the items in the list with a space.
 994 Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
 995 .RS
 996 .RE
 997 .TP
 998 .B \f[CB]\-all\f[R]
 999 Displays information for all variables, including those added when
1000 JShell was started, and variables that failed, were overwritten, or were
1001 dropped.
1002 .RS
1003 .RE
1004 .TP
1005 .B \f[CB]\-start\f[R]
1006 Displays information for startup variables that were added when JShell
1007 was started.
1008 .RS
1009 .RE
1010 .RE
1011 .TP
1012 .B \f[CB]/?\f[R]
1013 Same as the \f[CB]/help\f[R] command.
1014 .RS
1015 .RE
1016 .TP
1017 .B \f[CB]/!\f[R]
1018 Reruns the last snippet.
1019 .RS
1020 .RE
1021 .TP
1022 .B \f[CB]/\f[R]{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]} [{\f[I]name\f[R]|\f[I]id\f[R]|\f[I]startID\f[R]\f[CB]\-\f[R]\f[I]endID\f[R]}...]
1023 Reruns the snippets identified by ID, range of IDs, or name.
1024 For a range of IDs, provide the starting ID and ending ID separated with
1025 a hyphen.
1026 To provide a list, separate the items in the list with a space.
1027 The first item in the list must be an ID or ID range.
1028 Use the \f[CB]/list\f[R] command to see the IDs of the code snippets.
1029 .RS
1030 .RE
1031 .TP
1032 .B \f[CB]/\-\f[R]\f[I]n\f[R]
1033 Reruns the \-\f[I]n\f[R]th previous snippet.
1034 For example, if 15 code snippets were entered, then \f[CB]/\-4\f[R] runs
1035 the 11th snippet.
1036 Commands aren\[aq]t included in the count.
1037 .RS
1038 .RE
1039 .SH INPUT SHORTCUTS
1040 .PP
1041 The following shortcuts are available for entering commands and snippets
1042 in JShell.
1043 .SS Tab completion
1044 .TP
1045 .B \f[B]<tab>\f[R]
1046 When entering snippets, commands, subcommands, command arguments, or
1047 command options, use the Tab key to automatically complete the item.
1048 If the item can\[aq]t be determined from what was entered, then possible
1049 options are provided.
1050 .RS
1051 .PP
1052 When entering a method call, use the Tab key after the method call\[aq]s
1053 opening parenthesis to see the parameters for the method.
1054 If the method has more than one signature, then all signatures are
1055 displayed.
1056 Pressing the Tab key a second time displays the description of the
1057 method and the parameters for the first signature.
1058 Continue pressing the Tab key for a description of any additional
1059 signatures.
1060 .RE
1061 .TP
1062 .B \f[B]Shift+<Tab> V\f[R]
1063 After entering a complete expression, use this key sequence to convert
1064 the expression to a variable declaration of a type determined by the
1065 type of the expression.
1066 .RS
1067 .RE
1068 .TP
1069 .B \f[B]Shift+<Tab> M\f[R]
1070 After entering a complete expression or statement, use this key sequence
1071 to convert the expression or statement to a method declaration.
1072 If an expression is entered, the return type is based on the type of the
1073 expression.
1074 .RS
1075 .RE
1076 .TP
1077 .B \f[B]Shift+<Tab> I\f[R]
1078 When an identifier is entered that can\[aq]t be resolved, use this key
1079 sequence to show possible imports that resolve the identifier based on
1080 the content of the specified class path.
1081 .RS
1082 .RE
1083 .SS Command abbreviations
1084 .PP
1085 An abbreviation of a command is accepted if the abbreviation uniquely
1086 identifies a command.
1087 For example, \f[CB]/l\f[R] is recognized as the \f[CB]/list\f[R] command.
1088 However, \f[CB]/s\f[R] isn\[aq]t a valid abbreviation because it can\[aq]t
1089 be determined if the \f[CB]/set\f[R] or \f[CB]/save\f[R] command is meant.
1090 Use \f[CB]/se\f[R] for the \f[CB]/set\f[R] command or \f[CB]/sa\f[R] for the
1091 \f[CB]/save\f[R] command.
1092 .PP
1093 Abbreviations are also accepted for subcommands, command arguments, and
1094 command options.
1095 For example, use \f[CB]/m\ \-a\f[R] to display all methods.
1096 .SS History navigation
1097 .PP
1098 A history of what was entered is maintained across sessions.
1099 Use the up and down arrows to scroll through commands and snippets from
1100 the current and past sessions.
1101 Use the Ctrl key with the up and down arrows to skip all but the first
1102 line of multiline snippets.
1103 .SS History search
1104 .PP
1105 Use the Ctrl+R key combination to search the history for the string
1106 entered.
1107 The prompt changes to show the string and the match.
1108 Ctrl+R searches backwards from the current location in the history
1109 through earlier entries.
1110 Ctrl+S searches forward from the current location in the history though
1111 later entries.
1112 .SH INPUT EDITING
1113 .PP
1114 The editing capabilities of JShell are similar to that of other common
1115 shells.
1116 Keyboard keys and key combinations provide line editing shortcuts.
1117 The Ctrl key and Meta key are used in key combinations.
1118 If your keyboard doesn\[aq]t have a Meta key, then the Alt key is often
1119 mapped to provide Meta key functionality.
1120 .PP
1121 .TS
1122 tab(@);
1123 l l.
1124 T{
1125 Key or Key Combination
1126 T}@T{
1127 Action
1128 T}
1129 _
1130 T{
1131 Return
1132 T}@T{
1133 Enter the current line.
1134 T}
1135 T{
1136 Left arrow
1137 T}@T{
1138 Move the cursor to the left one character.
1139 T}
1140 T{
1141 Right arrow
1142 T}@T{
1143 Move the cursor to the right one character.
1144 T}
1145 T{
1146 Ctrl+A
1147 T}@T{
1148 Move the cursor to the beginning of the line.
1149 T}
1150 T{
1151 Ctrl+E
1152 T}@T{
1153 Move the cursor to the end of the line.
1154 T}
1155 T{
1156 Meta+B
1157 T}@T{
1158 Move the cursor to the left one word.
1159 T}
1160 T{
1161 Meta+F
1162 T}@T{
1163 Move the cursor to the right one word.
1164 T}
1165 T{
1166 Delete
1167 T}@T{
1168 Delete the character under the cursor.
1169 T}
1170 T{
1171 Backspace
1172 T}@T{
1173 Delete the character before the cursor.
1174 T}
1175 T{
1176 Ctrl+K
1177 T}@T{
1178 Delete the text from the cursor to the end of the line.
1179 T}
1180 T{
1181 Meta+D
1182 T}@T{
1183 Delete the text from the cursor to the end of the word.
1184 T}
1185 T{
1186 Ctrl+W
1187 T}@T{
1188 Delete the text from the cursor to the previous white space.
1189 T}
1190 T{
1191 Ctrl+Y
1192 T}@T{
1193 Paste the most recently deleted text into the line.
1194 T}
1195 T{
1196 Meta+Y
1197 T}@T{
1198 After Ctrl+Y, press to cycle through the previously deleted text.
1199 T}
1200 .TE
1201 .SH EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION
1202 .PP
1203 JShell is provided with the JDK.
1204 To start a session, enter \f[CB]jshell\f[R] on the command line.
1205 A welcome message is printed, and a prompt for entering commands and
1206 snippets is provided.
1207 .IP
1208 .nf
1209 \f[CB]
1210 %\ jshell
1211 |\ \ Welcome\ to\ JShell\ \-\-\ Version\ 9
1212 |\ \ For\ an\ introduction\ type:\ /help\ intro
1213 
1214 jshell>
1215 \f[R]
1216 .fi
1217 .PP
1218 To see which snippets were automatically loaded when JShell started, use
1219 the \f[CB]/list\ \-start\f[R] command.
1220 The default startup snippets are import statements for common packages.
1221 The ID for each snippet begins with the letter \f[I]s\f[R], which
1222 indicates it\[aq]s a startup snippet.
1223 .IP
1224 .nf
1225 \f[CB]
1226 jshell>\ /list\ \-start
1227 
1228 \ \ s1\ :\ import\ java.io.*;
1229 \ \ s2\ :\ import\ java.math.*;
1230 \ \ s3\ :\ import\ java.net.*;
1231 \ \ s4\ :\ import\ java.nio.file.*;
1232 \ \ s5\ :\ import\ java.util.*;
1233 \ \ s6\ :\ import\ java.util.concurrent.*;
1234 \ \ s7\ :\ import\ java.util.function.*;
1235 \ \ s8\ :\ import\ java.util.prefs.*;
1236 \ \ s9\ :\ import\ java.util.regex.*;
1237 \ s10\ :\ import\ java.util.stream.*;
1238 
1239 jshell>
1240 \f[R]
1241 .fi
1242 .PP
1243 To end the session, use the \f[CB]/exit\f[R] command.
1244 .IP
1245 .nf
1246 \f[CB]
1247 jshell>\ /exit
1248 |\ \ Goodbye
1249 
1250 %
1251 \f[R]
1252 .fi
1253 .SH EXAMPLE OF ENTERING SNIPPETS
1254 .PP
1255 Snippets are Java statements, variable definitions, method definitions,
1256 class definitions, import statements, and expressions.
1257 Terminating semicolons are automatically added to the end of a completed
1258 snippet if they\[aq]re missing.
1259 .PP
1260 The following example shows two variables and a method being defined,
1261 and the method being run.
1262 Note that a scratch variable is automatically created to hold the result
1263 because no variable was provided.
1264 .IP
1265 .nf
1266 \f[CB]
1267 jshell>\ int\ a=4
1268 a\ ==>\ 4
1269 
1270 jshell>\ int\ b=8
1271 b\ ==>\ 8
1272 
1273 jshell>\ int\ square(int\ i1)\ {
1274 \ \ \ ...>\ return\ i1\ *\ i1;
1275 \ \ \ ...>\ }
1276 |\ \ created\ method\ square(int)
1277 
1278 jshell>\ square(b)
1279 $5\ ==>\ 64
1280 \f[R]
1281 .fi
1282 .SH EXAMPLE OF CHANGING SNIPPETS
1283 .PP
1284 Change the definition of a variable, method, or class by entering it
1285 again.
1286 .PP
1287 The following examples shows a method being defined and the method run:
1288 .IP
1289 .nf
1290 \f[CB]
1291 jshell>\ String\ grade(int\ testScore)\ {
1292 \ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 90)\ {
1293 \ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";
1294 \ \ \ ...>\ \ \ \ \ }
1295 \ \ \ ...>\ \ \ \ \ return\ "Fail";
1296 \ \ \ ...>\ }
1297 |\ \ created\ method\ grade(int)
1298 
1299 jshell>\ grade(88)
1300 $3\ ==>\ "Fail"
1301 \f[R]
1302 .fi
1303 .PP
1304 To change the method \f[CB]grade\f[R] to allow more students to pass,
1305 enter the method definition again and change the pass score to
1306 \f[CB]80\f[R].
1307 Use the up arrow key to retrieve the previous entries to avoid having to
1308 reenter them and make the change in the \f[CB]if\f[R] statement.
1309 The following example shows the new definition and reruns the method to
1310 show the new result:
1311 .IP
1312 .nf
1313 \f[CB]
1314 jshell>\ String\ grade(int\ testScore)\ {
1315 \ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 80)\ {
1316 \ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";
1317 \ \ \ ...>\ \ \ \ \ }
1318 \ \ \ ...>\ \ \ \ \ return\ "Fail";
1319 \ \ \ ...>\ }
1320 |\ \ modified\ method\ grade(int)
1321 
1322 jshell>\ grade(88)
1323 $5\ ==>\ "Pass"
1324 \f[R]
1325 .fi
1326 .PP
1327 For snippets that are more than a few lines long, or to make more than a
1328 few changes, use the \f[CB]/edit\f[R] command to open the snippet in an
1329 editor.
1330 After the changes are complete, close the edit window to return control
1331 to the JShell session.
1332 The following example shows the command and the feedback provided when
1333 the edit window is closed.
1334 The \f[CB]/list\f[R] command is used to show that the pass score was
1335 changed to \f[CB]85\f[R].
1336 .IP
1337 .nf
1338 \f[CB]
1339 jshell>\ /edit\ grade
1340 |\ \ modified\ method\ grade(int)
1341 jshell>\ /list\ grade
1342 
1343 \ \ \ 6\ :\ String\ grade(int\ testScore)\ {
1344 \ \ \ \ \ \ \ \ \ \ \ if\ (testScore\ >=\ 85)\ {
1345 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ "Pass";
1346 \ \ \ \ \ \ \ \ \ \ \ }
1347 \ \ \ \ \ \ \ \ \ \ \ return\ "Fail";
1348 \ \ \ \ \ \ \ }
1349 \f[R]
1350 .fi
1351 .SH EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE
1352 .PP
1353 The feedback mode determines the prompt that\[aq]s displayed, the
1354 feedback messages that are provided as snippets are entered, and the
1355 maximum length of a displayed value.
1356 Predefined feedback modes are provided.
1357 Commands for creating custom feedback modes are also provided.
1358 .PP
1359 Use the \f[CB]/set\ mode\f[R] command to create a new feedback mode.
1360 In the following example, the new mode \f[CB]mymode\f[R], is based on the
1361 predefined feedback mode, \f[CB]normal\f[R], and verifying command
1362 feedback is displayed:
1363 .IP
1364 .nf
1365 \f[CB]
1366 jshell>\ /set\ mode\ mymode\ normal\ \-command
1367 |\ \ Created\ new\ feedback\ mode:\ mymode
1368 \f[R]
1369 .fi
1370 .PP
1371 Because the new mode is based on the \f[CB]normal\f[R] mode, the prompts
1372 are the same.
1373 The following example shows how to see what prompts are used and then
1374 changes the prompts to custom strings.
1375 The first string represents the standard JShell prompt.
1376 The second string represents the prompt for additional lines in
1377 multiline snippets.
1378 .IP
1379 .nf
1380 \f[CB]
1381 jshell>\ /set\ prompt\ mymode
1382 |\ \ /set\ prompt\ mymode\ "\\njshell>\ "\ "\ \ \ ...>\ "
1383 
1384 jshell>\ /set\ prompt\ mymode\ "\\nprompt$\ "\ "\ \ \ continue$\ "
1385 \f[R]
1386 .fi
1387 .PP
1388 The maximum length of a displayed value is controlled by the truncation
1389 setting.
1390 Different types of values can have different lengths.
1391 The following example sets an overall truncation value of 72, and a
1392 truncation value of 500 for variable value expressions:
1393 .IP
1394 .nf
1395 \f[CB]
1396 jshell>\ /set\ truncation\ mymode\ 72
1397 
1398 jshell>\ /set\ truncation\ mymode\ 500\ varvalue
1399 \f[R]
1400 .fi
1401 .PP
1402 The feedback displayed after snippets are entered is controlled by the
1403 format setting and is based on the type of snippet entered and the
1404 action taken for that snippet.
1405 In the predefined mode \f[CB]normal\f[R], the string \f[CB]created\f[R] is
1406 displayed when a method is created.
1407 The following example shows how to change that string to
1408 \f[CB]defined\f[R]:
1409 .IP
1410 .nf
1411 \f[CB]
1412 jshell>\ /set\ format\ mymode\ action\ "defined"\ added\-primary
1413 \f[R]
1414 .fi
1415 .PP
1416 Use the \f[CB]/set\ feedback\f[R] command to start using the feedback mode
1417 that was just created.
1418 The following example shows the custom mode in use:
1419 .IP
1420 .nf
1421 \f[CB]
1422 jshell>\ /set\ feedback\ mymode
1423 |\ \ Feedback\ mode:\ mymode
1424 
1425 prompt$\ int\ square\ (int\ num1){
1426 \ \ \ continue$\ return\ num1*num1;
1427 \ \ \ continue$\ }
1428 |\ \ defined\ method\ square(int)
1429 
1430 prompt$
1431 \f[R]
1432 .fi