dwww Home | Manual pages | Find package

JSHELL(1)                        JDK Commands                        JSHELL(1)

NAME
       jshell  -  interactively evaluate declarations, statements, and expres-
       sions of the Java programming language in a read-eval-print loop (REPL)

SYNOPSIS
       jshell [options] [load-files]

       options
              Command-line options, separated  by  spaces.   See  Options  for
              jshell.

       load-files
              One  or  more  scripts to run when the tool is started.  Scripts
              can contain any valid code snippets or JShell commands.

              The script can be a local file or one  of  following  predefined
              scripts:

              DEFAULT
                     Loads the default entries, which are commonly used as im-
                     ports.

              JAVASE Imports all Java SE packages.

              PRINTING
                     Defines print, println, and printf as jshell methods  for
                     use within the tool.

              TOOLING
                     Defines  javac,  jar,  and  other methods for running JDK
                     tools via their command-line interface within the  jshell
                     tool.

              For  more  than  one  script, use a space to separate the names.
              Scripts are run in the order in which  they're  entered  on  the
              command  line.   Command-line  scripts  are  run  after  startup
              scripts.  To run a script after JShell is started, use the /open
              command.

              To accept input from standard input and suppress the interactive
              I/O, enter a hyphen (-) for load-files.  This option enables the
              use of the jshell tool in pipe chains.

DESCRIPTION
       JShell  provides  a  way to interactively evaluate declarations, state-
       ments, and expressions of the Java programming language, making it eas-
       ier to learn the language, explore unfamiliar code and APIs, and proto-
       type complex code.  Java statements, variable definitions, method defi-
       nitions,  class definitions, import statements, and expressions are ac-
       cepted.  The bits of code entered are called snippets.

       As snippets are entered, they're evaluated, and feedback  is  provided.
       Feedback  varies  from the results and explanations of actions to noth-
       ing, 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 the tool.

       Command-line options are available for configuring the initial environ-
       ment when JShell is started.  Within JShell, commands are available for
       modifying the environment as needed.

       Existing snippets can be loaded from a file to initialize a JShell ses-
       sion, or at any time within a session.  Snippets can be modified within
       the session to try out different variations and make  corrections.   To
       keep snippets for later use, save them to a file.

