Cicada Shell Builtins


Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.

Aliases are created and listed with the alias command, and removed with the unalias command.

alias [name][=value]

Without arguments, alias prints the list of aliases on the standard output in a form that allows them to be reused as input. If arguments are supplied, an alias is defined for each name whose value is given. If no value is given, the name and value of the alias is printed.


Make stopped job runing in background. See also fg, jobs.


Change your current work directory.


Print information of cicada and OS.


If command is specified, it replaces the shell. No new process is created. The arguments become the arguments to command.


Exit the current progress (the shell). Can exit with an extra code like: exit 2.


Change environment variables for current session. You can also use export in RC-file.


$ export PATH="/usr/local/bin:$PATH:$HOME/.cargo/bin"
$ export RUST_BACKTRACE=full
$ export PYTHONPATH=.


Bring background job into foreground. See also bg, jobs.


List your recent history

$ history
1: touch docs/
2: mvim docs/
3: find . -name '*.bk' | xargs rm
4: find . -name '*.bk'

Search history items (use % from SQL to match "anything")

$ history curl
1: curl -x
2: curl -I

$ history 'curl%hugo'
1: curl -x

More features

$ history --help

    history [FLAGS] [OPTIONS] [PATTERN]

    -a, --asc          Search old items first
    -h, --help         Prints help information
    -n, --no-id        Do not show ROWID
    -o, --only-id      Only show ROWID
    -p, --pwd          For current directory only
    -s, --session      For current session only
    -d, --show-date    Show date
    -V, --version      Prints version information

    -l, --limit <limit>     [default: 20]

    <PATTERN>    You can use % to match anything [default: ]

Delete history items

$ history delete <item-id>


Listing all jobs in job control. See also bg, fg.


Read and execute commands from the filename argument in the current shell context. It stops at first command with non-zero return status.

source filename

If filename does not contain a slash, the PATH variable is used to find filename. The current directory is searched if filename is not found in $PATH. If any arguments are supplied, they become the positional parameters when filename is executed. The return status is the exit status of the last command executed, or zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero. Like in Bash, this builtin is equivalent to . (a period).


Remove an alias. Usage example: $ unalias ls.


First, tell cicada where is your root directory of virtualenv in rcfile. One example:

export VIRTUALENV_HOME="${HOME}/.local/share/venvs"

Create your env with something like:

python3 -m venv ~/.local/share/venvs/my-project

Then use vox to enter it:

$ vox enter my-project
(my-project) $  # now you activated your env

List your envs under $VIRTUALENV_HOME dir:

$ vox ls

Exit (deactivate) your env:

(my-project) $ vox exit
$  # now you're clean