.\" Generated by gen_docs from crates/datui-cli. Do not edit.
.TH DATUI 1 2026-10-08 "datui 0.4.4" "User Commands"
.nr HY 0
.ds AD l
.SH NAME
datui \- terminal UI for tabular data
.SH SYNOPSIS
.nf
\fBdatui\fR [\fIOPTION\fR]... [\fIPATH\fR]...
\fIcommand\fR | \fBdatui\fR [\fIOPTION\fR]... [\fB\-\fR]
\fBdatui\fR \fICOMMAND\fR [\fIARG\fR]...
.fi
.SH DESCRIPTION
Datui is a terminal UI for tabular data: Parquet, CSV, JSON, Arrow and more, local or in S3, GCS, Azure and HTTP, from a few rows to a few billion. Run with no PATH for the home screen; \fBdatui formats\fR lists what it reads.
.PP
Each \fIPATH\fR is a file, a directory, a glob, or an \fBhttp://\fR, \fBhttps://\fR, \fBs3://\fR, \fBgs://\fR or \fBaz://\fR (\fBabfss://\fR) URL. Files of one shape are read as one table. \fB\-\fR reads standard input, as does no \fIPATH\fR when data is piped in; with no \fIPATH\fR and nothing piped in, datui starts at its home screen.
.PP
A file is scanned where it is wherever its format allows, and only the rows on screen are read; sorting, queries and analysis read what they need. datui-formats(7) says how each format is read. On any screen, \fB?\fR shows its keys; datui-keys(7) lists them all.
.SH OPTIONS
.SS "Arguments"
.TP
\fIPATH\fR ...
Files, directories, globs or URLs to open; files of one shape are one table. \- reads standard input, as does no PATH when data is piped in. No PATH opens the home screen.
.SS "Open"
.TP
\fB\-F\fR, \fB\-\-format\fR \fIFMT\fR
File format, when the extension does not say: parquet, csv, tsv, psv, json, jsonl, arrow, avro, orc, excel, safetensors, gguf, nmea, gpx, audio, midi, sqlite, vcd, fix, sdf, numpy, elf, ulog, dataflash, candump, text, journal; or a format spec: its name (\fBdatui formats\fR lists them), its file (a path with a / or ending .toml), or its http(s), s3, gs or az URL (at most 1 MiB).
.TP
\fB\-t\fR, \fB\-\-table\fR \fINAME\fR
Table to open from a file that holds several. Excel: a worksheet by name, or by 0-based index when no worksheet is so named. NMEA: fixes (default), GGA, RMC, VTG, GSA, GSV, GLL, ZDA or sentences. SQLite: a table or view by name. NumPy: an array of an archive (.npz) by name. ELF: symbols (default) or sections. ULog: a topic. DataFlash: a message type. candump: frames (default), signals, or a message a dictionary names. Hugging Face cache and DatasetDict directories: a split (default train).
.TP
\fB\-\-hive\fR
Read a glob as one partitioned table, or force partition columns on a directory whose layout does not say so. Ignored for a single file.
.TP
\fB\-\-compression\fR \fIC\fR
Compression, when the extension does not say: gzip, zstd, bzip2 or xz.
.TP
\fB\-\-dict\fR \fIFILE\fR
A dictionary to decode with, over those on the format search path: QuickFIX XML (.xml) for FIX logs, DBC (.dbc) for CAN logs, or TOML with kind = "fix" or "dbc". Repeatable.
.TP
\fB\-f\fR, \fB\-\-follow\fR
Follow the file as it grows, as tail \-f does: a local CSV, TSV, PSV or NDJSON file or Arrow IPC stream, or standard input (\-). t pauses and resumes; Esc stops.
.TP
\fB\-\-tee\fR \fIFILE\fR
Record standard input to FILE while viewing it. With \-, pass it on to standard output, as tee does, and draw on the terminal.
.TP
\fB\-\-tee\-raw\fR
With \-\-tee: keep FILE exactly as the bytes came. Otherwise a stream that left its header's sizes blank has them filled in when it ends.
.TP
\fB\-\-force\fR
With \-\-tee: replace FILE if it is there.
.TP
\fB\-\-hex\fR
Open in the hex view, whatever the file holds.
.TP
\fB\-\-hex\-width\fR \fIN\fR
Bytes a row of the hex view holds, so records line up (default: 8, 16, 32 or 64, as many as fit).
.TP
\fB\-\-view\fR \fINAME\fR
Apply a saved view by name once the data is on screen.
.TP
\fB\-\-temp\-dir\fR \fIDIR\fR
Directory for decompression temp files. Unset: the system's. [config: read.temp_dir].
.SS "Delimited text"
.TP
\fB\-\-delimiter\fR \fIC\fR
Column separator: one character, tab, \et or a code such as 0x1f (default: , for .csv, tab for .tsv, | for .psv).
.TP
\fB\-\-no\-header\fR
Read the first row as data; columns are named column_1, column_2, ...
.TP
\fB\-\-header\-rows\fR \fIN[,M...]\fR
The line, or comma-separated lines, holding the header, counted from 1 before anything is skipped. Several are joined per column ([csv] header_join); the data starts after the last.
.TP
\fB\-\-footer\-rows\fR \fIN\fR
Skip this many rows at the end, such as a footer. Reads the whole file to count rows.
.TP
\fB\-\-skip\-rows\fR \fIN\fR
Skip this many rows at the start; the header is read after them. Quote-aware, unlike \-\-skip-lines.
.TP
\fB\-\-skip\-lines\fR \fIN\fR
Skip this many raw lines at the start, split on newlines alone: a newline inside quotes counts.
.TP
\fB\-\-comment\fR \fIPREFIX\fR
Lines starting with this are comments, before the header and among the data. [config: csv.comment].
.TP
\fB\-\-skip\-initial\-space\fR[=\fIBOOL\fR]
Ignore the spaces after a delimiter, so padded numbers are numbers and a cell of spaces is null. [config: csv.skip_initial_space].
.TP
\fB\-\-null\fR \fIVAL\fR
Values read as null: VAL in every column, COL=VAL in column COL only. \-\-null is repeatable and replaces this list. [config: csv.null_values].
.TP
\fB\-\-infer\-types\fR[=\fICOLS|off\fR]
Read string columns as dates, times, durations or numbers where every value parses, after trimming: true for all, false for none, or a list of columns. CSV, and dates in JSON. A column with a leading zero (02134) stays text; a later value that does not parse is null, and the Notes tab counts them. [config: read.infer_types].
.TP
\fB\-\-infer\-rows\fR \fIN\fR
Rows read to infer column types. [config: csv.infer_rows].
.TP
\fB\-\-ignore\-errors\fR[=\fIBOOL\fR]
Skip rows that do not parse instead of failing. [config: csv.ignore_errors].
.SS "Display"
.TP
\fB\-\-row\-numbers\fR[=\fIBOOL\fR]
Number rows on the left by their place in the source, kept through a sort or filter (# toggles). auto: for text and logs; true or false: for all of them. [config: display.row_numbers].
.TP
\fB\-\-number\-format\fR \fIF\fR
Digit grouping: none, thousands, european, si, swiss, indian, underscore or system, or a [display.number_format] table (, toggles). [config: display.number_format].
.TP
\fB\-\-mouse\fR[=\fIBOOL\fR]
Take the mouse: the wheel scrolls, a click selects. false leaves it to the terminal. [config: display.mouse].
.TP
\fB\-\-sample\-rows\fR \fIN\fR
Rows an analysis samples from a larger table, spread across all of it; 0 reads every row. [config: analysis.sample_rows].
.SS "Config"
.TP
\fB\-c\fR, \fB\-\-config\fR \fIKEY=VALUE\fR
Set a config key for this run, as in the file: \-c display.\:row_numbers=true. Repeatable; a flag of the key's own still wins. \fBdatui config keys\fR lists them.
.SS "Logging"
.TP
\fB\-\-log\-file\fR \fIPATH\fR
Where the log goes. Unset: datui.log in the cache directory. [config: log.file].
.TP
\fB\-\-log\-level\fR \fILEVEL\fR
How much the log says (default warn). DATUI_LOG beats a config file's; \-c and \-\-log-level beat DATUI_LOG. [config: log.level].
.SS Help
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help: a summary with \fB\-h\fR, more with \fB\-\-help\fR.
.TP
\fB\-V\fR, \fB\-\-version\fR
Print the version.
.SH COMMANDS
.TP
\fBdatui formats\fR
List the format specs and dictionaries (FIX, DBC) on the search path: each one's name, what it matches, its file, and the copies it overrides. See datui-formats(1).
.TP
\fBdatui config\fR
Write the default config file, list the files read, or list every key. See datui-config(1).
.TP
\fBdatui catalog\fR
Show the catalogs of named datasets on the home screen, or check a catalog file. See datui-catalog(1).
.TP
\fBdatui theme\fR
List the themes, built in and in the config directory's themes/, or print one as a file to start from. See datui-theme(1).
.TP
\fBdatui cache\fR
Clear the cache: recents, history, schemas and copies. See datui-cache(1).
.TP
\fBdatui views\fR
List or remove saved views. See datui-views(1).
.TP
\fBdatui completions\fR
Print the shell completion script for SHELL. See datui-completions(1).
.TP
\fBdatui man\fR
Show a manual page, list them, or write them all under a directory. See datui-man(1).
.SH "EXIT STATUS"
.TP
\fB0\fR
Success: the session was quit (q, Ctrl+Q or Ctrl+C), or the command did what it was asked.
.TP
\fB1\fR
An error, printed to standard error: a PATH that is not there, a configuration file that cannot be used, nothing piped in for \-, or a command that failed (datui formats check on a spec with errors).
.TP
\fB2\fR
A usage error: an unknown option or command, or a value an option does not take.
.TP
\fB129\fR
The terminal hung up (SIGHUP). The screen is restored and temporary files removed first.
.TP
\fB130\fR
Interrupted by SIGINT, as from kill \-INT. The screen is restored and temporary files removed first.
.TP
\fB143\fR
Ended by SIGTERM. The screen is restored and temporary files removed first.
.SH ENVIRONMENT
.SS "datui"
.TP
\fBDATUI_CONFIG_DIR\fR
The config directory, in place of the platform's (\fB~/.config/datui\fR on Linux). Saved views and format specs live there too.
.TP
\fBDATUI_CACHE_DIR\fR
The cache directory, in place of the platform's (\fB~/.cache/datui\fR on Linux).
.TP
\fBDATUI_FORMATS_PATH\fR
Directories of format specs and dictionaries, separated as \fBPATH\fR is, searched before \fB[formats] path\fR.
.TP
\fBDATUI_LOG\fR
The log level: \fBerror\fR, \fBwarn\fR, \fBinfo\fR, \fBdebug\fR, \fBtrace\fR or \fBoff\fR. Beats \fBlog.level\fR in a file; \fB\-c\fR and \fB\-\-log\-level\fR beat it.
.TP
\fBDATUI_DEBUG\fR
\fB1\fR shows the debug overlay.
.TP
\fBDATUI_GCP_PROJECT\fR
The Google Cloud project to list when projects cannot be searched, as \fBGOOGLE_CLOUD_PROJECT\fR.
.TP
\fBDATUI_TRACE_FIRST_ROWS\fR
A file to write the time to, in Unix nanoseconds, once the first rows are drawn. For benchmarks.
.SS "Terminal"
.TP
\fBNO_COLOR\fR
Set to anything: no colors, the terminal's own for everything.
.TP
\fBCOLORTERM\fR, \fBTERM\fR, \fBFORCE_COLOR\fR
How many colors the terminal draws: 24-bit, 256 or 16. Theme colors are brought down to fit.
.TP
\fBCOLORFGBG\fR
With \fBtheme.mode = "auto"\fR, says whether the background is light or dark, for a terminal that does not answer when asked.
.TP
\fBTERM_PROGRAM\fR
With \fBtheme.mode = "auto"\fR, names the terminal whose last answer about its background picks the first frame's theme; \fBTERM\fR when unset.
.TP
\fBLC_ALL\fR, \fBLC_CTYPE\fR, \fBLANG\fR
With \fBdisplay.unicode = "auto"\fR, the first one set says whether the terminal takes UTF-8; when it does not, glyphs are ASCII. With none set, Windows draws Unicode and other systems ASCII.
.SS "Programs datui starts"
.TP
\fBVISUAL\fR, \fBEDITOR\fR, \fBPAGER\fR
The inspector's \fBo\fR opens text in the first one set, else \fBless\fR (on Windows, the system's opener).
.SS "Cloud logins"
Read as each provider's own tools read them; a variable set but empty counts as unset. \fB[cloud] env_files\fR can read them from \fB.env\fR files.
.TP
\fBAWS_PROFILE\fR
The AWS profile for \fBs3://\fR, else \fBdefault\fR.
.TP
\fBAWS_ACCESS_KEY_ID\fR, \fBAWS_SECRET_ACCESS_KEY\fR, \fBAWS_SESSION_TOKEN\fR
AWS keys, and the token of temporary ones.
.TP
\fBAWS_REGION\fR, \fBAWS_DEFAULT_REGION\fR
The AWS region.
.TP
\fBAWS_ENDPOINT_URL_S3\fR, \fBAWS_ENDPOINT_URL\fR, \fBAWS_ENDPOINT\fR
An S3-compatible endpoint (MinIO, R2, Ceph); the first one set.
.TP
\fBAWS_CONFIG_FILE\fR, \fBAWS_SHARED_CREDENTIALS_FILE\fR
The AWS config and credentials files, in place of \fB~/.aws/config\fR and \fB~/.aws/credentials\fR.
.TP
\fBGOOGLE_APPLICATION_CREDENTIALS\fR, \fBGOOGLE_SERVICE_ACCOUNT\fR, \fBGOOGLE_SERVICE_ACCOUNT_PATH\fR, \fBGOOGLE_SERVICE_ACCOUNT_KEY\fR
A Google Cloud service account or credentials file for \fBgs://\fR.
.TP
\fBGOOGLE_CLOUD_PROJECT\fR, \fBGCLOUD_PROJECT\fR, \fBCLOUDSDK_CORE_PROJECT\fR, \fBGCP_PROJECT\fR
The Google Cloud project to list buckets in, after \fBDATUI_GCP_PROJECT\fR; the first one set.
.TP
\fBCLOUDSDK_CONFIG\fR
The \fBgcloud\fR configuration directory, in place of \fB~/.config/gcloud\fR.
.TP
\fBAZURE_STORAGE_CONNECTION_STRING\fR
An Azure storage connection string, with \fBAccountKey\fR or \fBSharedAccessSignature\fR.
.TP
\fBAZURE_STORAGE_ACCOUNT_NAME\fR, \fBAZURE_STORAGE_ACCOUNT_KEY\fR, \fBAZURE_STORAGE_SAS_TOKEN\fR
An Azure storage account and its key or SAS token.
.TP
\fBAZURE_TENANT_ID\fR, \fBAZURE_CLIENT_ID\fR, \fBAZURE_CLIENT_SECRET\fR, \fBAZURE_FEDERATED_TOKEN_FILE\fR
An Azure service principal, or AKS workload identity.
.TP
\fBAZURE_CONFIG_DIR\fR
The Azure CLI's directory, in place of \fB~/.azure\fR.
.SH FILES
\fICONFIG\fR is \fB$DATUI_CONFIG_DIR\fR when it is set, else \fB$XDG_CONFIG_HOME/datui\fR (\fB~/.config/datui\fR) on Linux, \fB~/Library/Application Support/datui\fR on macOS and \fB%APPDATA%\edatui\fR on Windows.
.PP
\fICACHE\fR is \fB$DATUI_CACHE_DIR\fR when it is set, else \fB$XDG_CACHE_HOME/datui\fR (\fB~/.cache/datui\fR) on Linux, \fB~/Library/Caches/datui\fR on macOS and \fB%LOCALAPPDATA%\edatui\fR on Windows.
.TP
\fICONFIG\fR/config.toml
The config file: see datui-config(5). \fBdatui config path\fR prints the files read.
.TP
\fICONFIG\fR/catalog.toml
Your catalog, which Ctrl+D on the home screen adds to: see datui-catalog(1).
.TP
\fICONFIG\fR/catalogs/
More catalogs, one *.toml each, named by its file; examples.toml replaces the bundled one.
.TP
\fICONFIG\fR/views/
Saved views: see datui-views(1).
.TP
\fICONFIG\fR/formats/
Format specs and dictionaries, searched first: see datui-formats(7).
.TP
\fICACHE\fR/recents_history.txt
The recent datasets the home screen lists. \fBdatui cache clear \-\-recents\fR forgets them.
.TP
\fICACHE\fR/*_history.txt
The prompts' history.
.TP
\fICACHE\fR/shapes/, \fICACHE\fR/facts/, \fICACHE\fR/cloud_listings/
What the home screen has measured of datasets and listed of cloud sources, so it can show rows, columns and sizes without reading them again.
.TP
\fICACHE\fR/datui.log
The log, unless \fBlog.file\fR names another.
.SH EXAMPLES
Open the home screen. Example datasets lists the catalog that comes with datui.
.PP
.RS 4
.EX
datui
.EE
.RE
.PP
Palmer penguins from the web.
.PP
.RS 4
.EX
datui https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv
.EE
.RE
.PP
NOAA daily highs for 2024, one table from public S3.
.PP
.RS 4
.EX
datui s3://noaa\-ghcn\-pds/parquet/by_year/YEAR=2024/ELEMENT=TMAX/
.EE
.RE
.PP
A glob, read as one partitioned table: every 2024 element starting with T.
.PP
.RS 4
.EX
datui \-\-hive 's3://noaa\-ghcn\-pds/parquet/by_year/YEAR=2024/ELEMENT=T*/*.parquet'
.EE
.RE
.PP
Overture Maps releases in public Azure storage, listed on the home screen.
.PP
.RS 4
.EX
datui abfss://release@overturemapswestus2.dfs.core.windows.net/
.EE
.RE
.PP
A model's tensors, read from its header without downloading the weights.
.PP
.RS 4
.EX
datui https://huggingface.co/openai\-community/gpt2/resolve/main/model.safetensors
.EE
.RE
.PP
Data piped in; the format is read from its first bytes.
.PP
.RS 4
.EX
printf 'id,amount\en1,9.50\en2,3.25\en' | datui
.EE
.RE
.PP
The last 1,000 systemd journal entries, a column per field.
.PP
.RS 4
.EX
journalctl \-o json \-n 1000 | datui
.EE
.RE
.PP
Rows as they arrive; t pauses, Esc stops following.
.PP
.RS 4
.EX
(echo time,value; while sleep 0.2; do echo "$(date +%s),$RANDOM"; done) | datui \-f \-
.EE
.RE
.PP
A file's bytes in the hex view.
.PP
.RS 4
.EX
datui \-\-hex /bin/sh
.EE
.RE
.PP
Any config key, for this run.
.PP
.RS 4
.EX
datui \-c display.row_numbers=true https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv
.EE
.RE
.PP
Write the config file, every key commented out at its default.
.PP
.RS 4
.EX
datui config init
.EE
.RE
.PP
List the format specs and dictionaries datui finds.
.PP
.RS 4
.EX
datui formats
.EE
.RE
.PP
The keys of every screen, as a manual page.
.PP
.RS 4
.EX
datui man keys
.EE
.RE
.PP
Print the catalog datui ships, the worked example of the format.
.PP
.RS 4
.EX
datui catalog show examples
.EE
.RE
.SH "SEE ALSO"
\fBdatui\-config\fR(1), \fBdatui\-catalog\fR(1), \fBdatui\-theme\fR(1), \fBdatui\-cache\fR(1), \fBdatui\-views\fR(1), \fBdatui\-formats\fR(1), \fBdatui\-completions\fR(1), \fBdatui\-man\fR(1), \fBdatui\-config\fR(5), \fBdatui\-keys\fR(7), \fBdatui\-query\fR(7), \fBdatui\-formats\fR(7), \fBjq\fR(1), \fBless\fR(1), \fBjournalctl\fR(1), \fBvd\fR(1)
.PP
The datui documentation: <https:/\:/\:derekwisong.\:github.\:io/\:datui/\:>
.SH BUGS
Report bugs at <https:/\:/\:github.\:com/\:derekwisong/\:datui/\:issues>.
.SH AUTHORS
Derek Wisong and the datui contributors.
.SH COPYRIGHT
Copyright \(co 2026 Derek Wisong
.PP
datui is free software under the MIT License.