blob: 4069e6fe66d3e1c448d0d25a3a18237784f2cb0a [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>NuttShell (NSH) &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Overview" href="nsh.html" />
<link rel="prev" title="Applications" href="../index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home"> NuttX
<img src="../../_static/NuttX.png" class="logo" alt="Logo"/>
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../latest" selected="selected">latest</option>
<option value="../../../10.0.0" >10.0.0</option>
<option value="../../../10.0.1" >10.0.1</option>
<option value="../../../10.1.0" >10.1.0</option>
<option value="../../../10.2.0" >10.2.0</option>
<option value="../../../10.3.0" >10.3.0</option>
<option value="../../../11.0.0" >11.0.0</option>
<option value="../../../12.0.0" >12.0.0</option>
<option value="../../../12.1.0" >12.1.0</option>
<option value="../../../12.2.0" >12.2.0</option>
<option value="../../../12.2.1" >12.2.1</option>
<option value="../../../12.3.0" >12.3.0</option>
<option value="../../../12.4.0" >12.4.0</option>
<option value="../../../12.5.0" >12.5.0</option>
<option value="../../../12.5.1" >12.5.1</option>
<option value="../../../12.6.0" >12.6.0</option>
<option value="../../../12.7.0" >12.7.0</option>
<option value="../../../12.8.0" >12.8.0</option>
<option value="../../../12.9.0" >12.9.0</option>
<option value="../../../12.10.0" >12.10.0</option>
<option value="../../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../components/index.html">OS Components</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Applications</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">NuttShell (NSH)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="nsh.html">Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="commands.html">Commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="config.html">Configuration Settings</a></li>
<li class="toctree-l3"><a class="reference internal" href="customizing.html">Customizing the NuttShell</a></li>
<li class="toctree-l3"><a class="reference internal" href="builtin.html">NSH “Built-In” Applications</a></li>
<li class="toctree-l3"><a class="reference internal" href="installation.html">Customizing NSH Initialization</a></li>
<li class="toctree-l3"><a class="reference internal" href="login.html">Shell Login</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="../index.html">Applications</a> &raquo;</li>
<li>NuttShell (NSH)</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/applications/nsh/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="nuttshell-nsh">
<h1>NuttShell (NSH)<a class="headerlink" href="#nuttshell-nsh" title="Permalink to this headline"></a></h1>
<p>The NuttShell is a very complete shell system to be used in NuttX, similar to bash and other similar options. It supports a rich set of included commands, scripting and the ability to run your own applications as “builtin” (part of the same NuttX binary). NSH is implemented as an application where most of the functionality is part of the library called <cite>nshlib</cite>.</p>
<p>As such, NSH is completely optional and can be disabled so that NuttX directly starts a given task instead of the main <code class="docutils literal notranslate"><span class="pre">nsh</span></code> application.</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Contents</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="nsh.html">Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#console-nsh-front-end">Console/NSH Front End</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#command-overview">Command Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#conditional-command-execution">Conditional Command Execution</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#looping">Looping</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#built-in-variables">Built-In Variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#current-working-directory">Current Working Directory</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#environment-variables">Environment Variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh.html#nsh-start-up-script">NSH Start-Up Script</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">Commands</a><ul>
<li class="toctree-l2"><a class="reference internal" href="commands.html#evaluate-expression-test">Evaluate Expression (test)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#add-a-routing-table-entry-addroute">Add a Routing Table Entry (addroute)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#access-the-arp-table-arp">Access the ARP table (arp)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#base64-decode-base64dec">Base64 Decode (base64dec)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#base64-encode-base64enc">Base64 Encode (base64enc)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#extract-base-file-directory-name-basename">Extract Base File/Directory Name (basename)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#terminate-a-loop-break">Terminate a Loop (break)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#concatenate-files-cat">Concatenate Files (cat)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#change-current-working-directory-cd">Change Current Working Directory (cd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#compare-files-cmp">Compare Files (cmp)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#copy-files-cp">Copy Files (cp)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-or-set-the-date-and-time-date">Show or set the date and time (date)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#copy-and-convert-files-dd">Copy and Convert Files (dd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#delete-a-routing-table-entry-delroute">Delete a Routing Table Entry (delroute)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-volume-status-df">Show Volume Status (df)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#extract-path-to-a-file-directory-dirname">Extract Path to a File/Directory (dirname)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#dump-buffered-syslog-output-dmesg">Dump Buffered SYSLOG Output (dmesg)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#echo-strings-and-variables-echo">Echo Strings and Variables (echo)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-environment-variables-env">Show Environment Variables (env)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#execute-user-code-exec">Execute User Code (exec)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#exit-nsh-exit">Exit NSH (exit)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#set-an-environment-variable-export">Set an Environment Variable (export)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-memory-manager-status-free">Show Memory Manager Status (free)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#get-file-via-tftp-get">Get File Via TFTP (get)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-usage-command-usage-help">Show Usage Command Usage (help)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#hexadecimal-dump-of-file-or-device-hexdump">Hexadecimal Dump of File or Device (hexdump)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#manage-network-configuration-ifconfig">Manage Network Configuration (ifconfig)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#take-a-network-down-ifdown">Take a network down (ifdown)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#bring-a-network-up-ifup">Bring a network up (ifup)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#install-an-os-module-insmod">Install an OS module (insmod)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-interrupt-status-irqinfo">Show Interrupt Status (irqinfo)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#send-a-signal-to-a-task-kill">Send a signal to a task (kill)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#setup-teardown-the-loop-device-losetup">Setup/teardown the Loop Device (losetup)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#link-to-a-file-or-directory-ln">Link to a File or Directory (ln)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#list-directory-contents-ls">List Directory Contents (ls)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-information-about-installed-os-modules-lsmod">Show information about installed OS modules (lsmod)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#calculate-md5-md5">Calculate MD5 (md5)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#access-memory-mb-mh-and-mw">Access Memory (mb, mh, and mw)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-current-tasks-and-threads-ps">Show Current Tasks and Threads (ps)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#create-a-directory-mkdir">Create a Directory (mkdir)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#create-a-fat-file-system-mkfatfs">Create a FAT File System (mkfatfs)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#create-a-fifo-mkfifo">Create a FIFO (mkfifo)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#create-a-ramdisk-mkrd">Create a RAMDISK (mkrd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#mount-a-file-system-mount">Mount a File System (mount)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#rename-a-file-mv">Rename a File (mv)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#mount-an-nfs-file-system-nfsmount">Mount an NFS file system (nfsmount)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#lookup-a-network-address-nslookup">Lookup a network address (nslookup)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#change-a-user-s-password-passwd">Change a User’s Password (passwd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#manage-power-management-subsystem-pmconfig">Manage Power Management Subsystem (pmconfig)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#shut-the-system-down-poweroff">Shut the system down (poweroff)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#send-file-via-tftp-put">Send File Via TFTP (put)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-current-working-directory-pwd">Show Current Working Directory (pwd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-target-of-a-link-readlink">Show target of a link (readlink)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#reboot-the-system-reboot">Reboot the system (reboot)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#remove-a-file-rm">Remove a File (rm)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#remove-a-directory-rmdir">Remove a Directory (rmdir)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#remove-on-os-module-rmmod">Remove on OS Module (rmmod)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#show-routing-table-route">Show routing table (route)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#start-stop-the-openamp-rpc-tunnel-rptun">Start/Stop the OpenAMP RPC Tunnel (rptun)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#set-a-variable-set">Set a Variable (set)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#execute-an-nsh-script-sh">Execute an NSH Script (sh)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#shut-the-system-down-shutdown">Shut the system down (shutdown)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#wait-for-seconds-sleep">Wait for Seconds (sleep)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#time-start-the-telnet-daemon-telnetd">Time Start the Telnet Daemon (telnetd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#time-execution-of-another-command-time">Time execution of another command (time)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#set-the-size-of-a-file-truncate">Set the Size of a File (truncate)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#unmount-a-file-system-umount">Unmount a File System (umount)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#print-system-information-uname">Print system information (uname)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#unset-an-environment-variable-unset">Unset an Environment Variable (unset)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#url-decode-urldecode">URL Decode (urldecode)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#url-encode-urlencode">URL Encode (urlencode)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#add-a-new-user-useradd">Add a New User (useradd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#delete-a-user-userdel">Delete a user (userdel)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#wait-for-microseconds-usleep">Wait for Microseconds (usleep)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#get-file-via-http-wget">Get File Via HTTP (wget)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#hexadecimal-dump-of-memory-xd">Hexadecimal Dump of Memory (xd)</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands.html#check-network-peer-ping-ping6">Check Network Peer (ping/ping6)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration Settings</a><ul>
<li class="toctree-l2"><a class="reference internal" href="config.html#command-dependencies-on-configuration-settings">Command Dependencies on Configuration Settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="config.html#built-in-command-dependencies-on-configuration-settings">Built-In Command Dependencies on Configuration Settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="config.html#nsh-specific-configuration-settings">NSH-Specific Configuration Settings</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="customizing.html">Customizing the NuttShell</a><ul>
<li class="toctree-l2"><a class="reference internal" href="customizing.html#the-nsh-library-and-nsh-initialization">The NSH Library and NSH Initialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="customizing.html#nsh-commands">NSH Commands</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="builtin.html">NSH “Built-In” Applications</a><ul>
<li class="toctree-l2"><a class="reference internal" href="builtin.html#built-in-applications">Built-In Applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="builtin.html#synchronous-built-in-applications">Synchronous Built-In Applications</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Customizing NSH Initialization</a><ul>
<li class="toctree-l2"><a class="reference internal" href="installation.html#nuttshell-start-up-scripts">NuttShell Start up Scripts</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="login.html">Shell Login</a><ul>
<li class="toctree-l2"><a class="reference internal" href="login.html#enabling-shell-logins">Enabling Shell Logins</a></li>
<li class="toctree-l2"><a class="reference internal" href="login.html#verification-of-credentials">Verification of Credentials</a></li>
<li class="toctree-l2"><a class="reference internal" href="login.html#password-files">Password Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="login.html#creating-a-password-file-for-a-romfs-file-system">Creating a Password File for a ROMFS File System</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="nsh.html" class="btn btn-neutral float-right" title="Overview" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="Applications" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2020, The Apache Software Foundation.
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>