mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-18 23:38:35 +02:00
DOC: Move all docs into en/ subdirectory (#1505)
* DOC: Move all docs into en/ subdirectory PR #1502 is working on adding a Chinese translation to the docs. In general, I encouraged this (in #1452) as a path towards getting useful translated content in the game without requiring a massive refactor/rearchitecting of everything. To support this, this takes the first step of moving our docs into an en/ subdirectory, so that other languages can live alongside. No effort is made at this time to support or select between alternate languages; this is a pure-rename refactor.
This commit is contained in:
102
src/Documentation/doc/en/basic/terminal.md
Normal file
102
src/Documentation/doc/en/basic/terminal.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# Terminal
|
||||
|
||||
The Terminal is a console emulator program that lets you interface with other [Servers](servers.md) in the game.
|
||||
It can be accessed by clicking the `Terminal` tab on the navigation menu on the left-hand side of the game (you may need to expand the 'Hacking' header in order to see the `Terminal` tab).
|
||||
Alternatively, the shortcut Alt + t can be used to open the Terminal.
|
||||
|
||||
## Filesystem (Directories)
|
||||
|
||||
The Terminal contains a very basic filesystem to help you organize files into different directories.
|
||||
Note that this is **not** a _true_ filesystem implementation and instead relies almost entirely on string manipulation.
|
||||
For this reason, some features found in real-world filesystems do not exist in our Terminal. For example:
|
||||
|
||||
- Tab autocompletion does not work with relative paths
|
||||
- **`mv` and `rm` commands only accept full filepaths in their arguments.**
|
||||
**They do not act on directories.**
|
||||
|
||||
These features are typically in Linux filesystems and have not yet been added to the game.
|
||||
|
||||
## Directories
|
||||
|
||||
In order to create a directory, simply name a file using a full absolute Linux-style path:
|
||||
|
||||
/scripts/myScript.js
|
||||
|
||||
This will automatically create a "directory" called `scripts`.
|
||||
This will also work for subdirectories:
|
||||
|
||||
/scripts/hacking/helpers/myHelperScripts.js
|
||||
|
||||
Files in the root directory do not need to begin with a forward slash:
|
||||
|
||||
thisIsAFileInTheRootDirectory.txt
|
||||
|
||||
Note that **there is no way to manually create or remove directories.**
|
||||
Creation and deletion of "directories" is automatically handled as you create, rename, or delete files in game.
|
||||
|
||||
## Absolute vs Relative Paths
|
||||
|
||||
Many Terminal commands accept both absolute and relative paths for specifying a file.
|
||||
|
||||
An absolute path specifies the location of the file from the root directory (/).
|
||||
Any path that begins with the forward slash is an absolute path:
|
||||
|
||||
$ nano /scripts/myScript.js
|
||||
$ cat /serverList.txt
|
||||
|
||||
A relative path specifies the location of the file relative to the current working directory.
|
||||
Any path that does **not** begin with a forward slash is a relative path.
|
||||
Note that the Linux-style dot symbols will work for relative paths:
|
||||
|
||||
. (a single dot) - represents the current directory
|
||||
.. (two dots) - represents the parent directory
|
||||
|
||||
$ cd ..
|
||||
$ nano ../scripts/myScript.js
|
||||
$ nano ../../helper.js
|
||||
|
||||
For additional details about specifying paths and references in scripts, see [Scripts](scripts.md).
|
||||
|
||||
## Argument Parsing
|
||||
|
||||
When evaluating a terminal command, arguments are initially parsed based on whitespace (usually spaces).
|
||||
Each whitespace character signifies the end of an argument, and potentially the start of new one.
|
||||
For most terminal commands, this is all you need to know.
|
||||
|
||||
When running scripts, however, it may be important to know specific detail, especially two main points:
|
||||
|
||||
- Quotation marks can be used to wrap a single argument and force it to be parsed as a string.
|
||||
Any whitespace inside the quotation marks will not cause a new argument to be parsed.
|
||||
- Anything that can represent a number is automatically cast to a number, unless it's surrounded by quotation marks.
|
||||
|
||||
Here's an example to show how these rules work.
|
||||
Consider the following script `argType.js`:
|
||||
|
||||
export async function main(ns) {
|
||||
ns.tprint("Number of args: " + ns.args.length);
|
||||
for (var i = 0; i < ns.args.length; ++i) {
|
||||
ns.tprint(typeof ns.args[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Then if we run the following terminal command:
|
||||
|
||||
$ run argType.js 123 1e3 "5" "this is a single argument"
|
||||
|
||||
We'll see the following in the Terminal:
|
||||
|
||||
Running script with 1 thread(s), pid 1 and args: [123, 1000, "5", "this is a single argument"].
|
||||
argType.js: Number of args: 4
|
||||
argType.js: number
|
||||
argType.js: number
|
||||
argType.js: string
|
||||
argType.js: string
|
||||
|
||||
## Chaining Commands
|
||||
|
||||
You can run multiple Terminal commands at once by separating each command
|
||||
with a semicolon (;). For example:
|
||||
|
||||
$ run foo.js; tail foo.js
|
||||
|
||||
Chained commands do **not** wait for functions like `hack` or `wget` to finish executing, and so may not always work as expected.
|
||||
Reference in New Issue
Block a user