OPTIONS FOR JSHELL
       --add-exports module/package
              Specifies a package to be considered as exported from its defin-
              ing module.

       --add-modules module[,module...]
              Specifies the root modules to resolve in addition to the initial
              module.

       -Cflag Provides  a flag to pass to the compiler.  To pass more than one
              flag, provide an instance of this option for each flag  or  flag
              argument needed.

       --class-path path
              Specifies  the directories and archives that are searched to lo-
              cate class files.  This option overrides the path in the  CLASS-
              PATH  environment  variable.   If the environment variable isn't
              set and this option isn't used, then the  current  directory  is
              searched.   For  Linux  and  macOS,  use a colon (:) to separate
              items in the path.  For Windows, use a semicolon (;) to separate
              items.

       --enable-preview
              Allows code to depend on the preview features of this release.

       --execution specification
              Specifies  an alternate execution engine, where specification is
              an ExecutionControl spec.  See the documentation of the  package
              jdk.jshell.spi for the syntax of the spec.

       --feedback mode
              Sets  the  initial  level  of  feedback  provided in response to
              what's entered.  The initial level can be  overridden  within  a
              session by using the /set feedback mode command.  The default is
              normal.

              The following values are valid for mode:

              verbose
                     Provides detailed feedback for entries.   Additional  in-
                     formation  about  the action performed is displayed after
                     the result of the action.  The next prompt  is  separated
                     from the feedback by a blank line.

              normal Provides  an average amount of feedback.  The next prompt
                     is separated from the feedback by a blank line.

              concise
                     Provides minimal feedback.  The next  prompt  immediately
                     follows the code snippet or feedback.

              silent Provides  no  feedback.  The next prompt immediately fol-
                     lows the code snippet.

              custom Provides custom feedback based on how  the  mode  is  de-
                     fined.   Custom  feedback modes are created within JShell
                     by using the /set mode command.

       --help or -h or -?
              Prints a summary of standard options and exits the tool.

       --help-extra or -X
              Prints a summary of nonstandard  options  and  exits  the  tool.
              Nonstandard options are subject to change without notice.

       -Jflag Provides  a  flag  to  pass to the runtime system.  To pass more
              than one flag, provide an instance of this option for each  flag
              or flag argument needed.

       --module-path modulepath
              Specifies where to find application modules.  For Linux and mac-
              OS, use a colon (:) to separate items in the path.  For Windows,
              use a semicolon (;) to separate items.

       --no-startup
              Prevents  startup  scripts from running when JShell starts.  Use
              this option to run only the scripts entered on the command  line
              when JShell is started, or to start JShell without any preloaded
              information if no scripts are entered.   This  option  can't  be
              used if the --startup option is used.

       -q     Sets the feedback mode to concise, which is the same as entering
              --feedback concise.

       -Rflag Provides a flag to pass to the remote runtime system.   To  pass
              more  than one flag, provide an instance of this option for each
              flag or flag argument to pass.

       -s     Sets the feedback mode to silent, which is the same as  entering
              --feedback silent.

       --show-version
              Prints version information and enters the tool.

       --startup file
              Overrides  the  default  startup  script  for this session.  The
              script can contain any valid code snippets or commands.

              The script can be a local file or one of  the  following  prede-
              fined scripts:

              DEFAULT
                     Loads the default entries, which are commonly used as im-
                     ports.

              JAVASE Imports all Java SE packages.

              PRINTING
                     Defines print, println, and printf as jshell methods  for
                     use within the tool.

              TOOLING
                     Defines  javac,  jar,  and  other methods for running JDK
                     tools via their command-line interface within the  jshell
                     tool.

              For  more  than  one script, provide a separate instance of this
              option for each script.  Startup scripts are run when JShell  is
              first started and when the session is restarted with the /reset,
              /reload, or /env command.  Startup scripts are run in the  order
              in which they're entered on the command line.

              This option can't be used if the --no-startup option is used.

       -v     Sets the feedback mode to verbose, which is the same as entering
              --feedback verbose.

       --version
              Prints version information and exits the tool.

