= Shell = [[PageOutline]] HelenOS is primarily controlled by means of an interactive shell called ''Bdsh''. This sections teaches you the basics of using this shell. Type ''help'' (+Enter) to get a list of built-in commands. == Basics == The shell supports [UsersGuide/TextEditing common text-editing controls]. In addition to that the following controls are defined: || '''Keystroke''' || '''Action''' || || Enter || Submit and execute the command || || Up Arrow || Move to older history entry || || Down Arrow || Move to newer history entry || || Tab || Complete name of command or file || Other command-line driven applications (e.g. SBI) support exactly the same controls as the shell. (The command-line input is implemented in a common library called CLUI). == Internal Shell Commands == The shell supports a few basic commands which are built into it. (Such as listing directories, creating and moving them, deleting files, etc). Other HelenOS commands are external (i.e. these are executable files on the file system) - this is similar to other operating systems. To get a list of internal commands supported by the shell enter the command: {{{ # help }}} == External Commands == Most other HelenOS functionality is implemented in regular executable files (external commands), similar to other operating systems. These executables are traditionally divided into two groups: ''applications'' and ''servers''. ''Servers'' can be considered similar to UNIX daemons. When you run them in the right way, they will return control to the command line, but continue running in the background. To obtain a list of available servers: {{{ # ls /srv }}} ''Applications'' are regular executables that perform some task and terminate. They can also be interactive applications (e.g. Tetris). To obtain a list of available applications, enter: {{{ # ls /app }}} To execute a server or application, simply type its name (plus enter) on the command line. (Some servers or apps require command-line arguments, however). To run Tetris, for example, enter: {{{ # tetris }}} == Arguments with spaces == Bdsh supports syntax for passing arguments containing spaces. To enclose such an argument, use single quotes: {{{ # command 'hello world' }}} Embedding a literal single quote is also supported: {{{ # command 'Joe''s book' }}} == I/O redirection == It is possible to redirect standard input and output of a command from/to a file using the following syntax: || `from myinput.txt | command` || Will execute `command` with the input taken from file `myinput.txt` || || `command | to myoutput.txt` || Will execute `command` with its output written to file `myoutput.txt` || || `from myinput.txt | command | to myoutput.txt` || It is possible to redirect input and output at the same time || {{{#!box type=note HelenOS does not support pipes yet, so running `command | command` etc. is currently not supported. }}}