.\"t.\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved..\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER..\".\" This code is free software; you can redistribute it and/or modify it.\" under the terms of the GNU General Public License version 2 only, as.\" published by the Free Software Foundation..\".\" This code is distributed in the hope that it will be useful, but WITHOUT.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License.\" version 2 for more details (a copy is included in the LICENSE file that.\" accompanied this code)..\".\" You should have received a copy of the GNU General Public License version.\" 2 along with this work; if not, write to the Free Software Foundation,.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA..\".\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.\" or visit www.oracle.com if you need additional information or have any.\" questions..\".\" Automatically generated by Pandoc 2.3.1.\".TH "JSHELL" "1" "2018" "JDK 13" "JDK Commands".hy.SH NAME.PPjshell \- interactively evaluate declarations, statements, andexpressions of the Java programming language in a read\-eval\-print loop(REPL).SH SYNOPSIS.PP\f[CB]jshell\f[R] [\f[I]options\f[R]] [\f[I]load\-files\f[R]].TP.B \f[I]options\f[R]Command\-line options, separated by spaces.See \f[B]Options for jshell\f[R]..RS.RE.TP.B \f[I]load\-files\f[R]One or more scripts to run when the tool is started.Scripts can contain any valid code snippets or JShell commands..RS.PPThe script can be a local file or one of following predefined scripts:.TP.B \f[CB]DEFAULT\f[R]Loads the default entries, which are commonly used as imports..RS.RE.TP.B \f[CB]JAVASE\f[R]Imports all Java SE packages..RS.RE.TP.B \f[CB]PRINTING\f[R]Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as\f[CB]jshell\f[R] methods for use within the tool..RS.RE.PPFor more than one script, use a space to separate the names.Scripts are run in the order in which they\[aq]re entered on the commandline.Command\-line scripts are run after startup scripts.To run a script after JShell is started, use the \f[CB]/open\f[R] command..PPTo accept input from standard input and suppress the interactive I/O,enter a hyphen (\-) for \f[I]load\-files\f[R].This option enables the use of the \f[CB]jshell\f[R] tool in pipe chains..RE.SH DESCRIPTION.PPJShell provides a way to interactively evaluate declarations,statements, and expressions of the Java programming language, making iteasier to learn the language, explore unfamiliar code and APIs, andprototype complex code.Java statements, variable definitions, method definitions, classdefinitions, import statements, and expressions are accepted.The bits of code entered are called snippets..PPAs snippets are entered, they\[aq]re evaluated, and feedback isprovided.Feedback varies from the results and explanations of actions to nothing,depending on the snippet entered and the feedback mode chosen.Errors are described regardless of the feedback mode.Start with the verbose mode to get the most feedback while learning thetool..PPCommand\-line options are available for configuring the initialenvironment when JShell is started.Within JShell, commands are available for modifying the environment asneeded..PPExisting snippets can be loaded from a file to initialize a JShellsession, or at any time within a session.Snippets can be modified within the session to try out differentvariations and make corrections.To keep snippets for later use, save them to a file..SH OPTIONS FOR JSHELL.TP.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]Specifies the root modules to resolve in addition to the initial module..RS.RE.TP.B \f[CB]\-C\f[R]\f[I]flag\f[R]Provides a flag to pass to the compiler.To pass more than one flag, provide an instance of this option for eachflag or flag argument needed..RS.RE.TP.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]Specifies the directories and archives that are searched to locate classfiles.This option overrides the path in the \f[CB]CLASSPATH\f[R] environmentvariable.If the environment variable isn\[aq]t set and this option isn\[aq]tused, then the current directory is searched.For Oracle Solaris, Linux, and macOS, use a colon (:) to separate itemsin the path.For Windows, use a semicolon (;) to separate items..RS.RE.TP.B \f[CB]\-\-feedback\f[R] \f[I]mode\f[R]Sets the initial level of feedback provided in response to what\[aq]sentered.The initial level can be overridden within a session by using the\f[CB]/set\ feedback\f[R] \f[I]mode\f[R] command.The default is \f[CB]normal\f[R]..RS.PPThe following values are valid for \f[I]mode\f[R]:.TP.B \f[CB]verbose\f[R]Provides detailed feedback for entries.Additional information about the action performed is displayed after theresult of the action.The next prompt is separated from the feedback by a blank line..RS.RE.TP.B \f[CB]normal\f[R]Provides an average amount of feedback.The next prompt is separated from the feedback by a blank line..RS.RE.TP.B \f[CB]concise\f[R]Provides minimal feedback.The next prompt immediately follows the code snippet or feedback..RS.RE.TP.B \f[CB]silent\f[R]Provides no feedback.The next prompt immediately follows the code snippet..RS.RE.TP.B \f[I]custom\f[R]Provides custom feedback based on how the mode is defined.Custom feedback modes are created within JShell by using the\f[CB]/set\ mode\f[R] command..RS.RE.RE.TP.B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R] or \f[CB]\-?\f[R]Prints a summary of standard options and exits the tool..RS.RE.TP.B \f[CB]\-\-help\-extra\f[R] or \f[CB]\-X\f[R]Prints a summary of nonstandard options and exits the tool.Nonstandard options are subject to change without notice..RS.RE.TP.B \f[CB]\-J\f[R]\f[I]flag\f[R]Provides a flag to pass to the runtime system.To pass more than one flag, provide an instance of this option for eachflag or flag argument needed..RS.RE.TP.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]Specifies where to find application modules.For Oracle Solaris, Linux, and macOS, use a colon (:) to separate itemsin the path.For Windows, use a semicolon (;) to separate items..RS.RE.TP.B \f[CB]\-\-no\-startup\f[R]Prevents startup scripts from running when JShell starts.Use this option to run only the scripts entered on the command line whenJShell is started, or to start JShell without any preloaded informationif no scripts are entered.This option can\[aq]t be used if the \f[CB]\-\-startup\f[R] option isused..RS.RE.TP.B \f[CB]\-q\f[R]Sets the feedback mode to \f[CB]concise\f[R], which is the same asentering \f[CB]\-\-feedback\ concise\f[R]..RS.RE.TP.B \f[CB]\-R\f[R]\f[I]flag\f[R]Provides a flag to pass to the remote runtime system.To pass more than one flag, provide an instance of this option for eachflag or flag argument to pass..RS.RE.TP.B \f[CB]\-s\f[R]Sets the feedback mode to \f[CB]silent\f[R], which is the same as entering\f[CB]\-\-feedback\ silent\f[R]..RS.RE.TP.B \f[CB]\-\-show\-version\f[R]Prints version information and enters the tool..RS.RE.TP.B \f[CB]\-\-startup\f[R] \f[I]file\f[R]Overrides the default startup script for this session.The script can contain any valid code snippets or commands..RS.PPThe script can be a local file or one of the following predefinedscripts:.TP.B \f[CB]DEFAULT\f[R]Loads the default entries, which are commonly used as imports..RS.RE.TP.B \f[CB]JAVASE\f[R]Imports all Java SE packages..RS.RE.TP.B \f[CB]PRINTING\f[R]Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as\f[CB]jshell\f[R] methods for use within the tool..RS.RE.PPFor more than one script, provide a separate instance of this option foreach script.Startup scripts are run when JShell is first started and when thesession is restarted with the \f[CB]/reset\f[R], \f[CB]/reload\f[R], or\f[CB]/env\f[R] command.Startup scripts are run in the order in which they\[aq]re entered on thecommand line..PPThis option can\[aq]t be used if the \f[CB]\-\-no\-startup\f[R] option isused..RE.TP.B \f[CB]\-v\f[R]Sets the feedback mode to \f[CB]verbose\f[R], which is the same asentering \f[CB]\-\-feedback\ verbose\f[R]..RS.RE.TP.B \f[CB]\-\-version\f[R]Prints version information and exits the tool..RS.RE.SH JSHELL COMMANDS.PPWithin the \f[CB]jshell\f[R] tool, commands are used to modify theenvironment and manage code snippets..TP.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]}...]Drops snippets identified by name, ID, or ID range, making theminactive.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of code snippets..RS.RE.TP.B \f[CB]/edit\f[R] [\f[I]option\f[R]]Opens an editor.If no option is entered, then the editor opens with the active snippets..RS.PPThe following options are valid:.TP.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]}...]Opens the editor with the snippets identified by name, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of code snippets..RS.RE.TP.B \f[CB]\-all\f[R]Opens the editor with all snippets, including startup snippets andsnippets that failed, were overwritten, or were dropped..RS.RE.TP.B \f[CB]\-start\f[R]Opens the editor with startup snippets that were evaluated when JShellwas started..RS.RE.PPTo exit edit mode, close the editor window, or respond to the promptprovided if the \f[CB]\-wait\f[R] option was used when the editor was set..PPUse the \f[CB]/set\ editor\f[R] command to specify the editor to use.If no editor is set, then the following environment variables arechecked in order: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], and\f[CB]EDITOR\f[R].If no editor is set in JShell and none of the editor environmentvariables is set, then a simple default editor is used..RE.TP.B \f[CB]/env\f[R] [\f[I]options\f[R]]Displays the environment settings, or updates the environment settingsand restarts the session.If no option is entered, then the current environment settings aredisplayed.If one or more options are entered, then the session is restarted asfollows:.RS.IP \[bu] 2Updates the environment settings with the provided options..IP \[bu] 2Resets the execution state..IP \[bu] 2Runs the startup scripts..IP \[bu] 2Silently replays the history in the order entered.The history includes all valid snippets or \f[CB]/drop\f[R] commandsentered at the \f[CB]jshell\f[R] prompt, in scripts entered on the commandline, or scripts entered with the \f[CB]/open\f[R] command..PPEnvironment settings entered on the command line or provided with aprevious \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command aremaintained unless an \f[I]option\f[R] is entered that overwrites thesetting..PPThe following options are valid:.TP.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]Specifies the root modules to resolve in addition to the initial module..RS.RE.TP.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]]*Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to\f[I]target\-module\f[R]..RS.RE.TP.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]Specifies the directories and archives that are searched to locate classfiles.This option overrides the path in the \f[CB]CLASSPATH\f[R] environmentvariable.If the environment variable isn\[aq]t set and this option isn\[aq]tused, then the current directory is searched.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.TP.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]Specifies where to find application modules.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.RE.TP.B \f[CB]/exit\f[R] [\f[I]integer\-expression\-snippet\f[R]]Exits the tool.If no snippet is entered, the exit status is zero.If a snippet is entered and the result of the snippet is an integer, theresult is used as the exit status.If an error occurs, or the result of the snippet is not an integer, anerror is displayed and the tool remains active..RS.RE.TP.B \f[CB]/history\f[R]Displays what was entered in this session..RS.RE.TP.B \f[CB]/help\f[R] [\f[I]command\f[R]|\f[I]subject\f[R]]Displays information about commands and subjects.If no options are entered, then a summary of information for allcommands and a list of available subjects are displayed.If a valid command is provided, then expanded information for thatcommand is displayed.If a valid subject is entered, then information about that subject isdisplayed..RS.PPThe following values for \f[I]subject\f[R] are valid:.TP.B \f[CB]context\f[R]Describes the options that are available for configuring theenvironment..RS.RE.TP.B \f[CB]intro\f[R]Provides an introduction to the tool..RS.RE.TP.B \f[CB]shortcuts\f[R]Describes keystrokes for completing commands and snippets.See \f[B]Input Shortcuts\f[R]..RS.RE.RE.TP.B \f[CB]/imports\f[R]Displays the current active imports, including those from the startupscripts and scripts that were entered on the command line when JShellwas started..RS.RE.TP.B \f[CB]/list\f[R] [\f[I]option\f[R]]Displays a list of snippets and their IDs.If no option is entered, then all active snippets are displayed, butstartup snippets aren\[aq]t..RS.PPThe following options are valid:.TP.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]}...]Displays the snippets identified by name, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space..RS.RE.TP.B \f[CB]\-all\f[R]Displays all snippets, including startup snippets and snippets thatfailed, were overwritten, or were dropped.IDs that begin with \f[CB]s\f[R] are startup snippets.IDs that begin with \f[CB]e\f[R] are snippets that failed..RS.RE.TP.B \f[CB]\-start\f[R]Displays startup snippets that were evaluated when JShell was started..RS.RE.RE.TP.B \f[CB]/methods\f[R] [\f[I]option\f[R]]Displays information about the methods that were entered.If no option is entered, then the name, parameter types, and return typeof all active methods are displayed..RS.PPThe following options are valid:.TP.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]}...]Displays information for methods identified by name, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of code snippets..RS.RE.TP.B \f[CB]\-all\f[R]Displays information for all methods, including those added when JShellwas started, and methods that failed, were overwritten, or were dropped..RS.RE.TP.B \f[CB]\-start\f[R]Displays information for startup methods that were added when JShell wasstarted..RS.RE.RE.TP.B \f[CB]/open\f[R] \f[I]file\f[R]Opens the script specified and reads the snippets into the tool.The script can be a local file or one of the following predefinedscripts:.RS.TP.B \f[CB]DEFAULT\f[R]Loads the default entries, which are commonly used as imports..RS.RE.TP.B \f[CB]JAVASE\f[R]Imports all Java SE packages..RS.RE.TP.B \f[CB]PRINTING\f[R]Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as\f[CB]jshell\f[R] methods for use within the tool..RS.RE.RE.TP.B \f[CB]/reload\f[R] [\f[I]options\f[R]]Restarts the session as follows:.RS.IP \[bu] 2Updates the environment settings with the provided options, if any..IP \[bu] 2Resets the execution state..IP \[bu] 2Runs the startup scripts..IP \[bu] 2Replays the history in the order entered.The history includes all valid snippets or \f[CB]/drop\f[R] commandsentered at the \f[CB]jshell\f[R] prompt, in scripts entered on the commandline, or scripts entered with the \f[CB]/open\f[R] command..PPEnvironment settings entered on the command line or provided with aprevious \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command aremaintained unless an \f[I]option\f[R] is entered that overwrites thesetting..PPThe following options are valid:.TP.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]Specifies the root modules to resolve in addition to the initial module..RS.RE.TP.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]]*Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to\f[I]target\-module\f[R]..RS.RE.TP.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]Specifies the directories and archives that are searched to locate classfiles.This option overrides the path in the \f[CB]CLASSPATH\f[R] environmentvariable.If the environment variable isn\[aq]t set and this option isn\[aq]tused, then the current directory is searched.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.TP.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]Specifies where to find application modules.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.TP.B \f[CB]\-quiet\f[R]Replays the valid history without displaying it.Errors are displayed..RS.RE.TP.B \f[CB]\-restore\f[R]Resets the environment to the state at the start of the previous run ofthe tool or to the last time a \f[CB]/reset\f[R], \f[CB]/reload\f[R], or\f[CB]/env\f[R] command was executed in the previous run.The valid history since that point is replayed.Use this option to restore a previous JShell session..RS.RE.RE.TP.B \f[CB]/reset\f[R] [\f[I]options\f[R]]Discards all entered snippets and restarts the session as follows:.RS.IP \[bu] 2Updates the environment settings with the provided options, if any..IP \[bu] 2Resets the execution state..IP \[bu] 2Runs the startup scripts..PPHistory is not replayed.All code that was entered is lost..PPEnvironment settings entered on the command line or provided with aprevious \f[CB]/reset\f[R], \f[CB]/env\f[R], or \f[CB]/reload\f[R] command aremaintained unless an \f[I]option\f[R] is entered that overwrites thesetting..PPThe following options are valid:.TP.B \f[CB]\-\-add\-modules\f[R] \f[I]module\f[R][\f[CB],\f[R]\f[I]module\f[R]...]Specifies the root modules to resolve in addition to the initial module..RS.RE.TP.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]]*Adds an export of \f[I]package\f[R] from \f[I]source\-module\f[R] to\f[I]target\-module\f[R]..RS.RE.TP.B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R]Specifies the directories and archives that are searched to locate classfiles.This option overrides the path in the \f[CB]CLASSPATH\f[R] environmentvariable.If the environment variable isn\[aq]t set and this option isn\[aq]tused, then the current directory is searched.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.TP.B \f[CB]\-\-module\-path\f[R] \f[I]modulepath\f[R]Specifies where to find application modules.For Oracle Solaris, Linux, and macOS, use a colon (\f[CB]:\f[R]) toseparate items in the path.For Windows, use a semicolon (\f[CB];\f[R]) to separate items..RS.RE.RE.TP.B \f[CB]/save\f[R] [\f[I]options\f[R]] \f[I]file\f[R]Saves snippets and commands to the file specified.If no options are entered, then active snippets are saved..RS.PPThe following options are valid:.TP.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]}...]Saves the snippets and commands identified by name, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of the code snippets..RS.RE.TP.B \f[CB]\-all\f[R]Saves all snippets, including startup snippets and snippets that wereoverwritten or failed..RS.RE.TP.B \f[CB]\-history\f[R]Saves the sequential history of all commands and snippets entered in thecurrent session..RS.RE.TP.B \f[CB]\-start\f[R]Saves the current startup settings.If no startup scripts were provided, then an empty file is saved..RS.RE.RE.TP.B \f[CB]/set\f[R] [\f[I]setting\f[R]]Sets configuration information, including the external editor, startupsettings, and feedback mode.This command is also used to create a custom feedback mode withcustomized prompt, format, and truncation values.If no setting is entered, then the current setting for the editor,startup settings, and feedback mode are displayed..RS.PPThe following values are valid for \f[CB]setting\f[R]:.TP.B \f[CB]editor\f[R] [\f[I]options\f[R]] [\f[I]command\f[R]]Sets the command used to start an external editor when the\f[CB]/edit\f[R] command is entered.The command can include command arguments separated by spaces.If no command or options are entered, then the current setting isdisplayed..RS.PPThe following options are valid:.TP.B \f[CB]\-default\f[R]Sets the editor to the default editor provided with JShell.This option can\[aq]t be used if a command for starting an editor isentered..RS.RE.TP.B \f[CB]\-delete\f[R]Sets the editor to the one in effect when the session started.If used with the \f[CB]\-retain\f[R] option, then the retained editorsetting is deleted and the editor is set to the first of the followingenvironment variables found: \f[CB]JSHELLEDITOR\f[R], \f[CB]VISUAL\f[R], or\f[CB]EDITOR\f[R].If none of the editor environment variables are set, then this optionsets the editor to the default editor..RS.PPThis option can\[aq]t be used if a command for starting an editor isentered..RE.TP.B \f[CB]\-retain\f[R]Saves the editor setting across sessions.If no other option or a command is entered, then the current setting issaved..RS.RE.TP.B \f[CB]\-wait\f[R]Prompts the user to indicate when editing is complete.Otherwise control returns to JShell when the editor exits.Use this option if the editor being used exits immediately, for example,when an edit window already exists.This option is valid only when a command for starting an editor isentered..RS.RE.RE.TP.B \f[CB]feedback\f[R] [\f[I]mode\f[R]]Sets the feedback mode used to respond to input.If no mode is entered, then the current mode is displayed..RS.PPThe following modes are valid: \f[CB]concise\f[R], \f[CB]normal\f[R],\f[CB]silent\f[R], \f[CB]verbose\f[R], and any custom mode created with the\f[CB]/set\ mode\f[R] command..RE.TP.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]Sets the format of the feedback provided in response to input.If no mode is entered, then the current formats for all fields for allfeedback modes are displayed.If only a mode is entered, then the current formats for that mode aredisplayed.If only a mode and field are entered, then the current formats for thatfield are displayed..RS.PPTo define a format, the following arguments are required:.TP.B \f[I]mode\f[R]Specifies a feedback mode to which the response format is applied.Only custom modes created with the \f[CB]/set\ mode\f[R] command can bemodified..RS.RE.TP.B \f[I]field\f[R]Specifies a context\-specific field to which the response format isapplied.The fields are described in the online help, which is accessed fromJShell using the \f[CB]/help\ /set\ format\f[R] command..RS.RE.TP.B \f[CB]"\f[R]\f[I]format\-string\f[R]\f[CB]"\f[R]Specifies the string to use as the response format for the specifiedfield and selector.The structure of the format string is described in the online help,which is accessed from JShell using the \f[CB]/help\ /set\ format\f[R]command..RS.RE.TP.B \f[I]selector\f[R]Specifies the context in which the response format is applied.The selectors are described in the online help, which is accessed fromJShell using the \f[CB]/help\ /set\ format\f[R] command..RS.RE.RE.TP.B \f[CB]mode\f[R] [\f[I]mode\-name\f[R]] [\f[I]existing\-mode\f[R]] [\f[I]options\f[R]]Creates a custom feedback mode with the mode name provided.If no mode name is entered, then the settings for all modes aredisplayed, which includes the mode, prompt, format, and truncationsettings.If the name of an existing mode is provided, then the settings from theexisting mode are copied to the mode being created..RS.PPThe following options are valid:.TP.B \f[CB]\-command\f[R]|\f[CB]\-quiet\f[R]Specifies the level of feedback displayed for commands when using themode.This option is required when creating a feedback mode.Use \f[CB]\-command\f[R] to show information and verification feedback forcommands.Use \f[CB]\-quiet\f[R] to show only essential feedback for commands, suchas error messages..RS.RE.TP.B \f[CB]\-delete\f[R]Deletes the named feedback mode for this session.The name of the mode to delete is required.To permanently delete a retained mode, use the \f[CB]\-retain\f[R] optionwith this option.Predefined modes can\[aq]t be deleted..RS.RE.TP.B \f[CB]\-retain\f[R]Saves the named feedback mode across sessions.The name of the mode to retain is required..RS.RE.PPConfigure the new feedback mode using the \f[CB]/set\ prompt\f[R],\f[CB]/set\ format\f[R], and \f[CB]/set\ truncation\f[R] commands..PPTo start using the new mode, use the \f[CB]/set\ feedback\f[R] command..RE.TP.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]Sets the prompts for input within JShell.If no mode is entered, then the current prompts for all feedback modesare displayed.If only a mode is entered, then the current prompts for that mode aredisplayed..RS.PPTo define a prompt, the following arguments are required:.TP.B \f[I]mode\f[R]Specifies the feedback mode to which the prompts are applied.Only custom modes created with the \f[CB]/set\ mode\f[R] command can bemodified..RS.RE.TP.B \f[CB]"\f[R]\f[I]prompt\-string\f[R]\f[CB]"\f[R]Specifies the string to use as the prompt for the first line of input..RS.RE.TP.B \f[CB]"\f[R]\f[I]continuation\-prompt\-string\f[R]\f[CB]"\f[R]Specifies the string to use as the prompt for the additional input linesneeded to complete a snippet..RS.RE.RE.TP.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]]Sets the names of the startup scripts used when the next\f[CB]/reset\f[R], \f[CB]/reload\f[R], or \f[CB]/env\f[R] command is entered.If more than one script is entered, then the scripts are run in theorder entered.If no scripts or options are entered, then the current startup settingsare displayed..RS.PPThe scripts can be local files or one of the following predefinedscripts:.TP.B \f[CB]DEFAULT\f[R]Loads the default entries, which are commonly used as imports..RS.RE.TP.B \f[CB]JAVASE\f[R]Imports all Java SE packages..RS.RE.TP.B \f[CB]PRINTING\f[R]Defines \f[CB]print\f[R], \f[CB]println\f[R], and \f[CB]printf\f[R] as\f[CB]jshell\f[R] methods for use within the tool..RS.RE.PPThe following options are valid:.TP.B \f[CB]\-default\f[R]Sets the startup settings to the default settings..RS.RE.TP.B \f[CB]\-none\f[R]Specifies that no startup settings are used..RS.RE.PPUse the \f[CB]\-retain\f[R] option to save the start setting acrosssessions..RE.TP.B \f[CB]truncation\f[R] \f[I]mode\f[R] \f[I]length\f[R] \f[I]selector\f[R]Sets the maximum length of a displayed value.If no mode is entered, then the current truncation values for allfeedback modes are displayed.If only a mode is entered, then the current truncation values for thatmode are displayed..RS.PPTo define truncation values, the following arguments are required:.TP.B \f[I]mode\f[R]Specifies the feedback mode to which the truncation value is applied.Only custom modes created with the \f[CB]/set\ mode\f[R] command can bemodified..RS.RE.TP.B \f[I]length\f[R]Specifies the unsigned integer to use as the maximum length for thespecified selector..RS.RE.TP.B \f[I]selector\f[R]Specifies the context in which the truncation value is applied.The selectors are described in the online help, which is accessed fromJShell using the \f[CB]/help\ /set\ truncation\f[R] command..RS.RE.RE.RE.TP.B \f[CB]/types\f[R] [\f[I]option\f[R]]Displays classes, interfaces, and enums that were entered.If no option is entered, then all current active classes, interfaces,and enums are displayed..RS.PPThe following options are valid:.TP.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]}...]Displays information for classes, interfaces, and enums identified byname, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of the code snippets..RS.RE.TP.B \f[CB]\-all\f[R]Displays information for all classes, interfaces, and enums, includingthose added when JShell was started, and classes, interfaces, and enumsthat failed, were overwritten, or were dropped..RS.RE.TP.B \f[CB]\-start\f[R]Displays information for startup classes, interfaces, and enums thatwere added when JShell was started..RS.RE.RE.TP.B \f[CB]/vars\f[R] [\f[I]option\f[R]]Displays the name, type, and value of variables that were entered.If no option is entered, then all current active variables aredisplayed..RS.PPThe following options are valid:.TP.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]}...]Displays information for variables identified by name, ID, or ID range.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.Use the \f[CB]/list\f[R] command to see the IDs of the code snippets..RS.RE.TP.B \f[CB]\-all\f[R]Displays information for all variables, including those added whenJShell was started, and variables that failed, were overwritten, or weredropped..RS.RE.TP.B \f[CB]\-start\f[R]Displays information for startup variables that were added when JShellwas started..RS.RE.RE.TP.B \f[CB]/?\f[R]Same as the \f[CB]/help\f[R] command..RS.RE.TP.B \f[CB]/!\f[R]Reruns the last snippet..RS.RE.TP.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]}...]Reruns the snippets identified by ID, range of IDs, or name.For a range of IDs, provide the starting ID and ending ID separated witha hyphen.To provide a list, separate the items in the list with a space.The first item in the list must be an ID or ID range.Use the \f[CB]/list\f[R] command to see the IDs of the code snippets..RS.RE.TP.B \f[CB]/\-\f[R]\f[I]n\f[R]Reruns the \-\f[I]n\f[R]th previous snippet.For example, if 15 code snippets were entered, then \f[CB]/\-4\f[R] runsthe 11th snippet.Commands aren\[aq]t included in the count..RS.RE.SH INPUT SHORTCUTS.PPThe following shortcuts are available for entering commands and snippetsin JShell..SS Tab completion.TP.B \f[B]<tab>\f[R]When entering snippets, commands, subcommands, command arguments, orcommand options, use the Tab key to automatically complete the item.If the item can\[aq]t be determined from what was entered, then possibleoptions are provided..RS.PPWhen entering a method call, use the Tab key after the method call\[aq]sopening parenthesis to see the parameters for the method.If the method has more than one signature, then all signatures aredisplayed.Pressing the Tab key a second time displays the description of themethod and the parameters for the first signature.Continue pressing the Tab key for a description of any additionalsignatures..RE.TP.B \f[B]Shift+<Tab> V\f[R]After entering a complete expression, use this key sequence to convertthe expression to a variable declaration of a type determined by thetype of the expression..RS.RE.TP.B \f[B]Shift+<Tab> M\f[R]After entering a complete expression or statement, use this key sequenceto convert the expression or statement to a method declaration.If an expression is entered, the return type is based on the type of theexpression..RS.RE.TP.B \f[B]Shift+<Tab> I\f[R]When an identifier is entered that can\[aq]t be resolved, use this keysequence to show possible imports that resolve the identifier based onthe content of the specified class path..RS.RE.SS Command abbreviations.PPAn abbreviation of a command is accepted if the abbreviation uniquelyidentifies a command.For example, \f[CB]/l\f[R] is recognized as the \f[CB]/list\f[R] command.However, \f[CB]/s\f[R] isn\[aq]t a valid abbreviation because it can\[aq]tbe determined if the \f[CB]/set\f[R] or \f[CB]/save\f[R] command is meant.Use \f[CB]/se\f[R] for the \f[CB]/set\f[R] command or \f[CB]/sa\f[R] for the\f[CB]/save\f[R] command..PPAbbreviations are also accepted for subcommands, command arguments, andcommand options.For example, use \f[CB]/m\ \-a\f[R] to display all methods..SS History navigation.PPA history of what was entered is maintained across sessions.Use the up and down arrows to scroll through commands and snippets fromthe current and past sessions.Use the Ctrl key with the up and down arrows to skip all but the firstline of multiline snippets..SS History search.PPUse the Ctrl+R key combination to search the history for the stringentered.The prompt changes to show the string and the match.Ctrl+R searches backwards from the current location in the historythrough earlier entries.Ctrl+S searches forward from the current location in the history thoughlater entries..SH INPUT EDITING.PPThe editing capabilities of JShell are similar to that of other commonshells.Keyboard keys and key combinations provide line editing shortcuts.The Ctrl key and Meta key are used in key combinations.If your keyboard doesn\[aq]t have a Meta key, then the Alt key is oftenmapped to provide Meta key functionality..PP.TStab(@);l l.T{Key or Key CombinationT}@T{ActionT}_T{ReturnT}@T{Enter the current line.T}T{Left arrowT}@T{Move the cursor to the left one character.T}T{Right arrowT}@T{Move the cursor to the right one character.T}T{Ctrl+AT}@T{Move the cursor to the beginning of the line.T}T{Ctrl+ET}@T{Move the cursor to the end of the line.T}T{Meta+BT}@T{Move the cursor to the left one word.T}T{Meta+FT}@T{Move the cursor to the right one word.T}T{DeleteT}@T{Delete the character under the cursor.T}T{BackspaceT}@T{Delete the character before the cursor.T}T{Ctrl+KT}@T{Delete the text from the cursor to the end of the line.T}T{Meta+DT}@T{Delete the text from the cursor to the end of the word.T}T{Ctrl+WT}@T{Delete the text from the cursor to the previous white space.T}T{Ctrl+YT}@T{Paste the most recently deleted text into the line.T}T{Meta+YT}@T{After Ctrl+Y, press to cycle through the previously deleted text.T}.TE.SH EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION.PPJShell is provided with the JDK.To start a session, enter \f[CB]jshell\f[R] on the command line.A welcome message is printed, and a prompt for entering commands andsnippets is provided..IP.nf\f[CB]%\ jshell|\ \ Welcome\ to\ JShell\ \-\-\ Version\ 9|\ \ For\ an\ introduction\ type:\ /help\ introjshell>\f[R].fi.PPTo see which snippets were automatically loaded when JShell started, usethe \f[CB]/list\ \-start\f[R] command.The default startup snippets are import statements for common packages.The ID for each snippet begins with the letter \f[I]s\f[R], whichindicates it\[aq]s a startup snippet..IP.nf\f[CB]jshell>\ /list\ \-start\ \ s1\ :\ import\ java.io.*;\ \ s2\ :\ import\ java.math.*;\ \ s3\ :\ import\ java.net.*;\ \ s4\ :\ import\ java.nio.file.*;\ \ s5\ :\ import\ java.util.*;\ \ s6\ :\ import\ java.util.concurrent.*;\ \ s7\ :\ import\ java.util.function.*;\ \ s8\ :\ import\ java.util.prefs.*;\ \ s9\ :\ import\ java.util.regex.*;\ s10\ :\ import\ java.util.stream.*;jshell>\f[R].fi.PPTo end the session, use the \f[CB]/exit\f[R] command..IP.nf\f[CB]jshell>\ /exit|\ \ Goodbye%\f[R].fi.SH EXAMPLE OF ENTERING SNIPPETS.PPSnippets are Java statements, variable definitions, method definitions,class definitions, import statements, and expressions.Terminating semicolons are automatically added to the end of a completedsnippet if they\[aq]re missing..PPThe following example shows two variables and a method being defined,and the method being run.Note that a scratch variable is automatically created to hold the resultbecause no variable was provided..IP.nf\f[CB]jshell>\ int\ a=4a\ ==>\ 4jshell>\ int\ b=8b\ ==>\ 8jshell>\ int\ square(int\ i1)\ {\ \ \ ...>\ return\ i1\ *\ i1;\ \ \ ...>\ }|\ \ created\ method\ square(int)jshell>\ square(b)$5\ ==>\ 64\f[R].fi.SH EXAMPLE OF CHANGING SNIPPETS.PPChange the definition of a variable, method, or class by entering itagain..PPThe following examples shows a method being defined and the method run:.IP.nf\f[CB]jshell>\ String\ grade(int\ testScore)\ {\ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 90)\ {\ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";\ \ \ ...>\ \ \ \ \ }\ \ \ ...>\ \ \ \ \ return\ "Fail";\ \ \ ...>\ }|\ \ created\ method\ grade(int)jshell>\ grade(88)$3\ ==>\ "Fail"\f[R].fi.PPTo change the method \f[CB]grade\f[R] to allow more students to pass,enter the method definition again and change the pass score to\f[CB]80\f[R].Use the up arrow key to retrieve the previous entries to avoid having toreenter them and make the change in the \f[CB]if\f[R] statement.The following example shows the new definition and reruns the method toshow the new result:.IP.nf\f[CB]jshell>\ String\ grade(int\ testScore)\ {\ \ \ ...>\ \ \ \ \ if\ (testScore\ >=\ 80)\ {\ \ \ ...>\ \ \ \ \ \ \ \ \ return\ "Pass";\ \ \ ...>\ \ \ \ \ }\ \ \ ...>\ \ \ \ \ return\ "Fail";\ \ \ ...>\ }|\ \ modified\ method\ grade(int)jshell>\ grade(88)$5\ ==>\ "Pass"\f[R].fi.PPFor snippets that are more than a few lines long, or to make more than afew changes, use the \f[CB]/edit\f[R] command to open the snippet in aneditor.After the changes are complete, close the edit window to return controlto the JShell session.The following example shows the command and the feedback provided whenthe edit window is closed.The \f[CB]/list\f[R] command is used to show that the pass score waschanged to \f[CB]85\f[R]..IP.nf\f[CB]jshell>\ /edit\ grade|\ \ modified\ method\ grade(int)jshell>\ /list\ grade\ \ \ 6\ :\ String\ grade(int\ testScore)\ {\ \ \ \ \ \ \ \ \ \ \ if\ (testScore\ >=\ 85)\ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\ "Pass";\ \ \ \ \ \ \ \ \ \ \ }\ \ \ \ \ \ \ \ \ \ \ return\ "Fail";\ \ \ \ \ \ \ }\f[R].fi.SH EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE.PPThe feedback mode determines the prompt that\[aq]s displayed, thefeedback messages that are provided as snippets are entered, and themaximum length of a displayed value.Predefined feedback modes are provided.Commands for creating custom feedback modes are also provided..PPUse the \f[CB]/set\ mode\f[R] command to create a new feedback mode.In the following example, the new mode \f[CB]mymode\f[R], is based on thepredefined feedback mode, \f[CB]normal\f[R], and verifying commandfeedback is displayed:.IP.nf\f[CB]jshell>\ /set\ mode\ mymode\ normal\ \-command|\ \ Created\ new\ feedback\ mode:\ mymode\f[R].fi.PPBecause the new mode is based on the \f[CB]normal\f[R] mode, the promptsare the same.The following example shows how to see what prompts are used and thenchanges the prompts to custom strings.The first string represents the standard JShell prompt.The second string represents the prompt for additional lines inmultiline snippets..IP.nf\f[CB]jshell>\ /set\ prompt\ mymode|\ \ /set\ prompt\ mymode\ "\\njshell>\ "\ "\ \ \ ...>\ "jshell>\ /set\ prompt\ mymode\ "\\nprompt$\ "\ "\ \ \ continue$\ "\f[R].fi.PPThe maximum length of a displayed value is controlled by the truncationsetting.Different types of values can have different lengths.The following example sets an overall truncation value of 72, and atruncation value of 500 for variable value expressions:.IP.nf\f[CB]jshell>\ /set\ truncation\ mymode\ 72jshell>\ /set\ truncation\ mymode\ 500\ varvalue\f[R].fi.PPThe feedback displayed after snippets are entered is controlled by theformat setting and is based on the type of snippet entered and theaction taken for that snippet.In the predefined mode \f[CB]normal\f[R], the string \f[CB]created\f[R] isdisplayed when a method is created.The following example shows how to change that string to\f[CB]defined\f[R]:.IP.nf\f[CB]jshell>\ /set\ format\ mymode\ action\ "defined"\ added\-primary\f[R].fi.PPUse the \f[CB]/set\ feedback\f[R] command to start using the feedback modethat was just created.The following example shows the custom mode in use:.IP.nf\f[CB]jshell>\ /set\ feedback\ mymode|\ \ Feedback\ mode:\ mymodeprompt$\ int\ square\ (int\ num1){\ \ \ continue$\ return\ num1*num1;\ \ \ continue$\ }|\ \ defined\ method\ square(int)prompt$\f[R].fi