--- layout: docu title: Command Line Arguments --- The table below summarizes DuckDB's command line options. To list all command line options, use the command: ```batch duckdb -help ``` For a list of dot commands available in the CLI shell, see the [Dot Commands page]({% link docs/preview/clients/cli/dot_commands.md %}). | Argument | Description | | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-append` | Append the database to the end of the file | | `-ascii` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `ascii` | | `-bail` | Stop after hitting an error | | `-batch` | Force batch I/O | | `-box` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `box` | | `-column` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `column` | | `-cmd COMMAND` | Run `COMMAND` before reading `stdin` | | `-connect [TYPE[:SECRET]]` | Connect to a remote database. The default type is `quack`. A named secret can be provided after the type | | `-c COMMAND` | Run `COMMAND` and exit | | `-csv` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `csv` | | `-echo` | Print commands before execution | | `-f FILENAME` | Run the script in `FILENAME` and exit. Note that the `~/.duckdbrc` is read and executed first (if it exists) | | `-init FILENAME` | Run the script in `FILENAME` upon startup (instead of `~/.duckdbrc`) | | `-header` | Turn headers on | | `-help` | Show this message | | `-html` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to HTML | | `-interactive` | Force interactive I/O | | `-json` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `json` | | `-line` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `line` | | `-list` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `list` | | `-manual FUNCTION` | Show the [manual page]({% link docs/preview/clients/cli/dot_commands.md %}#displaying-function-documentation) for a SQL function and exit | | `-markdown` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `markdown` | | `-newline SEP` | Set output row separator. Default: `\n` | | `-nofollow` | Refuse to open symbolic links to database files | | `-noheader` | Turn headers off | | `-no-stdin` | Exit after processing options instead of reading stdin | | `-nullvalue TEXT` | Set text string for `NULL` values. Default: `NULL` | | `-quote` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `quote` | | `-readonly` | Open the database read-only. This option also supports attaching to remote databases via HTTPS | | `-s COMMAND` | Run `COMMAND` and exit | | `-separator SEP` | Set output column separator to `SEP`. Default: ` | ` | | `-serve [quack[:SECRET]]` | Serve the opened database with [Quack]({% link docs/preview/quack/overview.md %}). A named secret can be provided after the type | | `-storage-version VER` | Database [storage compatibility version]({% link docs/preview/internals/storage.md %}#storag-version_table) to use. To use the latest storage version, pass `-storage-version latest` | | `-table` | Set [output mode]({% link docs/preview/clients/cli/output_formats.md %}) to `table` | | `-ui` | Loads and starts the [DuckDB UI]({% link docs/preview/core_extensions/ui.md %}). If the UI is not yet installed, it installs the `ui` extension | | `-unsigned` | Allow loading of [unsigned extensions]({% link docs/preview/extensions/overview.md %}#unsigned-extensions). This option is intended to be used for developing extensions. Consult the [Securing DuckDB page]({% link docs/preview/operations_manual/securing_duckdb/securing_extensions.md %}) for guidelines on how to set up DuckDB in a secure manner | | `-version` | Show DuckDB version | ## Serving and Connecting to Remote Databases > New The `-serve` and `-connect` arguments will be introduced in DuckDB 2.0. The `-serve` argument starts a [Quack]({% link docs/preview/quack/overview.md %}) server for the database opened by the CLI. Without a database path or additional configuration, it serves an in-memory database on `localhost:9494`: ```batch duckdb -serve ``` To serve a persistent database, provide its path before `-serve`: ```batch duckdb analytics.duckdb -serve ``` The `-connect` argument connects the CLI to a remote database. It defaults to Quack's unnamed secret: ```batch duckdb -connect ``` Both arguments accept a connection type and an optional named secret in the form `TYPE:SECRET`. Only the `quack` type can be served. For example, after creating a persistent Quack secret named `analytics`, serve or connect with: ```batch duckdb analytics.duckdb -serve quack:analytics duckdb -connect quack:analytics ``` The `-connect` argument cannot be combined with a local database path because the CLI acts as a client for the remote database. ## Passing a Sequence of Arguments Note that the CLI arguments are processed in order, similarly to the behavior of the SQLite CLI. For example: ```batch duckdb -csv -c 'SELECT 42 AS hello' -json -c 'SELECT 84 AS world' ``` Returns the following: ```text hello 42 [{"world":84}] ``` > The `-init` script (or the default `~/.duckdbrc` when `-init` is not given) is an exception: it always runs at startup, before any `-cmd`, `-c`, or `-s` command, regardless of where it appears on the command line. You therefore cannot use a `-cmd` argument to inject configuration that takes effect before the init script runs. To set configuration that the init script depends on, place it at the top of the init script itself.