JSHELL COMMANDS
       Within the jshell tool, commands are used to modify the environment and
       manage code snippets.

       /drop {name|id|startID-endID} [{name|id|startID-endID}...]
              Drops  snippets identified by name, ID, or ID range, making them
              inactive.  For a range of IDs, provide the starting ID and  end-
              ing ID separated with a hyphen.  To provide a list, separate the
              items in the list with a space.  Use the /list  command  to  see
              the IDs of code snippets.

       /edit [option]
              Opens an editor.  If no option is entered, then the editor opens
              with the active snippets.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     Opens the editor with the snippets  identified  by  name,
                     ID,  or ID range.  For a range of IDs, provide the start-
                     ing ID and ending ID separated with a hyphen.  To provide
                     a list, separate the items in the list with a space.  Use
                     the /list command to see the IDs of code snippets.

              -all   Opens the editor with  all  snippets,  including  startup
                     snippets  and  snippets that failed, were overwritten, or
                     were dropped.

              -start Opens the editor with startup snippets that were evaluat-
                     ed when JShell was started.

              To  exit  edit  mode, close the editor window, or respond to the
              prompt provided if the -wait option was used when the editor was
              set.

              Use the /set editor command to specify the editor to use.  If no
              editor is set, then  the  following  environment  variables  are
              checked  in order: JSHELLEDITOR, VISUAL, and EDITOR.  If no edi-
              tor is set in JShell and none of the  editor  environment  vari-
              ables is set, then a simple default editor is used.

       /env [options]
              Displays  the  environment  settings, or updates the environment
              settings and restarts the session.  If  no  option  is  entered,
              then  the current environment settings are displayed.  If one or
              more options are entered, then the session is restarted as  fol-
              lows:

              • Updates the environment settings with the provided options.

              • Resets the execution state.

              • Runs the startup scripts.

              • Silently replays the history in the order entered.  The histo-
                ry includes all valid snippets or /drop  commands  entered  at
                the  jshell prompt, in scripts entered on the command line, or
                scripts entered with the /open command.

              Environment settings entered on the  command  line  or  provided
              with  a previous /reset, /env, or /reload command are maintained
              unless an option is entered that overwrites the setting.

              The following options are valid:

              --add-modules module[,module...]
                     Specifies the root modules to resolve in addition to  the
                     initial module.

              --add-exports   source-module/package=target-module[,target-mod-
              ule]*
                     Adds an export of package from source-module  to  target-
                     module.

              --class-path path
                     Specifies  the directories and archives that are searched
                     to locate class files.  This option overrides the path in
                     the  CLASSPATH  environment variable.  If the environment
                     variable isn't set and this option isn't used,  then  the
                     current  directory is searched.  For Linux and macOS, use
                     a colon (:) to separate items in the path.  For  Windows,
                     use a semicolon (;) to separate items.

              --module-path modulepath
                     Specifies  where  to find application modules.  For Linux
                     and macOS, use a colon (:) to separate items in the path.
                     For Windows, use a semicolon (;) to separate items.

       /exit [integer-expression-snippet]
              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, the result is used as the exit status.  If an error
              occurs, or the result of the snippet is not an integer, an error
              is displayed and the tool remains active.

       /history
              Displays what was entered in this session.

       /help [command|subject]
              Displays information about commands and subjects.  If no options
              are entered, then a summary of information for all commands  and
              a  list of available subjects are displayed.  If a valid command
              is provided, then expanded information for that command is  dis-
              played.   If  a valid subject is entered, then information about
              that subject is displayed.

              The following values for subject are valid:

              context
                     Describes the options that are available for  configuring
                     the environment.

              intro  Provides an introduction to the tool.

              shortcuts
                     Describes  keystrokes  for  completing commands and snip-
                     pets.  See Input Shortcuts.

       /imports
              Displays the current active imports, including  those  from  the
              startup  scripts  and  scripts  that were entered on the command
              line when JShell was started.

       /list [option]
              Displays a list of snippets and their IDs.  If no option is  en-
              tered, then all active snippets are displayed, but startup snip-
              pets aren't.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     Displays the snippets  identified  by  name,  ID,  or  ID
                     range.   For  a range of IDs, provide the starting ID and
                     ending ID separated with a hyphen.  To  provide  a  list,
                     separate the items in the list with a space.

              -all   Displays  all  snippets,  including  startup snippets and
                     snippets that failed, were overwritten, or were  dropped.
                     IDs that begin with s are startup snippets.  IDs that be-
                     gin with e are snippets that failed.

              -start Displays startup snippets that were evaluated when JShell
                     was started.

       /methods [option]
              Displays information about the methods that were entered.  If no
              option is entered, then the name, parameter  types,  and  return
              type of all active methods are displayed.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     Displays  information for methods identified by name, ID,
                     or ID range.  For a range of IDs, provide the starting ID
                     and  ending  ID  separated  with  a hyphen.  To provide a
                     list, separate the items in the list with a  space.   Use
                     the /list command to see the IDs of code snippets.

              -all   Displays  information  for  all  methods, including those
                     added when JShell was started, and methods  that  failed,
                     were overwritten, or were dropped.

              -start Displays  information for startup methods that were added
                     when JShell was started.

       /open file
              Opens the script specified and reads the snippets into the tool.
              The  script  can  be a local file or one of the following prede-
              fined scripts:

              DEFAULT
                     Loads the default entries, which are commonly used as im-
                     ports.

              JAVASE Imports all Java SE packages.

              PRINTING
                     Defines  print, println, and printf as jshell methods for
                     use within the tool.

              TOOLING
                     Defines javac, jar, and other  methods  for  running  JDK
                     tools  via their command-line interface within the jshell
                     tool.

       /reload [options]
              Restarts the session as follows:

              • Updates the environment settings with the provided options, if
                any.

              • Resets the execution state.

              • Runs the startup scripts.

              • Replays  the  history  in  the order entered.  The history in-
                cludes all valid snippets or /drop  commands  entered  at  the
                jshell  prompt,  in  scripts  entered  on the command line, or
                scripts entered with the /open command.

              Environment settings entered on the  command  line  or  provided
              with  a previous /reset, /env, or /reload command are maintained
              unless an option is entered that overwrites the setting.

              The following options are valid:

              --add-modules module[,module...]
                     Specifies the root modules to resolve in addition to  the
                     initial module.

              --add-exports   source-module/package=target-module[,target-mod-
              ule]*
                     Adds an export of package from source-module  to  target-
                     module.

              --class-path path
                     Specifies  the directories and archives that are searched
                     to locate class files.  This option overrides the path in
                     the  CLASSPATH  environment variable.  If the environment
                     variable isn't set and this option isn't used,  then  the
                     current  directory is searched.  For Linux and macOS, use
                     a colon (:) to separate items in the path.  For  Windows,
                     use a semicolon (;) to separate items.

              --module-path modulepath
                     Specifies  where  to find application modules.  For Linux
                     and macOS, use a colon (:) to separate items in the path.
                     For Windows, use a semicolon (;) to separate items.

              -quiet Replays  the valid history without displaying it.  Errors
                     are displayed.

              -restore
                     Resets the environment to the state at the start  of  the
                     previous  run  of  the tool or to the last time a /reset,
                     /reload, or /env command was  executed  in  the  previous
                     run.   The  valid  history  since that point is replayed.
                     Use this option to restore a previous JShell session.

       /reset [options]
              Discards all entered snippets and restarts the session  as  fol-
              lows:

              • Updates the environment settings with the provided options, if
                any.

              • Resets the execution state.

              • Runs the startup scripts.

              History is not replayed.  All code that was entered is lost.

              Environment settings entered on the  command  line  or  provided
              with  a previous /reset, /env, or /reload command are maintained
              unless an option is entered that overwrites the setting.

              The following options are valid:

              --add-modules module[,module...]
                     Specifies the root modules to resolve in addition to  the
                     initial module.

              --add-exports   source-module/package=target-module[,target-mod-
              ule]*
                     Adds an export of package from source-module  to  target-
                     module.

              --class-path path
                     Specifies  the directories and archives that are searched
                     to locate class files.  This option overrides the path in
                     the  CLASSPATH  environment variable.  If the environment
                     variable isn't set and this option isn't used,  then  the
                     current  directory is searched.  For Linux and macOS, use
                     a colon (:) to separate items in the path.  For  Windows,
                     use a semicolon (;) to separate items.

              --module-path modulepath
                     Specifies  where  to find application modules.  For Linux
                     and macOS, use a colon (:) to separate items in the path.
                     For Windows, use a semicolon (;) to separate items.

       /save [options] file
              Saves  snippets  and  commands to the file specified.  If no op-
              tions are entered, then active snippets are saved.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     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 with  a  hyphen.   To  provide  a
                     list,  separate  the items in the list with a space.  Use
                     the /list command to see the IDs of the code snippets.

              -all   Saves all snippets, including startup snippets and  snip-
                     pets that were overwritten or failed.

              -history
                     Saves the sequential history of all commands and snippets
                     entered in the current session.

              -start Saves  the  current  startup  settings.   If  no  startup
                     scripts were provided, then an empty file is saved.

       /set [setting]
              Sets  configuration  information, including the external editor,
              startup settings, and feedback mode.  This command is also  used
              to create a custom feedback mode with customized prompt, format,
              and truncation values.  If no setting is entered, then the  cur-
              rent setting for the editor, startup settings, and feedback mode
              are displayed.

              The following values are valid for setting:

              editor [options] [command]
                     Sets the command used to start an  external  editor  when
                     the  /edit  command  is entered.  The command can include
                     command arguments separated by spaces.  If no command  or
                     options  are  entered,  then  the current setting is dis-
                     played.

                     The following options are valid:

                     -default
                            Sets the editor to  the  default  editor  provided
                            with  JShell.  This option can't be used if a com-
                            mand for starting an editor is entered.

                     -delete
                            Sets the editor to the one in effect when the ses-
                            sion  started.   If  used with the -retain option,
                            then the retained editor setting  is  deleted  and
                            the  editor  is  set to the first of the following
                            environment variables found: JSHELLEDITOR, VISUAL,
                            or  EDITOR.   If  none  of  the editor environment
                            variables are set, then this option sets the  edi-
                            tor to the default editor.

                            This  option can't be used if a command for start-
                            ing an editor is entered.

                     -retain
                            Saves the editor setting across sessions.   If  no
                            other  option  or  a  command is entered, then the
                            current setting is saved.

                     -wait  Prompts the user to indicate when editing is  com-
                            plete.   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 is en-
                            tered.

              feedback [mode]
                     Sets the feedback mode used to respond to input.   If  no
                     mode is entered, then the current mode is displayed.

                     The  following  modes are valid: concise, normal, silent,
                     verbose, and any custom mode created with the  /set  mode
                     command.

              format mode field "format-string" selector
                     Sets  the  format of the feedback provided in response to
                     input.  If no mode is entered, then the  current  formats
                     for  all fields for all feedback modes are displayed.  If
                     only a mode is entered, then the current formats for that
                     mode  are  displayed.   If  only a mode and field are en-
                     tered, then the current formats for that field  are  dis-
                     played.

                     To define a format, the following arguments are required:

                     mode   Specifies  a  feedback  mode to which the response
                            format is applied.  Only custom modes created with
                            the /set mode command can be modified.

                     field  Specifies  a  context-specific  field to which the
                            response format is applied.  The  fields  are  de-
                            scribed in the online help, which is accessed from
                            JShell using the /help /set format command.

                     "format-string"
                            Specifies the string to use as the response format
                            for  the specified field and selector.  The struc-
                            ture of the format string is described in the  on-
                            line help, which is accessed from JShell using the
                            /help /set format command.

                     selector
                            Specifies the context in which the response format
                            is  applied.   The  selectors are described in the
                            online help, which is accessed from  JShell  using
                            the /help /set format command.

              mode [mode-name] [existing-mode] [options]
                     Creates a custom feedback mode with the mode name provid-
                     ed.  If no mode name is entered, then  the  settings  for
                     all modes are displayed, which includes the mode, prompt,
                     format, and truncation settings.  If the name of  an  ex-
                     isting  mode  is provided, then the settings from the ex-
                     isting mode are copied to the mode being created.

                     The following options are valid:

                     -command|-quiet
                            Specifies the level of feedback displayed for com-
                            mands  when  using  the  mode.  This option is re-
                            quired when creating a feedback mode.   Use  -com-
                            mand to show information and verification feedback
                            for commands.  Use -quiet to show  only  essential
                            feedback for commands, such as error messages.

                     -delete
                            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 -re-
                            tain option with this  option.   Predefined  modes
                            can't be deleted.

                     -retain
                            Saves  the  named  feedback  mode across sessions.
                            The name of the mode to retain is required.

                     Configure the new feedback mode using  the  /set  prompt,
                     /set format, and /set truncation commands.

                     To  start  using the new mode, use the /set feedback com-
                     mand.

              prompt mode "prompt-string" "continuation-prompt-string"
                     Sets the prompts for input within JShell.  If no mode  is
                     entered,  then the current prompts for all feedback modes
                     are displayed.  If only a mode is entered, then the  cur-
                     rent prompts for that mode are displayed.

                     To define a prompt, the following arguments are required:

                     mode   Specifies  the  feedback mode to which the prompts
                            are applied.  Only custom modes created  with  the
                            /set mode command can be modified.

                     "prompt-string"
                            Specifies  the string to use as the prompt for the
                            first line of input.

                     "continuation-prompt-string"
                            Specifies the string to use as the prompt for  the
                            additional  input lines needed to complete a snip-
                            pet.

              start [-retain] [file [file...]|option]
                     Sets the names of the startup scripts used when the  next
                     /reset,  /reload,  or  /env  command is entered.  If more
                     than one script is entered, then the scripts are  run  in
                     the order entered.  If no scripts or options are entered,
                     then the current startup settings are displayed.

                     The scripts can be local files or one  of  the  following
                     predefined scripts:

                     DEFAULT
                            Loads the default entries, which are commonly used
                            as imports.

                     JAVASE Imports all Java SE packages.

                     PRINTING
                            Defines print, println, and printf as jshell meth-
                            ods for use within the tool.

                     TOOLING
                            Defines  javac, jar, and other methods for running
                            JDK tools via their command-line interface  within
                            the jshell tool.

                     The following options are valid:

                     -default
                            Sets the startup settings to the default settings.

                     -none  Specifies that no startup settings are used.

                     Use  the  -retain option to save the start setting across
                     sessions.

              truncation mode length selector
                     Sets the maximum length of a displayed value.  If no mode
                     is  entered,  then  the current truncation values for all
                     feedback modes are displayed.  If only a mode is entered,
                     then the current truncation values for that mode are dis-
                     played.

                     To define truncation values, the following arguments  are
                     required:

                     mode   Specifies  the  feedback mode to which the trunca-
                            tion value is applied.  Only custom modes  created
                            with the /set mode command can be modified.

                     length Specifies the unsigned integer to use as the maxi-
                            mum length for the specified selector.

                     selector
                            Specifies the context in which the truncation val-
                            ue is applied.  The selectors are described in the
                            online help, which is accessed from  JShell  using
                            the /help /set truncation command.

       /types [option]
              Displays  classes,  interfaces, and enums that were entered.  If
              no option is entered, then all current  active  classes,  inter-
              faces, and enums are displayed.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     Displays  information  for classes, interfaces, and enums
                     identified by name, ID, or ID range.  For a range of IDs,
                     provide  the  starting  ID and ending ID separated with a
                     hyphen.  To provide a list, separate  the  items  in  the
                     list  with a space.  Use the /list command to see the IDs
                     of the code snippets.

              -all   Displays information for  all  classes,  interfaces,  and
                     enums, including those added when JShell was started, and
                     classes, interfaces, and enums that  failed,  were  over-
                     written, or were dropped.

              -start Displays information for startup classes, interfaces, and
                     enums that were added when JShell was started.

       /vars [option]
              Displays the name, type, and value of variables  that  were  en-
              tered.   If  no option is entered, then all current active vari-
              ables are displayed.

              The following options are valid:

              {name|id|startID-endID} [{name|id|startID-endID}...]
                     Displays information for variables  identified  by  name,
                     ID,  or ID range.  For a range of IDs, provide the start-
                     ing ID and ending ID separated with a hyphen.  To provide
                     a list, separate the items in the list with a space.  Use
                     the /list command to see the IDs of the code snippets.

              -all   Displays information for all variables,  including  those
                     added when JShell was started, and variables that failed,
                     were overwritten, or were dropped.

              -start Displays information  for  startup  variables  that  were
                     added when JShell was started.

       /?     Same as the /help command.

       /!     Reruns the last snippet.

       /{name|id|startID-endID} [{name|id|startID-endID}...]
              Reruns  the  snippets  identified  by ID, range of IDs, or name.
              For a range of IDs, provide the starting ID and ending ID  sepa-
              rated  with  a 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 /list command to see the IDs of the code
              snippets.

       /-n    Reruns the -nth previous snippet.  For example, if 15 code snip-
              pets  were  entered,  then  /-4 runs the 11th snippet.  Commands
              aren't included in the count.

