OILS / doc / index.md View on Github | oils.pub

171 lines, 124 significant
1---
2in_progress: yes
3all_docs_url: -
4---
5
6All Docs
7========
8
9This page links to all docs. A dagger † means a doc isn't finished.
10
11See [Published Docs](published.html) for those that are ready to read.
12
13
14<!--
15<div id="toc">
16</div>
17-->
18
19## Good Places to Start
20
21- [A Tour of YSH](ysh-tour.html)
22- [YSH vs. Shell Idioms](idioms.html)
23- [**Oils Reference**](ref/index.html) - underlies the [help][] builtin
24- [FAQ on Docs](faq-doc.html). **Look here if you can't find
25 something**.
26
27[help]: ref/chap-builtin-cmd.html#help
28
29## Preliminaries
30
31- [INSTALL](INSTALL.html). How do I install Oils? This text file is also in
32 the `oils-for-unix` tarball.
33 - [Oils Build `--help` Mirror](help-mirror.html)
34 - [Portability](portability.html)
35- [Getting Started](getting-started.html). How do I use the shell?
36
37## Interactive Shell
38
39- [Headless Mode](headless.html). For alternative UIs on top of YSH.
40- [Completion](completion.html) &dagger;. We emulate bash completion.
41
42## OSH is a Compatible Shell
43
44- [Shell Language Idioms](shell-idioms.html) has some advice for using any
45 shell, not just Oils.
46- [OSH Standard Library](lib-osh.html) &dagger;. Small but useful enhancements.
47
48For sophisticated users:
49
50- [Known Differences Between OSH and Other Shells](known-differences.html)
51- [OSH Quirks](quirks.html) for compatibility.
52
53## YSH is a New, Powerful Shell
54
55- [A Tour of YSH](ysh-tour.html). Explains YSH from scratch, without referring
56 to shell's legacy.
57- [What Breaks When You Upgrade to YSH](upgrade-breakage.html). When you turn
58 on YSH, there are some shell constructs you can no longer use. We try to
59 minimize the length of this list.
60- [YSH Language FAQ](ysh-faq.html)
61- [YSH Style Guide](style-guide.html)
62
63### Comparisons
64
65- [YSH vs. Shell Idioms](idioms.html). A list of code snippets.
66- [YSH vs. Shell](ysh-vs-shell.html). High-level descriptions: how does YSH
67 differ from Bourne/POSIX shell?
68- [YSH Expressions vs. Python](ysh-vs-python.html). The expression language is
69 borrowed from Python, with a few tweaks.
70- [Novelties in OSH and YSH](novelties.html). May be helpful for experienced
71 programmers.
72
73### Design Concepts
74
75- [YSH Language Influences](language-influences.html) - Shell, Python,
76 JavaScript, Lisp, ...
77- Syntax
78 - [A Feel For YSH Syntax](syntax-feelings.html)
79 - [Syntactic Concepts](syntactic-concepts.html) may help you remember the
80 language.
81 - [Command vs. Expression Mode](command-vs-expression-mode.html).
82- [Warts](warts.html). Mostly for compatibility.
83
84YSH has 3 main sublanguages:
85
86- **Command** language, which now consistently uses `{ }` for blocks.
87 - [Hay - Custom Languages for Unix Systems](hay.html). Use Ruby-like
88 blocks to declare data and interleaved code.
89- **Word** language.
90 - [Simple Word Evaluation](simple-word-eval.html). Written for shell
91 experts.
92- **Expression** language on typed data.
93 - [Egg Expressions](eggex.html). A new regex syntax, abbreviated *eggex*.
94 - [YSH Regex API](ysh-regex-api.html). Convenient and powerful.
95
96Features:
97
98- [Guide to YSH Error Handling](ysh-error.html)
99- [Guide to Procs and Funcs](proc-func.html)
100 - [Block Literals](block-literals.html) &dagger;
101
102Designs for "Maximalist YSH":
103
104- [Streams, Tables, and Processes - awk, R, xargs](stream-table-process.html) &dagger;
105- [Document Processing in YSH - Notation, Query, Templating](ysh-doc-processing.html) &dagger;
106
107
108Crosscutting design issues:
109
110- [Variable Declaration, Mutation, and Scope](variables.html)
111- [Strings: Quotes, Interpolation, Escaping, and Buffers](strings.html) &dagger;
112 - [Unicode](unicode.html) &dagger;. Oils supports and prefers UTF-8.
113- [YSH I/O Builtins](io-builtins.html) &dagger;
114
115## Data Languages Avoid Ad-Hoc Parsing
116
117YSH programs "talk about" these data languages, also called interchange formats
118or protocols. In-memory data structures are *in service* of data languages on
119the wire, **not** the other way around.
120
121- [J8 Notation](j8-notation.html). An upgrade of JSON to bytes, strings,
122 lines, and structured data.
123 - [JSON](json.html). Some usage details.
124 - [Framing](framing.html) &dagger;
125- [BYO Protocols](byo.html) - for testing and completion.
126
127## The Shared Oils Runtime
128
129- [Types in the Oils Runtime](types.html)
130- [YSH Fixes Shell's Error Handling (`errexit`)](error-handling.html)
131- [Oils Error Catalog, With Hints](error-catalog.html)
132- [Tracing Execution](xtrace.html). YSH enhances shell's `set -x`.
133- [Options](options.html) &dagger;. Parsing and runtime options turn OSH into YSH.
134
135Internal details:
136
137- [Interpreter State](interpreter-state.html) &dagger;. What's inside a shell
138 interpreter?
139- [Process Model](process-model.html) &dagger;. The shell language is a thin
140 layer over the Unix kernel.
141
142## For Contributors
143
144- [README.md](oils-repo/README.html). If you want to modify Oils, start here.
145 We welcome contributions!
146- [Doc Toolchain](doc-toolchain.html) and [Doc Plugins](doc-plugins.html).
147 - [ul-table: Markdown Tables Without New Syntax](ul-table.html)
148- [Github Wiki for oilshell/oil](https://github.com/oilshell/oil/wiki)
149- [Old Docs](old/index.html). Drafts that may be deleted.
150
151Internal Architecture:
152
153- [Notes on Oils Architecture](architecture-notes.html)
154 - [Parser Architecture](parser-architecture.html)
155- [Pretty Printing](pretty-printing.html) - March 2024 design notes.
156- [mycpp/README](oils-repo/mycpp/README.html) - How we translate typed Python to
157 C++.
158
159## More
160
161- [Github Wiki for oilshell/oil](https://github.com/oilshell/oil/wiki).
162- [The blog](https://www.oilshell.org/blog/) has useful background information,
163 although older posts are more likely to have incorrect information.
164- [The home page](https://www.oilshell.org/) has links to docs for new users.
165
166Old:
167
168- [INSTALL-old](INSTALL-old.html) for the slow `oil-$VERSION` tarball, based on
169 CPython.
170
171<!-- vim: set sw=2: -->