A project shell
The shell starts in the project folder: absolute paths and ~ are interpreted from that root. help lists only registered internal commands; use which to query command resolution.
Use project paths and do not treat external paths or traversal as a supported workflow. It accepts single and double quotes, $NAME variables, pipes, >, >>, <, 2>, 2>&1, &&, ||, ;, and background jobs with &. Backtick substitution is not implemented; treat it as a deliberate command set, not a full Unix terminal.
pwd
export APP_ENV=dev
echo $APP_ENV
grep -rn "TODO" src | head -n 20| Command | Example | Behavior, flags, and limits |
|---|---|---|
| help | help | lists registered internal commands; not aliases or dynamic bins |
| pwd | pwd | shows the current folder relative to the project |
| cd | cd src | changes the working directory to the requested path |
| echo | echo "hi" | prints arguments; do not use as a Unix flag manual |
| cat | cat package.json | shows UTF-8 files or pipe input |
| head | head -n 5 README.md | first lines; accepts -n N or -N |
| tail | tail -n 20 log.txt | last lines; accepts -n N or -N |
| wc | wc -l src/main.ts | counts lines, words, bytes; -l, -w, -c |
| which | which npm | resolves an Odete command or node_modules/.bin path |
Files and text
ls supports -a and -l; head and tail support -n N or -N; grep supports -i, -n and -r; find understands -name with * and ?; mkdir supports -p. For recursive search, grep and find skip node_modules, .git, .odete, and dist.
rm protects the project root, but removing files or directories with rm -r is still irreversible. Check pwd and ls before writing operations.
| Command | Example | Behavior, flags, and limits |
|---|---|---|
| ls | ls -la | lists; only -a and -l have an effect |
| mkdir | mkdir -p src/ui | creates directories; -p creates parents |
| touch | touch src/ui/Card.tsx | creates empty file or updates its date |
| rm | rm -rf dist | removes; -r for folders, -f ignores absence; root is blocked |
| cp | cp -r public dist | copies files or folders; -r is accepted but copying is already recursive |
| mv | mv old.ts new.ts | moves or renames; replaces an existing destination |
| grep | grep -rin "TODO" src | text search; -i, -n, -r; not full regex |
| find | find src -name "*.t?" | recursive listing; -name accepts * and ? wildcards |
Environment, jobs, and output
env lists variables and export NAME=value defines them. history shows prior commands; clear clears the screen; date, sleep, true, and false are available for short scripts.
A server or background command appears in jobs. Stop it with kill %1 or kill all; Ctrl+C cancels the current command. open recognizes ports in local 127.0.0.1 or localhost URLs; serve or http-server starts a static server in the requested directory.
npm run dev &
jobs
kill %1
serve dist| Command | Example | Behavior, flags, and limits |
|---|---|---|
| env | env | lists the session environment |
| export | export MODE=dev | only NAME=value assignments |
| clear | clear | clears the terminal screen |
| history | history | lists saved history |
| swift | swift | explains there is no Swift compiler and exits 1 |
| date | date | device date and time |
| sleep | sleep 2 | waits N seconds |
| true | true | exits with code 0 |
| false | false | exits with code 1 |
| jobs | jobs | lists jobs and local ports |
| kill | kill %1 | stops a job; kill all stops all |
| open | open http://127.0.0.1:5173 | asks Preview to open that server |
| git | git status | status, add, reset/restore, commit, log/show/diff, branch, checkout/switch, merge, stash, remote, fetch/pull/push, rev-parse |
| npm | npm run dev | install/i/add, uninstall/remove/rm/un, ls, init, run, start/dev/build/test/preview/lint, exec/x/dlx, version, cache |
| node | node -e "console.log(1)" | runs JS/TS/JSX/TSX; -e/--eval, -p/--print, -v |
| npx | npx vite | runs a local binary or built-in substitute; native binary fails on iPad |
| pnpm / yarn / bun | pnpm install | npm aliases, not independent implementations |