type=page
status=published
title=list-commands
next=list-components.html
prev=list-clusters.html
~~~~~~
list-commands
=============

[[list-commands-1]][[GSRFM00154]][[list-commands]]

list-commands
-------------

lists available commands

[[sthref1381]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] list-commands [--help] 
[--localonly={false|true}] [--remoteonly={false|true}] 

pattern-list
----

[[sthref1382]]

Description

The `list-commands` subcommand lists the `asadmin` subcommands.

By default, the `list-commands` subcommand displays a list of local
subcommands followed by a list of remote subcommands. You can specify
that only remote subcommands or only local subcommands are listed and
that only subcommands whose names contain a specified text string are
listed.

This subcommand is supported in local mode and remote mode.

[[sthref1383]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--localonly`::
  If this option is set to true, only local commands are listed. Default
  is false. +
  If this option is set to true, the `--remoteonly` option must be set
  to false. Otherwise, an error occurs.
`--remoteonly`::
  If this option is set to true, only remote commands are listed.
  Default is false. +
  If this option is set to true, the `--localonly` option must be set to
  false. Otherwise, an error occurs.

[[sthref1384]]

Operands

pattern-list::
  A space-separated list of text strings on which to filter the list of
  subcommands. Only the subcommands that contain any one of the
  specified text strings is listed.

[[sthref1385]]

Examples

[[GSRFM644]][[sthref1386]]

Example 1   Listing the Local Subcommands

This example lists only the local subcommands.

[source,oac_no_warn]
----
asadmin> list-commands --localonly=true
********** Local Commands **********
change-admin-password
change-master-password
create-domain
create-service
delete-domain
export
help
list-commands
list-domains
login
monitor
multimode
restart-domain
start-database
start-domain
stop-database
stop-domain
unset
verify-domain-xml
version
Command list-commands executed successfully.
----

[[GSRFM645]][[sthref1387]]

Example 2   Filtering the Subcommands That Are Listed

This example lists only the subcomands whose names contain the text
`configure` or `set`.

[source,oac_no_warn]
----
asadmin> list-commands configure set
********** Local Commands **********
setup-ssh
unset

********** Remote Commands **********
configure-jms-cluster                   set-log-levels
configure-lb-weight                     set-web-context-param
configure-ldap-for-admin                set-web-env-entry
set                                     unset-web-context-param
set-log-attributes                      unset-web-env-entry

Command list-commands executed successfully.
----

[[GSRFM646]][[sthref1388]]

Example 3   Listing All Subcommands

This example first displays a list of the local subcommands, followed by
a partial list of the remote subcommands.

[source,oac_no_warn]
----
asadmin> list-commands
********** Local Commands **********
change-admin-password
change-master-password
create-domain
create-service
delete-domain
export
help
list-commands
list-domains
login
monitor
multimode
restart-domain
start-database
start-domain
stop-database
stop-domain
unset
verify-domain-xml
version
********** Remote Commands **********
__locations                             enable
add-resources                           enable-monitoring
configure-ldap-for-admin                flush-jmsdest
create-admin-object                     freeze-transaction-service
create-audit-module                     generate-jvm-report
create-auth-realm                       get
create-connector-connection-pool        get-client-stubs
create-connector-resource               get-host-and-port
create-connector-security-map           jms-ping
create-connector-work-security-map      list
create-custom-resource                  list-admin-objects
create-file-user                        list-app-refs
create-http                             list-applications
create-http-listener                    list-audit-modules
create-iiop-listener                    list-auth-realms
create-javamail-resource                list-components
create-jdbc-connection-pool             list-connector-connection-pools
create-jdbc-resource                    list-connector-resources
create-jms-host                         list-connector-security-maps
create-jms-resource                     list-connector-work-security-maps
create-jmsdest                          list-containers
create-jndi-resource                    list-custom-resources
create-jvm-options                      list-file-groups
create-lifecycle-module                 list-file-users
create-message-security-provider        list-http-listeners
create-network-listener                 list-iiop-listeners
create-password-alias                   list-javamail-resources
create-profiler                         list-jdbc-connection-pools
create-protocol                         list-jdbc-resources
create-resource-adapter-config          list-jms-hosts
create-resource-ref                     list-jms-resources
create-ssl                              list-jmsdest
create-system-properties                list-jndi-entries
create-threadpool                       list-jndi-resources
create-transport                        list-jvm-options
create-virtual-server                   list-lifecycle-modules
delete-admin-object                     list-logger-levels
delete-audit-module                     list-message-security-providers
...
----

[[sthref1389]]

Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref1390]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:list-components.html#list-components-1[`list-components`(1)],
link:list-containers.html#list-containers-1[`list-containers`(1)],
link:list-modules.html#list-modules-1[`list-modules`(1)]