INPUT SHORTCUTS
       The following shortcuts are available for entering commands  and  snip-
       pets in JShell.

   Tab completion
       <tab>  When  entering  snippets,  commands,  subcommands, command argu-
              ments, or command options, use the Tab key to automatically com-
              plete  the  item.  If the item can't be determined from what was
              entered, then possible options are provided.

              When entering a method call, use the Tab key  after  the  method
              call's opening parenthesis to see the parameters for the method.
              If the method has more than one signature, then  all  signatures
              are  displayed.  Pressing the Tab key a second time displays the
              description of the method and the parameters for the first  sig-
              nature.   Continue pressing the Tab key for a description of any
              additional signatures.

       Shift+<Tab> V
              After entering a complete expression, use this key  sequence  to
              convert  the  expression to a variable declaration of a type de-
              termined by the type of the expression.

       Shift+<Tab> M
              After entering a complete expression or statement, use this  key
              sequence to convert the expression or statement to a method dec-
              laration.  If an expression is entered, the return type is based
              on the type of the expression.

       Shift+<Tab> I
              When  an  identifier is entered that can't be resolved, use this
              key sequence to show possible imports that resolve the identifi-
              er based on the content of the specified class path.

   Command abbreviations
       An  abbreviation  of a command is accepted if the abbreviation uniquely
       identifies a command.  For example, /l is recognized as the /list  com-
       mand.   However,  /s isn't a valid abbreviation because it can't be de-
       termined if the /set or /save command is meant.  Use /se for  the  /set
       command or /sa for the /save command.

       Abbreviations are also accepted for subcommands, command arguments, and
       command options.  For example, use /m -a to display all methods.

   History navigation
       A history of what was entered is maintained across sessions.   Use  the
       up  and  down  arrows  to scroll through commands and snippets from the
       current and past sessions.  Use the Ctrl key with the up and  down  ar-
       rows to skip all but the first line of multiline snippets.

   History search
       Use the Ctrl+R key combination to search the history for the string en-
       tered.  The prompt changes to show the string and  the  match.   Ctrl+R
       searches  backwards  from  the  current location in the history through
       earlier entries.  Ctrl+S searches forward from the current location  in
       the history though later entries.

