- DocumentID: exec
  Title: >+
    `exec`
  CategoryID: commands
  Summary: >-
    Runs an executable
  Description: |-
    With Murex, like most other shells, you launch a process by calling the
    name of that executable directly. While this is suitable 99% of the time,
    occasionally you might run into an edge case where that wouldn't work. The
    primary reason being if you needed to launch a process from a variable, eg

    ```
    » set exe=uname
    » $exe
    uname
    ```

    As you can see here, Murex's behavior here is to output the contents of
    the variable rather then executing the contents of the variable. This is
    done for safety reasons, however if you wanted to override that behavior
    then you could prefix the variable with exec:

    ```
    » set exe=uname
    » exec $exe
    Linux
    ```
  Usage: |-
    ```
    <stdin> -> exec
    <stdin> -> exec -> <stdout>
               exec -> <stdout>
    ```
  Examples: |-
    ```
    » exec printf "Hello, world!"
    Hello, world!
    ```

    **Working around aliases:**

    If you have an alias like `alias ls=ls --color=auto` and you wanted to run `ls`
    but without colour, you might run `exec ls`.
  Flags:
  Detail: |-
    If any command doesn't exist as a builtin, function nor alias, then Murex
    will default to forking out to any command with this name (subject to an
    absolute path or the order of precedence in `$PATH`). Any forked process will
    show up in both the operating systems process viewer (eg `ps`) but also
    Murex's own process viewer, `fid-list`. However inside `fid-list` you will
    notice that all external processes are listed as `exec` with the process name
    as part of `exec`'s parameters. That is because `exec` is handler for programs
    that aren't native to Murex.

    ### Compatibility with POSIX

    For compatibility with traditional shells like Bash and Zsh, `command` is an
    alias for `exec`.
  Synonyms:
  - exec
  - command
  Related:
  - fexec
  - set
  - fid-list
  - fid-kill
  - fid-killall
  - bg
  - fg
  - jobs
  - murex-update-exe-list
  - builtins
  - bexists


- DocumentID: die
  Title: >+
    `die`
  CategoryID: commands
  Summary: >-
    Terminate murex with an exit number of 1
  Description: |-
    Terminate Murex with an exit number of 1.
  Usage: |-
    ```
    die
    ```
  Examples: |-
    ```
    » die
    ```
  Flags:
  Detail: |-
  Synonyms:
  Related:
  - exit
  - devnull
  - break


- DocumentID: exit
  Title: >+
    `exit`
  CategoryID: commands
  Summary: >-
    Exit murex
  Description: |-
    Exit's Murex with either a exit number of 0 (by default if no parameters
    supplied) or a custom value specified by the first parameter.

    `exit` is not scope aware; if it is included in a function then the whole
    shell will still exist and not just that function.
  Usage: |-
    ```
    exit
    exit number
    ```
  Examples: |-
    ```
    » exit
    ```

    ```
    » exit 42
    ```
  Flags:
  Detail: |-
  Synonyms:
  Related:
  - die
  - devnull
  - break


- DocumentID: devnull
  Title: >+
    `null`
  CategoryID: commands
  Summary: >-
    null function. Similar to /dev/null
  Description: |-
    `null` is a function that acts a little like the `null` data type and the
    UNIX /dev/null device.
  Usage: |-
    ```
    <stdin> -> null
    ```
  Examples: |-
    ```
    » out: "Hello, world!" -> null
    ```
  Flags:
  Detail: |-
    While this method does exist, a more idiomatic way to suppress STDOUT is to
    use the named pipe property rather than piping to null:

    ```
    » out: <null> "Hello, world!"
    ```
  Synonyms:
  - "null"
  Related:
  - die
  - exit
  - break


- DocumentID: "true"
  Title: >+
    `true`
  CategoryID: commands
  Summary: >-
    Returns a `true` value
  Description: |-
    Returns a `true` value.
  Usage: |-
    ```
    true -> <stdout>
    ```
  Examples: |-
    By default, `true` also outputs the term "true":

    ```
    » true
    true
    ```

    However you can suppress that with the silent flag:

    ```
    » true -s
    ```
  Flags:
    -s: silent - don't output the term "true"
  Detail: |-
  Synonyms:
  Related:
  - "false"
  - and
  - or
  - if
  - "not"


- DocumentID: "false"
  Title: >+
    `false`
  CategoryID: commands
  Summary: >-
    Returns a `false` value
  Description: |-
    Returns a `false` value.
  Usage: |-
    ```
    false -> <stdout>
    ```
  Examples: |-
    By default, `false` also outputs the term "false":

    ```
    » false
    false
    ```

    However you can suppress that with the silent flag:

    ```
    » false -s
    ```
  Flags:
    -s: silent - don't output the term "false"
  Detail: |-
  Synonyms:
  Related:
  - "true"
  - and
  - or
  - if
  - "not"


- DocumentID: "not"
  Title: >+
    `!` (not)
  CategoryID: commands
  Summary: >-
    Reads the STDIN and exit number from previous process and not's it's condition
  Description: |-
    Reads the STDIN and exit number from previous process and not's it's condition.
  Usage: |-
    ```
    <stdin> -> ! -> <stdout>
    ```
  Examples: |-
    ```
    » echo "Hello, world!" -> !
    false
    ```

    ```
    » false -> !
    true
    ```
  Flags:
  Detail: |-
  Synonyms:
  - "!"
  Related:
  - "true"
  - and
  - or
  - if
  - "false"


- DocumentID: cast
  Title: >+
    `cast`
  CategoryID: commands
  Summary: >-
    Alters the data type of the previous function without altering it's output
  Description: |-
    `cast` works a little like when you case variables in lower level languages
    where the value of the variable is unchanged. In Murex the contents in
    the pipeline are preserved however the reported data type is altered.
  Usage: |-
    ```
    <stdin> -> cast data-type -> <stdout>
    ```
  Examples: |-
    ```
    » out: {"Array":[1,2,3],"Map":{"String": "Foobar","Number":123.456}} -> cast json
    {"Array":[1,2,3],"Map":{"String": "Foobar","Number":123.456}}
    ```
  Flags:
  Detail: |-
    If you want to reformat the STDIN into the new data type then use `format`
    instead.
  Synonyms:
  Related:
  - out
  - tout
  - format