neulab/tldr huggingface dataset:
git remote [-v | --verbose] git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <url> git remote rename <old> <new> git remote remove <name> git remote set-head <name> (-a | --auto | -d | --delete | <branch>) git remote set-branches [--add] <name> <branch>... git remote get-url [--push] [--all] <name> git remote set-url [--push] <name> <newurl> [<oldurl>] git remote set-url --add [--push] <name> <newurl> git remote set-url --delete [--push] <name> <url> git remote [-v | --verbose] show [-n] <name>... git remote prune [-n | --dry-run] <name>... git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]
Manage the set of repositories ("remotes") whose branches you track.
-v, --verbose Be a little more verbose and show remote url after name. NOTE: This must be placed between remote and subcommand.
With no arguments, shows a list of existing remotes. Several subcommands are available to perform operations on the remotes.
add Add a remote named <name> for the repository at <url>. The command git fetch <name> can then be used to create and update remote-tracking branches <name>/<branch>.
With -f option, git fetch <name> is run immediately after the remote information is set up.
With --tags option, git fetch <name> imports every tag from the remote repository.
With --no-tags option, git fetch <name> does not import tags from the remote repository.
By default, only tags on fetched branches are imported (see git- fetch(1)).
With -t <branch> option, instead of the default glob refspec for the remote to track all branches under the refs/remotes/<name>/ namespace, a refspec to track only <branch> is created. You can give more than one -t <branch> to track multiple branches without grabbing all branches.
With -m <master> option, a symbolic-ref refs/remotes/<name>/HEAD is set up to point at remote’s <master> branch. See also the set-head command.
When a fetch mirror is created with --mirror=fetch, the refs will not be stored in the refs/remotes/ namespace, but rather everything in refs/ on the remote will be directly mirrored into refs/ in the local repository. This option only makes sense in bare repositories, because a fetch would overwrite any local commits.
When a push mirror is created with --mirror=push, then git push will always behave as if --mirror was passed.
rename Rename the remote named <old> to <new>. All remote-tracking branches and configuration settings for the remote are updated.
In case <old> and <new> are the same, and <old> is a file under $GIT_DIR/remotes or $GIT_DIR/branches, the remote is converted to the configuration file format.
remove, rm Remove the remote named <name>. All remote-tracking branches and configuration settings for the remote are removed.
set-head Sets or deletes the default branch (i.e. the target of the symbolic-ref refs/remotes/<name>/HEAD) for the named remote. Having a default branch for a remote is not required, but allows the name of the remote to be specified in lieu of a specific branch. For example, if the default branch for origin is set to master, then origin may be specified wherever you would normally specify origin/master.
With -d or --delete, the symbolic ref refs/remotes/<name>/HEAD is deleted.
With -a or --auto, the remote is queried to determine its HEAD, then the symbolic-ref refs/remotes/<name>/HEAD is set to the same branch. e.g., if the remote HEAD is pointed at next, git remote set-head origin -a will set the symbolic-ref refs/remotes/origin/HEAD to refs/remotes/origin/next. This will only work if refs/remotes/origin/next already exists; if not it must be fetched first.
Use <branch> to set the symbolic-ref refs/remotes/<name>/HEAD explicitly. e.g., git remote set-head origin master will set the symbolic-ref refs/remotes/origin/HEAD to refs/remotes/origin/master. This will only work if refs/remotes/origin/master already exists; if not it must be fetched first.
set-branches Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches after the initial setup for a remote.
The named branches will be interpreted as if specified with the -t option on the git remote add command line.
With --add, instead of replacing the list of currently tracked branches, adds to that list.
get-url Retrieves the URLs for a remote. Configurations for insteadOf and pushInsteadOf are expanded here. By default, only the first URL is listed.
With --push, push URLs are queried rather than fetch URLs.
With --all, all URLs for the remote will be listed.
set-url Changes URLs for the remote. Sets first URL for remote <name> that matches regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If <oldurl> doesn’t match any URL, an error occurs and nothing is changed.
With --push, push URLs are manipulated instead of fetch URLs.
With --add, instead of changing existing URLs, new URL is added.
With --delete, instead of changing existing URLs, all URLs matching regex <url> are deleted for remote <name>. Trying to delete all non-push URLs is an error.
Note that the push URL and the fetch URL, even though they can be set differently, must still refer to the same place. What you pushed to the push URL should be what you would see if you immediately fetched from the fetch URL. If you are trying to fetch from one place (e.g. your upstream) and push to another (e.g. your publishing repository), use two separate remotes.
show Gives some information about the remote <name>.
With -n option, the remote heads are not queried first with git ls-remote <name>; cached information is used instead.
prune Deletes stale references associated with <name>. By default, stale remote-tracking branches under <name> are deleted, but depending on global configuration and the configuration of the remote we might even prune local tags that haven’t been pushed there. Equivalent to git fetch --prune <name>, except that no new references will be fetched.
See the PRUNING section of git-fetch(1) for what it’ll prune depending on various configuration.
With --dry-run option, report what branches would be pruned, but do not actually prune them.
update Fetch updates for remotes or remote groups in the repository as defined by remotes.<group>. If neither group nor remote is specified on the command line, the configuration parameter remotes.default will be used; if remotes.default is not defined, all remotes which do not have the configuration parameter remote.<name>.skipDefaultUpdate set to true will be updated. (See git-config(1)).
With --prune option, run pruning against all the remotes that are updated.
The remote configuration is achieved using the remote.origin.url and remote.origin.fetch configuration variables. (See git-config(1)).
On success, the exit status is 0.
When subcommands such as add, rename, and remove can’t find the remote in question, the exit status is 2. When the remote already exists, the exit status is 3.
On any other error, the exit status may be any other non-zero value.
•   Add a new remote, fetch, and check out a branch from it
$ git remote origin $ git branch -r origin/HEAD -> origin/master origin/master $ git remote add staging git://git.kernel.org/.../gregkh/staging.git $ git remote origin staging $ git fetch staging ... From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging * [new branch]      master     -> staging/master * [new branch]      staging-linus -> staging/staging-linus * [new branch]      staging-next -> staging/staging-next $ git branch -r origin/HEAD -> origin/master origin/master staging/master staging/staging-linus staging/staging-next $ git switch -c staging staging/master ...
•   Imitate git clone but track only selected branches
$ mkdir project.git $ cd project.git $ git init $ git remote add -f -t master -m master origin git://example.com/git.git/ $ git merge origin
git-fetch(1) git-branch(1) git-config(1)
GIT-CHECK-REF-FOR(1)               Git Manual               GIT-CHECK-REF-FOR(1)
git-check-ref-format - Ensures that a reference name is well formed
git check-ref-format [--normalize] [--[no-]allow-onelevel] [--refspec-pattern] <refname> git check-ref-format --branch <branchname-shorthand>
Checks if a given refname is acceptable, and exits with a non-zero status if it is not.
A reference is used in Git to specify branches and tags. A branch head is stored in the refs/heads hierarchy, while a tag is stored in the refs/tags hierarchy of the ref namespace (typically in $GIT_DIR/refs/heads and $GIT_DIR/refs/tags directories or, as entries in file $GIT_DIR/packed-refs if refs are packed by git gc).
Git imposes the following rules on how references are named:
1. They can include slash / for hierarchical (directory) grouping, but no slash-separated component can begin with a dot .  or end with the sequence .lock.
2. They must contain at least one /. This enforces the presence of a category like heads/, tags/ etc. but the actual names are not restricted. If the --allow-onelevel option is used, this rule is waived.
3. They cannot have two consecutive dots ..  anywhere.
4. They cannot have ASCII control characters (i.e. bytes whose values are lower than \040, or \177 DEL), space, tilde ~, caret ^, or colon : anywhere.
5. They cannot have question-mark ?, asterisk *, or open bracket [ anywhere. See the --refspec-pattern option below for an exception to this rule.
6. They cannot begin or end with a slash / or contain multiple consecutive slashes (see the --normalize option below for an exception to this rule)
7. They cannot end with a dot ..
8. They cannot contain a sequence @{.
9. They cannot be the single character @.
10. They cannot contain a \.
These rules make it easy for shell script based tools to parse reference names, pathname expansion by the shell when a reference name is used unquoted (by mistake), and also avoid ambiguities in certain reference name expressions (see gitrevisions(7)):
1. A double-dot ..  is often used as in ref1..ref2, and in some contexts this notation means ^ref1 ref2 (i.e. not in ref1 and in ref2).
2. A tilde ~ and caret ^ are used to introduce the postfix nth parent and peel onion operation.
3. A colon : is used as in srcref:dstref to mean "use srcref’s value and store it in dstref" in fetch and push operations. It may also be used to select a specific object such as with git cat-file: "git cat-file blob v1.3.3:refs.c".
4. at-open-brace @{ is used as a notation to access a reflog entry.
With the --branch option, the command takes a name and checks if it can be used as a valid branch name (e.g. when creating a new branch). But be cautious when using the previous checkout syntax that may refer to a detached HEAD state. The rule git check-ref-format --branch $name implements may be stricter than what git check-ref-format refs/heads/$name says (e.g. a dash may appear at the beginning of a ref component, but it is explicitly forbidden at the beginning of a branch name). When run with --branch option in a repository, the input is first expanded for the “previous checkout syntax” @{-n}. For example, @{-1} is a way to refer the last thing that was checked out using "git switch" or "git checkout" operation. This option should be used by porcelains to accept this syntax anywhere a branch name is expected, so they can act as if you typed the branch name. As an exception note that, the “previous checkout operation” might result in a commit object name when the N-th last thing checked out was not a branch.
--[no-]allow-onelevel Controls whether one-level refnames are accepted (i.e., refnames that do not contain multiple /-separated components). The default is --no-allow-onelevel.
--refspec-pattern Interpret <refname> as a reference name pattern for a refspec (as used with remote repositories). If this option is enabled, <refname> is allowed to contain a single * in the refspec (e.g., foo/bar*/baz or foo/bar*baz/ but not foo/bar*/baz*).
--normalize Normalize refname by removing any leading slash (/) characters and collapsing runs of adjacent slashes between name components into a single slash. If the normalized refname is valid then print it to standard output and exit with a status of 0, otherwise exit with a non-zero status. (--print is a deprecated way to spell --normalize.)
•   Print the name of the previous thing checked out:
$ git check-ref-format --branch @{-1}
•   Determine the reference name to use for a new branch:
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")|| { echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }
SED(1)                            User Commands                           SED(1)
sed - stream editor for filtering and transforming text
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
Sed is a stream editor.  A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.  But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.
-n, --quiet, --silent
suppress automatic printing of pattern space
annotate program execution
-e script, --expression=script
add the script to the commands to be executed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
--follow-symlinks
follow symlinks when processing in place
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
disable all GNU extensions.
-E, -r, --regexp-extended
use extended regular expressions in the script (for portability use POSIX -E).
-s, --separate
consider files as separate rather than as a single, continuous long stream.
--sandbox
operate in sandbox mode (disable e/r/w commands).
load minimal amounts of data from the input files and flush the output buffers more often
-z, --null-data
separate lines by NUL characters
If no -e, --expression, -f, or --file option is given, then the first non-option argument is taken as the sed script to interpret.  All remaining arguments are names of input files; if no input files are specified, then the standard input is read.
GNU sed home page: <https://www.gnu.org/software/sed/>.  General help using GNU software: <https://www.gnu.org/gethelp/>.  E-mail bug reports to: <bug-sed@gnu.org>.
This is just a brief synopsis of sed commands to serve as a reminder to those who already know sed; other documentation (such as the texinfo document) must be consulted for fuller descriptions.
Zero-address ``commands'' : label Label for b and t commands.
#comment The comment extends until the next newline (or the end of a -e script fragment).
}      The closing bracket of a { } block.
Zero- or One- address commands =      Print the current line number.
a \
text   Append text, which has each embedded newline preceded by a backslash.
text   Insert text, which has each embedded newline preceded by a backslash.
q [exit-code] Immediately quit the sed script without processing any more input, except that if auto-print is not disabled the current pattern space will be printed.  The exit code argument is a GNU extension.
Q [exit-code] Immediately quit the sed script without processing any more input. This is a GNU extension.
r filename Append text read from filename.
R filename Append a line read from filename.  Each invocation of the command reads a line from the file.  This is a GNU extension.
Commands which accept address ranges {      Begin a block of commands (end with a }).
b label Branch to label; if label is omitted, branch to end of script.
text   Replace the selected lines with text, which has each embedded newline preceded by a backslash.
d      Delete pattern space.  Start next cycle.
D      If pattern space contains no newline, start a normal new cycle as if the d command was issued.  Otherwise, delete text in the pattern space up to the first newline, and restart cycle with the resultant pattern space, without reading a new line of input.
h H    Copy/append pattern space to hold space.
g G    Copy/append hold space to pattern space.
l      List out the current line in a ``visually unambiguous'' form.
l width List out the current line in a ``visually unambiguous'' form, breaking it at width characters.  This is a GNU extension.
n N    Read/append the next line of input into the pattern space.
p      Print the current pattern space.
P      Print up to the first embedded newline of the current pattern space.
s/regexp/replacement/ Attempt to match regexp against the pattern space.  If successful, replace that portion matched with replacement.  The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
t label If a s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script.
T label If no s/// has done a successful substitution since the last input line was read and since the last t or T command, then branch to label; if label is omitted, branch to end of script.  This is a GNU extension.
w filename Write the current pattern space to filename.
W filename Write the first line of the current pattern space to filename. This is a GNU extension.
x      Exchange the contents of the hold and pattern spaces.
y/source/dest/ Transliterate the characters in the pattern space which appear in source to the corresponding character in dest.
Addresses Sed commands can be given with no addresses, in which case the command will be executed for all input lines; with one address, in which case the command will only be executed for input lines which match that address; or with two addresses, in which case the command will be executed for all input lines which match the inclusive range of lines starting from the first address and continuing to the second address.  Three things to note about address ranges: the syntax is addr1,addr2 (i.e., the addresses are separated by a comma); the line which addr1 matched will always be accepted, even if addr2 selects an earlier line; and if addr2 is a regexp, it will not be tested against the line that addr1 matched.
After the address (or address-range), and before the command, a !  may be inserted, which specifies that the command shall only be executed if the address (or address-range) does not match.
The following address types are supported:
number Match only the specified line number (which increments cumulatively across files, unless the -s option is specified on the command line).
first~step Match every step'th line starting with line first.  For example, ``sed -n 1~2p'' will print all the odd-numbered lines in the input stream, and the address 2~5 will match every fifth line, starting with the second.  first can be zero; in this case, sed operates as if it were equal to step.  (This is an extension.)
$      Match the last line.
/regexp/ Match lines matching the regular expression regexp.  Matching is performed on the current pattern space, which can be modified with commands such as ``s///''.
\cregexpc Match lines matching the regular expression regexp.  The c may be any character.
GNU sed also supports some special 2-address forms:
0,addr2 Start out in "matched first address" state, until addr2 is found. This is similar to 1,addr2, except that if addr2 matches the very first line of input the 0,addr2 form will be at the end of its range, whereas the 1,addr2 form will still be at the beginning of its range.  This works only when addr2 is a regular expression.
addr1,+N Will match addr1 and the N lines following addr1.
addr1,~N Will match addr1 and the lines following addr1 until the next line whose input line number is a multiple of N.
POSIX.2 BREs should be supported, but they aren't completely because of performance problems.  The \n sequence in a regular expression matches the newline character, and similarly for \a, \t, and other sequences. The -E option switches to using extended regular expressions instead; it has been supported for years by GNU sed, and is now included in POSIX.
E-mail bug reports to bug-sed@gnu.org.  Also, please include the output of ``sed --version'' in the body of your report if at all possible.
Written by Jay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering, and Assaf Gordon.
This sed program was built with SELinux support.  SELinux is enabled on this system.
awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, any of various books on sed, the sed FAQ (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.
The full documentation for sed is maintained as a Texinfo manual.  If the info and sed programs are properly installed at your site, the command
info sed
SSH-ADD(1)                 BSD General Commands Manual                SSH-ADD(1)
ssh-add — adds private key identities to the OpenSSH authentication agent
ssh-add [-cDdKkLlqvXx] [-E fingerprint_hash] [-S provider] [-t life] [file ...] ssh-add -s pkcs11 ssh-add -e pkcs11 ssh-add -T pubkey ...
ssh-add adds private key identities to the authentication agent, ssh-agent(1).  When run without arguments, it adds the files ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, and ~/.ssh/id_ed25519_sk.  After loading a private key, ssh-add will try to load corresponding certificate information from the filename obtained by appending -cert.pub to the name of the private key file.  Alternative file names can be given on the command line.
If any file requires a passphrase, ssh-add asks for the passphrase from the user.  The passphrase is read from the user's tty.  ssh-add retries the last passphrase if multiple identity files are given.
The authentication agent must be running and the SSH_AUTH_SOCK environment variable must contain the name of its socket for ssh-add to work.
-c      Indicates that added identities should be subject to confirmation before being used for authentication.  Confirmation is performed by ssh-askpass(1).  Successful confirmation is signaled by a zero exit status from ssh-askpass(1), rather than text entered into the requester.
-D      Deletes all identities from the agent.
-d      Instead of adding identities, removes identities from the agent. If ssh-add has been run without arguments, the keys for the default identities and their corresponding certificates will be removed. Otherwise, the argument list will be interpreted as a list of paths to public key files to specify keys and certificates to be removed from the agent.  If no public key is found at a given path, ssh-add will append .pub and retry.  If the argument list consists of “-” then ssh-add will read public keys to be removed from standard input.
-E fingerprint_hash Specifies the hash algorithm used when displaying key fingerprints. Valid options are: “md5” and “sha256”.  The default is “sha256”.
-e pkcs11 Remove keys provided by the PKCS#11 shared library pkcs11.
-K      Load resident keys from a FIDO authenticator.
-k      When loading keys into or deleting keys from the agent, process plain private keys only and skip certificates.
-L      Lists public key parameters of all identities currently represented by the agent.
-l      Lists fingerprints of all identities currently represented by the agent.
-q      Be quiet after a successful operation.
-S provider Specifies a path to a library that will be used when adding FIDO authenticator-hosted keys, overriding the default of using the internal USB HID support.
-s pkcs11 Add keys provided by the PKCS#11 shared library pkcs11.
-T pubkey ... Tests whether the private keys that correspond to the specified pubkey files are usable by performing sign and verify operations on each.
-t life Set a maximum lifetime when adding identities to an agent.  The lifetime may be specified in seconds or in a time format specified in sshd_config(5).
-v      Verbose mode.  Causes ssh-add to print debugging messages about its progress.  This is helpful in debugging problems.  Multiple -v options increase the verbosity.  The maximum is 3.
-X      Unlock the agent.
-x      Lock the agent with a password.
DISPLAY, SSH_ASKPASS and SSH_ASKPASS_REQUIRE If ssh-add needs a passphrase, it will read the passphrase from the current terminal if it was run from a terminal.  If ssh-add does not have a terminal associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the program specified by SSH_ASKPASS (by default “ssh-askpass”) and open an X11 window to read the passphrase.  This is particularly useful when calling ssh-add from a .xsession or related script.
SSH_ASKPASS_REQUIRE allows further control over the use of an askpass program.  If this variable is set to “never” then ssh-add will never attempt to use one.  If it is set to “prefer”, then ssh-add will prefer to use the askpass program instead of the TTY when requesting passwords.  Finally, if the variable is set to “force”, then the askpass program will be used for all passphrase input regardless of whether DISPLAY is set.
SSH_AUTH_SOCK Identifies the path of a UNIX-domain socket used to communicate with the agent.
SSH_SK_PROVIDER Specifies a path to a library that will be used when loading any FIDO authenticator-hosted keys, overriding the default of using the built-in USB HID support.
~/.ssh/id_dsa ~/.ssh/id_ecdsa ~/.ssh/id_ecdsa_sk ~/.ssh/id_ed25519 ~/.ssh/id_ed25519_sk ~/.ssh/id_rsa Contains the DSA, ECDSA, authenticator-hosted ECDSA, Ed25519, authenticator-hosted Ed25519 or RSA authentication identity of the user.
Identity files should not be readable by anyone but the user.  Note that ssh-add ignores identity files if they are accessible by others.
Exit status is 0 on success, 1 if the specified command fails, and 2 if ssh-add is unable to contact the authentication agent.
ssh(1), ssh-agent(1), ssh-askpass(1), ssh-keygen(1), sshd(8)
YES(1)                            User Commands                           YES(1)
yes - output a string repeatedly until killed
yes [STRING]... yes OPTION
Repeatedly output a line with all specified STRING(s), or 'y'.
Full documentation <https://www.gnu.org/software/coreutils/yes> or available locally via: info '(coreutils) yes invocation'
GO-VET(1)                    General Commands Manual                   GO-VET(1)
go-vet - report likely mistakes in packages
go vet [-n] [-x] [-vettool prog] [build flags] [vet flags] [packages]
Vet runs the Go vet command on the packages named by the import paths.
For more about vet and its flags, see 'go doc cmd/vet'. For more about specifying packages, see go-packages(7). For a list of checkers and their flags, see 'go tool vet help'. For details of a specific checker such as 'printf', see 'go tool vet help printf'.
-vettool=prog The -vettool=prog flag selects a different analysis tool with alternative or additional checks. For example, the 'shadow' analyzer can be built and run using these commands:
go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow go vet -vettool=$(which shadow)
The build flags supported by go vet are those that control package resolution and execution, such as -n, -x, -v, -tags, and -toolexec.  For more about these flags, see 'go help build'.
go-fmt(1), go-fix(1).
This manual page was written by Michael Stapelberg <stapelberg@debian.org> and is maintained by the Debian Go Compiler Team <team+go-compiler@tracker.debian.org> based on the output of 'go help vet' for the Debian project (and may be used by others).
E4DEFRAG(8)                  System Manager's Manual                 E4DEFRAG(8)
e4defrag - online defragmenter for ext4 file system
e4defrag [ -c ] [ -v ] target ...
e4defrag reduces fragmentation of extent based file. The file targeted by e4defrag is created on ext4 file system made with "-O extent" option (see mke2fs(8)).  The targeted file gets more contiguous blocks and improves the file access speed.
target is a regular file, a directory, or a device that is mounted as ext4 file system.  If target is a directory, e4defrag reduces fragmentation of all files in it. If target is a device, e4defrag gets the mount point of it and reduces fragmentation of all files in this mount point.
-c     Get a current fragmentation count and an ideal fragmentation count, and calculate fragmentation score based on them. By seeing this score, we can determine whether we should execute e4defrag to target.  When used with -v option, the current fragmentation count and the ideal fragmentation count are printed for each file.
Also this option outputs the average data size in one extent. If you see it, you'll find the file has ideal extents or not. Note that the maximum extent size is 131072KB in ext4 file system (if block size is 4KB).
If this option is specified, target is never defragmented.
-v     Print error messages and the fragmentation count before and after defrag for each file.
e4defrag does not support swap file, files in lost+found directory, and files allocated in indirect blocks. When target is a device or a mount point, e4defrag doesn't defragment files in mount point of other device.
It is safe to run e4defrag on a file while it is actively in use by another application.  Since the contents of file blocks are copied using the page cache, this can result in a performance slowdown to both e4defrag and the application due to contention over the system's memory and disk bandwidth.
If the file system's free space is fragmented, or if there is insufficient free space available, e4defrag may not be able to improve the file's fragmentation.
Non-privileged users can execute e4defrag to their own file, but the score is not printed if -c option is specified. Therefore, it is desirable to be executed by root user.
Written by Akira Fujita <a-fujita@rs.jp.nec.com> and Takashi Sato <t- sato@yk.jp.nec.com>.
mke2fs(8), mount(8).
GOOGLER(1)                        User Commands                       GOOGLER(1)
googler - Google from the command-line
googler [OPTIONS] [KEYWORD [KEYWORD ...]]
googler is a command-line tool to search Google (Web & News) from the terminal. Google site search works too. googler shows the title, URL and text context for each result. Results are fetched in pages. Next or previous page navigation is possible using keyboard shortcuts. Results are indexed and a result URL can be opened in a browser using the index number. There is no configuration file as aliases serve the same purpose for this utility. Supports sequential searches in a single instance.
* Google Search, Google Site Search, Google News * Fast and clean (no ads, stray URLs or clutter), custom color * Navigate result pages from omniprompt, open URLs in browser * Effortless keyword-based site search with googler @t add-on * Search and option completion scripts for Bash, Zsh and Fish * Fetch n results in a go, start at the n<sup>th</sup> result * Disable automatic spelling correction and search exact keywords * Specify duration, country/domain (default: worldwide/.com), language * Google keywords (e.g. filetype:mime, site:somesite.com) support * Open the first result directly in browser (as in I'm Feeling Lucky) * Non-stop searches: fire new searches at omniprompt without exiting * HTTPS proxy, User Agent, TLS 1.2 (default) support * Comprehensive documentation, man page with handy usage examples * Minimal dependencies
-s, --start=N Start at the Nth result.
-n, --count=N Show N results (default 10).
-N, --news Show results from news section.
-c, --tld=TLD Country-specific search with top-level domain .TLD, e.g., in for India.
-l, --lang=LANG Search for the language LANG, e.g., fi for Finnish.
-x, --exact Disable automatic spelling correction. Search exact keywords.
-C, --nocolor Disable color output.
--colors=COLORS Set output colors. Refer to the COLORS section below for details.
-j, --first, --lucky Open the first result in a web browser; implies --noprompt. Feeling Lucky?
-t, --time=dN Time limit search [h5 (5 hrs), d5 (5 days), w5 (5 weeks), m5 (5 months), y5 (5 years)].
-w, --site=SITE Search a site using Google.
--unfilter Do not omit similar results.
-p, --proxy=PROXY Tunnel traffic through an HTTP proxy. PROXY is of the form [http://][user:password@]proxyhost[:port]. The proxy server must support HTTP CONNECT tunneling and must not block port 443 for the relevant Google hosts. If a proxy is not explicitly given, the https_proxy environment variable (if available) is used instead.
--noua Disable user agent. Results are fetched faster.
--notweak Disable TCP optimizations. Negotiate Transport Layer Security protocol instead of forcing TLS 1.2 (on Python 3.4 and above). Should be used only in case of connection issues.
--json Output in JSON format; implies --noprompt.
--url-handler=UTIL Custom script or command-line utility to open urls with.
--show-browser-logs Do not suppress browser output when opening result in browser; that is, connect stdout and stderr of the browser to googler's stdout and stderr instead of /dev/null. By default, browser output is suppressed (due to certain graphical browsers spewing messages to console) unless the BROWSER environment variable is a known text-based browser: elinks, links, lynx, w3m or www-browser.
--np, --noprompt Perform search and exit; do not prompt for further interactions.
-u, --upgrade Perform in-place self-upgrade. By default, the latest stable version is used. However, the latest git master is used instead if --include-git is also supplied. This mechanism is not available on Windows (including Cygwin), and if you installed googler with a package manager, this mechanism may have been disabled by your packager at packaging or install time.
--include-git See --upgrade.
-v, --version Show version number and exit.
-d, --debug Enable debugging.
n, p   Fetch the next or previous set of search results.
index  Open the result corresponding to index in browser.
f      Jump to the first page.
o [index|range|a ...] Open space-separated result indices, numeric ranges (sitelinks unsupported in ranges) or all indices, if 'a' is specified, in the browser. Open the current search in the browser, if no arguments.
O [index|range|a ...] Works similar to key 'o', but tries to ignore text-based browsers (even if BROWSER is set) and open links in a GUI browser.
g keywords Initiate a new Google search for keywords with original options. This key should be used to search omniprompt keys (including itself) and indices.
c index Copy url to clipboard.
u      Toggle url expansion.
q, ^D, double Enter Exit googler.
?      Show omniprompt help.
*      Any other string initiates a new search with original options.
GOOGLER @T googler @t is a convenient add-on to Google Site Search with unique keywords. While googler has an integrated option to search a site, it could be simplified further with aliases. The file googler_at (https://github.com/jarun/googler/blob/master/auto- completion/googler_at/googler_at) contains a list of website search aliases. To source it, run:
source googler_at
. googler_at
With googler @t, the following command searches Wikipedia for hexspeak:
@w hexspeak
Other googler options can be combined. The shell can be configured to be source the file at start-up for further convenience.
All the aliases start with the @ symbol (hence the name googler @t) and there is minimum chance they will conflict with any shell commands. Users can add new aliases to the file.
googler allows you to customize the color scheme via a six-letter string, reminiscent of BSD LSCOLORS. The six letters represent the colors of
- indices - titles - URLs - metadata/publishing info (Google News only) - abstracts - prompts
respectively. The six-letter string is passed in either as the argument to the --colors option, or as the value of the environment variable GOOGLER_COLORS.
The default colors string is GKlgxy, which stands for
- bold bright cyan indices - bold bright green titles - bright yellow URLs - cyan metadata/publishing info - normal abstracts - reverse video prompts
BROWSER Overrides the default browser. Ref: http://docs.python.org/library/webbrowser.html
GOOGLER_COLORS Refer to the COLORS section.
DISABLE_PROMPT_COLOR Force a plain omniprompt if you are facing issues with colors at the prompt.
https_proxy Refer to the --proxy option.
DISABLE_URL_EXPANSION Show the domain names in search results instead of the expanded URL.
1.  Google hello world:
googler hello world
2.  Fetch 15 results updated within the last 14 months, starting from the 3rd result for the keywords jungle book in site imdb.com:
googler -n 15 -s 3 -t m14 -w imdb.com jungle book
3.  Read recent news on gadgets:
googler -N gadgets
4.  Fetch results on IPL cricket from Google India server in English:
googler -c in -l en IPL cricket
5.  Search quoted text:
googler it\'s a \"beautiful world\" in spring
6.  Search for a specific file type:
googler instrumental filetype:mp3
7.  Disable automatic spelling correction, e.g. fetch results for googler instead of google:
googler -x googler
8.  I'm feeling lucky search:
googler -j leather jackets
9.  Website specific search:
googler -w amazon.com -w ebay.com digital camera
Site specific search continues at omniprompt.
10. Alias to find definitions of words:
alias define='googler -n 2 define'
11. Look up n, p, o, O, q, g keywords or a result index at the omniprompt: as the omniprompt recognizes these keys or index strings as commands, you need to prefix them with g, e.g.,
g n g g keywords g 1
12. Input and output redirection:
googler -C hello world < input > output
Note that -C is required to avoid printing control characters (for colored output).
13. Pipe output:
googler -C hello world | tee output
14. Use a custom color scheme, e.g., one warm color scheme designed for Solarized Dark:
googler --colors bjdxxy google
GOOGLER_COLORS=bjdxxy googler google
15. Tunnel traffic through an HTTPS proxy, e.g., a local Privoxy instance listening on port 8118:
googler --proxy localhost:8118 google
By default the environment variable https_proxy is used, if defined.
16. Quote multiple search keywords to auto-complete (using completion script):
googler 'hello w<TAB>
Henri Hakkinen Arun Prakash Jana <engineerarun@gmail.com> Zhiming Wang <zmwangx@gmail.com>
https://github.com/jarun/googler
https://github.com/jarun/googler/issues
Copyright © 2008 Henri Hakkinen Copyright © 2015-2018 Arun Prakash Jana <engineerarun@gmail.com>
BTRFS-DEVICE(8)                   Btrfs Manual                   BTRFS-DEVICE(8)
btrfs-device - manage devices of btrfs filesystems
btrfs device <subcommand> <args>
The btrfs device command group is used to manage devices of the btrfs filesystems.
Btrfs filesystem can be created on top of single or multiple block devices. Data and metadata are organized in allocation profiles with various redundancy policies. There’s some similarity with traditional RAID levels, but this could be confusing to users familiar with the traditional meaning. Due to the similarity, the RAID terminology is widely used in the documentation. See mkfs.btrfs(8) for more details and the exact profile capabilities and constraints.
The device management works on a mounted filesystem. Devices can be added, removed or replaced, by commands provided by btrfs device and btrfs replace.
The profiles can be also changed, provided there’s enough workspace to do the conversion, using the btrfs balance command and namely the filter convert.
Type The block group profile type is the main distinction of the information stored on the block device. User data are called Data, the internal data structures managed by filesystem are Metadata and System.
Profile A profile describes an allocation policy based on the redundancy/replication constraints in connection with the number of devices. The profile applies to data and metadata block groups separately. Eg.  single, RAID1.
RAID level Where applicable, the level refers to a profile that matches constraints of the standard RAID levels. At the moment the supported ones are: RAID0, RAID1, RAID10, RAID5 and RAID6.
See the section TYPICAL USECASES for some examples.
add [-Kf] <device> [<device>...] <path> Add device(s) to the filesystem identified by <path>.
If applicable, a whole device discard (TRIM) operation is performed prior to adding the device. A device with existing filesystem detected by blkid(8) will prevent device addition and has to be forced. Alternatively the filesystem can be wiped from the device using eg. the wipefs(8) tool.
The operation is instant and does not affect existing data. The operation merely adds the device to the filesystem structures and creates some block groups headers.
-K|--nodiscard do not perform discard (TRIM) by default
-f|--force force overwrite of existing filesystem on the given disk(s)
remove [options] <device>|<devid> [<device>|<devid>...] <path> Remove device(s) from a filesystem identified by <path>
Device removal must satisfy the profile constraints, otherwise the command fails. The filesystem must be converted to profile(s) that would allow the removal. This can typically happen when going down from 2 devices to 1 and using the RAID1 profile. See the TYPICAL USECASES section below.
The operation can take long as it needs to move all data from the device.
It is possible to delete the device that was used to mount the filesystem. The device entry in the mount table will be replaced by another device name with the lowest device id.
If the filesystem is mounted in degraded mode (-o degraded), special term missing can be used for device. In that case, the first device that is described by the filesystem metadata, but not present at the mount time will be removed.
Note In most cases, there is only one missing device in degraded mode, otherwise mount fails. If there are two or more devices missing (e.g. possible in RAID6), you need specify missing as many times as the number of missing devices to remove all of them. Options
delete <device>|<devid> [<device>|<devid>...] <path> Alias of remove kept for backward compatibility
ready <device> Wait until all devices of a multiple-device filesystem are scanned and registered within the kernel module. This is to provide a way for automatic filesystem mounting tools to wait before the mount can start. The device scan is only one of the preconditions and the mount can fail for other reasons. Normal users usually do not need this command and may safely ignore it.
scan [options] [<device> [<device>...]] Scan devices for a btrfs filesystem and register them with the kernel module. This allows mounting multiple-device filesystem by specifying just one from the whole group.
If no devices are passed, all block devices that blkid reports to contain btrfs are scanned.
The options --all-devices or -d can be used as a fallback in case blkid is not available. If used, behavior is the same as if no devices are passed.
The command can be run repeatedly. Devices that have been already registered remain as such. Reloading the kernel module will drop this information. There’s an alternative way of mounting multiple-device filesystem without the need for prior scanning. See the mount option device.
-d|--all-devices Enumerate and register all devices, use as a fallback in case blkid is not available.
-u|--forget Unregister a given device or all stale devices if no path is given, the device must be unmounted otherwise it’s an error.
stats [options] <path>|<device> Read and print the device IO error statistics for all devices of the given filesystem identified by <path> or for a single <device>. The filesystem must be mounted. See section DEVICE STATS for more information about the reported statistics and the meaning.
-z|--reset Print the stats and reset the values to zero afterwards.
-c|--check Check if the stats are all zeros and return 0 if it is so. Set bit 6 of the return code if any of the statistics is no-zero. The error values is 65 if reading stats from at least one device failed, otherwise it’s 64.
usage [options] <path> [<path>...] Show detailed information about internal allocations on devices.
The level of detail can differ if the command is run under a regular or the root user (due to use of restricted ioctls). The first example below is for normal user (warning included) and the next one with root on the same filesystem:
WARNING: cannot read detailed chunk info, per-device usage will not be shown, run as root /dev/sdc1, ID: 1 Device size:           931.51GiB Device slack:              0.00B Unallocated:           931.51GiB
/dev/sdc1, ID: 1 Device size:           931.51GiB Device slack:              0.00B Data,single:           641.00GiB Data,RAID0/3:            1.00GiB Metadata,single:        19.00GiB System,single:          32.00MiB Unallocated:           271.48GiB
•   Device size — size of the device as seen by the filesystem (may be different than actual device size)
•   Device slack — portion of device not used by the filesystem but still available in the physical space provided by the device, eg. after a device shrink
•   Data,single, Metadata,single, System,single — in general, list of block group type (Data, Metadata, System) and profile (single, RAID1, ...) allocated on the device
•   Data,RAID0/3 — in particular, striped profiles RAID0/RAID10/RAID5/RAID6 with the number of devices on which the stripes are allocated, multiple occurences of the same profile can appear in case a new device has been added and all new available stripes have been used for writes
•   Unallocated — remaining space that the filesystem can still use for new block groups
STARTING WITH A SINGLE-DEVICE FILESYSTEM Assume we’ve created a filesystem on a block device /dev/sda with profile single/single (data/metadata), the device size is 50GiB and we’ve used the whole device for the filesystem. The mount point is /mnt.
The amount of data stored is 16GiB, metadata have allocated 2GiB.
ADD NEW DEVICE We want to increase the total size of the filesystem and keep the profiles. The size of the new device /dev/sdb is 100GiB.
$ btrfs device add /dev/sdb /mnt
The amount of free data space increases by less than 100GiB, some space is allocated for metadata.
CONVERT TO RAID1 Now we want to increase the redundancy level of both data and metadata, but we’ll do that in steps. Note, that the device sizes are not equal and we’ll use that to show the capabilities of split data/metadata and independent profiles.
The constraint for RAID1 gives us at most 50GiB of usable space and exactly 2 copies will be stored on the devices.
First we’ll convert the metadata. As the metadata occupy less than 50GiB and there’s enough workspace for the conversion process, we can do:
$ btrfs balance start -mconvert=raid1 /mnt
This operation can take a while, because all metadata have to be moved and all block pointers updated. Depending on the physical locations of the old and new blocks, the disk seeking is the key factor affecting performance.
You’ll note that the system block group has been also converted to RAID1, this normally happens as the system block group also holds metadata (the physical to logical mappings).
•   available data space decreased by 3GiB, usable roughly (50 - 3) + (100 - 3) = 144 GiB
•   metadata redundancy increased
IOW, the unequal device sizes allow for combined space for data yet improved redundancy for metadata. If we decide to increase redundancy of data as well, we’re going to lose 50GiB of the second device for obvious reasons.
$ btrfs balance start -dconvert=raid1 /mnt
The balance process needs some workspace (ie. a free device space without any data or metadata block groups) so the command could fail if there’s too much data or the block groups occupy the whole first device.
The device size of /dev/sdb as seen by the filesystem remains unchanged, but the logical space from 50-100GiB will be unused.
REMOVE DEVICE Device removal must satisfy the profile constraints, otherwise the command fails. For example:
$ btrfs device remove /dev/sda /mnt ERROR: error removing device '/dev/sda': unable to go below two devices on raid1
In order to remove a device, you need to convert the profile in this case:
$ btrfs balance start -mconvert=dup -dconvert=single /mnt $ btrfs device remove /dev/sda /mnt
The device stats keep persistent record of several error classes related to doing IO. The current values are printed at mount time and updated during filesystem lifetime or from a scrub run.
$ btrfs device stats /dev/sda3 [/dev/sda3].write_io_errs   0 [/dev/sda3].read_io_errs    0 [/dev/sda3].flush_io_errs   0 [/dev/sda3].corruption_errs 0 [/dev/sda3].generation_errs 0
write_io_errs Failed writes to the block devices, means that the layers beneath the filesystem were not able to satisfy the write request.