INPUT EDITING
       The  editing capabilities of JShell are similar to that of other common
       shells.  Keyboard keys and key combinations provide line editing short-
       cuts.  The Ctrl key and Meta key are used in key combinations.  If your
       keyboard doesn't have a Meta key, then the Alt key is often  mapped  to
       provide Meta key functionality.

       Line Editing Shortcuts

       Key or Key Combination   Action
       ────────────────────────────────────────────────────
       Return                   Enter the current line.
       Left arrow               Move  the  cursor  to  the
                                left one character.
       Right arrow Move         the cursor  to  the  right
                                one character.
       Ctrl+A                   Move the cursor to the be-
                                ginning of the line.
       Ctrl+E                   Move the cursor to the end
                                of the line.
       Meta+B                   Move  the  cursor  to  the
                                left one word.
       Meta+F                   Move  the  cursor  to  the
                                right one word.
       Delete                   Delete the character under
                                the cursor.
       Backspace                Delete the  character  be-
                                fore the cursor.
       Ctrl+K                   Delete  the  text from the
                                cursor to the end  of  the
                                line.
       Meta+D                   Delete  the  text from the
                                cursor to the end  of  the
                                word.
       Ctrl+W                   Delete  the  text from the
                                cursor  to  the   previous
                                white space.
       Ctrl+Y                   Paste  the  most  recently
                                deleted  text   into   the
                                line.
       Meta+Y                   After Ctrl+Y, press to cy-
                                cle through the previously
                                deleted text.

