remove non ascii whitespaces
This commit is contained in:
parent
598a10bc28
commit
5a6d6c4d13
117 changed files with 1928 additions and 1928 deletions
|
@ -16,12 +16,12 @@ All Borg commands share these options:
|
|||
|
||||
| Option | Description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------------- |
|
||||
| `--info, -v, --verbose` | work on log level INFO |
|
||||
| `-p, --progress` | show progress information |
|
||||
| `--info, -v, --verbose` | work on log level INFO |
|
||||
| `-p, --progress` | show progress information |
|
||||
| `--log-json` | Output one [JSON](../../files/JSON.md) object per log line instead of formatted text. |
|
||||
| `--bypass-lock` | Bypass locking mechanism |
|
||||
| `--remote-path PATH` | use PATH as borg executable on the remote (default: “borg”) |
|
||||
| `--rsh RSH` | Use this command to connect to the ‘borg serve’ process (default: ‘ssh’) |
|
||||
| `--remote-path PATH` | use PATH as borg executable on the remote (default: “borg”) |
|
||||
| `--rsh RSH` | Use this command to connect to the ‘borg serve’ process (default: ‘ssh’) |
|
||||
|
||||
### `borg init`
|
||||
This command initializes an empty repository. A repository is a filesystem directory containing the deduplicated data from zero or more archives.
|
||||
|
@ -31,7 +31,7 @@ Usage: `borg [common options] init [options] [REPOSITORY]`
|
|||
|
||||
| Option | Description |
|
||||
| ------------------------------ | ----------------------------------------- |
|
||||
| `-e MODE`, `--encryption MODE` | select encryption key mode **(required)** |
|
||||
| `-e MODE`, `--encryption MODE` | select encryption key mode **(required)** |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -57,31 +57,31 @@ Usage: `borg [common options] create [options] ARCHIVE [PATH...]`
|
|||
#### Options
|
||||
| Option | Description |
|
||||
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ` -n`, `--dry-run` | do not create a backup archive |
|
||||
| `-s`, `--stats` | print statistics for the created archive |
|
||||
| ` -n`, `--dry-run` | do not create a backup archive |
|
||||
| `-s`, `--stats` | print statistics for the created archive |
|
||||
| `--list` | output verbose list of items (files, dirs, …) |
|
||||
| `--json` | output stats as JSON. Implies `--stats`. |
|
||||
| `--stdin-name NAME` | use NAME in archive for stdin data (default: `stdin`) |
|
||||
| `--stdin-user USER` | set user USER in archive for stdin data (default: `root`) |
|
||||
| `--stdin-group GROUP` | set group GROUP in archive for stdin data (default: `wheel`) |
|
||||
| `--stdin-mode M` | set mode to M in archive for stdin data (default: 0660) |
|
||||
| `--json` | output stats as JSON. Implies `--stats`. |
|
||||
| `--stdin-name NAME` | use NAME in archive for stdin data (default: `stdin`) |
|
||||
| `--stdin-user USER` | set user USER in archive for stdin data (default: `root`) |
|
||||
| `--stdin-group GROUP` | set group GROUP in archive for stdin data (default: `wheel`) |
|
||||
| `--stdin-mode M` | set mode to M in archive for stdin data (default: 0660) |
|
||||
| `--content-from-command` | interpret PATH as command and store its stdout. |
|
||||
| `--paths-from-stdin` | read DELIM-separated list of paths to backup from stdin. All control is external: it will back up all files given - no more, no less. |
|
||||
| `--paths-from-command` | interpret PATH as command and treat its output as `--paths-from-stdin` |
|
||||
| `--paths-delimiter DELIM` | set path delimiter for `--paths-from-stdin` and `--paths-from-command` (default: `\n`) |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
| `--paths-from-command` | interpret PATH as command and treat its output as `--paths-from-stdin` |
|
||||
| `--paths-delimiter DELIM` | set path delimiter for `--paths-from-stdin` and `--paths-from-command` (default: `\n`) |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
| `--exclude-caches` | exclude directories that contain a CACHEDIR.TAG file |
|
||||
| `--exclude-if-present NAME` | exclude directories that are tagged by containing a filesystem object with the given NAME |
|
||||
| `--keep-exclude-tags` | if tag objects are specified with `--exclude-if-present`, don’t omit the tag objects themselves from the backup archive |
|
||||
| `--exclude-if-present NAME` | exclude directories that are tagged by containing a filesystem object with the given NAME |
|
||||
| `--keep-exclude-tags` | if tag objects are specified with `--exclude-if-present`, don’t omit the tag objects themselves from the backup archive |
|
||||
| `--exclude-nodump` | exclude files flagged NODUMP |
|
||||
| `-x`, `--one-file-system` | stay in the same file system and do not store mount points of other file systems |
|
||||
| `--comment COMMENT` | add a comment text to the archive |
|
||||
| `--timestamp TIMESTAMP` | manually specify the archive creation date/time (UTC, yyyy-mm-ddThh:mm:ss format). Alternatively, give a reference file/directory. |
|
||||
| `-c SECONDS`, `--checkpoint-interval SECONDS` | write checkpoint every SECONDS seconds (Default: 1800) |
|
||||
| `-C COMPRESSION`, `--compression COMPRESSION` | select compression algorithm, see the output of the “borg help compression” command for details. |
|
||||
| `-x`, `--one-file-system` | stay in the same file system and do not store mount points of other file systems |
|
||||
| `--comment COMMENT` | add a comment text to the archive |
|
||||
| `--timestamp TIMESTAMP` | manually specify the archive creation date/time (UTC, yyyy-mm-ddThh:mm:ss format). Alternatively, give a reference file/directory. |
|
||||
| `-c SECONDS`, `--checkpoint-interval SECONDS` | write checkpoint every SECONDS seconds (Default: 1800) |
|
||||
| `-C COMPRESSION`, `--compression COMPRESSION` | select compression algorithm, see the output of the “borg help compression” command for details. |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -158,19 +158,19 @@ $ borg create /path/to/repo::daily-projectA-{now:%Y-%m-%d} projectA
|
|||
```
|
||||
|
||||
### `borg extract`
|
||||
This command extracts the contents of an archive. By default the entire archive is extracted but a subset of files and directories can be selected by passing a list of `PATHs` as arguments. The file selection can further be restricted by using the `--exclude` option.
|
||||
This command extracts the contents of an archive. By default the entire archive is extracted but a subset of files and directories can be selected by passing a list of `PATHs` as arguments. The file selection can further be restricted by using the `--exclude` option.
|
||||
Usage: `borg [common options] extract [options] ARCHIVE [PATH...]`
|
||||
|
||||
#### Options
|
||||
| Option | Description |
|
||||
| --------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| `--list` | output verbose list of items (files, dirs, …) |
|
||||
| `-n`, `--dry-run` | do not actually change any files |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
| `--strip-components NUMBER` | Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped. |
|
||||
| `-n`, `--dry-run` | do not actually change any files |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
| `--strip-components NUMBER` | Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped. |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -203,10 +203,10 @@ Usage: `borg [common options] check [options] [REPOSITORY_OR_ARCHIVE]`
|
|||
| ------------------------ | ---------------------------------------------------------------------------------------------- |
|
||||
| `--repository-only` | only perform repository checks |
|
||||
| `--archives-only` | only perform archives checks |
|
||||
| `--verify-data` | perform cryptographic archive data integrity verification (conflicts with `--repository-only`) |
|
||||
| `--verify-data` | perform cryptographic archive data integrity verification (conflicts with `--repository-only`) |
|
||||
| `--repair` | attempt to repair any inconsistencies found |
|
||||
| `--save-space` | work slower, but using less space |
|
||||
| `--max-duration SECONDS` | do only a partial repo check for max. SECONDS seconds (Default: unlimited) |
|
||||
| `--max-duration SECONDS` | do only a partial repo check for max. SECONDS seconds (Default: unlimited) |
|
||||
|
||||
### `borg rename`
|
||||
This command renames an archive in the repository.
|
||||
|
@ -232,18 +232,18 @@ Usage: `borg [common options] list [options] [REPOSITORY_OR_ARCHIVE] [PATH...]`
|
|||
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--consider-checkpoints` | Show checkpoint archives in the repository contents list (default: hidden). |
|
||||
| `--short` | only print file/directory names, nothing else |
|
||||
| `--format FORMAT` | specify format for file or archive listing (default for files: `{mode} {user:6} {group:6} {size:8} {mtime} {path}{extra}{NL}`; for archives: `{archive:<36} {time} [{id}]{NL}`) |
|
||||
| `--json` | Only valid for listing repository contents. Format output as [JSON](../../files/JSON.md). The form of `--format` is ignored, but keys used in it are added to the [JSON](../../files/JSON.md) output. Some keys are always present. Note: [JSON](../../files/JSON.md) can only represent text. A “barchive” key is therefore not available. |
|
||||
| `--json-lines` | Only valid for listing archive contents. Format output as [JSON](../../files/JSON.md) Lines. The form of `--format` is ignored, but keys used in it are added to the [JSON](../../files/JSON.md) output. Some keys are always present. Note: [JSON](../../files/JSON.md) can only represent text. A “bpath” key is therefore not available. |
|
||||
| `-P PREFIX`, `--prefix PREFIX` | only consider archive names starting with this prefix. (deprecated) |
|
||||
| `-a GLOB`, `--glob-archives GLOB` | only consider archive names matching the glob. sh: rules apply (without actually using the sh: prefix), see “borg help patterns”. |
|
||||
| `--sort-by KEYS` | Comma-separated list of sorting keys; valid keys are: timestamp, archive, name, id; default is: timestamp |
|
||||
| `--first N` | consider first N archives after other filters were applied |
|
||||
| `--last N` | consider last N archives after other filters were applied |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
| `--format FORMAT` | specify format for file or archive listing (default for files: `{mode} {user:6} {group:6} {size:8} {mtime} {path}{extra}{NL}`; for archives: `{archive:<36} {time} [{id}]{NL}`) |
|
||||
| `--json` | Only valid for listing repository contents. Format output as [JSON](../../files/JSON.md). The form of `--format` is ignored, but keys used in it are added to the [JSON](../../files/JSON.md) output. Some keys are always present. Note: [JSON](../../files/JSON.md) can only represent text. A “barchive” key is therefore not available. |
|
||||
| `--json-lines` | Only valid for listing archive contents. Format output as [JSON](../../files/JSON.md) Lines. The form of `--format` is ignored, but keys used in it are added to the [JSON](../../files/JSON.md) output. Some keys are always present. Note: [JSON](../../files/JSON.md) can only represent text. A “bpath” key is therefore not available. |
|
||||
| `-P PREFIX`, `--prefix PREFIX` | only consider archive names starting with this prefix. (deprecated) |
|
||||
| `-a GLOB`, `--glob-archives GLOB` | only consider archive names matching the glob. sh: rules apply (without actually using the sh: prefix), see “borg help patterns”. |
|
||||
| `--sort-by KEYS` | Comma-separated list of sorting keys; valid keys are: timestamp, archive, name, id; default is: timestamp |
|
||||
| `--first N` | consider first N archives after other filters were applied |
|
||||
| `--last N` | consider last N archives after other filters were applied |
|
||||
| `-e PATTERN`, `--exclude PATTERN` | exclude paths matching PATTERN |
|
||||
| `--exclude-from EXCLUDEFILE` | read exclude patterns from EXCLUDEFILE, one per line |
|
||||
| `--pattern PATTERN` | include/exclude paths matching PATTERN |
|
||||
| `--patterns-from PATTERNFILE` | read include/exclude patterns from PATTERNFILE, one per line |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -313,9 +313,9 @@ Usage: `borg [common options] delete [options] [REPOSITORY_OR_ARCHIVE] [ARCHIVE.
|
|||
#### Options
|
||||
| Option | Description |
|
||||
| ----------------- | ---------------------------------------- |
|
||||
| `-n`, `--dry-run` | do not change repository |
|
||||
| `-n`, `--dry-run` | do not change repository |
|
||||
| `--list` | output verbose list of archives |
|
||||
| `-s`, `--stats` | print statistics for the deleted archive |
|
||||
| `-s`, `--stats` | print statistics for the deleted archive |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -341,18 +341,18 @@ Usage: `borg [common options] prune [options] [REPOSITORY]`
|
|||
#### Options
|
||||
| Option | Description |
|
||||
| -------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `-n`, `--dry-run` | do not change repository |
|
||||
| `--force` | force pruning of corrupted archives, use `--force --force` in case `--force` does not work. |
|
||||
| `-s`, `--stats` | print statistics for the deleted archive |
|
||||
| `-n`, `--dry-run` | do not change repository |
|
||||
| `--force` | force pruning of corrupted archives, use `--force --force` in case `--force` does not work. |
|
||||
| `-s`, `--stats` | print statistics for the deleted archive |
|
||||
| `--list` | output verbose list of archives it keeps/prunes |
|
||||
| `--keep-within INTERVAL` | keep all archives within this time interval |
|
||||
| `--keep-last`, `--keep-secondly` | number of secondly archives to keep |
|
||||
| `--keep-within INTERVAL` | keep all archives within this time interval |
|
||||
| `--keep-last`, `--keep-secondly` | number of secondly archives to keep |
|
||||
| `--keep-minutely` | number of minutely archives to keep |
|
||||
| `-H`, `--keep-hourly` | number of hourly archives to keep |
|
||||
| `-d`, `--keep-daily` | number of daily archives to keep |
|
||||
| `-w`, `--keep-weekly` | number of weekly archives to keep |
|
||||
| `-m`, `--keep-monthly` | number of monthly archives to keep |
|
||||
| `-y`, `--keep-yearly` | number of yearly archives to keep |
|
||||
| `-H`, `--keep-hourly` | number of hourly archives to keep |
|
||||
| `-d`, `--keep-daily` | number of daily archives to keep |
|
||||
| `-w`, `--keep-weekly` | number of weekly archives to keep |
|
||||
| `-m`, `--keep-monthly` | number of monthly archives to keep |
|
||||
| `-y`, `--keep-yearly` | number of yearly archives to keep |
|
||||
|
||||
#### Examples
|
||||
```shell
|
||||
|
@ -398,13 +398,13 @@ Usage: `borg [common options] info [options] [REPOSITORY_OR_ARCHIVE]`
|
|||
| `--json` | format output as JSON |
|
||||
|
||||
### `borg mount`
|
||||
This command mounts an archive as a FUSE filesystem. This can be useful for browsing an archive or restoring individual files. Unless the `--foreground` option is given the command will run in the background until the filesystem is `umounted`.
|
||||
This command mounts an archive as a FUSE filesystem. This can be useful for browsing an archive or restoring individual files. Unless the `--foreground` option is given the command will run in the background until the filesystem is `umounted`.
|
||||
Usage: `borg [common options] mount [options] REPOSITORY_OR_ARCHIVE MOUNTPOINT [PATH...]`
|
||||
|
||||
#### Options
|
||||
| Option | Description |
|
||||
| -------------------- | ------------------------------------------------------ |
|
||||
| `-f`, `--foreground` | stay in foreground, do not daemonize |
|
||||
| `-f`, `--foreground` | stay in foreground, do not daemonize |
|
||||
| `-o` | Extra mount options |
|
||||
| `--numeric-ids` | use numeric user and group identifiers from archive(s) |
|
||||
|
||||
|
@ -427,7 +427,7 @@ $ borg umount /tmp/mymountpoint
|
|||
```
|
||||
|
||||
### `borg unmount`
|
||||
This command un-mounts a FUSE filesystem that was mounted with `borg mount`.
|
||||
This command un-mounts a FUSE filesystem that was mounted with `borg mount`.
|
||||
Usage: `borg [common options] umount [options] MOUNTPOINT`
|
||||
|
||||
### `borg key change-passphrase`
|
||||
|
@ -441,5 +441,5 @@ Usage: `borg [common options] serve [options]`
|
|||
#### Options
|
||||
| Option | Description |
|
||||
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--restrict-to-path PATH` | restrict repository access to PATH. Can be specified multiple times to allow the client access to several directories. Access to all sub-directories is granted implicitly; PATH doesn’t need to directly point to a repository. |
|
||||
| `--restrict-to-repository PATH` | restrict repository access. Only the repository located at PATH (no sub-directories are considered) is accessible. Can be specified multiple times to allow the client access to several repositories. Unlike `--restrict-to-path` sub-directories are not accessible; PATH needs to directly point at a repository location. PATH may be an empty directory or the last element of PATH may not exist, in which case the client may initialize a repository there. |
|
||||
| `--restrict-to-path PATH` | restrict repository access to PATH. Can be specified multiple times to allow the client access to several directories. Access to all sub-directories is granted implicitly; PATH doesn’t need to directly point to a repository. |
|
||||
| `--restrict-to-repository PATH` | restrict repository access. Only the repository located at PATH (no sub-directories are considered) is accessible. Can be specified multiple times to allow the client access to several repositories. Unlike `--restrict-to-path` sub-directories are not accessible; PATH needs to directly point at a repository location. PATH may be an empty directory or the last element of PATH may not exist, in which case the client may initialize a repository there. |
|
||||
|
|
|
@ -22,7 +22,7 @@ The database files are saved in:
|
|||
/var/lib/clamav/bytecode.cvd
|
||||
```
|
||||
|
||||
Start/Enable`clamav-freshclam.service` so that the virus definitions are kept recent.
|
||||
Start/Enable`clamav-freshclam.service` so that the virus definitions are kept recent.
|
||||
|
||||
### Starting the daemon
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ command2 < mypipe # Reading from the pipe
|
|||
### **tee Command**
|
||||
The `tee` command reads from standard input and writes to standard output and files simultaneously.
|
||||
```shell
|
||||
echo "Hello, World!" | tee output.txt | wc -l
|
||||
echo "Hello, World!" | tee output.txt | wc -l
|
||||
```
|
||||
|
||||
### **/dev/null**
|
||||
|
@ -210,7 +210,7 @@ esac
|
|||
|
||||
#### Operators
|
||||
##### Arithmetic Operators
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
|
||||
| Operator | Description | Example |
|
||||
| ------------------ | --------------------------------------------------------------------- | --------------------------------------- |
|
||||
|
@ -226,7 +226,7 @@ Assume variable **a** holds 10 and variable **b** holds 20 then −
|
|||
##### Relational Operators
|
||||
For example, following operators will work to check a relation between 10 and 20 as well as in between "10" and "20" but not in between "ten" and "twenty".
|
||||
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
|
||||
| Operator | Description | Example |
|
||||
| -------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- |
|
||||
|
@ -238,18 +238,18 @@ Assume variable **a** holds 10 and variable **b** holds 20 then −
|
|||
| **-le** | Checks if the value of left operand is less than or equal to the value of right operand; if yes, then the condition becomes true. | `[ $a -le $b ]` is true. |
|
||||
|
||||
##### Boolean Operators
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
Assume variable **a** holds 10 and variable **b** holds 20 then −
|
||||
|
||||
| Operator | Description | Example |
|
||||
| -------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||
| **!** | This is logical negation. This inverts a true condition into false and vice versa. | `[ ! false ]` is true. |
|
||||
| **-o** | This is logical **OR**. If one of the operands is true, then the condition becomes true. | `[ $a -lt 20 -o $b -gt 100 ]` is true. |
|
||||
| **-a** | This is logical **AND**. If both the operands are true, then the condition becomes true otherwise false. | `[ $a -lt 20 -a $b -gt 100 ]` is false. |
|
||||
| **-o** | This is logical **OR**. If one of the operands is true, then the condition becomes true. | `[ $a -lt 20 -o $b -gt 100 ]` is true. |
|
||||
| **-a** | This is logical **AND**. If both the operands are true, then the condition becomes true otherwise false. | `[ $a -lt 20 -a $b -gt 100 ]` is false. |
|
||||
|
||||
##### File Test Operators
|
||||
We have a few operators that can be used to test various properties associated with a Unix file.
|
||||
|
||||
Assume a variable **file** holds an existing file name "test" the size of which is 100 bytes and has **read**, **write** and **execute** permission.
|
||||
Assume a variable **file** holds an existing file name "test" the size of which is 100 bytes and has **read**, **write** and **execute** permission.
|
||||
|
||||
| Operator | Description | Example |
|
||||
| ----------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------- |
|
||||
|
|
|
@ -7,7 +7,7 @@ os:
|
|||
repo: https://github.com/theryangeary/choose
|
||||
---
|
||||
# choose
|
||||
`choose`, a human-friendly and fast alternative to `cut` and (sometimes) `awk`
|
||||
`choose`, a human-friendly and fast alternative to `cut` and (sometimes) `awk`
|
||||
|
||||
## Usage
|
||||
```shell
|
||||
|
|
|
@ -5,7 +5,7 @@ website: https://savannah.gnu.org/projects/tar
|
|||
repo: https://git.savannah.gnu.org/cgit/tar.git
|
||||
---
|
||||
# Tar
|
||||
Tar is the most widely used command in Unix and Linux like operating system for creating archive of multiple files and folders into a single archive file and that archive file can be further compressed using other compression techniques
|
||||
Tar is the most widely used command in Unix and Linux like operating system for creating archive of multiple files and folders into a single archive file and that archive file can be further compressed using other compression techniques
|
||||
|
||||
Creating Archives:
|
||||
```shell
|
||||
|
|
|
@ -19,5 +19,5 @@ Usage: `crunch <min-len> <max-len> [<charset string>] [options]`
|
|||
| `-i` | Inverts the output so instead of aaa,aab,aac,aad, etc you get aaa,baa,caa,daa,aba,bba |
|
||||
| `-o wordlist.txt` | Specifies the file to write the output to, eg: wordlist.txt |
|
||||
| `-s startblock` | Specifies a starting string, eg: 03god22fs |
|
||||
| `-t @,%^` | Specifies a pattern, eg: @@god@@@@ where the only the @'s, ,'s, %'s, and ^'s will change. <br>`@` will insert lower case characters<br>`,` will insert upper case characters<br>`%` will insert numbers<br>`^` will insert symbols |
|
||||
| `-t @,%^` | Specifies a pattern, eg: @@god@@@@ where the only the @'s, ,'s, %'s, and ^'s will change. <br>`@` will insert lower case characters<br>`,` will insert upper case characters<br>`%` will insert numbers<br>`^` will insert symbols |
|
||||
| `-z gzip, bzip2, lzma, and 7z` | Compresses the output from the -o option. Valid parameters are gzip, bzip2, lzma, and [7z](compression/p7zip.md). |
|
||||
|
|
|
@ -4,17 +4,17 @@ os: linux
|
|||
repo: https://github.com/eza-community/eza
|
||||
---
|
||||
# exa
|
||||
[**eza**](https://eza.rocks/) is a modern replacement for the venerable file-listing command-line program `ls` that ships with Unix and Linux operating systems, giving it more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s **small**, **fast**, and just **one single binary**.
|
||||
[**eza**](https://eza.rocks/) is a modern replacement for the venerable file-listing command-line program `ls` that ships with Unix and Linux operating systems, giving it more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s **small**, **fast**, and just **one single binary**.
|
||||
|
||||
## Usage
|
||||
Flags:
|
||||
```shell
|
||||
-l, --long display extended file metadata as a table
|
||||
-R, --recurse recurse into directories
|
||||
-l, --long display extended file metadata as a table
|
||||
-R, --recurse recurse into directories
|
||||
-L, --level DEPTH limit the depth of recursion
|
||||
-T, --tree recurse into directories as a tree
|
||||
-a, --all show hidden and 'dot' files
|
||||
-r, --reverse reverse the sort order
|
||||
-D, --only-dirs list only directories
|
||||
--git-ignore ignore files mentioned in '.gitignore'
|
||||
-T, --tree recurse into directories as a tree
|
||||
-a, --all show hidden and 'dot' files
|
||||
-r, --reverse reverse the sort order
|
||||
-D, --only-dirs list only directories
|
||||
--git-ignore ignore files mentioned in '.gitignore'
|
||||
```
|
|
@ -4,7 +4,7 @@ os: linux
|
|||
repo: https://github.com/sharkdp/fd
|
||||
---
|
||||
# fd
|
||||
`fd` is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to [`find`](https://www.gnu.org/software/findutils/). While it does not aim to support all of `find`'s powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.
|
||||
`fd` is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to [`find`](https://www.gnu.org/software/findutils/). While it does not aim to support all of `find`'s powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.
|
||||
|
||||
## Usage
|
||||
Usage: `fd [OPTIONS] [pattern] [path]...`
|
||||
|
|
|
@ -4,7 +4,7 @@ os: linux
|
|||
repo: https://github.com/chmln/handlr
|
||||
---
|
||||
# Handlr
|
||||
Manage your default applications with ease using `handlr`!
|
||||
Manage your default applications with ease using `handlr`!
|
||||
|
||||
Open files in default application:
|
||||
```shell
|
||||
|
|
|
@ -4,11 +4,11 @@ os: linux
|
|||
repo: https://github.com/sstadick/hck
|
||||
---
|
||||
# hck
|
||||
_`hck` is a shortening of `hack`, a rougher form of `cut`._
|
||||
_`hck` is a shortening of `hack`, a rougher form of `cut`._
|
||||
|
||||
A close to drop in replacement for cut that can use a regex delimiter instead of a fixed string. Additionally this tool allows for specification of the order of the output columns using the same column selection syntax as cut (see below for examples).
|
||||
|
||||
No single feature of `hck` on its own makes it stand out over `awk`, `cut`, `xsv` or other such tools. Where `hck` excels is making common things easy, such as reordering output fields, or splitting records on a weird delimiter. It is meant to be simple and easy to use while exploring datasets. Think of this as filling a gap between `cut` and `awk`.
|
||||
No single feature of `hck` on its own makes it stand out over `awk`, `cut`, `xsv` or other such tools. Where `hck` excels is making common things easy, such as reordering output fields, or splitting records on a weird delimiter. It is meant to be simple and easy to use while exploring datasets. Think of this as filling a gap between `cut` and `awk`.
|
||||
|
||||
## Usage
|
||||
Usage: `hck [options]`
|
||||
|
|
|
@ -5,7 +5,7 @@ os:
|
|||
repo: https://github.com/sharkdp/hexyl
|
||||
---
|
||||
# Hexyl
|
||||
`hexyl` is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable [ASCII](../../files/ASCII.md) characters, [ASCII](../../files/ASCII.md) whitespace characters, other [ASCII](../../files/ASCII.md) characters and non-[ASCII](../../files/ASCII.md)).
|
||||
`hexyl` is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable [ASCII](../../files/ASCII.md) characters, [ASCII](../../files/ASCII.md) whitespace characters, other [ASCII](../../files/ASCII.md) characters and non-[ASCII](../../files/ASCII.md)).
|
||||
|
||||
## Usage
|
||||
Usage: `hexyl [OPTIONS] [FILE]`
|
||||
|
|
|
@ -10,11 +10,11 @@ Command line utility to remove duplicates from the given input. Note that huniq
|
|||
## Usage
|
||||
Flags:
|
||||
```shell
|
||||
-c, --count Output the amount of times a line was encountered
|
||||
-c, --count Output the amount of times a line was encountered
|
||||
|
||||
-d, --delim <delim> Which delimiter between elements to use. [default: "\n"]
|
||||
-d, --delim <delim> Which delimiter between elements to use. [default: "\n"]
|
||||
|
||||
-s, --sort Sort output by the number of occurences, in ascending order
|
||||
-s, --sort Sort output by the number of occurences, in ascending order
|
||||
|
||||
-S, --sort-descending Order output by the number of occurences, in descending order
|
||||
-S, --sort-descending Order output by the number of occurences, in descending order
|
||||
```
|
|
@ -5,7 +5,7 @@ repo: https://github.com/casey/intermodal
|
|||
---
|
||||
# Intermodal
|
||||
[Repo](https://github.com/casey/intermodal)
|
||||
Intermodal is a user-friendly and featureful command-line [BitTorrent](../../internet/BitTorrent.md) metainfo utility. The binary is called `imdl` and runs on [Linux](../../linux/Linux.md), [Windows](../../windows/Windows.md), and [macOS](../../macos/macOS.md).
|
||||
Intermodal is a user-friendly and featureful command-line [BitTorrent](../../internet/BitTorrent.md) metainfo utility. The binary is called `imdl` and runs on [Linux](../../linux/Linux.md), [Windows](../../windows/Windows.md), and [macOS](../../macos/macOS.md).
|
||||
|
||||
## Usage
|
||||
### Create torrent file:
|
||||
|
|
|
@ -3,4 +3,4 @@ obj: application
|
|||
os: linux
|
||||
---
|
||||
# Jless
|
||||
[`jless`](https://jless.io/) is a command-line [JSON](../../files/JSON.md) viewer. Use it as a replacement for whatever combination of `less`, `jq`, `cat` and your editor you currently use for viewing [JSON](../../files/JSON.md) files. It is written in [Rust](../../dev/programming/languages/Rust.md) and can be installed as a single standalone binary.
|
||||
[`jless`](https://jless.io/) is a command-line [JSON](../../files/JSON.md) viewer. Use it as a replacement for whatever combination of `less`, `jq`, `cat` and your editor you currently use for viewing [JSON](../../files/JSON.md) files. It is written in [Rust](../../dev/programming/languages/Rust.md) and can be installed as a single standalone binary.
|
|
@ -8,7 +8,7 @@ jq is a lightweight and flexible command-line [JSON](../../files/JSON.md) proces
|
|||
|
||||
## Usage
|
||||
```shell
|
||||
cat data.json | jq [FILTER]
|
||||
cat data.json | jq [FILTER]
|
||||
|
||||
# Raw Data
|
||||
cat data.json | jq -r [FILTER]
|
||||
|
@ -16,67 +16,67 @@ cat data.json | jq -r [FILTER]
|
|||
|
||||
## Filters
|
||||
### Identity
|
||||
The absolute simplest filter is `.` . This filter takes its input and produces the same value as output. That is, this is the identity operator.
|
||||
The absolute simplest filter is `.` . This filter takes its input and produces the same value as output. That is, this is the identity operator.
|
||||
|
||||
### Object Identifier
|
||||
The simplest _useful_ filter has the form `.foo`. When given a [JSON](../../files/JSON.md) object (aka dictionary or hash) as input, `.foo` produces the value at the key "foo" if the key is present, or null otherwise.
|
||||
The simplest _useful_ filter has the form `.foo`. When given a [JSON](../../files/JSON.md) object (aka dictionary or hash) as input, `.foo` produces the value at the key "foo" if the key is present, or null otherwise.
|
||||
|
||||
The `.foo` syntax only works for simple, identifier-like keys, that is, keys that are all made of alphanumeric characters and underscore, and which do not start with a digit.
|
||||
The `.foo` syntax only works for simple, identifier-like keys, that is, keys that are all made of alphanumeric characters and underscore, and which do not start with a digit.
|
||||
|
||||
If the key contains special characters or starts with a digit, you need to surround it with double quotes like this: `."foo$"`, or else `.["foo$"]`.
|
||||
If the key contains special characters or starts with a digit, you need to surround it with double quotes like this: `."foo$"`, or else `.["foo$"]`.
|
||||
|
||||
### Array Index
|
||||
When the index value is an integer, `.[<number>]` can index arrays. Arrays are zero-based, so `.[2]` returns the third element.
|
||||
When the index value is an integer, `.[<number>]` can index arrays. Arrays are zero-based, so `.[2]` returns the third element.
|
||||
|
||||
Negative indices are allowed, with -1 referring to the last element, -2 referring to the next to last element, and so on.
|
||||
|
||||
### Array/String Slice
|
||||
The `.[<number>:<number>]` syntax can be used to return a subarray of an array or substring of a string. The array returned by `.[10:15]` will be of length 5, containing the elements from index 10 (inclusive) to index 15 (exclusive). Either index may be negative (in which case it counts backwards from the end of the array), or omitted (in which case it refers to the start or end of the array). Indices are zero-based.
|
||||
The `.[<number>:<number>]` syntax can be used to return a subarray of an array or substring of a string. The array returned by `.[10:15]` will be of length 5, containing the elements from index 10 (inclusive) to index 15 (exclusive). Either index may be negative (in which case it counts backwards from the end of the array), or omitted (in which case it refers to the start or end of the array). Indices are zero-based.
|
||||
|
||||
### Array/Object Value Iterator
|
||||
If you use the `.[index]` syntax, but omit the index entirely, it will return _all_ of the elements of an array. Running `.[]` with the input `[1,2,3]` will produce the numbers as three separate results, rather than as a single array. A filter of the form `.foo[]` is equivalent to `.foo | .[]`.
|
||||
If you use the `.[index]` syntax, but omit the index entirely, it will return _all_ of the elements of an array. Running `.[]` with the input `[1,2,3]` will produce the numbers as three separate results, rather than as a single array. A filter of the form `.foo[]` is equivalent to `.foo | .[]`.
|
||||
|
||||
You can also use this on an object, and it will return all the values of the object.
|
||||
|
||||
Note that the iterator operator is a generator of values.
|
||||
|
||||
### Comma
|
||||
If two filters are separated by a comma, then the same input will be fed into both and the two filters' output value streams will be concatenated in order: first, all of the outputs produced by the left expression, and then all of the outputs produced by the right. For instance, filter `.foo, .bar`, produces both the "foo" fields and "bar" fields as separate outputs.
|
||||
If two filters are separated by a comma, then the same input will be fed into both and the two filters' output value streams will be concatenated in order: first, all of the outputs produced by the left expression, and then all of the outputs produced by the right. For instance, filter `.foo, .bar`, produces both the "foo" fields and "bar" fields as separate outputs.
|
||||
|
||||
The `,` operator is one way to contruct generators.
|
||||
The `,` operator is one way to contruct generators.
|
||||
|
||||
### Pipe
|
||||
The `|` operator combines two filters by feeding the output(s) of the one on the left into the input of the one on the right. It's similar to the Unix [shell](Shell.md)'s pipe, if you're used to that.
|
||||
|
||||
If the one on the left produces multiple results, the one on the right will be run for each of those results. So, the expression `.[] | .foo` retrieves the "foo" field of each element of the input array. This is a cartesian product, which can be surprising.
|
||||
If the one on the left produces multiple results, the one on the right will be run for each of those results. So, the expression `.[] | .foo` retrieves the "foo" field of each element of the input array. This is a cartesian product, which can be surprising.
|
||||
|
||||
Note that `.a.b.c` is the same as `.a | .b | .c`.
|
||||
Note that `.a.b.c` is the same as `.a | .b | .c`.
|
||||
|
||||
Note too that `.` is the input value at the particular stage in a "pipeline", specifically: where the `.` expression appears. Thus `.a | . | .b` is the same as `.a.b`, as the `.` in the middle refers to whatever value `.a` produced.
|
||||
Note too that `.` is the input value at the particular stage in a "pipeline", specifically: where the `.` expression appears. Thus `.a | . | .b` is the same as `.a.b`, as the `.` in the middle refers to whatever value `.a` produced.
|
||||
|
||||
### Array Construction: `[]`
|
||||
As in [JSON](../../files/JSON.md), `[]` is used to construct arrays, as in `[1,2,3]`. The elements of the arrays can be any jq expression, including a pipeline. All of the results produced by all of the expressions are collected into one big array. You can use it to construct an array out of a known quantity of values (as in `[.foo, .bar, .baz]`) or to "collect" all the results of a filter into an array (as in `[.items[].name]`)
|
||||
As in [JSON](../../files/JSON.md), `[]` is used to construct arrays, as in `[1,2,3]`. The elements of the arrays can be any jq expression, including a pipeline. All of the results produced by all of the expressions are collected into one big array. You can use it to construct an array out of a known quantity of values (as in `[.foo, .bar, .baz]`) or to "collect" all the results of a filter into an array (as in `[.items[].name]`)
|
||||
|
||||
Once you understand the "," operator, you can look at jq's array syntax in a different light: the expression `[1,2,3]` is not using a built-in syntax for comma-separated arrays, but is instead applying the `[]` operator (collect results) to the expression 1,2,3 (which produces three different results).
|
||||
Once you understand the "," operator, you can look at jq's array syntax in a different light: the expression `[1,2,3]` is not using a built-in syntax for comma-separated arrays, but is instead applying the `[]` operator (collect results) to the expression 1,2,3 (which produces three different results).
|
||||
|
||||
If you have a filter `X` that produces four results, then the expression `[X]` will produce a single result, an array of four elements.
|
||||
If you have a filter `X` that produces four results, then the expression `[X]` will produce a single result, an array of four elements.
|
||||
|
||||
### Object Construction: `{}`
|
||||
Like [JSON](../../files/JSON.md), `{}` is for constructing objects (aka dictionaries or hashes), as in: `{"a": 42, "b": 17}`.
|
||||
Like [JSON](../../files/JSON.md), `{}` is for constructing objects (aka dictionaries or hashes), as in: `{"a": 42, "b": 17}`.
|
||||
|
||||
If the keys are "identifier-like", then the quotes can be left off, as in `{a:42, b:17}`. Variable references as key expressions use the value of the variable as the key. Key expressions other than constant literals, identifiers, or variable references, need to be parenthesized, e.g., `{("a"+"b"):59}`.
|
||||
If the keys are "identifier-like", then the quotes can be left off, as in `{a:42, b:17}`. Variable references as key expressions use the value of the variable as the key. Key expressions other than constant literals, identifiers, or variable references, need to be parenthesized, e.g., `{("a"+"b"):59}`.
|
||||
|
||||
The value can be any expression (although you may need to wrap it in parentheses if, for example, it contains colons), which gets applied to the {} expression's input (remember, all filters have an input and an output).
|
||||
```
|
||||
{foo: .bar}
|
||||
```
|
||||
|
||||
will produce the [JSON](../../files/JSON.md) object `{"foo": 42}` if given the [JSON](../../files/JSON.md) object `{"bar":42, "baz":43}` as its input. You can use this to select particular fields of an object: if the input is an object with "user", "title", "id", and "content" fields and you just want "user" and "title", you can write
|
||||
will produce the [JSON](../../files/JSON.md) object `{"foo": 42}` if given the [JSON](../../files/JSON.md) object `{"bar":42, "baz":43}` as its input. You can use this to select particular fields of an object: if the input is an object with "user", "title", "id", and "content" fields and you just want "user" and "title", you can write
|
||||
```
|
||||
{user: .user, title: .title}
|
||||
```
|
||||
|
||||
Because that is so common, there's a shortcut syntax for it: `{user, title}`.
|
||||
Because that is so common, there's a shortcut syntax for it: `{user, title}`.
|
||||
|
||||
If one of the expressions produces multiple results, multiple dictionaries will be produced. If the input's
|
||||
```
|
||||
|
@ -106,55 +106,55 @@ produces
|
|||
|
||||
## Functions
|
||||
### `has(key)`
|
||||
The builtin function `has` returns whether the input object has the given key, or the input array has an element at the given index.
|
||||
The builtin function `has` returns whether the input object has the given key, or the input array has an element at the given index.
|
||||
|
||||
### `map(f)`, `map_values(f)`
|
||||
For any filter `f`, `map(f)` and `map_values(f)` apply `f` to each of the values in the input array or object, that is, to the values of `.[]`.
|
||||
For any filter `f`, `map(f)` and `map_values(f)` apply `f` to each of the values in the input array or object, that is, to the values of `.[]`.
|
||||
|
||||
In the absence of errors, `map(f)` always outputs an array whereas `map_values(f)` outputs an array if given an array, or an object if given an object.
|
||||
In the absence of errors, `map(f)` always outputs an array whereas `map_values(f)` outputs an array if given an array, or an object if given an object.
|
||||
|
||||
When the input to `map_values(f)` is an object, the output object has the same keys as the input object except for those keys whose values when piped to `f` produce no values at all.
|
||||
When the input to `map_values(f)` is an object, the output object has the same keys as the input object except for those keys whose values when piped to `f` produce no values at all.
|
||||
|
||||
`map(f)` is equivalent to `[.[] | f]` and `map_values(f)` is equivalent to `.[] |= f`.
|
||||
`map(f)` is equivalent to `[.[] | f]` and `map_values(f)` is equivalent to `.[] |= f`.
|
||||
|
||||
### `del(path)`
|
||||
The builtin function `del` removes a key and its corresponding value from an object.
|
||||
The builtin function `del` removes a key and its corresponding value from an object.
|
||||
|
||||
### `reverse`
|
||||
This function reverses an array.
|
||||
|
||||
### `contains(element)`
|
||||
The filter `contains(b)` will produce true if b is completely contained within the input. A string B is contained in a string A if B is a substring of A. An array B is contained in an array A if all elements in B are contained in any element in A. An object B is contained in object A if all of the values in B are contained in the value in A with the same key. All other types are assumed to be contained in each other if they are equal.
|
||||
The filter `contains(b)` will produce true if b is completely contained within the input. A string B is contained in a string A if B is a substring of A. An array B is contained in an array A if all elements in B are contained in any element in A. An object B is contained in object A if all of the values in B are contained in the value in A with the same key. All other types are assumed to be contained in each other if they are equal.
|
||||
|
||||
### `startswith(str)`
|
||||
Outputs `true` if . starts with the given string argument.
|
||||
Outputs `true` if . starts with the given string argument.
|
||||
|
||||
### `endswith(str)`
|
||||
Outputs `true` if . ends with the given string argument.
|
||||
### `endswith(str)`
|
||||
Outputs `true` if . ends with the given string argument.
|
||||
|
||||
### `split(str)`
|
||||
Splits an input string on the separator argument.
|
||||
|
||||
### `join(str)`
|
||||
Joins the array of elements given as input, using the argument as separator. It is the inverse of `split`: that is, running `split("foo") | join("foo")` over any input string returns said input string.
|
||||
Joins the array of elements given as input, using the argument as separator. It is the inverse of `split`: that is, running `split("foo") | join("foo")` over any input string returns said input string.
|
||||
|
||||
## Conditionals
|
||||
### if-then-else-end
|
||||
`if A then B else C end` will act the same as `B` if `A` produces a value other than false or null, but act the same as `C` otherwise.
|
||||
`if A then B else C end` will act the same as `B` if `A` produces a value other than false or null, but act the same as `C` otherwise.
|
||||
|
||||
`if A then B end` is the same as `if A then B else . end`. That is, the `else` branch is optional, and if absent is the same as `.`. This also applies to `elif` with absent ending `else` branch.
|
||||
`if A then B end` is the same as `if A then B else . end`. That is, the `else` branch is optional, and if absent is the same as `.`. This also applies to `elif` with absent ending `else` branch.
|
||||
|
||||
Checking for false or null is a simpler notion of "truthiness" than is found in JavaScript or [Python](../../dev/programming/languages/Python.md), but it means that you'll sometimes have to be more explicit about the condition you want. You can't test whether, e.g. a string is empty using `if .name then A else B end`; you'll need something like `if .name == "" then A else B end` instead.
|
||||
Checking for false or null is a simpler notion of "truthiness" than is found in JavaScript or [Python](../../dev/programming/languages/Python.md), but it means that you'll sometimes have to be more explicit about the condition you want. You can't test whether, e.g. a string is empty using `if .name then A else B end`; you'll need something like `if .name == "" then A else B end` instead.
|
||||
|
||||
If the condition `A` produces multiple results, then `B` is evaluated once for each result that is not false or null, and `C` is evaluated once for each false or null.
|
||||
If the condition `A` produces multiple results, then `B` is evaluated once for each result that is not false or null, and `C` is evaluated once for each false or null.
|
||||
|
||||
More cases can be added to an if using `elif A then B` syntax.
|
||||
More cases can be added to an if using `elif A then B` syntax.
|
||||
|
||||
Example: `jq 'if . == 0 then "zero" elif . == 1 then "one" else "many" end'`
|
||||
|
||||
### Alternative Operator `//`
|
||||
The `//` operator produces all the values of its left-hand side that are neither `false` nor `null`, or, if the left-hand side produces no values other than `false` or `null`, then `//` produces all the values of its right-hand side.
|
||||
The `//` operator produces all the values of its left-hand side that are neither `false` nor `null`, or, if the left-hand side produces no values other than `false` or `null`, then `//` produces all the values of its right-hand side.
|
||||
|
||||
A filter of the form `a // b` produces all the results of `a` that are not `false` or `null`. If `a` produces no results, or no results other than `false` or `null`, then `a // b` produces the results of `b`.
|
||||
A filter of the form `a // b` produces all the results of `a` that are not `false` or `null`. If `a` produces no results, or no results other than `false` or `null`, then `a // b` produces the results of `b`.
|
||||
|
||||
This is useful for providing defaults: `.foo // 1` will evaluate to `1` if there's no `.foo` element in the input.
|
||||
This is useful for providing defaults: `.foo // 1` will evaluate to `1` if there's no `.foo` element in the input.
|
|
@ -4,12 +4,12 @@ website: https://just.systems/
|
|||
repo: https://github.com/casey/just
|
||||
---
|
||||
# just
|
||||
`just` is a handy way to save and run project-specific commands.
|
||||
Commands, called recipes, are stored in a file called `justfile` with syntax inspired by `make`:
|
||||
`just` is a handy way to save and run project-specific commands.
|
||||
Commands, called recipes, are stored in a file called `justfile` with syntax inspired by `make`:
|
||||
|
||||
![Screenshot][Screenshot]
|
||||
|
||||
You can then run them with `just RECIPE`:
|
||||
You can then run them with `just RECIPE`:
|
||||
```shell
|
||||
$ just test-all
|
||||
cc *.c -o main
|
||||
|
@ -50,7 +50,7 @@ just --variables
|
|||
| `-d, --working-directory <WORKING-DIRECTORY>` | Use \<WORKING-DIRECTORY> as working directory. `--justfile` must also be set |
|
||||
|
||||
## Quick Start
|
||||
Create a file named `justfile` in the root of your project with the following contents:
|
||||
Create a file named `justfile` in the root of your project with the following contents:
|
||||
```
|
||||
recipe-name:
|
||||
echo 'This is a recipe!'
|
||||
|
@ -60,11 +60,11 @@ another-recipe:
|
|||
@echo 'This is another recipe.'
|
||||
```
|
||||
|
||||
When you invoke `just` it looks for file `justfile` in the current directory and upwards, so you can invoke it from any subdirectory of your project.
|
||||
When you invoke `just` it looks for file `justfile` in the current directory and upwards, so you can invoke it from any subdirectory of your project.
|
||||
|
||||
The search for a `justfile` is case insensitive, so any case, like `Justfile`, `JUSTFILE`, or `JuStFiLe`, will work. `just` will also look for files with the name `.justfile`, in case you’d like to hide a `justfile`.
|
||||
The search for a `justfile` is case insensitive, so any case, like `Justfile`, `JUSTFILE`, or `JuStFiLe`, will work. `just` will also look for files with the name `.justfile`, in case you’d like to hide a `justfile`.
|
||||
|
||||
Running `just` with no arguments runs the first recipe in the `justfile`:
|
||||
Running `just` with no arguments runs the first recipe in the `justfile`:
|
||||
```shell
|
||||
$ just
|
||||
echo 'This is a recipe!'
|
||||
|
@ -77,16 +77,16 @@ $ just another-recipe
|
|||
This is another recipe.
|
||||
```
|
||||
|
||||
`just` prints each command to standard error before running it, which is why `echo 'This is a recipe!'` was printed. This is suppressed for lines starting with `@`, which is why `echo 'This is another recipe.'` was not printed.
|
||||
`just` prints each command to standard error before running it, which is why `echo 'This is a recipe!'` was printed. This is suppressed for lines starting with `@`, which is why `echo 'This is another recipe.'` was not printed.
|
||||
|
||||
Recipes stop running if a command fails. Here `cargo publish` will only run if `cargo test` succeeds:
|
||||
Recipes stop running if a command fails. Here `cargo publish` will only run if `cargo test` succeeds:
|
||||
```
|
||||
publish:
|
||||
cargo test # tests passed, time to publish!
|
||||
cargo publish
|
||||
```
|
||||
|
||||
Recipes can depend on other recipes. Here the `test` recipe depends on the `build` recipe, so `build` will run before `test`:
|
||||
Recipes can depend on other recipes. Here the `test` recipe depends on the `build` recipe, so `build` will run before `test`:
|
||||
|
||||
```
|
||||
build:
|
||||
|
@ -115,7 +115,7 @@ cc main.c foo.c bar.c -o main
|
|||
|
||||
## Features
|
||||
### Default Recipe
|
||||
When `just` is invoked without a recipe, it runs the first recipe in the `justfile`. This recipe might be the most frequently run command in the project, like running the tests:
|
||||
When `just` is invoked without a recipe, it runs the first recipe in the `justfile`. This recipe might be the most frequently run command in the project, like running the tests:
|
||||
```
|
||||
test:
|
||||
cargo test
|
||||
|
@ -135,14 +135,14 @@ lint:
|
|||
echo Linting
|
||||
```
|
||||
|
||||
If no recipe makes sense as the default recipe, you can add a recipe to the beginning of your `justfile` that lists the available recipes:
|
||||
If no recipe makes sense as the default recipe, you can add a recipe to the beginning of your `justfile` that lists the available recipes:
|
||||
```
|
||||
default:
|
||||
@just --list
|
||||
```
|
||||
|
||||
### Listing Available Recipes
|
||||
Recipes can be listed in alphabetical order with `just --list`:
|
||||
Recipes can be listed in alphabetical order with `just --list`:
|
||||
```shell
|
||||
$ just --list
|
||||
Available recipes:
|
||||
|
@ -152,21 +152,21 @@ Available recipes:
|
|||
lint
|
||||
```
|
||||
|
||||
`just --summary` is more concise:
|
||||
`just --summary` is more concise:
|
||||
```shell
|
||||
$ just --summary
|
||||
build test deploy lint
|
||||
```
|
||||
|
||||
If you'd like `just` to default to listing the recipes in the `justfile`, you can use this as your default recipe:
|
||||
If you'd like `just` to default to listing the recipes in the `justfile`, you can use this as your default recipe:
|
||||
```just
|
||||
default:
|
||||
@just --list
|
||||
```
|
||||
|
||||
> Note that you may need to add `--justfile {{justfile()}}` to the line above above. Without it, if you executed `just -f /some/distant/justfile -d .` or `just -f ./non-standard-justfile`, the plain `just --list` inside the recipe would not necessarily use the file you provided. It would try to find a justfile in your current path, maybe even resulting in a `No justfile found` error.
|
||||
> Note that you may need to add `--justfile {{justfile()}}` to the line above above. Without it, if you executed `just -f /some/distant/justfile -d .` or `just -f ./non-standard-justfile`, the plain `just --list` inside the recipe would not necessarily use the file you provided. It would try to find a justfile in your current path, maybe even resulting in a `No justfile found` error.
|
||||
|
||||
The heading text can be customized with `--list-heading`:
|
||||
The heading text can be customized with `--list-heading`:
|
||||
```shell
|
||||
$ just --list --list-heading $'Cool stuff…\n'
|
||||
Cool stuff…
|
||||
|
@ -191,7 +191,7 @@ Building!
|
|||
```
|
||||
|
||||
### Settings
|
||||
Settings control interpretation and execution. Each setting may be specified at most once, anywhere in the `justfile`.
|
||||
Settings control interpretation and execution. Each setting may be specified at most once, anywhere in the `justfile`.
|
||||
|
||||
For example:
|
||||
```just
|
||||
|
@ -205,36 +205,36 @@ foo:
|
|||
#### Table of Settings
|
||||
| Name | Value | Default | Description |
|
||||
| ------------------------- | ------------------ | ------- | --------------------------------------------------------------------------------------------- |
|
||||
| `allow-duplicate-recipes` | boolean | `false` | Allow recipes appearing later in a `justfile` to override earlier recipes with the same name. |
|
||||
| `dotenv-filename` | string | - | Load a `.env` file with a custom name, if present. |
|
||||
| `dotenv-load` | boolean | `false` | Load a `.env` file, if present. |
|
||||
| `dotenv-path` | string | - | Load a `.env` file from a custom path, if present. Overrides `dotenv-filename`. |
|
||||
| `allow-duplicate-recipes` | boolean | `false` | Allow recipes appearing later in a `justfile` to override earlier recipes with the same name. |
|
||||
| `dotenv-filename` | string | - | Load a `.env` file with a custom name, if present. |
|
||||
| `dotenv-load` | boolean | `false` | Load a `.env` file, if present. |
|
||||
| `dotenv-path` | string | - | Load a `.env` file from a custom path, if present. Overrides `dotenv-filename`. |
|
||||
| `export` | boolean | `false` | Export all variables as [environment variables](../../linux/Environment%20Variables.md). |
|
||||
| `fallback` | boolean | `false` | Search `justfile` in parent directory if the first recipe on the command line is not found. |
|
||||
| `ignore-comments` | boolean | `false` | Ignore recipe lines beginning with `#`. |
|
||||
| `fallback` | boolean | `false` | Search `justfile` in parent directory if the first recipe on the command line is not found. |
|
||||
| `ignore-comments` | boolean | `false` | Ignore recipe lines beginning with `#`. |
|
||||
| `positional-arguments` | boolean | `false` | Pass positional arguments. |
|
||||
| `shell` | `[COMMAND, ARGS…]` | - | Set the command used to invoke recipes and evaluate backticks. |
|
||||
| `tempdir` | string | - | Create temporary directories in `tempdir` instead of the system default temporary directory. |
|
||||
| `windows-powershell` | boolean | `false` | Use PowerShell on [Windows](../../windows/Windows.md) as default [shell](Shell.md). (Deprecated. Use `windows-shell` instead. |
|
||||
| `tempdir` | string | - | Create temporary directories in `tempdir` instead of the system default temporary directory. |
|
||||
| `windows-powershell` | boolean | `false` | Use PowerShell on [Windows](../../windows/Windows.md) as default [shell](Shell.md). (Deprecated. Use `windows-shell` instead. |
|
||||
| `windows-shell` | `[COMMAND, ARGS…]` | - | Set the command used to invoke recipes and evaluate backticks. |
|
||||
|
||||
#### Dotenv Settings
|
||||
If `dotenv-load`, `dotenv-filename` or `dotenv-path` is set, `just` will load [environment variables](../../linux/Environment%20Variables.md) from a file.
|
||||
If `dotenv-load`, `dotenv-filename` or `dotenv-path` is set, `just` will load [environment variables](../../linux/Environment%20Variables.md) from a file.
|
||||
|
||||
If `dotenv-path` is set, `just` will look for a file at the given path.
|
||||
If `dotenv-path` is set, `just` will look for a file at the given path.
|
||||
|
||||
Otherwise, `just` looks for a file named `.env` by default, unless `dotenv-filename` set, in which case the value of `dotenv-filename` is used. This file can be located in the same directory as your `justfile` or in a parent directory.
|
||||
Otherwise, `just` looks for a file named `.env` by default, unless `dotenv-filename` set, in which case the value of `dotenv-filename` is used. This file can be located in the same directory as your `justfile` or in a parent directory.
|
||||
|
||||
The loaded variables are [environment variables](../../linux/Environment%20Variables.md), not `just` variables, and so must be accessed using `$VARIABLE_NAME` in recipes and backticks.
|
||||
The loaded variables are [environment variables](../../linux/Environment%20Variables.md), not `just` variables, and so must be accessed using `$VARIABLE_NAME` in recipes and backticks.
|
||||
|
||||
For example, if your `.env` file contains:
|
||||
For example, if your `.env` file contains:
|
||||
```shell
|
||||
# a comment, will be ignored
|
||||
DATABASE_ADDRESS=localhost:6379
|
||||
SERVER_PORT=1337
|
||||
```
|
||||
|
||||
And your `justfile` contains:
|
||||
And your `justfile` contains:
|
||||
```just
|
||||
set dotenv-load
|
||||
|
||||
|
@ -243,7 +243,7 @@ serve:
|
|||
./server --database $DATABASE_ADDRESS --port $SERVER_PORT
|
||||
```
|
||||
|
||||
`just serve` will output:
|
||||
`just serve` will output:
|
||||
```shell
|
||||
$ just serve
|
||||
Starting server with database localhost:6379 on port 1337…
|
||||
|
@ -251,7 +251,7 @@ Starting server with database localhost:6379 on port 1337…
|
|||
```
|
||||
|
||||
#### Positional Arguments
|
||||
If `positional-arguments` is `true`, recipe arguments will be passed as positional arguments to commands. For linewise recipes, argument `$0` will be the name of the recipe.
|
||||
If `positional-arguments` is `true`, recipe arguments will be passed as positional arguments to commands. For linewise recipes, argument `$0` will be the name of the recipe.
|
||||
|
||||
For example, running this recipe:
|
||||
```just
|
||||
|
@ -269,7 +269,7 @@ foo
|
|||
hello
|
||||
```
|
||||
|
||||
When using an `sh`-compatible [shell](Shell.md), such as [`bash`](bash.md) or [`zsh`](zsh.md), `$@` expands to the positional arguments given to the recipe, starting from one. When used within double quotes as `"$@"`, arguments including whitespace will be passed on as if they were double-quoted. That is, `"$@"` is equivalent to `"$1" "$2"`… When there are no positional parameters, `"$@"` and `$@` expand to nothing (i.e., they are removed).
|
||||
When using an `sh`-compatible [shell](Shell.md), such as [`bash`](bash.md) or [`zsh`](zsh.md), `$@` expands to the positional arguments given to the recipe, starting from one. When used within double quotes as `"$@"`, arguments including whitespace will be passed on as if they were double-quoted. That is, `"$@"` is equivalent to `"$1" "$2"`… When there are no positional parameters, `"$@"` and `$@` expand to nothing (i.e., they are removed).
|
||||
|
||||
This example recipe will print arguments one by one on separate lines:
|
||||
```just
|
||||
|
@ -279,7 +279,7 @@ set positional-arguments
|
|||
bash -c 'while (( "$#" )); do echo - $1; shift; done' -- "$@"
|
||||
```
|
||||
|
||||
Running it with _two_ arguments:
|
||||
Running it with _two_ arguments:
|
||||
```shell
|
||||
$ just test foo "bar baz"
|
||||
- foo
|
||||
|
@ -287,7 +287,7 @@ $ just test foo "bar baz"
|
|||
```
|
||||
|
||||
#### Shell
|
||||
The `shell` setting controls the command used to invoke recipe lines and backticks. Shebang recipes are unaffected.
|
||||
The `shell` setting controls the command used to invoke recipe lines and backticks. Shebang recipes are unaffected.
|
||||
```just
|
||||
# use python3 to execute recipe lines and backticks
|
||||
set shell := ["python3", "-c"]
|
||||
|
@ -300,10 +300,10 @@ foo:
|
|||
print("{{foos}}")
|
||||
```
|
||||
|
||||
`just` passes the command to be executed as an argument. Many shells will need an additional flag, often `-c`, to make them evaluate the first argument.
|
||||
`just` passes the command to be executed as an argument. Many shells will need an additional flag, often `-c`, to make them evaluate the first argument.
|
||||
|
||||
### Documentation Comments
|
||||
Comments immediately preceding a recipe will appear in `just --list`:
|
||||
Comments immediately preceding a recipe will appear in `just --list`:
|
||||
```just
|
||||
# build stuff
|
||||
build:
|
||||
|
@ -322,7 +322,7 @@ Available recipes:
|
|||
```
|
||||
|
||||
### Variables and Substitution
|
||||
Variables, strings, concatenation, path joining, and substitution using `{{…}}` are supported:
|
||||
Variables, strings, concatenation, path joining, and substitution using `{{…}}` are supported:
|
||||
```just
|
||||
tmpdir := `mktemp -d`
|
||||
version := "0.2.7"
|
||||
|
@ -339,7 +339,7 @@ publish:
|
|||
```
|
||||
|
||||
#### Joining Paths
|
||||
The `/` operator can be used to join two strings with a slash:
|
||||
The `/` operator can be used to join two strings with a slash:
|
||||
```just
|
||||
foo := "a" / "b"
|
||||
```
|
||||
|
@ -349,7 +349,7 @@ $ just --evaluate foo
|
|||
a/b
|
||||
```
|
||||
|
||||
Note that a `/` is added even if one is already present:
|
||||
Note that a `/` is added even if one is already present:
|
||||
```just
|
||||
foo := "a/"
|
||||
bar := foo / "b"
|
||||
|
@ -370,14 +370,14 @@ $ just --evaluate foo
|
|||
/b
|
||||
```
|
||||
|
||||
#### Escaping `{{`
|
||||
To write a recipe containing `{{`, use `{{{{`:
|
||||
#### Escaping `{{`
|
||||
To write a recipe containing `{{`, use `{{{{`:
|
||||
```just
|
||||
braces:
|
||||
echo 'I {{{{LOVE}} curly braces!'
|
||||
```
|
||||
|
||||
(An unmatched `}}` is ignored, so it doesn't need to be escaped.)
|
||||
(An unmatched `}}` is ignored, so it doesn't need to be escaped.)
|
||||
|
||||
Another option is to put all the text you'd like to escape inside of an interpolation:
|
||||
```just
|
||||
|
@ -385,14 +385,14 @@ braces:
|
|||
echo '{{'I {{LOVE}} curly braces!'}}'
|
||||
```
|
||||
|
||||
Yet another option is to use `{{ "{{" }}`:
|
||||
Yet another option is to use `{{ "{{" }}`:
|
||||
```just
|
||||
braces:
|
||||
echo 'I {{ "{{" }}LOVE}} curly braces!'
|
||||
```
|
||||
|
||||
### Ignoring Errors
|
||||
Normally, if a command returns a non-zero exit status, execution will stop. To continue execution after a command, even if it fails, prefix the command with `-`:
|
||||
Normally, if a command returns a non-zero exit status, execution will stop. To continue execution after a command, even if it fails, prefix the command with `-`:
|
||||
```just
|
||||
foo:
|
||||
-cat foo
|
||||
|
@ -408,13 +408,13 @@ Done!
|
|||
```
|
||||
|
||||
### Functions
|
||||
`just` provides a few built-in functions that might be useful when writing recipes.
|
||||
`just` provides a few built-in functions that might be useful when writing recipes.
|
||||
|
||||
#### System Information
|
||||
- `arch()` — Instruction set architecture. Possible values are: `"aarch64"`, `"arm"`, `"asmjs"`, `"hexagon"`, `"mips"`, `"msp430"`, `"powerpc"`, `"powerpc64"`, `"s390x"`, `"sparc"`, `"wasm32"`, `"x86"`, `"x86_64"`, and `"xcore"`.
|
||||
- `num_cpus()` - Number of logical CPUs.
|
||||
- `os()` — Operating system. Possible values are: `"android"`, `"bitrig"`, `"dragonfly"`, `"emscripten"`, `"freebsd"`, `"haiku"`, `"ios"`, `"linux"`, `"macos"`, `"netbsd"`, `"openbsd"`, `"solaris"`, and `"windows"`.
|
||||
- `os_family()` — Operating system family; possible values are: `"unix"` and `"windows"`.
|
||||
- `arch()` — Instruction set architecture. Possible values are: `"aarch64"`, `"arm"`, `"asmjs"`, `"hexagon"`, `"mips"`, `"msp430"`, `"powerpc"`, `"powerpc64"`, `"s390x"`, `"sparc"`, `"wasm32"`, `"x86"`, `"x86_64"`, and `"xcore"`.
|
||||
- `num_cpus()` - Number of logical CPUs.
|
||||
- `os()` — Operating system. Possible values are: `"android"`, `"bitrig"`, `"dragonfly"`, `"emscripten"`, `"freebsd"`, `"haiku"`, `"ios"`, `"linux"`, `"macos"`, `"netbsd"`, `"openbsd"`, `"solaris"`, and `"windows"`.
|
||||
- `os_family()` — Operating system family; possible values are: `"unix"` and `"windows"`.
|
||||
|
||||
For example:
|
||||
```just
|
||||
|
@ -428,7 +428,7 @@ This is an x86_64 machine
|
|||
```
|
||||
|
||||
#### [Environment Variables](../../linux/Environment%20Variables.md)
|
||||
- `env_var(key)` — Retrieves the environment variable with name `key`, aborting if it is not present.
|
||||
- `env_var(key)` — Retrieves the environment variable with name `key`, aborting if it is not present.
|
||||
|
||||
```just
|
||||
home_dir := env_var('HOME')
|
||||
|
@ -442,14 +442,14 @@ $ just
|
|||
/home/user1
|
||||
```
|
||||
|
||||
- `env_var_or_default(key, default)` — Retrieves the environment variable with name `key`, returning `default` if it is not present.
|
||||
- `env(key)` — Alias for `env_var(key)`.
|
||||
- `env(key, default)` — Alias for `env_var_or_default(key, default)`.
|
||||
- `env_var_or_default(key, default)` — Retrieves the environment variable with name `key`, returning `default` if it is not present.
|
||||
- `env(key)` — Alias for `env_var(key)`.
|
||||
- `env(key, default)` — Alias for `env_var_or_default(key, default)`.
|
||||
|
||||
#### Invocation Directory
|
||||
- `invocation_directory()` - Retrieves the absolute path to the current directory when `just` was invoked.
|
||||
- `invocation_directory()` - Retrieves the absolute path to the current directory when `just` was invoked.
|
||||
|
||||
For example, to call `rustfmt` on files just under the "current directory" (from the user/invoker's perspective), use the following rule:
|
||||
For example, to call `rustfmt` on files just under the "current directory" (from the user/invoker's perspective), use the following rule:
|
||||
```just
|
||||
rustfmt:
|
||||
find {{invocation_directory()}} -name \*.rs -exec rustfmt {} \;
|
||||
|
@ -462,17 +462,17 @@ build:
|
|||
```
|
||||
|
||||
#### Justfile and Justfile Directory
|
||||
- `justfile()` - Retrieves the path of the current `justfile`.
|
||||
- `justfile_directory()` - Retrieves the path of the parent directory of the current `justfile`.
|
||||
- `justfile()` - Retrieves the path of the current `justfile`.
|
||||
- `justfile_directory()` - Retrieves the path of the parent directory of the current `justfile`.
|
||||
|
||||
For example, to run a command relative to the location of the current `justfile`:
|
||||
For example, to run a command relative to the location of the current `justfile`:
|
||||
```just
|
||||
script:
|
||||
./{{justfile_directory()}}/scripts/some_script
|
||||
```
|
||||
|
||||
#### Just Executable
|
||||
- `just_executable()` - Absolute path to the `just` executable.
|
||||
- `just_executable()` - Absolute path to the `just` executable.
|
||||
|
||||
For example:
|
||||
```just
|
||||
|
@ -486,54 +486,54 @@ The executable is at: /bin/just
|
|||
```
|
||||
|
||||
#### String Manipulation
|
||||
- `quote(s)` - Replace all single quotes with `'\''` and prepend and append single quotes to `s`. This is sufficient to escape special characters for many shells, including most Bourne [shell](Shell.md) descendants.
|
||||
- `replace(s, from, to)` - Replace all occurrences of `from` in `s` to `to`.
|
||||
- `replace_regex(s, regex, replacement)` - Replace all occurrences of `regex` in `s` to `replacement`. Regular expressions are provided by the [Rust `regex` crate](https://docs.rs/regex/latest/regex/). See the [syntax documentation](https://docs.rs/regex/latest/regex/#syntax) for usage examples. Capture groups are supported. The `replacement` string uses [Replacement string syntax](https://docs.rs/regex/latest/regex/struct.Regex.html#replacement-string-syntax).
|
||||
- `trim(s)` - Remove leading and trailing whitespace from `s`.
|
||||
- `trim_end(s)` - Remove trailing whitespace from `s`.
|
||||
- `trim_end_match(s, pat)` - Remove suffix of `s` matching `pat`.
|
||||
- `trim_end_matches(s, pat)` - Repeatedly remove suffixes of `s` matching `pat`.
|
||||
- `trim_start(s)` - Remove leading whitespace from `s`.
|
||||
- `trim_start_match(s, pat)` - Remove prefix of `s` matching `pat`.
|
||||
- `trim_start_matches(s, pat)` - Repeatedly remove prefixes of `s` matching `pat`.
|
||||
- `quote(s)` - Replace all single quotes with `'\''` and prepend and append single quotes to `s`. This is sufficient to escape special characters for many shells, including most Bourne [shell](Shell.md) descendants.
|
||||
- `replace(s, from, to)` - Replace all occurrences of `from` in `s` to `to`.
|
||||
- `replace_regex(s, regex, replacement)` - Replace all occurrences of `regex` in `s` to `replacement`. Regular expressions are provided by the [Rust `regex` crate](https://docs.rs/regex/latest/regex/). See the [syntax documentation](https://docs.rs/regex/latest/regex/#syntax) for usage examples. Capture groups are supported. The `replacement` string uses [Replacement string syntax](https://docs.rs/regex/latest/regex/struct.Regex.html#replacement-string-syntax).
|
||||
- `trim(s)` - Remove leading and trailing whitespace from `s`.
|
||||
- `trim_end(s)` - Remove trailing whitespace from `s`.
|
||||
- `trim_end_match(s, pat)` - Remove suffix of `s` matching `pat`.
|
||||
- `trim_end_matches(s, pat)` - Repeatedly remove suffixes of `s` matching `pat`.
|
||||
- `trim_start(s)` - Remove leading whitespace from `s`.
|
||||
- `trim_start_match(s, pat)` - Remove prefix of `s` matching `pat`.
|
||||
- `trim_start_matches(s, pat)` - Repeatedly remove prefixes of `s` matching `pat`.
|
||||
|
||||
#### Case Conversion
|
||||
- `capitalize(s)` - Convert first character of `s` to uppercase and the rest to lowercase.
|
||||
- `kebabcase(s)` - Convert `s` to `kebab-case`.
|
||||
- `lowercamelcase(s)` - Convert `s` to `lowerCamelCase`.
|
||||
- `lowercase(s)` - Convert `s` to lowercase.
|
||||
- `shoutykebabcase(s)` - Convert `s` to `SHOUTY-KEBAB-CASE`.
|
||||
- `shoutysnakecase(s)` - Convert `s` to `SHOUTY_SNAKE_CASE`.
|
||||
- `snakecase(s)` - Convert `s` to `snake_case`.
|
||||
- `titlecase(s)` - Convert `s` to `Title Case`.
|
||||
- `uppercamelcase(s)` - Convert `s` to `UpperCamelCase`.
|
||||
- `uppercase(s)` - Convert `s` to uppercase.
|
||||
- `capitalize(s)` - Convert first character of `s` to uppercase and the rest to lowercase.
|
||||
- `kebabcase(s)` - Convert `s` to `kebab-case`.
|
||||
- `lowercamelcase(s)` - Convert `s` to `lowerCamelCase`.
|
||||
- `lowercase(s)` - Convert `s` to lowercase.
|
||||
- `shoutykebabcase(s)` - Convert `s` to `SHOUTY-KEBAB-CASE`.
|
||||
- `shoutysnakecase(s)` - Convert `s` to `SHOUTY_SNAKE_CASE`.
|
||||
- `snakecase(s)` - Convert `s` to `snake_case`.
|
||||
- `titlecase(s)` - Convert `s` to `Title Case`.
|
||||
- `uppercamelcase(s)` - Convert `s` to `UpperCamelCase`.
|
||||
- `uppercase(s)` - Convert `s` to uppercase.
|
||||
|
||||
#### Path Manipulation
|
||||
##### Fallible
|
||||
- `absolute_path(path)` - Absolute path to relative `path` in the working directory. `absolute_path("./bar.txt")` in directory `/foo` is `/foo/bar.txt`.
|
||||
- `extension(path)` - Extension of `path`. `extension("/foo/bar.txt")` is `txt`.
|
||||
- `file_name(path)` - File name of `path` with any leading directory components removed. `file_name("/foo/bar.txt")` is `bar.txt`.
|
||||
- `file_stem(path)` - File name of `path` without extension. `file_stem("/foo/bar.txt")` is `bar`.
|
||||
- `parent_directory(path)` - Parent directory of `path`. `parent_directory("/foo/bar.txt")` is `/foo`.
|
||||
- `without_extension(path)` - `path` without extension. `without_extension("/foo/bar.txt")` is `/foo/bar`.
|
||||
- `absolute_path(path)` - Absolute path to relative `path` in the working directory. `absolute_path("./bar.txt")` in directory `/foo` is `/foo/bar.txt`.
|
||||
- `extension(path)` - Extension of `path`. `extension("/foo/bar.txt")` is `txt`.
|
||||
- `file_name(path)` - File name of `path` with any leading directory components removed. `file_name("/foo/bar.txt")` is `bar.txt`.
|
||||
- `file_stem(path)` - File name of `path` without extension. `file_stem("/foo/bar.txt")` is `bar`.
|
||||
- `parent_directory(path)` - Parent directory of `path`. `parent_directory("/foo/bar.txt")` is `/foo`.
|
||||
- `without_extension(path)` - `path` without extension. `without_extension("/foo/bar.txt")` is `/foo/bar`.
|
||||
|
||||
These functions can fail, for example if a path does not have an extension, which will halt execution.
|
||||
|
||||
##### Infallible
|
||||
- `clean(path)` - Simplify `path` by removing extra path separators, intermediate `.` components, and `..` where possible. `clean("foo//bar")` is `foo/bar`, `clean("foo/..")` is `.`, `clean("foo/./bar")` is `foo/bar`.
|
||||
- `join(a, b…)` - _This function uses `/` on Unix and `\` on [Windows](../../windows/Windows.md), which can be lead to unwanted behavior. The `/` operator, e.g., `a / b`, which always uses `/`, should be considered as a replacement unless `\`s are specifically desired on [Windows](../../windows/Windows.md)._ Join path `a` with path `b`. `join("foo/bar", "baz")` is `foo/bar/baz`. Accepts two or more arguments.
|
||||
- `clean(path)` - Simplify `path` by removing extra path separators, intermediate `.` components, and `..` where possible. `clean("foo//bar")` is `foo/bar`, `clean("foo/..")` is `.`, `clean("foo/./bar")` is `foo/bar`.
|
||||
- `join(a, b…)` - _This function uses `/` on Unix and `\` on [Windows](../../windows/Windows.md), which can be lead to unwanted behavior. The `/` operator, e.g., `a / b`, which always uses `/`, should be considered as a replacement unless `\`s are specifically desired on [Windows](../../windows/Windows.md)._ Join path `a` with path `b`. `join("foo/bar", "baz")` is `foo/bar/baz`. Accepts two or more arguments.
|
||||
|
||||
#### Filesystem Access
|
||||
- `path_exists(path)` - Returns `true` if the path points at an existing entity and `false` otherwise. Traverses symbolic links, and returns `false` if the path is inaccessible or points to a broken symlink.
|
||||
- `path_exists(path)` - Returns `true` if the path points at an existing entity and `false` otherwise. Traverses symbolic links, and returns `false` if the path is inaccessible or points to a broken symlink.
|
||||
|
||||
#### Error Reporting
|
||||
- `error(message)` - Abort execution and report error `message` to user.
|
||||
- `error(message)` - Abort execution and report error `message` to user.
|
||||
|
||||
#### UUID and Hash Generation
|
||||
- `sha256(string)` - Return the [SHA](../../cryptography/SHA.md)-256 hash of `string` as a hexadecimal string.
|
||||
- `sha256_file(path)` - Return the [SHA](../../cryptography/SHA.md)-256 hash of the file at `path` as a hexadecimal string.
|
||||
- `uuid()` - Return a randomly generated UUID.
|
||||
- `sha256(string)` - Return the [SHA](../../cryptography/SHA.md)-256 hash of `string` as a hexadecimal string.
|
||||
- `sha256_file(path)` - Return the [SHA](../../cryptography/SHA.md)-256 hash of the file at `path` as a hexadecimal string.
|
||||
- `uuid()` - Return a randomly generated UUID.
|
||||
|
||||
### Recipe Attributes
|
||||
Recipes may be annotated with attributes that change their behavior.
|
||||
|
@ -546,7 +546,7 @@ Recipes may be annotated with attributes that change their behavior.
|
|||
| `[macos]` | Enable recipe on [MacOS](../../macos/macOS.md). |
|
||||
| `[unix]` | Enable recipe on Unixes. (Includes [MacOS](../../macos/macOS.md)). |
|
||||
| `[windows]` | Enable recipe on [Windows](../../windows/Windows.md). |
|
||||
| `[private]`1 | See Private Recipes. |
|
||||
| `[private]`1 | See Private Recipes. |
|
||||
|
||||
A recipe can have multiple attributes, either on multiple lines:
|
||||
```just
|
||||
|
@ -564,9 +564,9 @@ foo:
|
|||
```
|
||||
|
||||
#### Enabling and Disabling Recipes
|
||||
The `[linux]`, `[macos]`, `[unix]`, and `[windows]` attributes are configuration attributes. By default, recipes are always enabled. A recipe with one or more configuration attributes will only be enabled when one or more of those configurations is active.
|
||||
The `[linux]`, `[macos]`, `[unix]`, and `[windows]` attributes are configuration attributes. By default, recipes are always enabled. A recipe with one or more configuration attributes will only be enabled when one or more of those configurations is active.
|
||||
|
||||
This can be used to write `justfile`s that behave differently depending on which operating system they run on. The `run` recipe in this `justfile` will compile and run `main.c`, using a different C compiler and using the correct output binary name for that compiler depending on the operating system:
|
||||
This can be used to write `justfile`s that behave differently depending on which operating system they run on. The `run` recipe in this `justfile` will compile and run `main.c`, using a different C compiler and using the correct output binary name for that compiler depending on the operating system:
|
||||
|
||||
```just
|
||||
[unix]
|
||||
|
@ -581,9 +581,9 @@ run:
|
|||
```
|
||||
|
||||
#### Disabling Changing Directory
|
||||
`just` normally executes recipes with the current directory set to the directory that contains the `justfile`. This can be disabled using the `[no-cd]` attribute. This can be used to create recipes which use paths relative to the invocation directory, or which operate on the current directory.
|
||||
`just` normally executes recipes with the current directory set to the directory that contains the `justfile`. This can be disabled using the `[no-cd]` attribute. This can be used to create recipes which use paths relative to the invocation directory, or which operate on the current directory.
|
||||
|
||||
For example, this `commit` recipe:
|
||||
For example, this `commit` recipe:
|
||||
```just
|
||||
[no-cd]
|
||||
commit file:
|
||||
|
@ -591,7 +591,7 @@ commit file:
|
|||
git commit
|
||||
```
|
||||
|
||||
Can be used with paths that are relative to the current directory, because `[no-cd]` prevents `just` from changing the current directory when executing `commit`.
|
||||
Can be used with paths that are relative to the current directory, because `[no-cd]` prevents `just` from changing the current directory when executing `commit`.
|
||||
|
||||
### Command Evaluation Using Backticks
|
||||
Backticks can be used to store the result of commands:
|
||||
|
@ -612,7 +612,7 @@ stuff := ```
|
|||
</code></pre>
|
||||
|
||||
### Conditional Expressions
|
||||
`if`/`else` expressions evaluate different branches depending on if two expressions evaluate to the same value:
|
||||
`if`/`else` expressions evaluate different branches depending on if two expressions evaluate to the same value:
|
||||
```just
|
||||
foo := if "2" == "2" { "Good!" } else { "1984" }
|
||||
|
||||
|
@ -651,7 +651,7 @@ $ just bar
|
|||
match
|
||||
```
|
||||
|
||||
Regular expressions are provided by the [regex crate](https://github.com/rust-lang/regex), whose syntax is documented on [docs.rs](https://docs.rs/regex/1.5.4/regex/#syntax). Since regular expressions commonly use backslash escape sequences, consider using single-quoted string literals, which will pass slashes to the regex parser unmolested.
|
||||
Regular expressions are provided by the [regex crate](https://github.com/rust-lang/regex), whose syntax is documented on [docs.rs](https://docs.rs/regex/1.5.4/regex/#syntax). Since regular expressions commonly use backslash escape sequences, consider using single-quoted string literals, which will pass slashes to the regex parser unmolested.
|
||||
|
||||
Conditional expressions short-circuit, which means they only evaluate one of their branches. This can be used to make sure that backtick expressions don't run when they shouldn't.
|
||||
```just
|
||||
|
@ -664,7 +664,7 @@ bar foo:
|
|||
echo {{ if foo == "bar" { "hello" } else { "goodbye" } }}
|
||||
```
|
||||
|
||||
> Note the space after the final `}`! Without the space, the interpolation will be prematurely closed.
|
||||
> Note the space after the final `}`! Without the space, the interpolation will be prematurely closed.
|
||||
|
||||
Multiple conditionals can be chained:
|
||||
```just
|
||||
|
@ -686,7 +686,7 @@ abc
|
|||
```
|
||||
|
||||
### Stopping execution with error
|
||||
Execution can be halted with the `error` function. For example:
|
||||
Execution can be halted with the `error` function. For example:
|
||||
```just
|
||||
foo := if "hello" == "goodbye" {
|
||||
"xyz"
|
||||
|
@ -722,14 +722,14 @@ $ just
|
|||
./test --test linux
|
||||
```
|
||||
|
||||
Any number of arguments of the form `NAME=VALUE` can be passed before recipes:
|
||||
Any number of arguments of the form `NAME=VALUE` can be passed before recipes:
|
||||
```shell
|
||||
$ just os=plan9
|
||||
./build plan9
|
||||
./test --test plan9
|
||||
```
|
||||
|
||||
Or you can use the `--set` flag:
|
||||
Or you can use the `--set` flag:
|
||||
```shell
|
||||
$ just --set os bsd
|
||||
./build bsd
|
||||
|
@ -737,8 +737,8 @@ $ just --set os bsd
|
|||
```
|
||||
|
||||
### Getting and Setting [Environment Variables](../../linux/Environment%20Variables.md)
|
||||
#### Exporting `just` Variables
|
||||
Assignments prefixed with the `export` keyword will be exported to recipes as [environment variables](../../linux/Environment%20Variables.md):
|
||||
#### Exporting `just` Variables
|
||||
Assignments prefixed with the `export` keyword will be exported to recipes as [environment variables](../../linux/Environment%20Variables.md):
|
||||
```just
|
||||
export RUST_BACKTRACE := "1"
|
||||
|
||||
|
@ -747,7 +747,7 @@ test:
|
|||
cargo test
|
||||
```
|
||||
|
||||
Parameters prefixed with a `$` will be exported as [environment variables](../../linux/Environment%20Variables.md):
|
||||
Parameters prefixed with a `$` will be exported as [environment variables](../../linux/Environment%20Variables.md):
|
||||
```just
|
||||
test $RUST_BACKTRACE="1":
|
||||
# will print a stack trace if it crashes
|
||||
|
@ -767,7 +767,7 @@ a $A $B=`echo $A`:
|
|||
echo $A $B
|
||||
```
|
||||
|
||||
When `export` is set, all `just` variables are exported as [environment variables](../../linux/Environment%20Variables.md).
|
||||
When `export` is set, all `just` variables are exported as [environment variables](../../linux/Environment%20Variables.md).
|
||||
|
||||
#### Getting [Environment Variables](../../linux/Environment%20Variables.md) from the environment
|
||||
[Environment variables](../../linux/Environment%20Variables.md) from the environment are passed automatically to the recipes.
|
||||
|
@ -782,11 +782,11 @@ $ just
|
|||
HOME is '/home/myuser'
|
||||
```
|
||||
|
||||
#### Setting `just` Variables from [Environment Variables](../../linux/Environment%20Variables.md)
|
||||
[Environment variables](../../linux/Environment%20Variables.md) can be propagated to `just` variables using the functions `env_var()` and `env_var_or_default()`.
|
||||
#### Setting `just` Variables from [Environment Variables](../../linux/Environment%20Variables.md)
|
||||
[Environment variables](../../linux/Environment%20Variables.md) can be propagated to `just` variables using the functions `env_var()` and `env_var_or_default()`.
|
||||
|
||||
### Recipe Parameters
|
||||
Recipes may have parameters. Here recipe `build` has a parameter called `target`:
|
||||
Recipes may have parameters. Here recipe `build` has a parameter called `target`:
|
||||
```just
|
||||
build target:
|
||||
@echo 'Building {{target}}…'
|
||||
|
@ -860,13 +860,13 @@ test triple=(arch + "-unknown-unknown") input=(arch / "input.dat"):
|
|||
./test {{triple}}
|
||||
```
|
||||
|
||||
The last parameter of a recipe may be variadic, indicated with either a `+` or a `*` before the argument name:
|
||||
The last parameter of a recipe may be variadic, indicated with either a `+` or a `*` before the argument name:
|
||||
```just
|
||||
backup +FILES:
|
||||
scp {{FILES}} me@server.com:
|
||||
```
|
||||
|
||||
Variadic parameters prefixed with `+` accept _one or more_ arguments and expand to a string containing those arguments separated by spaces:
|
||||
Variadic parameters prefixed with `+` accept _one or more_ arguments and expand to a string containing those arguments separated by spaces:
|
||||
```shell
|
||||
$ just backup FAQ.md GRAMMAR.md
|
||||
scp FAQ.md GRAMMAR.md me@server.com:
|
||||
|
@ -874,7 +874,7 @@ FAQ.md 100% 1831 1.8KB/s 00:00
|
|||
GRAMMAR.md 100% 1666 1.6KB/s 00:00
|
||||
```
|
||||
|
||||
Variadic parameters prefixed with `*` accept _zero or more_ arguments and expand to a string containing those arguments separated by spaces, or an empty string if no arguments are present:
|
||||
Variadic parameters prefixed with `*` accept _zero or more_ arguments and expand to a string containing those arguments separated by spaces, or an empty string if no arguments are present:
|
||||
```just
|
||||
commit MESSAGE *FLAGS:
|
||||
git commit {{FLAGS}} -m "{{MESSAGE}}"
|
||||
|
@ -886,7 +886,7 @@ test +FLAGS='-q':
|
|||
cargo test {{FLAGS}}
|
||||
```
|
||||
|
||||
`{{…}}` substitutions may need to be quoted if they contain spaces. For example, if you have the following recipe:
|
||||
`{{…}}` substitutions may need to be quoted if they contain spaces. For example, if you have the following recipe:
|
||||
```just
|
||||
search QUERY:
|
||||
lynx https://www.google.com/?q={{QUERY}}
|
||||
|
@ -897,7 +897,7 @@ And you type:
|
|||
$ just search "cat toupee"
|
||||
```
|
||||
|
||||
`just` will run the command `lynx https://www.google.com/?q=cat toupee`, which will get parsed by `sh` as `lynx`, `https://www.google.com/?q=cat`, and `toupee`, and not the intended `lynx` and `https://www.google.com/?q=cat toupee`.
|
||||
`just` will run the command `lynx https://www.google.com/?q=cat toupee`, which will get parsed by `sh` as `lynx`, `https://www.google.com/?q=cat`, and `toupee`, and not the intended `lynx` and `https://www.google.com/?q=cat toupee`.
|
||||
|
||||
You can fix this by adding quotes:
|
||||
```just
|
||||
|
@ -905,7 +905,7 @@ search QUERY:
|
|||
lynx 'https://www.google.com/?q={{QUERY}}'
|
||||
```
|
||||
|
||||
Parameters prefixed with a `$` will be exported as [environment variables](../../linux/Environment%20Variables.md):
|
||||
Parameters prefixed with a `$` will be exported as [environment variables](../../linux/Environment%20Variables.md):
|
||||
```just
|
||||
foo $bar:
|
||||
echo $bar
|
||||
|
@ -914,7 +914,7 @@ foo $bar:
|
|||
### Running Recipes at the End of a Recipe
|
||||
Normal dependencies of a recipes always run before a recipe starts. That is to say, the dependee always runs before the depender. These dependencies are called "prior dependencies".
|
||||
|
||||
A recipe can also have subsequent dependencies, which run after the recipe and are introduced with an `&&`:
|
||||
A recipe can also have subsequent dependencies, which run after the recipe and are introduced with an `&&`:
|
||||
```just
|
||||
a:
|
||||
echo 'A!'
|
||||
|
@ -929,7 +929,7 @@ d:
|
|||
echo 'D!'
|
||||
```
|
||||
|
||||
…running _b_ prints:
|
||||
…running _b_ prints:
|
||||
```shell
|
||||
$ just b
|
||||
echo 'A!'
|
||||
|
@ -943,7 +943,7 @@ D!
|
|||
```
|
||||
|
||||
### Running Recipes in the Middle of a Recipe
|
||||
`just` doesn't support running recipes in the middle of another recipe, but you can call `just` recursively in the middle of a recipe. Given the following `justfile`:
|
||||
`just` doesn't support running recipes in the middle of another recipe, but you can call `just` recursively in the middle of a recipe. Given the following `justfile`:
|
||||
```just
|
||||
a:
|
||||
echo 'A!'
|
||||
|
@ -957,7 +957,7 @@ c:
|
|||
echo 'C!'
|
||||
```
|
||||
|
||||
…running _b_ prints:
|
||||
…running _b_ prints:
|
||||
```shell
|
||||
$ just b
|
||||
echo 'A!'
|
||||
|
@ -970,10 +970,10 @@ echo 'B end!'
|
|||
B end!
|
||||
```
|
||||
|
||||
This has limitations, since recipe `c` is run with an entirely new invocation of `just`: Assignments will be recalculated, dependencies might run twice, and command line arguments will not be propagated to the child `just` process.
|
||||
This has limitations, since recipe `c` is run with an entirely new invocation of `just`: Assignments will be recalculated, dependencies might run twice, and command line arguments will not be propagated to the child `just` process.
|
||||
|
||||
### Writing Recipes in Other Languages
|
||||
Recipes that start with `#!` are called shebang recipes, and are executed by saving the recipe body to a file and running it. This lets you write recipes in different languages:
|
||||
Recipes that start with `#!` are called shebang recipes, and are executed by saving the recipe body to a file and running it. This lets you write recipes in different languages:
|
||||
```just
|
||||
polyglot: python js perl sh ruby nu
|
||||
|
||||
|
@ -1014,14 +1014,14 @@ Hola from a nushell script!
|
|||
Hello from ruby!
|
||||
```
|
||||
|
||||
On Unix-like operating systems, including [Linux](../../linux/Linux.md) and [MacOS](../../macos/macOS.md), shebang recipes are executed by saving the recipe body to a file in a temporary directory, marking the file as executable, and executing it. The OS then parses the shebang line into a command line and invokes it, including the path to the file. For example, if a recipe starts with `#!/usr/bin/env bash`, the final command that the OS runs will be something like `/usr/bin/env bash /tmp/PATH_TO_SAVED_RECIPE_BODY`. Keep in mind that different operating systems split shebang lines differently.
|
||||
On Unix-like operating systems, including [Linux](../../linux/Linux.md) and [MacOS](../../macos/macOS.md), shebang recipes are executed by saving the recipe body to a file in a temporary directory, marking the file as executable, and executing it. The OS then parses the shebang line into a command line and invokes it, including the path to the file. For example, if a recipe starts with `#!/usr/bin/env bash`, the final command that the OS runs will be something like `/usr/bin/env bash /tmp/PATH_TO_SAVED_RECIPE_BODY`. Keep in mind that different operating systems split shebang lines differently.
|
||||
|
||||
[Windows](../../windows/Windows.md) does not support shebang lines. On [Windows](../../windows/Windows.md), `just` splits the shebang line into a command and arguments, saves the recipe body to a file, and invokes the split command and arguments, adding the path to the saved recipe body as the final argument.
|
||||
[Windows](../../windows/Windows.md) does not support shebang lines. On [Windows](../../windows/Windows.md), `just` splits the shebang line into a command and arguments, saves the recipe body to a file, and invokes the split command and arguments, adding the path to the saved recipe body as the final argument.
|
||||
|
||||
### Multi-Line Constructs
|
||||
Recipes without an initial shebang are evaluated and run line-by-line, which means that multi-line constructs probably won't do what you want.
|
||||
|
||||
For example, with the following `justfile`:
|
||||
For example, with the following `justfile`:
|
||||
```makefile
|
||||
conditional:
|
||||
if true; then
|
||||
|
@ -1029,7 +1029,7 @@ conditional:
|
|||
fi
|
||||
```
|
||||
|
||||
The extra leading whitespace before the second line of the `conditional` recipe will produce a parse error:
|
||||
The extra leading whitespace before the second line of the `conditional` recipe will produce a parse error:
|
||||
```shell
|
||||
$ just conditional
|
||||
error: Recipe line has extra leading whitespace
|
||||
|
@ -1040,7 +1040,7 @@ error: Recipe line has extra leading whitespace
|
|||
|
||||
To work around this, you can write conditionals on one line, escape newlines with slashes, or add a shebang to your recipe. Some examples of multi-line constructs are provided for reference.
|
||||
|
||||
#### `if` statements
|
||||
#### `if` statements
|
||||
```just
|
||||
conditional:
|
||||
if true; then echo 'True!'; fi
|
||||
|
@ -1061,7 +1061,7 @@ conditional:
|
|||
fi
|
||||
```
|
||||
|
||||
#### `for` loops
|
||||
#### `for` loops
|
||||
```just
|
||||
for:
|
||||
for file in `ls .`; do echo $file; done
|
||||
|
@ -1082,7 +1082,7 @@ for:
|
|||
done
|
||||
```
|
||||
|
||||
#### `while` loops
|
||||
#### `while` loops
|
||||
```just
|
||||
while:
|
||||
while `server-is-dead`; do ping -c 1 server; done
|
||||
|
@ -1104,7 +1104,7 @@ while:
|
|||
```
|
||||
|
||||
### Private Recipes
|
||||
Recipes and aliases whose name starts with a `_` are omitted from `just --list`:
|
||||
Recipes and aliases whose name starts with a `_` are omitted from `just --list`:
|
||||
```just
|
||||
test: _test-helper
|
||||
./bin/test
|
||||
|
@ -1119,7 +1119,7 @@ Available recipes:
|
|||
test
|
||||
```
|
||||
|
||||
The `[private]` attribute may also be used to hide recipes or aliases without needing to change the name:
|
||||
The `[private]` attribute may also be used to hide recipes or aliases without needing to change the name:
|
||||
```just
|
||||
[private]
|
||||
foo:
|
||||
|
|
|
@ -5,7 +5,7 @@ repo: https://github.com/zyedidia/micro
|
|||
website: https://micro-editor.github.io/
|
||||
---
|
||||
# micro
|
||||
**micro** is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals. It comes as a single, batteries-included, static binary with no dependencies; you can download and use it right now!
|
||||
**micro** is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals. It comes as a single, batteries-included, static binary with no dependencies; you can download and use it right now!
|
||||
|
||||
As its name indicates, micro aims to be somewhat of a successor to the nano editor by being easy to install and use. It strives to be enjoyable as a full-time editor for people who prefer to work in a terminal, or those who regularly edit files over [SSH](../network/SSH.md).
|
||||
|
||||
|
@ -283,30 +283,30 @@ MouseWheelRight
|
|||
```
|
||||
|
||||
# Commands
|
||||
Micro provides the following commands that can be executed at the command-bar by pressing `Ctrl-e` and entering the command. Arguments are placed in single quotes here but these are not necessary when entering the command in micro.
|
||||
Micro provides the following commands that can be executed at the command-bar by pressing `Ctrl-e` and entering the command. Arguments are placed in single quotes here but these are not necessary when entering the command in micro.
|
||||
|
||||
- `bind 'key' 'action'`: creates a keybinding from key to action. See the `keybindings` documentation for more information about binding keys. This command will modify `bindings.json` and overwrite any bindings to `key` that already exist.
|
||||
- `help 'topic'?`: opens the corresponding help topic. If no topic is provided opens the default help screen. Help topics are stored as `.md` files in the `runtime/help` directory of the source tree, which is embedded in the final binary.
|
||||
- `bind 'key' 'action'`: creates a keybinding from key to action. See the `keybindings` documentation for more information about binding keys. This command will modify `bindings.json` and overwrite any bindings to `key` that already exist.
|
||||
- `help 'topic'?`: opens the corresponding help topic. If no topic is provided opens the default help screen. Help topics are stored as `.md` files in the `runtime/help` directory of the source tree, which is embedded in the final binary.
|
||||
- `save 'filename'?`: saves the current buffer. If the file is provided it will 'save as' the filename.
|
||||
- `quit`: quits micro.
|
||||
- `goto 'line'`: jumps to the given line number. A negative number can be passed to jump inward from the end of the file; for example, -5 jumps to the 5th-last line in the file.
|
||||
- `replace 'search' 'value' 'flags'?`: This will replace `search` with `value`. The `flags` are optional. Possible flags are:
|
||||
- `replace 'search' 'value' 'flags'?`: This will replace `search` with `value`. The `flags` are optional. Possible flags are:
|
||||
- `-a`: Replace all occurrences at once
|
||||
- `-l`: Do a literal search instead of a [regex](../../tools/Regex.md) search
|
||||
|
||||
Note that `search` must be a valid [regex](../../tools/Regex.md) (unless `-l` is passed). If one of the arguments does not have any spaces in it, you may omit the quotes.
|
||||
- `replaceall 'search' 'value'`: this will replace all occurrences of `search` with `value` without user confirmation.
|
||||
See `replace` command for more information.
|
||||
- `set 'option' 'value'`: sets the option to value. See the `options` help topic for a list of options you can set. This will modify your `settings.json` with the new value.
|
||||
- `setlocal 'option' 'value'`: sets the option to value locally (only in the current buffer). This will _not_ modify `settings.json`.
|
||||
Note that `search` must be a valid [regex](../../tools/Regex.md) (unless `-l` is passed). If one of the arguments does not have any spaces in it, you may omit the quotes.
|
||||
- `replaceall 'search' 'value'`: this will replace all occurrences of `search` with `value` without user confirmation.
|
||||
See `replace` command for more information.
|
||||
- `set 'option' 'value'`: sets the option to value. See the `options` help topic for a list of options you can set. This will modify your `settings.json` with the new value.
|
||||
- `setlocal 'option' 'value'`: sets the option to value locally (only in the current buffer). This will _not_ modify `settings.json`.
|
||||
- `show 'option'`: shows the current value of the given option.
|
||||
- `run 'sh-command'`: runs the given [shell](Shell.md) command in the background. The command's output will be displayed in one line when it finishes running.
|
||||
- `vsplit 'filename'`: opens a vertical split with `filename`. If no filename is provided, a vertical split is opened with an empty buffer.
|
||||
- `hsplit 'filename'`: same as `vsplit` but opens a horizontal split instead of a vertical split.
|
||||
- `vsplit 'filename'`: opens a vertical split with `filename`. If no filename is provided, a vertical split is opened with an empty buffer.
|
||||
- `hsplit 'filename'`: same as `vsplit` but opens a horizontal split instead of a vertical split.
|
||||
- `tab 'filename'`: opens the given file in a new tab.
|
||||
- `tabmove '[-+]?n'`: Moves the active tab to another slot. `n` is an integer. If `n` is prefixed with `-` or `+`, then it represents a relative position (e.g. `tabmove +2` moves the tab to the right by `2`). If `n` has no prefix, it represents an absolute position (e.g. `tabmove 2` moves the tab to slot `2`).
|
||||
- `tabswitch 'tab'`: This command will switch to the specified tab. The `tab` can either be a tab number, or a name of a tab.
|
||||
- `textfilter 'sh-command'`: filters the current selection through a [shell](Shell.md) command as standard input and replaces the selection with the stdout of the [shell](Shell.md) command. For example, to sort a list of numbers, first select them, and then execute `> textfilter sort -n`.
|
||||
- `tabmove '[-+]?n'`: Moves the active tab to another slot. `n` is an integer. If `n` is prefixed with `-` or `+`, then it represents a relative position (e.g. `tabmove +2` moves the tab to the right by `2`). If `n` has no prefix, it represents an absolute position (e.g. `tabmove 2` moves the tab to slot `2`).
|
||||
- `tabswitch 'tab'`: This command will switch to the specified tab. The `tab` can either be a tab number, or a name of a tab.
|
||||
- `textfilter 'sh-command'`: filters the current selection through a [shell](Shell.md) command as standard input and replaces the selection with the stdout of the [shell](Shell.md) command. For example, to sort a list of numbers, first select them, and then execute `> textfilter sort -n`.
|
||||
- `log`: opens a log of all messages and debug statements.
|
||||
- `plugin list`: lists all installed plugins.
|
||||
- `plugin install 'pl'`: install a plugin.
|
||||
|
@ -315,13 +315,13 @@ Micro provides the following commands that can be executed at the command-bar by
|
|||
- `plugin search 'pl'`: search available plugins for a keyword.
|
||||
- `plugin available`: show available plugins that can be installed.
|
||||
- `reload`: reloads all runtime files.
|
||||
- `cd 'path'`: Change the working directory to the given `path`.
|
||||
- `cd 'path'`: Change the working directory to the given `path`.
|
||||
- `pwd`: Print the current working directory.
|
||||
- `open 'filename'`: Open a file in the current buffer.
|
||||
- `reset 'option'`: resets the given option to its default value
|
||||
- `retab`: Replaces all leading tabs with spaces or leading spaces with tabs depending on the value of `tabstospaces`.
|
||||
- `retab`: Replaces all leading tabs with spaces or leading spaces with tabs depending on the value of `tabstospaces`.
|
||||
- `raw`: micro will open a new tab and show the escape sequence for every event it receives from the terminal. This shows you what micro actually sees from the terminal and helps you see which bindings aren't possible and why. This is most useful for debugging keybindings.
|
||||
- `showkey`: Show the action(s) bound to a given key. For example running `> showkey Ctrl-c` will display `Copy`.
|
||||
- `showkey`: Show the action(s) bound to a given key. For example running `> showkey Ctrl-c` will display `Copy`.
|
||||
- `term exec?`: Open a terminal emulator running the given executable. If no executable is given, this will open the default [shell](Shell.md) in the terminal emulator.
|
||||
|
||||
## Settings
|
||||
|
|
|
@ -24,7 +24,7 @@ aria2c [<OPTIONS>] [<URI>|<MAGNET>|<TORRENT_FILE>|<METALINK_FILE>]
|
|||
| `-V, --check-integrity [true/false]` | Check file integrity by validating piece hashes or a hash of entire file. This option has effect only in [BitTorrent](../../../internet/BitTorrent.md), Metalink downloads with checksums or [HTTP](../../../internet/HTTP.md)(S)/[FTP](../../../internet/FTP.md) downloads with --checksum option. If piece hashes are provided, this option can detect damaged portions of a file and re-download them. If a hash of entire file is provided, hash check is only done when file has been already download. This is determined by file length. If hash check fails, file is re-downloaded from scratch. If both piece hashes and a hash of entire file are provided, only piece hashes are used. Default: false |
|
||||
| `-c, --continue [true/false]` | Continue downloading a partially downloaded file. Use this option to resume a download started by a web browser or another program which downloads files sequentially from the beginning. Currently this option is only applicable to [HTTP](../../../internet/HTTP.md)(S)/[FTP](../../../internet/FTP.md) downloads. |
|
||||
| `--checksum=<TYPE>=<DIGEST>` | Set checksum. TYPE is hash type. The supported hash type is listed in Hash Algorithms in aria2c -v. DIGEST is hex digest. For example, setting sha-1 digest looks like this: `sha-1=0192ba11326fe2298c8cb4de616f4d4140213838` This option applies only to [HTTP](../../../internet/HTTP.md)(S)/[FTP](../../../internet/FTP.md) downloads. |
|
||||
| `-x, --max-connection-per-server=<NUM>` | The maximum number of connections to one server for each download. Default: **1** |
|
||||
| `-x, --max-connection-per-server=<NUM>` | The maximum number of connections to one server for each download. Default: **1** |
|
||||
| `-k, --min-split-size=<SIZE>` | aria2 does not split less than 2\*SIZE byte range. For example, let's consider downloading 20MiB file. If SIZE is 10M, aria2 can split file into 2 range (0-10MiB) and (10MiB-20MiB) and download it using 2 sources(if --split >= 2, of course). If SIZE is 15M, since 2\*15M > 20MiB, aria2 does not split file and download it using 1 source. You can append K or M (1K = 1024, 1M = 1024K). Possible Values: 1M -1024M Default: 20M |
|
||||
| `-o, --out=<FILE>` | The file name of the downloaded file. It is always relative to the directory given in `--dir` option. |
|
||||
| `-s, --split=<N>` | Download a file using N connections. If more than N URIs are given, first N URIs are used and remaining URIs are used for backup. If less than N URIs are given, those URIs are used more than once so that N connections total are made simultaneously. The number of connections to the same host is restricted by the `--max-connection-per-server` option. See also the `--min-split-size` option. Default: 5 |
|
||||
|
|
|
@ -4,7 +4,7 @@ wiki: https://en.wikipedia.org/wiki/Netcat
|
|||
---
|
||||
|
||||
# netcat
|
||||
The `nc` (or `netcat`) utility is used for just about anything under the sun involving [TCP](../../../internet/TCP.md), [UDP](../../../internet/UDP.md), or UNIX-domain sockets. It can open [TCP](../../../internet/TCP.md) connections, send [UDP](../../../internet/UDP.md) packets, listen on arbitrary [TCP](../../../internet/TCP.md) and [UDP](../../../internet/UDP.md) ports, do port scanning, and deal with both IPv4 and IPv6.
|
||||
The `nc` (or `netcat`) utility is used for just about anything under the sun involving [TCP](../../../internet/TCP.md), [UDP](../../../internet/UDP.md), or UNIX-domain sockets. It can open [TCP](../../../internet/TCP.md) connections, send [UDP](../../../internet/UDP.md) packets, listen on arbitrary [TCP](../../../internet/TCP.md) and [UDP](../../../internet/UDP.md) ports, do port scanning, and deal with both IPv4 and IPv6.
|
||||
|
||||
Common uses include:
|
||||
- simple [TCP](../../../internet/TCP.md) proxies
|
||||
|
@ -19,32 +19,32 @@ Common uses include:
|
|||
| `-6` | Use IPv6 addresses only |
|
||||
| `-b` | Allow broadcast |
|
||||
| `-l` | Listen for an incoming connection rather than initiating a connection to a remote host |
|
||||
| `-N` | shutdown the network socket after EOF on the input. Some servers require this to finish their work |
|
||||
| `-p <source_port>` | Specify the source port `nc` should use, subject to privilege restrictions and availability |
|
||||
| `-N` | shutdown the network socket after EOF on the input. Some servers require this to finish their work |
|
||||
| `-p <source_port>` | Specify the source port `nc` should use, subject to privilege restrictions and availability |
|
||||
|
||||
## Examples
|
||||
### Client/Server Model
|
||||
On one console, start `nc` listening on a specific port for a connection. For example:
|
||||
On one console, start `nc` listening on a specific port for a connection. For example:
|
||||
```shell
|
||||
nc -l 1234
|
||||
```
|
||||
|
||||
`nc` is now listening on port 1234 for a connection. On a second console (or a second machine), connect to the machine and port being listened on:
|
||||
`nc` is now listening on port 1234 for a connection. On a second console (or a second machine), connect to the machine and port being listened on:
|
||||
```shell
|
||||
nc -N 127.0.0.1 1234
|
||||
```
|
||||
|
||||
There should now be a connection between the ports. Anything typed at the second console will be concatenated to the first, and vice-versa. After the connection has been set up, `nc` does not really care which side is being used as a ‘server’ and which side is being used as a ‘client’. The connection may be terminated using an `EOF` (`^D`), as the `-N` flag was given.
|
||||
There should now be a connection between the ports. Anything typed at the second console will be concatenated to the first, and vice-versa. After the connection has been set up, `nc` does not really care which side is being used as a ‘server’ and which side is being used as a ‘client’. The connection may be terminated using an `EOF` (`^D`), as the `-N` flag was given.
|
||||
|
||||
### Data Transfer
|
||||
The example in the previous section can be expanded to build a basic data transfer model. Any information input into one end of the connection will be output to the other end, and input and output can be easily captured in order to emulate file transfer.
|
||||
|
||||
Start by using `nc` to listen on a specific port, with output captured into a file:
|
||||
Start by using `nc` to listen on a specific port, with output captured into a file:
|
||||
```shell
|
||||
nc -l 1234 > filename.out
|
||||
```
|
||||
|
||||
Using a second machine, connect to the listening `nc` process, feeding it the file which is to be transferred:
|
||||
Using a second machine, connect to the listening `nc` process, feeding it the file which is to be transferred:
|
||||
```shell
|
||||
nc -N host.example.com 1234 < filename.in
|
||||
```
|
||||
|
|
|
@ -17,7 +17,7 @@ Wget has been designed for robustness over slow or unstable network connections;
|
|||
| Option | Description |
|
||||
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-b, --background` | Go to background immediately after startup. If no output file is specified via the -o, output is redirected to wget-log. |
|
||||
| `-e, --execute command` | Execute command as if it were a part of .wgetrc. A command thus invoked will be executed after the commands in .wgetrc, thus taking precedence over them. If you need to specify more than one wgetrc command, use multiple instances of -e. |
|
||||
| `-e, --execute command` | Execute command as if it were a part of .wgetrc. A command thus invoked will be executed after the commands in .wgetrc, thus taking precedence over them. If you need to specify more than one wgetrc command, use multiple instances of -e. |
|
||||
|
||||
### Logging Options
|
||||
| Option | Description |
|
||||
|
@ -25,48 +25,48 @@ Wget has been designed for robustness over slow or unstable network connections;
|
|||
| `-o, --output-file=logfile` | Log all messages to logfile. The messages are normally reported to standard error. |
|
||||
| `-a, --append-output=logfile` | Append to logfile. This is the same as -o, only it appends to logfile instead of overwriting the old log file. |
|
||||
| `-q, --quiet` | Turn off Wget's output. |
|
||||
| `-i, --input-file=file` | Read URLs from a local or external file. If - is specified as file, URLs are read from the standard input. (Use ./- to read from a file literally named -.). If this function is used, no URLs need be present on the command line. If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved. If --force-html is not specified, then file should consist of a series of URLs, one per line. However, if you specify --force-html, the document will be regarded as [html](../../../internet/HTML.md). In that case you may have problems with relative links, which you can solve either by adding "\<base href="url">" to the documents or by specifying --base=url on the command line. If the file is an external one, the document will be automatically treated as [html](../../../internet/HTML.md) if the Content-Type matches text/html. Furthermore, the file's location will be implicitly used as base href if none was specified. |
|
||||
| `-B, --base=URL` | Resolves relative links using URL as the point of reference, when reading links from an [HTML](../../../internet/HTML.md) file specified via the -i/--input-file option (together with --force-html, or when the input file was fetched remotely from a server describing it as [HTML](../../../internet/HTML.md)). This is equivalent to the presence of a "BASE" tag in the [HTML](../../../internet/HTML.md) input file, with URL as the value for the "href" attribute. |
|
||||
| `-i, --input-file=file` | Read URLs from a local or external file. If - is specified as file, URLs are read from the standard input. (Use ./- to read from a file literally named -.). If this function is used, no URLs need be present on the command line. If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved. If --force-html is not specified, then file should consist of a series of URLs, one per line. However, if you specify --force-html, the document will be regarded as [html](../../../internet/HTML.md). In that case you may have problems with relative links, which you can solve either by adding "\<base href="url">" to the documents or by specifying --base=url on the command line. If the file is an external one, the document will be automatically treated as [html](../../../internet/HTML.md) if the Content-Type matches text/html. Furthermore, the file's location will be implicitly used as base href if none was specified. |
|
||||
| `-B, --base=URL` | Resolves relative links using URL as the point of reference, when reading links from an [HTML](../../../internet/HTML.md) file specified via the -i/--input-file option (together with --force-html, or when the input file was fetched remotely from a server describing it as [HTML](../../../internet/HTML.md)). This is equivalent to the presence of a "BASE" tag in the [HTML](../../../internet/HTML.md) input file, with URL as the value for the "href" attribute. |
|
||||
|
||||
### Download Options
|
||||
| Option | Description |
|
||||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-t, --tries=number` | Set number of tries to number. Specify 0 or inf for infinite retrying. The default is to retry 20 times, with the exception of fatal errors like "connection refused" or "not found" (404), which are not retried. |
|
||||
| `-O, --output-document=file` | The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output, disabling link conversion. (Use ./- to print to a file literally named -.) |
|
||||
| `--backups=backups` | Before (over)writing a file, back up an existing file by adding a .1 suffix (\_1 on VMS) to the file name. Such backup files are rotated to .2, .3, and so on, up to `backups` (and lost beyond that) |
|
||||
| `-c, --continue` | Continue getting a partially-downloaded file. This is useful when you want to finish up a download started by a previous instance of Wget, or by another program. |
|
||||
| `-t, --tries=number` | Set number of tries to number. Specify 0 or inf for infinite retrying. The default is to retry 20 times, with the exception of fatal errors like "connection refused" or "not found" (404), which are not retried. |
|
||||
| `-O, --output-document=file` | The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output, disabling link conversion. (Use ./- to print to a file literally named -.) |
|
||||
| `--backups=backups` | Before (over)writing a file, back up an existing file by adding a .1 suffix (\_1 on VMS) to the file name. Such backup files are rotated to .2, .3, and so on, up to `backups` (and lost beyond that) |
|
||||
| `-c, --continue` | Continue getting a partially-downloaded file. This is useful when you want to finish up a download started by a previous instance of Wget, or by another program. |
|
||||
| `--show-progress` | Force wget to display the progress bar in any verbosity. |
|
||||
| `-T, --timeout=seconds` | Set the network timeout to `seconds` seconds. |
|
||||
| `--limit-rate=amount` | Limit the download speed to amount bytes per second. Amount may be expressed in bytes, kilobytes with the k suffix, or megabytes with the m suffix. For example, --limit-rate=20k will limit the retrieval rate to 20KB/s. This is useful when, for whatever reason, you don't want Wget to consume the entire available bandwidth. |
|
||||
| `-w, --wait=seconds` | Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent. Instead of in seconds, the time can be specified in minutes using the "m" suffix, in hours using "h" suffix, or in days using "d" suffix. |
|
||||
| `--waitretry=seconds` | If you don't want Wget to wait between every retrieval, but only between retries of failed downloads, you can use this option. Wget will use linear backoff, waiting 1 second after the first failure on a given file, then waiting 2 seconds after the second failure on that file, up to the maximum number of seconds you specify. |
|
||||
| `--random-wait` | Some web sites may perform log analysis to identify retrieval programs such as Wget by looking for statistically significant similarities in the time between requests. This option causes the time between requests to vary between 0.5 and 1.5 * wait seconds, where wait was specified using the --wait option, in order to mask Wget's presence from such analysis. |
|
||||
| `--limit-rate=amount` | Limit the download speed to amount bytes per second. Amount may be expressed in bytes, kilobytes with the k suffix, or megabytes with the m suffix. For example, --limit-rate=20k will limit the retrieval rate to 20KB/s. This is useful when, for whatever reason, you don't want Wget to consume the entire available bandwidth. |
|
||||
| `-w, --wait=seconds` | Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent. Instead of in seconds, the time can be specified in minutes using the "m" suffix, in hours using "h" suffix, or in days using "d" suffix. |
|
||||
| `--waitretry=seconds` | If you don't want Wget to wait between every retrieval, but only between retries of failed downloads, you can use this option. Wget will use linear backoff, waiting 1 second after the first failure on a given file, then waiting 2 seconds after the second failure on that file, up to the maximum number of seconds you specify. |
|
||||
| `--random-wait` | Some web sites may perform log analysis to identify retrieval programs such as Wget by looking for statistically significant similarities in the time between requests. This option causes the time between requests to vary between 0.5 and 1.5 * wait seconds, where wait was specified using the --wait option, in order to mask Wget's presence from such analysis. |
|
||||
| `--user=user, --password=password` | Specify the username and password for both [FTP](../../../internet/FTP.md) and [HTTP](../../../internet/HTTP.md) file retrieval. |
|
||||
| `--ask-password` | Prompt for a password for each connection established. |
|
||||
|
||||
### Directory Options
|
||||
| Option | Description |
|
||||
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-nH, --no-host-directories` | Disable generation of host-prefixed directories. By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior. |
|
||||
| `-nH, --no-host-directories` | Disable generation of host-prefixed directories. By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior. |
|
||||
| `--cut-dirs=number` | Ignore number directory components. This is useful for getting a fine-grained control over the directory where recursive retrieval will be saved. |
|
||||
| `-P, --directory-prefix=prefix` | Set directory prefix to prefix. The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree. The default is . (the current directory). |
|
||||
| `-P, --directory-prefix=prefix` | Set directory prefix to prefix. The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree. The default is . (the current directory). |
|
||||
|
||||
### HTTP Options
|
||||
| Option | Description |
|
||||
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `--no-cookies` | Disable the use of cookies. |
|
||||
| `--load-cookies file` | Load cookies from file before the first [HTTP](../../../internet/HTTP.md) retrieval. file is a textual file in the format originally used by Netscape's cookies.txt file. |
|
||||
| `--load-cookies file` | Load cookies from file before the first [HTTP](../../../internet/HTTP.md) retrieval. file is a textual file in the format originally used by Netscape's cookies.txt file. |
|
||||
| `--save-cookies file` | Save cookies to file before exiting. This will not save cookies that have expired or that have no expiry time (so-called "session cookies"), but also see --keep-session-cookies. |
|
||||
| `--keep-session-cookies` | When specified, causes --save-cookies to also save session cookies. Session cookies are normally not saved because they are meant to be kept in memory and forgotten when you exit the browser. Saving them is useful on sites that require you to log in or to visit the home page before you can access some pages. With this option, multiple Wget runs are considered a single browser session as far as the site is concerned. |
|
||||
| `--header=header-line` | Send header-line along with the rest of the headers in each [HTTP](../../../internet/HTTP.md) request. The supplied header is sent as-is, which means it must contain name and value separated by colon, and must not contain newlines. |
|
||||
| `--proxy-user=user, --proxy-password=password` | Specify the username user and password password for authentication on a proxy server. Wget will encode them using the "basic" authentication scheme. |
|
||||
| `--referer=url` | Include 'Referer: url' header in [HTTP](../../../internet/HTTP.md) request. Useful for retrieving documents with server-side processing that assume they are always being retrieved by interactive web browsers and only come out properly when Referer is set to one of the pages that point to them. |
|
||||
| `--keep-session-cookies` | When specified, causes --save-cookies to also save session cookies. Session cookies are normally not saved because they are meant to be kept in memory and forgotten when you exit the browser. Saving them is useful on sites that require you to log in or to visit the home page before you can access some pages. With this option, multiple Wget runs are considered a single browser session as far as the site is concerned. |
|
||||
| `--header=header-line` | Send header-line along with the rest of the headers in each [HTTP](../../../internet/HTTP.md) request. The supplied header is sent as-is, which means it must contain name and value separated by colon, and must not contain newlines. |
|
||||
| `--proxy-user=user, --proxy-password=password` | Specify the username user and password password for authentication on a proxy server. Wget will encode them using the "basic" authentication scheme. |
|
||||
| `--referer=url` | Include 'Referer: url' header in [HTTP](../../../internet/HTTP.md) request. Useful for retrieving documents with server-side processing that assume they are always being retrieved by interactive web browsers and only come out properly when Referer is set to one of the pages that point to them. |
|
||||
| `-U, --user-agent=agent-string` | Identify as `agent-string` to the [HTTP](../../../internet/HTTP.md) server. |
|
||||
|
||||
### HTTPS Options
|
||||
| Option | Description |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `--no-check-certificate` | Don't check the server certificate against the available certificate authorities. Also don't require the URL host name to match the common name presented by the certificate. |
|
||||
| `--no-check-certificate` | Don't check the server certificate against the available certificate authorities. Also don't require the URL host name to match the common name presented by the certificate. |
|
||||
| `--ca-certificate=file` | Use file as the file with the bundle of certificate authorities ("CA") to verify the peers. The certificates must be in PEM format. |
|
||||
| `--ca-directory=directory` | Specifies directory containing CA certificates in PEM format. |
|
||||
|
||||
|
@ -75,5 +75,5 @@ Wget has been designed for robustness over slow or unstable network connections;
|
|||
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `-r, --recursive` | Turn on recursive retrieving. The default maximum depth is 5. |
|
||||
| `-l, --level=depth` | Set the maximum number of subdirectories that Wget will recurse into to depth. |
|
||||
| `-k, --convert-links` | After the download is complete, convert the links in the document to make them suitable for local viewing. This affects not only the visible hyperlinks, but any part of the document that links to external content, such as embedded images, links to style sheets, hyperlinks to non-[HTML](../../../internet/HTML.md) content, etc. |
|
||||
| `-p, --page-requisites` | This option causes Wget to download all the files that are necessary to properly display a given [HTML](../../../internet/HTML.md) page. This includes such things as inlined images, sounds, and referenced stylesheets. |
|
||||
| `-k, --convert-links` | After the download is complete, convert the links in the document to make them suitable for local viewing. This affects not only the visible hyperlinks, but any part of the document that links to external content, such as embedded images, links to style sheets, hyperlinks to non-[HTML](../../../internet/HTML.md) content, etc. |
|
||||
| `-p, --page-requisites` | This option causes Wget to download all the files that are necessary to properly display a given [HTML](../../../internet/HTML.md) page. This includes such things as inlined images, sounds, and referenced stylesheets. |
|
||||
|
|
|
@ -21,7 +21,7 @@ patch -i <dir> <patch-file>
|
|||
## Options
|
||||
| Option | Description |
|
||||
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-b, --backup` | Make backup files. That is, when patching a file, rename or copy the original instead of removing it. When backing up a file that does not exist, an empty, unreadable backup file is created as a placeholder to represent the nonexistent file |
|
||||
| `-b, --backup` | Make backup files. That is, when patching a file, rename or copy the original instead of removing it. When backing up a file that does not exist, an empty, unreadable backup file is created as a placeholder to represent the nonexistent file |
|
||||
| `-d, --directory <dir>` | Change to the directory dir immediately, before doing anything else. |
|
||||
| `--dry-run` | Print the results of applying the patches without actually changing any files |
|
||||
| `-i, --input <patchfile>` | Read the patch from patchfile. If patchfile is -, read from standard input, the default |
|
||||
|
|
|
@ -5,30 +5,30 @@ repo: https://github.com/nukesor/pueue
|
|||
# pueue
|
||||
Pueue is a command-line task management tool for sequential and parallel execution of long-running tasks.
|
||||
|
||||
Simply put, it's a tool that **p**rocesses a q**ueue** of [shell](Shell.md) commands. On top of that, there are a lot of convenient features and abstractions.
|
||||
Simply put, it's a tool that **p**rocesses a q**ueue** of [shell](Shell.md) commands. On top of that, there are a lot of convenient features and abstractions.
|
||||
|
||||
Since Pueue is not bound to any terminal, you can control your tasks from any terminal on the same machine. The queue will be continuously processed, even if you no longer have any active [ssh](../network/SSH.md) sessions.
|
||||
|
||||
## Start the Daemon
|
||||
Before you can use the `pueue` client, you have to start the daemon.
|
||||
Before you can use the `pueue` client, you have to start the daemon.
|
||||
|
||||
**Local:** The daemon can be run in the current [shell](Shell.md). Just run `pueued` anywhere on your command line. It'll exit if you close the terminal, though.
|
||||
**Local:** The daemon can be run in the current [shell](Shell.md). Just run `pueued` anywhere on your command line. It'll exit if you close the terminal, though.
|
||||
|
||||
**Background:** To fork and run `pueued` into the background, add the `-d` or `--daemonize` flag. E.g. `pueued -d`.
|
||||
The daemon can always be shut down using the client command `pueue shutdown`.
|
||||
**Background:** To fork and run `pueued` into the background, add the `-d` or `--daemonize` flag. E.g. `pueued -d`.
|
||||
The daemon can always be shut down using the client command `pueue shutdown`.
|
||||
|
||||
### Systemd
|
||||
[Systemd](../../linux/systemd/Systemd.md) user services allow every user to start/enable their own session on [Linux](../../linux/Linux.md) operating system distributions.
|
||||
|
||||
If you didn't install Pueue with a package manager, follow these instructions first:
|
||||
1. download `pueued.service` from the GitHub Releases page;
|
||||
2. place `pueued.service` in `/etc/systemd/user/` or `~/.config/systemd/user/`;
|
||||
3. make sure the `pueued` binary is placed at `/usr/bin`, which is where `pueued.service` expects is to be.
|
||||
1. download `pueued.service` from the GitHub Releases page;
|
||||
2. place `pueued.service` in `/etc/systemd/user/` or `~/.config/systemd/user/`;
|
||||
3. make sure the `pueued` binary is placed at `/usr/bin`, which is where `pueued.service` expects is to be.
|
||||
|
||||
Then, regardless of how you installed Pueue, run:
|
||||
1. `systemctl --user start pueued`, to start the `pueued` service;
|
||||
2. `systemctl --user enable pueued`, to run the `pueued` service at system startup;
|
||||
3. `systemctl --user status pueued`, to ensure it is **active (running)**.
|
||||
1. `systemctl --user start pueued`, to start the `pueued` service;
|
||||
2. `systemctl --user enable pueued`, to run the `pueued` service at system startup;
|
||||
3. `systemctl --user status pueued`, to ensure it is **active (running)**.
|
||||
|
||||
## Using pueue
|
||||
Usage: `pueue <action> <options>`
|
||||
|
|
|
@ -6,7 +6,7 @@ repo: https://github.com/BurntSushi/ripgrep
|
|||
---
|
||||
|
||||
# ripgrep
|
||||
ripgrep is a line-oriented search tool that recursively searches the current directory for a [regex](../../tools/Regex.md) pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files. ripgrep has first class support on Windows, [macOS](../../macos/macOS.md) and [Linux](../../linux/Linux.md) with binary downloads available for [every release](https://github.com/BurntSushi/ripgrep/releases). ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.
|
||||
ripgrep is a line-oriented search tool that recursively searches the current directory for a [regex](../../tools/Regex.md) pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files. ripgrep has first class support on Windows, [macOS](../../macos/macOS.md) and [Linux](../../linux/Linux.md) with binary downloads available for [every release](https://github.com/BurntSushi/ripgrep/releases). ripgrep is similar to other popular search tools like The Silver Searcher, ack and grep.
|
||||
|
||||
## Usage
|
||||
```shell
|
||||
|
|
|
@ -5,16 +5,16 @@ repo: https://github.com/ismaelgv/rnr
|
|||
---
|
||||
# rnr
|
||||
[Repo](https://github.com/ismaelgv/rnr)
|
||||
**RnR** is a command-line tool to **securely rename** multiple files and directories that supports regular expressions.
|
||||
**RnR** is a command-line tool to **securely rename** multiple files and directories that supports regular expressions.
|
||||
|
||||
## Usage
|
||||
Flags
|
||||
```shell
|
||||
-n, --dry-run Only show what would be done (default mode)
|
||||
-f, --force Make actual changes to files
|
||||
-x, --hidden Include hidden files and directories
|
||||
-D, --include-dirs Rename matching directories
|
||||
-r, --recursive Recursive mode
|
||||
-s, --silent Do not print any information
|
||||
--no-dump Do not dump operations into a file
|
||||
-n, --dry-run Only show what would be done (default mode)
|
||||
-f, --force Make actual changes to files
|
||||
-x, --hidden Include hidden files and directories
|
||||
-D, --include-dirs Rename matching directories
|
||||
-r, --recursive Recursive mode
|
||||
-s, --silent Do not print any information
|
||||
--no-dump Do not dump operations into a file
|
||||
```
|
|
@ -5,7 +5,7 @@ repo: https://github.com/chmln/sd
|
|||
---
|
||||
# sd
|
||||
[Repo](https://github.com/chmln/sd)
|
||||
`sd` is an intuitive find & replace CLI.
|
||||
`sd` is an intuitive find & replace CLI.
|
||||
|
||||
## Usage
|
||||
```shell
|
||||
|
|
|
@ -8,7 +8,7 @@ source: https://www.kali.org/tools/smbmap
|
|||
SMBMap allows users to enumerate [samba](../web/Samba.md) share drives across an entire domain. List share drives, drive permissions, share contents, upload/download functionality, file name auto-download pattern matching, and even execute remote commands. This tool was designed with pen testing in mind, and is intended to simplify searching for potentially sensitive data across large networks.
|
||||
|
||||
## Usage
|
||||
Usage: `smbmap [options]...`
|
||||
Usage: `smbmap [options]...`
|
||||
|
||||
### Options
|
||||
#### Main arguments
|
||||
|
|
|
@ -238,7 +238,7 @@ Usage: `install [OPTION]... SOURCE... DIRECTORY`
|
|||
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `-b` | make a backup of each existing destination file |
|
||||
| `-S, --suffix=SUFFIX` | override the usual backup suffix |
|
||||
| `-C, --compare` | compare content of source and destination files, and if no change to content, ownership, and permissions, do not modify the destination at all |
|
||||
| `-C, --compare` | compare content of source and destination files, and if no change to content, ownership, and permissions, do not modify the destination at all |
|
||||
| `-d, --directory` | treat all arguments as directory names; create all components of the specified directories |
|
||||
| `-g, --group=GROUP` | set group ownership, instead of process' current group |
|
||||
| `-m, --mode=MODE` | set permission mode (as in chmod), instead of rwxr-xr-x |
|
||||
|
|
|
@ -29,7 +29,7 @@ $ doas -s
|
|||
The configuration for doas is stored at `/etc/doas.conf`.
|
||||
|
||||
The config file consist of rules with the following format:
|
||||
`permit|deny [options] identity [as target] [cmd command [args ...]]`
|
||||
`permit|deny [options] identity [as target] [cmd command [args ...]]`
|
||||
|
||||
Rules consist of the following parts:
|
||||
- `permit|deny`: The action to be taken if this rule matches.
|
||||
|
@ -39,19 +39,19 @@ Options:
|
|||
| Option | Description |
|
||||
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `nopass` | The user is not required to enter a password. |
|
||||
| `nolog` | Do not log successful command execution to syslogd |
|
||||
| `nolog` | Do not log successful command execution to syslogd |
|
||||
| `persist` | After the user successfully authenticates, do not ask for a password again for some time. |
|
||||
| `keepenv` | Environment variables other than those listed in doas are retained when creating the environment for the new process. |
|
||||
| `setenv {var=value}` | Keep or set the space-separated specified variables. Variables may also be removed with a leading ‘-’ or set using the latter syntax. If the first character of value is a ‘`$`’ then the value to be set is taken from the existing environment variable of the indicated name. This option is processed after the default environment has been created. |
|
||||
| `keepenv` | Environment variables other than those listed in doas are retained when creating the environment for the new process. |
|
||||
| `setenv {var=value}` | Keep or set the space-separated specified variables. Variables may also be removed with a leading ‘-’ or set using the latter syntax. If the first character of value is a ‘`$`’ then the value to be set is taken from the existing environment variable of the indicated name. This option is processed after the default environment has been created. |
|
||||
|
||||
|
||||
- `identity`: The username to match. Groups may be specified by prepending a colon (‘:’). Numeric IDs are also accepted.
|
||||
|
||||
- `as`: The target user the running user is allowed to run the command as. The default is all users.
|
||||
- `as`: The target user the running user is allowed to run the command as. The default is all users.
|
||||
|
||||
- `cmd`: The command the user is allowed or denied to run. The default is all commands. Be advised that it is best to specify absolute paths. If a relative path is specified, only a restricted `PATH` will be searched.
|
||||
- `cmd`: The command the user is allowed or denied to run. The default is all commands. Be advised that it is best to specify absolute paths. If a relative path is specified, only a restricted `PATH` will be searched.
|
||||
|
||||
- `args`: Arguments to command. The command arguments provided by the user need to match those specified. The keyword `args` alone means that command must be run without any arguments.
|
||||
- `args`: Arguments to command. The command arguments provided by the user need to match those specified. The keyword `args` alone means that command must be run without any arguments.
|
||||
|
||||
The last matching rule determines the action taken. If no rule matches, the action is denied.
|
||||
|
||||
|
|
|
@ -10,4 +10,4 @@ repo: https://github.com/zsh-users/zsh
|
|||
Zsh is a powerful [shell](Shell.md) that operates as both an interactive [shell](Shell.md) and as a scripting language interpreter.
|
||||
|
||||
## Configuration
|
||||
`~/.zshrc`: Used for setting user's interactive [shell](Shell.md) configuration and executing commands, will be read when starting as an _**interactive shell**_.
|
||||
`~/.zshrc`: Used for setting user's interactive [shell](Shell.md) configuration and executing commands, will be read when starting as an _**interactive shell**_.
|
|
@ -8,14 +8,14 @@ Highly customizable Wayland bar for Sway, [hyprland](../desktops/hyprland.md) an
|
|||
![Screenshot][Screenshot]
|
||||
|
||||
## Configuration
|
||||
The configuration uses the [JSON](../../files/JSON.md) file format and is named `config`.
|
||||
The configuration uses the [JSON](../../files/JSON.md) file format and is named `config`.
|
||||
|
||||
Valid directories for this file are:
|
||||
- `~/.config/waybar/`
|
||||
- `~/waybar/`
|
||||
- `/etc/xdg/waybar/`
|
||||
|
||||
A good starting point is the [default config](https://github.com/Alexays/Waybar/blob/master/resources/config).
|
||||
A good starting point is the [default config](https://github.com/Alexays/Waybar/blob/master/resources/config).
|
||||
|
||||
### Bar Config
|
||||
|
||||
|
@ -23,7 +23,7 @@ A good starting point is the [default config](https://github.com/Alexays/Waybar
|
|||
| ----------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `layer` | string | `bottom` | Decide if the bar is displayed in front (`top`) of the windows or behind (`bottom`) them. |
|
||||
| `output` | string | array | |
|
||||
| `position` | string | `top` | Bar position, can be `top`,`bottom`,`left`,`right`. |
|
||||
| `position` | string | `top` | Bar position, can be `top`,`bottom`,`left`,`right`. |
|
||||
| `height` | integer | | Height to be used by the bar if possible, leave blank for a dynamic value. |
|
||||
| `width` | integer | | Width to be used by the bar if possible, leave blank for a dynamic value. |
|
||||
| `modules-left` | array | | Modules that will be displayed on the left. |
|
||||
|
@ -33,25 +33,25 @@ A good starting point is the [default config](https://github.com/Alexays/Waybar
|
|||
| `margin-<top\|left\|bottom\|right>` | integer | | Margins value without units. |
|
||||
| `spacing` | integer | `4` | Size of gaps in between of the different modules. |
|
||||
| `name` | string | | Optional name added as a CSS class, for styling multiple waybars. |
|
||||
| `mode` | string | | Selects one of the preconfigured display modes. This is an equivalent of the [`sway-bar(5)`](https://github.com/swaywm/sway/blob/master/sway/sway-bar.5.scd) `mode` command and supports the same values: `dock`, `hide`, `invisible`, `overlay`. <br>Note: `hide` and `invisible` modes may be not as useful without Sway IPC. |
|
||||
| `mode` | string | | Selects one of the preconfigured display modes. This is an equivalent of the [`sway-bar(5)`](https://github.com/swaywm/sway/blob/master/sway/sway-bar.5.scd) `mode` command and supports the same values: `dock`, `hide`, `invisible`, `overlay`. <br>Note: `hide` and `invisible` modes may be not as useful without Sway IPC. |
|
||||
| `start_hidden` | bool | `false` | Option to start the bar hidden. |
|
||||
| `modifier-reset` | string | `press` | Defines the timing of modifier key to reset the bar visibility. To reset the visibility of the bar with the press of the modifier key use `press`. Use `release` to reset the visibility upon the release of the modifier key and only if no other action happened while the key was pressed. This prevents hiding the bar when the modifier is used to switch a workspace, change binding mode or start a keybinding. |
|
||||
| `exclusive` | bool | `true` | Option to request an exclusive zone from the compositor. Disable this to allow drawing application windows underneath or on top of the bar. <br>Disabled by default for `overlay` layer. |
|
||||
| `fixed-center` | bool | `true` | Prefer fixed center position for the `modules-center` block. The center block will stay in the middle of the bar whenever possible. It can still be pushed around if other blocks need more space. <br>When false, the center block is centered in the space between the left and right block. |
|
||||
| `passthrough` | bool | `false` | Option to pass any pointer events to the window under the bar. <br>Intended to be used with either `top` or `overlay` layers and without exclusive zone. <br>Enabled by default for `overlay` layer. |
|
||||
| `modifier-reset` | string | `press` | Defines the timing of modifier key to reset the bar visibility. To reset the visibility of the bar with the press of the modifier key use `press`. Use `release` to reset the visibility upon the release of the modifier key and only if no other action happened while the key was pressed. This prevents hiding the bar when the modifier is used to switch a workspace, change binding mode or start a keybinding. |
|
||||
| `exclusive` | bool | `true` | Option to request an exclusive zone from the compositor. Disable this to allow drawing application windows underneath or on top of the bar. <br>Disabled by default for `overlay` layer. |
|
||||
| `fixed-center` | bool | `true` | Prefer fixed center position for the `modules-center` block. The center block will stay in the middle of the bar whenever possible. It can still be pushed around if other blocks need more space. <br>When false, the center block is centered in the space between the left and right block. |
|
||||
| `passthrough` | bool | `false` | Option to pass any pointer events to the window under the bar. <br>Intended to be used with either `top` or `overlay` layers and without exclusive zone. <br>Enabled by default for `overlay` layer. |
|
||||
| `gtk-layer-shell` | bool | `true` | Option to disable the use of gtk-layer-shell for popups. Only functional if compiled with gtk-layer-shell support. |
|
||||
| `ipc` | bool | `false` | Option to subscribe to the Sway IPC bar configuration and visibility events and control waybar with `swaymsg bar` commands. <br>Requires `bar_id` value from sway configuration to be either passed with the `-b` commandline argument or specified with the `id` option. <br>See [#1244](https://github.com/Alexays/Waybar/pull/1244) for the documentation and configuration examples. |
|
||||
| `id` | string | | `bar_id` for the Sway IPC. Use this if you need to override the value passed with the `-b bar_id` commandline argument for the specific bar instance. |
|
||||
| `include` | array | | Paths to additional configuration files. <br>Each file can contain a single object with any of the bar configuration options. In case of duplicate options, the first defined value takes precedence, i.e. including file -> first included file -> etc. Nested includes are permitted, but make sure to avoid circular imports. <br>For a multi-bar config, the `include` directive affects only current bar configuration object. |
|
||||
| `ipc` | bool | `false` | Option to subscribe to the Sway IPC bar configuration and visibility events and control waybar with `swaymsg bar` commands. <br>Requires `bar_id` value from sway configuration to be either passed with the `-b` commandline argument or specified with the `id` option. <br>See [#1244](https://github.com/Alexays/Waybar/pull/1244) for the documentation and configuration examples. |
|
||||
| `id` | string | | `bar_id` for the Sway IPC. Use this if you need to override the value passed with the `-b bar_id` commandline argument for the specific bar instance. |
|
||||
| `include` | array | | Paths to additional configuration files. <br>Each file can contain a single object with any of the bar configuration options. In case of duplicate options, the first defined value takes precedence, i.e. including file -> first included file -> etc. Nested includes are permitted, but make sure to avoid circular imports. <br>For a multi-bar config, the `include` directive affects only current bar configuration object. |
|
||||
|
||||
### Multiple instances of a module
|
||||
If you want to have a second instance of a module, you can suffix it by a '#' and a custom name.
|
||||
|
||||
For example if you want a second battery module, you can add `"battery#bat2"` to your modules.
|
||||
For example if you want a second battery module, you can add `"battery#bat2"` to your modules.
|
||||
|
||||
To configure the newly added module, you then also add a module configuration with the same name.
|
||||
|
||||
This could then look something like this _(this is an incomplete example)_:
|
||||
This could then look something like this _(this is an incomplete example)_:
|
||||
```js
|
||||
"modules-right": ["battery", "battery#bat2"],
|
||||
"battery": {
|
||||
|
@ -62,7 +62,7 @@ This could then look something like this _(this is an incomplete example)_:
|
|||
}
|
||||
```
|
||||
|
||||
To style in `styles.css` use :
|
||||
To style in `styles.css` use :
|
||||
```css
|
||||
battery.bat2 {
|
||||
border-bottom: 2px solid #FFFFFF;
|
||||
|
@ -70,14 +70,14 @@ battery.bat2 {
|
|||
```
|
||||
|
||||
## Styling
|
||||
Styling is done using the CSS file format and with a file named `style.css`.
|
||||
Styling is done using the CSS file format and with a file named `style.css`.
|
||||
|
||||
Valid directories for this file are:
|
||||
- `~/.config/waybar/`
|
||||
- `~/waybar/`
|
||||
- `/etc/xdg/waybar/`
|
||||
|
||||
A good starting point is the [default style](https://github.com/Alexays/Waybar/blob/master/resources/style.css).
|
||||
A good starting point is the [default style](https://github.com/Alexays/Waybar/blob/master/resources/style.css).
|
||||
|
||||
## Modules
|
||||
- [Battery](https://github.com/Alexays/Waybar/wiki/Module:-Battery)
|
||||
|
|
|
@ -11,6 +11,6 @@ repo: https://git.suckless.org/dwm/
|
|||
dwm is a dynamic window manager for Xorg. It manages windows in tiled, stacked, and full-screen layouts, as well as many others with the help of optional patches. Layouts can be applied dynamically, optimizing the environment for the application in use and the task being performed. dwm is extremely lightweight and fast, written in C and with a stated design goal of remaining under 2000 source lines of code. dwm can be used with compositor ([picom](picom.md))
|
||||
|
||||
## Configuration
|
||||
dwm is configured at compile-time by editing some of its source files, specifically `config.h`. For detailed information on these settings see the included, well-commented `config.def.h` as well as the [customisation section](https://dwm.suckless.org/customisation/) on the dwm website.
|
||||
dwm is configured at compile-time by editing some of its source files, specifically `config.h`. For detailed information on these settings see the included, well-commented `config.def.h` as well as the [customisation section](https://dwm.suckless.org/customisation/) on the dwm website.
|
||||
|
||||
The official website has a number of [patches](https://dwm.suckless.org/patches/) that can add extra functionality to dwm. These patches primarily make changes to the `dwm.c` file but also make changes to the `config.h` file where appropriate.
|
||||
The official website has a number of [patches](https://dwm.suckless.org/patches/) that can add extra functionality to dwm. These patches primarily make changes to the `dwm.c` file but also make changes to the `config.h` file where appropriate.
|
File diff suppressed because one or more lines are too long
|
@ -6,11 +6,11 @@ os: linux
|
|||
picom is a standalone compositor for Xorg, suitable for use with window managers that do not provide compositing. picom is a fork of compton, which is a fork of xcompmgr-dana, which in turn is a fork of xcompmgr.
|
||||
|
||||
## Configuration
|
||||
The default configuration is available in `/etc/xdg/picom.conf`. For modifications, it can be copied to `~/.config/picom/picom.conf` or `~/.config/picom.conf`.
|
||||
The default configuration is available in `/etc/xdg/picom.conf`. For modifications, it can be copied to `~/.config/picom/picom.conf` or `~/.config/picom.conf`.
|
||||
|
||||
## Usage
|
||||
To manually enable default compositing effects during a session, use the following command:
|
||||
`picom &`
|
||||
|
||||
To autostart picom as a background process for a session, the `-b` argument can be used (may cause a display freeze):
|
||||
To autostart picom as a background process for a session, the `-b` argument can be used (may cause a display freeze):
|
||||
`picom -b`
|
|
@ -5,7 +5,7 @@ website: https://sqlitebrowser.org
|
|||
repo: https://github.com/sqlitebrowser/sqlitebrowser
|
||||
---
|
||||
# DB Browser for SQLite
|
||||
_DB Browser for SQLite_ (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with [SQLite](../../dev/programming/SQLite.md).
|
||||
_DB Browser for SQLite_ (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with [SQLite](../../dev/programming/SQLite.md).
|
||||
|
||||
DB4S is for users and developers who want to create, search, and edit databases. DB4S uses a familiar spreadsheet-like interface, and complicated [SQL](../../dev/programming/languages/SQL.md) commands do not have to be learned.
|
||||
|
||||
|
|
|
@ -19,9 +19,9 @@ http [flags] [METHOD] URL [ITEM [ITEM]]
|
|||
```
|
||||
|
||||
### Querystring parameters
|
||||
If you find yourself manually constructing URLs with querystring parameters on the terminal, you may appreciate the `param==value` syntax for appending [URL](../../internet/URL.md) parameters.
|
||||
If you find yourself manually constructing URLs with querystring parameters on the terminal, you may appreciate the `param==value` syntax for appending [URL](../../internet/URL.md) parameters.
|
||||
|
||||
With that, you don’t have to worry about escaping the `&` separators for your [shell](../cli/Shell.md). Additionally, any special characters in the parameter name or value get automatically [URL](../../internet/URL.md)-escaped (as opposed to the parameters specified in the full [URL](../../internet/URL.md), which HTTPie doesn’t modify).
|
||||
With that, you don’t have to worry about escaping the `&` separators for your [shell](../cli/Shell.md). Additionally, any special characters in the parameter name or value get automatically [URL](../../internet/URL.md)-escaped (as opposed to the parameters specified in the full [URL](../../internet/URL.md), which HTTPie doesn’t modify).
|
||||
```shell
|
||||
$ http https://api.github.com/search/repositories q==httpie per_page==1
|
||||
```
|
||||
|
@ -33,16 +33,16 @@ GET /search/repositories?q=httpie&per_page=1 HTTP/1.1
|
|||
### Request Items
|
||||
| Item Type | Description |
|
||||
| ------------------------------------------------------------:| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| HTTP Headers `Name:Value` | Arbitrary [HTTP](../../internet/HTTP.md) header, e.g. `X-API-Token:123` |
|
||||
| [URL](../../internet/URL.md) parameters `name==value` | Appends the given name/value pair as a querystring parameter to the [URL](../../internet/URL.md). The `==` separator is used. |
|
||||
| Data Fields `field=value` | Request data fields to be serialized as a [JSON](../../files/JSON.md) object (default), to be form-encoded (with `--form, -f`), or to be serialized as `multipart/form-data` (with `--multipart`) |
|
||||
| Raw JSON fields `field:=json` | Useful when sending [JSON](../../files/JSON.md) and one or more fields need to be a `Boolean`, `Number`, nested `Object`, or an `Array`, e.g., `meals:='["ham","spam"]'` or `pies:=[1,2,3]` (note the quotes) |
|
||||
| File upload fields `field@/dir/file`, `field@file;type=mime` | Only available with `--form`, `-f` and `--multipart`. For example `screenshot@~/Pictures/img.png`, or `'cv@cv.txt;type=text/markdown'`. With `--form`, the presence of a file field results in a `--multipart` request |
|
||||
| HTTP Headers `Name:Value` | Arbitrary [HTTP](../../internet/HTTP.md) header, e.g. `X-API-Token:123` |
|
||||
| [URL](../../internet/URL.md) parameters `name==value` | Appends the given name/value pair as a querystring parameter to the [URL](../../internet/URL.md). The `==` separator is used. |
|
||||
| Data Fields `field=value` | Request data fields to be serialized as a [JSON](../../files/JSON.md) object (default), to be form-encoded (with `--form, -f`), or to be serialized as `multipart/form-data` (with `--multipart`) |
|
||||
| Raw JSON fields `field:=json` | Useful when sending [JSON](../../files/JSON.md) and one or more fields need to be a `Boolean`, `Number`, nested `Object`, or an `Array`, e.g., `meals:='["ham","spam"]'` or `pies:=[1,2,3]` (note the quotes) |
|
||||
| File upload fields `field@/dir/file`, `field@file;type=mime` | Only available with `--form`, `-f` and `--multipart`. For example `screenshot@~/Pictures/img.png`, or `'cv@cv.txt;type=text/markdown'`. With `--form`, the presence of a file field results in a `--multipart` request |
|
||||
|
||||
### JSON Requests
|
||||
Data is send as [JSON](../../files/JSON.md) by default.
|
||||
|
||||
Non-string [JSON](../../files/JSON.md) fields use the `:=` separator, which allows you to embed arbitrary [JSON](../../files/JSON.md) data into the resulting [JSON](../../files/JSON.md) object. Additionally, text and raw [JSON](../../files/JSON.md) files can also be embedded into fields using `=@` and `:=@`:
|
||||
Non-string [JSON](../../files/JSON.md) fields use the `:=` separator, which allows you to embed arbitrary [JSON](../../files/JSON.md) data into the resulting [JSON](../../files/JSON.md) object. Additionally, text and raw [JSON](../../files/JSON.md) files can also be embedded into fields using `=@` and `:=@`:
|
||||
```shell
|
||||
$ http PUT pie.dev/put \
|
||||
name=John \ # String (default)
|
||||
|
@ -79,7 +79,7 @@ Host: pie.dev
|
|||
```
|
||||
|
||||
### Forms
|
||||
Submitting forms is very similar to sending [JSON](../../files/JSON.md) requests. Often the only difference is in adding the `--form, -f` option, which ensures that data fields are serialized as, and `Content-Type` is set to `application/x-www-form-urlencoded; charset=utf-8`.
|
||||
Submitting forms is very similar to sending [JSON](../../files/JSON.md) requests. Often the only difference is in adding the `--form, -f` option, which ensures that data fields are serialized as, and `Content-Type` is set to `application/x-www-form-urlencoded; charset=utf-8`.
|
||||
|
||||
#### Regular forms
|
||||
```shell
|
||||
|
@ -94,7 +94,7 @@ name=John+Smith
|
|||
```
|
||||
|
||||
#### File upload forms
|
||||
If one or more file fields is present, the serialization and content type is `multipart/form-data`:
|
||||
If one or more file fields is present, the serialization and content type is `multipart/form-data`:
|
||||
```shell
|
||||
$ http -f POST pie.dev/post name='John Smith' cv@~/files/data.xml
|
||||
```
|
||||
|
@ -107,7 +107,7 @@ The request above is the same as if the following [HTML](../../internet/HTML.md)
|
|||
</form>
|
||||
```
|
||||
|
||||
Please note that `@` is used to simulate a file upload form field, whereas `=@` just embeds the file content as a regular text field value.
|
||||
Please note that `@` is used to simulate a file upload form field, whereas `=@` just embeds the file content as a regular text field value.
|
||||
|
||||
When uploading files, their content type is inferred from the file name. You can manually override the inferred content type:
|
||||
```shell
|
||||
|
@ -115,7 +115,7 @@ $ http -f POST pie.dev/post name='John Smith' cv@'~/files/data.bin;type=applicat
|
|||
```
|
||||
|
||||
### HTTP headers
|
||||
To set custom headers you can use the `Header:Value` notation:
|
||||
To set custom headers you can use the `Header:Value` notation:
|
||||
```shell
|
||||
$ http pie.dev/headers User-Agent:Bacon/1.0 'Cookie:valued-visitor=yes;foo=bar' \
|
||||
X-Foo:Bar Referer:https://httpie.org/
|
||||
|
@ -146,24 +146,24 @@ Host: <taken-from-URL>
|
|||
All of these can be overwritten or unset.
|
||||
|
||||
#### Reading headers from a file
|
||||
You can read headers from a file by using the `:@` operator. This would also effectively strip the newlines from the end.
|
||||
You can read headers from a file by using the `:@` operator. This would also effectively strip the newlines from the end.
|
||||
|
||||
```shell
|
||||
$ http pie.dev/headers X-Data:@files/text.txt
|
||||
```
|
||||
|
||||
#### Empty headers and header un-setting
|
||||
To unset a previously specified header (such a one of the default headers), use `Header:`:
|
||||
To unset a previously specified header (such a one of the default headers), use `Header:`:
|
||||
```shell
|
||||
$ http pie.dev/headers Accept: User-Agent:
|
||||
```
|
||||
|
||||
To send a header with an empty value, use `Header;`, with a semicolon:
|
||||
To send a header with an empty value, use `Header;`, with a semicolon:
|
||||
```shell
|
||||
$ http pie.dev/headers 'Header;'
|
||||
```
|
||||
|
||||
Please note that some internal headers, such as `Content-Length`, can’t be unset if they are automatically added by the client itself.
|
||||
Please note that some internal headers, such as `Content-Length`, can’t be unset if they are automatically added by the client itself.
|
||||
|
||||
#### Multiple header values with the same name
|
||||
If the request is sent with multiple headers that are sharing the same name, then the HTTPie will send them individually.
|
||||
|
@ -190,7 +190,7 @@ Numbers: one,two
|
|||
Also be aware that if the current session contains any headers they will get overwritten by individual commands when sending a request instead of being joined together.
|
||||
|
||||
### Offline mode
|
||||
Use `--offline` to construct [HTTP](../../internet/HTTP.md) requests without sending them anywhere. With `--offline`, HTTPie builds a request based on the specified options and arguments, prints it to `stdout`, and then exits. It works completely offline; no network connection is ever made. This has a number of use cases, including:
|
||||
Use `--offline` to construct [HTTP](../../internet/HTTP.md) requests without sending them anywhere. With `--offline`, HTTPie builds a request based on the specified options and arguments, prints it to `stdout`, and then exits. It works completely offline; no network connection is ever made. This has a number of use cases, including:
|
||||
|
||||
Generating API documentation examples that you can copy & paste without sending a request:
|
||||
```shell
|
||||
|
@ -210,10 +210,10 @@ $ http --offline POST pie.dev/post hello=world > request.http
|
|||
$ nc pie.dev 80 < request.http
|
||||
```
|
||||
|
||||
You can also use the `--offline` mode for debugging and exploring [HTTP](../../internet/HTTP.md) and HTTPie, and for “dry runs”.
|
||||
You can also use the `--offline` mode for debugging and exploring [HTTP](../../internet/HTTP.md) and HTTPie, and for “dry runs”.
|
||||
|
||||
### Cookies
|
||||
[HTTP](../../internet/HTTP.md) clients send [cookies](../../internet/Cookie.md) to the server as regular [HTTP](../../internet/HTTP.md) headers. That means, HTTPie does not offer any special syntax for specifying cookies — the usual `Header:Value` notation is used:
|
||||
[HTTP](../../internet/HTTP.md) clients send [cookies](../../internet/Cookie.md) to the server as regular [HTTP](../../internet/HTTP.md) headers. That means, HTTPie does not offer any special syntax for specifying cookies — the usual `Header:Value` notation is used:
|
||||
|
||||
Send a single [cookie](../../internet/Cookie.md):
|
||||
```shell
|
||||
|
@ -230,7 +230,7 @@ Host: pie.dev
|
|||
User-Agent: HTTPie/0.9.9
|
||||
```
|
||||
|
||||
Send multiple cookies (note: the header is quoted to prevent the [shell](../cli/Shell.md) from interpreting the `;`):
|
||||
Send multiple cookies (note: the header is quoted to prevent the [shell](../cli/Shell.md) from interpreting the `;`):
|
||||
|
||||
```shell
|
||||
$ http pie.dev/cookies 'Cookie:sessionid=foo;another-cookie=bar'
|
||||
|
@ -263,7 +263,7 @@ https -A bearer -a token pie.dev/bearer
|
|||
```
|
||||
|
||||
#### Password prompt
|
||||
If you omit the password part of `--auth, -a`, HTTPie securely prompts you for it:
|
||||
If you omit the password part of `--auth, -a`, HTTPie securely prompts you for it:
|
||||
|
||||
```shell
|
||||
$ http -a username pie.dev/basic-auth/username/password
|
||||
|
@ -275,30 +275,30 @@ By default, [HTTP](../../internet/HTTP.md) redirects are not followed and only t
|
|||
$ http pie.dev/redirect/3
|
||||
```
|
||||
|
||||
#### Follow `Location`
|
||||
To instruct HTTPie to follow the `Location` header of `30x` responses and show the final response instead, use the `--follow, -F` option:
|
||||
#### Follow `Location`
|
||||
To instruct HTTPie to follow the `Location` header of `30x` responses and show the final response instead, use the `--follow, -F` option:
|
||||
```shell
|
||||
$ http --follow pie.dev/redirect/3
|
||||
```
|
||||
|
||||
With `307 Temporary Redirect` and `308 Permanent Redirect`, the method and the body of the original request are reused to perform the redirected request. Otherwise, a body-less `GET` request is performed.
|
||||
With `307 Temporary Redirect` and `308 Permanent Redirect`, the method and the body of the original request are reused to perform the redirected request. Otherwise, a body-less `GET` request is performed.
|
||||
|
||||
#### Showing intermediary redirect responses
|
||||
If you wish to see the intermediary requests/responses, then use the `--all` option:
|
||||
If you wish to see the intermediary requests/responses, then use the `--all` option:
|
||||
|
||||
```shell
|
||||
$ http --follow --all pie.dev/redirect/3
|
||||
```
|
||||
|
||||
#### Limiting maximum redirects followed
|
||||
To change the default limit of maximum `30` redirects, use the `--max-redirects=<limit>` option:
|
||||
To change the default limit of maximum `30` redirects, use the `--max-redirects=<limit>` option:
|
||||
|
||||
```shell
|
||||
$ http --follow --all --max-redirects=2 pie.dev/redirect/3
|
||||
```
|
||||
|
||||
### Proxies
|
||||
You can specify proxies to be used through the `--proxy` argument for each protocol (which is included in the value in case of redirects across protocols):
|
||||
You can specify proxies to be used through the `--proxy` argument for each protocol (which is included in the value in case of redirects across protocols):
|
||||
```shell
|
||||
$ http --proxy=http:http://10.10.1.10:3128 --proxy=https:https://10.10.1.10:1080 example.org
|
||||
```
|
||||
|
@ -309,9 +309,9 @@ $ http --proxy=http:http://user:pass@10.10.1.10:3128 example.org
|
|||
```
|
||||
|
||||
#### Environment variables
|
||||
You can also configure proxies by [environment variables](../../linux/Environment%20Variables.md) `ALL_PROXY`, `HTTP_PROXY` and `HTTPS_PROXY`, and the underlying [Requests library](https://requests.readthedocs.io/en/latest/) will pick them up. If you want to disable proxies configured through the [environment variables](../../linux/Environment%20Variables.md) for certain hosts, you can specify them in `NO_PROXY`.
|
||||
You can also configure proxies by [environment variables](../../linux/Environment%20Variables.md) `ALL_PROXY`, `HTTP_PROXY` and `HTTPS_PROXY`, and the underlying [Requests library](https://requests.readthedocs.io/en/latest/) will pick them up. If you want to disable proxies configured through the [environment variables](../../linux/Environment%20Variables.md) for certain hosts, you can specify them in `NO_PROXY`.
|
||||
|
||||
In your `~/.bash_profile`:
|
||||
In your `~/.bash_profile`:
|
||||
```shell
|
||||
export HTTP_PROXY=http://10.10.1.10:3128
|
||||
export HTTPS_PROXY=https://10.10.1.10:1080
|
||||
|
@ -319,13 +319,13 @@ export NO_PROXY=localhost,example.com
|
|||
```
|
||||
|
||||
#### SOCK
|
||||
Usage for SOCKS is the same as for other types of proxies:
|
||||
Usage for SOCKS is the same as for other types of proxies:
|
||||
```shell
|
||||
$ http --proxy=http:socks5://user:pass@host:port --proxy=https:socks5://user:pass@host:port example.org
|
||||
```
|
||||
|
||||
### HTTPS
|
||||
To skip the host’s SSL certificate verification, you can pass `--verify=no` (default is `yes`):
|
||||
To skip the host’s SSL certificate verification, you can pass `--verify=no` (default is `yes`):
|
||||
|
||||
```shell
|
||||
$ http --verify=no https://pie.dev/get
|
||||
|
@ -338,16 +338,16 @@ By default, HTTPie only outputs the final response and the whole response messag
|
|||
| --------------------------:| -------------------------------------------------------------------------------------------------- |
|
||||
| `--headers, -h` | Only the response headers are printed |
|
||||
| `--body, -b` | Only the response body is printed |
|
||||
| `--meta, -m` | Only the response metadata is printed |
|
||||
| `--verbose, -v` | Print the whole [HTTP](../../internet/HTTP.md) exchange (request and response). This option also enables `--all` (see below) |
|
||||
| `--verbose --verbose, -vv` | Just like `-v`, but also include the response metadata. |
|
||||
| `--meta, -m` | Only the response metadata is printed |
|
||||
| `--verbose, -v` | Print the whole [HTTP](../../internet/HTTP.md) exchange (request and response). This option also enables `--all` (see below) |
|
||||
| `--verbose --verbose, -vv` | Just like `-v`, but also include the response metadata. |
|
||||
| `--print, -p` | Selects parts of the [HTTP](../../internet/HTTP.md) exchange |
|
||||
| `--quiet, -q` | Don’t print anything to `stdout` and `stderr` |
|
||||
| `--quiet, -q` | Don’t print anything to `stdout` and `stderr` |
|
||||
|
||||
### Download mode
|
||||
HTTPie features a download mode in which it acts similarly to [wget](../cli/network/wget.md).
|
||||
HTTPie features a download mode in which it acts similarly to [wget](../cli/network/wget.md).
|
||||
|
||||
When enabled using the `--download, -d` flag, response headers are printed to the terminal (`stderr`), and a progress bar is shown while the response body is being saved to a file.
|
||||
When enabled using the `--download, -d` flag, response headers are printed to the terminal (`stderr`), and a progress bar is shown while the response body is being saved to a file.
|
||||
```shell
|
||||
$ http --download https://github.com/httpie/cli/archive/master.tar.gz
|
||||
```
|
||||
|
@ -365,11 +365,11 @@ Done. 251.30 kB in 2.73862s (91.76 kB/s)
|
|||
#### Downloaded filename
|
||||
There are three mutually exclusive ways through which HTTPie determines the output filename (with decreasing priority):
|
||||
|
||||
1. You can explicitly provide it via `--output, -o`. The file gets overwritten if it already exists (or appended to with `--continue, -c`).
|
||||
2. The server may specify the filename in the optional `Content-Disposition` response header. Any leading dots are stripped from a server-provided filename.
|
||||
3. The last resort HTTPie uses is to generate the filename from a combination of the request [URL](../../internet/URL.md) and the response `Content-Type`. The initial [URL](../../internet/URL.md) is always used as the basis for the generated filename — even if there has been one or more redirects.
|
||||
1. You can explicitly provide it via `--output, -o`. The file gets overwritten if it already exists (or appended to with `--continue, -c`).
|
||||
2. The server may specify the filename in the optional `Content-Disposition` response header. Any leading dots are stripped from a server-provided filename.
|
||||
3. The last resort HTTPie uses is to generate the filename from a combination of the request [URL](../../internet/URL.md) and the response `Content-Type`. The initial [URL](../../internet/URL.md) is always used as the basis for the generated filename — even if there has been one or more redirects.
|
||||
|
||||
To prevent data loss by overwriting, HTTPie adds a unique numerical suffix to the filename when necessary (unless specified with `--output, -o`).
|
||||
To prevent data loss by overwriting, HTTPie adds a unique numerical suffix to the filename when necessary (unless specified with `--output, -o`).
|
||||
|
||||
#### Piping while downloading
|
||||
You can also redirect the response body to another program while the response headers and progress are still shown in the terminal:
|
||||
|
@ -379,17 +379,17 @@ $ http -d https://github.com/httpie/cli/archive/master.tar.gz | tar zxf -
|
|||
```
|
||||
|
||||
#### Resuming downloads
|
||||
If `--output, -o` is specified, you can resume a partial download using the `--continue, -c` option. This only works with servers that support `Range` requests and `206 Partial Content` responses. If the server doesn’t support that, the whole file will simply be downloaded:
|
||||
If `--output, -o` is specified, you can resume a partial download using the `--continue, -c` option. This only works with servers that support `Range` requests and `206 Partial Content` responses. If the server doesn’t support that, the whole file will simply be downloaded:
|
||||
```shell
|
||||
$ http -dco file.zip example.org/file
|
||||
```
|
||||
|
||||
`-dco` is shorthand for `--download` `--continue` `--output`.
|
||||
`-dco` is shorthand for `--download` `--continue` `--output`.
|
||||
|
||||
### Sessions
|
||||
By default, every request HTTPie makes is completely independent of any previous ones to the same host.
|
||||
|
||||
However, HTTPie also supports persistent sessions via the `--session=SESSION_NAME_OR_PATH` option. In a session, custom [HTTP](../../internet/HTTP.md) headers (except for the ones starting with `Content-` or `If-`), authentication, and cookies (manually specified or sent by the server) persist between requests to the same host.
|
||||
However, HTTPie also supports persistent sessions via the `--session=SESSION_NAME_OR_PATH` option. In a session, custom [HTTP](../../internet/HTTP.md) headers (except for the ones starting with `Content-` or `If-`), authentication, and cookies (manually specified or sent by the server) persist between requests to the same host.
|
||||
|
||||
```shell
|
||||
# Create a new session:
|
||||
|
@ -405,7 +405,7 @@ $ http --session=./session.json pie.dev/headers
|
|||
All session data, including credentials, prompted passwords, [cookie](../../internet/Cookie.md) data, and custom headers are stored in plain text. That means session files can also be created and edited manually in a text editor—they are regular [JSON](../../files/JSON.md). It also means that they can be read by anyone who has access to the session file.
|
||||
|
||||
#### Readonly session
|
||||
To use the original session file without updating it from the request/response exchange after it has been created, specify the session name via `--session-read-only=SESSION_NAME_OR_PATH` instead.
|
||||
To use the original session file without updating it from the request/response exchange after it has been created, specify the session name via `--session-read-only=SESSION_NAME_OR_PATH` instead.
|
||||
```shell
|
||||
# If the session file doesn’t exist, then it is created:
|
||||
$ http --session-read-only=./ro-session.json pie.dev/headers Custom-Header:orig-value
|
||||
|
|
|
@ -227,57 +227,57 @@ Usage: `cargo update [--dry-run]`
|
|||
The `Cargo.toml` file for each package is called its manifest. It is written in the [TOML](../../files/TOML.md) format. It contains metadata that is needed to compile the package.
|
||||
|
||||
Every manifest file consists of the following sections:
|
||||
- [`cargo-features`](https://doc.rust-lang.org/cargo/reference/unstable.html) — Unstable, nightly-only features.
|
||||
- [`[package]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-package-section) — Defines a package.
|
||||
- [`name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) — The name of the package.
|
||||
- [`version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field) — The version of the package.
|
||||
- [`authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field) — The authors of the package.
|
||||
- [`edition`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-edition-field) — The [Rust](../../dev/programming/languages/Rust.md) edition.
|
||||
- [`rust-version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field) — The minimal supported [Rust](../../dev/programming/languages/Rust.md) version.
|
||||
- [`description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) — A description of the package.
|
||||
- [`documentation`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-documentation-field) — [URL](../../internet/URL.md) of the package documentation.
|
||||
- [`readme`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-readme-field) — Path to the package’s README file.
|
||||
- [`homepage`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-homepage-field) — [URL](../../internet/URL.md) of the package homepage.
|
||||
- [`repository`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-repository-field) — [URL](../../internet/URL.md) of the package source repository.
|
||||
- [`license`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) — The package license.
|
||||
- [`license-file`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) — Path to the text of the license.
|
||||
- [`keywords`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-keywords-field) — Keywords for the package.
|
||||
- [`categories`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-categories-field) — Categories of the package.
|
||||
- [`workspace`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-workspace-field) — Path to the workspace for the package.
|
||||
- [`build`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-build-field) — Path to the package build script.
|
||||
- [`links`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-links-field) — Name of the native library the package links with.
|
||||
- [`exclude`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields) — Files to exclude when publishing.
|
||||
- [`include`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields) — Files to include when publishing.
|
||||
- [`publish`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field) — Can be used to prevent publishing the package.
|
||||
- [`metadata`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-metadata-table) — Extra settings for external tools.
|
||||
- [`default-run`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-default-run-field) — The default binary to run by [`cargo run`](https://doc.rust-lang.org/cargo/commands/cargo-run.html).
|
||||
- [`autobins`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables binary auto discovery.
|
||||
- [`autoexamples`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables example auto discovery.
|
||||
- [`autotests`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables test auto discovery.
|
||||
- [`autobenches`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables bench auto discovery.
|
||||
- [`resolver`](https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions) — Sets the dependency resolver to use.
|
||||
- Target tables: (see [configuration](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#configuring-a-target) for settings)
|
||||
- [`[lib]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#library) — Library target settings.
|
||||
- [`[[bin]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#binaries) — Binary target settings.
|
||||
- [`[[example]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#examples) — Example target settings.
|
||||
- [`[[test]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#tests) — Test target settings.
|
||||
- [`[[bench]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#benchmarks) — Benchmark target settings.
|
||||
- [`cargo-features`](https://doc.rust-lang.org/cargo/reference/unstable.html) — Unstable, nightly-only features.
|
||||
- [`[package]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-package-section) — Defines a package.
|
||||
- [`name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) — The name of the package.
|
||||
- [`version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field) — The version of the package.
|
||||
- [`authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field) — The authors of the package.
|
||||
- [`edition`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-edition-field) — The [Rust](../../dev/programming/languages/Rust.md) edition.
|
||||
- [`rust-version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field) — The minimal supported [Rust](../../dev/programming/languages/Rust.md) version.
|
||||
- [`description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) — A description of the package.
|
||||
- [`documentation`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-documentation-field) — [URL](../../internet/URL.md) of the package documentation.
|
||||
- [`readme`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-readme-field) — Path to the package’s README file.
|
||||
- [`homepage`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-homepage-field) — [URL](../../internet/URL.md) of the package homepage.
|
||||
- [`repository`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-repository-field) — [URL](../../internet/URL.md) of the package source repository.
|
||||
- [`license`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) — The package license.
|
||||
- [`license-file`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) — Path to the text of the license.
|
||||
- [`keywords`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-keywords-field) — Keywords for the package.
|
||||
- [`categories`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-categories-field) — Categories of the package.
|
||||
- [`workspace`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-workspace-field) — Path to the workspace for the package.
|
||||
- [`build`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-build-field) — Path to the package build script.
|
||||
- [`links`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-links-field) — Name of the native library the package links with.
|
||||
- [`exclude`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields) — Files to exclude when publishing.
|
||||
- [`include`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields) — Files to include when publishing.
|
||||
- [`publish`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field) — Can be used to prevent publishing the package.
|
||||
- [`metadata`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-metadata-table) — Extra settings for external tools.
|
||||
- [`default-run`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-default-run-field) — The default binary to run by [`cargo run`](https://doc.rust-lang.org/cargo/commands/cargo-run.html).
|
||||
- [`autobins`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables binary auto discovery.
|
||||
- [`autoexamples`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables example auto discovery.
|
||||
- [`autotests`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables test auto discovery.
|
||||
- [`autobenches`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery) — Disables bench auto discovery.
|
||||
- [`resolver`](https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions) — Sets the dependency resolver to use.
|
||||
- Target tables: (see [configuration](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#configuring-a-target) for settings)
|
||||
- [`[lib]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#library) — Library target settings.
|
||||
- [`[[bin]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#binaries) — Binary target settings.
|
||||
- [`[[example]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#examples) — Example target settings.
|
||||
- [`[[test]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#tests) — Test target settings.
|
||||
- [`[[bench]]`](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#benchmarks) — Benchmark target settings.
|
||||
- Dependency tables:
|
||||
- [`[dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html) — Package library dependencies.
|
||||
- [`[dev-dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies) — Dependencies for examples, tests, and benchmarks.
|
||||
- [`[build-dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#build-dependencies) — Dependencies for build scripts.
|
||||
- [`[target]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies) — Platform-specific dependencies.
|
||||
- [`[badges]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section) — Badges to display on a registry.
|
||||
- [`[features]`](https://doc.rust-lang.org/cargo/reference/features.html) — Conditional compilation features.
|
||||
- [`[lints]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section) — Configure linters for this package.
|
||||
- [`[patch]`](https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section) — Override dependencies.
|
||||
- [`[profile]`](https://doc.rust-lang.org/cargo/reference/profiles.html) — Compiler settings and optimizations.
|
||||
- [`[workspace]`](https://doc.rust-lang.org/cargo/reference/workspaces.html) — The workspace definition.
|
||||
- [`[dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html) — Package library dependencies.
|
||||
- [`[dev-dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#development-dependencies) — Dependencies for examples, tests, and benchmarks.
|
||||
- [`[build-dependencies]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#build-dependencies) — Dependencies for build scripts.
|
||||
- [`[target]`](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies) — Platform-specific dependencies.
|
||||
- [`[badges]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section) — Badges to display on a registry.
|
||||
- [`[features]`](https://doc.rust-lang.org/cargo/reference/features.html) — Conditional compilation features.
|
||||
- [`[lints]`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section) — Configure linters for this package.
|
||||
- [`[patch]`](https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section) — Override dependencies.
|
||||
- [`[profile]`](https://doc.rust-lang.org/cargo/reference/profiles.html) — Compiler settings and optimizations.
|
||||
- [`[workspace]`](https://doc.rust-lang.org/cargo/reference/workspaces.html) — The workspace definition.
|
||||
|
||||
## Build Scripts
|
||||
Some packages need to compile third-party non-[Rust](../../dev/programming/languages/Rust.md) code, for example C libraries. Other packages need to link to C libraries which can either be located on the system or possibly need to be built from source. Others still need facilities for functionality such as code generation before building (think parser generators).
|
||||
|
||||
Cargo does not aim to replace other tools that are well-optimized for these tasks, but it does integrate with them with custom build scripts. Placing a file named `build.rs` in the root of a package will cause Cargo to compile that script and execute it just before building the package.
|
||||
Cargo does not aim to replace other tools that are well-optimized for these tasks, but it does integrate with them with custom build scripts. Placing a file named `build.rs` in the root of a package will cause Cargo to compile that script and execute it just before building the package.
|
||||
|
||||
```rust
|
||||
// Example custom build script.
|
||||
|
@ -292,35 +292,35 @@ fn main() {
|
|||
```
|
||||
|
||||
## Environment Variables
|
||||
When the build script is run, there are a number of inputs to the build script, all passed in the form of [environment variables](../../linux/Environment%20Variables.md).
|
||||
When the build script is run, there are a number of inputs to the build script, all passed in the form of [environment variables](../../linux/Environment%20Variables.md).
|
||||
|
||||
Cargo exposes these [environment variables](../../linux/Environment%20Variables.md) to your crate when it is compiled. Note that this applies for running binaries with `cargo run` and `cargo test` as well. To get the value of any of these variables in a [Rust](../../dev/programming/languages/Rust.md) program, do this:
|
||||
Cargo exposes these [environment variables](../../linux/Environment%20Variables.md) to your crate when it is compiled. Note that this applies for running binaries with `cargo run` and `cargo test` as well. To get the value of any of these variables in a [Rust](../../dev/programming/languages/Rust.md) program, do this:
|
||||
|
||||
```rust
|
||||
let version = env!("CARGO_PKG_VERSION");
|
||||
```
|
||||
|
||||
Exposed environment variables:
|
||||
- `CARGO` — Path to the `cargo` binary performing the build.
|
||||
- `CARGO_MANIFEST_DIR` — The directory containing the manifest of your package.
|
||||
- `CARGO_PKG_VERSION` — The full version of your package.
|
||||
- `CARGO_PKG_VERSION_MAJOR` — The major version of your package.
|
||||
- `CARGO_PKG_VERSION_MINOR` — The minor version of your package.
|
||||
- `CARGO_PKG_VERSION_PATCH` — The patch version of your package.
|
||||
- `CARGO_PKG_VERSION_PRE` — The pre-release version of your package.
|
||||
- `CARGO_PKG_AUTHORS` — Colon separated list of authors from the manifest of your package.
|
||||
- `CARGO_PKG_NAME` — The name of your package.
|
||||
- `CARGO_PKG_DESCRIPTION` — The description from the manifest of your package.
|
||||
- `CARGO_PKG_HOMEPAGE` — The home page from the manifest of your package.
|
||||
- `CARGO_PKG_REPOSITORY` — The repository from the manifest of your package.
|
||||
- `CARGO_PKG_LICENSE` — The license from the manifest of your package.
|
||||
- `CARGO_PKG_LICENSE_FILE` — The license file from the manifest of your package.
|
||||
- `CARGO_PKG_RUST_VERSION` — The [Rust](../../dev/programming/languages/Rust.md) version from the manifest of your package. Note that this is the minimum [Rust](../../dev/programming/languages/Rust.md) version supported by the package, not the current [Rust](../../dev/programming/languages/Rust.md) version.
|
||||
- `CARGO_PKG_README` — Path to the README file of your package.
|
||||
- `CARGO_CRATE_NAME` — The name of the crate that is currently being compiled. It is the name of the Cargo target with `-` converted to `_`, such as the name of the library, binary, example, integration test, or benchmark.
|
||||
- `CARGO_BIN_NAME` — The name of the binary that is currently being compiled. Only set for binaries or binary examples. This name does not include any file extension, such as `.exe`.
|
||||
- `OUT_DIR` — If the package has a build script, this is set to the folder where the build script should place its output.
|
||||
- `CARGO_BIN_EXE_<name>` — The absolute path to a binary target’s executable. This is only set when building an integration test or benchmark. This may be used with the `env` macro to find the executable to run for testing purposes. The `<name>` is the name of the binary target, exactly as-is. For example, `CARGO_BIN_EXE_my-program` for a binary named `my-program`. Binaries are automatically built when the test is built, unless the binary has required features that are not enabled.
|
||||
- `CARGO_PRIMARY_PACKAGE` — This environment variable will be set if the package being built is primary. Primary packages are the ones the user selected on the command-line, either with `-p` flags or the defaults based on the current directory and the default workspace members. This environment variable will not be set when building dependencies. This is only set when compiling the package (not when running binaries or tests).
|
||||
- `CARGO_TARGET_TMPDIR` — Only set when building integration test or benchmark code. This is a path to a directory inside the target directory where integration tests or benchmarks are free to put any data needed by the tests/benches. Cargo initially creates this directory but doesn’t manage its content in any way, this is the responsibility of the test code.
|
||||
- `CARGO` — Path to the `cargo` binary performing the build.
|
||||
- `CARGO_MANIFEST_DIR` — The directory containing the manifest of your package.
|
||||
- `CARGO_PKG_VERSION` — The full version of your package.
|
||||
- `CARGO_PKG_VERSION_MAJOR` — The major version of your package.
|
||||
- `CARGO_PKG_VERSION_MINOR` — The minor version of your package.
|
||||
- `CARGO_PKG_VERSION_PATCH` — The patch version of your package.
|
||||
- `CARGO_PKG_VERSION_PRE` — The pre-release version of your package.
|
||||
- `CARGO_PKG_AUTHORS` — Colon separated list of authors from the manifest of your package.
|
||||
- `CARGO_PKG_NAME` — The name of your package.
|
||||
- `CARGO_PKG_DESCRIPTION` — The description from the manifest of your package.
|
||||
- `CARGO_PKG_HOMEPAGE` — The home page from the manifest of your package.
|
||||
- `CARGO_PKG_REPOSITORY` — The repository from the manifest of your package.
|
||||
- `CARGO_PKG_LICENSE` — The license from the manifest of your package.
|
||||
- `CARGO_PKG_LICENSE_FILE` — The license file from the manifest of your package.
|
||||
- `CARGO_PKG_RUST_VERSION` — The [Rust](../../dev/programming/languages/Rust.md) version from the manifest of your package. Note that this is the minimum [Rust](../../dev/programming/languages/Rust.md) version supported by the package, not the current [Rust](../../dev/programming/languages/Rust.md) version.
|
||||
- `CARGO_PKG_README` — Path to the README file of your package.
|
||||
- `CARGO_CRATE_NAME` — The name of the crate that is currently being compiled. It is the name of the Cargo target with `-` converted to `_`, such as the name of the library, binary, example, integration test, or benchmark.
|
||||
- `CARGO_BIN_NAME` — The name of the binary that is currently being compiled. Only set for binaries or binary examples. This name does not include any file extension, such as `.exe`.
|
||||
- `OUT_DIR` — If the package has a build script, this is set to the folder where the build script should place its output.
|
||||
- `CARGO_BIN_EXE_<name>` — The absolute path to a binary target’s executable. This is only set when building an integration test or benchmark. This may be used with the `env` macro to find the executable to run for testing purposes. The `<name>` is the name of the binary target, exactly as-is. For example, `CARGO_BIN_EXE_my-program` for a binary named `my-program`. Binaries are automatically built when the test is built, unless the binary has required features that are not enabled.
|
||||
- `CARGO_PRIMARY_PACKAGE` — This environment variable will be set if the package being built is primary. Primary packages are the ones the user selected on the command-line, either with `-p` flags or the defaults based on the current directory and the default workspace members. This environment variable will not be set when building dependencies. This is only set when compiling the package (not when running binaries or tests).
|
||||
- `CARGO_TARGET_TMPDIR` — Only set when building integration test or benchmark code. This is a path to a directory inside the target directory where integration tests or benchmarks are free to put any data needed by the tests/benches. Cargo initially creates this directory but doesn’t manage its content in any way, this is the responsibility of the test code.
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ The threshold value can be given as a percentage or as an absolute integer value
|
|||
#### `-blend geometry`
|
||||
Blend an image into another by the given absolute value or percent.
|
||||
|
||||
Blend will average the images together ('plus') according to the percentages given and each pixels transparency. If only a single percentage value is given it sets the weight of the composite or 'source' image, while the background image is weighted by the exact opposite amount. That is a `-blend 30%` merges 30% of the 'source' image with 70% of the 'destination' image. Thus it is equivalent to `-blend 30x70%`.
|
||||
Blend will average the images together ('plus') according to the percentages given and each pixels transparency. If only a single percentage value is given it sets the weight of the composite or 'source' image, while the background image is weighted by the exact opposite amount. That is a `-blend 30%` merges 30% of the 'source' image with 70% of the 'destination' image. Thus it is equivalent to `-blend 30x70%`.
|
||||
|
||||
#### `-blur radius`
|
||||
Convolve the image with a Gaussian or normal distribution using the given Sigma value.
|
||||
|
|
|
@ -479,10 +479,10 @@ Each line maps a key to an input command. Keys are specified with their literal
|
|||
Syntax: `[Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] <command> ( ; <command> )*`
|
||||
|
||||
### List of Input Commands
|
||||
Commands with parameters have the parameter name enclosed in `< / >`. Don't add those to the actual command. Optional arguments are enclosed in `[ / ]`. If you don't pass them, they will be set to a default value.
|
||||
Commands with parameters have the parameter name enclosed in `< / >`. Don't add those to the actual command. Optional arguments are enclosed in `[ / ]`. If you don't pass them, they will be set to a default value.
|
||||
|
||||
- `ignore`
|
||||
Use this to "block" keys that should be unbound, and do nothing. Useful for disabling default bindings, without disabling all bindings with `--no-input-default-bindings`.
|
||||
Use this to "block" keys that should be unbound, and do nothing. Useful for disabling default bindings, without disabling all bindings with `--no-input-default-bindings`.
|
||||
- `seek <target> [<flags>]`
|
||||
Change the playback position. By default, seeks by a relative amount of seconds.
|
||||
|
||||
|
@ -502,62 +502,62 @@ Set the given property or option to the given value.
|
|||
- `del <name>`
|
||||
Delete the given property. Most properties cannot be deleted.
|
||||
- `add <name> [<value>]`
|
||||
Add the given value to the property or option. On overflow or underflow, clamp the property to the maximum. If `<value>` is omitted, assume 1.
|
||||
Add the given value to the property or option. On overflow or underflow, clamp the property to the maximum. If `<value>` is omitted, assume 1.
|
||||
- `screenshot <flags>`
|
||||
Take a screenshot.
|
||||
|
||||
Multiple flags are available (some can be combined with +):
|
||||
Multiple flags are available (some can be combined with +):
|
||||
|
||||
| Flag | Description |
|
||||
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `<subtitles> (default)` | Save the video image, in its original resolution, and with subtitles. Some video outputs may still include the OSD in the output under certain circumstances. |
|
||||
| `<video>` | Like subtitles, but typically without OSD or subtitles. The exact behavior depends on the selected video output. |
|
||||
| `<video>` | Like subtitles, but typically without OSD or subtitles. The exact behavior depends on the selected video output. |
|
||||
| `<window>` | Save the contents of the mpv window. Typically scaled, with OSD and subtitles. The exact behavior depends on the selected video output. |
|
||||
| `<each-frame>` | Take a screenshot each frame. Issue this command again to stop taking screenshots. Note that you should disable frame-dropping when using this mode - or you might receive duplicate images in cases when a frame was dropped. This flag can be combined with the other flags, e.g. video+each-frame. |
|
||||
| `<each-frame>` | Take a screenshot each frame. Issue this command again to stop taking screenshots. Note that you should disable frame-dropping when using this mode - or you might receive duplicate images in cases when a frame was dropped. This flag can be combined with the other flags, e.g. video+each-frame. |
|
||||
|
||||
- `playlist-next`
|
||||
Go to the next entry on the playlist.
|
||||
- `playlist-prev`
|
||||
Go to the previous entry on the playlist.
|
||||
- `playlist-play-index <integer|current|none>`
|
||||
- `playlist-play-index <integer|current|none>`
|
||||
Start (or restart) playback of the given playlist index.
|
||||
- `loadfile <url> [<flags> [<options>]]`
|
||||
Load the given file or [URL](../../internet/URL.md) and play it. Technically, this is just a playlist manipulation command (which either replaces the playlist or appends an entry to it). Actual file loading happens independently. For example, a loadfile command that replaces the current file with a new one returns before the current file is stopped, and the new file even begins loading.
|
||||
- `loadfile <url> [<flags> [<options>]]`
|
||||
Load the given file or [URL](../../internet/URL.md) and play it. Technically, this is just a playlist manipulation command (which either replaces the playlist or appends an entry to it). Actual file loading happens independently. For example, a loadfile command that replaces the current file with a new one returns before the current file is stopped, and the new file even begins loading.
|
||||
- `loadlist <url> [<flags>]`
|
||||
Load the given playlist file or [URL](../../internet/URL.md) (like `--playlist`).
|
||||
Load the given playlist file or [URL](../../internet/URL.md) (like `--playlist`).
|
||||
- `playlist-clear`
|
||||
Clear the playlist, except the currently played file.
|
||||
- `playlist-remove <index>`
|
||||
Remove the playlist entry at the given index. Index values start counting with 0. The special value current removes the current entry. Note that removing the current entry also stops playback and starts playing the next entry.
|
||||
- `playlist-move <index1> <index2>`
|
||||
- `playlist-remove <index>`
|
||||
Remove the playlist entry at the given index. Index values start counting with 0. The special value current removes the current entry. Note that removing the current entry also stops playback and starts playing the next entry.
|
||||
- `playlist-move <index1> <index2>`
|
||||
Move the playlist entry at index1, so that it takes the place of the entry index2. (Paradoxically, the moved playlist entry will not have the index value index2 after moving if index1 was lower than index2, because index2 refers to the target entry, not the index the entry will have after moving.)
|
||||
- `playlist-shuffle`
|
||||
Shuffle the playlist. This is similar to what is done on start if the `--shuffle` option is used.
|
||||
- `run <command> [<arg1> [<arg2> [...]]]`
|
||||
Run the given command. Unlike in MPlayer/mplayer2 and earlier versions of mpv (0.2.x and older), this doesn't call the [shell](../cli/Shell.md). Instead, the command is run directly, with each argument passed separately. Each argument is expanded like in Property Expansion.
|
||||
Shuffle the playlist. This is similar to what is done on start if the `--shuffle` option is used.
|
||||
- `run <command> [<arg1> [<arg2> [...]]]`
|
||||
Run the given command. Unlike in MPlayer/mplayer2 and earlier versions of mpv (0.2.x and older), this doesn't call the [shell](../cli/Shell.md). Instead, the command is run directly, with each argument passed separately. Each argument is expanded like in Property Expansion.
|
||||
This command has a variable number of arguments, and cannot be used with named arguments.
|
||||
The program is run in a detached way. mpv doesn't wait until the command is completed, but continues playback right after spawning it.
|
||||
- `quit [<code>]`
|
||||
Exit the player. If an argument is given, it's used as process exit code.
|
||||
- `sub-add <url> [<flags> [<title> [<lang>]]]`
|
||||
- `sub-add <url> [<flags> [<title> [<lang>]]]`
|
||||
Load the given subtitle file or stream. By default, it is selected as current subtitle after loading.
|
||||
- `sub-remove [<id>]`
|
||||
Remove the given subtitle track. If the id argument is missing, remove the current track. (Works on external subtitle files only.)
|
||||
- `show-text <text> [<duration>|-1 [<level>]]`
|
||||
Show text on the OSD. The string can contain properties, which are expanded as described in Property Expansion. This can be used to show playback time, filename, and so on. no-osd has no effect on this command.
|
||||
- `expand-text <string>`
|
||||
Property-expand the argument and return the expanded string. This can be used only through the client API or from a script using mp.command_native.
|
||||
- `audio-add <url> [<flags> [<title> [<lang>]]]`
|
||||
- `sub-remove [<id>]`
|
||||
Remove the given subtitle track. If the id argument is missing, remove the current track. (Works on external subtitle files only.)
|
||||
- `show-text <text> [<duration>|-1 [<level>]]`
|
||||
Show text on the OSD. The string can contain properties, which are expanded as described in Property Expansion. This can be used to show playback time, filename, and so on. no-osd has no effect on this command.
|
||||
- `expand-text <string>`
|
||||
Property-expand the argument and return the expanded string. This can be used only through the client API or from a script using mp.command_native.
|
||||
- `audio-add <url> [<flags> [<title> [<lang>]]]`
|
||||
Load the given audio file.
|
||||
- `audio-remove [<id>]`
|
||||
- `audio-remove [<id>]`
|
||||
Remove the given audio track.
|
||||
- `audio-reload [<id>]`
|
||||
- `audio-reload [<id>]`
|
||||
Reload the given audio tracks.
|
||||
- `video-add <url> [<flags> [<title> [<lang> [<albumart>]]]]`
|
||||
- `video-add <url> [<flags> [<title> [<lang> [<albumart>]]]]`
|
||||
Load the given video file.
|
||||
- `video-remove [<id>]`
|
||||
- `video-remove [<id>]`
|
||||
Remove the given video track.
|
||||
- `video-reload [<id>]`
|
||||
- `video-reload [<id>]`
|
||||
Reload the given video tracks.
|
||||
|
||||
### List of Properties
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -83,31 +83,31 @@ yt-dlp is a website media downloader. It can be used with [MPV](MPV.md).
|
|||
|
||||
## OUTPUT TEMPLATE
|
||||
|
||||
The `-o` option is used to indicate a template for the output file names while `-P` option is used to specify the path each type of file should be saved to.
|
||||
The `-o` option is used to indicate a template for the output file names while `-P` option is used to specify the path each type of file should be saved to.
|
||||
|
||||
**tl;dr:** [navigate me to examples](https://github.com/yt-dlp/yt-dlp#output-template-examples).
|
||||
**tl;dr:** [navigate me to examples](https://github.com/yt-dlp/yt-dlp#output-template-examples).
|
||||
|
||||
The simplest usage of `-o` is not to set any template arguments when downloading a single file, like in `yt-dlp -o funny_video.flv "https://some/video"` (hard-coding file extension like this is _not_ recommended and could break some post-processing).
|
||||
The simplest usage of `-o` is not to set any template arguments when downloading a single file, like in `yt-dlp -o funny_video.flv "https://some/video"` (hard-coding file extension like this is _not_ recommended and could break some post-processing).
|
||||
|
||||
It may however also contain special sequences that will be replaced when downloading each video. The special sequences may be formatted according to [Python string formatting operations](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting), e.g. `%(NAME)s` or `%(NAME)05d`. To clarify, that is a percent symbol followed by a name in parentheses, followed by formatting operations.
|
||||
It may however also contain special sequences that will be replaced when downloading each video. The special sequences may be formatted according to [Python string formatting operations](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting), e.g. `%(NAME)s` or `%(NAME)05d`. To clarify, that is a percent symbol followed by a name in parentheses, followed by formatting operations.
|
||||
|
||||
The field names themselves (the part inside the parenthesis) can also have some special formatting:
|
||||
|
||||
1. **Object traversal**: The dictionaries and lists available in metadata can be traversed by using a dot `.` separator; e.g. `%(tags.0)s`, `%(subtitles.en.-1.ext)s`. You can do Python slicing with colon `:`; E.g. `%(id.3:7:-1)s`, `%(formats.:.format_id)s`. Curly braces `{}` can be used to build dictionaries with only specific keys; e.g. `%(formats.:.{format_id,height})#j`. An empty field name `%()s` refers to the entire infodict; e.g. `%(.{id,title})s`. Note that all the fields that become available using this method are not listed below. Use `-j` to see such fields
|
||||
1. **Object traversal**: The dictionaries and lists available in metadata can be traversed by using a dot `.` separator; e.g. `%(tags.0)s`, `%(subtitles.en.-1.ext)s`. You can do Python slicing with colon `:`; E.g. `%(id.3:7:-1)s`, `%(formats.:.format_id)s`. Curly braces `{}` can be used to build dictionaries with only specific keys; e.g. `%(formats.:.{format_id,height})#j`. An empty field name `%()s` refers to the entire infodict; e.g. `%(.{id,title})s`. Note that all the fields that become available using this method are not listed below. Use `-j` to see such fields
|
||||
|
||||
2. **Addition**: Addition and subtraction of numeric fields can be done using `+` and `-` respectively. E.g. `%(playlist_index+10)03d`, `%(n_entries+1-playlist_index)d`
|
||||
2. **Addition**: Addition and subtraction of numeric fields can be done using `+` and `-` respectively. E.g. `%(playlist_index+10)03d`, `%(n_entries+1-playlist_index)d`
|
||||
|
||||
3. **Date/time Formatting**: Date/time fields can be formatted according to [strftime formatting](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes) by specifying it separated from the field name using a `>`. E.g. `%(duration>%H-%M-%S)s`, `%(upload_date>%Y-%m-%d)s`, `%(epoch-3600>%H-%M-%S)s`
|
||||
3. **Date/time Formatting**: Date/time fields can be formatted according to [strftime formatting](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes) by specifying it separated from the field name using a `>`. E.g. `%(duration>%H-%M-%S)s`, `%(upload_date>%Y-%m-%d)s`, `%(epoch-3600>%H-%M-%S)s`
|
||||
|
||||
4. **Alternatives**: Alternate fields can be specified separated with a `,`. E.g. `%(release_date>%Y,upload_date>%Y|Unknown)s`
|
||||
4. **Alternatives**: Alternate fields can be specified separated with a `,`. E.g. `%(release_date>%Y,upload_date>%Y|Unknown)s`
|
||||
|
||||
5. **Replacement**: A replacement value can be specified using a `&` separator. If the field is _not_ empty, this replacement value will be used instead of the actual field content. This is done after alternate fields are considered; thus the replacement is used if _any_ of the alternative fields is _not_ empty.
|
||||
5. **Replacement**: A replacement value can be specified using a `&` separator. If the field is _not_ empty, this replacement value will be used instead of the actual field content. This is done after alternate fields are considered; thus the replacement is used if _any_ of the alternative fields is _not_ empty.
|
||||
|
||||
6. **Default**: A literal default value can be specified for when the field is empty using a `|` separator. This overrides `--output-na-placeholder`. E.g. `%(uploader|Unknown)s`
|
||||
6. **Default**: A literal default value can be specified for when the field is empty using a `|` separator. This overrides `--output-na-placeholder`. E.g. `%(uploader|Unknown)s`
|
||||
|
||||
7. **More Conversions**: In addition to the normal format types `diouxXeEfFgGcrs`, yt-dlp additionally supports converting to `B` = **B**ytes, `j` = **j**son (flag `#` for pretty-printing, `+` for Unicode), `h` = HTML escaping, `l` = a comma separated **l**ist (flag `#` for `\n` newline-separated), `q` = a string **q**uoted for the terminal (flag `#` to split a list into different arguments), `D` = add **D**ecimal suffixes (e.g. 10M) (flag `#` to use 1024 as factor), and `S` = **S**anitize as filename (flag `#` for restricted)
|
||||
7. **More Conversions**: In addition to the normal format types `diouxXeEfFgGcrs`, yt-dlp additionally supports converting to `B` = **B**ytes, `j` = **j**son (flag `#` for pretty-printing, `+` for Unicode), `h` = HTML escaping, `l` = a comma separated **l**ist (flag `#` for `\n` newline-separated), `q` = a string **q**uoted for the terminal (flag `#` to split a list into different arguments), `D` = add **D**ecimal suffixes (e.g. 10M) (flag `#` to use 1024 as factor), and `S` = **S**anitize as filename (flag `#` for restricted)
|
||||
|
||||
8. **Unicode normalization**: The format type `U` can be used for NFC [Unicode normalization](https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize). The alternate form flag (`#`) changes the normalization to NFD and the conversion flag `+` can be used for NFKC/NFKD compatibility equivalence normalization. E.g. `%(title)+.100U` is NFKC
|
||||
8. **Unicode normalization**: The format type `U` can be used for NFC [Unicode normalization](https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize). The alternate form flag (`#`) changes the normalization to NFD and the conversion flag `+` can be used for NFKC/NFKD compatibility equivalence normalization. E.g. `%(title)+.100U` is NFKC
|
||||
|
||||
|
||||
To summarize, the general syntax for a field is:
|
||||
|
@ -116,141 +116,141 @@ To summarize, the general syntax for a field is:
|
|||
%(name[.keys][addition][>strf][,alternate][&replacement][|default])[flags][width][.precision][length]type
|
||||
```
|
||||
|
||||
Additionally, you can set different output templates for the various metadata files separately from the general output template by specifying the type of file followed by the template separated by a colon `:`. The different file types supported are `subtitle`, `thumbnail`, `description`, `annotation` (deprecated), `infojson`, `link`, `pl_thumbnail`, `pl_description`, `pl_infojson`, `chapter`, `pl_video`. E.g. `-o "%(title)s.%(ext)s" -o "thumbnail:%(title)s\%(title)s.%(ext)s"` will put the thumbnails in a folder with the same name as the video. If any of the templates is empty, that type of file will not be written. E.g. `--write-thumbnail -o "thumbnail:"` will write thumbnails only for playlists and not for video.
|
||||
Additionally, you can set different output templates for the various metadata files separately from the general output template by specifying the type of file followed by the template separated by a colon `:`. The different file types supported are `subtitle`, `thumbnail`, `description`, `annotation` (deprecated), `infojson`, `link`, `pl_thumbnail`, `pl_description`, `pl_infojson`, `chapter`, `pl_video`. E.g. `-o "%(title)s.%(ext)s" -o "thumbnail:%(title)s\%(title)s.%(ext)s"` will put the thumbnails in a folder with the same name as the video. If any of the templates is empty, that type of file will not be written. E.g. `--write-thumbnail -o "thumbnail:"` will write thumbnails only for playlists and not for video.
|
||||
|
||||
Note: Due to post-processing (i.e. merging etc.), the actual output filename might differ. Use `--print after_move:filepath` to get the name after all post-processing is complete.
|
||||
Note: Due to post-processing (i.e. merging etc.), the actual output filename might differ. Use `--print after_move:filepath` to get the name after all post-processing is complete.
|
||||
|
||||
The available fields are:
|
||||
|
||||
- `id` (string): Video identifier
|
||||
- `title` (string): Video title
|
||||
- `fulltitle` (string): Video title ignoring live timestamp and generic title
|
||||
- `ext` (string): Video filename extension
|
||||
- `alt_title` (string): A secondary title of the video
|
||||
- `description` (string): The description of the video
|
||||
- `display_id` (string): An alternative identifier for the video
|
||||
- `uploader` (string): Full name of the video uploader
|
||||
- `license` (string): License name the video is licensed under
|
||||
- `creator` (string): The creator of the video
|
||||
- `timestamp` (numeric): UNIX timestamp of the moment the video became available
|
||||
- `upload_date` (string): Video upload date in UTC (YYYYMMDD)
|
||||
- `release_timestamp` (numeric): UNIX timestamp of the moment the video was released
|
||||
- `release_date` (string): The date (YYYYMMDD) when the video was released in UTC
|
||||
- `modified_timestamp` (numeric): UNIX timestamp of the moment the video was last modified
|
||||
- `modified_date` (string): The date (YYYYMMDD) when the video was last modified in UTC
|
||||
- `uploader_id` (string): Nickname or id of the video uploader
|
||||
- `channel` (string): Full name of the channel the video is uploaded on
|
||||
- `channel_id` (string): Id of the channel
|
||||
- `channel_follower_count` (numeric): Number of followers of the channel
|
||||
- `location` (string): Physical location where the video was filmed
|
||||
- `duration` (numeric): Length of the video in seconds
|
||||
- `duration_string` (string): Length of the video (HH:mm:ss)
|
||||
- `view_count` (numeric): How many users have watched the video on the platform
|
||||
- `concurrent_view_count` (numeric): How many users are currently watching the video on the platform.
|
||||
- `like_count` (numeric): Number of positive ratings of the video
|
||||
- `dislike_count` (numeric): Number of negative ratings of the video
|
||||
- `repost_count` (numeric): Number of reposts of the video
|
||||
- `average_rating` (numeric): Average rating give by users, the scale used depends on the webpage
|
||||
- `comment_count` (numeric): Number of comments on the video (For some extractors, comments are only downloaded at the end, and so this field cannot be used)
|
||||
- `age_limit` (numeric): Age restriction for the video (years)
|
||||
- `live_status` (string): One of "not_live", "is_live", "is_upcoming", "was_live", "post_live" (was live, but VOD is not yet processed)
|
||||
- `is_live` (boolean): Whether this video is a live stream or a fixed-length video
|
||||
- `was_live` (boolean): Whether this video was originally a live stream
|
||||
- `playable_in_embed` (string): Whether this video is allowed to play in embedded players on other sites
|
||||
- `availability` (string): Whether the video is "private", "premium_only", "subscriber_only", "needs_auth", "unlisted" or "public"
|
||||
- `start_time` (numeric): Time in seconds where the reproduction should start, as specified in the URL
|
||||
- `end_time` (numeric): Time in seconds where the reproduction should end, as specified in the URL
|
||||
- `extractor` (string): Name of the extractor
|
||||
- `extractor_key` (string): Key name of the extractor
|
||||
- `epoch` (numeric): Unix epoch of when the information extraction was completed
|
||||
- `autonumber` (numeric): Number that will be increased with each download, starting at `--autonumber-start`
|
||||
- `video_autonumber` (numeric): Number that will be increased with each video
|
||||
- `n_entries` (numeric): Total number of extracted items in the playlist
|
||||
- `playlist_id` (string): Identifier of the playlist that contains the video
|
||||
- `playlist_title` (string): Name of the playlist that contains the video
|
||||
- `playlist` (string): `playlist_id` or `playlist_title`
|
||||
- `playlist_count` (numeric): Total number of items in the playlist. May not be known if entire playlist is not extracted
|
||||
- `playlist_index` (numeric): Index of the video in the playlist padded with leading zeros according the final index
|
||||
- `playlist_autonumber` (numeric): Position of the video in the playlist download queue padded with leading zeros according to the total length of the playlist
|
||||
- `playlist_uploader` (string): Full name of the playlist uploader
|
||||
- `playlist_uploader_id` (string): Nickname or id of the playlist uploader
|
||||
- `webpage_url` (string): A URL to the video webpage which if given to yt-dlp should allow to get the same result again
|
||||
- `webpage_url_basename` (string): The basename of the webpage URL
|
||||
- `webpage_url_domain` (string): The domain of the webpage URL
|
||||
- `original_url` (string): The URL given by the user (or same as `webpage_url` for playlist entries)
|
||||
- `id` (string): Video identifier
|
||||
- `title` (string): Video title
|
||||
- `fulltitle` (string): Video title ignoring live timestamp and generic title
|
||||
- `ext` (string): Video filename extension
|
||||
- `alt_title` (string): A secondary title of the video
|
||||
- `description` (string): The description of the video
|
||||
- `display_id` (string): An alternative identifier for the video
|
||||
- `uploader` (string): Full name of the video uploader
|
||||
- `license` (string): License name the video is licensed under
|
||||
- `creator` (string): The creator of the video
|
||||
- `timestamp` (numeric): UNIX timestamp of the moment the video became available
|
||||
- `upload_date` (string): Video upload date in UTC (YYYYMMDD)
|
||||
- `release_timestamp` (numeric): UNIX timestamp of the moment the video was released
|
||||
- `release_date` (string): The date (YYYYMMDD) when the video was released in UTC
|
||||
- `modified_timestamp` (numeric): UNIX timestamp of the moment the video was last modified
|
||||
- `modified_date` (string): The date (YYYYMMDD) when the video was last modified in UTC
|
||||
- `uploader_id` (string): Nickname or id of the video uploader
|
||||
- `channel` (string): Full name of the channel the video is uploaded on
|
||||
- `channel_id` (string): Id of the channel
|
||||
- `channel_follower_count` (numeric): Number of followers of the channel
|
||||
- `location` (string): Physical location where the video was filmed
|
||||
- `duration` (numeric): Length of the video in seconds
|
||||
- `duration_string` (string): Length of the video (HH:mm:ss)
|
||||
- `view_count` (numeric): How many users have watched the video on the platform
|
||||
- `concurrent_view_count` (numeric): How many users are currently watching the video on the platform.
|
||||
- `like_count` (numeric): Number of positive ratings of the video
|
||||
- `dislike_count` (numeric): Number of negative ratings of the video
|
||||
- `repost_count` (numeric): Number of reposts of the video
|
||||
- `average_rating` (numeric): Average rating give by users, the scale used depends on the webpage
|
||||
- `comment_count` (numeric): Number of comments on the video (For some extractors, comments are only downloaded at the end, and so this field cannot be used)
|
||||
- `age_limit` (numeric): Age restriction for the video (years)
|
||||
- `live_status` (string): One of "not_live", "is_live", "is_upcoming", "was_live", "post_live" (was live, but VOD is not yet processed)
|
||||
- `is_live` (boolean): Whether this video is a live stream or a fixed-length video
|
||||
- `was_live` (boolean): Whether this video was originally a live stream
|
||||
- `playable_in_embed` (string): Whether this video is allowed to play in embedded players on other sites
|
||||
- `availability` (string): Whether the video is "private", "premium_only", "subscriber_only", "needs_auth", "unlisted" or "public"
|
||||
- `start_time` (numeric): Time in seconds where the reproduction should start, as specified in the URL
|
||||
- `end_time` (numeric): Time in seconds where the reproduction should end, as specified in the URL
|
||||
- `extractor` (string): Name of the extractor
|
||||
- `extractor_key` (string): Key name of the extractor
|
||||
- `epoch` (numeric): Unix epoch of when the information extraction was completed
|
||||
- `autonumber` (numeric): Number that will be increased with each download, starting at `--autonumber-start`
|
||||
- `video_autonumber` (numeric): Number that will be increased with each video
|
||||
- `n_entries` (numeric): Total number of extracted items in the playlist
|
||||
- `playlist_id` (string): Identifier of the playlist that contains the video
|
||||
- `playlist_title` (string): Name of the playlist that contains the video
|
||||
- `playlist` (string): `playlist_id` or `playlist_title`
|
||||
- `playlist_count` (numeric): Total number of items in the playlist. May not be known if entire playlist is not extracted
|
||||
- `playlist_index` (numeric): Index of the video in the playlist padded with leading zeros according the final index
|
||||
- `playlist_autonumber` (numeric): Position of the video in the playlist download queue padded with leading zeros according to the total length of the playlist
|
||||
- `playlist_uploader` (string): Full name of the playlist uploader
|
||||
- `playlist_uploader_id` (string): Nickname or id of the playlist uploader
|
||||
- `webpage_url` (string): A URL to the video webpage which if given to yt-dlp should allow to get the same result again
|
||||
- `webpage_url_basename` (string): The basename of the webpage URL
|
||||
- `webpage_url_domain` (string): The domain of the webpage URL
|
||||
- `original_url` (string): The URL given by the user (or same as `webpage_url` for playlist entries)
|
||||
|
||||
All the fields in [Filtering Formats](https://github.com/yt-dlp/yt-dlp#filtering-formats) can also be used
|
||||
All the fields in [Filtering Formats](https://github.com/yt-dlp/yt-dlp#filtering-formats) can also be used
|
||||
|
||||
Available for the video that belongs to some logical chapter or section:
|
||||
|
||||
- `chapter` (string): Name or title of the chapter the video belongs to
|
||||
- `chapter_number` (numeric): Number of the chapter the video belongs to
|
||||
- `chapter_id` (string): Id of the chapter the video belongs to
|
||||
- `chapter` (string): Name or title of the chapter the video belongs to
|
||||
- `chapter_number` (numeric): Number of the chapter the video belongs to
|
||||
- `chapter_id` (string): Id of the chapter the video belongs to
|
||||
|
||||
Available for the video that is an episode of some series or programme:
|
||||
|
||||
- `series` (string): Title of the series or programme the video episode belongs to
|
||||
- `season` (string): Title of the season the video episode belongs to
|
||||
- `season_number` (numeric): Number of the season the video episode belongs to
|
||||
- `season_id` (string): Id of the season the video episode belongs to
|
||||
- `episode` (string): Title of the video episode
|
||||
- `episode_number` (numeric): Number of the video episode within a season
|
||||
- `episode_id` (string): Id of the video episode
|
||||
- `series` (string): Title of the series or programme the video episode belongs to
|
||||
- `season` (string): Title of the season the video episode belongs to
|
||||
- `season_number` (numeric): Number of the season the video episode belongs to
|
||||
- `season_id` (string): Id of the season the video episode belongs to
|
||||
- `episode` (string): Title of the video episode
|
||||
- `episode_number` (numeric): Number of the video episode within a season
|
||||
- `episode_id` (string): Id of the video episode
|
||||
|
||||
Available for the media that is a track or a part of a music album:
|
||||
|
||||
- `track` (string): Title of the track
|
||||
- `track_number` (numeric): Number of the track within an album or a disc
|
||||
- `track_id` (string): Id of the track
|
||||
- `artist` (string): Artist(s) of the track
|
||||
- `genre` (string): Genre(s) of the track
|
||||
- `album` (string): Title of the album the track belongs to
|
||||
- `album_type` (string): Type of the album
|
||||
- `album_artist` (string): List of all artists appeared on the album
|
||||
- `disc_number` (numeric): Number of the disc or other physical medium the track belongs to
|
||||
- `release_year` (numeric): Year (YYYY) when the album was released
|
||||
- `track` (string): Title of the track
|
||||
- `track_number` (numeric): Number of the track within an album or a disc
|
||||
- `track_id` (string): Id of the track
|
||||
- `artist` (string): Artist(s) of the track
|
||||
- `genre` (string): Genre(s) of the track
|
||||
- `album` (string): Title of the album the track belongs to
|
||||
- `album_type` (string): Type of the album
|
||||
- `album_artist` (string): List of all artists appeared on the album
|
||||
- `disc_number` (numeric): Number of the disc or other physical medium the track belongs to
|
||||
- `release_year` (numeric): Year (YYYY) when the album was released
|
||||
|
||||
Available only when using `--download-sections` and for `chapter:` prefix when using `--split-chapters` for videos with internal chapters:
|
||||
Available only when using `--download-sections` and for `chapter:` prefix when using `--split-chapters` for videos with internal chapters:
|
||||
|
||||
- `section_title` (string): Title of the chapter
|
||||
- `section_number` (numeric): Number of the chapter within the file
|
||||
- `section_start` (numeric): Start time of the chapter in seconds
|
||||
- `section_end` (numeric): End time of the chapter in seconds
|
||||
- `section_title` (string): Title of the chapter
|
||||
- `section_number` (numeric): Number of the chapter within the file
|
||||
- `section_start` (numeric): Start time of the chapter in seconds
|
||||
- `section_end` (numeric): End time of the chapter in seconds
|
||||
|
||||
Available only when used in `--print`:
|
||||
Available only when used in `--print`:
|
||||
|
||||
- `urls` (string): The URLs of all requested formats, one in each line
|
||||
- `filename` (string): Name of the video file. Note that the [actual filename may differ](https://github.com/yt-dlp/yt-dlp#outtmpl-postprocess-note)
|
||||
- `formats_table` (table): The video format table as printed by `--list-formats`
|
||||
- `thumbnails_table` (table): The thumbnail format table as printed by `--list-thumbnails`
|
||||
- `subtitles_table` (table): The subtitle format table as printed by `--list-subs`
|
||||
- `automatic_captions_table` (table): The automatic subtitle format table as printed by `--list-subs`
|
||||
- `urls` (string): The URLs of all requested formats, one in each line
|
||||
- `filename` (string): Name of the video file. Note that the [actual filename may differ](https://github.com/yt-dlp/yt-dlp#outtmpl-postprocess-note)
|
||||
- `formats_table` (table): The video format table as printed by `--list-formats`
|
||||
- `thumbnails_table` (table): The thumbnail format table as printed by `--list-thumbnails`
|
||||
- `subtitles_table` (table): The subtitle format table as printed by `--list-subs`
|
||||
- `automatic_captions_table` (table): The automatic subtitle format table as printed by `--list-subs`
|
||||
|
||||
Available only in `--sponsorblock-chapter-title`:
|
||||
Available only in `--sponsorblock-chapter-title`:
|
||||
|
||||
- `start_time` (numeric): Start time of the chapter in seconds
|
||||
- `end_time` (numeric): End time of the chapter in seconds
|
||||
- `categories` (list): The [SponsorBlock categories](https://wiki.sponsor.ajay.app/w/Types#Category) the chapter belongs to
|
||||
- `category` (string): The smallest SponsorBlock category the chapter belongs to
|
||||
- `category_names` (list): Friendly names of the categories
|
||||
- `name` (string): Friendly name of the smallest category
|
||||
- `type` (string): The [SponsorBlock action type](https://wiki.sponsor.ajay.app/w/Types#Action_Type) of the chapter
|
||||
- `start_time` (numeric): Start time of the chapter in seconds
|
||||
- `end_time` (numeric): End time of the chapter in seconds
|
||||
- `categories` (list): The [SponsorBlock categories](https://wiki.sponsor.ajay.app/w/Types#Category) the chapter belongs to
|
||||
- `category` (string): The smallest SponsorBlock category the chapter belongs to
|
||||
- `category_names` (list): Friendly names of the categories
|
||||
- `name` (string): Friendly name of the smallest category
|
||||
- `type` (string): The [SponsorBlock action type](https://wiki.sponsor.ajay.app/w/Types#Action_Type) of the chapter
|
||||
|
||||
Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. E.g. for `-o %(title)s-%(id)s.%(ext)s` and an mp4 video with title `yt-dlp test video` and id `BaW_jenozKc`, this will result in a `yt-dlp test video-BaW_jenozKc.mp4` file created in the current directory.
|
||||
Each aforementioned sequence when referenced in an output template will be replaced by the actual value corresponding to the sequence name. E.g. for `-o %(title)s-%(id)s.%(ext)s` and an mp4 video with title `yt-dlp test video` and id `BaW_jenozKc`, this will result in a `yt-dlp test video-BaW_jenozKc.mp4` file created in the current directory.
|
||||
|
||||
Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with placeholder value provided with `--output-na-placeholder` (`NA` by default).
|
||||
Note that some of the sequences are not guaranteed to be present since they depend on the metadata obtained by a particular extractor. Such sequences will be replaced with placeholder value provided with `--output-na-placeholder` (`NA` by default).
|
||||
|
||||
**Tip**: Look at the `-j` output to identify which fields are available for the particular URL
|
||||
**Tip**: Look at the `-j` output to identify which fields are available for the particular URL
|
||||
|
||||
For numeric sequences you can use [numeric related formatting](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting); e.g. `%(view_count)05d` will result in a string with view count padded with zeros up to 5 characters, like in `00042`.
|
||||
For numeric sequences you can use [numeric related formatting](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting); e.g. `%(view_count)05d` will result in a string with view count padded with zeros up to 5 characters, like in `00042`.
|
||||
|
||||
Output templates can also contain arbitrary hierarchical path, e.g. `-o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s"` which will result in downloading each video in a directory corresponding to this path template. Any missing directory will be automatically created for you.
|
||||
Output templates can also contain arbitrary hierarchical path, e.g. `-o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s"` which will result in downloading each video in a directory corresponding to this path template. Any missing directory will be automatically created for you.
|
||||
|
||||
To use percent literals in an output template use `%%`. To output to stdout use `-o -`.
|
||||
To use percent literals in an output template use `%%`. To output to stdout use `-o -`.
|
||||
|
||||
The current default template is `%(title)s [%(id)s].%(ext)s`.
|
||||
The current default template is `%(title)s [%(id)s].%(ext)s`.
|
||||
|
||||
In some cases, you don't want special characters such as 中, spaces, or &, such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the `--restrict-filenames` flag to get a shorter title.
|
||||
In some cases, you don't want special characters such as 中, spaces, or &, such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the `--restrict-filenames` flag to get a shorter title.
|
||||
|
||||
#### Output template examples
|
||||
```shell
|
||||
|
|
|
@ -6,7 +6,7 @@ repo: https://github.com/termux/termux-app
|
|||
---
|
||||
|
||||
# Termux
|
||||
Termux is an **Android terminal emulator and Linux environment app** that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
|
||||
Termux is an **Android terminal emulator and Linux environment app** that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
|
||||
|
||||
## Intents and Hooks
|
||||
Termux is able to catch several intents and execute shell scripts to act upon them:
|
||||
|
@ -18,7 +18,7 @@ Termux is able to catch several intents and execute shell scripts to act upon th
|
|||
1. `nano ~/bin/termux-file-editor`)
|
||||
2. `chmod +x ~/bin/termux-file-editor`)
|
||||
- URL sharing available in common apps (e.g. Youtube).
|
||||
Following handle will be executed: `~/bin/termux-url-opener`
|
||||
Following handle will be executed: `~/bin/termux-url-opener`
|
||||
- Sharing a URL to be downloaded.
|
||||
You can handle incoming URL by editing the content.
|
||||
`yoursth-dl -f 'bestvideo[ext=mp4][height<=720]+bestaudio' --restrict-filenames -o '~/storage/downloads/%(title)s-%(id)s.%(ext)s' $1`
|
||||
|
@ -35,12 +35,12 @@ If you need to stop `sshd`, just kill it's process:
|
|||
pkill sshd
|
||||
```
|
||||
|
||||
SSH daemon does logging to Android system log, you can view it by running `logcat -s 'sshd:*'`. You can do that either from Termux or ADB.
|
||||
SSH daemon does logging to Android system log, you can view it by running `logcat -s 'sshd:*'`. You can do that either from Termux or ADB.
|
||||
|
||||
## Sharing Data
|
||||
Files stored in the home directory in Termux is not accessible to other applications by default. This is a limitation of Android itself.
|
||||
|
||||
As a workaround, you can use `termux-open` available in termux-tools package to share files with read access.
|
||||
As a workaround, you can use `termux-open` available in termux-tools package to share files with read access.
|
||||
```
|
||||
$ termux-open -h
|
||||
Usage: termux-open [options] path-or-url
|
||||
|
@ -56,7 +56,7 @@ $ termux-open hello.c
|
|||
This addon will run scripts immediately after device was booted.
|
||||
|
||||
### Installation
|
||||
Download add-on from [F-Droid](https://f-droid.org/packages/com.termux.boot/)
|
||||
Download add-on from [F-Droid](https://f-droid.org/packages/com.termux.boot/)
|
||||
|
||||
### Usage
|
||||
1. Install the Termux:Boot app.
|
||||
|
@ -74,13 +74,13 @@ sshd
|
|||
```
|
||||
|
||||
## Termux:API
|
||||
This addon exposes device functionality as API to command line programs in [Termux](https://github.com/termux/).
|
||||
This addon exposes device functionality as API to command line programs in [Termux](https://github.com/termux/).
|
||||
|
||||
### Installation
|
||||
Download the Termux:API add-on from [F-Droid](https://f-droid.org/packages/com.termux.api/) or the Google Play Store. It is required for the API implementations to function.
|
||||
Download the Termux:API add-on from [F-Droid](https://f-droid.org/packages/com.termux.api/) or the Google Play Store. It is required for the API implementations to function.
|
||||
|
||||
### Installing termux-api package
|
||||
To use Termux:API you also need to install the [termux-api](https://github.com/termux/termux-api-package) package.
|
||||
To use Termux:API you also need to install the [termux-api](https://github.com/termux/termux-api-package) package.
|
||||
```shell
|
||||
pkg install termux-api
|
||||
```
|
||||
|
|
|
@ -12,7 +12,7 @@ KDE Connect is a multi-platform app that allows your devices to communicate (eg:
|
|||
## Features
|
||||
- **Shared clipboard**: copy and paste between your phone and your computer (or any other device).
|
||||
- **Notification sync**: Read and reply to your [Android](../../systems/Android.md) notifications from the desktop.
|
||||
- **Share files and URLs** instantly from one device to another including some filesystem integration.
|
||||
- **Share files and URLs** instantly from one device to another including some filesystem integration.
|
||||
- **Multimedia remote control**: Use your phone as a remote for [Linux](../../linux/Linux.md) media players.
|
||||
- **Virtual touchpad**: Use your phone screen as your computer's touchpad and keyboard.
|
||||
- **Presentation remote**: Advance your presentation slides straight from your phone.
|
||||
|
|
|
@ -5,7 +5,7 @@ os: linux
|
|||
# NetworkManager
|
||||
[NetworkManager](https://networkmanager.dev/) is a program for providing detection and configuration for systems to automatically connect to networks. NetworkManager's functionality can be useful for both wireless and wired networks. For wireless networks, NetworkManager prefers known wireless networks and has the ability to switch to the most reliable network. NetworkManager-aware applications can switch from online and offline mode. NetworkManager also prefers wired connections over wireless ones, has support for modem connections and certain types of VPN. NetworkManager was originally developed by Red Hat and now is hosted by the GNOME project.
|
||||
|
||||
After installation, you should start/enable `NetworkManager.service`. Once the NetworkManager daemon is started, it will automatically connect to any available "system connections" that have already been configured. Any "user connections" or unconfigured connections will need _nmcli_ or an applet to configure and connect.
|
||||
After installation, you should start/enable `NetworkManager.service`. Once the NetworkManager daemon is started, it will automatically connect to any available "system connections" that have already been configured. Any "user connections" or unconfigured connections will need _nmcli_ or an applet to configure and connect.
|
||||
|
||||
## Usage
|
||||
NetworkManager comes with nmcli and nmtui.
|
||||
|
@ -20,7 +20,7 @@ Connect to a Wi-Fi network:
|
|||
Connect to a hidden Wi-Fi network:
|
||||
`nmcli device wifi connect SSID_or_BSSID password password hidden yes`
|
||||
|
||||
Connect to a Wi-Fi on the `wlan1` interface:
|
||||
Connect to a Wi-Fi on the `wlan1` interface:
|
||||
`nmcli device wifi connect SSID_or_BSSID password password ifname wlan1 profile_name`
|
||||
|
||||
Disconnect an interface:
|
||||
|
@ -42,7 +42,7 @@ Turn off Wi-Fi:
|
|||
`nmcli radio wifi off`
|
||||
|
||||
### Edit a connection
|
||||
For a comprehensive list of settings, see [nm-settings(5)](https://man.archlinux.org/man/nm-settings.5).
|
||||
For a comprehensive list of settings, see [nm-settings(5)](https://man.archlinux.org/man/nm-settings.5).
|
||||
|
||||
Firstly you need to get list of connections:
|
||||
`nmcli connection`
|
||||
|
@ -53,34 +53,34 @@ Wired connection 1 997f2782-f0fc-301d-bfba-15421a2735d8 ethernet enp0s25
|
|||
MY-HOME-WIFI-5G 92a0f7b3-2eba-49ab-a899-24d83978f308 wifi
|
||||
```
|
||||
|
||||
Here you can use the first column as connection-id used later. In this example we pick `Wired connection 2` as a connection-id.
|
||||
Here you can use the first column as connection-id used later. In this example we pick `Wired connection 2` as a connection-id.
|
||||
|
||||
You have three methods to configure a connection `Wired connection 2` after it has been created:
|
||||
You have three methods to configure a connection `Wired connection 2` after it has been created:
|
||||
|
||||
nmcli interactive editor
|
||||
`nmcli connection edit 'Wired connection 2'`.
|
||||
Usage is well documented from the editor.
|
||||
|
||||
nmcli command line interface
|
||||
`nmcli connection modify 'Wired connection 2' setting.property value`. See [nmcli(1)](https://man.archlinux.org/man/nmcli.1) for usage. For example you can change its IPv4 route metric to 200 using `nmcli connection modify 'Wired connection 2' ipv4.route-metric 200` command.
|
||||
`nmcli connection modify 'Wired connection 2' setting.property value`. See [nmcli(1)](https://man.archlinux.org/man/nmcli.1) for usage. For example you can change its IPv4 route metric to 200 using `nmcli connection modify 'Wired connection 2' ipv4.route-metric 200` command.
|
||||
|
||||
To remove a setting pass an empty field ("") to it like this:
|
||||
`nmcli connection modify 'Wired connection 2' setting.property ""`
|
||||
`nmcli connection modify 'Wired connection 2' setting.property ""`
|
||||
|
||||
Connection file
|
||||
In `/etc/NetworkManager/system-connections/`, modify the corresponding `Wired connection 2.nmconnection` file .
|
||||
Do not forget to reload the configuration file with `nmcli connection reload`.
|
||||
In `/etc/NetworkManager/system-connections/`, modify the corresponding `Wired connection 2.nmconnection` file .
|
||||
Do not forget to reload the configuration file with `nmcli connection reload`.
|
||||
|
||||
## Configuration
|
||||
NetworkManager will require some additional steps to be able run properly. Make sure you have configured `/etc/hosts`.
|
||||
NetworkManager will require some additional steps to be able run properly. Make sure you have configured `/etc/hosts`.
|
||||
|
||||
NetworkManager has a global configuration file at `/etc/NetworkManager/NetworkManager.conf`. Additional configuration files can be placed in `/etc/NetworkManager/conf.d/`. Usually no configuration needs to be done to the global defaults.
|
||||
NetworkManager has a global configuration file at `/etc/NetworkManager/NetworkManager.conf`. Additional configuration files can be placed in `/etc/NetworkManager/conf.d/`. Usually no configuration needs to be done to the global defaults.
|
||||
|
||||
After editing a configuration file, the changes can be applied by running:
|
||||
`nmcli general reload`
|
||||
|
||||
### DNS
|
||||
> **Note:** If `/etc/resolv.conf` is a symlink to `/run/systemd/resolve/stub-resolv.conf`, `/run/systemd/resolve/resolv.conf`,`/lib/systemd/resolv.conf` or `/usr/lib/systemd/resolv.conf`, NetworkManager will choose [systemd](../../linux/systemd/Systemd.md)-resolved automatically. To use dnsmasq, you must first remove that symlink, then restart NetworkManager.
|
||||
> **Note:** If `/etc/resolv.conf` is a symlink to `/run/systemd/resolve/stub-resolv.conf`, `/run/systemd/resolve/resolv.conf`,`/lib/systemd/resolv.conf` or `/usr/lib/systemd/resolv.conf`, NetworkManager will choose [systemd](../../linux/systemd/Systemd.md)-resolved automatically. To use dnsmasq, you must first remove that symlink, then restart NetworkManager.
|
||||
|
||||
### VPN
|
||||
[WireGuard](Wireguard.md) is natively supported. To import a [WireGuard](Wireguard.md) Config File as a connection:
|
||||
|
|
|
@ -99,7 +99,7 @@ Corkscrew is a additional programm to tunnel SSH through [HTTP](../../internet/H
|
|||
```
|
||||
|
||||
## Server
|
||||
`sshd` is the OpenSSH server daemon, configured with `/etc/ssh/sshd_config` and managed by `sshd.service`. Whenever changing the configuration, use `sshd` in test mode before restarting the service to ensure it will be able to start cleanly. Valid configurations produce no output.
|
||||
`sshd` is the OpenSSH server daemon, configured with `/etc/ssh/sshd_config` and managed by `sshd.service`. Whenever changing the configuration, use `sshd` in test mode before restarting the service to ensure it will be able to start cleanly. Valid configurations produce no output.
|
||||
```shell
|
||||
sshd -t
|
||||
```
|
||||
|
|
|
@ -20,9 +20,9 @@ mitmproxy is a set of tools that provide an interactive, SSL/TLS-capable interce
|
|||
|
||||
## 3 Powerful Core Tools
|
||||
The mitmproxy project’s tools are a set of front-ends that expose common underlying functionality. When we talk about “mitmproxy” we usually refer to any of the three tools - they are just different front-ends to the same core proxy.
|
||||
**mitmproxy** is an interactive, SSL/TLS-capable intercepting proxy with a console interface for [HTTP](../../internet/HTTP.md)/1, [HTTP](../../internet/HTTP.md)/2, and WebSockets.
|
||||
**mitmweb** is a web-based interface for mitmproxy.
|
||||
**mitmdump** is the command-line version of mitmproxy. Think tcpdump for [HTTP](../../internet/HTTP.md).
|
||||
**mitmproxy** is an interactive, SSL/TLS-capable intercepting proxy with a console interface for [HTTP](../../internet/HTTP.md)/1, [HTTP](../../internet/HTTP.md)/2, and WebSockets.
|
||||
**mitmweb** is a web-based interface for mitmproxy.
|
||||
**mitmdump** is the command-line version of mitmproxy. Think tcpdump for [HTTP](../../internet/HTTP.md).
|
||||
|
||||
## Usage
|
||||
Mitmproxy starts as a regular [HTTP](../../internet/HTTP.md) proxy by default and listens on http://localhost:8080.
|
||||
|
|
|
@ -100,20 +100,20 @@ rclone mount remote:path/to/files /path/to/local/mount
|
|||
|
||||
## Storage Providers
|
||||
### Alias
|
||||
The `alias` remote provides a new name for another remote.
|
||||
The `alias` remote provides a new name for another remote.
|
||||
|
||||
### Amazon S3 Storage
|
||||
The S3 backend can be used with a number of compatible providers (including [Minio](../web/Minio.md)).
|
||||
|
||||
## Chunker
|
||||
The `chunker` overlay transparently splits large files into smaller chunks during upload to wrapped remote and transparently assembles them back when the file is downloaded. This allows to effectively overcome size limits imposed by storage providers.
|
||||
The `chunker` overlay transparently splits large files into smaller chunks during upload to wrapped remote and transparently assembles them back when the file is downloaded. This allows to effectively overcome size limits imposed by storage providers.
|
||||
|
||||
## Crypt
|
||||
Rclone `crypt` remotes encrypt and decrypt other remotes.
|
||||
Rclone `crypt` remotes encrypt and decrypt other remotes.
|
||||
|
||||
A remote of type `crypt` does not access a storage system directly, but instead wraps another remote, which in turn accesses the storage system. This is similar to how alias, union, chunker and a few others work. It makes the usage very flexible, as you can add a layer, in this case an encryption layer, on top of any other backend, even in multiple layers. Rclone's functionality can be used as with any other remote, for example you can mount a crypt remote.
|
||||
A remote of type `crypt` does not access a storage system directly, but instead wraps another remote, which in turn accesses the storage system. This is similar to how alias, union, chunker and a few others work. It makes the usage very flexible, as you can add a layer, in this case an encryption layer, on top of any other backend, even in multiple layers. Rclone's functionality can be used as with any other remote, for example you can mount a crypt remote.
|
||||
|
||||
Accessing a storage system through a crypt remote realizes client-side encryption, which makes it safe to keep your data in a location you do not trust will not get compromised. When working against the `crypt` remote, rclone will automatically encrypt (before uploading) and decrypt (after downloading) on your local system as needed on the fly, leaving the data encrypted at rest in the wrapped remote. If you access the storage system using an application other than rclone, or access the wrapped remote directly using rclone, there will not be any encryption/decryption: Downloading existing content will just give you the encrypted (scrambled) format, and anything you upload will _not_ become encrypted.
|
||||
Accessing a storage system through a crypt remote realizes client-side encryption, which makes it safe to keep your data in a location you do not trust will not get compromised. When working against the `crypt` remote, rclone will automatically encrypt (before uploading) and decrypt (after downloading) on your local system as needed on the fly, leaving the data encrypted at rest in the wrapped remote. If you access the storage system using an application other than rclone, or access the wrapped remote directly using rclone, there will not be any encryption/decryption: Downloading existing content will just give you the encrypted (scrambled) format, and anything you upload will _not_ become encrypted.
|
||||
|
||||
## FTP
|
||||
[FTP](../../internet/FTP.md) is the File Transfer Protocol.
|
||||
|
@ -129,22 +129,22 @@ This is an rclone backend for Mega which supports the file transfer features of
|
|||
## Memory
|
||||
The memory backend is an in RAM backend. It does not persist its data.
|
||||
|
||||
The memory backend behaves like a bucket-based remote (e.g. like s3). Because it has no parameters you can just use it with the `:memory:` remote name.
|
||||
The memory backend behaves like a bucket-based remote (e.g. like s3). Because it has no parameters you can just use it with the `:memory:` remote name.
|
||||
|
||||
## SMB
|
||||
SMB is a communication protocol to share files over network.
|
||||
|
||||
## Union
|
||||
The `union` backend joins several remotes together to make a single unified view of them.
|
||||
The `union` backend joins several remotes together to make a single unified view of them.
|
||||
|
||||
During the initial setup with `rclone config` you will specify the upstream remotes as a space separated list. The upstream remotes can either be a local paths or other remotes.
|
||||
During the initial setup with `rclone config` you will specify the upstream remotes as a space separated list. The upstream remotes can either be a local paths or other remotes.
|
||||
|
||||
The attributes `:ro`, `:nc` and `:nc` can be attached to the end of the remote to tag the remote as **read only**, **no create** or **writeback**, e.g. `remote:directory/subdirectory:ro` or `remote:directory/subdirectory:nc`.
|
||||
- `:ro` means files will only be read from here and never written
|
||||
- `:nc` means new files or directories won't be created here
|
||||
- `:writeback` means files found in different remotes will be written back here.
|
||||
The attributes `:ro`, `:nc` and `:nc` can be attached to the end of the remote to tag the remote as **read only**, **no create** or **writeback**, e.g. `remote:directory/subdirectory:ro` or `remote:directory/subdirectory:nc`.
|
||||
- `:ro` means files will only be read from here and never written
|
||||
- `:nc` means new files or directories won't be created here
|
||||
- `:writeback` means files found in different remotes will be written back here.
|
||||
|
||||
Subfolders can be used in upstream remotes. Assume a union remote named `backup` with the remotes `mydrive:private/backup`. Invoking `rclone mkdir backup:desktop` is exactly the same as invoking `rclone mkdir mydrive:private/backup/desktop`.
|
||||
Subfolders can be used in upstream remotes. Assume a union remote named `backup` with the remotes `mydrive:private/backup`. Invoking `rclone mkdir backup:desktop` is exactly the same as invoking `rclone mkdir mydrive:private/backup/desktop`.
|
||||
|
||||
## WebDAV
|
||||
To configure the [WebDAV](../../internet/WebDAV.md) remote you will need to have a [URL](../../internet/URL.md) for it, and a username and password
|
|
@ -12,7 +12,7 @@ A very simplistic configuration which will deny all by default.
|
|||
ufw default deny
|
||||
```
|
||||
|
||||
The next line is only needed _once_ the first time you install the package:
|
||||
The next line is only needed _once_ the first time you install the package:
|
||||
```shell
|
||||
ufw enable
|
||||
```
|
||||
|
|
|
@ -44,12 +44,12 @@ The following variables should be defined by the user:
|
|||
| Option | Description |
|
||||
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `!archcheck` | Do not try to verify that the architecture of the binary files is the same architecture as abuild should build for. One example where it makes sense to set this are packages with firmware files, that get executed on another CPU (such as WiFi firmware). |
|
||||
| `!check` | Do not try to run the `check()` function. Please always add a short comment after the `!check` about why it's disabled. Creating a very simple check function, that calls `program --version` is worse than disabling tests completely because it gives the false impression that the package is thoroughly tested with the testsuite from upstream. |
|
||||
| `checkroot` | Specifies that the package's test suite will be run in _fakeroot_. This is necessary for some test suites which fail when run as non-root. |
|
||||
| `net` | Allows network access when run in _rootbld_. |
|
||||
| `!check` | Do not try to run the `check()` function. Please always add a short comment after the `!check` about why it's disabled. Creating a very simple check function, that calls `program --version` is worse than disabling tests completely because it gives the false impression that the package is thoroughly tested with the testsuite from upstream. |
|
||||
| `checkroot` | Specifies that the package's test suite will be run in _fakeroot_. This is necessary for some test suites which fail when run as non-root. |
|
||||
| `net` | Allows network access when run in _rootbld_. |
|
||||
| `!strip` | Avoid stripping symbols from binaries. |
|
||||
| `suid` | Allow setuid binaries. |
|
||||
| `!tracedeps` | Do not automatically find dependencies (e.g. by using `ldd` to find dynamic libraries, which the resulting binary links against). |
|
||||
| `suid` | Allow setuid binaries. |
|
||||
| `!tracedeps` | Do not automatically find dependencies (e.g. by using `ldd` to find dynamic libraries, which the resulting binary links against). |
|
||||
| `chmod-clean` | Make all files writable in the src/ directory. Useful for packages that make files read-only in the process of building packages (go modules). |
|
||||
| `toolchain` | Don't warn when g++ is in makedepends |
|
||||
| `!dbg` | Don't create debugging subpackage |
|
||||
|
|
|
@ -26,39 +26,39 @@ Usage:
|
|||
- `abuild -r`: builds the package.
|
||||
|
||||
### Building in a chroot
|
||||
Install package `abuild-rootbld`:
|
||||
Install package `abuild-rootbld`:
|
||||
```shell
|
||||
apk add abuild-rootbld
|
||||
```
|
||||
|
||||
You may now build your packages from source in an unprivileged sandbox based on bubblewrap with the command:
|
||||
You may now build your packages from source in an unprivileged sandbox based on bubblewrap with the command:
|
||||
```shell
|
||||
abuild rootbld
|
||||
```
|
||||
|
||||
If the build process needs network access there has to bet set the **net** option in [APKBUILD](APKBUILD.md).
|
||||
If the build process needs network access there has to bet set the **net** option in [APKBUILD](APKBUILD.md).
|
||||
|
||||
## Bumping a package version
|
||||
The tool `abump` is a utility to bump pkgver in [APKBUILD](APKBUILD.md) files if the package gets an update to a newer upstream release. `abump` will update the package's `pkgver`, rebuild it and create a new commit with the resulting changes.
|
||||
The tool `abump` is a utility to bump pkgver in [APKBUILD](APKBUILD.md) files if the package gets an update to a newer upstream release. `abump` will update the package's `pkgver`, rebuild it and create a new commit with the resulting changes.
|
||||
```shell
|
||||
abump [-hR]
|
||||
```
|
||||
|
||||
**abump options**
|
||||
- **-h** Show this help
|
||||
- **-R** Run abuild with -R for recursive building
|
||||
- **-k** Keep existing packages
|
||||
- **-h** Show this help
|
||||
- **-R** Run abuild with -R for recursive building
|
||||
- **-k** Keep existing packages
|
||||
|
||||
## Updating a package release
|
||||
If you want to bump or reset the pkgrel value of your [APKBUILD](APKBUILD.md) or test your [APKBUILD](APKBUILD.md) files, apkgrel can assist you.
|
||||
If you want to bump or reset the pkgrel value of your [APKBUILD](APKBUILD.md) or test your [APKBUILD](APKBUILD.md) files, apkgrel can assist you.
|
||||
```shell
|
||||
apkgrel -a|-h|-s NUM|-t|-z [-f] FILE...
|
||||
```
|
||||
|
||||
**apkgrel options**
|
||||
- **-a** Add 1 to current pkgrel
|
||||
- **-f** Force, even if given files are not in proper format
|
||||
- **-h** Show this help
|
||||
- **-s** Set pkgrel to NUM
|
||||
- **-t** Only verify that files are in proper format
|
||||
- **-z** Set pkgrel to 0
|
||||
- **-a** Add 1 to current pkgrel
|
||||
- **-f** Force, even if given files are not in proper format
|
||||
- **-h** Show this help
|
||||
- **-s** Set pkgrel to NUM
|
||||
- **-t** Only verify that files are in proper format
|
||||
- **-z** Set pkgrel to 0
|
||||
|
|
|
@ -5,7 +5,7 @@ obj: concept
|
|||
|
||||
# PKGBUILD
|
||||
|
||||
A `PKGBUILD` is a shell script containing the build information required by [Arch Linux](../../../linux/Arch%20Linux.md) packages. [Arch Wiki](https://wiki.archlinux.org/title/PKGBUILD)
|
||||
A `PKGBUILD` is a shell script containing the build information required by [Arch Linux](../../../linux/Arch%20Linux.md) packages. [Arch Wiki](https://wiki.archlinux.org/title/PKGBUILD)
|
||||
|
||||
Packages in [Arch Linux](../../../linux/Arch%20Linux.md) are built using the [makepkg](makepkg.md) utility. When [makepkg](makepkg.md) is run, it searches for a PKGBUILD file in the current directory and follows the instructions therein to either compile or otherwise acquire the files to build a package archive (pkgname.pkg.tar.zst). The resulting package contains binary files and installation instructions, readily installable with [pacman](Pacman.md).
|
||||
|
||||
|
|
|
@ -15,12 +15,12 @@ Configuration is done with `~/.config/dunst/dunstrc`
|
|||
The configuration is divided into sections in an ini-like format. Every section starts with the section's name in square brackets. After that is a list of key-value pairs that specify the settings. Whitespace is purely cosmetic and doesn't change the result.
|
||||
|
||||
### Global
|
||||
- **monitor** (default: 0)
|
||||
Specifies on which monitor the notifications should be displayed in, count starts at 0. See the **follow** setting.
|
||||
- **monitor** (default: 0)
|
||||
Specifies on which monitor the notifications should be displayed in, count starts at 0. See the **follow** setting.
|
||||
|
||||
- **follow** (values: \[none/mouse/keyboard] default: none)
|
||||
Defines where the notifications should be placed in a multi-monitor setup. All values except _none_ override the **monitor** setting.
|
||||
- **none**: The notifications will be placed on the monitor specified by the **monitor** setting.
|
||||
- **follow** (values: \[none/mouse/keyboard] default: none)
|
||||
Defines where the notifications should be placed in a multi-monitor setup. All values except _none_ override the **monitor** setting.
|
||||
- **none**: The notifications will be placed on the monitor specified by the **monitor** setting.
|
||||
- **mouse**: The notifications will be placed on the monitor that the mouse is currently in.
|
||||
- **keyboard**: The notifications will be placed on the monitor that contains the window with keyboard focus.
|
||||
|
||||
|
@ -31,70 +31,70 @@ When setting a width bigger than the screen, dunst will clamp the width to the s
|
|||
- **height**
|
||||
The maximum height of a single notification.
|
||||
|
||||
- **notification_limit** (default: 0)
|
||||
The number of notifications that can appear at one time. When this limit is reached any additional notifications will be queued and displayed when the currently displayed ones either time out or are manually dismissed. The value 0 means no limit. If **indicate_hidden** is true, then the specified limit is reduced by 1 and the last notification is a message informing how many hidden notifications are waiting to be displayed. See the **indicate_hidden** entry for more information.
|
||||
- **notification_limit** (default: 0)
|
||||
The number of notifications that can appear at one time. When this limit is reached any additional notifications will be queued and displayed when the currently displayed ones either time out or are manually dismissed. The value 0 means no limit. If **indicate_hidden** is true, then the specified limit is reduced by 1 and the last notification is a message informing how many hidden notifications are waiting to be displayed. See the **indicate_hidden** entry for more information.
|
||||
|
||||
- **origin** (default: top-right)
|
||||
- **origin** (default: top-right)
|
||||
The origin of the notification window on the screen. It can then be moved with offset. Origin can be one of: top-left top-center top-right bottom-left bottom-center bottom-right left-center center right-center
|
||||
|
||||
- **offset** format: (horizontal, vertical)
|
||||
Respectively the horizontal and vertical offset in pixels from the corner of the screen specified by **origin**. A negative offset will lead to the notification being off screen.
|
||||
- **offset** format: (horizontal, vertical)
|
||||
Respectively the horizontal and vertical offset in pixels from the corner of the screen specified by **origin**. A negative offset will lead to the notification being off screen.
|
||||
|
||||
- **icon_corner_radius** (default: 0)
|
||||
- **icon_corner_radius** (default: 0)
|
||||
The corner radius of the icon image in pixels. Gives the icon rounded corners. Set to 0 to disable.
|
||||
|
||||
- **indicate_hidden** (values: \[true/false], default: true)
|
||||
If this is set to true, a notification indicating how many notifications are not being displayed due to the notification limit (see **notification_limit**) will be shown **in place of the last notification slot**.
|
||||
Meaning that if this is enabled the number of visible notifications will be 1 less than what is specified by **notification_limit**, the last slot will be taken by the hidden count.
|
||||
- **indicate_hidden** (values: \[true/false], default: true)
|
||||
If this is set to true, a notification indicating how many notifications are not being displayed due to the notification limit (see **notification_limit**) will be shown **in place of the last notification slot**.
|
||||
Meaning that if this is enabled the number of visible notifications will be 1 less than what is specified by **notification_limit**, the last slot will be taken by the hidden count.
|
||||
|
||||
- **separator_height** (default: 2)
|
||||
The height in pixels of the separator between notifications, if set to 0 there will be no separating line between notifications. This setting will be ignored if **gap_size** is greater than 0.
|
||||
- **separator_height** (default: 2)
|
||||
The height in pixels of the separator between notifications, if set to 0 there will be no separating line between notifications. This setting will be ignored if **gap_size** is greater than 0.
|
||||
|
||||
- **padding** (default: 8)
|
||||
- **padding** (default: 8)
|
||||
The distance in pixels from the content to the separator/border of the window in the vertical axis
|
||||
|
||||
- **horizontal_padding** (default: 8)
|
||||
- **horizontal_padding** (default: 8)
|
||||
The distance in pixels from the content to the border of the window in the horizontal axis
|
||||
|
||||
- **text_icon_padding** (default: 0)
|
||||
- **text_icon_padding** (default: 0)
|
||||
The distance in pixels from the text to the icon (or vice versa) in the horizontal axis.
|
||||
|
||||
- **frame_width** (default: 3)
|
||||
- **frame_width** (default: 3)
|
||||
Defines width in pixels of frame around the notification window. Set to 0 to disable.
|
||||
|
||||
- **gap_size** (default: 0)
|
||||
- **gap_size** (default: 0)
|
||||
Size of gap to display between notifications.
|
||||
|
||||
- **font** (default: "Monospace 8")
|
||||
- **font** (default: "Monospace 8")
|
||||
Defines the font or font set used. Optionally set the size as a decimal number after the font name and space. Multiple font options can be separated with commas.
|
||||
|
||||
- **line_height** (default: 0)
|
||||
- **line_height** (default: 0)
|
||||
The amount of extra spacing between text lines in pixels. Set to 0 to disable.
|
||||
|
||||
- **format** (default: `<b>%s</b>\n%b`)
|
||||
- **format** (default: `<b>%s</b>\n%b`)
|
||||
Specifies how the various attributes of the notification should be formatted on the notification window.
|
||||
If `\n` is present anywhere in the format, it will be replaced with a literal newline.
|
||||
If any of the following strings are present, they will be replaced with the equivalent notification attribute:
|
||||
- **%a** appname
|
||||
- **%s** summary
|
||||
- **%b** body
|
||||
- **%i** iconname (including its path)
|
||||
- **%I** iconname (without its path)
|
||||
- **%p** progress value (\[ 0%] to \[100%])
|
||||
- **%n** progress value without any extra characters
|
||||
- **%a** appname
|
||||
- **%s** summary
|
||||
- **%b** body
|
||||
- **%i** iconname (including its path)
|
||||
- **%I** iconname (without its path)
|
||||
- **%p** progress value (\[ 0%] to \[100%])
|
||||
- **%n** progress value without any extra characters
|
||||
- **%\%** Literal %
|
||||
If any of these exists in the format but hasn't been specified in the notification (e.g. no icon has been set), the placeholders will simply be removed from the format.
|
||||
|
||||
- **vertical_alignment** (values: [top/center/bottom], default: center)
|
||||
- **vertical_alignment** (values: [top/center/bottom], default: center)
|
||||
Defines how the text and icon should be aligned vertically within the notification. If icons are disabled, this option has no effect.
|
||||
|
||||
- **history_length** (default: 20)
|
||||
- **history_length** (default: 20)
|
||||
Maximum number of notifications that will be kept in history. After that limit is reached, older notifications will be deleted once a new one arrives.
|
||||
|
||||
- **browser** (default: "/usr/bin/xdg-open")
|
||||
- **browser** (default: "/usr/bin/xdg-open")
|
||||
The command that will be run when opening a [URL](../../internet/URL.md). The [URL](../../internet/URL.md) to be opened will be appended to the end of the value of this setting.
|
||||
|
||||
- **corner_radius** (default: 0)
|
||||
- **corner_radius** (default: 0)
|
||||
Define the corner radius in pixels. A corner radius of 0 will result in rectangular shaped notifications.
|
||||
By enabling this setting the outer border and the frame will be shaped. If you have multiple notifications, the whole window is shaped, not every single notification.
|
||||
To avoid the corners clipping the icon or text the corner radius will be automatically lowered to half of the notification height if it exceeds it.
|
||||
|
|
|
@ -6,7 +6,7 @@ flatpak-id: org.keepassxc.KeePassXC
|
|||
---
|
||||
|
||||
# KeePassXC
|
||||
**KeePassXC** is a modern, secure, and open-source password manager that stores and manages your most sensitive information.
|
||||
**KeePassXC** is a modern, secure, and open-source password manager that stores and manages your most sensitive information.
|
||||
|
||||
You can run KeePassXC on [Windows](../../windows/Windows.md), [macOS](../../macos/macOS.md), and [Linux](../../linux/Linux.md) systems. KeePassXC is for people with extremely high demands of secure personal data management. It saves many types of information, such as usernames, passwords, URLs, attachments, and notes in an offline, encrypted file that can be stored in any location, including private and public cloud solutions.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ Rofi is a window switcher, run dialog, ssh-launcher and dmenu replacement that s
|
|||
|
||||
## Configuration
|
||||
There are two methods of setting configuration options:
|
||||
- Local configuration. Normally, depending on XDG, in `~/.config/rofi/config.rasi`.
|
||||
- Local configuration. Normally, depending on XDG, in `~/.config/rofi/config.rasi`.
|
||||
- Command line options:
|
||||
|
||||
```shell
|
||||
|
@ -26,13 +26,13 @@ configuration {
|
|||
@theme "solarized"
|
||||
```
|
||||
|
||||
To get a full list of options for `config.rasi` file run `rofi -dump-config` or `rofi -h`. You can write the output of the command directly to your configuration file while running `rofi -dump-config > ~/.config/rofi/config.rasi`.
|
||||
To get a full list of options for `config.rasi` file run `rofi -dump-config` or `rofi -h`. You can write the output of the command directly to your configuration file while running `rofi -dump-config > ~/.config/rofi/config.rasi`.
|
||||
|
||||
## Themes
|
||||
The easiest way to get started theming rofi is by modifying your existing theme.
|
||||
|
||||
Themes can be modified/tweaked by adding theming elements to the end of the
|
||||
config file. The default location of this file is `~/.config/rofi/config.rasi`, if the file does not exists, you can create it.
|
||||
config file. The default location of this file is `~/.config/rofi/config.rasi`, if the file does not exists, you can create it.
|
||||
|
||||
A basic config:
|
||||
```
|
||||
|
@ -46,11 +46,11 @@ configuration {
|
|||
/* Insert theme modifications after this */
|
||||
```
|
||||
|
||||
For example if we want to change the `Type to filter` text in the entry box we append the following:
|
||||
For example if we want to change the `Type to filter` text in the entry box we append the following:
|
||||
```css
|
||||
entry {
|
||||
placeholder: "Type here";
|
||||
}
|
||||
```
|
||||
|
||||
In the above section, `entry` indicates the widget, `placeholder` is the property we want to modify and we set it to the string `"Type here"`.
|
||||
In the above section, `entry` indicates the widget, `placeholder` is the property we want to modify and we set it to the string `"Type here"`.
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -151,9 +151,9 @@ curl --user your_username:your_token_or_password -X DELETE \ https://gitea.e
|
|||
```
|
||||
|
||||
## Profile READMEs
|
||||
To display a [Markdown](../../files/Markdown.md) file in your Gitea profile page, simply create a repository named `.profile` and add a new file called `README.md`. Gitea will automatically display the contents of the file on your profile, above your repositories.
|
||||
To display a [Markdown](../../files/Markdown.md) file in your Gitea profile page, simply create a repository named `.profile` and add a new file called `README.md`. Gitea will automatically display the contents of the file on your profile, above your repositories.
|
||||
|
||||
Making the `.profile` repository private will hide the Profile README.
|
||||
Making the `.profile` repository private will hide the Profile README.
|
||||
|
||||
## Docker Compose
|
||||
```yaml
|
||||
|
|
|
@ -10,9 +10,9 @@ Home Assistant is a local smart home hub platform supportig many [integrations](
|
|||
![Screenshot][Screenshot]
|
||||
|
||||
## Configuration
|
||||
While you can configure most of Home Assistant directly from the user interface, some parts need you to edit `configuration.yaml`.
|
||||
While you can configure most of Home Assistant directly from the user interface, some parts need you to edit `configuration.yaml`.
|
||||
|
||||
To improve readability, you can source out certain domains from your main configuration file with the `!include`-syntax.
|
||||
To improve readability, you can source out certain domains from your main configuration file with the `!include`-syntax.
|
||||
```yaml
|
||||
light: !include lights.yaml
|
||||
```
|
||||
|
|
|
@ -9,7 +9,7 @@ Uptime Kuma is an easy-to-use self-hosted monitoring tool.
|
|||
## Features
|
||||
- Monitoring uptime for [HTTP](../../internet/HTTP.md)(s) / [TCP](../../internet/TCP.md) / [HTTP](../../internet/HTTP.md)(s) Keyword / [HTTP](../../internet/HTTP.md)(s) [Json](../../files/JSON.md) Query / Ping / [DNS](../../internet/DNS.md) Record / Push / Steam Game Server / [Docker](../../tools/Docker.md) Containers
|
||||
- Fancy, Reactive, Fast UI/UX
|
||||
- Notifications via Telegram, [Discord](../communication/Discord.md), Gotify, Slack, Pushover, [Email](../../internet/eMail.md) ([SMTP](../../internet/SMTP.md)), and 90+ notification services
|
||||
- Notifications via Telegram, [Discord](../communication/Discord.md), Gotify, Slack, Pushover, [Email](../../internet/eMail.md) ([SMTP](../../internet/SMTP.md)), and 90+ notification services
|
||||
- 20-second intervals
|
||||
- Multiple status pages
|
||||
- Map status pages to specific domains
|
||||
|
|
|
@ -46,30 +46,30 @@ Usage: `dufs [OPTIONS] [serve-path]`
|
|||
| `--tls-key <path>` | Path to the SSL/TLS certificate's private key |
|
||||
|
||||
### Access Control
|
||||
Dufs supports account based access control. You can control who can do what on which path with `--auth`/`-a`.
|
||||
Dufs supports account based access control. You can control who can do what on which path with `--auth`/`-a`.
|
||||
```
|
||||
dufs -a user:pass@/path1:rw,/path2 -a user2:pass2@/path3 -a @/path4
|
||||
```
|
||||
|
||||
1. Use `@` to separate the account and paths. No account means anonymous user.
|
||||
2. Use `:` to separate the username and password of the account.
|
||||
3. Use `,` to separate paths.
|
||||
4. Use `:rw` suffix to indicate that the account has read-write permission on the path.
|
||||
1. Use `@` to separate the account and paths. No account means anonymous user.
|
||||
2. Use `:` to separate the username and password of the account.
|
||||
3. Use `,` to separate paths.
|
||||
4. Use `:rw` suffix to indicate that the account has read-write permission on the path.
|
||||
|
||||
Examples:
|
||||
- `-a admin:amdin@/:rw`: `admin` has complete permissions for all paths.
|
||||
- `-a guest:guest@/`: `guest` has read-only permissions for all paths.
|
||||
- `-a user:pass@/dir1:rw,/dir2`: `user` has complete permissions for `/dir1/*`, has read-only permissions for `/dir2/`.
|
||||
- `-a admin:amdin@/:rw`: `admin` has complete permissions for all paths.
|
||||
- `-a guest:guest@/`: `guest` has read-only permissions for all paths.
|
||||
- `-a user:pass@/dir1:rw,/dir2`: `user` has complete permissions for `/dir1/*`, has read-only permissions for `/dir2/`.
|
||||
- `-a @/`: All paths is publicly accessible, everyone can view/download it.
|
||||
|
||||
### Hide Paths
|
||||
Dufs supports hiding paths from directory listings via option `--hidden <glob>,...`.
|
||||
Dufs supports hiding paths from directory listings via option `--hidden <glob>,...`.
|
||||
|
||||
```
|
||||
dufs --hidden .git,.DS_Store,tmp
|
||||
```
|
||||
|
||||
> The glob used in --hidden only matches file and directory names, not paths. So `--hidden dir1/file` is invalid.
|
||||
> The glob used in --hidden only matches file and directory names, not paths. So `--hidden dir1/file` is invalid.
|
||||
|
||||
```shell
|
||||
dufs --hidden '.*' # hidden dotfiles
|
||||
|
@ -79,7 +79,7 @@ dufs --hidden '*.log' --hidden '*.lock'
|
|||
```
|
||||
|
||||
### Log Format
|
||||
Dufs supports customize [http](../../internet/HTTP.md) log format with option `--log-format`.
|
||||
Dufs supports customize [http](../../internet/HTTP.md) log format with option `--log-format`.
|
||||
|
||||
The log format can use following variables.
|
||||
|
||||
|
@ -91,13 +91,13 @@ The log format can use following variables.
|
|||
| `$status` | response status |
|
||||
| `$http_` | arbitrary request header field. examples: `$http_user_agent`, `$http_referer` |
|
||||
|
||||
The default log format is `'$remote_addr "$request" $status'`.
|
||||
The default log format is `'$remote_addr "$request" $status'`.
|
||||
```
|
||||
2022-08-06T06:59:31+08:00 INFO - 127.0.0.1 "GET /" 200
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
All options can be set using [environment variables](../../linux/Environment%20Variables.md) prefixed with `DUFS_`.
|
||||
All options can be set using [environment variables](../../linux/Environment%20Variables.md) prefixed with `DUFS_`.
|
||||
|
||||
| Option | Environment Variable |
|
||||
| ----------------------- | ---------------------------- |
|
||||
|
@ -124,7 +124,7 @@ All options can be set using [environment variables](../../linux/Environment%20V
|
|||
| `--tls-key <path>` | DUFS_TLS_KEY=key.pem |
|
||||
|
||||
### Configuration File
|
||||
You can specify and use the configuration file by selecting the option `--config <path-to-config.yaml>`.
|
||||
You can specify and use the configuration file by selecting the option `--config <path-to-config.yaml>`.
|
||||
|
||||
The following are the configuration items:
|
||||
```yaml
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue