neulab/tldr huggingface dataset:
$ git rev-parse --symbolic-full-name @{upstream} refs/remotes/origin/master
$ git rev-parse --symbolic-full-name @{push} refs/remotes/myfork/mybranch
Note in the example that we set up a triangular workflow, where we pull from one location and push to another. In a non-triangular workflow, @{push} is the same as @{upstream}, and there is no need for it.
This suffix is also accepted when spelled in uppercase, and means the same thing no matter the case.
<rev>^[<n>], e.g. HEAD^, v1.5.1^0 A suffix ^ to a revision parameter means the first parent of that commit object.  ^<n> means the <n>th parent (i.e.  <rev>^ is equivalent to <rev>^1). As a special rule, <rev>^0 means the commit itself and is used when <rev> is the object name of a tag object that refers to a commit object.
<rev>~[<n>], e.g. HEAD~, master~3 A suffix ~ to a revision parameter means the first parent of that commit object. A suffix ~<n> to a revision parameter means the commit object that is the <n>th generation ancestor of the named commit object, following only the first parents. I.e.  <rev>~3 is equivalent to <rev>^^^ which is equivalent to <rev>^1^1^1. See below for an illustration of the usage of this form.
<rev>^{<type>}, e.g. v0.99.8^{commit} A suffix ^ followed by an object type name enclosed in brace pair means dereference the object at <rev> recursively until an object of type <type> is found or the object cannot be dereferenced anymore (in which case, barf). For example, if <rev> is a commit-ish, <rev>^{commit} describes the corresponding commit object. Similarly, if <rev> is a tree-ish, <rev>^{tree} describes the corresponding tree object.  <rev>^0 is a short-hand for <rev>^{commit}.
<rev>^{object} can be used to make sure <rev> names an object that exists, without requiring <rev> to be a tag, and without dereferencing <rev>; because a tag is already an object, it does not have to be dereferenced even once to get to an object.
<rev>^{tag} can be used to ensure that <rev> identifies an existing tag object.
<rev>^{}, e.g. v0.99.8^{} A suffix ^ followed by an empty brace pair means the object could be a tag, and dereference the tag recursively until a non-tag object is found.
<rev>^{/<text>}, e.g. HEAD^{/fix nasty bug} A suffix ^ to a revision parameter, followed by a brace pair that contains a text led by a slash, is the same as the :/fix nasty bug syntax below except that it returns the youngest matching commit which is reachable from the <rev> before ^.
:/<text>, e.g. :/fix nasty bug A colon, followed by a slash, followed by a text, names a commit whose commit message matches the specified regular expression. This name returns the youngest matching commit which is reachable from any ref, including HEAD. The regular expression can match any part of the commit message. To match messages starting with a string, one can use e.g.  :/^foo. The special sequence :/!  is reserved for modifiers to what is matched.  :/!-foo performs a negative match, while :/!!foo matches a literal !  character, followed by foo. Any other sequence beginning with :/!  is reserved for now. Depending on the given text, the shell’s word splitting rules might require additional quoting.
<rev>:<path>, e.g. HEAD:README, master:./README A suffix : followed by a path names the blob or tree at the given path in the tree-ish object named by the part before the colon. A path starting with ./ or ../ is relative to the current working directory. The given path will be converted to be relative to the working tree’s root directory. This is most useful to address a blob or tree from a commit or tree that has the same tree structure as the working tree.
:[<n>:]<path>, e.g. :0:README, :README A colon, optionally followed by a stage number (0 to 3) and a colon, followed by a path, names a blob object in the index at the given path. A missing stage number (and the colon that follows it) names a stage 0 entry. During a merge, stage 1 is the common ancestor, stage 2 is the target branch’s version (typically the current branch), and stage 3 is the version from the branch which is being merged.
Here is an illustration, by Jon Loeliger. Both commit nodes B and C are parents of commit node A. Parent commits are ordered left-to-right.
G   H   I   J \ /     \ / D   E   F \  |  / \ \ | /   | \|/    | B     C \   / \ / A
A =      = A^0 B = A^   = A^1     = A~1 C =      = A^2 D = A^^  = A^1^1   = A~2 E = B^2  = A^^2 F = B^3  = A^^3 G = A^^^ = A^1^1^1 = A~3 H = D^2  = B^^2    = A^^^2  = A~2^2 I = F^   = B^3^    = A^^3^ J = F^2  = B^3^2   = A^^3^2
History traversing commands such as git log operate on a set of commits, not just a single commit.
For these commands, specifying a single revision, using the notation described in the previous section, means the set of commits reachable from the given commit.
Specifying several revisions means the set of commits reachable from any of the given commits.
A commit’s reachable set is the commit itself and the commits in its ancestry chain.
There are several notations to specify a set of connected commits (called a "revision range"), illustrated below.
Commit Exclusions ^<rev> (caret) Notation To exclude commits reachable from a commit, a prefix ^ notation is used. E.g.  ^r1 r2 means commits reachable from r2 but exclude the ones reachable from r1 (i.e.  r1 and its ancestors).
Dotted Range Notations The .. (two-dot) Range Notation The ^r1 r2 set operation appears so often that there is a shorthand for it. When you have two commits r1 and r2 (named according to the syntax explained in SPECIFYING REVISIONS above), you can ask for commits that are reachable from r2 excluding those that are reachable from r1 by ^r1 r2 and it can be written as r1..r2.
The ... (three-dot) Symmetric Difference Notation A similar notation r1...r2 is called symmetric difference of r1 and r2 and is defined as r1 r2 --not $(git merge-base --all r1 r2). It is the set of commits that are reachable from either one of r1 (left side) or r2 (right side) but not from both.
In these two shorthand notations, you can omit one end and let it default to HEAD. For example, origin.. is a shorthand for origin..HEAD and asks "What did I do since I forked from the origin branch?" Similarly, ..origin is a shorthand for HEAD..origin and asks "What did the origin do since I forked from them?" Note that .. would mean HEAD..HEAD which is an empty range that is both reachable and unreachable from HEAD.
Commands that are specifically designed to take two distinct ranges (e.g. "git range-diff R1 R2" to compare two ranges) do exist, but they are exceptions. Unless otherwise noted, all "git" commands that operate on a set of commits work on a single revision range. In other words, writing two "two-dot range notation" next to each other, e.g.
$ git log A..B C..D
does not specify two revision ranges for most commands. Instead it will name a single connected set of commits, i.e. those that are reachable from either B or D but are reachable from neither A or C. In a linear history like this:
---A---B---o---o---C---D
because A and B are reachable from C, the revision range specified by these two dotted ranges is a single commit D.
Other <rev>^ Parent Shorthand Notations Three other shorthands exist, particularly useful for merge commits, for naming a set that is formed by a commit and its parent commits.
The r1^@ notation means all parents of r1.
The r1^! notation includes commit r1 but excludes all of its parents. By itself, this notation denotes the single commit r1.
The <rev>^-[<n>] notation includes <rev> but excludes the <n>th parent (i.e. a shorthand for <rev>^<n>..<rev>), with <n> = 1 if not given. This is typically useful for merge commits where you can just pass <commit>^- to get all the commits in the branch that was merged in merge commit <commit> (including <commit> itself).
While <rev>^<n> was about specifying a single commit parent, these three notations also consider its parents. For example you can say HEAD^2^@, however you cannot say HEAD^@^2.
<rev> Include commits that are reachable from <rev> (i.e. <rev> and its ancestors).
^<rev> Exclude commits that are reachable from <rev> (i.e. <rev> and its ancestors).
<rev1>..<rev2> Include commits that are reachable from <rev2> but exclude those that are reachable from <rev1>. When either <rev1> or <rev2> is omitted, it defaults to HEAD.
<rev1>...<rev2> Include commits that are reachable from either <rev1> or <rev2> but exclude those that are reachable from both. When either <rev1> or <rev2> is omitted, it defaults to HEAD.
<rev>^@, e.g. HEAD^@ A suffix ^ followed by an at sign is the same as listing all parents of <rev> (meaning, include anything reachable from its parents, but not the commit itself).
<rev>^!, e.g. HEAD^! A suffix ^ followed by an exclamation mark is the same as giving commit <rev> and then all its parents prefixed with ^ to exclude them (and their ancestors).
<rev>^-<n>, e.g. HEAD^-, HEAD^-2 Equivalent to <rev>^<n>..<rev>, with <n> = 1 if not given.
Here are a handful of examples using the Loeliger illustration above, with each step in the notation’s expansion and selection carefully spelt out:
Args   Expanded arguments    Selected commits D                            G H D D F                          G H I J D F ^G D                         H D ^D B                         E I J F B ^D B C                       E I J F B C C                            I J F C B..C   = ^B C                C B...C  = B ^F C              G H D E B C B^-    = B^..B = ^B^1 B              E I J F B C^@    = C^1 = F                   I J F B^@    = B^1 B^2 B^3 = D E F               D G H E F I J C^!    = C ^C^@ = C ^C^1 = C ^F                C B^!    = B ^B^@ = B ^B^1 ^B^2 ^B^3 = B ^D ^E ^F          B F^! D  = F ^I ^J D           G H D F
In --parseopt mode, git rev-parse helps massaging options to bring to shell scripts the same facilities C builtins have. It works as an option normalizer (e.g. splits single switches aggregate values), a bit like getopt(1) does.
It takes on the standard input the specification of the options to parse and understand, and echoes on the standard output a string suitable for sh(1) eval to replace the arguments with normalized ones. In case of error, it outputs usage on the standard error stream, and exits with code 129.
Note: Make sure you quote the result when passing it to eval. See below for an example.
Input Format git rev-parse --parseopt input format is fully text based. It has two parts, separated by a line that contains only --. The lines before the separator (should be one or more) are used for the usage. The lines after the separator describe the options.
Each line of options has this format:
<opt-spec><flags>*<arg-hint>? SP+ help LF
<opt-spec> its format is the short option character, then the long option name separated by a comma. Both parts are not required, though at least one is necessary. May not contain any of the <flags> characters. h,help, dry-run and f are examples of correct <opt-spec>.
<flags> <flags> are of *, =, ?  or !.
•   Use = if the option takes an argument.
•   Use ?  to mean that the option takes an optional argument. You probably want to use the --stuck-long mode to be able to unambiguously parse the optional argument.
•   Use * to mean that this option should not be listed in the usage generated for the -h argument. It’s shown for --help-all as documented in gitcli(7).
•   Use !  to not make the corresponding negated long option available.
<arg-hint> <arg-hint>, if specified, is used as a name of the argument in the help output, for options that take arguments.  <arg-hint> is terminated by the first whitespace. It is customary to use a dash to separate words in a multi-word argument hint.
The remainder of the line, after stripping the spaces, is used as the help associated to the option.
Blank lines are ignored, and lines that don’t match this specification are used as option group headers (start the line with a space to create such lines on purpose).
Example OPTS_SPEC="\ some-command [<options>] <args>...
some-command does foo and bar! -- h,help    show the help
foo       some nifty option --foo bar=      some cool option --bar with an argument baz=arg   another cool option --baz with a named argument qux?path  qux may take a path argument but has meaning by itself
An option group Header C?        option C with an optional argument"
eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
Usage text When "$@" is -h or --help in the above example, the following usage text would be shown:
usage: some-command [<options>] <args>...
some-command does foo and bar!
-h, --help            show the help --foo                 some nifty option --foo --bar ...             some cool option --bar with an argument --baz <arg>           another cool option --baz with a named argument --qux[=<path>]        qux may take a path argument but has meaning by itself
An option group Header -C[...]               option C with an optional argument
SQ-QUOTE In --sq-quote mode, git rev-parse echoes on the standard output a single line suitable for sh(1) eval. This line is made by normalizing the arguments following --sq-quote. Nothing other than quoting the arguments is done.
If you want command input to still be interpreted as usual by git rev-parse before the output is shell quoted, see the --sq option.
Example $ cat >your-git-script.sh <<\EOF #!/bin/sh args=$(git rev-parse --sq-quote "$@")   # quote user-supplied arguments command="git frotz -n24 $args"          # and use it inside a handcrafted # command line eval "$command" EOF
$ sh your-git-script.sh "a b'c"
•   Print the object name of the current commit:
$ git rev-parse --verify HEAD
•   Print the commit object name from the revision in the $REV shell variable:
$ git rev-parse --verify --end-of-options $REV^{commit}
This will error out if $REV is empty or not a valid revision.
•   Similar to above:
$ git rev-parse --default master --verify --end-of-options $REV
but if $REV is empty, the commit object name from master will be printed.
UMOUNT(8)                     System Administration                    UMOUNT(8)
umount - unmount filesystems
umount -a [-dflnrv] [-t fstype] [-O option...]
umount [-dflnrv] {directory|device}
umount -h|-V
The umount command detaches the mentioned filesystem(s) from the file hierarchy. A filesystem is specified by giving the directory where it has been mounted. Giving the special device on which the filesystem lives may also work, but is obsolete, mainly because it will fail in case this device was mounted on more than one directory.
Note that a filesystem cannot be unmounted when it is 'busy' - for example, when there are open files on it, or when some process has its working directory there, or when a swap file on it is in use. The offending process could even be umount itself - it opens libc, and libc in its turn may open for example locale files. A lazy unmount avoids this problem, but it may introduce other issues. See --lazy description below.
-a, --all All of the filesystems described in /proc/self/mountinfo (or in deprecated /etc/mtab) are unmounted, except the proc, devfs, devpts, sysfs, rpc_pipefs and nfsd filesystems. This list of the filesystems may be replaced by --types umount option.
-A, --all-targets Unmount all mountpoints in the current mount namespace for the specified filesystem. The filesystem can be specified by one of the mountpoints or the device name (or UUID, etc.). When this option is used together with --recursive, then all nested mounts within the filesystem are recursively unmounted. This option is only supported on systems where /etc/mtab is a symlink to /proc/mounts.
-c, --no-canonicalize Do not canonicalize paths. The paths canonicalization is based on stat(2) and readlink(2) system calls. These system calls may hang in some cases (for example on NFS if server is not available). The option has to be used with canonical path to the mount point.
This option is silently ignored by umount for non-root users.
For more details about this option see the mount(8) man page. Note that umount does not pass this option to the /sbin/umount.type helpers.
-d, --detach-loop When the unmounted device was a loop device, also free this loop device. This option is unnecessary for devices initialized by mount(8), in this case "autoclear" functionality is enabled by default.
--fake Causes everything to be done except for the actual system call or umount helper execution; this 'fakes' unmounting the filesystem. It can be used to remove entries from the deprecated /etc/mtab that were unmounted earlier with the -n option.
-f, --force Force an unmount (in case of an unreachable NFS system).
Note that this option does not guarantee that umount command does not hang. It’s strongly recommended to use absolute paths without symlinks to avoid unwanted readlink and stat system calls on unreachable NFS in umount.
-i, --internal-only Do not call the /sbin/umount.filesystem helper even if it exists. By default such a helper program is called if it exists.
-l, --lazy Lazy unmount. Detach the filesystem from the file hierarchy now, and clean up all references to this filesystem as soon as it is not busy anymore.
A system reboot would be expected in near future if you’re going to use this option for network filesystem or local filesystem with submounts. The recommended use-case for umount -l is to prevent hangs on shutdown due to an unreachable network share where a normal umount will hang due to a downed server or a network partition. Remounts of the share will not be possible.
-N, --namespace ns Perform umount in the mount namespace specified by ns. ns is either PID of process running in that namespace or special file representing that namespace.
umount switches to the namespace when it reads /etc/fstab, writes /etc/mtab (or writes to /run/mount) and calls umount(2) system call, otherwise it runs in the original namespace. It means that the target mount namespace does not have to contain any libraries or other requirements necessary to execute umount(2) command.
See mount_namespaces(7) for more information.
-n, --no-mtab Unmount without writing in /etc/mtab.
-O, --test-opts option... Unmount only the filesystems that have the specified option set in /etc/fstab. More than one option may be specified in a comma-separated list. Each option can be prefixed with no to indicate that no action should be taken for this option.
-q, --quiet Suppress "not mounted" error messages.
-R, --recursive Recursively unmount each specified directory. Recursion for each directory will stop if any unmount operation in the chain fails for any reason. The relationship between mountpoints is determined by /proc/self/mountinfo entries. The filesystem must be specified by mountpoint path; a recursive unmount by device name (or UUID) is unsupported. Since version 2.37 it umounts also all over-mounted filesystems (more filesystems on the same mountpoint).
-r, --read-only When an unmount fails, try to remount the filesystem read-only.
-t, --types type... Indicate that the actions should only be taken on filesystems of the specified type. More than one type may be specified in a comma-separated list. The list of filesystem types can be prefixed with no to indicate that no action should be taken for all of the mentioned types. Note that umount reads information about mounted filesystems from kernel (/proc/mounts) and filesystem names may be different than filesystem names used in the /etc/fstab (e.g., "nfs4" vs. "nfs").
-v, --verbose Verbose mode.
NON-SUPERUSER UMOUNTS Normally, only the superuser can umount filesystems. However, when fstab contains the user option on a line, anybody can umount the corresponding filesystem. For more details see mount(8) man page.
Since version 2.34 the umount command can be used to perform umount operation also for fuse filesystems if kernel mount table contains user’s ID. In this case fstab user= mount option is not required.
Since version 2.35 umount command does not exit when user permissions are inadequate by internal libmount security rules. It drops suid permissions and continue as regular non-root user. This can be used to support use-cases where root permissions are not necessary (e.g., fuse filesystems, user namespaces, etc).
The umount command will automatically detach loop device previously initialized by mount(8) command independently of /etc/mtab.
In this case the device is initialized with "autoclear" flag (see losetup(8) output for more details), otherwise it’s necessary to use the option --detach-loop or call losetup -d <device>. The autoclear feature is supported since Linux 2.6.25.
The syntax of external unmount helpers is:
umount.suffix {directory|device} [-flnrv] [-N namespace] [-t type.subtype]
where suffix is the filesystem type (or the value from a uhelper= or helper= marker in the mtab file). The -t option can be used for filesystems that have subtype support. For example:
umount.fuse -t fuse.sshfs
A uhelper=something marker (unprivileged helper) can appear in the /etc/mtab file when ordinary users need to be able to unmount a mountpoint that is not defined in /etc/fstab (for example for a device that was mounted by udisks(1)).
A helper=type marker in the mtab file will redirect all unmount requests to the /sbin/umount.type helper independently of UID.
Note that /etc/mtab is currently deprecated and helper= and other userspace mount options are maintained by libmount.
LIBMOUNT_FSTAB=<path> overrides the default location of the fstab file (ignored for suid)
LIBMOUNT_MTAB=<path> overrides the default location of the mtab file (ignored for suid)
LIBMOUNT_DEBUG=all enables libmount debug output
/etc/mtab table of mounted filesystems (deprecated and usually replaced by symlink to /proc/mounts)
/etc/fstab table of known filesystems
/proc/self/mountinfo table of mounted filesystems generated by kernel.
A umount command appeared in Version 6 AT&T UNIX.
umount(2), losetup(8), mount_namespaces(7), mount(8)
The umount command is part of the util-linux package which can be downloaded from Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.
OC(1)                               June 2016                              OC(1)
oc - Command line tools for managing applications
oc [OPTIONS]
OpenShift Client
This client helps you develop, build, deploy, and run your applications on any OpenShift or Kubernetes compatible platform. It also includes the administrative commands for managing a cluster under the 'adm' subcommand.
--allow_verification_with_non_compliant_keys=false Allow a SignatureVerifier to use keys which are technically non-compliant with RFC6962.
--alsologtostderr=false log to standard error as well as files
--application_metrics_count_limit=100 Max number of application metrics to store (per container)
--as="" Username to impersonate for the operation
--as-group=[] Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--azure-container-registry-config="" Path to the file containing Azure container registry configuration information.
--boot_id_file="/proc/sys/kernel/random/boot_id" Comma-separated list of files to check for boot-id. Use the first one that exists.
--cache-dir="/builddir/.kube/http-cache" Default HTTP cache directory
--certificate-authority="" Path to a cert file for the certificate authority
--client-certificate="" Path to a client certificate file for TLS
--client-key="" Path to a client key file for TLS
--cloud-provider-gce-lb-src-cidrs=130.211.0.0/22,209.85.152.0/22,209.85.204.0/22,35.191.0.0/16 CIDRs opened in GCE firewall for LB traffic proxy  health checks
--cluster="" The name of the kubeconfig cluster to use
--container_hints="/etc/cadvisor/container_hints.json" location of the container hints file
--containerd="unix:///var/run/containerd.sock" containerd endpoint
--context="" The name of the kubeconfig context to use
--default-not-ready-toleration-seconds=300 Indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration.
--default-unreachable-toleration-seconds=300 Indicates the tolerationSeconds of the toleration for unreachable:NoExecute that is added by default to every pod that does not already have such a toleration.
--docker="unix:///var/run/docker.sock" docker endpoint
--docker-tls=false use TLS to connect to docker
--docker-tls-ca="ca.pem" path to trusted CA
--docker-tls-cert="cert.pem" path to client certificate
--docker-tls-key="key.pem" path to private key
--docker_env_metadata_whitelist="" a comma-separated list of environment variable keys that needs to be collected for docker containers
--docker_only=false Only report docker containers in addition to root stats
--docker_root="/var/lib/docker" DEPRECATED: docker root is read from docker info (this is a fallback, default: /var/lib/docker)
--enable_load_reader=false Whether to enable cpu load reader
--event_storage_age_limit="default=24h" Max length of time for which to store events (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is a duration. Default is applied to all non-specified event types
--event_storage_event_limit="default=100000" Max number of events to store (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is an integer. Default is applied to all non-specified event types
--global_housekeeping_interval=0 Interval between global housekeepings
--housekeeping_interval=0 Interval between container housekeepings
--insecure-skip-tls-verify=false If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig="" Path to the kubeconfig file to use for CLI requests.
--log-flush-frequency=0 Maximum number of seconds between log flushes
--log_backtrace_at=:0 when logging hits line file:N, emit a stack trace
--log_cadvisor_usage=false Whether to log the usage of the cAdvisor container
--log_dir="" If non-empty, write log files in this directory
--logtostderr=true log to standard error instead of files
--machine_id_file="/etc/machine-id,/var/lib/dbus/machine-id" Comma-separated list of files to check for machine-id. Use the first one that exists.
--match-server-version=false Require server version to match client version
-n, --namespace="" If present, the namespace scope for this CLI request
--request-timeout="0" The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests.
-s, --server="" The address and port of the Kubernetes API server
--stderrthreshold=2 logs at or above this threshold go to stderr
--storage_driver_buffer_duration=0 Writes in the storage driver will be buffered for this duration, and committed to the non memory backends as a single transaction
--storage_driver_db="cadvisor" database name
--storage_driver_host="localhost:8086" database host:port
--storage_driver_password="root" database password
--storage_driver_secure=false use secure connection with database
--storage_driver_table="stats" table name
--storage_driver_user="root" database username
--token="" Bearer token for authentication to the API server
--user="" The name of the kubeconfig user to use
-v, --v=0 log level for V logs
--version=false Print version information and quit
--vmodule= comma-separated list of pattern=N settings for file-filtered logging
oc-adm(1), oc-annotate(1), oc-api-resources(1), oc-api-versions(1), oc-apply(1), oc-attach(1), oc-auth(1), oc-autoscale(1), oc-build-logs(1), oc-cancel-build(1), oc-cluster(1), oc-completion(1), oc-config(1), oc-convert(1), oc-cp(1), oc-create(1), oc-debug(1), oc-delete(1), oc-describe(1), oc-edit(1), oc-ex(1), oc-exec(1), oc-explain(1), oc-export(1), oc-expose(1), oc-extract(1), oc-get(1), oc-idle(1), oc-image(1), oc-import(1), oc-import-image(1), oc-label(1), oc-login(1), oc-logout(1), oc-logs(1), oc-new-app(1), oc-new-build(1), oc-new-project(1), oc-observe(1), oc-options(1), oc-patch(1), oc-plugin(1), oc-policy(1), oc-port-forward(1), oc-process(1), oc-project(1), oc-projects(1), oc-proxy(1), oc-registry(1), oc-replace(1), oc-rollback(1), oc-rollout(1), oc-rsh(1), oc-rsync(1), oc-run(1), oc-scale(1), oc-secrets(1), oc-serviceaccounts(1), oc-set(1), oc-start-build(1), oc-status(1), oc-tag(1), oc-types(1), oc-version(1), oc-wait(1), oc-whoami(1),
June 2016, Ported from the Kubernetes man-doc generator
ASCIINEMA(1)                        asciinema                       ASCIINEMA(1)
asciinema - terminal session recorder
asciinema --version asciinema command [options] [args]
asciinema lets you easily record terminal sessions and replay them in a terminal as well as in a web browser.
asciinema is composed of multiple commands, similar to git, apt-get or brew.
When you run asciinema with no arguments help message is displayed, listing all available commands with their options.
rec [filename] Record terminal session.
By running asciinema rec [filename] you start a new recording session. The command (process) that is recorded can be specified with -c option (see below), and defaults to $SHELL which is what you want in most cases.
Recording finishes when you exit the shell (hit Ctrl+D or type exit).  If the recorded process is not a shell then recording finishes when the process exits.
If the filename argument is omitted then (after asking for confirmation) the resulting asciicast is uploaded to asciinema-server (https://github.com/asciinema/asciinema-server) (by default to asciinema.org), where it can be watched and shared.
If the filename argument is given then the resulting recording (called asciicast (doc/asciicast-v2.md)) is saved to a local file.  It can later be replayed with asciinema play <filename> and/or uploaded to asciinema server with asciinema upload <filename>.
ASCIINEMA_REC=1 is added to recorded process environment variables.  This can be used by your shell's config file (.bashrc, .zshrc) to alter the prompt or play a sound when the shell is being recorded.
Available options:
--stdin Enable stdin (keyboard) recording (see below)
--append Append to existing recording
--raw  Save raw STDOUT output, without timing information or other metadata
--overwrite Overwrite the recording if it already exists
-c, --command=<command> Specify command to record, defaults to $SHELL
-e, --env=<var-names> List of environment variables to capture, defaults to SHELL,TERM
-t, --title=<title> Specify the title of the asciicast
-i, --idle-time-limit=<sec> Limit recorded terminal inactivity to max <sec> seconds
-y, --yes Answer “yes” to all prompts (e.g. upload confirmation)
-q, --quiet Be quiet, suppress all notices/warnings (implies -y)
Stdin recording allows for capturing of all characters typed in by the user in the currently recorded shell.  This may be used by a player (e.g. asciinema-player (https://github.com/asciinema/asciinema-player)) to display pressed keys.  Because it's basically a key-logging (scoped to a single shell instance), it's disabled by default, and has to be explicitly enabled via –stdin option.
play <filename> Replay recorded asciicast in a terminal.
This command replays given asciicast (as recorded by rec command) directly in your terminal.
Following keyboard shortcuts are available:
Space - toggle pause, . - step through a recording a frame at a time (when paused), Ctrl+C - exit.
Playing from a local file:
asciinema play /path/to/asciicast.cast
Playing from HTTP(S) URL:
asciinema play https://asciinema.org/a/22124.cast asciinema play http://example.com/demo.cast
Playing from asciicast page URL (requires <link rel="alternate" type="application/x-asciicast" href="/my/ascii.cast"> in page's HTML):
asciinema play https://asciinema.org/a/22124 asciinema play http://example.com/blog/post.html
Playing from stdin:
cat /path/to/asciicast.cast | asciinema play - ssh user@host cat asciicast.cast | asciinema play -
Playing from IPFS:
asciinema play dweb:/ipfs/QmNe7FsYaHc9SaDEAEXbaagAzNw9cH7YbzN4xV7jV1MCzK/ascii.cast
-i, --idle-time-limit=<sec> Limit replayed terminal inactivity to max <sec> seconds
-s, --speed=<factor> Playback speed (can be fractional)
cat <filename> Print full output of recorded asciicast to a terminal.
While asciinema play  replays the recorded session using timing information saved in the asciicast, asciinema cat  dumps the full output (including all escape sequences) to a terminal immediately.
asciinema cat existing.cast >output.txt gives the same result as recording via asciinema rec --raw output.txt.
upload Upload recorded asciicast to asciinema.org site.
This command uploads given asciicast (recorded by rec command) to asciinema.org, where it can be watched and shared.
asciinema rec demo.cast + asciinema play demo.cast + asciinema upload demo.cast is a nice combo if you want to review an asciicast before publishing it on asciinema.org.
auth Link your install ID with your asciinema.org user account.
If you want to manage your recordings (change title/theme, delete) at asciinema.org you need to link your “install ID” with asciinema.org user account.
This command displays the URL to open in a web browser to do that.  You may be asked to log in first.
Install ID is a random ID (UUID v4 (https://en.wikipedia.org/wiki/Universally_unique_identifier)) generated locally when you run asciinema for the first time, and saved at $HOME/.config/asciinema/install-id.  It's purpose is to connect local machine with uploaded recordings, so they can later be associated with asciinema.org account.  This way we decouple uploading from account creation, allowing them to happen in any order.
Note: A new install ID is generated on each machine and system user account you use asciinema on, so in order to keep all recordings under a single asciinema.org account you need to run asciinema auth on all of those machines.
Note: asciinema versions prior to 2.0 confusingly referred to install ID as “API token”.
Record your first session:
asciinema rec first.cast
Now replay it with double speed:
asciinema play -s 2 first.cast
Or with normal speed but with idle time limited to 2 seconds:
asciinema play -i 2 first.cast
You can pass -i 2 to asciinema rec as well, to set it permanently on a recording.  Idle time limiting makes the recordings much more interesting to watch, try it.
If you want to watch and share it on the web, upload it:
asciinema upload first.cast
The above uploads it to <https://asciinema.org>, which is a default asciinema-server (<https://github.com/asciinema/asciinema-server>) instance, and prints a secret link you can use to watch your recording in a web browser.
You can record and upload in one step by omitting the filename:
asciinema rec
You'll be asked to confirm the upload when the recording is done, so nothing is sent anywhere without your consent.
ASCIINEMA_API_URL This variable allows overriding asciinema-server URL (which defaults to https://asciinema.org) in case you're running your own asciinema-server instance.
ASCIINEMA_CONFIG_HOME This variable allows overriding config directory location. Default location is $XDG_CONFIG_HOME/asciinema (when $XDG_CONFIG_HOME is set) or $HOME/.config/asciinema.
See GitHub Issues: <https://github.com/asciinema/asciinema/issues>
asciinema's lead developer is Marcin Kulik.
For a list of all contributors look here: <https://github.com/asciinema/asciinema/contributors>
This Manual Page was written by Marcin Kulik with help from Kurt Pfeifle.
IP-ADDRESS(8)                         Linux                        IP-ADDRESS(8)
ip-address - protocol address management
ip [ OPTIONS ] address  { COMMAND | help }
ip address { add | change | replace } IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ]
ip address del IFADDR dev IFNAME [ mngtmpaddr ]
ip address { save | flush } [ dev IFNAME ] [ scope SCOPE-ID ] [ metric METRIC ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [ up ]
ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG- LIST ] [ label PATTERN ] [ master DEVICE ] [ type TYPE ] [ vrf NAME ] [ up ] ]
ip address { showdump | restore }
IFADDR := PREFIX | ADDR peer PREFIX [ broadcast ADDR ] [ anycast ADDR ] [ label LABEL ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG := [ [-]permanent | [-]dynamic | [-]secondary | [-]primary | [-]tentative | [-]deprecated | [-]dadfailed | [-]temporary | CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG := [ home | mngtmpaddr | nodad | optimstic | noprefixroute | autojoin ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := [ forever | SECONDS ]
TYPE := [ bridge | bridge_slave | bond | bond_slave | can | dummy | hsr | ifb | ipoib | macvlan | macvtap | vcan | veth | vlan | vxlan | ip6tnl | ipip | sit | gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan | vti | vrf | nlmon | ipvlan | lowpan | geneve | macsec ]
The address is a protocol (IPv4 or IPv6) address attached to a network device. Each device must have at least one address to use the corresponding protocol. It is possible to have several different addresses attached to one device. These addresses are not discriminated, so that the term alias is not quite appropriate for them and we do not use it in this document.
The ip address command displays addresses and their properties, adds new addresses and deletes old ones.
ip address add - add new protocol address. dev IFNAME the name of the device to add the address to.
local ADDRESS (default) the address of the interface. The format of the address depends on the protocol. It is a dotted quad for IP and a sequence of hexadecimal halfwords separated by colons for IPv6. The ADDRESS may be followed by a slash and a decimal number which encodes the network prefix length.
peer ADDRESS the address of the remote endpoint for pointopoint interfaces. Again, the ADDRESS may be followed by a slash and a decimal number, encoding the network prefix length. If a peer address is specified, the local address cannot have a prefix length. The network prefix is associated with the peer rather than with the local address.
broadcast ADDRESS the broadcast address on the interface.
It is possible to use the special symbols '+' and '-' instead of the broadcast address. In this case, the broadcast address is derived by setting/resetting the host bits of the interface prefix.
label LABEL Each address may be tagged with a label string.  In order to preserve compatibility with Linux-2.0 net aliases, this string must coincide with the name of the device or must be prefixed with the device name followed by colon.  The maximum allowed total length of label is 15 characters.
scope SCOPE_VALUE the scope of the area where this address is valid.  The available scopes are listed in file /etc/iproute2/rt_scopes.  Predefined scope values are:
global - the address is globally valid.
site - (IPv6 only, deprecated) the address is site local, i.e. it is valid inside this site.
link - the address is link local, i.e. it is valid only on this device.
host - the address is valid only inside this host.
metric NUMBER priority of prefix route associated with address.
valid_lft LFT the valid lifetime of this address; see section 5.5.4 of RFC 4862. When it expires, the address is removed by the kernel.  Defaults to forever.
preferred_lft LFT the preferred lifetime of this address; see section 5.5.4 of RFC 4862. When it expires, the address is no longer used for new outgoing connections. Defaults to forever.
home   (IPv6 only) designates this address the "home address" as defined in RFC 6275.
mngtmpaddr (IPv6 only) make the kernel manage temporary addresses created from this one as template on behalf of Privacy Extensions (RFC3041). For this to become active, the use_tempaddr sysctl setting has to be set to a value greater than zero.  The given address needs to have a prefix length of 64. This flag allows to use privacy extensions in a manually configured network, just like if stateless auto-configuration was active.
nodad  (IPv6 only) do not perform Duplicate Address Detection (RFC 4862) when adding this address.
optimistic (IPv6 only) When performing Duplicate Address Detection, use the RFC 4429 optimistic variant.
noprefixroute Do not automatically create a route for the network prefix of the added address, and don't search for one to delete when removing the address. Changing an address to add this flag will remove the automatically added prefix route, changing it to remove this flag will create the prefix route automatically.
autojoin Joining multicast groups on Ethernet level via ip maddr command does not work if connected to an Ethernet switch that does IGMP snooping since the switch would not replicate multicast packets on ports that did not have IGMP reports for the multicast addresses.
Linux VXLAN interfaces created via ip link add vxlan have the group option that enables them to do the required join.
Using the autojoin flag when adding a multicast address enables similar functionality for Openvswitch VXLAN interfaces as well as other tunneling mechanisms that need to receive multicast traffic.
ip address delete - delete protocol address Arguments: coincide with the arguments of ip addr add.  The device name is a required argument. The rest are optional.  If no arguments are given, the first address is deleted.
ip address show - look at protocol addresses dev IFNAME (default) name of device.
scope SCOPE_VAL only list addresses with this scope.
to PREFIX only list addresses matching this prefix.
label PATTERN only list addresses with labels matching the PATTERN.  PATTERN is a usual shell style pattern.
master DEVICE only list interfaces enslaved to this master device.
vrf NAME only list interfaces enslaved to this vrf.
type TYPE only list interfaces of the given type.
up     only list running interfaces.
dynamic and permanent (IPv6 only) only list addresses installed due to stateless address configuration or only list permanent (not dynamic) addresses. These two flags are inverses of each other, so -dynamic is equal to permanent and -permanent is equal to dynamic.
tentative (IPv6 only) only list addresses which have not yet passed duplicate address detection.
-tentative (IPv6 only) only list addresses which are not in the process of duplicate address detection currently.
deprecated (IPv6 only) only list deprecated addresses.
-deprecated (IPv6 only) only list addresses not being deprecated.
dadfailed (IPv6 only) only list addresses which have failed duplicate address detection.
-dadfailed (IPv6 only) only list addresses which have not failed duplicate address detection.
temporary or secondary List temporary IPv6 or secondary IPv4 addresses only. The Linux kernel shares a single bit for those, so they are actually aliases for each other although the meaning differs depending on address family.
-temporary or -secondary These flags are aliases for primary.
primary List only primary addresses, in IPv6 exclude temporary ones. This flag is the inverse of temporary and secondary.
-primary This is an alias for temporary or secondary.
ip address flush - flush protocol addresses This command flushes the protocol addresses selected by some criteria.
This command has the same arguments as show except that type and master selectors are not supported.  Another difference is that it does not run when no arguments are given.
Warning: This command and other flush commands are unforgiving. They will cruelly purge all the addresses.
With the -statistics option, the command becomes verbose. It prints out the number of deleted addresses and the number of rounds made to flush the address list.  If this option is given twice, ip address flush also dumps all the deleted addresses in the format described in the previous subsection.
ip address show Shows IPv4 and IPv6 addresses assigned to all network interfaces. The 'show' subcommand can be omitted.
ip address show up Same as above except that only addresses assigned to active network interfaces are shown.
ip address show dev eth0 Shows IPv4 and IPv6 addresses assigned to network interface eth0.
ip address add 2001:0db8:85a3::0370:7334/64 dev eth1 Adds an IPv6 address to network interface eth1.
ip address delete 2001:0db8:85a3::0370:7334/64 dev eth1 Delete the IPv6 address added above.
ip address flush dev eth4 scope global Removes all global IPv4 and IPv6 addresses from device eth4. Without 'scope global' it would remove all addresses including IPv6 link- local ones.
ip(8)
XZ(1)                               XZ Utils                               XZ(1)
xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files
xz [option...]  [file...]
unxz is equivalent to xz --decompress. xzcat is equivalent to xz --decompress --stdout. lzma is equivalent to xz --format=lzma. unlzma is equivalent to xz --format=lzma --decompress. lzcat is equivalent to xz --format=lzma --decompress --stdout.
When writing scripts that need to decompress files, it is recommended to always use the name xz with appropriate arguments (xz -d or xz -dc) instead of the names unxz and xzcat.
xz is a general-purpose data compression tool with command line syntax similar to gzip(1) and bzip2(1).  The native file format is the .xz format, but the legacy .lzma format used by LZMA Utils and raw compressed streams with no container format headers are also supported.
xz compresses or decompresses each file according to the selected operation mode.  If no files are given or file is -, xz reads from standard input and writes the processed data to standard output.  xz will refuse (display an error and skip the file) to write compressed data to standard output if it is a terminal.  Similarly, xz will refuse to read compressed data from standard input if it is a terminal.
Unless --stdout is specified, files other than - are written to a new file whose name is derived from the source file name:
•  When compressing, the suffix of the target file format (.xz or .lzma) is appended to the source filename to get the target filename.
•  When decompressing, the .xz or .lzma suffix is removed from the filename to get the target filename.  xz also recognizes the suffixes .txz and .tlz, and replaces them with the .tar suffix.
If the target file already exists, an error is displayed and the file is skipped.
Unless writing to standard output, xz will display a warning and skip the file if any of the following applies:
•  File is not a regular file.  Symbolic links are not followed, and thus they are not considered to be regular files.
•  File has more than one hard link.
•  File has setuid, setgid, or sticky bit set.
•  The operation mode is set to compress and the file already has a suffix of the target file format (.xz or .txz when compressing to the .xz format, and .lzma or .tlz when compressing to the .lzma format).
•  The operation mode is set to decompress and the file doesn't have a suffix of any of the supported file formats (.xz, .txz, .lzma, or .tlz).
After successfully compressing or decompressing the file, xz copies the owner, group, permissions, access time, and modification time from the source file to the target file.  If copying the group fails, the permissions are modified so that the target file doesn't become accessible to users who didn't have permission to access the source file. xz doesn't support copying other metadata like access control lists or extended attributes yet.
Once the target file has been successfully closed, the source file is removed unless --keep was specified.  The source file is never removed if the output is written to standard output.
Sending SIGINFO or SIGUSR1 to the xz process makes it print progress information to standard error.  This has only limited use since when standard error is a terminal, using --verbose will display an automatically updating progress indicator.
Memory usage The memory usage of xz varies from a few hundred kilobytes to several gigabytes depending on the compression settings.  The settings used when compressing a file determine the memory requirements of the decompressor. Typically the decompressor needs 5 % to 20 % of the amount of memory that the compressor needed when creating the file.  For example, decompressing a file created with xz -9 currently requires 65 MiB of memory.  Still, it is possible to have .xz files that require several gigabytes of memory to decompress.
Especially users of older systems may find the possibility of very large memory usage annoying.  To prevent uncomfortable surprises, xz has a built-in memory usage limiter, which is disabled by default.  While some operating systems provide ways to limit the memory usage of processes, relying on it wasn't deemed to be flexible enough (e.g. using ulimit(1) to limit virtual memory tends to cripple mmap(2)).