EXAMPLE OF STARTING AND STOPPING A JSHELL SESSION
       JShell  is  provided with the JDK.  To start a session, enter jshell on
       the command line.  A welcome message is printed, and a prompt  for  en-
       tering commands and snippets is provided.

              % jshell
              |  Welcome to JShell -- Version 9
              |  For an introduction type: /help intro

              jshell>

       To  see  which  snippets were automatically loaded when JShell started,
       use the /list -start command.  The default startup snippets are  import
       statements  for  common  packages.  The ID for each snippet begins with
       the letter s, which indicates it's a startup snippet.

              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>

       To end the session, use the /exit command.

              jshell> /exit
              |  Goodbye

              %

EXAMPLE OF ENTERING SNIPPETS
       Snippets are Java statements, variable definitions, method definitions,
       class  definitions,  import  statements,  and expressions.  Terminating
       semicolons are automatically added to the end of a completed snippet if
       they're missing.

       The  following  example shows two variables and a method being defined,
       and the method being run.  Note that a scratch variable is automatical-
       ly created to hold the result because no variable was provided.

              jshell> int a=4
              a ==> 4

              jshell> int b=8
              b ==> 8

              jshell> int square(int i1) {
                 ...> return i1 * i1;
                 ...> }
              |  created method square(int)

              jshell> square(b)
              $5 ==> 64

