BashFlagSpecs.json
|
{
"alias": [ { "flag": "-p", "desc": "list all aliases" }, { "flag": "-u", "desc": "unalias mode" }, { "flag": "-a", "desc": "remove all (with -u)" } ], "awk": [ { "flag": "-F", "desc": "field separator" }, { "flag": "-v", "desc": "variable" }, { "flag": "-f", "desc": "program file" }, { "flag": "--file", "desc": "program file" } ], "base64": [ { "flag": "-d", "desc": "decode" }, { "flag": "-w", "desc": "wrap at column" } ], "basename": [ { "flag": "-", "desc": "s" }, { "flag": "s", "desc": "u" } ], "cat": [ { "flag": "-n", "desc": "number all lines" }, { "flag": "-b", "desc": "number non-blank lines" }, { "flag": "-s", "desc": "squeeze blank lines" }, { "flag": "-E", "desc": "show $ at line end" }, { "flag": "-T", "desc": "show ^I for tabs" } ], "column": [ { "flag": "-t", "desc": "table mode" }, { "flag": "-s", "desc": "separator" } ], "comm": [ { "flag": "-1", "desc": "suppress col 1" }, { "flag": "-2", "desc": "suppress col 2" }, { "flag": "-3", "desc": "suppress col 3" } ], "command": [ { "flag": "-", "desc": "v" }, { "flag": "p", "desc": "r" } ], "cp": [ { "flag": "-r", "desc": "recursive" }, { "flag": "-v", "desc": "verbose" }, { "flag": "-n", "desc": "no-clobber" }, { "flag": "-f", "desc": "force" } ], "cut": [ { "flag": "-d", "desc": "delimiter" }, { "flag": "-f", "desc": "fields" }, { "flag": "-c", "desc": "characters" } ], "date": [ { "flag": "-d", "desc": "date string" }, { "flag": "-u", "desc": "UTC" }, { "flag": "-r", "desc": "reference file" }, { "flag": "+FORMAT", "desc": "output format" } ], "diff": [ { "flag": "-u", "desc": "unified format" }, { "flag": "-c", "desc": "context format" }, { "flag": "-q", "desc": "report only whether files differ" }, { "flag": "-w", "desc": "ignore all whitespace" }, { "flag": "-b", "desc": "ignore changes in whitespace amount" }, { "flag": "-B", "desc": "ignore blank line changes" }, { "flag": "-i", "desc": "case-insensitive comparison" } ], "dirs": [ { "flag": "-c", "desc": "clear directory stack" }, { "flag": "-p", "desc": "print one per line" }, { "flag": "-v", "desc": "print with line numbers" } ], "du": [ { "flag": "-h", "desc": "human readable" }, { "flag": "-s", "desc": "summarize" }, { "flag": "-a", "desc": "all files" }, { "flag": "-c", "desc": "show total" }, { "flag": "-d", "desc": "max depth" } ], "echo": [ { "flag": "-n", "desc": "no trailing newline" }, { "flag": "-e", "desc": "enable escape sequences" }, { "flag": "-E", "desc": "disable escape sequences" } ], "eval": [ { "flag": "C", "desc": "O" }, { "flag": "c", "desc": "o" } ], "expand": [ { "flag": "-", "desc": "t" }, { "flag": "t", "desc": "a" } ], "file": [ { "flag": "-b", "desc": "brief" }, { "flag": "-i", "desc": "MIME type" }, { "flag": "-L", "desc": "follow symlinks" } ], "find": [ { "flag": "-name", "desc": "match base name against a shell glob", "arg": "PATTERN", "detail": "Keep entries whose base name (the last path component, no directories) matches the shell glob PATTERN. Matching is case-sensitive. Glob metacharacters: * (any run of chars), ? (one char), [abc] / [a-z] (a character class). Quote the pattern in single quotes so the shell does not expand it before find sees it.", "examples": [ "find . -name '*.txt'", "find . -name 'Make*'", "find src -name '*.[ch]'" ] }, { "flag": "-type", "desc": "filter by file type", "arg": "f|d|l", "detail": "Keep only entries of the given type: f = regular file, d = directory, l = symbolic link. Combine with -name to scope a search, e.g. only directories named build.", "examples": [ "find . -type f", "find . -type d -name node_modules" ] }, { "flag": "-size", "desc": "filter by file size", "arg": "[+-]N[ckMG]", "detail": "Match files by size. A leading + means greater than, - means less than, no sign means exactly. Unit suffix: c = bytes, k = kibibytes, M = mebibytes, G = gibibytes (default is 512-byte blocks).", "examples": [ "find . -size +10M", "find . -type f -size -1k" ] }, { "flag": "-maxdepth", "desc": "limit recursion depth", "arg": "N", "detail": "Descend at most N directory levels below the starting point. -maxdepth 1 searches only the immediate children of the start directory (no recursion into subdirectories).", "examples": [ "find . -maxdepth 1 -type f", "find . -maxdepth 2 -name '*.log'" ] }, { "flag": "-mtime", "desc": "filter by modification time (days)", "arg": "[+-]N", "detail": "Match files modified N*24 hours ago. +N means more than N days ago, -N means within the last N days, N means exactly N days ago.", "examples": [ "find . -mtime -7", "find /tmp -type f -mtime +30" ] }, { "flag": "-empty", "desc": "match empty files and directories", "detail": "Keep regular files that are zero bytes and directories that contain no entries.", "examples": [ "find . -type f -empty", "find . -type d -empty" ] }, { "flag": "-print0", "desc": "null-delimited output", "detail": "Separate results with a NUL byte instead of a newline, so filenames containing spaces or newlines survive a pipe. Pair with 'xargs -0'.", "examples": [ "find . -name '*.tmp' -print0 | xargs -0 rm" ] }, { "flag": "-exec", "desc": "run a command on each match", "arg": "CMD {} ;", "detail": "Run CMD for each matched entry. {} is replaced with the path of the entry. Terminate the command with a literal ; (run once per file) or + (batch many paths into one invocation). Quote or escape ; so the shell does not consume it.", "examples": [ "find . -name '*.sh' -exec chmod +x {} ;", "find . -type f -exec grep -l TODO {} +" ] }, { "flag": "-iname", "desc": "case-insensitive -name", "arg": "PATTERN", "detail": "Like -name, but the shell-glob match against the base name ignores case. Useful when extensions or names vary in case (README vs readme, .JPG vs .jpg).", "examples": [ "find . -iname 'readme*'", "find . -iname '*.jpg'" ] }, { "flag": "-path", "desc": "match the whole path against a glob", "arg": "PATTERN", "detail": "Match the glob PATTERN against the entire path find prints (e.g. ./src/app/main.js), not just the base name. A * here also spans / , so '*/node_modules/*' matches anything under any node_modules directory. Use -ipath for the case-insensitive form.", "examples": [ "find . -path '*/test/*'", "find . -path '*/node_modules/*'" ] }, { "flag": "-regex", "desc": "match the whole path against a regex", "arg": "REGEX", "detail": "Keep entries whose entire printed path matches REGEX (the match is implicitly anchored to the whole path). Use -iregex for the case-insensitive form.", "examples": [ "find . -regex '.*\\.(c|h)'", "find . -regex '.*/test/.*\\.js'" ] }, { "flag": "-mindepth", "desc": "skip entries above a depth", "arg": "N", "detail": "Ignore entries at fewer than N directory levels below the starting point. -mindepth 1 excludes the starting directory itself; pair with -maxdepth to search an exact depth band.", "examples": [ "find . -mindepth 1 -maxdepth 1 -type d", "find . -mindepth 2 -name '*.cfg'" ] }, { "flag": "-newer", "desc": "modified more recently than a file", "arg": "FILE", "detail": "Keep entries whose modification time is strictly newer than FILE's. A common idiom for 'what changed since X' using a reference file or marker.", "examples": [ "find . -type f -newer .last-build", "find src -newer README.md" ] }, { "flag": "-delete", "desc": "delete matched entries (destructive)", "detail": "Remove every matched entry. This is an action, not a filter: it prints nothing and should usually come last. It deletes deepest paths first (it implies -depth) so a directory can be removed after its matched contents. Only matched entries are deleted — a directory that still contains unmatched files cannot be removed and reports an error. There is no undo; preview with the same predicates (without -delete) first.", "examples": [ "find . -name '*.tmp' -delete", "find build -type f -empty -delete" ] }, { "flag": "-prune", "desc": "do not descend into matched directories", "detail": "When a matched entry is a directory, do not recurse into it (its contents are skipped). The directory itself is still listed. Note: the classic exclude idiom (-path X -prune -o -print) needs the -o operator, which ps-bash does not support yet, so -prune is currently only useful for stopping descent.", "examples": [ "find . -name .git -prune" ] }, { "flag": "-depth", "desc": "process directory contents first", "detail": "Emit (or act on) the entries inside a directory before the directory itself. Implied by -delete so that directories are emptied before removal.", "examples": [ "find . -depth -type d" ] } ], "fold": [ { "flag": "-w", "desc": "wrap width" }, { "flag": "-s", "desc": "break at spaces" }, { "flag": "-b", "desc": "count bytes" } ], "grep": [ { "flag": "-i", "desc": "ignore case", "detail": "Match without case sensitivity. This applies to basic regex, extended regex (-E), fixed string (-F), and explicit -e patterns.", "examples": [ "grep -i 'error' app.log", "grep -i -e 'todo' -e 'fixme' src/*.cs" ] }, { "flag": "-v", "desc": "invert match", "detail": "Select lines that do not match the pattern. Use this to filter out comments, generated files, or known-noisy log lines.", "examples": [ "grep -v '^#' .env", "grep -v -e 'DEBUG' -e 'TRACE' app.log" ] }, { "flag": "-n", "desc": "line numbers" }, { "flag": "-c", "desc": "count only" }, { "flag": "-r", "desc": "recursive" }, { "flag": "-l", "desc": "files with matches" }, { "flag": "-E", "desc": "extended regex", "detail": "Use extended regular expressions so operators like |, +, ?, and grouped alternation work without extra backslashes. Quote patterns so the shell passes regex metacharacters to grep unchanged.", "examples": [ "grep -E 'error|warning' app.log", "grep -E '^[A-Z_]+=' .env" ] }, { "flag": "-A", "desc": "after context" }, { "flag": "-B", "desc": "before context" }, { "flag": "-C", "desc": "context" }, { "flag": "-F", "desc": "fixed strings", "detail": "Treat the pattern as literal text instead of a regular expression. Useful for strings that contain regex metacharacters such as ., [, ], *, ?, or |.", "examples": [ "grep -F 'a.b[0]' notes.txt", "grep -F 'error|warning' app.log" ] }, { "flag": "-w", "desc": "word regexp", "detail": "Require the match to be a whole word. This is handy when searching identifiers or command names and avoiding substrings inside longer words.", "examples": [ "grep -w 'cat' README.md", "grep -w -E 'init|start|stop' scripts/*.sh" ] }, { "flag": "-o", "desc": "only matching" }, { "flag": "-H", "desc": "with filename" }, { "flag": "-h", "desc": "no filename" }, { "flag": "-e", "desc": "pattern", "arg": "PATTERN", "detail": "Add PATTERN as a search expression. Repeat -e to OR several patterns, or use it when a pattern begins with - so grep does not treat it as an option. Basic regex is the default: . matches any character, [abc] matches one listed character, [0-9] matches a range, * repeats the previous atom, ^ anchors the start of the line, and $ anchors the end. Use -E for easier alternation and grouping, or -F when the text should be literal.", "examples": [ "grep -e '^TODO' -e 'FIXME' src/*.cs", "grep -e '^-n' options.txt", "grep -E -e 'error|warning' app.log" ] }, { "flag": "-m", "desc": "max count" } ], "gzip": [ { "flag": "-d", "desc": "decompress" }, { "flag": "-c", "desc": "write to stdout" }, { "flag": "-k", "desc": "keep original" }, { "flag": "-f", "desc": "force" }, { "flag": "-v", "desc": "verbose" }, { "flag": "-l", "desc": "list" }, { "flag": "-1", "desc": "fastest compression" }, { "flag": "-9", "desc": "best compression" } ], "head": [ { "flag": "-", "desc": "n" }, { "flag": "n", "desc": "u" } ], "install": [ { "flag": "-d", "desc": "create directories" }, { "flag": "-D", "desc": "create leading path components" }, { "flag": "-m", "desc": "set mode" }, { "flag": "-v", "desc": "verbose" }, { "flag": "-s", "desc": "strip" }, { "flag": "-t", "desc": "target directory" }, { "flag": "-S", "desc": "swap suffix" } ], "join": [ { "flag": "-t", "desc": "delimiter" }, { "flag": "-1", "desc": "field from file 1" }, { "flag": "-2", "desc": "field from file 2" } ], "jq": [ { "flag": "-r", "desc": "raw output" }, { "flag": "-c", "desc": "compact output" }, { "flag": "-S", "desc": "sort keys" }, { "flag": "-s", "desc": "slurp" } ], "ln": [ { "flag": "-s", "desc": "symbolic" }, { "flag": "-f", "desc": "force" }, { "flag": "-v", "desc": "verbose" } ], "ls": [ { "flag": "-l", "desc": "long listing" }, { "flag": "-a", "desc": "show hidden" }, { "flag": "-h", "desc": "human readable sizes" }, { "flag": "-R", "desc": "recursive" }, { "flag": "-S", "desc": "sort by size" }, { "flag": "-t", "desc": "sort by time" }, { "flag": "-r", "desc": "reverse sort" }, { "flag": "-1", "desc": "one per line" } ], "mapfile": [ { "flag": "-t", "desc": "strip trailing delimiter" }, { "flag": "-n", "desc": "copy at most N lines" }, { "flag": "-O", "desc": "start assigning at index N" } ], "md5sum": [ { "flag": "-c", "desc": "check" }, { "flag": "-b", "desc": "binary mode" } ], "mkdir": [ { "flag": "-p", "desc": "parents" }, { "flag": "-v", "desc": "verbose" } ], "mv": [ { "flag": "-v", "desc": "verbose" }, { "flag": "-n", "desc": "no-clobber" }, { "flag": "-f", "desc": "force" } ], "nl": [ { "flag": "-", "desc": "b" }, { "flag": "n", "desc": "u" } ], "paste": [ { "flag": "-d", "desc": "delimiter" }, { "flag": "-s", "desc": "serial" } ], "popd": [ { "flag": "+", "desc": "N" }, { "flag": "r", "desc": "e" } ], "ps": [ { "flag": "-e", "desc": "all processes" }, { "flag": "-A", "desc": "all processes" }, { "flag": "-f", "desc": "full format" }, { "flag": "-u", "desc": "filter user" }, { "flag": "-p", "desc": "filter pid" }, { "flag": "--sort", "desc": "sort key" }, { "flag": "-o", "desc": "output format" } ], "pushd": [ { "flag": "+", "desc": "N" }, { "flag": "r", "desc": "o" } ], "pwd": [ { "flag": "-", "desc": "P" }, { "flag": "p", "desc": "h" } ], "readarray": [ { "flag": "-t", "desc": "strip trailing delimiter" }, { "flag": "-n", "desc": "copy at most N lines" }, { "flag": "-O", "desc": "start assigning at index N" } ], "realpath": [], "rg": [ { "flag": "-i", "desc": "ignore case" }, { "flag": "-w", "desc": "word regexp" }, { "flag": "-c", "desc": "count matches" }, { "flag": "-l", "desc": "files with matches" }, { "flag": "-n", "desc": "line numbers" }, { "flag": "-N", "desc": "no line numbers" }, { "flag": "-o", "desc": "only matching" }, { "flag": "-v", "desc": "invert match" }, { "flag": "-F", "desc": "fixed strings" }, { "flag": "-g", "desc": "glob filter" }, { "flag": "-A", "desc": "after context" }, { "flag": "-B", "desc": "before context" }, { "flag": "-C", "desc": "context" }, { "flag": "--hidden", "desc": "include dotfiles" } ], "rm": [ { "flag": "-r", "desc": "recursive" }, { "flag": "-f", "desc": "force" }, { "flag": "-v", "desc": "verbose" } ], "rmdir": [ { "flag": "-p", "desc": "parents" }, { "flag": "-v", "desc": "verbose" } ], "sed": [ { "flag": "-n", "desc": "suppress default" }, { "flag": "-i", "desc": "in-place" }, { "flag": "-E", "desc": "extended regex" }, { "flag": "-e", "desc": "expression" } ], "seq": [ { "flag": "-s", "desc": "separator" }, { "flag": "-w", "desc": "equal width" } ], "sha1sum": [ { "flag": "-c", "desc": "check" }, { "flag": "-b", "desc": "binary mode" } ], "sha256sum": [ { "flag": "-c", "desc": "check" }, { "flag": "-b", "desc": "binary mode" } ], "shift": [ { "flag": "N", "desc": "" }, { "flag": "s", "desc": "h" } ], "sleep": [ { "flag": "N", "desc": "U" }, { "flag": "s", "desc": "e" } ], "sort": [ { "flag": "-r", "desc": "reverse" }, { "flag": "-n", "desc": "numeric sort" }, { "flag": "-u", "desc": "unique" }, { "flag": "-f", "desc": "fold case" }, { "flag": "-k", "desc": "key field" }, { "flag": "-t", "desc": "field separator" }, { "flag": "-h", "desc": "human numeric" }, { "flag": "-V", "desc": "version sort" }, { "flag": "-M", "desc": "month sort" }, { "flag": "-c", "desc": "check sorted" } ], "source": [], "split": [ { "flag": "-l", "desc": "lines per file" }, { "flag": "-d", "desc": "numeric suffixes" }, { "flag": "-a", "desc": "suffix length" } ], "stat": [ { "flag": "-c", "desc": "format string" }, { "flag": "-t", "desc": "terse" }, { "flag": "--printf", "desc": "printf format" } ], "strings": [ { "flag": "-", "desc": "n" }, { "flag": "m", "desc": "i" } ], "tac": [ { "flag": "-", "desc": "s" }, { "flag": "s", "desc": "e" } ], "tail": [ { "flag": "-n", "desc": "number of lines" }, { "flag": "-f", "desc": "follow file for changes" }, { "flag": "-c", "desc": "output last N bytes" }, { "flag": "-s", "desc": "poll interval in seconds" } ], "tar": [ { "flag": "-c", "desc": "create archive" }, { "flag": "-x", "desc": "extract archive" }, { "flag": "-t", "desc": "list contents" }, { "flag": "-f", "desc": "archive file" }, { "flag": "-z", "desc": "gzip filter" }, { "flag": "-v", "desc": "verbose" }, { "flag": "-C", "desc": "change directory" }, { "flag": "--exclude", "desc": "exclude pattern" } ], "tee": [ { "flag": "-", "desc": "a" }, { "flag": "a", "desc": "p" } ], "time": [ { "flag": "C", "desc": "O" }, { "flag": "c", "desc": "o" } ], "touch": [ { "flag": "-", "desc": "d" }, { "flag": "d", "desc": "a" } ], "tput": [ { "flag": "C", "desc": "A" }, { "flag": "t", "desc": "e" } ], "tr": [ { "flag": "-c", "desc": "complement" }, { "flag": "-C", "desc": "complement" }, { "flag": "-d", "desc": "delete" }, { "flag": "-s", "desc": "squeeze" }, { "flag": "-t", "desc": "truncate SET2" } ], "tree": [ { "flag": "-a", "desc": "all files" }, { "flag": "-d", "desc": "directories only" }, { "flag": "-L", "desc": "max depth" }, { "flag": "-I", "desc": "exclude pattern" }, { "flag": "--dirsfirst", "desc": "directories first" } ], "uname": [ { "flag": "-s", "desc": "kernel name" }, { "flag": "-n", "desc": "hostname" }, { "flag": "-r", "desc": "release" }, { "flag": "-m", "desc": "machine" }, { "flag": "-a", "desc": "all" } ], "unexpand": [ { "flag": "-t", "desc": "tab width" }, { "flag": "-a", "desc": "convert all spaces" } ], "uniq": [ { "flag": "-c", "desc": "count" }, { "flag": "-d", "desc": "duplicates only" } ], "unset": [ { "flag": "-v", "desc": "treat each NAME as a variable" }, { "flag": "-f", "desc": "treat each NAME as a function" } ], "wc": [ { "flag": "-l", "desc": "line count" }, { "flag": "-w", "desc": "word count" }, { "flag": "-c", "desc": "byte count" } ], "which": [ { "flag": "-", "desc": "a" }, { "flag": "s", "desc": "h" } ], "xan": [ { "flag": "-d", "desc": "delimiter" }, { "flag": "headers", "desc": "show column headers" }, { "flag": "count", "desc": "count rows" }, { "flag": "select", "desc": "select columns" }, { "flag": "search", "desc": "search rows" }, { "flag": "table", "desc": "pretty table display" } ], "xargs": [ { "flag": "-I", "desc": "replace string" }, { "flag": "-n", "desc": "max args" }, { "flag": "-0", "desc": "null-delimited input" } ], "yes": [ { "flag": "S", "desc": "T" }, { "flag": "r", "desc": "e" } ], "yq": [ { "flag": "-r", "desc": "raw output" }, { "flag": "-o", "desc": "output format (json, yaml)" } ] } |