EXAMPLE OF CHANGING SNIPPETS
       Change  the  definition  of a variable, method, or class by entering it
       again.

       The following examples shows a method being defined and the method run:

              jshell> String grade(int testScore) {
                 ...>     if (testScore >= 90) {
                 ...>         return "Pass";
                 ...>     }
                 ...>     return "Fail";
                 ...> }
              |  created method grade(int)

              jshell> grade(88)
              $3 ==> "Fail"

       To change the method grade to allow more students to  pass,  enter  the
       method  definition  again  and change the pass score to 80.  Use the up
       arrow key to retrieve the previous entries to avoid having  to  reenter
       them  and  make  the change in the if statement.  The following example
       shows the new definition and reruns the method to show the new result:

              jshell> String grade(int testScore) {
                 ...>     if (testScore >= 80) {
                 ...>         return "Pass";
                 ...>     }
                 ...>     return "Fail";
                 ...> }
              |  modified method grade(int)

              jshell> grade(88)
              $5 ==> "Pass"

       For snippets that are more than a few lines long, or to make more  than
       a  few changes, use the /edit command to open the snippet in an editor.
       After the changes are complete, close the edit window to return control
       to the JShell session.  The following example shows the command and the
       feedback provided when the edit window is closed.  The /list command is
       used to show that the pass score was changed to 85.

              jshell> /edit grade
              |  modified method grade(int)
              jshell> /list grade

                 6 : String grade(int testScore) {
                         if (testScore >= 85) {
                             return "Pass";
                         }
                         return "Fail";
                     }

EXAMPLE OF CREATING A CUSTOM FEEDBACK MODE
       The  feedback mode determines the prompt that's displayed, the feedback
       messages that are provided as snippets are  entered,  and  the  maximum
       length  of  a displayed value.  Predefined feedback modes are provided.
       Commands for creating custom feedback modes are also provided.

       Use the /set mode command to create a new feedback mode.  In  the  fol-
       lowing  example,  the new mode mymode, is based on the predefined feed-
       back mode, normal, and verifying command feedback is displayed:

              jshell> /set mode mymode normal -command
              |  Created new feedback mode: mymode

       Because the new mode is based on the normal mode, the prompts  are  the
       same.  The following example shows how to see what prompts are used and
       then changes the prompts to custom strings.  The  first  string  repre-
       sents  the  standard  JShell  prompt.  The second string represents the
       prompt for additional lines in multiline snippets.

              jshell> /set prompt mymode
              |  /set prompt mymode "\njshell> " "   ...> "

              jshell> /set prompt mymode "\nprompt$ " "   continue$ "

       The maximum length of a displayed value is controlled by the truncation
       setting.   Different  types  of values can have different lengths.  The
       following example sets an overall truncation value of 72, and a trunca-
       tion value of 500 for variable value expressions:

              jshell> /set truncation mymode 72

              jshell> /set truncation mymode 500 varvalue

       The  feedback displayed after snippets are entered is controlled by the
       format setting and is based on the type of snippet entered and the  ac-
       tion taken for that snippet.  In the predefined mode normal, the string
       created is displayed when a method is created.  The  following  example
       shows how to change that string to defined:

              jshell> /set format mymode action "defined" added-primary

       Use the /set feedback command to start using the feedback mode that was
       just created.  The following example shows the custom mode in use:

              jshell> /set feedback mymode
              |  Feedback mode: mymode

              prompt$ int square (int num1){
                 continue$ return num1*num1;
                 continue$ }
              |  defined method square(int)

              prompt$

JDK 21                               2023                            JSHELL(1)

Generated by dwww version 1.15 on Sat Jun 29 01:58:01 CEST 2024.