# CommandSection

title: TLDR
content:
<b>Create a new container with a specific ID</b>`scrun create [container_id]`<br><b>Start a previously created container</b>`scrun start [container_id]`<br><b>Query the state of a container</b>`scrun state [container_id]`<br><b>Send a signal to a container (default: SIGTERM)</b>`scrun kill [container_id]`<br><b>Send a specific signal to a container</b>`scrun kill [container_id] [SIGKILL]`<br><b>Delete a container and release its resources</b>`scrun delete [container_id]`<br><b>Enable debug logging</b>`scrun [create|start|kill|delete] [container_id] --debug`<br><b>Display version</b>`scrun --version`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the operations being performed.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
The <b>limine-snapper-sync</b> command is a specialized utility designed to bridge the gap between the <I>Limine</I> bootloader and the <I>Snapper</I> snapshot management tool. Its primary function is to automatically generate and update boot menu entries in Limine for existing filesystem snapshots created by Snapper.<br><br>When executed, it scans for active Snapper configurations (typically for Btrfs or ZFS filesystems), identifies available snapshots, and then dynamically creates corresponding entries in the Limine boot configuration. This allows users to easily select and boot into a previous system state directly from the bootloader menu, which is invaluable for system recovery, testing updates, or rolling back failed installations. Instead of manually configuring boot entries for each snapshot, <b>limine-snapper-sync</b> automates this crucial integration, ensuring that the boot menu accurately reflects the available system states managed by Snapper.<br><br>It is commonly found in distributions that emphasize robust snapshot capabilities and use Limine as their bootloader, such as openSUSE.


title: CAVEATS
content:
This command is <i>not</i> a standard, universally available Linux utility. It is specific to environments where the <I>Limine</I> bootloader is used in conjunction with the <I>Snapper</I> snapshot tool, most notably in certain distributions like openSUSE. Its proper functioning relies heavily on:<br><ul><li><I>Limine</I> being correctly installed and configured as the system's bootloader.</li><li><I>Snapper</I> being installed and actively managing snapshots on a supported filesystem (e.g., Btrfs or ZFS).</li><li>The underlying filesystem's snapshot mechanism (Btrfs subvolumes, ZFS boot environments) being correctly recognized and handled.</li></ul><br>Manual modifications to the <I>Limine</I> configuration file (<I>limine.cfg</I>) in sections managed by this script can lead to unexpected behavior or boot issues. Always back up your boot configuration before making significant changes or running such synchronization tools.


title: CONFIGURATION FILES
content:
The command typically modifies or generates files that are included in the main <I>Limine</I> configuration file, <I>limine.cfg</I>. These generated files contain the boot entries for each discovered <I>Snapper</I> snapshot, allowing <I>Limine</I> to present them in its boot menu.


title: EXECUTION CONTEXT
content:
<b>limine-snapper-sync</b> is often executed automatically on systems. This can be triggered by a systemd timer, a cron job, or as a post-snapshot hook whenever <I>Snapper</I> creates or deletes a snapshot. This ensures that the <I>Limine</I> boot menu remains current with the available system states.


title: HISTORY
content:
The development and usage of <b>limine-snapper-sync</b> emerged from the need to seamlessly integrate modern bootloaders with advanced filesystem snapshot management. As distributions like openSUSE began adopting <I>Btrfs</I> (and later <I>ZFS</I>) as default filesystems and leveraging <I>Snapper</I> for system rollback capabilities, a method was required to make these snapshots easily bootable. This command (or similar scripts) was created to automate the generation of boot menu entries, turning what would otherwise be a complex manual configuration process into an automated, reliable system. It represents an evolution in system recovery and testing, making it straightforward to revert to previous system states directly from the boot menu.


title: TLDR
content:
<b>Manually synchronize Snapper snapshots to create boot entries in Limine</b>`limine-snapper-sync`<br><b>List the current snapshot entries managed by Limine</b>`limine-snapper-list`<br><b>Display detailed information about bootable snapshots and their files</b>`limine-snapper-info`<br><b>Restore the system from a selected bootable snapshot</b>`limine-snapper-restore`<br><b>Start the watcher process to monitor for Snapper snapshot changes</b>`limine-snapper-watcher`


title: PARAMETERS
content:
<b><i>UNIT...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more names of systemd units to be reloaded (e.g., <b>nginx.service</b>, <b>firewalld.service</b>). These units must be active and capable of being reloaded.<br><br><b>-H <i>&lt;host&gt;</i>, --host=<i>&lt;host&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the operation on a remote host via SSH. The host can be specified as a hostname, IP address, or user@host.<br><br><b>-M <i>&lt;container&gt;</i>, --machine=<i>&lt;container&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the operation on a local container. The container name or ID specifies the target environment.<br><br><b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the requested operation to finish. The command will return immediately after sending the reload request.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the systemd instance of the calling user. By default, <b>systemctl</b> operates on the system-wide instance, which usually requires root privileges for managing services.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly operate on the systemd system instance. This is the default behavior if <b>--user</b> is not specified and the command is run with appropriate permissions.<br><br>


title: DESCRIPTION
content:
The <b>systemctl reload</b> command is a crucial utility within the systemd init system, designed to instruct one or more specified units (services, sockets, etc.) to re-read their configuration files and apply changes without undergoing a full restart. This is particularly valuable for maintaining high availability and minimizing downtime for critical services like web servers (e.g., Nginx, Apache HTTP Server), database servers, or logging daemons.<br><br>When you execute <b>systemctl reload <i>&lt;unit_name&gt;</i></b>, systemd typically sends a <i>SIGHUP</i> (Hangup) signal to the main process of the target service. Well-behaved services are designed to catch this signal, parse their updated configuration files, and dynamically apply the new settings while continuing to operate, thus avoiding any interruption to ongoing operations or active connections.<br><br>It's important to differentiate <b>reload</b> from <b>restart</b>. While <b>restart</b> terminates the service process and then starts a new one (potentially causing a brief outage), <b>reload</b> aims for a seamless update. However, not all services support graceful reloading. If a service does not handle the <i>SIGHUP</i> signal for config reloads, <b>systemctl reload</b> may fail, have no effect, or even lead to an inconsistent state, in which case a full <b>restart</b> would be necessary. Always consult the documentation for the specific service to understand its reload behavior.


title: CAVEATS
content:
<i><br></i><b>Service Support:</b> Not all services support graceful reloading. If a service does not handle the <i>SIGHUP</i> signal for configuration reloads, <b>systemctl reload</b> will likely fail or have no effect, requiring a <b>systemctl restart</b> instead.<br><b>Configuration Errors:</b> Introducing syntax errors or invalid configurations into a service's configuration file before reloading can cause the reload to fail, or worse, put the service into an unrecoverable state without a full restart.<br><b>Partial Reloads:</b> Some complex services might only reload certain configuration aspects with <b>reload</b>, while others might require a full <b>restart</b> for more significant or foundational changes.<br><b>Permissions:</b> Reloading system services typically requires root privileges (e.g., using <b>sudo</b>).


title: SIGNAL HANDLING
content:
When <b>systemctl reload</b> is invoked, systemd primarily communicates with the service by sending the <i>SIGHUP</i> (Hangup) signal to its main process. Services that support reloading are programmed to intercept this signal, re-read their configuration files (e.g., <b>/etc/nginx/nginx.conf</b>), and apply the changes without terminating active processes or connections. This method ensures minimal disruption.


title: RELOAD-OR-RESTART
content:
For services where it's uncertain if they support graceful reloading, or to provide a robust fallback, systemd offers the <b>systemctl reload-or-restart <i>&lt;unit_name&gt;</i></b> command. This command first attempts to reload the service. If the reload operation fails or is not supported by the service, it automatically falls back to performing a full restart, ensuring that the new configuration is applied one way or another.


title: HISTORY
content:
The <b>systemctl</b> command is a core component of systemd, which was first introduced in 2010 to replace traditional init systems like SysVinit and Upstart. The concept of gracefully reloading service configurations using signals like <i>SIGHUP</i> predates systemd, being a long-standing practice in Unix-like environments for daemon management. Systemd integrated this pattern into its unified service management framework, providing the standardized <b>systemctl reload</b> command. Its adoption has made it the primary method for managing service lifecycles and configuration updates on modern Linux distributions, emphasizing stability and ease of administration.


title: SEE ALSO
content:
systemctl(1), systemctl-restart(8), systemctl-start(8), systemctl-stop(8), systemctl-status(8), kill(1), daemon(7)


title: TLDR
content:
<b>Reload a service</b>`systemctl reload [nginx]`<br><b>Reload multiple services</b>`systemctl reload [unit1 unit2 ...]`<br><b>Reload a service for the current user</b>`systemctl reload [pipewire] --user`


title: PARAMETERS
content:
<b>-t <type>, --type=<type></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters units by one or more specified types (e.g., <I>service</I>, <I>socket</I>, <I>target</I>). Multiple types can be comma-separated.<br><br><b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows all loaded units, regardless of their active state (including inactive, failed, activating, or deactivating units).<br><br><b>--state=<state></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters units by one or more specific active states (e.g., <I>active</I>, <I>inactive</I>, <I>failed</I>, <I>activating</I>, <I>deactivating</I>). Can be specified multiple times.<br><br><b>--failed</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A convenient shortcut for <B>--state=failed</B>, displaying only units that are in a failed state.<br><br><b>-p <property>, --property=<property></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only the specified unit properties, such as <I>ActiveState</I>, <I>LoadState</I>, <I>SubState</I>, etc. Multiple properties can be comma-separated.<br><br><b>--full</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents truncation of unit names in the output, showing the complete name.<br><br><b>--plain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates plain, unformatted output suitable for scripting, without colors, headers, or lines.<br><br><b>--no-legend</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the column header line in the output.<br><br><b>--no-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces output directly to <I>stdout</I> without piping through a pager like <I>less</I>.<br><br><b>--reverse</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverses the default sorting order of units.<br><br><b>--output=<format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format, such as <I>short</I>, <I>full</I>, <I>json</I>, <I>json-pretty</I>, <I>export</I>.<br><br><b>PATTERN...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more unit name patterns to filter the output. Wildcards (<B>*</B>) are supported.<br><br>


title: DESCRIPTION
content:
The <B>systemctl list-units</B> command is a core component of Systemd, the init system used by most modern Linux distributions. It provides a comprehensive overview of all currently loaded units in the system. Units represent various Systemd objects like services, sockets, devices, mount points, and timers. This command is essential for administrators and users to quickly ascertain the state, activity, and sub-state of these units, aiding in system monitoring, diagnostics, and troubleshooting. By default, it displays only <I>active</I> units, presenting information such as their load state, active state, sub-state, and a brief description. The output is typically paginated for readability, showing columns like <B>UNIT</B>, <B>LOAD</B>, <B>ACTIVE</B>, <B>SUB</B>, and <B>DESCRIPTION</B>. Various options allow users to filter the results by type, state, or pattern, making it a flexible tool for pinpointing specific units or getting a broad system overview.


title: CAVEATS
content:
The <B>list-units</B> command only displays units that Systemd has <I>loaded into memory</I>. It does not list all available unit files on the filesystem. For a comprehensive list of all unit files, use <B>systemctl list-unit-files</B>.<br><br>While <B>list-units</B> itself generally does not require root privileges, obtaining detailed status for certain sensitive units or modifying them via other <B>systemctl</B> subcommands often does.


title: UNDERSTANDING OUTPUT COLUMNS
content:
The default output of <B>systemctl list-units</B> provides several key columns:<br>
<B>UNIT</B>: The full name of the Systemd unit.<br>
<B>LOAD</B>: The load state of the unit. Common states are <I>loaded</I> (successfully parsed and loaded), <I>not-found</I>, or <I>bad-setting</I>.<br>
<B>ACTIVE</B>: The high-level active state. Common states are <I>active</I> (running), <I>inactive</I> (not running), <I>failed</I> (unit failed to start or stopped unexpectedly), <I>activating</I>, or <I>deactivating</I>.<br>
<B>SUB</B>: The low-level sub-state, more specific than <B>ACTIVE</B>. For services, this might be <I>running</I>, <I>dead</I>, <I>exited</I>, <I>plugged</I>, <I>waiting</I>, etc. This state varies greatly by unit type.<br>
<B>DESCRIPTION</B>: A brief human-readable description of the unit.


title: COMMON USE CASES
content:
Beyond general system overview, <B>list-units</B> is frequently used for:<br>
- <B>Troubleshooting</B>: Identifying failed units using <B>systemctl list-units --failed</B>.<br>
- <B>Checking Service Status</B>: Quickly seeing if a particular service is active (e.g., <B>systemctl list-units | grep sshd</B>).<br>
- <B>Filtering by Type</B>: Examining only services with <B>systemctl list-units --type=service</B> or timers with <B>systemctl list-units --type=timer</B>.<br>
- <B>Scripting</B>: Using <B>--output=json</B> or <B>--plain</B> for machine-readable output in scripts.


title: HISTORY
content:
The <B>systemctl</B> command, including its <B>list-units</B> subcommand, was introduced as part of the Systemd project, which began development around 2010. Systemd aimed to replace the traditional SysVinit and Upstart init systems in Linux distributions. As Systemd gained widespread adoption (first by Fedora in 2011, then Debian, Ubuntu, RHEL, etc.), <B>systemctl</B> became the standard interface for managing services and other system resources. The <B>list-units</B> command has been a fundamental part of <B>systemctl</B> since its early days, providing a consistent and powerful way to inspect the state of the system's active units.


title: SEE ALSO
content:
systemctl(1), systemctl status <unit>(1), systemctl list-unit-files(1), journalctl(1), systemd.unit(5), systemd.service(5), systemd.socket(5)


title: TLDR
content:
<b>List units which are active, have pending jobs, or have failed</b>`systemctl list-units`<br><b>List all units, including inactive ones</b>`systemctl list-units [[-a|--all]]`<br><b>Filter by unit type</b>`systemctl list-units [[-t|--type]] [service|socket|timer|...]`<br><b>Filter by state</b>`systemctl list-units --state [running|listening|dead|...]`<br><b>Filter by a name pattern</b>`systemctl list-units 'systemd*'`<br><b>Print output directly to stdout</b>`systemctl list-units --no-pager`<br><b>Print output without headers or footers (for scripts)</b>`systemctl list-units --no-legend`


title: TLDR
content:
<b>Create a new security context and print its socket address to stdout</b>`pw-container`<br><b>Run a specific program within a new security context</b>`pw-container [command] [argument1 argument2 ...]`<br><b>Run a program, connecting to a specific remote PipeWire instance</b>`pw-container [[-r|--remote]] [remote_instance_name] [command]`<br><b>Run a program in a new context with specific properties using a JSON object</b>`pw-container [[-P|--properties]] '[{"key": "value"]}' [command]`<br><b>Display help</b>`pw-container [[-h|--help]]`


title: PARAMETERS
content:
<b><B>--no-pager</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not pipe output into a pager. This is useful for scripting or when output needs to be redirected.<br><br><b><B>--no-legend</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not print the column headers (legend) in the output. Useful for clean, machine-readable output.<br><br><b><B>--all</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all items. For jobs, this generally means showing all currently active/pending jobs.<br><br><b><B>--full</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not abbreviate (ellipsize) unit names in the output, showing their full names.<br><br><b><B>--plain</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show output in a plain, machine-readable format, suppressing visual enhancements like colors or borders.<br><br><b><B>--output=<I>MODE</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Format the output according to the specified mode. Common modes include <I>short</I> (default), <I>verbose</I>, or <I>json</I> for programmatic parsing.<br><br><b><B>-h</B>, <B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a short help text and exit.<br><br>


title: DESCRIPTION
content:
The <B>systemctl list-jobs</B> command displays a comprehensive list of currently active or pending systemd jobs. In systemd, a 'job' represents a specific operation or transaction that the system manager is executing or waiting to execute on a unit, such as starting, stopping, reloading, or restarting it. When a request to change a unit's state is issued, systemd creates a job to manage the process, including handling dependencies.<br><br>This command is invaluable for diagnosing system behavior, especially when units appear stuck, dependencies are preventing operations, or during boot processes. It provides insights into what systemd is actively working on or queuing. The output typically includes the job ID, the type of operation (e.g., 'start', 'stop'), the target unit's name, the job's current state (e.g., 'running', 'waiting'), and a descriptive summary. Monitoring these jobs helps administrators understand the flow of systemd operations and troubleshoot potential issues within the service management layer.


title: CAVEATS
content:
The <B>list-jobs</B> command only displays currently active or pending jobs. Once a job completes (successfully or unsuccessfully), it is removed from this list. Therefore, it does not provide a historical record of all operations. Jobs are transient, reflecting only the immediate state of systemd's transaction engine. Understanding the output, especially 'waiting' states, often requires knowledge of unit dependencies.


title: INTERPRETING JOB OUTPUT
content:
The output of <B>systemctl list-jobs</B> typically consists of several columns: <B>JOB ID</B> (a unique identifier for the job), <B>TYPE</B> (the operation, e.g., 'start', 'stop', 'reload'), <B>UNIT</B> (the name of the unit affected), <B>STATE</B> (the job's current status, e.g., 'running', 'waiting'), and <B>DESCRIPTION</B> (a brief explanation of the job). A 'waiting' state often indicates that the job is stalled due to unmet dependencies or a conflicting operation.


title: HISTORY
content:
The <B>systemctl</B> command is an integral part of systemd, which was introduced as a replacement for the traditional SysVinit daemon in Linux. Systemd's development began around 2010, and it quickly became the default init system for many major Linux distributions. The concept of 'jobs' is fundamental to systemd's design, enabling transactional unit management and parallel execution of services. The <B>list-jobs</B> subcommand has been a core diagnostic tool since early systemd versions, providing visibility into the active operations managed by the system and facilitating debugging of service startup and shutdown sequences.


title: TLDR
content:
<b>List all active jobs</b>`systemctl list-jobs`<br><b>Filter jobs for a specific unit</b>`systemctl list-jobs [unit]`


title: SYNOPSIS
content:
<I>pacconf</I> [<b>-s</b>|<b>--show</b>]<br><I>pacconf</I> [<b>-f</b> <I>path</I>|<b>--file</b> <I>path</I>]<br><I>pacconf</I> [<b>-h</b>|<b>--help</b>]<br><I>pacconf</I> [<b>-v</b>|<b>--version</b>]


title: PARAMETERS
content:
<b><b>-s</b>, <b>--show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the currently active <I>pacman</I> configuration, parsed from <I>/etc/pacman.conf</I> and any files included via <B>Include</B> directives. This is the default behavior if no other option like <B>--file</B> is specified.<br><br><b><b>-f</b> <I>path</I>, <b>--file</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to parse and display. This allows users to inspect configurations without modifying the live system's <I>/etc/pacman.conf</I>. The output will reflect the parsed content of the specified file, including its <B>Include</B> directives.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information for <I>pacconf</I> and exits.<br><br>


title: DESCRIPTION
content:
<I>pacconf</I> is a utility included with the <I>pacman-contrib</I> package on Arch Linux and its derivatives. Its primary function is to inspect and display the configuration used by the <I>pacman</I> package manager. Unlike directly viewing <I>pacman.conf</I>, <I>pacconf</I> parses the configuration files, including any <B>Include</B> directives, to show the <B>active</B> configuration that <I>pacman</I> would use. This makes it an invaluable tool for troubleshooting <I>pacman</I> behavior, verifying repository setups, or understanding how different configuration snippets are combined.<br><br>It can display the live configuration or parse and show the configuration from a specified file, aiding in debugging custom or alternative <I>pacman</I> setups without affecting the live system. It's particularly useful when dealing with complex configurations spread across multiple files.


title: CAVEATS
content:
<I>pacconf</I> does not <B>modify</B> configuration files; it only reads and displays them.<br>It relies on the <I>pacman</I> configuration parsing logic, so its output accurately reflects what <I>pacman</I> would see.<br><I>pacconf</I> is typically part of the <B>pacman-contrib</B> package, which might need to be installed separately from <I>pacman</I> itself on some systems.


title: CONFIGURATION PARSING
content:
<I>pacconf</I> is unique in that it performs a full parsing of the configuration, including <B>Include =</B> directives. This means if your <I>pacman.conf</I> includes other files (e.g., for custom repositories or mirror lists), <I>pacconf</I> will resolve and display the final, consolidated configuration as <I>pacman</I> would interpret it, providing a complete and accurate picture of your effective package manager settings.


title: HISTORY
content:
<I>pacconf</I> is part of the <B>pacman-contrib</B> package, which bundles various helper scripts and utilities for <I>pacman</I>. Its development has generally mirrored the evolution of <I>pacman</I> itself, providing supplementary tools to manage and inspect the package manager's behavior, particularly concerning its configuration files. It has been a stable component for users seeking deeper insight into their <I>pacman</I> setup.


title: TLDR
content:
<b>Show full parsed pacman configuration</b>`pacconf`<br><b>List configured repositories</b>`pacconf --repo-list`<br><b>Always show directive names even if only one directive is provided</b>`pacconf --verbose [directive]`<br><b>Display only first value of multi-value options</b>`pacconf --single`<br><b>Display help</b>`pacconf --help`<br><b>Display version</b>`pacconf --version`


title: PARAMETERS
content:
<b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all output to standard output, returning only the exit code.<br><br><b>--wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait until the system is fully up and running (i.e., 'running' or 'degraded') before exiting. This is useful for scripts that need to ensure the system is stable.<br><br>


title: DESCRIPTION
content:
The <b>systemctl is-system-running</b> command queries the systemd system and service manager for the current overall operational state of the system. This provides a high-level view of whether the system is fully initialized, running normally, experiencing issues, or in the process of shutting down.<br><br>It's a crucial tool for scripting, monitoring, and quick status checks, as it gives an immediate indication of the system's health from systemd's perspective. The command prints the state name to standard output and exits with a specific status code corresponding to that state. Possible states include "initializing", "running", "degraded", "maintenance", "stopping", "stopped", "offline", and "unknown".<br><br>A "running" state indicates that the system is fully operational and all critical services are active, while "degraded" signifies that some non-critical services might have failed, but the system remains largely functional. This command relies on the aggregated status of all active units and the overall system processes managed by systemd.


title: CAVEATS
content:
While <b>systemctl is-system-running</b> offers valuable insight into the system's state from a systemd perspective, it has limitations. It only reflects the health of services and units managed by systemd; it does not account for application-level failures, network connectivity issues, or hardware problems not directly reported or managed by systemd. A system reported as 'running' could still have critical user-space applications malfunctioning or external network services unavailable. The 'degraded' state is subjective; a system in this state might still be perfectly functional for many tasks despite some service failures. States like 'initializing' or 'stopping' are inherently transient, and the output can change rapidly.


title: EXIT CODES
content:
The command's exit code is a direct numerical representation of the reported system state, making it highly suitable for scripting and automation:<br><b>0</b>: <i>running</i><br><b>1</b>: <i>degraded</i><br><b>3</b>: <i>maintenance</i><br><b>4</b>: <i>stopping</i><br><b>5</b>: <i>stopped</i><br><b>6</b>: <i>initializing</i><br><b>7</b>: <i>offline</i><br><b>255</b>: <i>unknown</i> (or other error)


title: OUTPUT FORMAT
content:
When not used with the <b>--quiet</b> option, the command prints a single word to standard output, which is the name of the current system state (e.g., 'running', 'degraded', 'stopping').


title: HISTORY
content:
The <b>is-system-running</b> verb is an integral part of the <b>systemctl</b> utility, which was introduced as the primary interface for the <b>systemd</b> system and service manager. <b>systemd</b> was developed as a modern replacement for the traditional SysVinit and Upstart systems, aiming to provide faster boot times, parallel service startup, and more robust process management. <b>is-system-running</b> was included from early versions of <b>systemctl</b> to provide a standardized, scriptable way to query the overall system health, a common requirement for automation, monitoring, and high-availability solutions in the <b>systemd</b> ecosystem. Its design reflects systemd's state-driven approach to system management.


title: TLDR
content:
<b>Check whether the system is operational and print the current state</b>`systemctl is-system-running`<br><b>Check and print the current state quietly (no output, only exit status)</b>`systemctl is-system-running --quiet`<br><b>Wait until the boot process is completed before printing the current state</b>`systemctl is-system-running --wait`


title: TLDR
content:
<b>Set file contexts according to the default policy file</b>`sudo setfiles /etc/selinux/targeted/contexts/files/file_contexts [path/to/directory]`<br><b>Set file contexts recursively and show changes</b>`sudo setfiles /etc/selinux/targeted/contexts/files/file_contexts [path/to/directory] [[-v|--verbose]]`<br><b>Preview what would be changed without actually modifying contexts</b>`sudo setfiles /etc/selinux/targeted/contexts/files/file_contexts [path/to/directory] [[-n|--nochange]]`<br><b>Set file contexts and verify them</b>`sudo setfiles /etc/selinux/targeted/contexts/files/file_contexts [path/to/directory] [[-v|--verbose]] [[-F|--force]]`<br><b>Use a specific root path for context matching</b>`sudo setfiles /etc/selinux/targeted/contexts/files/file_contexts [path/to/new_directory] [[-r|--rootpath]] [path/to/old_directory]`


title: PARAMETERS
content:
<b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the operation. This can be used to skip certain checks or to proceed with a shutdown even if some services fail to stop gracefully. Use with caution, as it can lead to data loss if not used properly.<br><br><b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the operation to finish. The command will return immediately after initiating the shutdown process, allowing scripts to continue execution.<br><br><b>--no-wall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not send out a wall message to all logged-in users before halting the system. By default, a broadcast message is sent to inform users of the impending shutdown.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the system's manager instance. This is the default behavior when dealing with system-wide services and power management, making it implicitly used for 'halt'.<br><br>


title: DESCRIPTION
content:
The <b>systemctl halt</b> command is part of the <b>systemd</b> init system, commonly used on modern Linux distributions. It initiates a <i>graceful shutdown</i> procedure for the operating system. When invoked, <b>systemctl halt</b> signals <b>systemd</b> to bring down all running services, unmount filesystems cleanly, and stop the kernel. The primary goal is to ensure all data is safely written to disk and processes are terminated in an orderly fashion, preventing data corruption or loss.<br><br>Historically, the <b>halt</b> command would stop the kernel but leave the system powered on, requiring a manual power-off. In contemporary <b>systemd</b> environments, <b>systemctl halt</b> often behaves identically to <b>systemctl poweroff</b>, meaning it not only stops the system but also initiates a complete power down of the hardware. This behavior is typically configured to ensure a full shutdown unless specific ACPI or system settings dictate otherwise. It's the modern, recommended way to prepare a Linux system for a complete power-off.


title: CAVEATS
content:
On most modern Linux distributions running <b>systemd</b>, <b>systemctl halt</b> behaves identically to <b>systemctl poweroff</b>, resulting in a complete power down of the hardware. The traditional distinction where <b>halt</b> would stop the system but keep power on is rarely observed unless specific hardware or ACPI configurations are in place.<br><br>Always ensure all critical applications have saved their data before initiating a halt or poweroff, as graceful shutdowns, while designed to prevent data loss, cannot guarantee the state of unsaved application data. Executing this command requires appropriate privileges, typically root access or membership in a group with sudo permissions.


title: TARGETS
content:
In <b>systemd</b>, power management operations like halting, rebooting, and powering off are implemented as <i>target units</i>. <b>systemctl halt</b> activates the <b>halt.target</b> unit, which in turn orchestrates the shutdown process by stopping services and unmounting filesystems. Similarly, <b>poweroff.target</b> and <b>reboot.target</b> handle their respective actions, providing a structured approach to system state changes.


title: PERMISSIONS
content:
To execute <b>systemctl halt</b>, a user typically requires root privileges. This is because shutting down the entire system is a critical operation that affects all users and services, potentially causing disruption or data loss. Users often employ <b>sudo</b> to elevate their privileges for this command, ensuring proper authorization and control over system-wide actions.


title: HISTORY
content:
The concept of halting a system dates back to the early days of Unix-like operating systems, traditionally handled by the <b>halt</b> command. With the advent of <b>systemd</b> as the default init system for many Linux distributions (starting predominantly in the 2010s), power management functions, including halting, rebooting, and powering off, were centralized under the <b>systemctl</b> utility. This transition aimed to provide a unified and more robust mechanism for system control, replacing older SysVinit scripts and utilities. <b>systemctl halt</b> now serves as the modern interface to trigger the <b>halt.target</b> unit within <b>systemd</b>, abstracting the underlying shutdown procedures and ensuring a consistent and managed system termination.


title: SEE ALSO
content:
systemctl poweroff(8), systemctl reboot(8), shutdown(8), halt(8), reboot(8), systemd(1), systemd.special(7)


title: TLDR
content:
<b>Halt the system</b>`systemctl halt`<br><b>Halt the system immediately without asking services to stop gracefully</b>`systemctl halt --force`<br><b>Halt the system immediately without sending notifications to logged-in users</b>`systemctl halt --force --no-wall`<br><b>Halt the system immediately without terminating any processes or unmounting filesystems (dangerous, may cause data loss)</b>`systemctl halt --force --force`<br><b>Schedule a halt at a specific time (e.g., 23:00)</b>`systemctl halt --when 23:00`<br><b>Schedule a halt after a certain duration (e.g., 2 hours)</b>`systemctl halt --when +2h`<br><b>Cancel a scheduled halt</b>`systemctl halt --when cancel`


title: TLDR
content:
<b>List all ALSA objects</b>`spa-acp-tool [[l|list]]`<br><b>Probe a specific ALSA card by ID</b>`spa-acp-tool [[c|card]] [card_id]`<br><b>List available ALSA profiles for a card</b>`spa-acp-tool [[lpr|list-profiles]] [card_id]`<br><b>Set the active ALSA profile by ID</b>`spa-acp-tool [[spr|set-profile]] [profile_id]`<br><b>List available devices for a card</b>`spa-acp-tool [[ld|list-devices]] [card_id]`<br><b>Get volume from a device</b>`spa-acp-tool [[gv|get-volume]] [device_id]`<br><b>Set volume on a device</b>`spa-acp-tool [[v|set-volume]] [device_id] [volume_level]`<br><b>Toggle mute state on a device</b>`spa-acp-tool [[m|toggle-mute]] [device_id]`


title: TLDR
content:
<b>Display the default routing table</b>`routel`<br><b>Display a specific routing table</b>`routel [table_number|main|local|default]`<br><b>Display only IPv4 routes</b>`routel [[-4|--family inet]]`<br><b>Display only IPv6 routes</b>`routel [[-6|--family inet6]]`


title: SYNOPSIS
content:
<i>semodule [OPTIONS] [MODULE...]</i><br>Examples:<br><i>semodule -l</i><br><i>semodule -i my_module.pp</i><br><i>semodule -r my_module</i><br><i>semodule -e my_module</i>


title: PARAMETERS
content:
<b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all installed policy modules and their status.<br><br><b><b>-i</b>, <b>--install=MODULE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install or replace a policy module from a <i>.pp</i> file.<br><br><b><b>-r</b>, <b>--remove=MODULE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove an installed policy module by name.<br><br><b><b>-e</b>, <b>--enable=MODULE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable a disabled policy module.<br><br><b><b>-d</b>, <b>--disable=MODULE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable an enabled policy module.<br><br><b><b>-X</b>, <b>--priority=PRIORITY</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the priority for an installed module (0-255).<br><br><b><b>-B</b>, <b>--build</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a rebuild of the SELinux policy from all installed modules.<br><br><b><b>-P</b>, <b>--preserve_current</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preserve the current policy if an error occurs during an operation.<br><br><b><b>-F</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the operation, potentially overriding checks.<br><br><b><b>-s</b>, <b>--store=STORE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate policy store to operate on.<br><br><b><b>-E</b>, <b>--norecompute</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not recompute the policy after module operations.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print version information and exit.<br><br>


title: DESCRIPTION
content:
<i>semodule</i> is a core utility for administrators to manage SELinux policy modules. It provides commands to <b>install</b>, <b>remove</b>, <b>enable</b>, <b>disable</b>, and <b>list</b> the status of individual policy modules. These modules contain specific security rules that extend or modify the base SELinux policy.<br>By leveraging <i>semodule</i>, administrators can customize the system's security posture to accommodate new applications or services without needing to recompile the entire SELinux policy from scratch. This modular approach significantly simplifies policy management, updates, and maintenance, making SELinux more adaptable and dynamic in complex environments. It interacts with the SELinux policy store, typically located under <i>/etc/selinux/</i>.


title: CAVEATS
content:
Requires <b>root privileges</b>.<br>Incorrect module operations can severely impact system stability or security, potentially leading to system unbootability or denial of service. Always test changes carefully and understand their implications.<br>Modules may need to be digitally signed if policy signing is enforced on the system.<br>Understanding SELinux policy structure and dependencies is crucial for effective and safe use of <i>semodule</i>.


title: MODULE STRUCTURE
content:
SELinux policy modules are typically distributed as compiled policy packages (<i>.pp</i> files) or as source files (<i>.te</i>, <i>.if</i>, <i>.fc</i>) that need to be compiled. They extend the base policy with specific rules for new applications, services, or custom security requirements, allowing for granular policy customization.


title: POLICY STORES
content:
<i>semodule</i> operates on policy stores, which are directories containing the active and available policy modules. The default store is usually tied to the current SELinux policy (e.g., <i>targeted</i> for the targeted policy type). Multiple policy stores can exist, allowing for different policy configurations to be managed.


title: HISTORY
content:
SELinux, developed by the NSA, was integrated into the Linux kernel in version 2.6. The <i>semodule</i> command and its related user-space tools emerged as part of this broader project to provide robust Mandatory Access Control (MAC). Its modular policy management capabilities became vital for enterprise Linux distributions like Fedora and RHEL, enabling more flexible and dynamic security policy customization and updates without requiring monolithic policy recompilations.


title: SEE ALSO
content:
semanage(8), checkmodule(8), audit2allow(8), setsebool(8), restorecon(8), load_policy(8), selinux(8)


title: TLDR
content:
<b>List all installed policy modules</b>`sudo semodule [[-l|--list]]`<br><b>Install a new policy module</b>`sudo semodule [[-i|--install]] [path/to/module.pp]`<br><b>Remove a policy module</b>`sudo semodule [[-r|--remove]] [module_name]`<br><b>Enable a policy module</b>`sudo semodule [[-e|--enable]] [module_name]`<br><b>Disable a policy module</b>`sudo semodule [[-d|--disable]] [module_name]`<br><b>Reload all policy modules</b>`sudo semodule [[-R|--reload]]`<br><b>Display the version of installed policy modules</b>`sudo semodule [[-l|--list]] [[-v|--verbose]]`


title: PARAMETERS
content:
<b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all loaded socket units, including those that are inactive or have failed. By default, only active and listening sockets are shown.<br><br><b>--full</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not abbreviate unit names or truncate output fields. Useful for seeing complete unit names.<br><br><b>--no-legend</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not print the header line that describes the columns. Useful for scripting or machine-readable output.<br><br><b>--no-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not pipe output into a pager. Output is printed directly to standard output.<br><br><b>--output=FORMAT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Control the output format. Common formats include <i>short</i> (default), <i>plain</i> (equivalent to <i>--no-pager --no-legend</i>), <i>json</i>, <i>json-pretty</i>, etc.<br><br><b>--plain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <i>--output=plain --no-legend</i>. Displays output without a pager or header.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the user <i>systemd</i> instance. By default, <i>systemctl</i> operates on the system-wide <i>systemd</i> instance.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly operate on the system <i>systemd</i> instance (this is the default behavior).<br><br><b>[PATTERN...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more glob patterns to filter the list of socket units by their name. Only units matching any of the patterns will be displayed.<br><br>


title: DESCRIPTION
content:
<i>systemctl list-sockets</i> is a subcommand of the <i>systemctl</i> utility, part of the <i>systemd</i> init system. It provides a comprehensive overview of all loaded and listening socket units managed by <i>systemd</i>. Unlike generic network utilities like <i>ss</i> or <i>netstat</i>, this command focuses specifically on sockets configured and activated via <i>systemd</i>'s socket activation mechanism. It displays crucial information such as the socket's listening address or path, its type (e.g., stream, datagram, fifo), the <i>systemd</i> unit it activates upon connection (typically a service unit), and its current state. <br><br>This command is invaluable for administrators and developers to verify that services configured for socket activation are correctly listening, debug connectivity issues, and understand dependencies between socket units and their corresponding service units. It helps in quickly identifying which network or IPC endpoints are being managed by <i>systemd</i> and are ready to trigger service startups on demand, thereby optimizing resource usage and improving system startup times.


title: CAVEATS
content:
<i>systemctl list-sockets</i> only displays sockets explicitly managed by <i>systemd</i> through socket units (<i>.socket</i> files). It will <b>not</b> show all listening sockets on your system; for a comprehensive list of all open network sockets, use utilities like <i>ss -lntu</i> or <i>netstat -lntu</i>. Output can be extensive on systems with many services; using filtering patterns or piping to a pager (or disabling it with <i>--no-pager</i>) might be necessary. To list system-wide sockets, root privileges are generally required.


title: OUTPUT COLUMNS EXPLAINED
content:
The default output of <i>systemctl list-sockets</i> includes several columns:<br><ul><li><b>LISTEN:</b> The socket address or path being listened on (e.g., <i>[::]:22</i> for SSH, or a file path for a Unix domain socket).</li><li><b>UNIT:</b> The name of the socket unit (e.g., <i>ssh.socket</i>).</li><li><b>ACTIVATES:</b> The service or other unit that will be activated when a connection is received on this socket (e.g., <i>ssh.service</i>).</li><li><b>STATE:</b> The current state of the socket unit (e.g., <i>listening</i>, <i>inactive</i>, <i>failed</i>).</li></ul>


title: UNDERSTANDING SOCKET ACTIVATION
content:
Socket activation is a key feature of <i>systemd</i> that allows services to be started on demand rather than at boot time. When a service is configured for socket activation, <i>systemd</i> listens on the service's port (or Unix domain socket path). The actual service process is only started when an incoming connection arrives on that socket. This approach provides several benefits: faster boot times, reduced resource consumption for infrequently used services, and improved robustness by allowing services to restart without dropping existing connections if the socket remains open.


title: HISTORY
content:
The <i>systemctl list-sockets</i> command is an integral part of <i>systemd</i>, which was first introduced in 2010 and rapidly adopted as the default init system across many Linux distributions, replacing the traditional <i>SysVinit</i>. Its development focused on improving boot times, providing parallel service startup, and offering advanced features like socket activation. The ability to list these socket units directly via <i>systemctl</i> emerged as a natural requirement for administering a <i>systemd</i>-centric system, allowing administrators to inspect the state of socket-activated services without delving into configuration files or generalized network tools. It underscores <i>systemd</i>'s design philosophy of making system state transparent and manageable through a unified command-line interface.


title: TLDR
content:
<b>List active socket units currently in memory</b>`systemctl list-sockets`<br><b>List active socket units with their socket types</b>`systemctl list-sockets --show-types`<br><b>List all socket units, including inactive and failed ones</b>`systemctl list-sockets [[-a|--all]]`<br><b>List socket units filtered by state</b>`systemctl list-sockets --state [active|inactive|failed|...]`<br><b>List socket units matching a name pattern</b>`systemctl list-sockets [pattern1 pattern2 ...]`


title: PARAMETERS
content:
<b>`--user`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Operate on the user manager instance.</i> This allows querying the default target for the calling user, instead of the system-wide default.<br><br><b>`--system`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Operate on the system manager instance.</i> This is the default behavior and explicitly specifies that the system-wide default target should be retrieved.<br><br><b>`--no-pager`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not pipe output into a pager.</i> Useful for scripting or when you want the output directly in the terminal without pagination.<br><br><b>`--json`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Format output as JSON.</i> This option provides machine-readable output, which is beneficial for automation and parsing by other tools.<br><br><b>`--plain`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Print output as plain text, no headers or footers.</i> Used for simpler output, often combined with `--value`.<br><br><b>`--value`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>When used with `--plain`, print only values without keys.</i> This produces a very concise output, showing just the target name, e.g., 'graphical.target'.<br><br>


title: DESCRIPTION
content:
The `<b>systemctl get-default</b>` command is a fundamental `<b>systemd</b>` utility used to retrieve and display the name of the default target unit that the system will boot into. In `<b>systemd</b>`, targets are special unit files that group other units and serve similar purposes to runlevels in traditional SysVinit systems.<br><br>Common default targets include `<i>multi-user.target</i>`, which provides a text-based, multi-user system without a graphical interface, and `<i>graphical.target</i>`, which enables all services of `<i>multi-user.target</i>` plus a graphical login manager. This command essentially shows the symbolic link from `<i>/etc/systemd/system/default.target</i>` to its actual target file, indicating the intended boot environment. It's a quick way for administrators to verify the system's configured boot mode without digging into configuration files.<br><br>Understanding the default target is crucial for system administration, troubleshooting boot issues, or customizing the boot process, ensuring the system starts in the desired state for its intended use.


title: CAVEATS
content:
The output of `<b>systemctl get-default</b>` only shows the *configured* default target. If a specific target is temporarily overridden at boot time (e.g., via kernel command line `<i>systemd.unit=rescue.target</i>`), this command will still show the persistent default, not the target actually used for the current boot session.<br><br>Furthermore, this command does not provide information about the currently *active* target. To see the currently active target, commands like `<b>systemctl status default.target</b>` (which usually points to the active target) or `<b>systemctl list-units --type target</b>` can be used to inspect active target units.


title: SYMBOLIC LINK
content:
The default target is typically established as a symbolic link, `<i>/etc/systemd/system/default.target</i>`, which points to the actual target unit file (e.g., `<i>/usr/lib/systemd/system/graphical.target</i>` or `<i>/usr/lib/systemd/system/multi-user.target</i>`). The `<b>systemctl get-default</b>` command simply resolves and displays the name of the target pointed to by this link.


title: OVERRIDING DEFAULTS
content:
While `<b>get-default</b>` shows the persistently configured default, the boot target can be temporarily overridden at kernel boot time. This is done by appending `<i>systemd.unit=your-target.target</i>` to the kernel command line during boot (e.g., from the GRUB menu). This temporary override does not change the persistent default returned by `<b>systemctl get-default</b>`.


title: HISTORY
content:
The `<b>get-default</b>` command is an integral part of `<b>systemd</b>`, which was initially developed by Lennart Poettering and Kay Sievers at Red Hat to replace the traditional SysVinit daemon for Linux operating systems. First introduced in Fedora 15 in 2011, `<b>systemd</b>` rapidly gained adoption across major Linux distributions due to its faster boot times, parallelization capabilities, and unified service management.<br><br>The concept of "targets" replaced "runlevels" in this new architecture, and commands like `<b>get-default</b>` and `<b>set-default</b>` were introduced to manage the system's boot behavior within this new framework. Its design brought a more consistent and robust approach to system initialization and service management on Linux, making `<b>get-default</b>` a standard tool for querying boot configuration.


title: SYNOPSIS
content:
<b>paccapability</b> [<i>OPTION</i>...] {<i>&lt;package_name&gt;</i> | <i>&lt;executable_path&gt;</i>}


title: PARAMETERS
content:
<b>-p, --package <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of an Arch Linux package to query its binaries for capabilities.<br><br><b>-f, --file <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the full path to an executable file to query its capabilities directly.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all capabilities found for the specified target (package or file).<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases verbosity, showing more detailed information about capabilities and associated files.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
The command <i>paccapability</i> is a <B>hypothetical</B> tool designed to inspect and manage Linux capabilities associated with executables provided by packages, particularly within the Arch Linux ecosystem (hence the 'pac' prefix). Linux capabilities are a security feature that allows fine-grained control over process privileges, breaking down the traditional root/non-root dichotomy. Instead of granting full root access, a process can be granted only specific capabilities (e.g., <B>CAP_NET_RAW</B> for raw socket access).<br><br>If it existed, <i>paccapability</i> would enable system administrators and security auditors to:<br>- Query the capabilities set on binary files installed by specific packages.<br>- Identify packages whose executables have elevated capabilities, potentially flagging security risks.<br>- Understand the privilege requirements of applications within the Arch Linux environment.<br><br>This command would bridge the gap between package management and Linux capability management, offering insights into the security posture of installed software.


title: CAVEATS
content:
It is <B>crucial to note</B> that <i>paccapability</i> is a <B>hypothetical command</B> and does not exist as a standard tool in any current Linux distribution, including Arch Linux. The descriptions provided are based on an inference of its name ('pac' for package, 'capability' for Linux capabilities).<br><br>Managing Linux capabilities requires a deep understanding of system security. Incorrectly setting or modifying capabilities can lead to significant security vulnerabilities or system instability. Real-world capability management is typically handled by tools like <b>setcap(8)</b> and <b>getcap(8)</b> on specific file paths, or via service manager configurations.


title: SECURITY IMPLICATIONS
content:
If implemented, <i>paccapability</i> would be invaluable for security auditing. It could help identify executables shipped by packages that carry unnecessary or excessive capabilities, which could be exploited in supply chain attacks or privilege escalation scenarios. By providing an overview of package-specific capabilities, it would empower administrators to make informed decisions about software trust and system hardening.


title: INTEGRATION WITH PACKAGE MANAGERS
content:
A real-world implementation would likely require deep integration with <b>pacman</b>'s database to query file lists associated with packages. It might also need to interact with package metadata to understand developer-intended capabilities, although direct capability setting is usually a post-installation step or handled by the distribution's packaging policies rather than the package manager itself.


title: HISTORY
content:
As a <B>hypothetical command</B>, <i>paccapability</i> has no actual development history. Its conceptualization arises from the potential need to integrate Linux capability auditing with package management systems like Arch Linux's <b>pacman</b>, offering a unified view of package-related privileges.


title: TLDR
content:
<b>List all available capabilities</b>`paccapability`<br><b>Check for the specified capability</b>`paccapability [nls|downloader|signatures]`<br><b>Display help</b>`paccapability --help`<br><b>Display version</b>`paccapability --version`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>-L, --library=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom <i>JACK</i> emulation library path to preload instead of the default.<br><br><b>-p, --proxy=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to a specific <i>PipeWire</i> proxy socket for advanced configurations.<br><br><b>-P, --policy=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to a <i>PipeWire</i> policy file to override default settings.<br><br><b>COMMAND</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <i>JACK</i> application or command to execute, which will then run under <i>PipeWire</i>'s <i>JACK</i> compatibility layer.<br><br><b>ARGUMENTS...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments passed directly to the <i>COMMAND</i> being executed.<br><br>


title: DESCRIPTION
content:
<b>pw-jack</b> is a utility that enables <i>JACK</i> (<i>JACK Audio Connection Kit</i>) applications to run seamlessly on a <i>PipeWire</i> sound server. Instead of requiring a separate <i>JACK</i> daemon (like <b>jackd</b>), <b>pw-jack</b> effectively "wraps" a <i>JACK</i> application, making it believe it's interacting with a native <i>JACK</i> server. <br><br>It achieves this by preloading <i>PipeWire</i>'s <i>JACK</i> emulation library (typically using <b>LD_PRELOAD</b>), which intercepts <i>JACK</i> API calls from the application and translates them into <i>PipeWire</i> equivalents. This allows users to leverage <i>PipeWire</i>'s modern architecture, low-latency capabilities, and unified multimedia handling, while still utilizing their existing suite of professional audio software designed for <i>JACK</i>. It simplifies audio setups by consolidating different audio subsystems into one, reducing resource usage and potential conflicts.


title: CAVEATS
content:
While <b>pw-jack</b> offers excellent <i>JACK</i> compatibility, some highly specialized or older <i>JACK</i> applications might exhibit subtle behavioral differences or require specific configurations that are not perfectly emulated. Very demanding low-latency scenarios might also need fine-tuning of <i>PipeWire</i>'s configuration (e.g., buffer sizes, sample rates) for optimal performance. It relies on a running and correctly configured <i>PipeWire</i> daemon. Not all obscure <i>JACK</i> API calls might be fully supported, potentially leading to issues with rare software.


title: ENVIRONMENT VARIABLES AND OPERATION
content:
<b>pw-jack</b> typically operates by setting the <b>LD_PRELOAD</b> environment variable to inject the <i>PipeWire</i> <i>JACK</i> compatibility library into the target application's process. This dynamic linking trick allows <i>PipeWire</i> to intercept and handle <i>JACK</i> API calls. This means the application itself doesn't need to be recompiled or specifically aware of <i>PipeWire</i>; it simply "thinks" it's talking to a <i>JACK</i> server.


title: CONFIGURATION
content:
The behavior of <i>PipeWire</i>'s <i>JACK</i> compatibility, including parameters like buffer sizes, sample rates, and latency settings, can be configured through <i>PipeWire</i>'s configuration files, often found in <b>/etc/pipewire/jack.conf</b> or user-specific overrides in <b>~/.config/pipewire/jack.conf</b>. Adjusting these settings can be important for optimizing performance for specific audio tasks and hardware.


title: HISTORY
content:
The development of <i>PipeWire</i> aimed to create a unified, modern multimedia framework for <i>Linux</i>, addressing limitations of existing systems like <i>PulseAudio</i> and <i>JACK</i>. A core design goal was to ensure broad compatibility with existing audio applications, especially professional audio software heavily reliant on <i>JACK</i>. <b>pw-jack</b> emerged as a crucial component to achieve this. It represents <i>PipeWire</i>'s commitment to enabling a smooth transition for users and developers from traditional <i>JACK</i> setups to the new <i>PipeWire</i> ecosystem, integrating professional audio workflows within a versatile, low-latency environment.


title: TLDR
content:
<b>Run a command with its arguments, using PipeWire</b>`pw-jack [command] [argument1 argument2 ...]`<br><b>Run a command in verbose mode</b>`pw-jack -v [command]`<br><b>Connect to a specific remote PipeWire instance</b>`pw-jack -r [remote_instance_name] [command]`<br><b>Display help</b>`pw-jack -h`


title: PARAMETERS
content:
<b>new_root</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the directory that will become the new root filesystem.<br><br><b>old_root_mountpoint</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Optional)</i> The path within the <i>new_root</i> where the original root filesystem will be moved. If omitted, the old root might be unmounted or handled implicitly.<br><br>


title: DESCRIPTION
content:
<code>run_init</code> is a utility primarily found in embedded systems, initramfs/initrd environments, or BusyBox installations. Its core function is to facilitate the transition from a temporary root filesystem (like an initramfs) to the final, persistent root filesystem.<br><br>It achieves this by performing operations similar to <code>pivot_root</code>, which involves moving the current root filesystem to a new location within the new root (e.g., <code>/old_root</code>), then making the new filesystem the actual root, and finally executing the <code>init</code> process from the new root filesystem. This command is crucial during the Linux boot sequence, especially when the kernel loads an initial ramdisk to set up the environment before switching to the disk-based root. It ensures that services can be properly started from the new root without needing to reboot. It is rarely invoked directly by users on a running system.


title: CAVEATS
content:
<code>run_init</code> is not a standard command found in most userland <code>usr/bin</code> directories on typical desktop or server Linux distributions. It's often a component of BusyBox or a custom script used during system boot. Incorrect usage can lead to an unbootable system or data loss.<br><br>It requires root privileges to operate and typically involves critical filesystem manipulation. Therefore, it should only be used in controlled boot environments or by experienced system administrators. Its exact behavior can vary slightly between different implementations.


title: USAGE CONTEXTS
content:
This command is almost exclusively used during the boot process of a Linux system, particularly when an <i>initramfs</i> or <i>initrd</i> is employed. It allows the kernel to load a minimal set of drivers and utilities from RAM, resolve dependencies for mounting the actual root filesystem (e.g., encrypted root, network-mounted root), and then cleanly transition to that final root filesystem and its designated <i>init</i> process. It's rarely invoked manually on a running system, though it can be used for advanced system recovery or custom boot setups.


title: HISTORY
content:
The concept behind <code>run_init</code> dates back to the early days of Linux initramfs and initrd (initial RAM disk) development. As systems became more complex, especially with modular kernels and diverse hardware, a temporary root filesystem was needed to load essential drivers before accessing the real root filesystem.<br><br><code>run_init</code> (or similar scripts/utilities) emerged as a way to perform the final switch from this temporary environment to the persistent root, ensuring a smooth transition of process control to the system's actual <code>init</code> program. BusyBox, a popular utility collection for embedded Linux, provides a widely used <code>run-init</code> applet, standardizing its usage in many minimalist environments.


title: TLDR
content:
<b>Run a script in the init script context</b>`sudo run_init [path/to/script]`<br><b>Run a script with arguments</b>`sudo run_init [path/to/script] [start|stop|restart]`<br><b>Run a script and specify the init script context explicitly</b>`sudo run_init [[-t|--type]] [context_type] [path/to/script]`<br><b>Display the context that would be used without running the script</b>`sudo run_init [[-n|--dry-run]] [path/to/script]`


title: PARAMETERS
content:
<b><b>-a</b>, <b>--auditlog</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Analyze audit log file(s). By default, it processes <i>/var/log/audit/audit.log</i>.<br><br><b><b>-l</b> <<i>ID</i>>, <b>--list</b>=<<i>ID</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List alerts. If an <i>ID</i> is provided, it lists details for that specific alert ID.<br><br><b><b>-e</b> <<i>ID</i>>, <b>--explain</b>=<<i>ID</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explain a specific alert <i>ID</i> in detail, providing potential solutions.<br><br><b><b>-s</b> <<i>TIME</i>>, <b>--since</b>=<<i>TIME</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Analyze denials that occurred since a specified <i>TIME</i>. Format usually 'YYYY-MM-DD HH:MM:SS'.<br><br><b><b>-d</b> <<i>DATABASE</i>>, <b>--database</b>=<<i>DATABASE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate database for alerts instead of the default.<br><br><b><b>-m</b> <<i>ID</i>>, <b>--makemodule</b>=<<i>ID</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a custom SELinux policy module for the specified alert <i>ID</i>.<br><br><b><b>-o</b> <<i>FILE</i>>, <b>--output</b>=<<i>FILE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the analysis output to the specified <i>FILE</i> instead of standard output.<br><br><b><b>-p</b>, <b>--permissive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suggest making a domain permissive instead of granting specific access. (Use with caution).<br><br><b><b>-P</b> <<i>PATH</i>>, <b>--policy-root</b>=<<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate SELinux policy root directory.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br>


title: DESCRIPTION
content:
The <i>sealert</i> command is a crucial tool within the SELinux ecosystem, designed to assist system administrators in understanding and resolving SELinux access denials, also known as AVCs (Access Vector Cache denials). When SELinux prevents an operation, it logs a denial message to the audit log (usually <i>/var/log/audit/audit.log</i>). <i>sealert</i> parses these often cryptic messages, correlates them with known issues and installed policy, and provides a human-readable explanation of what happened. More importantly, it often suggests specific actions to resolve the denial, such as setting a boolean, changing a file context with <i>chcon</i> or <i>restorecon</i>, or even generating a custom SELinux policy module. This significantly reduces the complexity of troubleshooting SELinux issues, making it more accessible to users who are not SELinux experts. It relies on the <i>setroubleshoot-server</i> service being active to perform its analysis.


title: CAVEATS
content:
<i>sealert</i> relies on the <i>setroubleshoot-server</i> service being installed and running to analyze audit logs and provide suggestions. If this service is not active, <i>sealert</i> may not be able to retrieve or explain alerts. The suggested solutions, especially those involving generating policy modules, should be reviewed carefully by an administrator to ensure they align with the system's security requirements. Blindly applying suggested changes can weaken the system's security posture. Analyzing large audit logs without filters can generate extensive output.


title: ANALYZING SPECIFIC DENIALS
content:
To analyze a specific SELinux denial, you often first need to identify its unique ID. This can be done by running <i>sealert -a /var/log/audit/audit.log</i> and looking for the "ID" field in the output. Once you have the ID, you can use <i>sealert -l <ID></i> or <i>sealert -e <ID></i> to get detailed information and solution suggestions for that particular event.


title: GENERATING LOCAL POLICY MODULES
content:
For complex or application-specific denials that cannot be resolved by existing booleans or file context changes, <i>sealert -m <ID></i> can generate a local policy module (<i>.te</i> and <i>.if</i> files) that, when compiled and loaded, will permit the specific action that was denied. This provides a precise way to customize policy without disabling SELinux or making overly broad changes.


title: HISTORY
content:
The <i>sealert</i> command is part of the <i>setroubleshoot</i> project, which was developed to address the steep learning curve associated with SELinux by providing automated analysis and user-friendly explanations for SELinux denials. Its development aimed to make SELinux more approachable for system administrators by translating raw audit log messages into actionable advice, thereby improving the overall manageability of SELinux-enabled systems. It evolved to become an essential tool for diagnosing and resolving SELinux-related issues on Red Hat-based distributions and other systems employing the <i>setroubleshoot</i> framework.


title: TLDR
content:
<b>Analyze all recent SELinux denials</b>`sudo sealert [[-a|--analyze]] [/var/log/audit/audit.log]`<br><b>Analyze a specific alert ID from system logs</b>`sudo sealert [[-l|--lookupid]] [alert_id]`<br><b>Display a summary of recent SELinux alerts</b>`sudo sealert [[-b|--browser]]`<br><b>Monitor audit log in real-time for new alerts</b>`sudo tail [[-f|--follow]] [/var/log/audit/audit.log] | sealert [[-l|--lookupid]] -`


title: PARAMETERS
content:
<b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show what actions would be performed without actually making any changes to the system.<br><br><b><b>--root=PATH</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on a specified alternative root directory <i>PATH</i> instead of the host's root. Useful for chroot or container environments.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the systemd system manager instance. This is the default behavior if no other manager is specified.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the systemd user manager instance for the current user.<br><br><b><b>--runtime</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply changes only to the runtime configuration, meaning they will not persist across reboots. This affects <i>/run/systemd/system/</i>.<br><br><b><b>--global</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--user</b>, this applies preset policies globally for all users, not just the current one. It usually affects <i>/etc/systemd/user-preset/</i>.<br><br><b><b>--no-reload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not reload the systemd manager configuration after applying preset changes. This might leave the manager with an outdated view of unit states.<br><br><b><b>--no-ask-password</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not prompt for passwords. This can be useful in automated scripts where interactive password input is not possible.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output from the command, only showing critical errors.<br><br><b><I>PRESETS...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more specific preset policy files to apply (e.g., <i>90-default.preset</i>). If omitted, all applicable preset files found in the configured directories will be used.<br><br>


title: DESCRIPTION
content:
The <b>systemctl-preset</b> command is a utility within the systemd ecosystem designed to apply 'preset' properties to systemd units. Presets are configuration files that define the default enabled or disabled state for various systemd units (services, sockets, timers, etc.) upon their installation or system setup. This command is frequently invoked by package managers after installing new software packages or by system administrators to enforce a standardized initial configuration for services. <br><br>It operates by reading preset files from a defined hierarchy of directories, such as <i>/etc/systemd/system-preset/</i>, <i>/run/systemd/system-preset/</i>, and <i>/usr/lib/systemd/system-preset/</i>. The command evaluates these files, applying their rules to enable, disable, or 'try-enable' units accordingly. Essentially, <b>systemctl-preset</b> acts as an automated front-end to <b>systemctl enable</b> or <b>systemctl disable</b>, driven by the logic specified in the preset files, ensuring consistency in the initial state of services across different installations or system reconfigurations.


title: CAVEATS
content:
<b>systemctl-preset</b> only manages the enabled/disabled state of units; it does not start, stop, or restart services directly. Its functionality is entirely dependent on the content and correctness of the preset files; misconfigured files can lead to unintended service states. The order of preset files is crucial, as files processed later (lexicographically) can override settings from earlier files. Manual changes to unit states (via <b>systemctl enable/disable</b>) can be overridden by <b>systemctl-preset</b> if it is run again, unless specific preset files exclude those units.


title: PRESET FILES LOCATION
content:
Preset files are searched for in a specific order of directories, with later directories overriding earlier ones:<br><ul><li><i>/etc/systemd/system-preset/</i></li><li><i>/run/systemd/system-preset/</i></li><li><i>/usr/local/lib/systemd/system-preset/</i></li><li><i>/usr/lib/systemd/system-preset/</i></li></ul><br>For user presets, similar paths under <i>~/.config/systemd/user-preset/</i>, <i>~/.local/share/systemd/user-preset/</i>, etc., are used.


title: PRESET FILE FORMAT
content:
Preset files are simple plain text files, typically named with a numerical prefix (e.g., <i>10-default.preset</i>). Each line in a preset file specifies an action and a unit or unit pattern:<br><ul><li><b>enable</b> <I>unit_name.service</I></li><li><b>disable</b> <I>unit_name.service</I></li><li><b>try-enable</b> <I>unit_name.service</I> (enables if no previous preset disabled it)</li><li><b>skip</b> <I>unit_name.service</I> (ignores the unit for subsequent presets)</li></ul><br>Wildcards (e.g., <i>*.service</i>) can be used to apply actions to multiple units. Comments start with <b>#</b>.


title: HISTORY
content:
The <b>systemctl-preset</b> command is an integral part of the systemd init system, which was first introduced as a replacement for the traditional SysVinit daemon. It was developed to streamline and standardize the management of service states during operating system installation, package upgrades, and system provisioning. Its introduction reflects systemd's broader goal of providing a more unified and robust system management framework. The concept of presets allows distributors and system administrators to define consistent default behaviors for services, reducing manual configuration effort and improving system predictability. It has evolved alongside the systemd project, continuously integrating with new systemd features and conventions.


title: TLDR
content:
<b>Reset the enablement state to preset defaults</b>`systemctl preset [unit1 unit2 ...]`<br><b>Enable only if marked as enabled in the preset policy</b>`systemctl preset [unit] --preset-mode enable-only`<br><b>Disable only if marked as disabled in the preset policy</b>`systemctl preset [unit] --preset-mode disable-only`<br><b>Suppress output and return only the exit code</b>`systemctl preset [unit] [[-q|--quiet]]`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help options and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br><b>-p <i>ID</i>, --port=<i>ID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID of the PipeWire MIDI input port to connect to. If not specified, it attempts to connect to the first available MIDI input port.<br><br><b>-P <i>NAME</i>, --port-name=<i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the PipeWire MIDI input port to connect to. This provides an alternative way to specify the target port instead of using its numerical ID.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information about the received MIDI events. This can include timestamps or additional context.<br><br><b>-r, --raw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump raw MIDI data in hexadecimal format. This can be useful for low-level debugging or when the standard parsed output is insufficient.<br><br><b>-N, --no-colors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable colored output. By default, <i>pw-mididump</i> might use colors to differentiate between various types of MIDI messages for better readability. This option turns off that formatting.<br><br>


title: DESCRIPTION
content:
<i>pw-mididump</i> is a powerful utility designed to observe and display MIDI events flowing through PipeWire audio/video server ports. It allows users to select a specific PipeWire MIDI input port, or automatically connect to the first available, and then prints all MIDI messages received on that port to standard output in a human-readable format. This tool is invaluable for debugging MIDI-related issues, monitoring MIDI input from hardware devices or software applications, or understanding how MIDI data is processed within a PipeWire-based system. It can show various types of MIDI messages, including note on/off events, control changes, program changes, and system exclusive messages, making it a critical diagnostic aid for developers, musicians, and users dealing with MIDI instruments and applications in a PipeWire environment. Its output can be used to verify MIDI signal integrity and troubleshoot connectivity problems.


title: CAVEATS
content:
<i>pw-mididump</i> requires a running PipeWire instance to function. It only displays MIDI input from a <i>single</i> specified port and does not provide functionality to send MIDI messages or route them. The output can be very verbose, especially with active MIDI streams, potentially flooding the terminal. Users should ensure their MIDI devices are properly connected and recognized by PipeWire before using this command.


title: HISTORY
content:
<i>pw-mididump</i> emerged as part of the PipeWire project, a relatively modern multimedia server designed to unify audio, video, and MIDI processing on Linux. Its development is intertwined with PipeWire's growing MIDI capabilities, which aim to provide a robust and flexible framework for handling musical instrument digital interface data. As PipeWire evolved to offer a comprehensive replacement for older sound servers like PulseAudio and JACK, tools like <i>pw-mididump</i> became essential for diagnostics and debugging, reinforcing PipeWire's commitment to supporting professional audio and music production workflows.


title: TLDR
content:
<b>Listen for and dump all incoming MIDI events</b>`pw-mididump`<br><b>Dump MIDI events from a specific file</b>`pw-mididump [path/to/file.mid]`<br><b>Connect to a specific remote PipeWire instance</b>`pw-mididump [[-r|--remote]] [remote_instance_name]`<br><b>Display help</b>`pw-mididump [[-h|--help]]`


title: SYNOPSIS
content:
<b>cliphist</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<<i>ARGS</i>>]<br><b>cliphist store</b><br><b>cliphist list</b> [<i>-c</i> | <i>-n <NUM></i> | <i>-j</i> | <i>-z</i> | <i>-t <TAB_INDEX></i>]<br><b>cliphist print</b> <<i>INDEX</i>><br><b>cliphist delete</b> [<<i>INDEX</i>>]<br><b>cliphist wipe</b><br><b>cliphist broot</b><br><b>cliphist listen</b><br><b>cliphist version</b><br><b>cliphist help</b><br>


title: PARAMETERS
content:
<b><i>COMMAND</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the operation to perform. Common commands include <b>store</b>, <b>list</b>, <b>print</b>, <b>delete</b>, and <b>wipe</b>.<br><br><b><b>-c</b>, <b>--clipboard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>list</b>, also prints the current clipboard content in addition to history.<br><br><b><b>-n</b> <<i>NUMBER</i>>, <b>--num</b> <<i>NUMBER</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the number of history entries displayed by <b>list</b>.<br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs clipboard history in JSON format, useful for scripting.<br><br><b><b>-z</b>, <b>--zero</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Separates output entries with null bytes, commonly used with <b>xargs -0</b>.<br><br><b><b>-t</b> <<i>TAB_INDEX</i>>, <b>--tab</b> <<i>TAB_INDEX</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches to a specified tab index for listing or other operations (if tab feature is enabled/used).<br><br><b><b>-d</b> <<i>PATH</i>>, <b>--dir</b> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory for storing the clipboard history database.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message for <b>cliphist</b> or a specific subcommand.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>cliphist</b> utility.<br><br>


title: DESCRIPTION
content:
<i>cliphist</i> is a lightweight clipboard history manager designed specifically for Wayland compositors. It addresses the common need for users to access previous clipboard entries, a feature often missing in native Wayland environments. The command works by storing all text copied to the Wayland clipboard (via <i>wl-copy</i>) into a local database. Users can then retrieve these past entries, print them, or select them interactively using external tools like <i>dmenu</i> or <i>wofi</i>. This makes <i>cliphist</i> an essential utility for enhancing productivity on Wayland, allowing for quick recall and reuse of previously copied text snippets without needing to re-copy them. It supports various operations like listing, searching, deleting, and printing specific entries from the history.


title: CAVEATS
content:
<i>cliphist</i> is designed exclusively for Wayland compositors and relies on <i>wl-copy</i> and <i>wl-paste</i> for clipboard interaction. It will not function in X11 environments. Interactive selection of clipboard history entries typically requires an external dmenu-compatible program like <i>dmenu</i>, <i>wofi</i>, or <i>rofi</i>, which must be installed and configured separately.


title: INTERACTIVE SELECTION
content:
To make <i>cliphist</i> interactive, users commonly pipe its <b>list</b> output to a dmenu-compatible tool. For example, <code>cliphist list | wofi --dmenu | cliphist print</code> allows selecting an entry visually and pasting it.


title: DATA STORAGE
content:
By default, <i>cliphist</i> stores its history database in <code>~/.local/share/cliphist/db</code>. This allows for persistent storage of clipboard entries across sessions.


title: LISTEN MODE
content:
The <b>cliphist listen</b> command starts a daemon that continuously monitors the Wayland clipboard for new entries, automatically storing them as they are copied.


title: HISTORY
content:
<i>cliphist</i> emerged as a solution to fill a functional gap in the Wayland ecosystem. While X11 had various clipboard tools and managers, Wayland initially lacked a widely adopted, simple, and effective command-line utility for managing clipboard history. Developed by a community member, it quickly gained popularity as a go-to tool for Wayland users seeking to replicate the convenience of a persistent clipboard history. Its design focuses on simplicity and integration with existing Wayland tools and command-line workflows, leveraging <i>wl-copy</i> and <i>wl-paste</i> for its core operations.


title: TLDR
content:
<b>List clipboard history entries</b>`cliphist list`<br><b>Select and copy a previous clipboard entry (using fzf)</b>`cliphist list | fzf | cliphist decode | wl-copy`<br><b>Delete all stored clipboard entries</b>`cliphist wipe`<br><b>Delete a specific clipboard entry by ID</b>`cliphist delete [id]`<br><b>Save the current clipboard content manually</b>`wl-paste | cliphist store`


title: PARAMETERS
content:
<b><code>--no-block</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not wait for the operation to complete</i>. The command returns immediately after sending the request to systemd, allowing subsequent commands to run without delay.<br><br><b><code>-f</code>, <code>--force</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Force the operation</i>. When used with suspend, hibernate, or hybrid-sleep, this option can bypass certain checks or inhibitions that might otherwise prevent the system from entering the desired power state. Use with caution as it might override safety mechanisms.<br><br>


title: DESCRIPTION
content:
The <b>systemctl hybrid-sleep</b> command initiates a hybrid suspend operation on the Linux system. This unique power-saving state combines the benefits of both traditional suspend-to-RAM (sleep) and suspend-to-disk (hibernate). When <b>hybrid-sleep</b> is invoked, the system first writes its current state (RAM contents) to a swap partition or file, similar to hibernation. Concurrently, or immediately after, it enters a low-power suspend-to-RAM state.<br><br>The primary advantage of this approach is resilience against power loss. If power remains, the system can wake up quickly from RAM, just like a regular suspend. However, if power is interrupted (e.g., battery depletion), the system can still resume its previous state from the data saved on disk once power is restored. This provides a robust solution for laptops and critical systems where both quick resume and data integrity are important. Proper configuration, including sufficient swap space, is crucial for <b>hybrid-sleep</b> to function correctly.


title: CAVEATS
content:
<b>Caveats and Limitations:</b><br><i>1. Swap Space Requirement:</i> Requires sufficient swap space or a dedicated swap partition at least as large as the system's RAM for the suspend-to-disk portion.<br><i>2. Hardware/Driver Support:</i> Not all hardware or drivers might fully support hybrid sleep, potentially leading to issues with resuming or unstable behavior.<br><i>3. Initial Suspend Time:</i> The initial process of saving state to disk can take longer than a simple suspend-to-RAM.<br><i>4. Resume Time Variability:</i> Resume time can vary; if resuming from RAM, it's fast; if from disk after power loss, it's slower (similar to a full hibernate).<br><i>5. Data Integrity:</i> Ensure all necessary services and applications handle system state changes gracefully to avoid data corruption.


title: HOW IT WORKS WITH SYSTEMD TARGETS
content:
When <b>systemctl hybrid-sleep</b> is executed, <b>systemd</b> activates the <code>hybrid-sleep.target</code>. This target pulls in <code>systemd-suspend-hybrid.service</code>, which is responsible for coordinating the actual suspend-to-disk and suspend-to-RAM operations. Before entering the low-power state, <b>systemd</b> executes all services configured to run before <code>sleep.target</code> (via <code>Before=sleep.target</code> or <code>Requires=sleep.target</code>). After resuming, services configured to run after <code>sleep.target</code> are executed, ensuring a smooth transition back to the active state and proper re-initialization of system components.


title: HISTORY
content:
The concept of hybrid sleep predates <b>systemd</b>, often implemented through custom scripts or <i>pm-utils</i> in older Linux systems. With the widespread adoption of <b>systemd</b> as the default init system in many Linux distributions, <b>systemctl</b> became the standard interface for managing system power states. The <b>hybrid-sleep</b> verb was introduced as part of <b>systemd</b>'s integrated power management, simplifying its invocation and integrating it with systemd's robust service and target management model.


title: SEE ALSO
content:
systemctl(1), systemctl suspend(1), systemctl hibernate(1), systemd-sleep.service(8), hybrid-sleep.target(8)


title: TLDR
content:
<b>Put the system into hybrid sleep immediately</b>`systemctl hybrid-sleep`<br><b>Force hybrid sleep even if inhibitors are present</b>`systemctl hybrid-sleep --force`<br><b>Put the system into hybrid sleep without sending a wall message to logged-in users</b>`systemctl hybrid-sleep --no-wall`


title: PARAMETERS
content:
<b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows all loaded timer units, whether they are currently active, inactive, enabled, or disabled. By default, only active timers are displayed.<br><br><b><b>--no-pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the use of a pager for the output, printing the entire content directly to the standard output.<br><br><b><b>--plain</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a plain-text table without graphical elements or truncation. This format is particularly useful for scripting or parsing the output programmatically.<br><br><b><b>--full</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays full unit names without truncation. By default, long unit names might be ellipsized to fit the terminal width.<br><br><b><b>--value</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used in conjunction with <b>--plain</b>, this option only prints the values of the output table, omitting column headers and unit names. Ideal for extracting specific data points.<br><br><b><b>--output=</b><i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Common formats include <b>json</b>, <b>json-pretty</b>, <b>yaml</b>, <b>json-sse</b>, and <b>plain</b>, allowing for machine-readable or human-readable structured output.<br><br><b><b>--output-config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the unit configuration as a table, which can be useful for debugging or reviewing timer settings.<br><br><b><b>--output-pager</b>[<i>=BOOL</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls whether to pipe output to a pager when machine-readable formats like <b>--output=json</b> are used. Default is <b>no</b>.<br><br><b><b>--output-truncated-columns=no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents truncation of column content in the output, ensuring all data is fully visible.<br><br><b><b>--output-abbreviate-columns=no</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents abbreviation of column headers in the output, showing the full header names.<br><br>


title: DESCRIPTION
content:
The <b>systemctl list-timers</b> command is a powerful utility within the systemd ecosystem used to display detailed information about active and loaded timer units. Timer units are systemd's modern and flexible alternative to traditional cron jobs, enabling the execution of services at specific times or intervals. This command provides a comprehensive overview, including when each timer last ran, when it's scheduled to run next, and the associated service unit it activates. It's an indispensable tool for system administrators to manage, monitor, and troubleshoot scheduled tasks, ensuring system maintenance and automated operations run as expected. By default, it shows active timers, but various options allow for viewing all loaded timers regardless of their state, customizing the output format for scripting, and displaying full unit names without truncation, making it highly adaptable to different use cases.


title: CAVEATS
content:
<ul><li><b>Traditional Cron Jobs Not Shown:</b> <b>systemctl list-timers</b> only displays timers managed by systemd. Traditional cron jobs configured via <b>crontab -e</b> or files in <b>/etc/cron.*</b> will not appear in this output.</li><li><b>'NEXT' Time for One-Shot Timers:</b> If a timer is configured to run only once and has already executed, the 'NEXT' column might not show a future time until the timer is explicitly reactivated or reloaded.</li><li><b>Event-Based Timers:</b> Timers relying on specific system events (e.g., <b>OnBoot</b>) might not show a clear 'NEXT' time in the same predictable manner as interval-based timers (e.g., <b>OnCalendar</b>, <b>OnActiveSec</b>).</li></ul>


title: UNDERSTANDING TIMER OUTPUT COLUMNS
content:
The default output of <b>systemctl list-timers</b> presents several key columns that provide a quick overview of timer states:<br><br><i><b>NEXT</b></i>: The next scheduled time the timer is set to activate its associated service.<br><i><b>LEFT</b></i>: The remaining time duration until the next scheduled activation.<br><i><b>LAST</b></i>: The last time the timer successfully activated its associated service.<br><i><b>PASSED</b></i>: The time duration that has elapsed since the last activation.<br><i><b>UNIT</b></i>: The name of the timer unit itself (e.g., <b>mybackup.timer</b>).<br><i><b>ACTIVATES</b></i>: The name of the service unit that this timer is configured to activate (e.g., <b>mybackup.service</b>).<br><br>This structured output is vital for quickly assessing the operational status and schedule of all systemd timers.


title: CREATING AND MANAGING TIMER UNITS
content:
To implement a custom scheduled task using systemd timers, you typically create two unit files: a service unit (e.g., <b>/etc/systemd/system/mytask.service</b>) which defines <i>what</i> command or script to execute, and a corresponding timer unit (e.g., <b>/etc/systemd/system/mytask.timer</b>) which specifies <i>when</i> the service should run. The timer unit uses directives like <b>OnCalendar=</b> for specific dates/times or <b>OnUnitActiveSec=</b> for interval-based scheduling.<br><br>After creating or modifying these unit files, you must run <b>sudo systemctl daemon-reload</b> to make systemd aware of the changes. Then, to enable and start the timer, use <b>sudo systemctl enable --now mytask.timer</b>. This command ensures the timer starts immediately and persists across reboots.


title: HISTORY
content:
The <b>systemctl list-timers</b> command emerged as an essential component of the systemd init system, which gained prominence in the early 2010s as the default init system for many major Linux distributions. As systemd introduced its sophisticated timer unit functionality as a modern alternative to traditional cron, the <b>list-timers</b> subcommand was developed to provide administrators with a native, integrated method to inspect and manage these scheduled tasks. Its design reflects systemd's broader philosophy of unified service management, detailed status reporting, and robust scheduling capabilities, seamlessly integrating timers into the overall system administration workflow.


title: TLDR
content:
<b>List all active timers</b>`systemctl list-timers`<br><b>List all timers, including inactive ones</b>`systemctl list-timers [[-a|--all]]`<br><b>List timers matching a pattern</b>`systemctl list-timers [pattern]`<br><b>List timers matching a specific state</b>`systemctl list-timers --state [active|inactive|failed|...]`


title: TLDR
content:
<b>Search for all allow rules</b>`sesearch --allow`<br><b>Search for rules related to a specific type</b>`sesearch --allow [[-t|--target]] [type_name]`<br><b>Search for rules related to a specific source type</b>`sesearch --allow [[-s|--source]] [source_type]`<br><b>Search for rules that allow a specific class and permission</b>`sesearch --allow [[-c|--class]] [class_name] [[-p|--perm]] [permission]`<br><b>Search for rules with a specific target type and class</b>`sesearch --allow [[-t|--target]] [type_name] [[-c|--class]] [class_name]`<br><b>Display more detailed information about matched rules</b>`sesearch --allow [[-t|--target]] [type_name] [[-v|--verbose]]`


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies one or more unit names (e.g., <i>apache2.service</i>, <i>sshd.socket</i>). If provided, presets are applied only to these specific units instead of all installed units.<br><br><b>--root=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on a <b>systemd</b> instance rooted in the specified directory <i>PATH</i> instead of the default <i>/</i>. This is useful for chroot or container environments.<br><br><b>--runtime</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes changes only in the runtime configuration, meaning they will be lost on the next system reboot. This is useful for temporary state changes.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows what actions would be performed without actually executing them. This is helpful for previewing the impact of the command.<br><br><b>--no-reload</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>systemd</b> from reloading its configuration after making changes. This might be useful in scripts where a manual reload will follow.<br><br>


title: DESCRIPTION
content:
The <b>systemctl preset-all</b> command is a crucial utility within the <b>systemd</b> ecosystem, designed to apply the predefined enablement policies (presets) to all installed <b>systemd</b> units. These presets determine whether a particular service, socket, timer, or other <b>systemd</b> unit should be enabled or disabled by default at boot time. This command is particularly useful after a new system installation, a major package upgrade, or when wishing to revert unit enablement states to the defaults specified by package maintainers or system administrators. When executed, <b>preset-all</b> iterates through all available unit files and consults the preset files (typically found in <i>/etc/systemd/system/*.preset</i> and <i>/usr/lib/systemd/system/*.preset</i>). Based on the rules defined in these preset files, it then enables or disables the corresponding units. This ensures a consistent and predictable initial state for system services, aligning with the distribution's recommended configuration. It can also be run with specific unit names as arguments to apply presets only to those units.


title: CAVEATS
content:
<ul><li>Requires root privileges to execute, as it modifies system-wide unit enablement states.</li><li>Applying presets can change the behavior of your system on subsequent reboots by enabling or disabling services that were previously in a different state.</li><li>Custom configurations in <i>/etc/systemd/system/*.conf</i> or explicit manual <b>systemctl enable</b>/<b>disable</b> commands might be overridden if the preset rules conflict. Ensure you understand your preset files.</li></ul>


title: HOW PRESETS WORK
content:
Preset files are simple text files with a <i>.preset</i> extension, typically located in <i>/usr/lib/systemd/system/*.preset</i> (provided by packages) and <i>/etc/systemd/system/*.preset</i> (for local overrides). They contain rules like <i>enable unit.service</i> or <i>disable unit.service</i>. If multiple preset files define rules for the same unit, the one in <i>/etc</i> takes precedence, and within a directory, files are processed in lexicographical order.


title: IMPACT ON EXISTING SERVICES
content:
When <b>systemctl preset-all</b> is run, it affects the <i>enablement state</i> of units, meaning whether they start at boot. It does <b>not</b> directly stop or start currently running services. For immediate changes, <b>systemctl start</b> or <b>systemctl stop</b> would be required after <b>preset-all</b>.


title: HISTORY
content:
The <b>preset-all</b> subcommand, along with the <b>systemd</b> preset mechanism, has been an integral part of <b>systemd</b> since its early development. It was introduced to standardize and simplify the initial configuration of services across different Linux distributions using <b>systemd</b>, offering a declarative way for package maintainers to specify default enablement policies for their services. This significantly improved consistency compared to previous init systems.


title: TLDR
content:
<b>Reset the enablement state of all installed units</b>`sudo systemctl preset-all`<br><b>Enable only if marked as enabled in the preset policy</b>`sudo systemctl preset-all --preset-mode enable-only`<br><b>Disable only if marked as disabled in the preset policy</b>`sudo systemctl preset-all --preset-mode disable-only`<br><b>Suppress output and return only the exit code</b>`sudo systemctl preset-all [[-q|--quiet]]`


title: PARAMETERS
content:
<b>-f, --full</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show full log entries, including detailed information.<br><br><b>-i, --install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display only package installation events.<br><br><b>-r, --remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display only package removal events.<br><br><b>-u, --upgrade</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display only package upgrade events.<br><br><b>-s, --sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display only database synchronization events.<br><br><b>-d, --date <DATE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log entries to a specific date (e.g., <i>YYYY-MM-DD</i>).<br><br><b>-l, --limit <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the output to the last <i>N</i> log entries.<br><br><b>-t, --total</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the total number of events found based on other filters.<br><br><b>-p, --package <PACKAGE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log entries for a specific package name.<br><br><b>--from <DATE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log entries starting from a specific date.<br><br><b>--to <DATE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter log entries up to a specific date.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<code>paclog</code> is a utility designed for parsing and displaying the pacman log file, typically located at <i>/var/log/pacman.log</i>. It simplifies the process of reviewing package management operations such as installations, upgrades, and removals.<br>By offering various filtering and formatting options, <code>paclog</code> allows users to quickly find specific events, analyze system changes over time, and troubleshoot package-related issues without manually sifting through a potentially large log file. It enhances the <b>pacman</b> experience by providing a more user-friendly interface to its transaction history.


title: CAVEATS
content:
<b>paclog</b> is primarily designed for Arch Linux and its derivatives, as it specifically parses the <b>pacman.log</b> format.<br>The exact set of features and options might vary depending on the <b>paclog</b> implementation (e.g., if it's a custom script or part of a package like <b>pacutils</b>).<br>It requires read access to <i>/var/log/pacman.log</i>.


title: LOG FILE LOCATION
content:
The primary log file parsed by <b>paclog</b> is <i>/var/log/pacman.log</i>. This file records all package installations, removals, and upgrades performed by <b>pacman</b>.


title: DATE FORMATS
content:
When specifying dates with options like <i>-d</i>, <i>--from</i>, or <i>--to</i>, common formats include <i>YYYY-MM-DD</i> or <i>YYYY-MM-DD HH:MM:SS</i>. The specific accepted formats might vary slightly based on the <b>paclog</b> version.


title: HISTORY
content:
<b>paclog</b> emerged as a user-friendly wrapper or script to parse the <b>pacman</b> log file, <i>/var/log/pacman.log</i>, on Arch Linux systems. While <b>pacman</b> itself handles package management, its log file can become quite extensive.<br>Early users and developers recognized the need for a dedicated tool to quickly query and filter this log. Various implementations have existed, but a common and robust version is often found within the <b>pacutils</b> collection of <b>pacman</b> helper tools, which enhances the administrative experience for Arch Linux users.


title: TLDR
content:
<b>Display the entire pacman log</b>`paclog`<br><b>Display pacman-style logged commandline entries</b>`paclog --commandline`<br><b>Display log events for a specific package</b>`paclog --package [package_name]`<br><b>Display package actions of a specific type</b>`paclog --action [install|reinstall|upgrade|downgrade|remove|all]`<br><b>Display only errors, warnings, and notes</b>`paclog --warnings`<br><b>Display the list of installed packages according to the log</b>`paclog --pkglist`<br><b>Display help</b>`paclog --help`<br><b>Display version</b>`paclog --version`


title: PARAMETERS
content:
<b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run in debug mode, preventing the daemon from detaching from the controlling terminal. This is useful for troubleshooting.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information about the daemon's operations and actions.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message and exit.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable systemd socket activation. When this option is used, <b>restorecond</b> listens on sockets passed by systemd, allowing for on-demand daemon startup.<br><br><b><b>-f</b> <I>configfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate configuration file path instead of the default <B>/etc/selinux/restorecond.conf</B>.<br><br>


title: DESCRIPTION
content:
The <b>restorecond</b> command launches a daemon that actively monitors specified file system paths for the creation of new files and directories. Its primary purpose is to ensure that these newly created entries automatically receive the correct <I>SELinux security contexts</I> as defined by the system's policy or custom rules. <br><br>Many applications and services create files dynamically. Without <b>restorecond</b>, these new files might inherit an incorrect or default context, potentially leading to <I>SELinux access denials</I> or security vulnerabilities. By continuously watching for changes using <I>inotify</I> mechanisms, <b>restorecond</b> invokes the underlying <b>restorecon</b> utility to apply the appropriate context based on rules specified in its configuration file, typically <B>/etc/selinux/restorecond.conf</B>. This ensures that the SELinux policy remains consistent even with dynamic content, enhancing overall system security and stability.


title: CAVEATS
content:
<b>restorecond</b> is effective only when <I>SELinux is enabled and enforcing</I> on the system. Incorrectly configured rules in <B>/etc/selinux/restorecond.conf</B> can lead to files receiving wrong contexts, potentially causing application failures or system instability. Over-monitoring very busy or extensive file system paths might introduce performance overhead. It primarily applies contexts based on the default file contexts; custom policy modules might require additional SELinux management tools.


title: CONFIGURATION FILE
content:
The behavior of <b>restorecond</b> is primarily governed by its configuration file, typically located at <B>/etc/selinux/restorecond.conf</B>. This file contains rules that specify which file system paths to monitor and how to apply contexts to newly created files or directories within those paths. Rules can be defined to match specific file types or apply different contexts based on patterns, giving administrators fine-grained control over dynamic context assignment.


title: SELINUX CONTEXTS
content:
An <I>SELinux context</I> (or security context) is a label associated with every file, process, and port on an SELinux-enabled system. It comprises a user, role, type, and sensitivity (e.g., <I>unconfined_u:object_r:httpd_sys_content_t:s0</I>). <b>restorecond</b> ensures that new files are assigned the correct type component of this label, which dictates what actions processes are permitted to perform on those files, thereby enforcing mandatory access control policies.


title: SYSTEMD INTEGRATION
content:
On modern Linux distributions, <b>restorecond</b> is typically managed as a systemd service (e.g., <B>restorecond.service</B>). This allows for reliable startup during boot, restart on failure, and integration with systemd's socket activation capabilities (via the <b>-S</b> option), which can defer daemon startup until network requests or specific events occur, optimizing resource usage.


title: HISTORY
content:
<b>restorecond</b> emerged as a crucial component of the <I>SELinux ecosystem</I> to address a specific challenge: ensuring proper security contexts for dynamically created files. While utilities like <b>restorecon</b> could apply contexts manually or during system re-labeling, a daemon was needed to continuously monitor and adjust contexts in real-time without user intervention. Its development reflects the ongoing effort to automate and simplify SELinux management, particularly in modern Linux environments where services frequently generate or modify content.


title: TLDR
content:
<b>Start the restorecond daemon</b>`sudo restorecond`<br><b>Run restorecond in [v]erbose mode to see restoration events</b>`sudo restorecond -v`<br><b>Run restorecond in [d]ebug mode</b>`sudo restorecond -d`<br><b>Use alternative restorecond.conf file</b>`sudo restorecond -f restorecond_file`<br><b>Check the status of the restorecond service</b>`sudo systemctl status restorecond`<br><b>Enable restorecond to start at boot</b>`sudo systemctl enable restorecond --now`


title: PARAMETERS
content:
<b>None</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <I>daemon-reexec</I> verb itself does not accept any specific parameters or arguments beyond the command name. Global <I>systemctl</I> options (e.g., <I>--system</I>, <I>--user</I>) can precede the verb, but they affect the invocation of <I>systemctl</I> generally, not the <I>daemon-reexec</I> operation specifically.<br><br>


title: DESCRIPTION
content:
<b>systemctl daemon-reexec</b> instructs the running <I>systemd</I> manager process (typically PID 1 for the system manager or a user instance for the user manager) to re-execute itself. This means the <I>systemd</I> process will effectively restart using its current binary on disk, or a newly installed binary if an update has occurred. The primary use case for this command is after <I>systemd</I> itself has been upgraded to a newer version. Instead of requiring a full system reboot to run the updated <I>systemd</I> code, <I>daemon-reexec</I> allows the new <I>systemd</I> binary to take over without disrupting the running services more than necessary.<br><br>It attempts to preserve the manager's runtime state and inherited file descriptors, minimizing the impact on active processes and open sockets. This command is crucial for maintaining system uptime while applying core system updates. It differs significantly from <b>systemctl daemon-reload</b>, which only reloads unit file configurations without replacing the <I>systemd</I> binary itself.


title: CAVEATS
content:
<b>1.</b> Requires root privileges for the system-wide manager (PID 1).<br><b>2.</b> While designed to be as seamless as possible, there might be a momentary disruption or brief pause in manager operations.<br><b>3.</b> This command should only be used when <I>systemd</I> itself has been updated or when explicitly recommended by documentation. It is not for routine configuration changes.<br><b>4.</b> Always review system logs (<I>journalctl</I>) after execution to confirm successful re-execution and identify any potential issues.


title: USAGE CONTEXT
content:
Use <b>systemctl daemon-reexec</b> specifically when the <I>systemd</I> package itself has been updated on your system. This allows the new <I>systemd</I> binary to take effect. Do not confuse it with <b>systemctl daemon-reload</b>, which is used after modifying service unit files or other configuration files that <I>systemd</I> reads, but does not replace the running <I>systemd</I> binary.


title: IMPACT ON SERVICES
content:
A key aspect of <b>daemon-reexec</b> is its attempt to maintain continuity. Unlike a full system reboot, which stops and restarts all services, <I>daemon-reexec</I> tries to preserve the state of currently running services. It achieves this by passing file descriptors and other relevant state information to the newly re-executed <I>systemd</I> process, minimizing service interruption. Services are generally <I>not</I> restarted by this command.


title: HISTORY
content:
<I>systemd</I> was initiated by Lennart Poettering and Kay Sievers, aiming to replace the traditional SysVinit and Upstart systems. The <b>daemon-reexec</b> functionality was an integral part of <I>systemd</I>'s design from its early stages, emphasizing its capability to handle self-updates without requiring a full system reboot. This feature is a cornerstone of <I>systemd</I>'s approach to modern Linux system management, offering greater uptime and flexibility compared to older init systems that typically necessitated a reboot after core init system updates.


title: SYNOPSIS
content:
<b>paccheck</b> [<i>options</i>] [<i>package(s)</i>|<i>group(s)</i>|<i>owner(s)</i>|<i>path(s)</i>]<br><b>paccheck</b> <i>-m</i>|<i>-s</i>|<i>-k</i>|<i>-C</i>|<i>-L</i>|<i>-l</i>|<i>-u</i> [<i>options</i>] [<i>package(s)</i>]<br><b>paccheck</b> <i>-c</i> [<i>options</i>] [<i>package(s)</i>]<br><b>paccheck</b> <i>-g</i> [<i>options</i>] [<i>group(s)</i>]<br><b>paccheck</b> <i>-o</i> [<i>options</i>] [<i>owner(s)</i>]<br><b>paccheck</b> <i>-p</i> [<i>options</i>] [<i>path(s)</i>]


title: PARAMETERS
content:
<b><i>--root</i> &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative install root directory for the system.<br><br><b><i>--dbpath</i> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative database path for Pacman.<br><br><b><i>--sysroot</i> &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a system root directory.<br><br><b><i>-c, --config-files</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for configuration files that have been modified by users.<br><br><b><i>-g, --group</i> &lt;group&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check files owned by a specific system group.<br><br><b><i>-o, --owner</i> &lt;owner&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check files owned by a specific system user.<br><br><b><i>-p, --path</i> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check specific file paths or directories.<br><br><b><i>-m, --modified</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for files whose checksums do not match the package database (modified files).<br><br><b><i>-s, --missing</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for files that are present in the package database but are missing from the filesystem.<br><br><b><i>-k, --permissions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for files with incorrect permissions or ownership compared to the package database.<br><br><b><i>-C, --config-checksums</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check checksums specifically for configuration files, regardless of user modifications.<br><br><b><i>-L, --missing-symlinks</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for symlinks whose targets are missing or broken.<br><br><b><i>-l, --dangling-symlinks</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for symlink sources that do not exist (dangling symlinks).<br><br><b><i>-u, --unowned-files</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for files on the filesystem that are not owned by any installed Pacman package.<br><br><b><i>-v, --verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show more detailed and verbose output during checks.<br><br><b><i>-q, --quiet</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all output except for error messages.<br><br><b><i>-i, --ignore</i> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore specific file paths or directories from being checked. Can be used multiple times.<br><br><b><i>-I, --ignore-pkg</i> &lt;pkg&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore specific packages from being checked. Can be used multiple times.<br><br><b><i>--nocolor</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable colorized output.<br><br><b><i>-h, --help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><i>-V, --version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<b>paccheck</b> is a utility from the <i>pacutils</i> collection designed to verify the integrity and ownership of files installed by the Pacman package manager on Arch Linux systems.<br><br>It allows users to check for a variety of discrepancies, including files that have been modified since installation (based on checksums), missing files, files with incorrect permissions or ownership, and dangling symlinks. It compares the current state of files on the system against the information stored in Pacman's local package database.<br><br>This tool is invaluable for system administrators and users who need to ensure the consistency of their Arch Linux system, detect accidental file changes, or identify potential issues caused by manual modifications or corruption. It can be used to check individual packages, all installed packages, or specific file paths, making it a flexible diagnostic tool for system health.


title: CAVEATS
content:
<b>paccheck</b> relies entirely on the local Pacman database. It can only verify files that Pacman knows about and cannot detect issues with files created or managed outside of Pacman.<br><br>When checking for modified files, it may report 'false positives' for legitimate user modifications to configuration files. Users should carefully review such reports.<br><br>Running comprehensive checks on a large system can be resource-intensive and time-consuming.<br><br>The tool only reports discrepancies; it does not automatically fix any issues it finds.


title: <B>MODES OF OPERATION AND COMMON CHECKS</B>
content:
<b>paccheck</b> operates in several distinct modes, determined by the primary checking flag. Using <i>-m</i> (modified), <i>-s</i> (missing), or <i>-k</i> (permissions) allows for a general integrity check for all package files against their database entries. The <i>-c</i> flag specifically focuses on configuration files, highlighting those that users might have intentionally modified. For system-wide audits, <i>-u</i> (unowned files) is invaluable for identifying files not tracked by any installed package. These flags can be combined with package names, group names, owners, or specific paths to effectively target checks, providing a powerful diagnostic suite for maintaining system health.


title: HISTORY
content:
<b>paccheck</b> is a component of the <i>pacutils</i> project, a collection of command-line tools designed to augment and extend the functionality of the Arch Linux package manager, <b>pacman</b>. It was developed to provide more granular control and deeper inspection capabilities, particularly regarding package file integrity, beyond what <b>pacman</b> itself offers directly. Its development focuses on enhancing system diagnostics and maintenance for Arch Linux users by providing robust checking mechanisms.


title: TLDR
content:
<b>List and check all installed packages</b>`paccheck`<br><b>Check the specified packages</b>`paccheck [package1 package2 ...]`<br><b>Only display messages if a problem is found</b>`paccheck --quiet`<br><b>Check that all package dependencies are satisfied</b>`paccheck --depends`<br><b>Display help</b>`paccheck --help`<br><b>Display version</b>`paccheck --version`


title: PARAMETERS
content:
<b>--all, -a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Show all properties</b>, including those that are unset or empty. By default, <b>systemctl show</b> only displays properties that have a value set.<br><br><b>--property=<I>NAME</I>, -p <I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Display specific unit properties</b>. This option can be specified multiple times to show several properties. Property names are case-sensitive (e.g., <i>ActiveState</i>, <i>Description</i>, <i>ExecStart</i>).<br><br><b>--value, -l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Print only property values</b>. When used, the output will only contain the value of the property, without the "<i>Name=</i>" prefix. This option implies <i>--plain</i> for cleaner output, making it ideal for scripting to extract single values.<br><br><b>--json=<I>MODE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Output in JSON format</b>. The <I>MODE</I> can be <i>pretty</i> for a human-readable, indented JSON output or <i>short</i> for a compact JSON format, which is more suitable for programmatic parsing.<br><br><b><I>UNIT...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more <b>unit names</b> (e.g., <i>nginx.service</i>, <i>network.target</i>) whose properties are to be displayed. If no unit is specified, properties of the <i>systemd manager itself</i> (PID 1 for the system instance) are shown.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Operate on the system manager</b>. This is the default behavior when running <b>systemctl</b> as root or with `sudo`.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Operate on the user's systemd manager</b> instance. Each logged-in user typically runs their own systemd manager for user-specific services.<br><br><b>--host=<I>HOST</I>, -H <I>HOST</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Operate on a remote host</b>. Connects to the systemd manager on the specified host via SSH or other configured transport.<br><br><b>--machine=<I>CONTAINER</I>, -M <I>CONTAINER</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Operate on a local container</b>. Connects to the systemd manager of a specific local container, identified by its machine name.<br><br>


title: DESCRIPTION
content:
<b>systemctl show</b> is a crucial diagnostic and inspection command within the systemd ecosystem. It's used to retrieve and display the intricate properties of one or more systemd units (services, sockets, devices, mounts, etc.). Unlike <b>systemctl status</b>, which provides a concise human-readable summary, <b>show</b> outputs a comprehensive, machine-readable list of all configured properties and their current values for a given unit. This makes it invaluable for advanced troubleshooting, scripting, and deep dives into unit configurations and runtime states.<br><br>It can display properties like <i>LoadState</i>, <i>ActiveState</i>, <i>SubState</i>, <i>Description</i>, dependency relationships (<i>After</i>, <i>Before</i>, <i>Requires</i>, <i>Conflicts</i>), execution commands (<i>ExecStart</i>), resource controls (<i>CPUShares</i>, <i>MemoryLimit</i>), and many more, offering a granular view of how a unit is configured and behaves. Users can specify particular properties to view or list all of them, with options to format the output for easier parsing by scripts.


title: CAVEATS
content:
<ul><li>The output of <b>systemctl show</b> is primarily designed to be machine-readable, which can make it less intuitive for quick human inspection compared to commands like <b>systemctl status</b>.</li><li>Property names are case-sensitive. Specifying <i>ActiveState</i> is correct, but <i>activestate</i> will not work.</li><li>Many properties are dynamic and reflect the current runtime state, while others are static configuration values defined in unit files.</li><li>Parsing the plain <i>key=value</i> output without <i>--json</i> requires careful scripting to handle potential multi-line values, special characters, or embedded equals signs in values.</li></ul>


title: INTERPRETING PROPERTIES
content:
The properties displayed by <b>systemctl show</b> directly correspond to settings defined in unit files (e.g., <i>systemd.service(5)</i>, <i>systemd.target(5)</i>) and their current runtime status. Understanding these property names requires familiarity with <b>systemd</b> unit file syntax and semantics. This command is often the first step in debugging complex unit behavior.


title: DEFAULT UNIT WHEN NONE SPECIFIED
content:
If no unit is specified with <b>systemctl show</b>, it defaults to showing properties of the <b>systemd</b> manager itself (the <i>init</i> process, PID 1, for the system instance). This can provide valuable insights into the overall systemd environment, its capabilities, and its general state.


title: SCRIPTING EXAMPLE
content:
For reliable scripting, using <i>--value</i> or <i>--json</i> is highly recommended.<br><br>To get only the active state of a service:<br><code>systemctl show --property=ActiveState --value nginx.service</code><br>This would output just "<i>active</i>" if the Nginx service is running, or "<i>inactive</i>" otherwise.<br><br>To get multiple properties in JSON:<br><code>systemctl show --property=Description --property=ExecMainStartTimestamp --json=pretty nginx.service</code><br>This would provide a structured JSON output of the specified properties, making it easy to parse with tools like <i>jq</i>.


title: HISTORY
content:
The <b>systemctl</b> command is the primary control interface for <b>systemd</b>, which revolutionized Linux initialization by replacing the traditional <b>SysVinit</b> system in many distributions starting in the early 2010s. The <b>show</b> subcommand has been an integral part of <b>systemctl</b> since its inception, providing a consistent and programmatic way to inspect unit configurations and states. This functionality was less directly available or standardized with older init systems. Its design reflects systemd's emphasis on introspection, API-driven management, and providing detailed information for system administrators and developers.


title: SEE ALSO
content:
systemctl(1), systemctl status(1), systemctl list-units(1), journalctl(1), systemd.unit(5), systemd.service(5), systemd.target(5)


title: TLDR
content:
<b>Show properties of the system service manager</b>`systemctl show`<br><b>Show properties of the user service manager</b>`systemctl show --user`<br><b>Show properties of a specific unit</b>`systemctl show [unit]`<br><b>Show properties of a specific user unit</b>`systemctl show [unit] --user`<br><b>Include empty properties in the list</b>`systemctl show [[-a|--all]]`<br><b>Only show the specified properties</b>`systemctl show [unit] [[-p|--property]] [Wants,Conflicts,...]`


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>One or more systemd unit file names (e.g., <B>apache2.service</B>). These are the units whose enabled status will be checked.</I><br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Displays a brief help message about the command and exits.</I><br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Suppresses the normal output string ("enabled", "disabled", etc.), returning only the exit status. This option is particularly useful when scripting.</I><br><br>


title: DESCRIPTION
content:
<i>systemctl is-enabled</i> is a subcommand of the <B>systemctl</B> utility, which is the primary interface for controlling and querying the <B>systemd</B> init system. This command is used to determine the <I>configured startup behavior</I> of one or more systemd unit files, such as services (<B>.service</B>), sockets (<B>.socket</B>), or mount points (<B>.mount</B>). It does <I>not</I> indicate whether a unit is currently running, but rather if it's set to start automatically during boot or on demand.<br><br>The command outputs a string indicating the unit's state, which can be "enabled", "disabled", "static", "masked", or "generated". An "enabled" unit means systemd will attempt to start it. A "disabled" unit will not start automatically. "Static" units are typically base units (like <B>local-fs.target</B>) that cannot be explicitly enabled or disabled but are pulled in by other units. "Masked" units are completely disabled and prevented from starting, even if other units try to pull them in. "Generated" units are created dynamically, often by other services or based on system configuration.<br><br><B>systemctl is-enabled</B> returns an exit code of <B>0</B> if <I>all</I> specified units are enabled, and <B>1</B> otherwise (for disabled, static, masked, or invalid units/arguments). This makes it highly valuable for shell scripting and automation tasks where conditional logic based on service enablement is required. Understanding the distinction between a unit's <I>enabled state</I> (its configured startup behavior) and its <I>active state</I> (whether it's currently running) is crucial for effective system management with <B>systemd</B>.


title: CAVEATS
content:
A unit being reported as "enabled" signifies its configuration for automatic startup, not its current operational status. To check if a unit is currently running, use <B>systemctl status</B>.<br>Units reported as "static" cannot be explicitly enabled or disabled via <B>systemctl enable/disable</B> as they are typically fundamental components or dependencies for other units.<br>The command returns an exit code of <B>1</B> for "disabled", "static", "masked", or if an invalid unit name is provided, making a distinction solely based on exit code for "enabled" vs. "not enabled".


title: <B>UNDERSTANDING UNIT STATES</B>
content:
<I>The output of <B>is-enabled</B> provides specific states:<BR><B>enabled</B>: The unit is configured to start automatically during boot or on demand.<BR><B>disabled</B>: The unit is not configured for automatic startup.<BR><B>static</B>: The unit cannot be explicitly enabled or disabled; it's typically a dependency or an integral system component.<BR><B>masked</B>: The unit is completely disabled and prevented from starting, even if other units depend on it. This is a stronger form of disabling.<BR><B>generated</B>: The unit was created dynamically at runtime by <B>systemd</B> or another service.</I>


title: <B>EXIT CODES FOR SCRIPTING</B>
content:
<I>The command's exit code is crucial for automation:<BR><B>0</B>: All specified units are enabled.<BR><B>1</B>: One or more units are disabled, static, masked, or the command received an invalid unit name or argument. This allows shell scripts to easily check if a service is configured to start.</I>


title: HISTORY
content:
The <B>is-enabled</B> subcommand is an integral part of <B>systemctl</B>, the primary control utility for the <B>systemd</B> init system. <B>systemd</B> was developed to modernize the Linux boot process and service management, gradually replacing older init systems like <B>SysVinit</B> and <B>Upstart</B> across major Linux distributions starting in the early 2010s. The <B>is-enabled</B> command provides a clear, standardized, and programmatic way to query the configured startup state of <B>systemd</B> units, a functionality that was often more fragmented or less standardized in previous init systems.


title: SEE ALSO
content:
systemctl(1), systemctl enable(8), systemctl disable(8), systemctl status(1), systemctl mask(8), systemd.unit(5)


title: TLDR
content:
<b>Show the enablement state</b>`systemctl is-enabled [unit1 unit2 ...]`<br><b>Suppress output and return only the exit code</b>`systemctl is-enabled [unit] --quiet`<br><b>Show installation targets and symlink paths</b>`systemctl is-enabled [unit] --full`


title: TLDR
content:
<b>Take a base backup from a remote PostgreSQL server</b>`pg_basebackup [[-h|--host]] [host] [[-D|--pgdata]] [path/to/backup_dir]`<br><b>Take a backup with progress shown</b>`pg_basebackup [[-h|--host]] [host] [[-D|--pgdata]] [path/to/backup_dir] [[-P|--progress]]`<br><b>Create a compressed backup (gzip) in tar format</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-F|--format]] [[t|tar]] [[-z|--gzip]]`<br><b>Create an incremental backup using a previous manifest file</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-i|--incremental]] [path/to/old_manifest]`<br><b>Write a recovery configuration for setting up a standby</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-R|--write-recovery-conf]]`<br><b>Relocate a tablespace during backup</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-T|--tablespace-mapping]] [path/to/old_tablespace]=[path/to/new_tablespace]`<br><b>Limit transfer rate to reduce server load</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-r|--max-rate]] [100M]`<br><b>Stream WAL logs while taking the backup</b>`pg_basebackup [[-D|--pgdata]] [path/to/backup_dir] [[-X|--wal-method]] stream`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides help information about the <b>kubectl api-versions</b> command, detailing its usage and available options.<br><br>


title: DESCRIPTION
content:
The <b>kubectl api-versions</b> command displays a comprehensive list of all API groups and their supported versions that are available on the currently configured Kubernetes cluster. This command is particularly useful for cluster administrators and developers to quickly ascertain which API versions are active and can be used for various resources. It helps in understanding the cluster's capabilities and ensuring compatibility when creating or managing resources. The output is presented in the format of "group/version".


title: CAVEATS
content:
This command requires an active connection to a Kubernetes cluster via the <b>kubectl</b> configuration. If no cluster is configured or reachable, the command will fail with a connection error. The output reflects the API versions supported by the <i>kube-apiserver</i> component of the cluster, not necessarily all possible Kubernetes API versions that have ever existed.


title: USAGE CONTEXT
content:
This command is frequently used when troubleshooting resource creation failures related to unsupported API versions, or when developing new applications that need to ensure compatibility with a specific cluster's API surface. It provides a foundational understanding of the cluster's API maturity and the features it supports.


title: HISTORY
content:
The <b>api-versions</b> subcommand is a core utility within <b>kubectl</b>, provided to give users immediate insight into the cluster's API capabilities. Its simple interface makes it a quick diagnostic tool, allowing users to verify API availability without needing to query specific resource types. It has been a stable part of <b>kubectl</b> for a significant period, reflecting the consistent need to inspect the server's API surface.


title: TLDR
content:
<b>Print the supported API versions on the server, in the form of "group/version"</b>`kubectl api-versions`


title: PARAMETERS
content:
<b><b>--client</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to <b>true</b>, only print the client version information, skipping the attempt to connect to the Kubernetes API server.<br><br><b><b>-o</b>, <b>--output</b>=<i>format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. Can be one of: <b>json</b>, <b>yaml</b>, or <b>short</b>. The <b>json</b> and <b>yaml</b> formats provide structured output, while <b>short</b> prints a concise version number.<br><br><b><b>--short</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set to <b>true</b>, print just the version number. The exact output varies depending on whether an output format (like <b>json</b> or <b>yaml</b>) is also specified.<br><br>


title: DESCRIPTION
content:
The <b>kubectl version</b> command is a fundamental utility for understanding the state and compatibility of your Kubernetes environment. It provides crucial information about both the <i>client</i> (your local <b>kubectl</b> executable) and the <i>server</i> (the Kubernetes API server your <b>kubectl</b> is configured to connect to).<br><br>The client version indicates the version of the <b>kubectl</b> tool you are currently using. The server version reflects the version of the Kubernetes cluster's control plane. It's vital for these versions to be compatible, typically with the <b>kubectl</b> client being one minor version older or newer than the server, to avoid unexpected behavior or feature mismatches.<br><br>By default, the command outputs detailed information for both client and server, including the Git version, Git commit hash, build date, Go version used for compilation, and the platform. This information is invaluable for debugging, validating deployments, and ensuring that you are interacting with the cluster as expected.


title: CAVEATS
content:
<ul><li>To retrieve the server version, <b>kubectl</b> must be able to successfully connect to the configured Kubernetes cluster's API server. Network connectivity issues, incorrect kubeconfig settings, or insufficient RBAC permissions can prevent the server version from being displayed.</li><li>Significant discrepancies between client and server versions (e.g., client being much newer or older than the server) can lead to unexpected behavior, command failures, or the inability to use certain features. It's generally recommended to keep client and server versions within one minor release of each other.</li></ul>


title: DETAILED OUTPUT FIELDS
content:
When run without the <b>--short</b> flag or specific output formats, <b>kubectl version</b> provides detailed fields for both client and server. These include: <br><ul><li><i>GitVersion</i>: The human-readable version string (e.g., v1.28.2).</li><li><i>GitCommit</i>: The full Git commit hash corresponding to the build.</li><li><i>GitTreeState</i>: Indicates if the Git working tree was clean or dirty at the time of the build.</li><li><i>BuildDate</i>: The date and time when the component was built.</li><li><i>GoVersion</i>: The version of Go programming language used to compile the component.</li><li><i>Compiler</i>: The Go compiler used.</li><li><i>Platform</i>: The operating system and architecture for which the component was built (e.g., linux/amd64).</li></ul>These details are crucial for precise environment identification and debugging.


title: HISTORY
content:
The <b>kubectl version</b> command has been a staple in the Kubernetes ecosystem since its early days. As Kubernetes rapidly evolved, the need for a quick and reliable way to ascertain both the client tool's version and the cluster's version became critical for ensuring compatibility and troubleshooting. It's often one of the first commands a user runs when interacting with a new cluster or debugging issues.


title: TLDR
content:
<b>Print the client and server version information for the current context</b>`kubectl version`<br><b>Print the client version only for the current context</b>`kubectl version --client`<br><b>Output the client and server version information for the current context in JSON</b>`kubectl version [[-o|--output]] json`<br><b>Output the client and server version information for the current context in YAML</b>`kubectl version [[-o|--output]] yaml`


title: SYNOPSIS
content:
<b>kubectl patch</b> (<i>TYPE NAME</i> | <i>-f FILENAME</i>) <b>--patch</b> <i>PATCH</i> [<b>--type</b>=<i>PATCH_TYPE</i>] [<i>options</i>]<br><br>Where:<br><br><i>TYPE NAME</i>: Specifies the kind of resource and its name to patch (e.g., <i>deployment my-app</i>).<br><i>-f FILENAME</i>: Specifies one or more files containing the resource definition to patch.<br><i>--patch PATCH</i>: The actual patch content, typically a JSON or YAML string, detailing the changes to apply.<br><i>--type=PATCH_TYPE</i>: Defines the patch strategy to use. Valid values are <i>strategic</i>, <i>merge</i>, or <i>json</i>. Defaults to <i>strategic</i>.<br><i>[options]</i>: Additional flags to control behavior like namespace, output format, or dry-run.


title: PARAMETERS
content:
<b>TYPE NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies the resource to patch by its kind and name (e.g., <i>pod my-pod</i>, <i>deployment my-app</i>).<br><br><b>-f, --filename stringArray</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to one or more files containing resource definitions to patch, or a directory of files.<br><br><b>--patch string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Required.</b> The patch content. Must be a JSON or YAML string representing the desired changes.<br><br><b>--type string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The type of patch being provided: <i>strategic</i> (default), <i>merge</i>, or <i>json</i>.<br><br><b>-n, --namespace string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If present, the namespace scope for this request. Defaults to the current namespace in the kubeconfig.<br><br><b>--dry-run string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, only print the object that would be sent, without sending it. Valid values are 'client', 'server', 'none'.<br><br><b>-o, --output string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. One of: json|yaml|wide|name|go-template|jsonpath, etc. Useful with <i>--dry-run</i>.<br><br><b>--local bool</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, apply the patch to the local file without sending to the API server. Useful for validating patches against local files.<br><br><b>--subresource string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If specified, patch a subresource of the resource (e.g., 'status', 'scale').<br><br>


title: DESCRIPTION
content:
<b>kubectl patch</b> provides a powerful and flexible way to modify specific fields of live Kubernetes objects without needing to retrieve, edit, and reapply the entire resource definition. This command is essential for making targeted updates, such as changing a container image, adding a label, or scaling a deployment, without causing unnecessary disruption or overwriting other configuration changes. It supports various patch strategies—Strategic Merge Patch (default for Kubernetes API objects), JSON Merge Patch, and JSON Patch—allowing users to choose the appropriate method for their specific update requirements. <b>kubectl patch</b> is particularly useful in automation scripts and for quick, iterative adjustments to running resources, offering fine-grained control over resource configuration.


title: CAVEATS
content:
<b>kubectl patch</b> is a powerful tool but requires careful use due to the direct manipulation of live resources.<br><br><b>Patch Types</b>: Understanding the differences between <i>strategic</i> (default), <i>merge</i>, and <i>json</i> patch types is crucial. Misunderstanding them can lead to unexpected behavior, especially concerning list merging or field deletion. Strategic merge patch attempts to be intelligent about known Kubernetes schema, while JSON merge patch and JSON patch (RFC 6902) offer more predictable but sometimes more verbose control.<br><br><b>Concurrency</b>: When multiple users or automated systems are patching the same resource concurrently, race conditions can occur. It's often safer to use <b>kubectl apply</b> for declarative management where conflicts are handled more gracefully.<br><br><b>Permissions</b>: Proper Role-Based Access Control (RBAC) permissions are required to patch resources. Insufficient permissions will result in authorization errors.<br><br><b>Error Handling</b>: An invalid patch content (e.g., malformed JSON/YAML or attempting to change immutable fields) will result in API server errors. Always test patches, preferably with <i>--dry-run</i>.


title: UNDERSTANDING PATCH TYPES
content:
<i>Strategic Merge Patch (default)</i>: This is the default and most commonly used patch type for Kubernetes API objects. It uses schema information to perform intelligent merges. For instance, lists might be merged based on a key (e.g., container names), or replaced entirely, depending on the schema definition.<br><br><i>JSON Merge Patch (--type=merge)</i>: A simpler, RFC 7386 compliant patch. It merges object fields: if a field is present in the patch, it replaces the existing field; if a field is <i>null</i> in the patch, it deletes the existing field. Arrays are always replaced entirely, not merged.<br><br><i>JSON Patch (--type=json)</i>: An RFC 6902 compliant patch type. This is the most precise method, allowing specific operations like <i>add</i>, <i>remove</i>, <i>replace</i>, <i>move</i>, <i>copy</i>, and <i>test</i> on exact paths within the JSON document. It requires a more verbose syntax but offers fine-grained control over changes.


title: EXAMPLES OF USAGE
content:
<ul><li><b>Update a deployment's image using Strategic Merge Patch</b>:<br><code>kubectl patch deployment my-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-container","image":"new-image:v2.0"}]}}}}'</code></li><li><b>Add a label to a service using Strategic Merge Patch</b>:<br><code>kubectl patch service my-service -p '{"metadata":{"labels":{"new-label":"new-value"}}}'</code></li><li><b>Change replica count for a deployment using Strategic Merge Patch</b>:<br><code>kubectl patch deployment my-deployment --type='strategic' -p '{"spec":{"replicas":5}}'</code></li><li><b>Delete a specific environment variable using JSON Patch</b>:<br><code>kubectl patch deployment my-deployment --type='json' -p '[{"op": "remove", "path": "/spec/template/spec/containers/0/env/1"}]'</code><br>(Note: This requires knowing the exact array index; often <b>kubectl set env</b> is simpler for env var management.)</li><li><b>Replace an entire list (e.g., ports) using JSON Merge Patch</b>:<br><code>kubectl patch service my-service --type='merge' -p '{"spec":{"ports":[{"port":8080,"targetPort":80,"protocol":"TCP"}]}}'</code><br>(This would replace all existing ports with the one specified.)</li></ul>


title: HISTORY
content:
The <b>kubectl patch</b> command has been a fundamental part of the <b>kubectl</b> utility since early versions of Kubernetes, providing direct interaction with the Kubernetes API for modifying live objects. Its capabilities have evolved alongside the Kubernetes API itself, with the introduction of different patch strategies (like JSON Patch and JSON Merge Patch in addition to the original Strategic Merge Patch) to offer more granular and robust control over resource updates. It remains a key tool for both manual administrative tasks and automated operational workflows.


title: TLDR
content:
<b>Partially patch a secret using a strategic merge JSON patch to remove the finalizer</b>`kubectl patch secrets [secret_name] [[-p|--patch]] '{"metadata":{"finalizers": []\}\}' --type merge`<br><b>Partially patch a secret using a strategic merge YAML patch to remove the finalizer</b>`kubectl patch secrets [secret_name] [[-p|--patch]] $'metadata:\n finalizers: []' --type merge`<br><b>Partially patch a pod's container using a JSON patch with positional arrays</b>`kubectl patch [[po|pods]] [pod_name] --type 'json' [[-p|--patch]] '[{"op": "replace", "path": "/spec/containers/0/image", "value":"[new_image_value]"}]'`<br><b>Update a deployment's replicas through the scale subresource using a strategic merge JSON patch</b>`kubectl patch [[deploy|deployments]] [deployment_name] --subresource 'scale' --type 'merge' [[-p|--patch]] '{"spec":{"replicas":[number_of_replicas]\}\}'`


title: SYNOPSIS
content:
<code><b>mvn</b> [<I>options</I>] <b>install</b> [<I>goals</I>...]</code><br><br><i>Examples:</i><br><code><b>mvn install</b></code><br><code><b>mvn clean install</b></code><br><code><b>mvn -DskipTests install</b></code>


title: PARAMETERS
content:
<b><code>-D&lt;property&gt;=&lt;value&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a system property, often used to control build behavior (e.g., <code>-DskipTests=true</code> to skip running tests).<br><br><b><code>-P &lt;profileId&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates a specified build profile defined in the <code>pom.xml</code> or <code>settings.xml</code>.<br><br><b><code>-U, --update-snapshots</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a check for updated releases and snapshots from remote repositories.<br><br><b><code>-B, --batch-mode</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs Maven in non-interactive (batch) mode, useful for automated scripts.<br><br><b><code>-f, --file &lt;file&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate path to the <code>pom.xml</code> file to use.<br><br><b><code>-o, --offline</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Works offline, only using artifacts available in the local repository.<br><br><b><code>-X, --debug</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces extensive debug output during the build process.<br><br><b><code>-e, --errors</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces execution error messages, useful for troubleshooting.<br><br><b><code>--settings &lt;file&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate path for the user settings file (<code>settings.xml</code>).<br><br><b><code>clean</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Not a direct option for <code>install</code>, but a common preceding goal) Cleans the <code>target</code> directory, removing previously built artifacts.<br><br>


title: DESCRIPTION
content:
The `mvn install` command is a core goal in the Apache Maven build lifecycle, primarily used to compile, test, package, and then install a project's artifact into the local Maven repository. When executed, Maven first runs all prior lifecycle phases including `validate`, `compile`, `test`, `package`, and `verify`. The `compile` phase compiles the project's source code, `test` runs the unit tests, and `package` bundles the compiled code and resources into a distributable format, typically a JAR, WAR, or EAR file. Finally, the `install` phase copies this packaged artifact along with its POM file into the user's local Maven repository, usually located at `~/.m2/repository`. This makes the artifact available as a dependency for other local Maven projects without needing to be deployed to a remote repository. It's a crucial step for multi-module projects or when developing library components locally that are consumed by other applications on the same machine.


title: CAVEATS
content:
<ul><li><b>Prerequisites:</b> Requires a Java Development Kit (JDK) and Apache Maven to be installed and configured on the system.</li><li><b>POM File:</b> Must be executed in a directory containing a valid <code>pom.xml</code> file or specify one using <code>-f</code>.</li><li><b>Local Only:</b> The <code>install</code> goal only places the artifact in the <i>local</i> Maven repository (<code>~/.m2/repository</code>). It does not deploy the artifact to any remote repository or make it accessible to other developers. For remote deployment, use the <code>deploy</code> goal.</li><li><b>Build Failures:</b> A build will fail if compilation errors occur, tests fail (unless skipped), or dependency resolution issues arise.</li><li><b>Disk Usage:</b> Repeated installations of different versions or snapshots can consume local disk space in the <code>~/.m2/repository</code>.</li></ul>


title: MAVEN BUILD LIFECYCLE
content:
The <code>install</code> goal is part of Maven's default build lifecycle. Executing <code>mvn install</code> means that all phases leading up to <code>install</code> (like <code>validate</code>, <code>compile</code>, <code>test</code>, <code>package</code>, and <code>verify</code>) will also be executed sequentially. This ensures that the project is properly built and tested before its artifact is placed into the local repository.


title: THE LOCAL MAVEN REPOSITORY
content:
The local Maven repository, typically located at <code>~/.m2/repository</code> on Unix-like systems, serves as a cache for project dependencies and a storage location for locally built artifacts. When <code>mvn install</code> is run, the project's artifact (e.g., JAR, WAR) and its corresponding POM file are copied into this repository, organized by group ID, artifact ID, and version. This allows other local projects to declare this artifact as a dependency without needing to fetch it from remote repositories.


title: HISTORY
content:
Apache Maven originated in 2002, evolving from the Turbine project, as a tool to simplify the build process. Its primary innovation was the introduction of a "convention over configuration" paradigm and a lifecycle-driven build system. The `install` goal has been a fundamental part of Maven's standard build lifecycle since its early days, designed to facilitate local development by making project artifacts readily available for consumption by other dependent projects on the same machine. This approach standardized how Java projects were built, managed dependencies, and integrated with various tools, significantly improving developer productivity compared to earlier build tools like Ant, which required extensive manual configuration for every project.


title: TLDR
content:
<b>Compile, test, package, and install the project into the local repository</b>`mvn install`<br><b>Skip tests during installation</b>`mvn install [[-D|--define]] skipTests`<br><b>Force update of dependencies before installing</b>`mvn install [[-U|--update-snapshots]]`<br><b>Skip test compilation and execution</b>`mvn install [[-D|--define]] maven.test.skip=true`


title: TLDR
content:
<b>Run the default fsync benchmark (5 seconds)</b>`pg_test_fsync`<br><b>Specify a custom test duration</b>`pg_test_fsync [[-s|--secs-per-test]] [seconds]`<br><b>Use a specific filename (it must be in same file system that the pg_wal directory is or will be placed in)</b>`pg_test_fsync [[-f|--filename]] [path/to/file]`


title: PARAMETERS
content:
<b>--app-dir <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory containing the Zapier app definition. Defaults to the current working directory.<br><br><b>--manifest <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Points to a specific manifest file to validate. Overrides the default discovery behavior.<br><br><b>--skip-install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the installation of Node.js modules before validation. Useful in CI/CD environments where dependencies are pre-installed.<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables colored output in the terminal.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and exits.<br><br><b>--version, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's version number and exits.<br><br>


title: DESCRIPTION
content:
The <b>zapier-validate</b> command is an essential tool for developers building custom integrations for the Zapier platform. It serves as a static analysis checker, scrutinizing the manifest and definition files of a Zapier app – typically <i>zapier.json</i> and associated JavaScript/TypeScript files – to ensure they adhere to Zapier's strict API specifications, schema, and best practices. <br><br> When executed within a Zapier app project directory, <b>zapier-validate</b> performs a series of checks. These include verifying the correct structure of triggers, actions, and authentication mechanisms; validating input and output fields for appropriate data types and required attributes; and flagging common misconfigurations or syntax errors. Its primary goal is to identify potential issues early in the development cycle, preventing runtime errors or rejections during the Zapier app review process. By providing immediate feedback on the validity of an integration's definition, <b>zapier-validate</b> significantly streamlines the development workflow, reduces debugging time, and helps maintain the quality and reliability of custom Zapier apps. It is typically part of the broader Zapier CLI.


title: CAVEATS
content:
The <b>zapier-validate</b> command is typically part of the Zapier CLI (installed via <i>npm install -g zapier-cli</i>). The actual command executed is often <i>zapier validate</i>, where <i>validate</i> is a subcommand of the main <i>zapier</i> executable. The user's request for <b>zapier-validate</b> might refer to an alias or a direct executable in specific environments. <br><br> It requires Node.js and npm/yarn to be installed, as the Zapier CLI is a Node.js application. <br><br> The command must be run within a directory that contains a valid Zapier app project structure, or have the <i>--app-dir</i> or <i>--manifest</i> option pointing to one. <br><br> Validation focuses on structural and schema compliance; it does not execute the app's code or test its runtime behavior against external APIs.


title: INSTALLATION
content:
The Zapier CLI, which includes the <i>validate</i> subcommand, is installed globally via npm:<br><b>npm install -g zapier-cli</b>


title: TYPICAL USAGE
content:
Developers run <b>zapier-validate</b> (or <i>zapier validate</i>) frequently during the development of a Zapier integration. It's often integrated into pre-commit hooks or CI/CD pipelines to ensure code quality and adherence to Zapier's platform requirements before deployment.


title: ERROR REPORTING
content:
The command provides detailed error messages, indicating the file, line number, and nature of any validation failures, making it easier to pinpoint and fix issues in the app definition.


title: TLDR
content:
<b>Validate an integration</b>`zapier validate`<br><b>Validate an integration without style checks</b>`zapier validate --without-style`<br><b>Validate an integration without running the build script</b>`zapier validate --skip-build`<br><b>Validate an integration with additional debug output</b>`zapier validate [[-d|--debug]]`<br><b>Validate an integration with a different output structure</b>`zapier validate [[-f|--format]] [plain|json|raw|row|table]`


title: TLDR
content:
<b>Show all configuration values</b>`conda config --show`<br><b>Show current value of a configuration option</b>`conda config --show [config_option]`<br><b>Set a configuration value</b>`conda config --set [key] [value]`<br><b>Remove a configuration value</b>`conda config --remove [key] [value]`<br><b>Append a value to an existing configuration key list</b>`conda config --append [key] [value]`<br><b>Prepend a value to an existing configuration key list</b>`conda config --prepend [key] [value]`<br><b>Describe given configuration option</b>`conda config --describe [config_option]`


title: PARAMETERS
content:
<b>-f, --freeze</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Freezes I/O on the specified <i>mountpoint</i>. All writes are suspended until the filesystem is unfrozen. The command will wait until all pending operations complete before freezing.<br><br><b>-u, --unfreeze</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unfreezes I/O on the specified <i>mountpoint</i>. Resumes normal read/write operations that were suspended by a previous freeze command.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information for <b>fsfreeze</b> and exits.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message showing usage and options, then exits.<br><br>


title: DESCRIPTION
content:
The <b>fsfreeze</b> command is used to suspend or resume all access to a filesystem, effectively pausing all I/O operations on it. This functionality is crucial for creating consistent snapshots of filesystems, especially when performing backups or creating Logical Volume Manager (LVM) snapshots. When a filesystem is frozen, all pending writes are committed, and no new writes are allowed until it is unfrozen. This ensures that any subsequent snapshot captures the filesystem in a consistent state without any ongoing modifications, thereby preventing data corruption or inconsistencies in the backup.<br><br>It operates on a specified <i>mountpoint</i>, interacting with the kernel's filesystem freezing interface. Successful execution requires superuser privileges.


title: CAVEATS
content:
Freezing a filesystem for an extended period can lead to system instability, applications hanging, or even data loss if not managed properly, as they will be unable to perform I/O operations. It is typically used for very brief durations, just long enough to create a consistent snapshot.<br><br><b>fsfreeze</b> requires root privileges to execute; non-root users will receive a permission denied error.<br><br>Not all filesystems support freezing. While common journaling filesystems like XFS, ext4, and Btrfs generally do, older or less common ones might not.<br><br>If the system crashes or <b>fsfreeze -u</b> is not called after a freeze, the filesystem may remain frozen after a reboot, potentially requiring manual intervention or specific recovery steps. However, modern kernels often detect and automatically unfreeze filesystems during boot.


title: USAGE WITH LVM SNAPSHOTS
content:
<b>fsfreeze</b> is commonly employed in a workflow that involves LVM snapshots. The typical sequence is to first freeze the origin logical volume's filesystem using <b>fsfreeze -f</b>. Immediately after freezing, an LVM snapshot is created from the origin volume. Once the snapshot is created, the origin filesystem is promptly unfrozen using <b>fsfreeze -u</b>. This ensures that the snapshot is consistent, and the backup can then be safely taken from the newly created snapshot volume without impacting the live system.


title: KERNEL INTERFACE
content:
Underneath, the <b>fsfreeze</b> command interacts with the Linux kernel through specific <i>ioctl</i> calls: <i>FIFREEZE</i> to suspend filesystem I/O and <i>FITHAW</i> to resume it. These system calls are what actually suspend and resume filesystem operations at a low level within the kernel.


title: HISTORY
content:
The concept of freezing filesystem I/O originated with specific filesystem utilities, such as <b>xfs_freeze</b>, which provided this capability exclusively for XFS filesystems. As the need for consistent snapshots across various journaling filesystems grew, <b>fsfreeze</b> was developed as a more generic interface, often integrated into the <i>util-linux</i> package. Its primary purpose has consistently been to facilitate reliable filesystem snapshots for backup and disaster recovery strategies, particularly in conjunction with Logical Volume Manager (LVM) capabilities.


title: TLDR
content:
<b>Generate an image of code based on a file</b>`freeze [path/to/file]`<br><b>Specify the output path</b>`freeze [path/to/file] [[-o|--output]] [path/to/output_image.png]`<br><b>Generate an image of terminal output</b>`freeze [[-x|--execute]] [command]`<br><b>Interactively customize the output image</b>`freeze [path/to/file] [[-i|--interactive]]`<br><b>Select a theme for syntax highlighting</b>`freeze [path/to/file] [[-t|--theme]] [dracula]`<br><b>Use a base configuration template</b>`freeze [path/to/file] [[-c|--config]] [base|full|user]`<br><b>Capture a specific range of line numbers</b>`freeze [path/to/file] --lines [start],[end]`<br><b>Show line numbers</b>`freeze [path/to/file] --show-line-numbers`


title: PARAMETERS
content:
<b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the Zapier CLI version and exit.<br><br><b><B>--token</B> <I>API_KEY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authenticate directly using a provided Zapier API key or access token. This is useful for CI/CD pipelines or non-interactive environments where a browser-based login is not feasible.<br><br><b><B>--browser</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force opening a web browser for the OAuth login flow, even if other authentication methods might be available or default.<br><br><b><B>--no-browser</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent the command from automatically opening a web browser. Useful when token-based authentication is preferred or for debugging in environments without a graphical interface.<br><br><b><B>--env</B> <I>environment</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Zapier environment to log into (e.g., <I>production</I>, <I>staging</I>, <I>development</I>). Defaults to production if not specified.<br><br><b><B>--host</B> <I>URL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the default Zapier API host URL. This is primarily used for testing against custom Zapier instances or internal development environments.<br><br>


title: DESCRIPTION
content:
The <I>zapier-login</I> command is a crucial utility for developers and users interacting with the Zapier platform via its Command Line Interface (CLI). Its primary function is to <b>authenticate</b> the local Zapier CLI installation with a user's Zapier account.<br><br>This authentication typically involves an interactive process, often leveraging an OAuth 2.0 flow where the command opens a web browser to the Zapier login page. After successful login and authorization, Zapier issues an access token, which the CLI then stores securely on the local machine. This token grants the CLI the necessary permissions to perform operations on behalf of the user, such as creating, updating, testing, and deploying custom Zapier integrations (apps), managing zaps, or accessing other API-driven features.<br><br>Without a successful login, most other Zapier CLI commands will fail due to a lack of authorization. It streamlines the development workflow by providing a secure and persistent session, eliminating the need to re-authenticate for every command. It is the first step required to engage with the full power of the Zapier developer tools.


title: CAVEATS
content:
The access token obtained through <I>zapier-login</I> is stored locally; ensure your machine is secure to protect these credentials.<br>Browser-based login requires a default web browser configured on your system.<br>Using the <B>--token</B> option directly exposes your API key in the command history; use with caution in shared environments.<br>Tokens can expire, requiring a re-login with <I>zapier-login</I> or refreshing the token if supported.<br>This command assumes the Zapier CLI is already correctly installed and configured.


title: TOKEN STORAGE LOCATION
content:
Upon successful login, the Zapier CLI typically stores the authentication token in a configuration file within the user's home directory, often in a hidden folder like <I>~/.zapier/tokens.json</I> (location may vary by OS and CLI version). This file contains sensitive information and should be protected with appropriate file permissions.


title: TROUBLESHOOTING LOGIN ISSUES
content:
If <I>zapier-login</I> fails, ensure you have an active internet connection and that your system's default web browser is functioning correctly. Firewall or proxy settings can also interfere with the authentication flow. It's often helpful to first run <I>zapier-logout</I> to clear any potentially corrupted existing credentials, then attempt to log in again.


title: HISTORY
content:
The <I>zapier-login</I> command, as part of the Zapier CLI, has evolved alongside modern cloud application development practices. Initially, CLI authentication might have relied on simpler API key entry. However, with the increasing emphasis on security and user experience, the command primarily shifted to an OAuth 2.0 based browser flow, providing a more secure and user-friendly way to authenticate without directly handling sensitive credentials on the command line. The inclusion of the <B>--token</B> option provides flexibility for automated environments, reflecting the need for both interactive and non-interactive authentication methods.


title: TLDR
content:
<b>Log in to a Zapier account</b>`zapier login`<br><b>Log in to a Zapier account with a deploy key for SSO</b>`zapier login [[-s|--sso]]`<br><b>Display additional debug output</b>`zapier login [[-d|--debug]]`


title: DESCRIPTION
content:
The <b>ibmcloud logout</b> command is an integral part of the IBM Cloud Command Line Interface (CLI), designed to securely terminate a user's current authenticated session with IBM Cloud. When executed, this command responsibly removes the locally stored authentication tokens and session credentials. This action ensures that subsequent CLI operations requiring authentication will prompt the user to re-authenticate, safeguarding access to IBM Cloud resources. It is a vital security feature, especially when working on shared workstations or when there's a need to switch between different IBM Cloud accounts or user profiles. The command is straightforward, requiring no additional parameters or arguments, making its usage simple and efficient. It functions as a core utility of the <b>ibmcloud</b> CLI, rather than being associated with a specific plugin, underscoring its fundamental role in session management.


title: CAVEATS
content:
Logging out with <b>ibmcloud logout</b> only affects the local CLI session by removing credentials stored on your machine. It does not terminate sessions in the IBM Cloud console, other CLI installations, or revoke any active API keys. Ensure you have your credentials handy to log back in when needed. This command also requires network connectivity to potentially validate the logout or clear any remote session caches, although its primary action is local.


title: HISTORY
content:
The ability to manage sessions, including logging out, has been a core feature since the early days of the IBM Cloud CLI (and its predecessors like the Bluemix CLI). The <b>logout</b> command has maintained its consistent functionality and simple syntax, reflecting its fundamental role in security and user experience across various iterations of the CLI. Its development has focused on reliability and secure local credential management.


title: TLDR
content:
<b>View differences between the live resource and file definition</b>`kubectl diff [[-f|--filename]] [path/to/filename]`


title: TLDR
content:
<b>Test an integration</b>`zapier test`<br><b>Test an integration while skipping validation</b>`zapier test --skip-validate`<br><b>Test an integration with additional debug output</b>`zapier test [[-d|--debug]]`


title: SYNOPSIS
content:
<b>ibmcloud iam</b> <i>&lt;subcommand&gt;</i> [<i>&lt;options&gt;</i>] [<i>&lt;arguments&gt;</i>]<br><br>Common subcommands include:<br><b>ibmcloud iam access-groups</b> [<i>&lt;subcommand&gt;</i>]<br><b>ibmcloud iam users</b> [<i>&lt;subcommand&gt;</i>]<br><b>ibmcloud iam policies</b> [<i>&lt;subcommand&gt;</i>]<br><b>ibmcloud iam service-ids</b> [<i>&lt;subcommand&gt;</i>]<br><b>ibmcloud iam service-api-keys</b> [<i>&lt;subcommand&gt;</i>]<br><b>ibmcloud iam roles</b> [<i>&lt;subcommand&gt;</i>]


title: PARAMETERS
content:
<b>access-groups</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages IAM access groups for efficient policy assignment to multiple users or service IDs.<br><br><b>users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Administers user accounts, allowing invitation, listing, and disabling of users within the IBM Cloud account.<br><br><b>policies</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Handles the creation, viewing, updating, and deletion of IAM policies that define resource access permissions.<br><br><b>service-ids</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages service IDs, which are identities for applications or services accessing IBM Cloud resources.<br><br><b>service-api-keys</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages API keys associated with service IDs, used for programmatic authentication and access.<br><br><b>roles</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available IBM Cloud IAM roles and provides details about their permissions and scope.<br><br>


title: DESCRIPTION
content:
The <b>ibmcloud-iam</b> command, invoked as <b>ibmcloud iam</b>, is a powerful plugin for the IBM Cloud CLI that provides comprehensive capabilities for managing Identity and Access Management (IAM) resources. It enables administrators and users to programmatically control who has access to what resources within their IBM Cloud account. This includes managing users, inviting new users, disabling existing ones, and assigning roles. Furthermore, it facilitates the creation and management of access groups to streamline permission assignments, defining policies that dictate specific permissions for users or service IDs, and handling service IDs and their associated API keys for non-human applications or services. The plugin integrates directly with the IBM Cloud IAM service, ensuring consistent and secure access control across all cloud resources. It's an essential tool for automating IAM workflows and maintaining a robust security posture in IBM Cloud environments.


title: CAVEATS
content:
The <b>ibmcloud-iam</b> plugin must be installed separately after the main <b>ibmcloud</b> CLI.<br>Requires appropriate IAM permissions within the IBM Cloud account to perform actions (e.g., <i>Administrator</i> role on IAM services for most management tasks).<br>Many commands require specific resource IDs (e.g., user ID, access group ID, policy ID) which often need to be retrieved first via <i>list</i> commands.<br>Output formats can vary; using <i>--output JSON</i> is often recommended for scripting.


title: PERMISSIONS MODEL
content:
IBM Cloud IAM operates on an attribute-based access control (ABAC) model, where access is granted based on attributes of the user, resource, and environment. Policies are defined with subjects (who), roles (what they can do), and resources (where they can do it).


title: BEST PRACTICES
content:
It is recommended to use access groups for managing permissions to reduce complexity. Assign the least privilege necessary for users and service IDs. Regularly review and audit IAM policies and user access to maintain a strong security posture.


title: HISTORY
content:
The <b>ibmcloud-iam</b> plugin evolved as IBM Cloud transitioned from legacy Cloud Foundry-based access control to a unified, global IAM system. Initially, access management was fragmented, tied closely to Cloud Foundry organizations and spaces. With the introduction of the global IAM service, the <b>ibmcloud</b> CLI integrated this new system through the <b>ibmcloud-iam</b> plugin, providing a centralized and consistent way to manage access across all IBM Cloud resources, including IaaS, PaaS, and various services. Its development reflects the industry trend towards robust, fine-grained access control mechanisms to meet modern security and compliance demands.


title: TLDR
content:
<b>List service IDs in an account</b>`ibmcloud iam service-ids`<br><b>List all API keys for a service ID</b>`ibmcloud iam service-api-keys [service_id]`<br><b>Create an API key for a service ID with a description and without confirmation</b>`ibmcloud iam service-api-key-create [api_key_name] [service_id] [[-d|--description]] [description] [[-f|--force]]`<br><b>List all actions available under this command</b>`ibmcloud iam help`


title: TLDR
content:
<b>List all available versions of a package</b>`pip index versions [package]`<br><b>List versions from a specific index</b>`pip index versions [package] --index-url [https://test.pypi.org/simple/]`<br><b>Include pre-release versions</b>`pip index versions [package] --pre`<br><b>Include an additional index</b>`pip index versions [package] --extra-index-url [https://example.com/simple/]`<br><b>List versions for a specific platform</b>`pip index versions [package] --platform [linux_x86_64]`


title: SYNOPSIS
content:
<b><I>npm dist-tag</I></b> <I>add</I> <I>&lt;pkg&gt;@&lt;version&gt;</I> [<I>&lt;tag&gt;</I>]<br><b><I>npm dist-tag</I></b> <I>rm</I> <I>&lt;pkg&gt;</I> <I>&lt;tag&gt;</I><br><b><I>npm dist-tag</I></b> <I>ls</I> [<I>&lt;pkg&gt;</I>]<br>When run in a package directory, <I>&lt;pkg&gt;</I> and <I>@&lt;version&gt;</I> can often be omitted, inferring from <I>package.json</I>.


title: PARAMETERS
content:
<b>add <pkg>@<version> [<tag>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new distribution tag, or updates an existing one, to point to a specific version of a package. If <I>&lt;tag&gt;</I> is omitted, it defaults to <I>latest</I>. If run within a package directory, <I>&lt;pkg&gt;</I> and <I>@&lt;version&gt;</I> are inferred from <I>package.json</I> and its current version.<br><br><b>rm <pkg> <tag></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified distribution tag from a package. If run within a package directory, <I>&lt;pkg&gt;</I> is inferred from <I>package.json</I>.<br><br><b>ls [<pkg>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all distribution tags and the versions they point to for a given package. If <I>&lt;pkg&gt;</I> is omitted, it lists tags for the package in the current directory.<br><br>


title: DESCRIPTION
content:
The <b><I>npm dist-tag</I></b> command is a utility for managing distribution tags associated with a package in the npm registry. Distribution tags, often referred to as "dist-tags," are human-readable labels that can be assigned to specific versions of your package. They allow users to install a package by a meaningful name instead of a precise version number, for example, <I>npm install &lt;pkg&gt;@latest</I> or <I>npm install &lt;pkg&gt;@beta</I>. The <I>latest</I> tag is the default one and typically points to the most recent stable release. This command allows you to add new tags, remove existing tags, and list all current tags for a package. It's crucial for maintaining different release channels (e.g., stable, beta, alpha, long-term support) and ensuring users can easily access the desired version of your software.


title: CAVEATS
content:
<ul><li><b>Permissions:</b> You must be an owner of the package to modify its dist-tags.</li><li><b><I>latest</I> tag:</b> While you can modify the <I>latest</I> tag, it's generally recommended to let <I>npm publish</I> manage it. Publishing a new version with no specific tag will automatically set the <I>latest</I> tag to that new version.</li><li><b>Security:</b> Be cautious when using tags other than <I>latest</I> for production dependencies, as they might point to unstable versions or be changed unexpectedly by the package maintainer.</li><li><b>Package Scope:</b> When not specifying a package, the command operates on the package defined in the current directory's <I>package.json</I>.</li></ul>


title: DEFAULT TAG BEHAVIOR
content:
When you publish a package without specifying a <I>tag</I> option (<I>npm publish --tag &lt;tag&gt;</I>), it will automatically update the <I>latest</I> dist-tag in the registry to point to the newly published version. This is the standard behavior for stable releases.


title: USE CASES
content:
<ul><li><b>Beta/Alpha Releases:</b> Assigning <I>beta</I> or <I>alpha</I> tags to pre-release versions (e.g., <I>npm dist-tag add my-pkg@1.2.0-beta.1 beta</I>). Users can then install <I>my-pkg@beta</I>.</li><li><b>LTS Versions:</b> Marking long-term support versions (e.g., <I>npm dist-tag add my-pkg@3.0.0 lts-3</I>).</li><li><b>Canary Builds:</b> Pointing to nightly or very unstable builds for early testing.</li></ul>


title: HISTORY
content:
The concept of distribution tags has been an integral part of the npm registry and CLI from its relatively early days, designed to facilitate package versioning and release management. While the core functionality of <I>dist-tag</I> has remained consistent, its implementation and integration within the broader npm ecosystem have evolved alongside the npm CLI itself. This command provides a simple yet powerful interface to manage critical release channels, allowing maintainers to easily direct users to stable, beta, or other designated versions without requiring explicit version numbers. It became increasingly important as more complex release strategies, like semantic release and long-term support (LTS) versions, became prevalent in the Node.js and JavaScript communities.


title: TLDR
content:
<b>List all distribution tags for a package</b>`npm dist-tag ls [package_name]`<br><b>List all distribution tags for the current package</b>`npm dist-tag ls`<br><b>Add a distribution tag to a specific package version</b>`npm dist-tag add [package_name]@[version] [tag]`<br><b>Remove a distribution tag from a package</b>`npm dist-tag rm [package_name] [tag]`<br><b>Add a tag using the configured tag from npm config</b>`npm dist-tag add [package_name]@[version]`<br><b>Add a tag with two-factor authentication</b>`npm dist-tag add [package_name]@[version] [tag] --otp [one_time_password]`


title: TLDR
content:
<b>Sync your project's environment with the poetry.lock file</b>`poetry sync`<br><b>Exclude one or more dependency groups for the installation</b>`poetry sync --without [test|docs|...]`<br><b>Select optional dependency groups</b>`poetry sync --with [test|docs|...]`<br><b>Install all dependency groups including optional groups</b>`poetry sync --all-groups`<br><b>Install specific dependency groups</b>`poetry sync --only [test|docs|...]`<br><b>Install project without dependencies</b>`poetry sync --only-root`<br><b>Specify extras to install</b>`poetry sync [[-E|--extras]]`<br><b>Skip the defaulted package installation for your project</b>`poetry sync --no-root`


title: SYNOPSIS
content:
<b>ibmcloud config</b> [<i>--list</i>] [<i>--check-version &lt;true|false&gt;</i>] [<i>--usage-data &lt;true|false&gt;</i>] [<i>--color &lt;true|false&gt;</i>] [<i>--locale &lt;locale&gt;</i>] [<i>--trace &lt;true|false|path&gt;</i>] [<i>--http-timeout &lt;seconds&gt;</i>] [<i>--private-endpoint-only &lt;true|false&gt;</i>] [<i>--no-autologin &lt;true|false&gt;</i>] [<i>--cloud-metadata &lt;true|false&gt;</i>] [<i>--set-option &lt;KEY&gt; &lt;VALUE&gt;</i>] [<i>--unset-option &lt;KEY&gt;</i>] [<i>--help</i>]


title: PARAMETERS
content:
<b><i>--list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all current configuration settings and their values.<br><br><b><i>--check-version &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables automatic checking for new CLI versions upon command execution.<br><br><b><i>--usage-data &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls whether anonymous usage data is sent to IBM Cloud for product improvement.<br><br><b><i>--color &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables colored output in the terminal for better readability.<br><br><b><i>--locale &lt;locale&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the language for CLI output and messages (e.g., `en_US`, `zh_CN`).<br><br><b><i>--trace &lt;true|false|path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates debug tracing. Set to `true` to print trace to console, `false` to disable, or a file path to log to a specific file.<br><br><b><i>--http-timeout &lt;seconds&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum HTTP request timeout in seconds for API calls made by the CLI.<br><br><b><i>--private-endpoint-only &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the CLI to use only private network endpoints for connecting to IBM Cloud services.<br><br><b><i>--no-autologin &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the CLI from automatically attempting to re-authenticate when an access token expires.<br><br><b><i>--cloud-metadata &lt;true|false&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the retrieval of cloud metadata, which can influence login behavior in specific IaaS environments.<br><br><b><i>--set-option &lt;KEY&gt; &lt;VALUE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific configuration option identified by `KEY` to the provided `VALUE`.<br><br><b><i>--unset-option &lt;KEY&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified configuration option from the CLI settings.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information and usage details for the `ibmcloud config` command.<br><br>


title: DESCRIPTION
content:
The `ibmcloud config` command is a crucial utility within the IBM Cloud Command Line Interface (CLI) that allows users to manage and customize various operational aspects of the CLI. <br><br>It provides granular control over settings such as automatic version checking, usage data collection, output coloration, and locale preferences. Users can also configure advanced network settings like HTTP timeouts, enforce private endpoint usage, and control automatic re-authentication behavior. <br><br>This command is essential for tailoring the CLI experience to specific user preferences, security requirements, and network environments, ensuring efficient and secure interaction with IBM Cloud resources. By listing current settings, modifying specific options, or resetting configurations, `ibmcloud config` empowers developers and administrators to optimize their daily workflows and maintain compliance with organizational policies. It acts as the central hub for personalized CLI management, impacting subsequent command executions and overall user experience.


title: CAVEATS
content:
Changes made with `ibmcloud config` are persistent across CLI sessions until explicitly modified again.<br><br>Some configuration options, such as `private-endpoint-only`, require specific network configurations to be effective.<br><br>Modifying advanced settings like `trace` or `http-timeout` without understanding their impact can affect debugging capabilities or command stability.<br><br>While `ibmcloud config` is the recommended way to manage settings, some options can be temporarily overridden by environment variables for specific command executions.


title: CONFIGURATION FILE LOCATION
content:
The IBM Cloud CLI stores its configuration settings in a file, typically located at <b><I>~/.ibmcloud/config.json</I></b>. While this file can be viewed, direct manual editing is generally discouraged. Users should rely on the `ibmcloud config` command to ensure proper format and validation of settings.


title: ENVIRONMENT VARIABLE OVERRIDES
content:
Many CLI configuration options can be temporarily overridden or set via environment variables. This provides flexibility for scripting or specific session requirements without altering the persistent configuration file. For instance, setting `IBMCLOUD_TRACE` can activate tracing for a single command execution.


title: HISTORY
content:
The `ibmcloud` CLI, along with its `config` subcommand, represents an evolution from the earlier `bluemix` CLI. As IBM Cloud expanded its services and capabilities, the CLI was refactored to provide a more unified and extensible platform. The `config` command has consistently provided essential user-level customization, but its range of options has grown over time to include more sophisticated networking and security settings, reflecting the increasing complexity and diverse requirements of modern cloud environments.


title: TLDR
content:
<b>Set HTTP request timeout to 30 seconds</b>`ibmcloud config --http-timeout 30`<br><b>Enable trace output for HTTP requests</b>`ibmcloud config --trace true`<br><b>Trace HTTP requests to a specific file</b>`ibmcloud config --trace [path/to/trace_file]`<br><b>Disable color output</b>`ibmcloud config --color false`<br><b>Set the locale to a specific language</b>`ibmcloud config --locale [zh_Hans]`<br><b>Enable automatic SSO one-time passcode acceptance</b>`ibmcloud config --sso-otp auto`


title: SYNOPSIS
content:
<b><code>cluster</code></b> <i>&lt;command&gt;</i> [<i>&lt;options&gt;</i>] [<i>&lt;arguments&gt;</i>]<br><b><code>cluster</code></b> {<b><code>version</code></b>|<b><code>status</code></b>|<b><code>ccs</code></b>|<b><code>node</code></b>|<b><code>rgmanager</code></b>|<b><code>config</code></b>|<b><code>fence</code></b>|...}<br><br><i>Note: This command typically operated with specific subcommands, each having its own set of options and arguments.</i>


title: PARAMETERS
content:
<b><b><code>status</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current status of the cluster, including node health and resource group states.</i><br><br><b><b><code>version</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows the version information for the cluster tools.</i><br><br><b><b><code>ccs</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Provides an interface to the Cluster Configuration System, allowing for configuration retrieval and updates.</i><br><br><b><b><code>node</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Manages cluster nodes, including displaying node status and performing node-specific actions.</i><br><br><b><b><code>rgmanager</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Controls the resource group manager, used for starting, stopping, and managing cluster services (resource groups).</i><br><br><b><b><code>config</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Allows for manipulation of cluster configuration files.</i><br><br><b><b><code>fence</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Manages fence devices and fencing operations within the cluster.</i><br><br>


title: DESCRIPTION
content:
The <b><code>cluster</code></b> command was a central command-line interface for managing components of the Red Hat Cluster Suite (RHCS), including <b>CMAN</b> (Cluster Manager) and <b>rgmanager</b> (resource group manager). It provided subcommands to check cluster status, manage cluster nodes, configure cluster services (resources), and control the cluster daemon.<br><br>While crucial in its time for setting up and maintaining high-availability and load-balancing clusters, it has largely been superseded by modern cluster management tools like <b><code>pcs</code></b> (Pacemaker/Corosync Command-Line Interface) and is considered deprecated on contemporary Linux distributions.<br><br>Its primary role was to interact with the underlying cluster infrastructure, allowing administrators to query cluster state, start/stop services, and perform administrative tasks on cluster members.


title: CAVEATS
content:
The <b><code>cluster</code></b> command is largely deprecated and is not present on modern Linux distributions by default. It was primarily used with the Red Hat Cluster Suite (RHCS) and its underlying <b>CMAN</b>/<b>rgmanager</b> components. Modern high-availability clusters on Linux typically use <b>Pacemaker</b> and <b>Corosync</b>, managed via the <b><code>pcs</code></b> command. Attempting to use <b><code>cluster</code></b> on a system not configured with RHCS will result in a "command not found" error or unexpected behavior. Functionality described applies to its historical usage.


title: <B>UNDERLYING ARCHITECTURE</B>
content:
The <b><code>cluster</code></b> command did not itself run the cluster; rather, it interacted with daemon processes like <b><code>cman</code></b> (for cluster membership and messaging) and <b><code>rgmanager</code></b> (for resource and service management). It provided a user-friendly abstraction layer over these complex background services.


title: <B>CONFIGURATION MANAGEMENT</B>
content:
Cluster configuration was traditionally stored in <b><code>/etc/cluster/cluster.conf</code></b>, often managed by the <b><code>ccs</code></b> (Cluster Configuration System) utility, which the <b><code>cluster</code></b> command could interface with.


title: HISTORY
content:
The <b><code>cluster</code></b> command gained prominence as part of the Red Hat Cluster Suite (RHCS) in the early 2000s, serving as the primary administrative interface for managing high-availability and load-balancing clusters on Red Hat Enterprise Linux and its derivatives. It was instrumental for administrators managing mission-critical services by orchestrating resources and ensuring failover capabilities through <b>CMAN</b> and <b>rgmanager</b>.<br><br>Its usage began to decline with the shift towards the <b>Pacemaker</b> and <b>Corosync</b> stack as the industry standard for open-source high-availability, which offered a more flexible and robust architecture. By the mid-2010s, <b><code>pcs</code></b> emerged as the preferred command-line tool for these new cluster technologies, effectively rendering the original <b><code>cluster</code></b> command obsolete for new deployments.


title: SEE ALSO
content:
<b><code>pcs(8)</code></b>: <i>The modern command-line interface for Pacemaker/Corosync clusters.</i>, <b><code>cman(5)</code></b>: <i>Cluster Manager (the daemon often managed by this command).</i>, <b><code>rgmanager(5)</code></b>: <i>Resource Group Manager (the daemon for resource groups).</i>, <b><code>corosync(8)</code></b>: <i>A core component of modern cluster infrastructure.</i>, <b><code>pacemaker(8)</code></b>: <i>A key component of modern cluster infrastructure.</i>


title: TLDR
content:
<b>Generate clusters that optimize modularity and print the result to stdout</b>`cluster [input.gv]`<br><b>Specify a target number of [C]lusters (approximate) to generate (0 by default, meaning a number that approximately optimizes the modularity)</b>`cluster -C [5] [input.gv]`<br><b>Use a different [c]lustering method (0: modularity clustering, 1: modularity quality)</b>`cluster -c [0|1] [input.gv]`<br><b>Save the [o]utput to a file</b>`cluster -o [output.gv] [input.gv]`<br><b>Enable [v]erbose mode</b>`cluster -v [input.gv]`


title: SYNOPSIS
content:
<b><I>psql [connection_options] -c "CREATE SUBSCRIPTION <I>name</I> CONNECTION '<I>dsn</I>' PUBLICATION <I>publication_name</I> [, <I>publication_name</I>...] [WITH (<I>option</I> = <I>value</I> [, ...])];"</I></b><br><br><I>Alternatively, for interactive use:</I><br><b><I>psql [connection_options]</I></b><br><I>... then at the psql prompt:</I><br><b><I>CREATE SUBSCRIPTION <I>name</I> CONNECTION '<I>dsn</I>' PUBLICATION <I>publication_name</I> [, <I>publication_name</I>...] [WITH (<I>option</I> = <I>value</I> [, ...])];</I></b>


title: PARAMETERS
content:
<b><b><I>name</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>A unique name for the new subscription. This name is used to identify the subscription for management, e.g., with `ALTER SUBSCRIPTION`.</I><br><br><b><b><I>CONNECTION 'dsn'</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>The connection string (Data Source Name) to the publisher database. This string specifies host, port, database name, user, and password for connecting to the publisher.</I><br><br><b><b><I>PUBLICATION publication_name</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>The name(s) of the publication(s) on the publisher database to subscribe to. Multiple publication names can be listed, separated by commas.</I><br><br><b><b><I>WITH (copy_data = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `true` (default), existing data in the publisher's tables will be copied to the subscriber once the subscription starts. If `false`, only new changes are replicated.</I><br><br><b><b><I>WITH (create_slot = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `true` (default), the subscription will automatically create a replication slot on the publisher with a name derived from the subscription name. Set to `false` if a slot already exists or is managed externally.</I><br><br><b><b><I>WITH (enabled = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `true` (default), the subscription starts in an enabled state and begins replicating immediately after creation. If `false`, it must be enabled later using `ALTER SUBSCRIPTION ... ENABLE`.</I><br><br><b><b><I>WITH (slot_name = string)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>The explicit name of the replication slot to use on the publisher. If not specified and `create_slot` is `true`, a name is automatically generated.</I><br><br><b><b><I>WITH (connect = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `false`, the subscription will not attempt to connect to the publisher during its creation. This can be useful for initial setup where the publisher might not be immediately available.</I><br><br><b><b><I>WITH (binary = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `true`, data is transferred in binary format where possible, potentially offering better performance. If `false` (default), data is transferred in text format.</I><br><br><b><b><I>WITH (streaming = boolean)</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>If `true`, large transactions are streamed to the subscriber while in progress, reducing memory footprint on the publisher for long-running transactions. (Available since PostgreSQL 14)</I><br><br>


title: DESCRIPTION
content:
<I>The `pg_createsubscriber` operation refers to the process of setting up a logical replication subscriber in PostgreSQL. This is primarily achieved using the SQL command `CREATE SUBSCRIPTION`, which is executed within a PostgreSQL client, typically `psql`.</I><br><br><I>Logical replication allows data changes from a publisher database to be replicated to one or more subscriber databases. The `CREATE SUBSCRIPTION` command defines a connection to a publisher and specifies which publications (sets of tables and/or changes) to receive. It manages the initial data copy, continuous data synchronization, and can be configured with various options to control its behavior, such as whether to copy existing data, create a replication slot, or start the subscription in an enabled state.</I><br><br><I>While there isn't a standalone "pg_createsubscriber" Linux executable in the core PostgreSQL distribution, the term might conceptually refer to the overall task of creating a subscriber, often involving this SQL command executed through a shell-based tool like `psql`.</I>


title: CAVEATS
content:
<I>The term "pg_createsubscriber" is not a direct standalone executable provided by core PostgreSQL. The functionality described is achieved through the `CREATE SUBSCRIPTION` SQL command, typically executed via `psql`.</I><br><br><I>Proper network connectivity and firewall rules must be in place between the subscriber and publisher. The user account specified in the connection DSN must have sufficient privileges on the publisher, including `REPLICATION` role, `SELECT` on published tables, and potentially `USAGE` on schemas.</I><br><br><I>Care must be taken when setting `copy_data = false`, as it assumes the subscriber tables are already in sync with the publisher, otherwise data divergence will occur. Setting up logical replication requires careful planning and understanding of its implications.</I>


title: <B><I>PRE-REQUISITES ON PUBLISHER</I></B>
content:
<I>Before creating a subscription, ensure the publisher database has `wal_level` set to `logical` in its `postgresql.conf` and has a `PUBLICATION` defined. The user connecting from the subscriber must have `REPLICATION` privilege and `SELECT` privilege on the tables within the published schemas.</I>


title: <B><I>REPLICATION SLOT MANAGEMENT</I></B>
content:
<I>Replication slots are crucial for logical replication as they prevent the publisher from removing WAL segments until they have been consumed by all subscribers. By default, `CREATE SUBSCRIPTION` creates a new slot. If the slot is dropped or becomes invalid on the publisher, the subscriber will stop receiving changes, and manual intervention will be required.</I>


title: HISTORY
content:
<I>Native logical replication, including the `CREATE SUBSCRIPTION` command, was introduced in PostgreSQL 10, providing an integrated solution for selective data replication. Prior to this, solutions like the `pglogical` extension were commonly used to achieve similar functionality. Subsequent PostgreSQL versions have introduced additional features and options, such as streaming large transactions in PostgreSQL 14, to enhance the flexibility and performance of logical replication.</I>


title: SEE ALSO
content:
<I>CREATE PUBLICATION (SQL command)</I>, <I>ALTER SUBSCRIPTION (SQL command)</I>, <I>DROP SUBSCRIPTION (SQL command)</I>, <I>psql(1)</I>, <I>pg_basebackup(1)</I>


title: TLDR
content:
<b>Convert a physical replica to a logical replica for a specific database</b>`pg_createsubscriber [[-d|--database]] [dbname] [[-D|--pgdata]] [path/to/data] [[-P|--publisher-server]] [connstr]`<br><b>Perform a dry run without modifying the target directory</b>`pg_createsubscriber [[-n|--dry-run]] [[-d|--database]] [dbname] [[-D|--pgdata]] [path/to/data] [[-P|--publisher-server]] [connstr]`<br><b>Enable two-phase commit for the subscription</b>`pg_createsubscriber [[-T|--enable-two-phase]] [[-d|--database]] [dbname] [[-D|--pgdata]] [path/to/data] [[-P|--publisher-server]] [connstr]`<br><b>Convert with verbose output</b>`pg_createsubscriber [[-v|--verbose]] [[-d|--database]] [dbname] [[-D|--pgdata]] [path/to/data] [[-P|--publisher-server]] [connstr]`<br><b>Display help</b>`pg_createsubscriber [[-?|--help]]`


title: PARAMETERS
content:
<b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Gives more output, which can be useful for debugging or detailed analysis.<br><br><b>--disable-pip-version-check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not periodically check PyPI to determine whether a new version of pip is available for download. Implied when `PIP_NO_PIP_VERSION_CHECK` is set.<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress colored output, which can be helpful when redirecting output to a file or in environments that do not support ANSI escape codes.<br><br>


title: DESCRIPTION
content:
The <b>pip check</b> command is a utility within the pip package installer for Python that verifies the consistency and compatibility of currently installed packages. Its primary function is to scan your Python environment and report any issues concerning package dependencies, such as unsatisfied requirements or conflicting versions. <br><br>When executed, <b>pip check</b> examines each installed package's declared dependencies and compares them against other packages present in the environment. If it finds a package that requires another package that is either missing or installed at an incompatible version, it will output a clear report detailing these discrepancies. <br><br>This command is invaluable for diagnosing problems in a Python environment, helping developers and system administrators quickly identify the root cause of 'ModuleNotFoundError' or unexpected behavior due to dependency conflicts. It acts as a quick health check for your installed Python packages, ensuring that all pieces are in place and compatible with one another. However, it's important to note that <b>pip check</b> only reports problems; it does not attempt to resolve or fix them automatically.


title: CAVEATS
content:
<b>pip check</b> is a diagnostic tool and does not attempt to resolve or fix dependency issues. Users must manually address any reported problems, typically by installing missing packages or updating/downgrading conflicting ones. It only verifies declared dependencies against installed packages; it does not validate against a <i>requirements.txt</i> file or check for conditional runtime dependencies that might not be declared statically.


title: OUTPUT INTERPRETATION
content:
The output of <b>pip check</b> is straightforward. It lists each package that has a dependency issue, followed by a description of the problem. For example, '<i>package-name</i> requires <i>another-package</i>, which is not installed.' or '<i>package-name</i> has requirement <i>another-package==X.Y.Z</i>, but you have <i>another-package A.B.C</i> installed.' If no output is displayed, it means all installed packages have their dependencies satisfied and no immediate conflicts were found.


title: HISTORY
content:
The <b>pip check</b> subcommand was introduced as part of the ongoing development of <i>pip</i>, the standard package installer for Python. Its inclusion aimed to provide Python developers and administrators with a quick, built-in method to diagnose common dependency conflicts and missing packages within their Python environments, improving the overall stability and reliability of package management.


title: TLDR
content:
<b>Check for broken or missing requirements</b>`pip check`<br><b>Check and log output to a file</b>`pip check --log [path/to/file]`


title: PARAMETERS
content:
<b><i>archivelocation</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the directory containing the WAL archive files to be cleaned up.<br><br><b><i>oldestkeptwalfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the oldest WAL file that must be preserved. All files older than this will be removed.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing more verbose information about the cleanup process.<br><br><b><b>-n</b>, <b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a 'dry run'. It shows which files would be removed without actually deleting them.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the PostgreSQL version information and exits.<br><br><b><b>-?</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message about command usage and options, then exits.<br><br>


title: DESCRIPTION
content:
The <b>pg_archivecleanup</b> command is a utility provided with PostgreSQL to manage and clean up old Write-Ahead Log (WAL) segment files from a continuous archiving directory. It helps prevent the WAL archive from growing indefinitely, which is crucial for efficient disk space management, especially in setups utilizing Point-In-Time Recovery (PITR) or streaming replication. <br><br>This utility is typically run on a standby server or recovery instance as part of the <code>archive_cleanup_command</code> configuration. It removes all WAL files in the specified <code>archivelocation</code> that are older than the <code>oldestkeptwalfile</code> argument. The <code>oldestkeptwalfile</code> is usually supplied by PostgreSQL itself (via the <code>%r</code> placeholder in the cleanup command) and represents the earliest WAL segment still required for the standby to recover up to the current point or for future PITR operations. <br><br>By automating the removal of no-longer-needed WAL segments, <b>pg_archivecleanup</b> ensures that the archive directory maintains a reasonable size while still preserving all necessary files for successful recovery.


title: CAVEATS
content:
Using <b>pg_archivecleanup</b> incorrectly can lead to the deletion of essential WAL files, which would prevent successful Point-In-Time Recovery (PITR) or break standby replication. Always ensure the <code>oldestkeptwalfile</code> is correct. <br><br>The command requires write permissions to the specified <code>archivelocation</code>. <br><br>It only deletes full WAL segments and does not touch partial WAL files (those ending in <code>.partial</code>) or backup history files (those ending in <code>.backup</code>) which might also reside in the archive directory.


title: TYPICAL USAGE WITH <CODE>ARCHIVE_CLEANUP_COMMAND</CODE>
content:
<b>pg_archivecleanup</b> is most commonly used by configuring the <code>archive_cleanup_command</code> parameter in the <code>recovery.conf</code> (or <code>standby.signal</code>/<code>postgresql.conf</code> for modern versions) file on a standby or recovery server. PostgreSQL will automatically execute this command whenever it determines that a certain WAL segment is no longer needed for recovery. <br><br>A typical configuration looks like this:<br><code>archive_cleanup_command = 'pg_archivecleanup /path/to/wal_archive %r'</code><br><br>Here, <code>%r</code> is a special placeholder provided by PostgreSQL that expands to the name of the oldest WAL file that the standby server still requires for recovery. This ensures that only truly obsolete files are removed, safeguarding data integrity and recovery capabilities.


title: HISTORY
content:
<b>pg_archivecleanup</b> has been a standard utility distributed with PostgreSQL for many years, evolving alongside the database's robust continuous archiving and Point-In-Time Recovery (PITR) capabilities. Its development reflects the growing need for automated and reliable WAL archive management in high-availability and disaster recovery setups.


title: TLDR
content:
<b>Clean an archive directory up to a given WAL file</b>`pg_archivecleanup [path/to/archive] [path/to/walfile]`<br><b>Perform a dry run (list files that would be removed without actually doing it)</b>`pg_archivecleanup [[-n|--dry-run]] [path/to/archive] [path/to/walfile]`<br><b>Strip a file extension before deciding deletion</b>`pg_archivecleanup [[-x|--strip-extension]] [extension] [path/to/archive] [path/to/walfile]`<br><b>Remove backup history files too</b>`pg_archivecleanup [[-b|--clean-backup-history]] [path/to/archive] [path/to/walfile]`<br><b>Enable debug logging output</b>`pg_archivecleanup [[-d|--debug]] [path/to/archive] [path/to/walfile]`


title: PARAMETERS
content:
<b>api</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Deprecated)</i> Displays or sets the registry API endpoint for the current region.<br><br><b>cli-update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates the Container Registry CLI plugin to the latest available version.<br><br><b>gc-status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current status of garbage collection in your targeted region.<br><br><b>gc-start</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates a new garbage collection run for the current region to reclaim storage.<br><br><b>gc-cancel</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cancels an ongoing garbage collection run for the current region.<br><br><b>image-list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all container images across your IBM Cloud Container Registry namespaces.<br><br><b>image-rm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes one or more specified images from the registry. <i>Use with caution.</i><br><br><b>image-tag</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds an additional tag to an existing image, useful for versioning.<br><br><b>image-inspect</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed metadata and configuration information about a specific image.<br><br><b>image-prune</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes untagged images or all images from a repository based on age or quantity rules.<br><br><b>namespace-add</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new namespace to your IBM Cloud account for organizing images.<br><br><b>namespace-list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all namespaces associated with your IBM Cloud account.<br><br><b>namespace-rm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes an existing namespace and <b>all</b> its contained images. <i>Irreversible operation.</i><br><br><b>private-service-endpoint</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages the enablement or disablement of the private service endpoint for the registry.<br><br><b>quota</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays information about your current registry storage usage and quota limits.<br><br><b>region-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the current IBM Cloud region for Container Registry operations.<br><br><b>retention-policy-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates or updates an image retention policy for a specified repository.<br><br><b>retention-policy-get</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the configured image retention policy for a specified repository.<br><br><b>retention-policy-rm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes an existing image retention policy from a repository.<br><br><b>retention-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Immediately executes the image retention policy for a specified repository.<br><br><b>va-policy-enable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the Vulnerability Advisor policy for your account, enforcing scan checks.<br><br><b>va-policy-disable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the Vulnerability Advisor policy for your account.<br><br><b>va-scan</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a Vulnerability Advisor scan on a specific image and displays results.<br><br>


title: DESCRIPTION
content:
The <b>ibmcloud-cr</b> (IBM Cloud Container Registry) command is a crucial plugin for the IBM Cloud CLI, providing a comprehensive set of tools for managing container images, namespaces, and related settings within the IBM Cloud Container Registry service. It empowers users to efficiently list, tag, inspect, and remove container images, as well as manage registry namespaces. Furthermore, it allows for the configuration of retention policies for automated image cleanup, control over Vulnerability Advisor policies, and management of garbage collection processes. This command significantly streamlines the workflow for developers and operators working with Docker images and Kubernetes deployments on IBM Cloud, ensuring secure and efficient management of container artifacts throughout their lifecycle. It is an essential tool for integrating registry operations into CI/CD pipelines.


title: CAVEATS
content:
<ul><li>The <b>ibmcloud-cr</b> command requires the main <b>ibmcloud</b> CLI to be installed and the user to be logged in to an IBM Cloud account.</li><li>All actions are subject to the user's IBM Cloud IAM (Identity and Access Management) permissions. Ensure you have the necessary roles for the operations you intend to perform.</li><li>Namespace names must be unique across all IBM Cloud users within a given region.</li><li>Deletion commands like <b>namespace-rm</b> and <b>image-rm</b> are irreversible. Exercise extreme caution when using them, as they can lead to data loss.</li><li>Most operations are scoped to the currently targeted IBM Cloud region. Verify your target region using <b>ibmcloud target -r &lt;region&gt;</b> or <b>ibmcloud cr region-set</b>.</li></ul>


title: AUTHENTICATION
content:
The <b>ibmcloud-cr</b> plugin leverages the authentication context established by the main <b>ibmcloud login</b> command. No separate login or authentication is required specifically for the registry plugin; it inherits the user's session from the core CLI.


title: NAMESPACES AND ORGANIZATION
content:
All container images within IBM Cloud Container Registry must reside within a namespace. Namespaces serve as a fundamental organizational unit, allowing users to group related images, apply access controls, and manage resources efficiently within their account. Creating and managing namespaces is a key aspect of using <b>ibmcloud-cr</b>.


title: REGIONAL SCOPE
content:
IBM Cloud Container Registry is a regional service. This means that images and namespaces are stored and managed within a specific IBM Cloud region. Operations performed with <b>ibmcloud-cr</b> are always executed within the context of the currently targeted IBM Cloud region, which can be set using <b>ibmcloud target</b> or the <b>ibmcloud cr region-set</b> command.


title: HISTORY
content:
The <b>ibmcloud-cr</b> command emerged as a dedicated plugin for the IBM Cloud CLI, specifically designed to manage the IBM Cloud Container Registry service. As IBM Cloud expanded its container services, the need for a robust command-line interface for registry interactions became apparent. This plugin architecture allows the core <b>ibmcloud</b> CLI to remain modular while extending its capabilities for specialized services. Its development has closely tracked the evolution of the IBM Cloud Container Registry service, incorporating new features such as enhanced security, advanced image retention policies, and comprehensive garbage collection mechanisms, enabling greater automation and integration into modern CI/CD pipelines for containerized applications.


title: TLDR
content:
<b>Set target region for IBM Cloud Container Registry</b>`ibmcloud cr region-set`<br><b>List images available</b>`ibmcloud cr [[images|image-list]]`<br><b>Inspect an image data</b>`ibmcloud cr image-inspect [image]`<br><b>Run vulnerability assessment on an image</b>`ibmcloud cr [[va|vulnerability-assessment]] [image]`<br><b>Log the local Docker or Podman client in to IBM Cloud Container Registry</b>`ibmcloud cr login`<br><b>List all actions available under this command</b>`ibmcloud cr help`


title: PARAMETERS
content:
<b><I>PACKAGE_ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>name of the package</b> (e.g., `serde`) or a package name with a version requirement (e.g., `serde@1.0.0` or `serde@^1.0`). If omitted, it queries the current project's <i>Cargo.toml</i>.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints help information to the console.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information for <i>cargo-info</i>.<br><br><b>-o, --output <I>OUTPUT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <b>output format</b>. Supported values are `text` (default) and `json`.<br><br><b>-R, --registry <I>REGISTRY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative registry to use instead of the default <i>crates.io</i>.<br><br><b>-a, --all-versions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays information for <b>all available versions</b> of the specified package.<br><br><b>-s, --sort-by <I>SORT_BY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts dependencies by the specified criterion when displaying multiple versions. Options include `name`, `version`, `downloads`.<br><br><b>-i, --indent <I>INDENT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of spaces to indent the JSON output when `--output json` is used.<br><br><b>-D, --description</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>package description</b>.<br><br><b>-H, --homepage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>homepage URL</b>.<br><br><b>-r, --repository</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>source code repository URL</b>.<br><br><b>-d, --documentation</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>documentation URL</b>.<br><br><b>-l, --license</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>license type</b>.<br><br><b>-u, --users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows crates that <b>depend on this package</b>.<br><br><b>-c, --crates-io</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>URL on <i>crates.io</i></b>.<br><br><b>-k, --keywords</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's associated <b>keywords</b>.<br><br><b>-e, --categories</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's assigned <b>categories</b>.<br><br><b>-K, --yanked</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>yanked status</b> of a package version (if it has been withdrawn).<br><br><b>-S, --size</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>size of the package's archive</b>.<br><br><b>-B, --authors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>authors</b> of the package.<br><br><b>-C, --changelog</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the package's <b>changelog URL</b>.<br><br><b>-t, --audit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a <b>security audit</b> on the package. Requires <i>cargo-audit</i> to be installed separately.<br><br><b>-p, --no-deps</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Suppresses the display of package dependencies</b>.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses <b>verbose output</b>, providing more detailed information.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informational messages, only printing direct output. Useful with `--output json`.<br><br><b>--locked</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Requires <i>Cargo.lock</i> to be up to date if querying the current project's dependencies.<br><br><b>--frozen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Requires <i>Cargo.lock</i> and all sources to be up to date. Prevents network access if possible.<br><br><b>--offline</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs without accessing the network, relying solely on locally cached data.<br><br>


title: DESCRIPTION
content:
<i>cargo-info</i> is a <b>powerful subcommand for the Rust package manager, <i>cargo</i></b>, designed to retrieve and display extensive information about Rust packages (crates) available on <i>crates.io</i>. It allows developers to quickly query details for a specific crate by its name and optional version, or to inspect the dependencies of the current project if no package ID is provided.<br><br>The command offers a wide array of data points including the crate's description, homepage, repository, documentation links, license, keywords, categories, authors, download statistics, and even security audit information (with an additional tool). Its flexibility extends to output formats, supporting both human-readable text (default) and machine-readable JSON, making it an invaluable tool for both interactive exploration and scripting automated dependency analysis. It provides essential insights into the ecosystem for any Rust developer.


title: CAVEATS
content:
<ul><li><i>cargo-info</i> is <b>not a standard Linux utility</b>; it's a <i>cargo</i> subcommand specific to the Rust ecosystem.</li><li>It <b>must be installed separately</b> via `cargo install cargo-info`.</li><li>The `--audit` option requires the `cargo-audit` tool to be installed for full functionality.</li><li>Most information retrieval depends on <b>network access to <i>crates.io</i></b> unless `--offline` is used with pre-cached data.</li></ul>


title: INSTALLATION
content:
Unlike core <i>cargo</i> commands, <i>cargo-info</i> is a <b>third-party subcommand</b> and is <b>not bundled by default</b> with the Rust toolchain. Users must explicitly install it using the <i>cargo</i>'s `install` command: <br><code>cargo install cargo-info</code><br>This makes it available as `cargo info`.


title: NETWORK DEPENDENCY
content:
A significant portion of <i>cargo-info</i>'s functionality relies on <b>fetching data directly from <i>crates.io</i></b>, the official Rust package registry. This means that an active internet connection is generally required for the command to operate correctly and retrieve the latest package information. The `--offline` flag can be used to prevent network access, but it will only provide information that has been previously cached locally by <i>cargo</i>.


title: HISTORY
content:
<i>cargo-info</i> emerged as a <b>community-driven solution</b> to address a gap in <i>cargo</i>'s core functionality, which lacked a dedicated command for easily retrieving detailed metadata about crates from <i>crates.io</i>. It was developed to provide Rust developers with quick, on-demand access to critical package information directly from their terminal. Over time, it has evolved, adding more granular options for displaying specific data points and supporting different output formats, adapting to the growing needs of the Rust community for better dependency introspection and management.


title: TLDR
content:
<b>Display information about a package on <https://crates.io></b>`cargo info [package]`<br><b>Display information about a specific version of a package</b>`cargo info [package]@[version]`<br><b>Display additional information about a package</b>`cargo info [[-v|--verbose]] [package]`


title: DESCRIPTION
content:
<I>brew-leaves</I> is a utility command provided by <b>Homebrew</b>, the popular package manager for macOS and Linux. Its primary function is to identify and list all installed packages that are 'leaf' packages. A <b>leaf package</b> is one that has been installed but is not a dependency of any other currently installed package. In simpler terms, these are the top-level applications or libraries that you explicitly chose to install, rather than being pulled in automatically by other installations.<br><br>This command is particularly useful for auditing your Homebrew installations, identifying software that might no longer be needed, or understanding the core components of your development environment. It helps in distinguishing between user-installed software and its intricate dependency tree. <I>brew-leaves</I> does not accept any command-specific options or arguments, making its usage straightforward and focused.


title: CAVEATS
content:
This command requires <b>Homebrew</b> to be installed and configured on your system (macOS or Linux). It is not a standard POSIX or GNU/Linux utility and will not be available without Homebrew. Its output is entirely dependent on your current Homebrew package installations and their dependency relationships.


title: UNDERSTANDING LEAF PACKAGES
content:
In the context of package management, a <I>leaf package</I> is a package that is not listed as a dependency for any other currently installed package. This means it was either explicitly installed by the user, or it's a root dependency of some other package that has since been uninstalled. Identifying leaf packages is crucial for system maintenance, as they represent the software the user directly interacts with or intended to install, rather than infrastructure components pulled in by other applications.


title: PRIMARY USE CASES
content:
<I>brew leaves</I> is invaluable for:<br><ul><li><b>Auditing</b> your installed software to see what you've directly installed.</li><li><b>Identifying</b> packages that might be candidates for uninstallation if no longer needed, helping to declutter your system.</li><li><b>Understanding</b> the core components of your development environment by showing the explicitly chosen tools and libraries.</li></ul>


title: HISTORY
content:
<I>brew leaves</I> has been a fundamental part of the Homebrew ecosystem since its early days, providing users with a clear and concise view of their top-level installations. Its design reflects Homebrew's philosophy of simplicity and clarity in package management, enabling users to easily distinguish between explicitly installed software and its underlying dependencies. It serves as a vital tool for maintaining a lean and understandable package environment.


title: TLDR
content:
<b>List installed formulas that are not dependent on other installed formulas or casks</b>`brew leaves`<br><b>Only list leaves that were manually installed</b>`brew leaves [[-r|--installed-on-request]]`<br><b>Only list leaves that were installed as dependencies</b>`brew leaves [[-p|--installed-as-dependency]]`<br><b>Display help</b>`brew leaves [[-h|--help]]`


title: PARAMETERS
content:
<b>[<I>formula</I>|<I>cask</I> ...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify one or more names of formulae or casks for which to display information. If no arguments are given, it may show information about Homebrew itself or a general summary depending on the version.<br><br><b><b><I>--json</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the output in JSON format. This is highly useful for scripting and programmatic access to package data.<br><br><b><b><I>--installed</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information for installed formulae and casks only. This filters the output to only show details for packages currently present on your system.<br><br><b><b><I>--cask</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat all named arguments as casks. This explicitly tells Homebrew to look for graphical applications rather than command-line tools.<br><br><b><b><I>--formula</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat all named arguments as formulae. This explicitly tells Homebrew to look for command-line tools or libraries.<br><br><b><b><I>--eval-all</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Evaluate all available formulae and casks, even if they are not installed or tapped. This can be time-consuming but ensures comprehensive information retrieval.<br><br><b><b><I>--verbose</I></b>, <b><I>-v</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show more verbose output. This often includes additional paths, symlinks, and other detailed diagnostic information.<br><br><b><b><I>--github</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Open the GitHub repository page for the specified formula or cask in your default web browser.<br><br>


title: DESCRIPTION
content:
The <b><I>brew info</I></b> command is a fundamental utility within the Homebrew package manager, designed to provide comprehensive details about specific <i>formulae</i> (command-line tools and libraries) or <i>casks</i> (graphical applications) installed or available for installation. It serves as a powerful diagnostic and informational tool for users managing software on macOS and Linux (via Linuxbrew).<br><br>When invoked with one or more package names, <b><I>brew info</I></b> displays a wealth of data including the installed version, available versions, installation path, declared dependencies, required build options, homepage URL, license information, and source repository links. It can also indicate whether a package is currently installed, outdated, or has linked files in the system's PATH. This command is invaluable for understanding the landscape of your installed software, debugging issues related to package versions or dependencies, and quickly accessing upstream project information without leaving the terminal. The output can be formatted for human readability or, crucially, as machine-parsable JSON for scripting purposes.


title: CAVEATS
content:
The <b><I>brew info</I></b> command is part of the Homebrew package manager, which primarily targets macOS but is also available on Linux via Linuxbrew. It will not function as a standalone Linux command unless Homebrew is installed and configured on your system.<br><br>The exact output and available options can vary slightly between Homebrew versions.


title: USAGE WITH SCRIPTING
content:
The <b><I>--json</I></b> option is particularly useful for scripting and programmatic access to package information. It outputs a structured JSON object containing all details, allowing easy parsing and integration with other tools for automated system management or reporting.


title: FORMULAE VS. CASKS
content:
Homebrew distinguishes between <i>formulae</i> (source-based packages like command-line utilities, libraries, and frameworks) and <i>casks</i> (binary packages for graphical macOS applications). <b><I>brew info</I></b> can display information for both, often requiring explicit flags like <b><I>--cask</I></b> or <b><I>--formula</I></b> when there's ambiguity or to filter results.


title: HISTORY
content:
The <b><I>brew info</I></b> command has been a core component of Homebrew since its early days, shortly after the project's inception by Max Howell in 2009. As Homebrew evolved to manage not only command-line tools (<i>formulae</i>) but also graphical applications (<i>casks</i>), <b><I>brew info</I></b> adapted to provide comprehensive details for both package types. The addition of the <b><I>--json</I></b> output option significantly enhanced its utility for scripting and automation, reflecting Homebrew's continuous development focus on flexibility and user experience.


title: TLDR
content:
<b>Display statistics for Homebrew installation</b>`brew info`<br><b>Display more information about a formula or cask</b>`brew info [formula|cask]`<br><b>Display verbose information about a formula or cask</b>`brew info [[-v|--verbose]] [formula|cask]`<br><b>Display information about a formula or cask in JSON format</b>`brew info --json [formula|cask]`<br><b>Print JSON of currently installed formulae</b>`brew info --json --installed`<br><b>Display help</b>`brew info [[-h|--help]]`


title: TLDR
content:
<b>Install the default (latest) ESP-IDF version in the default location (C:\esp on Windows and ~/.espressif on POSIX systems)</b>`eim install`<br><b>Install a specific ESP-IDF version</b>`eim install [[-i|--idf-versions]] [v5.3.2]`<br><b>Run the interactive, guided installation wizard</b>`eim wizard`<br><b>Install a specific version to a custom path, forcing interactive mode (to prompt for choices)</b>`eim install [[-i|--idf-versions]] [v5.3.2] [[-p|--path]] [/opt/esp-idf] [[-n|--non-interactive]] false`<br><b>List all currently installed ESP-IDF versions</b>`eim list`<br><b>Remove a specific installed ESP-IDF version</b>`eim remove [v5.3.2]`<br><b>Install in headless mode using all options defined in a TOML configuration file</b>`eim install [[-c|--config]] [path/to/config.toml]`<br><b>Install offline using a pre-downloaded archive file</b>`eim install --use-local-archive [path/to/archive.zst]`


title: PARAMETERS
content:
<b><b>-o</b>, <b>--output</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name. If not provided, output is written to standard output.<br><br><b><b>-f</b>, <b>--format</b>=<i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Graphviz layout engine to be used (e.g., <i>dot</i>, <i>neato</i>, <i>twopi</i>, <i>circo</i>, <i>fdp</i>, <i>sfdp</i>). This adds a <i>layout</i> attribute to the generated graph.<br><br><b><b>-a</b>, <b>--attributes</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Append global graph attributes from the specified <i>FILE</i> to the generated <i>.gv</i> file.<br><br><b><b>-e</b>, <b>--expressions</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add extra edge and node expressions from the specified <i>FILE</i> to the generated <i>.gv</i> file.<br><br><b><b>-I</b>, <b>--include-dir</b>=<i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>DIR</i> to the list of directories <b>gvgen</b> searches for included Makefiles.<br><br><b><b>-m</b>, <b>--make-option</b>=<i>OPTION</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass <i>OPTION</i> directly to <b>make</b> when <b>gvgen</b> invokes <b>make</b> to parse dependencies (e.g., <b>make -p</b>).<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information of <b>gvgen</b> and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<b>gvgen</b> is a utility distributed as part of GNU Autotools, primarily used within <b>automake</b> projects. Its main purpose is to generate Graphviz <i>.gv</i> (DOT language) files, which represent the dependencies and relationships implicitly defined within one or more input Makefiles.<br><br>By parsing Makefiles, <b>gvgen</b> can visualize the build structure, targets, and file dependencies, making it easier to understand complex build systems. The generated <i>.gv</i> file can then be processed by Graphviz tools (like <b>dot</b>) to produce various graphical output formats (e.g., PNG, SVG, PDF). This tool is particularly useful for developers and maintainers of large projects who need a visual representation of their build dependencies.


title: CAVEATS
content:
<b>gvgen</b> is primarily designed for parsing GNU Makefiles and might not correctly interpret Makefiles written for other <b>make</b> implementations or highly customized build scripts. Its dependency analysis is based on <b>make</b>'s internal representation, which might not always capture all implicit or dynamic dependencies. It's often used in conjunction with <b>automake</b> and <b>Graphviz</b> tools, meaning it generates intermediate data (<i>.gv</i> files) rather than final images.


title: USAGE CONTEXT
content:
<b>gvgen</b> is typically invoked as a build tool or for documentation purposes within a <i>Makefile</i> or <i>configure.ac</i> script. For instance, a <i>Makefile</i> rule might generate a dependency graph like:<br><b>all.gv:</b><br>    <b>gvgen -o $@ $(MAKEFILES)</b><br>This <i>all.gv</i> file could then be rendered into an image using Graphviz's <b>dot</b> command, e.g., <b>dot -Tpng all.gv -o all.png</b>.


title: GRAPHVIZ INTEGRATION
content:
While <b>gvgen</b> outputs a <i>.gv</i> file, it relies on the separate <i>Graphviz</i> package (which provides tools like <b>dot</b>, <b>neato</b>, etc.) to convert this text-based graph description into a visual image. Users must have <i>Graphviz</i> installed and accessible in their PATH to render the output of <b>gvgen</b> into graphical formats.


title: HISTORY
content:
<b>gvgen</b> was developed as part of the GNU Automake project, which aims to simplify the creation of portable Makefiles. Its introduction provided a way for developers to visualize the often complex dependency graphs generated by <b>automake</b> and <b>make</b>, improving understanding and debugging of build processes. It has been a standard component of the <b>automake</b> distribution for many years, evolving alongside the main project.


title: TLDR
content:
<b>Generate a [c]ycle with 10 vertices and edges and write it to stdout</b>`gvgen -c [10]`<br><b>Generate a 4×3 [g]rid</b>`gvgen -g [4,3]`<br><b>Generate a binary [t]ree of height 5</b>`gvgen -t [5]`<br><b>Generate a complete [b]ipartite graph with 3 and 4 vertices</b>`gvgen -b [3,4]`<br><b>Create a [r]andom graph and [o]utput it to a file</b>`gvgen -r [10,5] -o [random.gv]`<br><b>Generate a [d]irected graph with [v]erbose output</b>`gvgen -d -v -c [6]`<br><b>Display help</b>`gvgen -?`


title: TLDR
content:
<b>List all rulesets for the current repository</b>`gh [[rs|ruleset]] [[ls|list]]`<br><b>List all rulesets for a specific organization</b>`gh [[rs|ruleset]] [[ls|list]] [[-o|--org]] [organization_name]`<br><b>Check the rules that apply to the current branch</b>`gh [[rs|ruleset]] check`<br><b>Check the rules that apply to a specific branch in another repository</b>`gh [[rs|ruleset]] check [branch_name] [[-R|--repo]] [owner]/[repo]`<br><b>Interactively select and view a ruleset for the current repository</b>`gh [[rs|ruleset]] view`<br><b>View a specific ruleset by its ID</b>`gh [[rs|ruleset]] view [ruleset_id]`<br><b>View an organization-level ruleset by its ID</b>`gh [[rs|ruleset]] view [ruleset_id] [[-o|--org]] [organization_name]`<br><b>Open the list of rulesets for a specific repository in the browser</b>`gh [[rs|ruleset]] [[ls|list]] [[-R|--repo]] [owner]/[repo] [[-w|--web]]`


title: SYNOPSIS
content:
As <b>gh-at</b> is <i>not a standard command</i>, a precise synopsis does not exist. Conceptually, if such a command were implemented as a wrapper, its usage would likely involve: <br><i><b>gh-at</b> <time-specification> [at_options] -- <gh_command> [gh_options] [gh_arguments]</i><br>This structure implies providing a time for execution, optional `at` command flags (e.g., for mailing output), a separator (`--`), and then the complete `gh` command (e.g., `gh pr merge --auto`).


title: PARAMETERS
content:
<b><i><time-specification></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Required. Defines when the `gh` command should be executed. Examples: `now + 1 hour`, `tomorrow`, `10:00 AM July 24`.<br><br><b><i>-q queue</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies the queue to use for the job. Lowercase letters are processed by `at`, uppercase by `batch` (usually default `a`).<br><br><b><i>-m</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Send mail to the user after the `gh` command has been executed, even if there is no output.<br><br><b><i>--</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Required. A standard convention used to separate options from arguments, indicating that subsequent arguments are not options for `gh-at` itself, but rather the command and arguments to be passed to the underlying `gh` utility.<br><br><b><i><gh_command></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Required. The specific GitHub CLI command to be executed, e.g., `pr merge`, `issue close`.<br><br><b><i><gh_options></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Any options specific to the `gh` command being run, e.g., `--auto` for `gh pr merge`.<br><br><b><i><gh_arguments></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Any arguments specific to the `gh` command being run, e.g., a pull request number.<br><br>


title: DESCRIPTION
content:
The <b>gh-at</b> command is <i>not a standard, recognized standalone Linux command</i>. It appears to be a hypothetical combination of two distinct utilities often used together conceptually:<br><br>1.  <b>gh</b>: The official GitHub command-line interface, which allows users to interact with GitHub repositories, pull requests, issues, and more directly from the terminal.<br>2.  <b>at</b>: A standard Unix/Linux command used to schedule commands to be executed once at a particular time in the future. <br><br>If <b>gh-at</b> were to exist, it would conceptually enable the scheduling of GitHub CLI operations. For instance, one might want to schedule a `gh pr merge` command to run at a specific time, or automatically fetch repository updates with `gh repo sync`. Such functionality is typically achieved by writing a shell script that incorporates <b>gh</b> commands and then scheduling that script using the <b>at</b> command.


title: CAVEATS
content:
The most significant caveat is that <b>gh-at</b> is <i>not a real, standard Linux command</i>. Attempting to execute `gh-at` directly will result in a 'command not found' error unless a custom script with this name has been created and placed in the system's PATH. Users should instead construct their desired GitHub CLI operations and schedule them explicitly using the <b>at</b> command or <b>cron</b> for recurring tasks.


title: IMPLEMENTING 'GH-AT' FUNCTIONALITY
content:
Users can achieve the conceptual functionality of 'gh-at' by combining <b>at</b> with <b>gh</b> inside a shell script or directly via the `at` command. <br><br><i><b>Example: Merging a PR in 30 minutes</b></i><br><code>echo 'gh pr merge 123 --auto --delete-branch' | at now + 30 minutes</code><br><br><i><b>Example: Closing an issue tomorrow at 9 AM with a script</b></i><br><code>#!/bin/bash<br>gh issue close 456 --reason 'not planned' -c 'Closing due to project reprioritization.'<br></code><br>Save this as `close_issue.sh` and make it executable (`chmod +x close_issue.sh`). Then schedule:<br><code>echo '~/close_issue.sh' | at 09:00 tomorrow</code><br><br>Ensure that the environment where the `at` job runs (especially PATH and authentication tokens for `gh`) is correctly set up for the commands to execute successfully.


title: HISTORY
content:
There is <i>no specific history for a command named <b>gh-at</b></i> as it does not exist as a standalone utility. However, the components have their own histories: <br><br><b>gh</b>: The GitHub CLI was officially released in September 2020, providing a modern interface for GitHub from the terminal, building upon previous community efforts and internal GitHub tools. <br><br><b>at</b>: The `at` command has been a staple of Unix-like operating systems for decades, providing a simple mechanism for one-time job scheduling. Its origins can be traced back to early Unix versions.


title: PARAMETERS
content:
<b><b>check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs an accessibility audit on the specified target.<br><br><b><b>[<i>path_to_file_or_URL</i>]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The local file path (e.g., <i>./README.md</i>) or a web URL (e.g., <i>https://example.com</i>) to audit. This argument can often be omitted if <b>--repo</b> or <b>--url</b> flags are used.<br><br><b><b>-R, --repo <owner/repo></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the GitHub repository to audit (e.g., <i>octocat/Spoon-Knife</i>). When used, the command will look for relevant files within this repository context.<br><br><b><b>--url <url></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly specifies a URL to audit. This flag is useful when the URL is distinct from the current repository context.<br><br><b><b>--audit-only-html</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the audit to only HTML files or URLs, ignoring Markdown files even if present.<br><br><b><b>--audit-only-readme</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Focuses the audit solely on the repository's README file. Requires the <b>--repo</b> flag to be set.<br><br><b><b>-p, --path-to-file <path></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular file path within the context of the repository defined by <b>--repo</b> (e.g., <i>docs/index.md</i>).<br><br><b><b>-o, --output <path></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the audit results to the specified file path instead of printing to standard output.<br><br><b><b>--ci</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs results in a machine-readable JSON format, optimized for use in Continuous Integration (CI) environments.<br><br><b><b>--config <file></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom configuration file for the accessibility audit, allowing for tailored rules and settings.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information during the audit process.<br><br><b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <b>gh accessibility check</b> command.<br><br>


title: DESCRIPTION
content:
The <b>gh-accessibility</b> command is a powerful <br><i>GitHub CLI extension</i> designed to help developers and teams ensure their projects on GitHub are accessible to everyone. It integrates directly with the <b>gh</b> command-line tool, allowing users to audit local files (like READMEs) or remote web pages and repositories for common accessibility issues. <br><br>This extension primarily focuses on identifying potential barriers for users with disabilities, checking for issues in HTML and Markdown content, including those often found in repository documentation (e.g., insufficient contrast, missing alt text, incorrect heading structure). By bringing accessibility checks into the CLI workflow, <b>gh-accessibility</b> promotes early detection and remediation of issues, making it easier to build and maintain inclusive GitHub projects.


title: CAVEATS
content:
<ul><li><b>Dependency:</b> Requires the <br><i>GitHub CLI</i> (<b>gh</b> command) to be installed and authenticated.</li><li><b>Installation:</b> As an extension, it must be installed via <b>gh extension install gh-accessibility/gh-accessibility</b> before use.</li><li><b>Internet Connection:</b> Auditing remote URLs or repositories requires an active internet connection.</li><li><b>Scope:</b> While comprehensive for common issues, it may not cover every single accessibility standard or highly complex interactive web components.</li><li><b>Local File Support:</b> Directly supports HTML and Markdown files for local auditing.</li></ul>


title: <B>INSTALLATION</B>
content:
To install the <b>gh-accessibility</b> extension, use the following command:<br><br><b>gh extension install gh-accessibility/gh-accessibility</b><br><br>You can update it later with: <br><b>gh extension update gh-accessibility/gh-accessibility</b>


title: <B>BASIC USAGE EXAMPLES</B>
content:
<ul><li><b>Audit a local README file:</b><br><b>gh accessibility check ./README.md</b></li><li><b>Audit a specific web page:</b><br><b>gh accessibility check https://www.github.com</b></li><li><b>Audit the README of a specific GitHub repository:</b><br><b>gh accessibility check -R octocat/Spoon-Knife --audit-only-readme</b></li><li><b>Output results to a file for a local HTML document:</b><br><b>gh accessibility check my_project/index.html -o a11y_report.txt</b></li><li><b>Run a CI-friendly audit for a URL:</b><br><b>gh accessibility check https://example.com --ci</b></li></ul>


title: HISTORY
content:
The <b>gh-accessibility</b> extension was developed as an open-source project to extend the capabilities of the GitHub CLI. It emerged from the need to integrate accessibility auditing directly into developers' everyday workflows on GitHub. By leveraging existing accessibility tools and integrating them into the <b>gh</b> ecosystem, it aims to make accessibility considerations more prevalent and easier to manage for repository owners and contributors.


title: PARAMETERS
content:
<b><b>-i</b>, <b>--outdated</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages that have newer versions available on PyPI.<br><br><b><b>-u</b>, <b>--uptodate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages that are up-to-date with the latest versions on PyPI.<br><br><b><b>-e</b>, <b>--editable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages that are installed in editable (development) mode.<br><br><b><b>-l</b>, <b>--local</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If within a virtual environment, this option restricts the list to locally-installed packages, excluding globally-installed ones.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only packages installed in the user site directory, rather than system-wide or environment-specific installations.<br><br><b><b>--path</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts the package listing to a specified installation path. This is useful for inspecting non-standard installation locations.<br><br><b><b>--pre</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes pre-release and development versions of packages in the output. By default, <b>pip</b> only finds stable versions.<br><br><b><b>--format</b> <I>format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Permitted values include <i>columns</i> (default), <i>freeze</i> (suitable for requirements files), or <i>json</i> (for machine-readable output).<br><br><b><b>--not-required</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages that are not dependencies of any other installed packages.<br><br><b><b>--exclude-editable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes packages installed in editable mode from the output.<br><br><b><b>--include-editable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly includes editable projects in the output (this is often the default behavior).<br><br><b><b>-o</b>, <b>--output-file</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects the command's output to the specified file instead of standard output.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses non-error messages, resulting in less verbose output.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides more detailed output, showing additional information about the operation.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the <b>pip list</b> command and exits.<br><br>


title: DESCRIPTION
content:
The <b>pip list</b> command is a fundamental utility within the Python package installer (pip) ecosystem. It serves to display a comprehensive inventory of all Python packages currently installed in the active environment, alongside their respective version numbers. This command is indispensable for Python developers and system administrators alike, offering a quick and clear overview of the project's dependencies. It helps in verifying successful package installations, identifying outdated components that might require updates, and understanding the precise set of libraries available for a given Python application. By providing crucial visibility into the installed software, <b>pip list</b> plays a key role in maintaining a consistent, healthy, and manageable Python development or deployment environment.


title: CAVEATS
content:
<ul><li><b>Environment Context</b>: The output of <b>pip list</b> is highly dependent on the active Python environment (e.g., global installation, virtual environment, Conda environment). Packages installed in one environment will not automatically appear when a different environment is active.<br></li><li><b>Package Management</b>: While <b>pip list</b> shows installed packages, it doesn't manage them directly. For installation, uninstallation, or upgrades, other <b>pip</b> commands like <b>pip install</b>, <b>pip uninstall</b>, or <b>pip install --upgrade</b> are used.<br></li><li><b>Editable Installs</b>: Packages installed in "editable" mode (e.g., <b>pip install -e .</b>) are typically listed, but their source location is indicated rather than a standard version number. Options like <b>--editable</b> or <b>--exclude-editable</b> can filter these.<br></li><li><b>Output Parsing</b>: When programmatically parsing <b>pip list</b> output, especially with the default <i>columns</i> format, it's safer to use the <b>--format json</b> or <b>--format freeze</b> options for stable and easily parseable data.</li></ul>


title: INTERPRETING OUTPUT
content:
By default, <b>pip list</b> displays package names and versions. If a package is outdated, <b>pip list --outdated</b> will show its current version and the latest available version, helping users identify potential upgrades. Editable installs (indicated by <b>-e</b> or their path) show their local source path instead of a version number, signifying they are installed directly from a local repository for development.<br>


title: VIRTUAL ENVIRONMENTS
content:
It's highly recommended to use <b>pip list</b> within a Python virtual environment. This practice ensures you're inspecting packages relevant to a specific project, thereby avoiding conflicts or confusion with globally installed packages that might not be used by your current application.<br>


title: COMMON USE CASES
content:
<ul><li><b>pip list</b>: Get a quick overview of all packages installed in the current environment.<br></li><li><b>pip list --outdated</b>: Easily check which packages have newer versions available for upgrade.<br></li><li><b>pip list --format freeze > requirements.txt</b>: Although <b>pip freeze</b> is more commonly used for this, <b>pip list</b> with <b>--format freeze</b> can generate a <b>requirements.txt</b> file for reproducing environments.<br></li><li><b>pip list --format json</b>: Obtain machine-readable output, ideal for scripting and automated environment checks.</li></ul>


title: HISTORY
content:
The <b>pip</b> project, initially a fork of <b>setuptools</b>' <b>easy_install</b>, was created around 2008 by Ian Bicking. Its <b>list</b> command has been a core feature from early versions, providing a simple and consistent way to inventory installed Python packages. Over time, new options like <b>--outdated</b>, <b>--format json</b>, and environment-specific filters have been added to enhance its utility for various development and deployment workflows, reflecting the growing complexity of Python dependency management.


title: TLDR
content:
<b>List installed packages</b>`pip list`<br><b>List outdated packages that can be upgraded</b>`pip list [[-o|--outdated]]`<br><b>List up-to-date packages</b>`pip list [[-u|--uptodate]]`<br><b>List packages with JSON formatting</b>`pip list --format json`<br><b>List packages that are not required by other packages</b>`pip list --not-required`<br><b>List packages installed in user-site only</b>`pip list --user`<br><b>List packages and exclude editable packages from output</b>`pip list --exclude-editable`<br><b>List packages in freeze format (unlike pip freeze, does not show editable install information)</b>`pip list --format freeze`


title: SYNOPSIS
content:
<b>clang-check</b> [<i>options</i>] <i>&lt;source0&gt;</i> [<i>&lt;source1&gt;</i>...] [-- <i>&lt;compiler arguments&gt;</i>]<br><br><i>Description:</i><br>Analyzes one or more source files using <i>Clang's</i> static analysis engine. The double dash (<b>--</b>) separates <b>clang-check</b> options from arguments passed directly to the compiler frontend for parsing the source files. When analyzing a project, it's often used with the <b>-p</b> option to specify the build directory containing <i>compile_commands.json</i>.


title: PARAMETERS
content:
<b><b>-p</b> <i>&lt;build-path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the directory containing the <i>compile_commands.json</i> file. This is crucial for project-wide analysis.<br><br><b><b>--extra-arg</b> <i>&lt;arg&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes an additional argument to the compiler command line, appended after existing arguments.<br><br><b><b>--extra-arg-before</b> <i>&lt;arg&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes an additional argument to the compiler command line, prepended before existing arguments.<br><br><b><b>--checks=</b><i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of checks to enable or disable. Wildcards like <b>*</b> can be used (e.g., <i>'*, -google-readability-*'</i>).<br><br><b><b>--enable-checker=</b><i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a specific checker by name. Can be used multiple times.<br><br><b><b>--disable-checker=</b><i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables a specific checker by name. Can be used multiple times.<br><br><b><b>--fix-what-you-can</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies suggested fixes for detected issues if available. This can modify source files.<br><br><b><b>--fix-errors</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies fixes specifically for detected errors. This can modify source files.<br><br><b><b>--ast-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the Abstract Syntax Tree (AST) for the parsed source file, useful for debugging checkers.<br><br><b><b>--analyze-headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Also analyzes header files included by the source file, not just the source file itself.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows commands as they are executed, providing verbose output which is helpful for debugging.<br><br>


title: DESCRIPTION
content:
<b>clang-check</b> is a powerful command-line utility from the <i>LLVM Clang</i> project, designed for static code analysis of <i>C</i>, <i>C++</i>, and <i>Objective-C</i> source code.<br>It leverages the <i>Clang</i> compiler's Abstract Syntax Tree (AST) to identify potential bugs, enforce coding standards, and improve code quality without actually compiling the code.<br>By utilizing the compilation database (<i>compile_commands.json</i>), <b>clang-check</b> can precisely understand project-specific build settings and include paths, providing accurate and context-aware diagnostics.<br>It's commonly used by developers for continuous integration, pre-commit hooks, and general code hygiene, helping to catch issues early in the development cycle.


title: CAVEATS
content:
While powerful, <b>clang-check</b> has a few considerations:<br><i>1. Compile Commands Database:</i> It heavily relies on a correct and up-to-date <i>compile_commands.json</i> file for accurate analysis of complex projects. Without it, analysis might be incomplete or incorrect.<br><i>2. Resource Usage:</i> For very large codebases, running extensive checks can be memory and CPU intensive.<br><i>3. False Positives/Negatives:</i> Like all static analysis tools, it can occasionally produce false positives (reporting an issue where none exists) or false negatives (missing a real issue).<br><i>4. Configuration Complexity:</i> Configuring specific checks and options for optimal results can sometimes be complex.


title: COMPILE COMMANDS DATABASE (<I>COMPILE_COMMANDS.JSON</I>)
content:
This file is crucial for <b>clang-check</b>, providing the compiler invocation commands for each source file in a project. Tools like <i>CMake</i>, <i>Meson</i>, or <i>Bear</i> can generate it. It ensures <b>clang-check</b> uses the correct flags, include paths, and definitions, mimicking the actual build process.


title: INTEGRATION WITH IDES AND CI/CD
content:
<b>clang-check</b>'s capabilities are often integrated into development environments through <i>Language Server Protocol</i> implementations like <i>clangd</i>, providing real-time diagnostics. It's also a common component in continuous integration (CI) and continuous delivery (CD) pipelines to automatically enforce code quality standards before code merges.


title: HISTORY
content:
<b>clang-check</b> emerged as part of the broader <i>LLVM Clang</i> project, initiated by <i>Apple</i> to provide a modern, modular, and high-performance compiler for <i>C</i>, <i>C++</i>, and <i>Objective-C</i>.<br>Its development closely tracks the evolution of the <i>Clang</i> frontend, leveraging its robust parsing and AST generation capabilities for static analysis.<br>Over time, it has grown from a basic syntax checker to a sophisticated static analyzer, integrating a vast array of diagnostic checks and code transformation capabilities (like suggested fixes). Its modular design allows for the continuous addition of new checks by the open-source community, making it a cornerstone tool for code quality in modern <i>C++</i> development.


title: SEE ALSO
content:
<b>clang(1)</b>, <b>scan-build(1)</b>, <b>clang-format(1)</b>, <b>clangd(1)</b>, <b>cmake(1)</b>, <b>bear(1)</b>


title: TLDR
content:
<b>Run default checks on a source file</b>`clang-check [path/to/file.cpp] --`<br><b>Dump the Abstract Syntax Tree for debugging</b>`clang-check [path/to/file.cpp] -ast-dump --`<br><b>Filter AST by Name</b>`clang-check [path/to/file.cpp] -ast-dump -ast-dump-filter FunctionName`<br><b>Pretty-Print AST</b>`clang-check [path/to/file.cpp] -ast-print --`


title: PARAMETERS
content:
<b><i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the markdown file to be previewed.<br><br><b><b>-p</b>, <b>--port</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the port for the local web server. Defaults to <i>8080</i>.<br><br><b><b>-w</b>, <b>--watch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables watching the file for changes and automatically re-rendering the preview in the terminal.<br><br><b><b>-b</b>, <b>--browser</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the raw HTML rendering in a web browser. If no port is specified, an ephemeral port is used.<br><br><b><b>--theme</b> <i>&lt;theme&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a specific GitHub theme to the rendering (e.g., <i>light</i>, <i>dark</i>, <i>dark_dimmed</i>, <i>light_colorblind</i>).<br><br><b><b>--jq</b> <i>&lt;query&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a <i>jq</i> query to the JSON output generated from the rendered HTML.<br><br><b><b>--template</b> <i>&lt;template&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A Go template string used to format the JSON output. Implies <i>--jq</i>.<br><br><b><b>--web</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renders the markdown file directly in a web browser instead of the terminal.<br><br>


title: DESCRIPTION
content:
<b>gh-preview</b> is an official GitHub CLI extension designed to render local markdown files (e.g., <i>README.md</i>, pull request templates) exactly as they would appear on <b>github.com</b>, directly within your terminal.<br><br>It achieves this by utilizing GitHub's internal markdown rendering pipeline. The extension operates by launching a local web server, rendering the markdown in a headless browser, and then converting the generated HTML back into a terminal-friendly text format. This ensures an accurate representation, including proper styling for code blocks, tables, and images, mirroring the GitHub web interface. It's an invaluable tool for authors who want to ensure their markdown content looks perfect before pushing changes.


title: CAVEATS
content:
<ul><li>Requires an internet connection to access GitHub's rendering services.</li><li>The terminal rendering is a best-effort conversion from HTML; very complex markdown/HTML structures might not render perfectly in all terminals.</li><li>Relies on <b>gh</b> (GitHub CLI) being installed and authenticated.</li></ul>


title: INSTALLATION
content:
To use <b>gh-preview</b>, it must first be installed as a <b>gh</b> extension using the command: <br><i>gh extension install cli/gh-preview</i>


title: OFFLINE MODE
content:
<b>gh-preview</b> does not currently support offline rendering as it relies on GitHub's live web rendering pipeline for accurate previews.


title: HISTORY
content:
<b>gh-preview</b> was developed as an official extension for the GitHub CLI (<b>gh</b>). It addresses a common need for developers to accurately preview how their markdown content will look on <b>github.com</b>, especially for <i>README.md</i> files, issue templates, and pull request descriptions.<br><br>Its development reflects GitHub's commitment to providing robust command-line tools that integrate seamlessly with its platform, enhancing developer workflows by bringing web-specific functionality directly to the terminal.


title: SYNOPSIS
content:
<b>mvn</b> [<i>options</i>] <b>site</b>[:<i>goal</i>]<br><b>mvn</b> [<i>options</i>] <b>site:stage</b><br><b>mvn</b> [<i>options</i>] <b>site:deploy</b>


title: PARAMETERS
content:
<b>site</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The primary Maven goal to generate the project website in the <i>target/site</i> directory. This generates all reports and custom content as configured.<br><br><b>site:stage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the project site into a local staging directory (<i>target/staging</i> by default), typically used for reviewing the site's content and structure before its actual deployment.<br><br><b>site:deploy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the project site and then deploys it to the remote server configured in the project's <i>&lt;distributionManagement&gt;</i> section of the <i>pom.xml</i> file. This requires proper server credentials in <i>settings.xml</i>.<br><br><b>-D&lt;property&gt;=&lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a system property that can influence the site generation or deployment. Common uses include <i>-Dsite.url=http://example.com/</i> to override the site URL for deployment, or <i>-Dmaven.site.skip=true</i> to skip site generation during a build lifecycle phase.<br><br><b>-P &lt;profile_id&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates a specific Maven build profile defined in <i>pom.xml</i> or <i>settings.xml</i>. Profiles are often used to define different site configurations, such as alternative deployment targets, custom report sets, or specific environments.<br><br><b>-s &lt;file&gt;, --settings &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate path to the user's <i>settings.xml</i> file. This file is crucial for storing server credentials (passwords, private keys) used by the <i>site:deploy</i> goal for authentication with the remote deployment server.<br><br><b>-B, --batch-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs Maven in non-interactive (batch) mode. This is highly recommended for automated builds in Continuous Integration/Continuous Delivery (CI/CD) pipelines to prevent the build process from halting due to prompts for user input.<br><br><b>-U, --update-snapshots</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a check for updated releases and snapshots on remote repositories. This ensures that the latest versions of site plugins and project dependencies are used during the site generation process, which can be critical for security fixes or new features.<br><br>


title: DESCRIPTION
content:
The <i>mvn site</i> command (invoking the Maven Site Plugin) is used to generate a comprehensive project website, including documentation, reports, and general project information. This command compiles information from various Maven plugins (e.g., Javadoc, Surefire for test reports, Project Info) and custom content from the <i>src/site</i> directory. The generated site provides a centralized, browsable view of a project's status and details, which is invaluable for project stakeholders and developers alike. It relies heavily on the project's <i>pom.xml</i> configuration for specifying site-specific settings, reports, and deployment targets. The process typically involves generating the site locally for review (<i>mvn site</i> or <i>mvn site:stage</i>) and then deploying it to a remote server (<i>mvn site:deploy</i>) via configured protocols. This command is fundamental for maintaining up-to-date project documentation and transparent project status.


title: CAVEATS
content:
Site generation can be resource-intensive and time-consuming, especially for large projects with numerous reports or complex configurations. Successful deployment via <i>mvn site:deploy</i> is contingent on correctly configured <i>&lt;distributionManagement&gt;</i> in <i>pom.xml</i> and appropriate server credentials in <i>settings.xml</i>. Care must be taken to avoid publishing sensitive project or build information on publicly accessible sites. Regular review of generated content and security updates for Maven plugins are advised.


title: SITE DESCRIPTOR (<I>SITE.XML</I>)
content:
Located in <i>src/site/site.xml</i>, this XML file is used to customize the generated site's menu, navigation structure, look-and-feel (e.g., by linking custom CSS), and the content hierarchy. It allows projects to tailor the site to their specific needs beyond the default Maven structure.


title: DISTRIBUTION MANAGEMENT CONFIGURATION
content:
The <i>&lt;distributionManagement&gt;</i> section within a project's <i>pom.xml</i> is essential for the <i>mvn site:deploy</i> goal. It specifies the remote URL where the site will be deployed (e.g., via SCP, FTP, or WebDAV) and defines a unique <i>&lt;id&gt;</i> that Maven uses to locate corresponding authentication credentials in the <i>settings.xml</i> file.


title: WAGON PLUGIN AND TRANSPORTS
content:
Maven's Wagon API and its various implementations (e.g., <i>wagon-ssh</i> for SCP, <i>wagon-ftp</i> for FTP, <i>wagon-webdav</i> for WebDAV) provide the underlying transport layer for deploying artifacts and sites. The specific Wagon plugin used is determined by the protocol specified in the <i>&lt;distributionManagement&gt;</i> URL in the <i>pom.xml</i>.


title: HISTORY
content:
The Apache Maven project, established in the early 2000s, revolutionized Java project builds with its 'convention over configuration' paradigm. From its early versions, a core feature was the ability to generate standardized project documentation and reports. The Maven Site Plugin has been a foundational component, providing a consistent mechanism for project teams to produce comprehensive, browsable websites that consolidate various project facets, significantly improving project transparency, communication, and overall maintainability.


title: TLDR
content:
<b>Generate a project site using the site plugin</b>`mvn site`<br><b>Generate a site for a specific Maven project (multi-module build)</b>`mvn site [[-pl|--projects]] [module_name]`<br><b>Clean previous site output before generating a new one</b>`mvn clean site`<br><b>Skip tests while generating the site</b>`mvn site [[-D|--define]] skipTests`<br><b>Generate and deploy the site to the remote server</b>`mvn site-deploy`


title: PARAMETERS
content:
<b>package-name</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the installed npm package to open for editing. This package must already be present in your project's <b><i>node_modules</i></b> directory.<br><br><b>--editor <i>&lt;editor-command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global npm option) Specifies a particular editor command to use, overriding the `EDITOR` or `VISUAL` environment variables for this operation.<br><br>


title: DESCRIPTION
content:
The <b><i>npm edit</i></b> command opens the specified installed package's directory in your configured default editor. This utility is primarily used for debugging or making quick, temporary modifications to a dependency located within your project's <b><i>node_modules</i></b> folder. It provides a convenient way to inspect or alter a package's source code without needing to uninstall, modify, and reinstall it from a different source.<br><br>It's crucial to understand that any changes made using <b><i>npm edit</i></b> are <i>not permanent</i>. They will be overwritten and lost the next time the package is updated, reinstalled, or if <b><i>npm clean-install</i></b> is performed, as these operations typically rebuild the <b><i>node_modules</i></b> directory based on the <b><i>package-lock.json</i></b> and <b><i>package.json</i></b> files. For persistent changes, it's generally recommended to fork the package, make your modifications, and then use your modified version, or utilize tools like <b><i>npm link</i></b> for local development.


title: CAVEATS
content:
<ul><li><b><i>Temporary Changes Only:</i></b> Changes made with <b><i>npm edit</i></b> are strictly local and temporary. They will be lost upon subsequent <b><i>npm install</i></b>, <b><i>npm update</i></b>, or <b><i>npm ci</i></b> operations for that package.</li><li><b><i>No Version Control:</i></b> This command does not integrate with version control. Any modifications are unrecorded unless you manually manage them.</li><li><b><i>Local Scope:</i></b> Edits only affect the specific package instance within your current project's <b><i>node_modules</i></b>.</li><li><b><i>Potential for Instability:</i></b> Modifying installed dependencies directly can lead to unexpected behavior or breakages if not done carefully.</li></ul>


title: EDITOR PREFERENCE
content:
The command respects the <b><i>EDITOR</i></b> or <b><i>VISUAL</i></b> environment variables to determine which text editor to launch. If neither is set, it might fall back to a default system editor (e.g., <b><i>vi</i></b> on Unix-like systems, <b><i>notepad</i></b> on Windows).


title: DEBUGGING AID
content:
While not intended for permanent solutions, <b><i>npm edit</i></b> is highly valuable for rapidly testing a potential fix, understanding a package's internal workings, or adding temporary logging without the overhead of publishing a new version or managing a dedicated fork.


title: HISTORY
content:
The <b><i>npm edit</i></b> command has been a foundational utility in <b><i>npm</i></b> for a significant period, providing developers with a quick mechanism to debug or experiment with installed package code. Its design reflects <b><i>npm</i></b>'s emphasis on practical developer workflows and efficient debugging capabilities. It offers a low-friction approach to interacting directly with dependencies during development, predating and complementing more structured local development workflows like <b><i>npm link</i></b> in various scenarios.


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits, showing available options and usage examples for the command.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version number of the <i>zapier-versions</i> command-line tool itself and exits.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all known and detected Zapier-related component versions, including the CLI, connected apps, and potentially API versions.<br><br><b><b>--app <i>&lt;app_name&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular Zapier application by its name to query its associated version information, such as connector version or deployed code version.<br><br><b><b>--api</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the versions of Zapier APIs that the current environment or tool is configured to use or support.<br><br><b><b>--format <i>&lt;json|yaml|text&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the output format for the version information. Options typically include <i>json</i> for programmatic parsing, <i>yaml</i> for structured human readability, or <i>text</i> for a simple console output.<br><br>


title: DESCRIPTION
content:
<i>zapier-versions</i> is a hypothetical command-line utility designed to provide detailed version information related to the Zapier ecosystem. While not a standard Linux command, it would likely serve developers and administrators by displaying the version of the Zapier CLI tool itself, versions of connected Zapier applications, API versions in use, or even versions of custom integrations or functions deployed within a Zapier environment.<br><br>Its primary purpose would be to help in debugging, ensuring compatibility, and managing deployments by providing a centralized way to inspect the various software versions that interact with or are part of the Zapier platform. This could be crucial for identifying discrepancies between local development environments and deployed production systems, or for tracking updates to Zapier's core services and APIs.


title: CAVEATS
content:
Please note that <b><i>"zapier-versions" is not a standard Linux command</i></b>. This analysis describes a hypothetical command based on its name and common patterns for versioning tools in a development ecosystem. Its actual existence, functionality, and parameters would depend entirely on a specific implementation within the Zapier command-line interface or related tooling. Users should consult official Zapier documentation for real commands.


title: POTENTIAL USE CASES
content:
A command like <i>zapier-versions</i> would be invaluable for:<br><ul><li><b>Troubleshooting:</b> Quickly identify if a version mismatch is causing unexpected behavior in integrations.</li><li><b>Deployment Management:</b> Ensure consistent versions across different deployment stages (development, staging, production).</li><li><b>Compatibility Checks:</b> Verify that custom code or connectors are compatible with the current Zapier platform or API versions.</li><li><b>Auditing:</b> Maintain a record of software versions used for compliance or internal tracking.</li></ul>


title: TLDR
content:
<b>List the versions for an integration</b>`zapier versions`<br><b>Include deprecated versions</b>`zapier versions [[-a|--all]]`<br><b>Display additional debug output</b>`zapier versions [[-d|--debug]]`<br><b>List the versions with a different output structure</b>`zapier versions [[-f|--format]] [plain|json|raw|row|table]`


title: PARAMETERS
content:
<b><i>(None)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This specific command does not accept any direct parameters or options. Its execution triggers the immediate termination of the ADB server process without requiring further arguments.<br><br>


title: DESCRIPTION
content:
The <b>adb-kill-server</b> command is a fundamental utility within the Android Debug Bridge (ADB) toolkit. Its primary function is to immediately stop the ADB daemon server process that runs in the background on your development machine. This server is essential for managing all communication between your computer and connected Android devices or emulators.<br><br>When you execute any <b>adb</b> command (like <b>adb devices</b> or <b>adb shell</b>), the system first checks if an ADB server is running. If not, it automatically starts one. However, sometimes the server can get into a corrupted or unresponsive state, leading to issues such as devices not being detected, 'device offline' errors, or general communication failures. In such cases, <b>adb-kill-server</b> provides a quick and effective way to force a shutdown of the problematic server. After killing the server, the next <b>adb</b> command you run will typically start a fresh, clean instance of the server, often resolving the underlying communication problems and restoring proper ADB functionality. It is a crucial first step in many ADB-related troubleshooting scenarios.


title: CAVEATS
content:
The <b>adb-kill-server</b> command comes with a few important considerations:<br>1. Killing the server will temporarily disconnect all currently connected ADB sessions and devices from your host machine.<br>2. Subsequent <b>adb</b> commands will automatically restart the server, which is usually the desired behavior for troubleshooting.<br>3. This command only affects the ADB server running on your host machine, not the <i>adbd</i> daemon running on the Android device or emulator itself.<br>4. Ensure you have the necessary permissions to kill processes on your system.


title: WHEN TO USE
content:
You should use <b>adb-kill-server</b> primarily for troubleshooting ADB-related issues. Common scenarios include:<br>1. When <b>adb devices</b> shows no devices, or devices are listed as 'offline' incorrectly.<br>2. If you encounter 'ADB server didn't start' or 'cannot connect to daemon' errors.<br>3. After updating your Android SDK tools or ADB version.<br>4. To resolve unexpected disconnections or communication failures with devices.<br>5. When switching between different ADB versions or encountering port conflicts.<br><br>It's often followed by another <b>adb</b> command (like <b>adb devices</b>) to implicitly restart the server.


title: HISTORY
content:
The Android Debug Bridge (ADB) has been an integral part of the Android SDK since its inception, providing developers with a versatile command-line tool for interacting with Android devices. The <b>kill-server</b> subcommand, along with <b>start-server</b> and the implicit server management by other <b>adb</b> commands, has been a core utility for many years. Its development reflects the need for robust control over the communication bridge between development environments and target devices, ensuring a reliable mechanism to reset or troubleshoot the ADB environment when necessary. It has remained largely consistent in its functionality due to its foundational role.


title: SYNOPSIS
content:
<pre><I>mvn archetype:generate</I> [-D<I>archetypeGroupId</I>=&lt;group&gt;] [-D<I>archetypeArtifactId</I>=&lt;artifact&gt;] [-D<I>archetypeVersion</I>=&lt;version&gt;] [-D<I>archetypeCatalog</I>=&lt;catalog&gt;] [-D<I>groupId</I>=&lt;group&gt;] [-D<I>artifactId</I>=&lt;artifact&gt;] [-D<I>version</I>=&lt;version&gt;] [-D<I>interactiveMode</I>=false] [-D<I>batchMode</I>=true]</pre>


title: PARAMETERS
content:
<b><b>-D</b><I>archetypeGroupId</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the group ID of the archetype to use. E.g., <I>org.apache.maven.archetypes</I>.<br><br><b><b>-D</b><I>archetypeArtifactId</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the artifact ID of the archetype to use. E.g., <I>maven-archetype-quickstart</I>.<br><br><b><b>-D</b><I>archetypeVersion</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the version of the archetype to use.<br><br><b><b>-D</b><I>archetypeCatalog</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the catalog from which to retrieve the archetype. Common values include <I>local</I>, <I>remote</I>, <I>internal</I>, a URL, or a file path.<br><br><b><b>-D</b><I>groupId</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the group ID for the new project being generated.<br><br><b><b>-D</b><I>artifactId</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the artifact ID for the new project being generated. This will also be the name of the project directory.<br><br><b><b>-D</b><I>version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the version for the new project being generated. Defaults to <I>1.0-SNAPSHOT</I>.<br><br><b><b>-D</b><I>interactiveMode</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If <I>true</I> (default), Maven will prompt the user for input. If <I>false</I>, it will attempt to use defaults or other provided parameters without interaction.<br><br><b><b>-D</b><I>batchMode</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When <I>true</I>, it avoids user prompts, effectively equivalent to <I>-DinteractiveMode=false</I>. Useful for scripting.<br><br>


title: DESCRIPTION
content:
The <I>mvn archetype:generate</I> command (often conceptually referred to as "mvn-archetype") is a core feature of Apache Maven for quickly bootstrapping new projects. It utilizes <I>Archetypes</I>, which are project templating tools in Maven. An archetype is essentially a project template that defines a basic project structure, including directories, <I>pom.xml</I> files, and sometimes sample source code. When <I>archetype:generate</I> is executed, Maven prompts the user (or uses provided parameters) to select an archetype from a catalog (local or remote) and then generates a new project based on that template.<br><br>This significantly speeds up initial project setup, ensuring consistency across different projects by providing a standard starting point for various project types like web applications, Maven plugins, or simple JAR libraries. It's crucial for developer productivity and maintaining project standardization within an organization.


title: CAVEATS
content:
This is not a standalone Linux command. It is a goal (<I>generate</I>) of the <I>archetype</I> plugin executed via the <I>mvn</I> (Maven) command. Therefore, Apache Maven must be installed and configured on your system for this command to work. Without providing specific archetype coordinates in non-interactive mode, the command will require user interaction or fail.


title: WHAT IS A MAVEN ARCHETYPE?
content:
An <b>Archetype</b> is a Maven project templating toolkit. It provides a consistent and reproducible way to generate new Maven projects from a predefined template. It encompasses the project's directory structure, a basic <I>pom.xml</I> file, and often boilerplate code, making it easy to start a new project without manually setting up the basic structure every time. Archetypes can be simple (like a basic Java application) or complex (like a multi-module enterprise application).


title: HISTORY
content:
The concept of Archetypes was introduced early in Apache Maven's development as a solution for project bootstrapping and standardization. As Maven grew in popularity, the Archetype plugin became a fundamental tool for quickly creating new projects, leveraging community-contributed and organization-specific templates. Its usage has remained consistent, facilitating rapid project initiation and maintaining project structure consistency.


title: TLDR
content:
<b>Generate a new project interactively</b>`mvn archetype:generate`<br><b>Generate a project non-interactively with specific archetype and project parameters</b>`mvn archetype:generate --define archetypeGroupId=[group_id] --define archetypeArtifactId=[artifact_id] --define archetypeVersion=[version] --define groupId=[project_group_id] --define artifactId=[project_name] --define interactiveMode=false`


title: PARAMETERS
content:
<b>--config <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a configuration file, often used for commands like <i>gen config</i>.<br><br><b>--context <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the cluster context from the <i>talosconfig</i> to use for the command.<br><br><b>--endpoints <ip:port>[,<ip:port>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the API endpoints to connect to the Talos API. Can specify multiple endpoints.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for <i>talosctl</i> or a specific subcommand.<br><br><b>--insecure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows insecure connections to the Talos API (use with caution in production).<br><br><b>--log-level <level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level (e.g., 'debug', 'info', 'warn', 'error').<br><br><b>--nodes <ip>[,<ip>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies target nodes by IP address to execute the command on. Useful for node-specific operations.<br><br><b>--output <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output format (e.g., 'json', 'yaml', 'text', 'short').<br><br><b>--server <ip:port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a single Talos API endpoint to connect to.<br><br><b>--talosconfig <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the <i>talosconfig</i> file (default: <i>~/.talos/config</i>).<br><br><b>--timeout <duration></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout for the operation (e.g., '5m', '30s').<br><br><b>--wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes the command to wait for an operation to complete before exiting.<br><br>


title: DESCRIPTION
content:
<i>talosctl</i> is the primary command-line interface for interacting with Talos Linux clusters.<br>It serves multiple critical functions, including generating Talos configuration files, provisioning new machines, and performing lifecycle management operations on a running Talos cluster.<br>It provides powerful capabilities to inspect cluster state, apply configurations, manage machine certificates, and troubleshoot nodes.<br>Many of its subcommands mirror functionalities often found in <i>kubectl</i>, allowing users to query Kubernetes resources directly through the Talos API, even when the Kubernetes control plane is not yet fully operational.<br><i>talosctl</i> is an indispensable tool for anyone deploying, managing, or debugging a Talos Linux environment, offering a unified interface for both initial setup and ongoing operations.


title: CAVEATS
content:
Using <i>--insecure</i> flag is highly discouraged in production environments as it bypasses TLS certificate validation, making communication vulnerable to man-in-the-middle attacks.<br>Many commands require appropriate API access and permissions configured within the <i>talosconfig</i> file.<br>Due to its direct interaction with the Talos OS, misuse of powerful commands (e.g., <i>reset</i>, <i>bootstrap</i>) can lead to data loss or cluster instability.<br>Understanding the underlying Talos Linux architecture and Kubernetes concepts is crucial for effective use.


title: SUBCOMMAND STRUCTURE
content:
<i>talosctl</i> organizes its functionality through a rich set of subcommands, each designed for specific tasks.<br>Common subcommands include: <br><b>gen</b> (for generating configurations and certificates), <br><b>bootstrap</b> (for initializing a control plane), <br><b>apply</b> (for applying new configurations), <br><b>read</b> (for reading files from nodes), <br><b>containers</b> (for managing host containers), <br><b>logs</b> (for fetching logs), <br><b>events</b> (for cluster events), <br><b>version</b> (for displaying Talos version), <br><b>health</b> (for checking cluster health), <br><b>reset</b> (for resetting nodes), and many others for interacting with Kubernetes resources directly.


title: THE TALOSCONFIG FILE
content:
The <i>talosconfig</i> file (typically at <i>~/.talos/config</i>) is central to <i>talosctl</i>'s operation.<br>It stores information about registered Talos clusters, including API endpoints, authentication credentials (client certificates and keys), and contexts.<br>This file allows users to manage multiple Talos clusters and switch between them easily without repeatedly specifying connection details.


title: HISTORY
content:
<i>talosctl</i> was developed as an integral part of the Talos Linux project by Sidero Labs (formerly Talos Systems). It emerged from the need for a robust, secure, and unified command-line tool to manage the minimal, immutable Talos operating system, specifically designed for running Kubernetes.<br>Its development has been closely tied to the evolution of Talos Linux, providing users with a comprehensive interface for tasks ranging from initial cluster provisioning and configuration generation to advanced troubleshooting and lifecycle management of Kubernetes infrastructure.


title: TLDR
content:
<b>Apply a config to a fresh node</b>`talosctl apply-config [[-i|--insecture]] [[-n|--nodes]] [control_plane_ip] [[-f|--file]] [path/to/control_plane.yaml]`<br><b>Bootstrap the etcd cluster on a node</b>`talosctl bootstrap [[-n|--nodes]] [node_ip]`<br><b>Edit an API resource</b>`talosctl edit [resource_to_edit] [[-n|--nodes]] [node_ip]`<br><b>Get resources</b>`talosctl get [resource_to_get] [[-n|--nodes]] [node_ip]`<br><b>Download the admin kube configuration from a node</b>`talosctl kubeconfig [[-n|--nodes]] [node_ip]`<br><b>Reset a node</b>`talosctl reset [[-n|--nodes]] [node_ip]`


title: PARAMETERS
content:
<b>-D <i>directory</i>, --directory=<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target directory to write the WAL files into. This is a mandatory option.<br><br><b>-d <i>connstr</i>, --dbname=<i>connstr</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connection string parameters. This can be used instead of or in addition to individual connection options like --host, --port, etc.<br><br><b>-h <i>hostname</i>, --host=<i>hostname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hostname or IP address of the database server.<br><br><b>-p <i>port</i>, --port=<i>port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;TCP port number or local Unix domain socket file extension on which the server is listening for connections.<br><br><b>-U <i>username</i>, --username=<i>username</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;User name to connect as.<br><br><b>-W, --password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force pg_receivewal to prompt for a password before connecting to the database.<br><br><b>-S <i>slotname</i>, --slot=<i>slotname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the replication slot to use. This is highly recommended to prevent the server from removing WAL files before they are streamed.<br><br><b>-s <i>interval</i>, --status-interval=<i>interval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Time in seconds between status packets sent back to the server. A value of 0 disables status updates. Default is 10 seconds.<br><br><b>-n, --no-loop</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not loop after reaching the end of the WAL stream. Exit instead. The default behavior is to loop indefinitely and wait for new WAL.<br><br><b>-N, --no-sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not force WAL files to disk with fsync. This can be faster but is unsafe and should only be used for testing or specific scenarios where data integrity risks are understood.<br><br><b>-E <i>LSN</i>, --endpos=<i>LSN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop streaming at the specified LSN (Log Sequence Number). The WAL file containing the LSN will be fully transferred.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the pg_receivewal version and exit.<br><br><b>-Z <i>level</i>, --compress=<i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compress WAL files using zstd (if compiled with zstd support). Level can be 0 (no compression) to 9 (highest).<br><br><b>--fsync-interval=<i>interval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The frequency (in seconds) with which the target directory is synchronized to disk using fsync. Default is 10 seconds.<br><br><b>--if-not-exists</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not error if the target directory already exists. Use with caution as existing files might be overwritten or moved.<br><br><b>--synchronous=<i>mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls whether synchronous replication feedback is sent. Modes are "sync" (default) or "async". "sync" allows the server to wait for pg_receivewal to confirm WAL receipt before committing transactions.<br><br><b>--waldir=<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a subdirectory within the target directory (-D) where WAL files should be placed. Defaults to "pg_wal".<br><br>


title: DESCRIPTION
content:
pg_receivewal is a utility for streaming transaction log (WAL) data from a running PostgreSQL server. It connects to the server using the streaming replication protocol and writes the received WAL segments into a specified local directory. This tool is fundamental for setting up and maintaining various high-availability and disaster recovery solutions, including physical standby servers, point-in-time recovery (PITR) archives, or general WAL archiving. It can operate in a continuous loop, waiting for new WAL to be generated by the server, or exit after fetching a specific amount of WAL. By utilizing PostgreSQL's replication slots, pg_receivewal can ensure that the server retains necessary WAL segments until they have been successfully streamed, preventing data loss due to early cleanup on the server. It offers robust connectivity options, including host, port, username, and password, similar to other PostgreSQL client applications.


title: CAVEATS
content:
<b>Disk Space:</b> Streaming WAL can consume significant disk space. Ensure the target directory has ample free space, especially for continuous archiving or long-term standbys.<br><b>Replication Slots:</b> While optional, using a replication slot (<i>-S</i>) is highly recommended. Without it, the server might remove WAL segments needed by pg_receivewal before they are streamed, leading to replication gaps or errors. This is particularly crucial for continuous operation.<br><b><i>--no-sync</i> Usage:</b> The <i>--no-sync</i> option is inherently unsafe for production environments. It can lead to data loss or corruption in case of system crashes. Use it only for testing or temporary, non-critical scenarios.<br><b>Security:</b> Ensure secure network connectivity between pg_receivewal and the PostgreSQL server. Consider using <i>sslmode=verify-full</i> in connection strings for encrypted and authenticated connections.


title: CONNECTION PARAMETERS
content:
pg_receivewal uses the standard PostgreSQL connection environment variables (e.g., <i>PGHOST</i>, <i>PGPORT</i>, <i>PGUSER</i>, <i>PGPASSWORD</i>) and the <i>~/.pgpass</i> file for password authentication, in addition to command-line options.


title: REPLICATION SLOTS EXPLAINED
content:
A replication slot is an object on the primary server that prevents the primary from removing WAL segments until they have been consumed by all configured standbys or archival processes. This mechanism guarantees that pg_receivewal (or any other replication client) will always receive the necessary WAL data without encountering gaps due to WAL file deletion on the primary.


title: TYPICAL USAGE
content:
<i>pg_receivewal -D /path/to/wal/archive -S my_archive_slot -v</i><br>This command continuously streams WAL to <i>/path/to/wal/archive</i> using the replication slot <i>my_archive_slot</i>, providing verbose output.


title: HISTORY
content:
pg_receivewal was introduced in PostgreSQL 9.2 as part of the improvements to streaming replication and recovery. Its development aimed to provide a dedicated, robust client for fetching WAL segments directly from a running PostgreSQL server using the streaming replication protocol. This offered a more reliable and efficient alternative to the <i>archive_command</i> for continuous archiving and setting up standby servers, allowing for reduced recovery point objective (RPO) and simplified management of replication. It continues to be a core utility for modern PostgreSQL high-availability setups.


title: TLDR
content:
<b>Stream WAL to a local directory (minimum required)</b>`pg_receivewal [[-D|--directory]] [directory]`<br><b>Same as above, specify host, port, username including verbose output</b>`pg_receivewal [[-v|--verbose]] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username] [[-D|--directory]] [directory]`<br><b>Use replication slot (create-if-needed)</b>`pg_receivewal [[-S|--slot]] [slot_name] --create-slot [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username] [[-D|--directory]] [directory]`<br><b>Stop at a given WAL position (LSN)</b>`pg_receivewal [[-E|--endpos]] [lsn] [[-D|--directory]] [directory] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username]`<br><b>Control looping on failure</b>`pg_receivewal [[-n|--no-loop]] [[-D|--directory]] [directory] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username]`<br><b>Flush data synchronously (force WAL writes immediately)</b>`pg_receivewal --synchronous [[-D|--directory]] [directory] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username]`<br><b>Compress WAL output (gzip, level 0-9)</b>`pg_receivewal [[-Z|--compress]] [level|method] [[-D|--directory]] [directory] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username]`<br><b>Set status reporting interval</b>`pg_receivewal [[-s|--status-interval]] [seconds] [[-D|--directory]] [directory] [[-h|--host]] [host] [[-p|--port]] [port] [[-U|--username]] [username]`


title: TLDR
content:
<b>Compile the project's source code</b>`mvn compile`<br><b>Clean compiled files and recompile</b>`mvn clean compile`<br><b>Compile a specific module in a multi-module project</b>`mvn compile [[-pl|--projects]] [module_name]`<br><b>Skip tests while compiling</b>`mvn compile [[-D|--define]] skipTests`


title: PARAMETERS
content:
<b><b>-f</b>, <b>--files</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Display the list of all files installed as part of the specified package.</I><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Show more detailed output. This typically includes the 'Required-by' section, listing packages that depend on the queried package.</I><br><br><b><b>--no-color</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Suppress colored output in the terminal, presenting plain text.</I><br><br>


title: DESCRIPTION
content:
The <b>pip show</b> command is a powerful utility within the Python package installer (pip) ecosystem, designed to provide comprehensive details about one or more installed Python packages.<br><br>Unlike <b>pip list</b>, which offers a concise summary of package names and versions, <b>pip show</b> delves much deeper, presenting a rich set of metadata. This includes the package's <I>name</I>, <I>version</I>, a brief <I>summary</I>, its <I>homepage</I>, <I>author</I>, <I>license</I>, and crucially, its <I>installation location</I> on the system.<br><br>Furthermore, it clearly outlines the package's <I>dependencies</I> (what it <b>Requires</b> to function) and, when used with the <b>--verbose</b> option, lists other packages that <b>Required-by</b> it (i.e., packages that depend on the queried package). With the <b>--files</b> option, it can even enumerate every file installed as part of the package.<br><br>This command is invaluable for debugging package-related issues, verifying installations, understanding complex dependency trees, or simply gaining a deeper insight into the Python libraries powering your projects.


title: CAVEATS
content:
<b>Scope Limitation</b>: <b>pip show</b> only provides information for packages installed via pip or compatible mechanisms. It cannot query packages installed manually or through system package managers (e.g., apt, yum) unless those installations are also managed by pip in the same environment.<br><br><b>Metadata Reliance</b>: The accuracy and completeness of the displayed information depend entirely on the metadata provided by the package maintainer. Malformed or missing metadata can lead to incomplete or incorrect output.<br><br><b>Environment Specific</b>: The command operates within the currently active Python environment (virtual environment or system-wide). Ensure you are in the correct environment to view relevant package information.<br><br><b>Lengthy Output</b>: When using the <b>--files</b> option for a large package, the output can be extremely long, potentially making it difficult to parse directly in the terminal without piping to a pager like <b>less</b>.


title: UNDERSTANDING OUTPUT FIELDS
content:
When you run <b>pip show</b>, you'll see several fields providing crucial details about the package:<br><b>Name</b>: The official name of the package.<br><b>Version</b>: The installed version number.<br><b>Summary</b>: A brief one-line description of what the package does.<br><b>Home-page</b>: The URL to the project's official website or documentation.<br><b>Author</b>: The name of the package author or organization.<br><b>License</b>: The software license under which the package is distributed (e.g., MIT, Apache 2.0).<br><b>Location</b>: The file path where the package is installed on your system. This is especially useful for understanding virtual environment installations.<br><b>Requires</b>: A list of other packages that this package depends on to function correctly.<br><b>Required-by</b> (<I>with -v</I>): A list of other installed packages that depend on the package you are querying. This helps in understanding reverse dependencies.<br><b>Files</b> (<I>with -f</I>): A comprehensive list of all individual files and directories that comprise the installed package.


title: PRACTICAL EXAMPLES
content:
Here are some common ways to use the <b>pip show</b> command:<br><b>Basic package information</b>:<br><I>$ <b>pip show requests</b></I><br><br><b>Viewing files installed by a package</b>:<br><I>$ <b>pip show --files numpy</b></I><br><br><b>Getting verbose output, including 'Required-by'</b>:<br><I>$ <b>pip show -v pandas</b></I><br><br><b>Querying multiple packages at once</b>:<br><I>$ <b>pip show flask django rich</b></I>


title: HISTORY
content:
The <b>pip show</b> command has been a foundational component of the pip utility since its early development. As a successor to <I>easy_install</I>, pip aimed to provide a more consistent and user-friendly interface for Python package management. <b>pip show</b> was introduced as a core command to address the crucial need for inspecting installed packages, allowing developers and administrators to quickly understand their environment.<br><br>While pip itself has undergone significant evolution, with improvements in dependency resolution, build processes, and command-line interface enhancements, the fundamental purpose and output structure of <b>pip show</b> have remained remarkably consistent. It continues to be a go-to command for verifying package installations and debugging environmental issues, reflecting its stable and essential role in the Python ecosystem.


title: TLDR
content:
<b>Show information about a package</b>`pip show [package]`<br><b>Show all information about a package</b>`pip show [[-v|--verbose]] [package]`<br><b>Show all installed files for a package</b>`pip show [[-f|--files]] [package]`


title: DESCRIPTION
content:
The command <b>ic</b> is <i>not recognized as a standard utility or command</i> in common Linux distributions, including those based on Debian, Red Hat, or Arch. It does not appear in the GNU core utilities, typically installed on most Linux systems, nor is it listed in the POSIX standard specifications for shell commands. Therefore, it is highly probable that if <b>ic</b> is encountered on a system, it is either:<br>1. A <i>typo</i> for another common command (e.g., <b>wc</b>, <b>ls</b>, <b>cat</b>).<br>2. A <i>custom alias</i> or <i>shell function</i> defined by a user or system administrator.<br>3. A <i>custom script</i> located in the system's PATH.<br>4. Part of a <i>specific, non-standard software package</i> or an application-specific utility not universally installed.<br>Without further context, it is impossible to provide a definitive description or functionality for a command named <b>ic</b>.


title: CAVEATS
content:
Users should exercise caution if they encounter an 'ic' command on an unfamiliar system. It is crucial to determine its origin and purpose before execution, as it could potentially be a malicious script or an unintended operation. Always verify the command's source using tools like <b>type ic</b> or <b>which ic</b>.


title: INVESTIGATING UNKNOWN COMMANDS
content:
If you encounter an unknown command like <b>ic</b>, you can use the following methods to investigate its nature:<br>1. <b>type ic</b>: This command will tell you if <b>ic</b> is an alias, function, or an executable.<br>2. <b>which ic</b>: If it's an executable, this will show its path.<br>3. <b>man ic</b> or <b>info ic</b>: These commands search for manual pages, though it's unlikely to find one for a non-standard command.<br>4. Examine your shell's configuration files (e.g., <i>.bashrc</i>, <i>.zshrc</i>) for aliases or functions.


title: HISTORY
content:
N/A - There is no documented history for 'ic' as a standard or widely adopted Linux command. Its existence is typically localized to specific user configurations or custom system setups.


title: TLDR
content:
<b>Comment on the pull request of the current branch</b>`gh pr comment [[-b|--body]] "[LGTM]"`<br><b>Comment on a specific pull request</b>`gh pr comment [123] [[-b|--body]] "[Thanks!]"`<br><b>Comment from a file</b>`gh pr comment [123] [[-F|--body-file]] [path/to/file.txt]`<br><b>Open the editor to write a multi-line comment</b>`gh pr comment [123]`


title: TLDR
content:
<b>Enable sparse checkout</b>`git sparse-checkout init`<br><b>Disable sparse-checkout and restore full repository</b>`git sparse-checkout disable`<br><b>Specify which directories (or files) to include</b>`git sparse-checkout set [path/to/directory]`<br><b>Add more paths later</b>`git sparse-checkout add [path/to/directory]`


title: TLDR
content:
<b>Show the location of the pip cache directory</b>`pip cache dir`<br><b>List filenames of all packages currently stored in the cache</b>`pip cache list`<br><b>Remove all files from the pip cache</b>`pip cache purge`<br><b>Remove cached files matching a specific package name</b>`pip cache remove [package_name]`


title: PARAMETERS
content:
<b>--help, -?</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message and exit.<br><br><b>--version, -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br><b>--exit-on-error, -e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately upon the first error encountered, rather than continuing to check other files.<br><br><b>--progress, -P</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a progress bar during the verification process, showing the current file being processed.<br><br><b>--progress-interval=<i>MILLISECONDS</i>, -S <i>MILLISECONDS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report progress at the specified interval in milliseconds. Setting it to 0 disables progress reporting.<br><br><b>--skip-unreadable-files, -s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip over files that cannot be read (e.g., due to insufficient permissions) instead of reporting an error for them.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information about the verification process.<br><br>


title: DESCRIPTION
content:
<code>pg_verifybackup</code> is a utility designed to check the structural integrity and data consistency of a PostgreSQL base backup. It systematically reads through all files within a specified backup directory, validating that data pages contain correct block numbers and Log Sequence Numbers (LSNs). If page checksums were enabled on the original PostgreSQL cluster, <code>pg_verifybackup</code> also verifies these checksums, ensuring data has not been corrupted since the backup was taken. <br><br>Beyond data files, it checks the timeline history files for correctness and confirms the presence of <code>recovery.signal</code> or <code>standby.signal</code>, which are crucial for subsequent recovery. This command serves as a proactive measure to ensure that a backup is viable for restoration, catching potential issues like file corruption or incomplete backups before they become critical during a disaster recovery scenario. It does <i>not</i> perform a full recovery or WAL replay, but rather focuses on the physical and structural soundness of the backup.


title: CAVEATS
content:
<code>pg_verifybackup</code> primarily focuses on the physical integrity of data pages and file structure. It <i>does not</i> verify the logical consistency of the backup (e.g., that all expected tables are present or that data content is logically correct). It also <i>does not</i> verify the integrity of Write-Ahead Log (WAL) files in the <code>pg_wal</code> subdirectory; these are checked during actual recovery. Furthermore, it ignores symbolic links that point outside the backup directory and only verifies files that are expected to contain PostgreSQL data.


title: VERIFICATION SCOPE
content:
The tool verifies relation files, checking for correct block numbers, LSNs, and checksums (if enabled). It also examines <code>pg_control</code>, <code>postgresql.auto.conf</code>, <code>pg_wal/timeline</code> files, and the presence of <code>recovery.signal</code> or <code>standby.signal</code>.


title: ERROR HANDLING
content:
By default, <code>pg_verifybackup</code> attempts to check all files and reports all errors found. The <i>--exit-on-error</i> option can be used to stop at the first error.


title: HISTORY
content:
The <code>pg_verifybackup</code> utility was introduced in <b>PostgreSQL 13</b>, providing a dedicated tool for pre-checking the integrity of base backups, enhancing the reliability of disaster recovery preparedness.


title: TLDR
content:
<b>Verify a backup stored in a specific directory</b>`pg_verifybackup [path/to/backup]`<br><b>Verify a backup showing progress information</b>`pg_verifybackup [[-P|--progress]] [path/to/backup]`<br><b>Verify a backup and exit immediately on first error</b>`pg_verifybackup [[-e|--exit-on-error]] [path/to/backup]`<br><b>Verify a backup ignoring specific files or directories</b>`pg_verifybackup [[-i|--ignore]] [path/to/file_or_directory] [path/to/backup]`<br><b>Verify a backup with a manifest file in a different location</b>`pg_verifybackup [[-m|--manifest-path]] [path/to/backup_manifest] [path/to/backup]`<br><b>Display help</b>`pg_verifybackup [[-?|--help]]`


title: SYNOPSIS
content:
The <i>gh variable</i> command group allows managing GitHub Actions variables.<br><br><b>General Syntax:</b><br><i>gh variable</i> &lt;command&gt; [flags]<br><br><b>Subcommand Examples:</b><br><i>gh variable list</i> [--repo &lt;repo&gt; | --org &lt;org&gt; | --env &lt;environment_name&gt;] [flags]<br><i>gh variable set</i> &lt;name&gt; [--body &lt;value&gt;] [--repo &lt;repo&gt; | --org &lt;org&gt; | --env &lt;environment_name&gt;] [--visibility &lt;all|private|selected&gt;] [flags]<br><i>gh variable delete</i> &lt;name&gt; [--repo &lt;repo&gt; | --org &lt;org&gt; | --env &lt;environment_name&gt;] [flags]


title: PARAMETERS
content:
<b>command</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The subcommand to execute within the <i>gh variable</i> group (e.g., <b>list</b>, <b>set</b>, <b>delete</b>).<br><br><b>&lt;name&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>required</b> name of the variable to set or delete.<br><br><b>--body &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>required</b> value for the variable when using the <b>set</b> subcommand. Can also be read from standard input.<br><br><b>--repo &lt;[HOST/]OWNER/REPO&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target repository for the variable. Format: <i>[HOST/]OWNER/REPO</i>.<br><br><b>--org &lt;organization&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target organization for the variable.<br><br><b>--env &lt;environment_name&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target environment within a repository for the variable.<br><br><b>--visibility &lt;all|private|selected&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the visibility for an organization-level variable. Options: <b>all</b> repositories, <b>private</b> repositories, or <b>selected</b> repositories.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help information for the command or subcommand.<br><br><b>--jq &lt;expression&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter JSON output using a <i>jq</i> expression.<br><br><b>--json &lt;fields&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output JSON with a comma-separated selection of fields.<br><br>


title: DESCRIPTION
content:
The <i>gh variable</i> command group, part of the GitHub CLI, provides tools to manage GitHub Actions variables. These variables are plain text key-value pairs that can be stored at the repository, organization, or environment level and made available to workflows. This command group offers functionalities to <b>list</b> existing variables, <b>create</b> or <b>update</b> variables with specific values, and <b>delete</b> them. It is an essential tool for automating the configuration of reusable values in CI/CD pipelines on GitHub, enabling consistent and dynamic workflow behavior directly from the command line.


title: CAVEATS
content:
Requires the GitHub CLI (<i>gh</i>) to be installed and authenticated to a GitHub account.<br>The user must possess appropriate permissions (e.g., 'admin' or 'write' access to repositories/organizations/environments) to manage variables.<br>Variables store plain text and are <b>not</b> suitable for sensitive information like API keys or tokens. For such data, use <i>gh secret</i>.<br>The <i>--visibility</i> flag is exclusively applicable when creating or updating organization-level variables.


title: VARIABLE SCOPES
content:
Variables can be scoped to a specific <b>repository</b>, an entire <b>organization</b>, or a named <b>environment</b> within a repository. The chosen scope dictates where the variable is accessible and effective within GitHub Actions workflows.


title: INPUT METHODS FOR VALUES
content:
When setting a variable, its value can be provided directly via the <i>--body</i> flag. Alternatively, for more complex or dynamically generated values, the content can be piped into the command from standard input (<i>stdin</i>), offering flexibility for scripting and automation.


title: HISTORY
content:
The GitHub CLI (<i>gh</i>) was officially released in September 2020. The <i>gh variable</i> command group was introduced as part of the CLI's ongoing development to provide a comprehensive command-line interface for interacting with GitHub's features, including GitHub Actions. It aims to streamline automation and management of CI/CD resources directly from the terminal, enhancing developer productivity for GitHub users.


title: TLDR
content:
<b>List variables for the current repository</b>`gh variable [[ls|list]]`<br><b>List variables for a specific organization</b>`gh variable [[ls|list]] [[-o|--org]] [organization]`<br><b>Get a variable for the current repository</b>`gh variable get [name]`<br><b>Set a variable for the current repository (user will be prompted for the value)</b>`gh variable set [name]`<br><b>Set a variable for a deployment environment in the current repository</b>`gh variable set [name] [[-e|--env]] [environment_name]`<br><b>Set an organization variable visible to all repositories</b>`gh variable set [name] [[-o|--org]] [organization] [[-v|--visibility]] all`<br><b>Set multiple variables from a dotenv file</b>`gh variable set [[-f|--env-file]] [path/to/file.env]`<br><b>Delete a variable for the current repository</b>`gh variable delete [name]`


title: PARAMETERS
content:
<b>PR-NUMBER</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The numerical ID of the pull request to view.<br><br><b>PR-URL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The full URL of the pull request.<br><br><b>BRANCH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the branch associated with the pull request.<br><br><b>-c, --cached</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. View cached pull request information, skipping a fresh fetch from the remote.<br><br><b>-d <lines>, --diff-context <lines></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Specify the number of context lines to show around diff hunks.<br><br><b>-w, --word-diff</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Show differences on a word-by-word basis.<br><br><b>-s, --stat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Display a summary of changes, showing additions, deletions, and file modifications.<br><br><b>-b <BRANCH>, --base <BRANCH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. The base branch to use for comparing changes. Defaults to the pull request's base branch.<br><br><b>-B, --browser</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Open the pull request in your default web browser.<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Disable colored output in the terminal.<br><br><b>--unified</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Force a unified diff format.<br><br><b>--comments</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Explicitly show comments. (Often default behavior).<br><br><b>--no-comments</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Hide all comments associated with the pull request.<br><br><b>--summary</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Show a brief summary of the pull request and exit.<br><br><b>--header</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Show a header in addition to the summary when using <I>--summary</I>.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Output the pull request data in JSON format.<br><br><b>--oneline</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Output a concise summary of the pull request on a single line.<br><br><b>--web</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. An alias for <I>--browser</I>, opening the pull request in a web browser.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Optional</I>. Display help information for the command.<br><br>


title: DESCRIPTION
content:
The <I>gh-pr-view</I> command is a powerful GitHub CLI extension designed to enhance the experience of reviewing pull requests directly from your terminal. It provides an interactive pager that displays comprehensive details about a pull request, including its description, status, associated diffs, and comments. With features like syntax highlighting for code changes and customizable diff contexts, developers can efficiently review code without needing to switch to a web browser. It supports viewing pull requests by number, URL, or branch name, making it highly flexible. Beyond just viewing, it offers options to show word-level diffs, diff statistics, or even open the pull request directly in a web browser. This tool significantly streamlines the pull request review workflow for command-line aficionados.


title: CAVEATS
content:
The <I>gh-pr-view</I> command is a <B>GitHub CLI extension</B>, not a built-in <I>gh</I> command. It must be installed separately using <B>gh extension install ddr/gh-pr-view</B>. Its functionality relies on the GitHub CLI being properly authenticated and configured. Performance may vary with very large diffs or numerous comments, and network connectivity is required for fresh fetches.


title: INSTALLATION
content:
To use <I>gh-pr-view</I>, you must first install it as a GitHub CLI extension:<br><br><B>gh extension install ddr/gh-pr-view</B><br><br>Ensure you have the GitHub CLI installed and authenticated before attempting to install the extension.


title: CONFIGURATION
content:
The behavior of <I>gh-pr-view</I> can be influenced by standard Git and GitHub CLI configurations, such as your default pager (e.g., <I>LESS</I> environment variable). Customizations for diff context and other display settings are handled directly via command-line flags.


title: INTERACTION
content:
When viewing a pull request, the command typically uses a pager like <I>less</I>, allowing you to navigate the content using standard pager commands (e.g., arrow keys for scrolling, <I>q</I> to quit). The content includes the PR's description, status, formatted diffs, and comments.


title: HISTORY
content:
The <I>gh-pr-view</I> command was developed by <B>ddr</B> as a community extension for the GitHub CLI. It emerged from the need for a more robust and interactive command-line interface for reviewing pull requests, going beyond the basic summary provided by the core <I>gh pr view</I> command. Its development leverages the extensibility of the GitHub CLI, allowing users to augment its capabilities with custom tools. Since its initial release, it has gained popularity among developers who prefer a terminal-centric workflow, continually evolving with new features and improvements driven by community contributions and feedback.


title: TLDR
content:
<b>View the pull request associated with the current branch</b>`gh pr view`<br><b>View a specific pull request</b>`gh pr view [123]`<br><b>Open the pull request in the default web browser</b>`gh pr view [[-w|--web]]`<br><b>Show comments in the terminal</b>`gh pr view [123] [[-c|--comments]]`


title: PARAMETERS
content:
<b><I>query</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The keyword or phrase to search for on PyPI. The command returns packages whose names or summaries contain this string.<br><br>


title: DESCRIPTION
content:
The <I>pip-search</I> command, historically an alias or wrapper for <I>pip search</I>, was used to query the Python Package Index (PyPI) for available packages. Users could provide a keyword or a phrase as a search query, and the command would return a list of packages whose names or summaries matched the input. <br><br> The output typically included the package name, its latest version, and a brief description, making it a convenient tool for discovering new Python libraries or verifying the exact name of a package before installation. It was particularly useful for command-line users who preferred to stay within the terminal environment rather than navigating the PyPI website. However, this functionality relied on the PyPI XML-RPC API, which has since been deprecated and removed.


title: CAVEATS
content:
The <I>pip-search</I> command, mirroring <I>pip search</I>, is effectively deprecated and has been removed from recent versions of pip (specifically pip 21.0 and later). This is due to the deprecation and eventual shutdown of the XML-RPC search API on PyPI that it relied upon. Users attempting to use <I>pip search</I> on modern pip versions will encounter an error indicating its removal. <br><br> For current package discovery, it is recommended to use the official <I>pypi.org</I> website or alternative tools designed for PyPI exploration.


title: ALTERNATIVES FOR PACKAGE DISCOVERY
content:
Given the removal of <I>pip-search</I>, users can effectively search for Python packages directly on the <I>pypi.org</I> website using its search bar. Other tools like <I>pip-tools</I> (specifically <I>pip-compile --dry-run</I>) or integrated development environments (IDEs) often provide their own mechanisms for browsing and discovering packages.


title: HISTORY
content:
The <I>pip search</I> functionality, which <I>pip-search</I> mirrored, was an integral part of pip for many years, providing direct command-line access to PyPI's package catalog. It was introduced early in pip's lifecycle to enhance user experience by allowing quick package discovery. However, with the evolution of PyPI's infrastructure and the deprecation of its XML-RPC API, the underlying mechanism for <I>pip search</I> became unsupported. Pip 10.0 (released in 2018) marked the deprecation of the <I>search</I> command, and it was officially removed in pip 21.0 (released in 2021), urging users to transition to web-based search on <I>pypi.org</I> or other external tools.


title: TLDR
content:
<b>Search for packages using a custom package index</b>`pip search [[-i|--index]] [example.com] [query]`


title: PARAMETERS
content:
<b>-d <I>delay_usec</I>, --delay=<I>delay_usec</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a delay in microseconds between timing calls. This helps measure overhead when calls are not back-to-back. Default is 0.<br><br><b>-r <I>repetitions</I>, --repetitions=<I>repetitions</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of timing repetitions to perform. A higher number provides more accurate averages. Default is 1,000,000.<br><br><b>-t <I>type</I>, --type=<I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Choose the timing method to test. Possible types on Linux often include <i>gettimeofday</i> and <i>clock_gettime</i>. If omitted, all available timing methods are tested.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the PostgreSQL version information, then exit.<br><br><b>-?, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help about <b>pg_test_timing</b> command line arguments, then exit.<br><br>


title: DESCRIPTION
content:
The <b>pg_test_timing</b> utility is a diagnostic tool provided with PostgreSQL to measure the overhead of various timing functions available on the operating system. Accurate and efficient timing is critical for PostgreSQL's internal operations, including transaction timestamping, performance monitoring, and write-ahead log management. This command helps determine which timing methods (like <i>gettimeofday</i> or <i>clock_gettime</i> on Linux) offer the lowest overhead and highest resolution on a particular system. It runs a specified number of repetitions, optionally with a delay between calls, and reports the average time taken per timing call and its standard deviation, usually in nanoseconds. This information can be vital for database administrators to understand potential performance implications related to the system's timing capabilities.


title: CAVEATS
content:
Results from <b>pg_test_timing</b> are highly dependent on the specific hardware, operating system, and current system load. They reflect the overhead of timing function calls themselves, not the overall performance of the PostgreSQL server. These measurements should be taken on the actual system where PostgreSQL will run for meaningful results. Background processes can introduce noise into the measurements.


title: IMPORTANCE FOR POSTGRESQL
content:
Accurate and low-overhead timing is crucial for PostgreSQL's transactional integrity and performance. High-resolution timestamps are used for transaction commit times, log entries, and various internal scheduling. If timing calls are inefficient, it can become a bottleneck, especially under heavy workloads. This utility helps identify systems where timing overhead might be a concern, allowing administrators to assess potential impacts on database performance.


title: TIMING METHODS
content:
Modern operating systems provide several ways to get the current time. <i>gettimeofday</i> is a traditional Unix system call, offering microsecond resolution. <i>clock_gettime</i> (with <i>CLOCK_REALTIME</i> or <i>CLOCK_MONOTONIC</i>) is part of POSIX.1-2001 and can offer higher resolution and better performance depending on the system's implementation. PostgreSQL selects the best available method based on system capabilities, and this tool helps verify their performance characteristics on a given environment.


title: TLDR
content:
<b>Run the default timing test (3 seconds)</b>`pg_test_timing`<br><b>Run for a custom duration</b>`pg_test_timing [[-d|--duration]] [seconds]`


title: TLDR
content:
<b>Start DOSBox with default settings</b>`dosbox`<br><b>Run a DOS executable located at a specific path</b>`dosbox [path/to/executable.exe]`<br><b>Mount a folder as C: and run an executable</b>`dosbox [path/to/executable.exe] -c "MOUNT C [path/to/folder]"`<br><b>Start DOSBox in fullscreen mode</b>`dosbox -fullscreen`<br><b>Exit DOSBox automatically after running a program</b>`dosbox [path/to/executable.exe] -exit`


title: TLDR
content:
<b>View a JSON file interactively</b>`fx [path/to/file.json]`<br><b>Pretty-print and colorize JSON from stdin</b>`cat [path/to/file.json] | fx`<br><b>Open JSON data from a URL</b>`curl [url] | fx`<br><b>Filter JSON using JavaScript-like expressions</b>`fx [path/to/file.json] [.name]`<br><b>Parse a TOML input file into JSON</b>`fx --toml [path/to/file.toml]`<br><b>Parse a YAML input file into JSON</b>`fx --yaml [path/to/file.yaml]`


title: PARAMETERS
content:
<b><b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes the project's locked dependencies with the virtual environment. This means any packages in the virtual environment that are not in <i>poetry.lock</i> will be uninstalled, and any missing packages will be installed.<br><br><b><b>--no-root</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not install the root package (the project itself) in editable mode. Useful when you only want to install dependencies without making the project itself available as a package.<br><br><b><b>--no-dev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not install development dependencies. By default, development dependencies (defined in the <i>dev</i> group) are installed.<br><br><b><b>--only &lt;group&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install <i>only</i> the specified dependency group(s) (space-separated). Multiple groups can be provided, e.g., <b>--only main dev</b>.<br><br><b><b>--without &lt;group&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not install the specified dependency group(s) (space-separated). Multiple groups can be provided, e.g., <b>--without dev docs</b>.<br><br><b><b>--with &lt;group&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install the specified dependency group(s) (space-separated), in addition to the default dependencies. Multiple groups can be provided, e.g., <b>--with test linters</b>.<br><br><b><b>--extras &lt;extra&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install with the specified extras (space-separated). Extras provide optional features for a package, often bringing in additional dependencies.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the operations that would be performed, but do not execute them. Useful for previewing changes without modifying the environment.<br><br><b><b>--compile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile Python source files to bytecode after installation, potentially speeding up subsequent imports.<br><br><b><b>--uv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <b>uv</b> as the backend installer for faster dependency resolution and installation. <b>uv</b> must be installed and available in the PATH.<br><br>


title: DESCRIPTION
content:
The <b>poetry install</b> command reads the <i>pyproject.toml</i> file in the current directory, resolves all defined dependencies, and installs them into the project's virtual environment. If a <i>poetry.lock</i> file exists, Poetry will install the exact versions specified therein, ensuring deterministic builds across different environments.<br><br>If no <i>poetry.lock</i> file is found, <b>poetry install</b> will resolve the dependencies defined in <i>pyproject.toml</i>, install them, and then generate a new <i>poetry.lock</i> file. This command automatically creates and manages a virtual environment for your project if one doesn't already exist. It is a cornerstone of the Poetry workflow, enabling developers to quickly set up a project's required packages for development, testing, or deployment, while maintaining strict control over dependency versions.


title: CAVEATS
content:
<b>Poetry Installation:</b> This command assumes Poetry itself is already installed on your system.<br><b>Project Context:</b> Must be run from the root directory of a Poetry project containing a <i>pyproject.toml</i> file.<br><b>Network Access:</b> Requires internet access to download packages from PyPI (or configured private repositories), unless all dependencies are already cached or available locally.<br><b>Virtual Environment:</b> While Poetry manages virtual environments, conflicts can arise if manually activated environments or conflicting Python versions are used.<br><b>Resource Usage:</b> Dependency resolution can be CPU and memory intensive for projects with many dependencies or complex dependency graphs.


title: <B>VIRTUAL ENVIRONMENT MANAGEMENT</B>
content:
<b>poetry install</b> automatically detects or creates a virtual environment for your project. If no virtual environment is active or found, Poetry will create one, typically in a central location managed by Poetry or directly within the project directory (if configured with <b>virtualenvs.in-project = true</b>). All installed packages are isolated within this environment, preventing conflicts with global Python installations or other projects.


title: <B>THE <I>POETRY.LOCK</I> FILE</B>
content:
The <i>poetry.lock</i> file is crucial for deterministic builds. After <b>poetry install</b> resolves dependencies (or <b>poetry lock</b> is run), this file is generated, listing the exact versions and hashes of every package, including transitive dependencies. Subsequent runs of <b>poetry install</b> will use this file to install the *exact* same packages, ensuring consistency and reproducibility across all environments. It should always be committed to version control.


title: <B>DEPENDENCY GROUPS</B>
content:
Poetry allows organizing dependencies into groups defined in <i>pyproject.toml</i>. By default, <b>poetry install</b> installs the main dependencies and the <i>dev</i> group. Options like <b>--only</b>, <b>--with</b>, and <b>--without</b> provide granular control over which groups are installed. This is particularly useful for distinguishing between production dependencies, development tools, testing libraries, and documentation build requirements.


title: HISTORY
content:
Poetry emerged in 2018 as a response to the growing need for a more robust and consistent Python dependency management and packaging solution. It aimed to address shortcomings of traditional tools like <b>pip</b> and <i>setup.py</i> by introducing a single, declarative <i>pyproject.toml</i> file, standardizing dependency definition, and providing a powerful dependency resolver. The <b>poetry install</b> command has been central to its design from the beginning, offering deterministic dependency installations through the <i>poetry.lock</i> file, which ensures that all team members and deployment environments use the exact same package versions. Its focus on virtual environment integration and clear separation of dependency types (e.g., development vs. production) has significantly streamlined Python project workflows.


title: SEE ALSO
content:
<b>pip</b>(1), <b>pipenv</b>(1), <b>conda</b>(1), <b>poetry add</b>(1), <b>poetry update</b>(1), <b>poetry lock</b>(1), <b>poetry run</b>(1)


title: TLDR
content:
<b>Install dependencies</b>`poetry install`<br><b>Skip installing the project itself as a dependency</b>`poetry install --no-root`<br><b>Install only production dependencies</b>`poetry install --without dev`<br><b>Install optional dependenciy groups</b>`poetry install --with test,docs`


title: TLDR
content:
<b>Download attestations for a local file associated with a specific repository</b>`gh [[at|attestation]] download [path/to/artifact.bin] [[-R|--repo]] [owner]/[repo]`<br><b>Download attestations for an OCI container image associated with an organization</b>`gh [[at|attestation]] download oci://[image_uri] [[-o|--owner]] [organization_name]`<br><b>Verify a local artifact online against attestations from a specific repository</b>`gh [[at|attestation]] verify [path/to/artifact.bin] [[-R|--repo]] [owner]/[repo]`<br><b>Verify an artifact, requiring it was signed by a specific reusable workflow for enhanced security</b>`gh [[at|attestation]] verify [path/to/artifact.bin] [[-o|--owner]] [organization_name] --signer-workflow [owner]/[repo]/[path/to/workflow.yml]`<br><b>Verify an artifact and output the detailed verification results as JSON for use in policy engines</b>`gh [[at|attestation]] verify [path/to/artifact.bin] [[-o|--owner]] [organization_name] --format json`<br><b>Perform a fully offline verification using a downloaded bundle and a custom trusted root file</b>`gh [[at|attestation]] verify [path/to/artifact.bin] [[-b|--bundle]] [path/to/bundle.jsonl] --custom-trusted-root [path/to/trusted_root.jsonl]`<br><b>Save the trusted root of signing certificates to a file for offline verification</b>`gh [[at|attestation]] trusted-root > [path/to/trusted_root.jsonl]`


title: SYNOPSIS
content:
<b>npm diff</b> [<@scope>/]<pkg>[@<version>] [<@scope>/]<pkg>[@<version>]<br><b>npm diff</b> [--diff=<pkg-spec>] [--diff-path=<path>] [<diff-options>] [-- <git-diff-options>]


title: PARAMETERS
content:
<b><code>[<@scope>/]<pkg>[@<version>]</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or two package specifiers. A package specifier can be a package name, optionally prefixed with a scope (e.g., <i>@myorg/</i>) and suffixed with a version (e.g., <i>@1.2.3</i>). Used to identify specific packages or versions for comparison.<br><br><b><code>--diff=<pkg-spec></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a package to compare the current working directory files against. If the package is not installed, it will be fetched from the npm registry.<br><br><b><code>--diff-path=<path></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the diff to a specific file or directory path within the package(s) being compared. The path is relative to the package root.<br><br><b><code>--diff-ignore-untracked</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When comparing local changes, untracked files in the working directory are ignored and not included in the diff output.<br><br><b><code>--diff-cached</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares the files in the Git working directory against the Git index (staged changes). This option is only relevant when used within a Git repository.<br><br><b><code>--diff-name-only</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the names of the files that have changed, without showing the actual content differences.<br><br><b><code>--diff-unified=<n></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of context lines (<i>n</i>) to show around each change in the diff output. The default is usually 3.<br><br><b><code>--diff-color</code> / <code>--diff-no-color</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the diff output to be colored or explicitly disables colored output, respectively. Overrides default terminal settings.<br><br><b><code>--diff-base=<ref></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used when comparing within a Git repository. Specifies a Git reference (e.g., commit hash, branch name) to use as the base for the comparison.<br><br><b><code>--diff-head=<ref></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used when comparing within a Git repository. Specifies a Git reference to use as the head for the comparison.<br><br><b><code>--diff-exit-code</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <b>npm diff</b> to exit with a non-zero status code (1) if differences are found, and 0 if no differences are detected. Useful for scripting.<br><br><b><code>--</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Separates <b>npm diff</b> options from options that should be passed directly to the underlying <i>git diff</i> command. This allows full access to <i>git diff</i>'s extensive feature set.<br><br>


title: DESCRIPTION
content:
The <b>npm-diff</b> command allows developers to inspect differences between various versions of packages or between a local working directory and an installed package. It primarily serves as a wrapper around the underlying <i>git diff</i> utility, adapting its extensive functionality for comparing JavaScript packages managed by npm. Users can compare:<br><br><i><b>1. Local changes vs. installed package:</b></i> Without any arguments, <b>npm diff</b> compares the files in the current working directory with the version currently installed in <i>node_modules</i>.<br><i><b>2. Local changes vs. a specified package version:</b></i> Using <i>--diff=&lt;pkg-spec&gt;</i>, it compares local files against a specific package version, potentially fetching it from the npm registry if not locally available.<br><i><b>3. Two different package versions:</b></i> By providing two package specifiers, <b>npm diff</b> can compare the contents of two different versions of a package, typically fetched from the npm registry.<br><br>This utility is invaluable for debugging, understanding changes between package updates, or verifying the state of a package in development. It leverages <i>git diff</i>'s powerful options, which can be passed through to customize the output.


title: CAVEATS
content:
The <b>npm diff</b> command relies heavily on Git's internal diffing mechanism. Consequently, its full functionality, especially when comparing local changes, requires <i>Git</i> to be installed and properly configured on the system. If <i>Git</i> is not available or the project is not a Git repository, some comparison modes or options may not work as expected. When comparing package versions from the registry, npm might need to download package tarballs, which can incur network usage.


title: COMPARISON MODES
content:
<b>npm diff</b> intelligently determines the comparison mode based on the provided arguments:<br><ul><li><i>No arguments:</i> Compares local working directory against the installed <i>node_modules</i> version of the current package.</li><li><i>One package specifier (with <code>--diff</code>):</i> Compares local working directory against the specified package version.</li><li><i>Two package specifiers:</i> Compares the two specified package versions against each other, fetching them from the registry if necessary.</li></ul>


title: GIT INTEGRATION
content:
Many of the <b>npm diff</b> options are direct pass-throughs for <i>git diff</i>. This integration means that users familiar with <i>git diff</i> can leverage that knowledge to perform sophisticated comparisons. For advanced <i>git diff</i> options not explicitly listed, they can be passed using the <code>--</code> separator.


title: HISTORY
content:
The <b>npm diff</b> command was introduced as part of <i>npm v7.0.0</i> in October 2020. Its inclusion aimed to provide developers with a native npm way to compare package files, simplifying workflows that previously might have required manual package extraction and external diff tools or complex Git commands. It standardized the process of examining changes between package versions or local modifications.


title: TLDR
content:
<b>Compare two specific package versions</b>`npm diff --diff [package_name]@[version1] --diff [package_name]@[version2]`<br><b>Compare current local packages with latest published version</b>`npm diff`<br><b>Compare current local package with a specific version</b>`npm diff --diff [package_name]@[version]`<br><b>Compare a package in the current directory with the registry version</b>`npm diff --diff [package_name]`<br><b>Show only filenames that differ</b>`npm diff --diff-name-only --diff [package_name]@[version1] --diff [package_name]@[version2]`<br><b>Compare specific files or directories only</b>`npm diff [path/to/file_or_directory] --diff [package_name]@[version1] --diff [package_name]@[version2]`<br><b>Ignore whitespace when comparing</b>`npm diff --diff-ignore-all-space --diff [package_name]@[version1] --diff [package_name]@[version2]`


title: SYNOPSIS
content:
pip download [options] <i><package_name></i>...<br>pip download [options] <b>-r</b> <i><requirements_file></i>


title: PARAMETERS
content:
<b><b>-d</b> <i><dir></i>, <b>--dest</b> <i><dir></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download packages into the specified <i><dir></i>. Defaults to the current working directory.<br><br><b><b>--no-deps</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not download package dependencies; only download the specified top-level package(s).<br><br><b><b>-r</b> <i><file></i>, <b>--requirement</b> <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download all packages listed in the given requirements file. Each line in the file should specify a package.<br><br><b><b>--platform</b> <i><platform></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only download wheels compatible with the specified platform (e.g., <i>linux_x86_64</i>, <i>win_amd64</i>). Use with <b>--python-version</b> for cross-platform downloads.<br><br><b><b>--python-version</b> <i><version></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only download wheels compatible with the specified Python version (e.g., <i>3.8</i>, <i>27</i>). Can be specified multiple times.<br><br><b><b>--implementation</b> <i><impl></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only download wheels compatible with the specified Python implementation (e.g., <i>cp</i> for CPython, <i>pp</i> for PyPy). Can be specified multiple times.<br><br><b><b>--abi</b> <i><abi></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only download wheels compatible with the specified ABI (e.g., <i>cp38</i>, <i>abi3</i>). Can be specified multiple times.<br><br><b><b>--no-binary</b> <i><package></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use pre-built binary packages (wheels) for <i><package></i>. Forces downloading source distributions. Use <i>:all:</i> to apply to all packages.<br><br><b><b>--only-binary</b> <i><package></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use source distributions for <i><package></i>. Forces downloading wheels. Use <i>:all:</i> to apply to all packages.<br><br><b><b>-i</b> <i><url></i>, <b>--index-url</b> <i><url></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Base URL of the Python Package Index (default: <i>https://pypi.org/simple</i>). Used to find packages.<br><br><b><b>--extra-index-url</b> <i><url></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extra URLs of package indexes to use in addition to <b>--index-url</b>. Can be specified multiple times.<br><br><b><b>--pre</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include pre-release and development versions when searching for packages. By default, pip only considers stable versions.<br><br><b><b>--progress-bar</b> <i><fmt></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the type of progress bar: <i>on</i>, <i>off</i>, <i>ascii</i>, <i>emoji</i>, <i>pretty</i>.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Give more output, displaying debugging information.<br><br>


title: DESCRIPTION
content:
The `pip download` command fetches Python packages and their dependencies from the Python Package Index (PyPI) or other configured repositories and saves them to a local directory without performing an installation. This functionality is invaluable for creating an offline cache of packages, preparing distributions for air-gapped environments, or populating local package mirrors. It can download various distribution formats, including source distributions (e.g., `.tar.gz`) and pre-compiled binary wheels (`.whl`), allowing users to control the type of package fetched based on the target environment's needs. Unlike `pip install`, `pip download` focuses solely on acquiring the package files, making it a critical step in a robust package management workflow for complex or restricted setups.


title: CAVEATS
content:
<i>1. Environment Specificity:</i> `pip download` by default attempts to download packages compatible with the <b>current</b> Python environment. For downloading packages intended for a <b>different</b> environment (e.g., a different OS or Python version), it is crucial to use explicit options like <b>--platform</b>, <b>--python-version</b>, and <b>--implementation</b>.<br><i>2. No Installation:</i> This command only downloads distribution files. It does not perform any installation, compile C extensions, or run setup scripts. The downloaded files still need to be installed later using `pip install --no-index --find-links <download_dir>`.<br><i>3. Dependency Resolution:</i> While `pip download` resolves and downloads dependencies by default, it does so based on the download environment's interpretation of metadata. Ensure that the options used accurately reflect the target installation environment to avoid missing or incompatible dependencies.


title: COMMON USE CASES
content:
<i>1. Offline Deployments:</i> Download all required packages and their dependencies to a directory, then transfer them to an isolated environment for installation.<br><i>2. Reproducible Builds:</i> Cache specific versions of packages locally to ensure consistent build environments across development, testing, and production.<br><i>3. Populating Local PyPI Mirrors:</i> Use `pip download` to fetch packages and then populate a local simple HTTP server that acts as a private PyPI mirror.<br><i>4. Cross-Platform Packaging:</i> By leveraging options like <b>--platform</b> and <b>--python-version</b>, developers can download wheels for target systems different from their current development environment.


title: DOWNLOADING SPECIFIC FORMATS
content:
By default, `pip download` prefers wheels (`.whl`) if available, then falls back to source distributions (`.tar.gz`, `.zip`). You can control this behavior with: <br><i><b>--no-binary :all:</b></i> to force downloading only source distributions for all packages. <br><i><b>--only-binary :all:</b></i> to force downloading only wheels for all packages.


title: HISTORY
content:
The `pip` command-line tool, a successor to `easy_install`, emerged around 2008 as the preferred package installer for Python. The `download` subcommand was specifically introduced to address the growing need for offline package management and reproducible builds. This became vital for scenarios involving air-gapped systems, corporate networks with restricted internet access, or the creation of local package mirrors, allowing users to pre-fetch and curate package distributions before deployment. Its development aligned with `pip`'s overall goal to provide more robust and reliable package management capabilities for the Python ecosystem.


title: TLDR
content:
<b>Download a package wheel or source archive to the current directory</b>`pip download [package]`<br><b>Download a specific version of a package</b>`pip download [package]==[version]`<br><b>Download a package and its dependencies to a specific directory</b>`pip download [package] [[-d|--dest]] [path/to/directory]`<br><b>Download a package for a specific platform and Python version</b>`pip download [package] --only-binary :all: --platform [platform] --python-version [version]`<br><b>Download a package from a specific index URL</b>`pip download [package] [[-i|--index-url]] [url]`


title: TLDR
content:
<b>Show the directory where PostgreSQL binaries are installed</b>`pg_config --bindir`<br><b>Show the directory for library files</b>`pg_config --libdir`<br><b>Show the directory for include files (C headers)</b>`pg_config --includedir`<br><b>Show the directory for shared data files</b>`pg_config --sharedir`<br><b>Show the directory for locale data</b>`pg_config --localedir`<br><b>Display help</b>`pg_config [[-?|--help]]`<br><b>Display version</b>`pg_config --version`


title: TLDR
content:
<b>Download a song by name (with interactive selection)</b>`ytmdl [song_name]`<br><b>Download the first result without prompting</b>`ytmdl [[-q|--quiet]] [song_name]`<br><b>Download a song to a specific directory</b>`ytmdl [[-o|--output-dir]] [path/to/directory] [song_name]`<br><b>Download a song from a YouTube URL</b>`ytmdl --url https://www.youtube.com/watch?v=[oHg5SJYRHA0]`<br><b>Download a song in a specific format (mp3, m4a, or opus)</b>`ytmdl --format [mp3|m4a|opus] [song_name]`<br><b>Download a song with artist and album information</b>`ytmdl --artist [artist_name] --album [album_name] [song_name]`<br><b>Download a list of songs from a text file</b>`ytmdl --list [path/to/list.txt]`<br><b>Display help</b>`ytmdl [[-h|--help]]`


title: TLDR
content:
<b>Export the entire Git repository history to stdout</b>`git fast-export --all`<br><b>Export the entire repository to a file</b>`git fast-export --all > [path/to/file]`<br><b>Export a specific branch only</b>`git fast-export [main]`<br><b>Export with progress statements every n objects (for showing progress during git fast-import)</b>`git fast-export --progress [n] --all > [path/to/file]`<br><b>Export only a specific subdirectory's history</b>`git fast-export --all -- [path/to/directory] > [path/to/file]`


title: PARAMETERS
content:
<b><i>(No specific parameters)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b><I>start-server</I></b> subcommand itself does not accept any specific parameters or arguments unique to its operation. Any options provided would typically be global <b><I>adb</I></b> options that affect the client's behavior (e.g., <b><I>-P <port></I></b> or <b><I>-H <host></I></b>), not the server startup process directly.<br><br>


title: DESCRIPTION
content:
The <b><I>adb start-server</I></b> command explicitly initiates the Android Debug Bridge (ADB) server daemon on your host machine. This server is a crucial background process that mediates communication between the ADB client (the command-line tool you interact with) and Android devices or emulators. When you execute any <b><I>adb</I></b> command that requires interaction with a device, the ADB client first checks if the server is running. If not, it attempts to start it automatically. However, <b><I>adb start-server</I></b> allows for manual control over this process.<br><br>The server listens on a specific TCP port (defaulting to 5037) for client connections and manages all device-side communication, including installing apps, copying files, executing shell commands, and debugging. Starting the server is often the first troubleshooting step when facing connection issues with Android devices, ensuring that the necessary communication channel is established.


title: CAVEATS
content:
<ul><li><b><I>Server Already Running</I></b>: If the ADB server is already active, executing <b><I>adb start-server</I></b> will typically report that the server is already running and do nothing further.</li><li><b><I>Port Conflicts</I></b>: The ADB server defaults to TCP port 5037. If another application is already using this port, the server will fail to start. You might need to identify and terminate the conflicting process.</li><li><b><I>Firewall Restrictions</I></b>: Firewalls on the host machine can block the ADB server from listening on its port or prevent client connections. Ensure port 5037 is open for local connections.</li><li><b><I>Permissions</I></b>: The user executing the command must have sufficient permissions to start a process and listen on the specified port.</li><li><b><I>Distinction for 'adb-start-server'</I></b>: The prompt mentions 'adb-start-server'. It's important to note that <b><I>adb start-server</I></b> (with a space) is the standard subcommand of the <b><I>adb</I></b> utility. An executable named `adb-start-server` is not part of the official Android SDK Platform Tools. If such a command exists on your system, it is likely a custom script or wrapper that internally calls <b><I>adb start-server</I></b>. This analysis focuses on the behavior of the official <b><I>adb start-server</I></b> subcommand.</li></ul>


title: DEFAULT PORT AND AUTOMATIC STARTUP
content:
The ADB server typically listens on TCP port 5037. While <b><I>adb start-server</I></b> allows for manual initiation, the ADB client is designed to automatically start the server if it detects it's not running when any command requiring server interaction is executed (e.g., <b><I>adb devices</I></b>). This automatic behavior simplifies usage for most users, making manual intervention often unnecessary unless troubleshooting is required.


title: SERVER AND CLIENT VERSIONS
content:
It's generally recommended to keep your ADB client and server versions synchronized. Mismatches can sometimes lead to unexpected behavior or connection issues. The <b><I>adb version</I></b> command can be used to check the version of the client, which also starts the server if necessary, ensuring a compatible environment.


title: HISTORY
content:
The Android Debug Bridge (ADB) has been an integral part of Android development since its early days. Introduced alongside the Android SDK, its core functionality, including the server-client architecture, has remained largely consistent. The ability to explicitly start the server using <b><I>adb start-server</I></b> has always been available, providing developers and power users with fine-grained control over the debugging environment. Its evolution is tied directly to the growth of the Android platform, adapting to new device types, connection methods (USB, Wi-Fi), and security features.


title: SEE ALSO
content:
<b><I>adb</I></b>(1) - The main Android Debug Bridge command-line tool., <b><I>adb kill-server</I></b> - Stops the running ADB server daemon., <b><I>adb devices</I></b> - Lists connected Android devices and emulators, often triggering a server start if it's not running.


title: PARAMETERS
content:
<b><b>create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Creates</i> a new container group. This is the primary subcommand for deploying containers, requiring essential parameters like image name, resource group, and container group name. Additional options allow configuration of CPU, memory, ports, and networking.<br><br><b><b>show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Retrieves</i> the detailed configuration and status of a specific container group, identified by its name and resource group.<br><br><b><b>delete</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deletes</i> one or more container groups, releasing all associated resources and stopping running containers.<br><br><b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists</i> all container groups within a specified resource group or across an entire Azure subscription, providing an overview of deployments.<br><br><b><b>logs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Fetches</i> the logs for a specific container instance within a container group, enabling real-time monitoring and debugging.<br><br><b><b>exec</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Executes</i> a command directly inside a running container instance, useful for interactive debugging or administrative tasks.<br><br><b><b>restart</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Restarts</i> all containers within a specified container group, often used for applying configuration changes or resolving transient issues.<br><br><b><b>update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Updates</i> properties of an existing container group, such as environmental variables, without needing to recreate the entire group.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays</i> help information for the <b>az container</b> group or a specific subcommand, detailing available options and usage.<br><br><b><b>--output</b> <I>format</I>, <b>-o</b> <I>format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets</i> the output format for the command's result (e.g., <code>json</code>, <code>table</code>, <code>tsv</code>), useful for scripting and automation.<br><br><b><b>--query</b> <I>jmespath</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Applies</i> a JMESPath query to filter and transform the output of a command, allowing users to extract specific data efficiently.<br><br>


title: DESCRIPTION
content:
The <b>az container</b> command, part of the <I>Azure Command-Line Interface (CLI)</I>, provides a robust set of tools for managing <I>Azure Container Instances (ACI)</I> directly from your terminal. ACI allows developers to deploy Docker containers quickly and easily without the need to provision, manage, or scale underlying virtual machines. This command group is essential for serverless container workloads, simple applications, and task automation. Users can leverage <b>az container</b> to create new container groups, manage their lifecycle (start, stop, delete), monitor logs, and execute commands within running containers. It integrates seamlessly with other Azure services and offers a cost-effective, pay-per-second billing model. Its simplicity makes it an excellent choice for scenarios where full container orchestration, like Kubernetes, might be an overkill, providing instant deployment and scaling capabilities for individual containers or small container groups.


title: CAVEATS
content:
Azure Container Instances (ACI) are primarily designed for stateless applications and burst workloads. While persistent storage can be mounted (e.g., Azure Files), it's not a full-fledged orchestration platform like Kubernetes and may not be suitable for complex microservice architectures requiring advanced service discovery or load balancing. Pricing is based on actual usage, so costs can accrue quickly if resources are over-provisioned or left running unnecessarily.


title: PRICING MODEL
content:
ACI employs a pay-per-second billing model, where users are charged for the duration their container groups are running, based on allocated CPU and memory resources. This granular billing makes it cost-effective for intermittent workloads but requires careful resource allocation to avoid unexpected costs.


title: NETWORKING CAPABILITIES
content:
Container groups can be deployed with a public IP address for internet accessibility or integrated into an Azure Virtual Network (VNet) for secure, private communication with other Azure resources and on-premises networks. This flexibility allows for diverse application architectures, from public-facing web apps to internal microservices.


title: HISTORY
content:
Azure Container Instances (ACI) was introduced by Microsoft to address the need for a faster, simpler way to run containers in the cloud without managing underlying infrastructure. It aimed to bridge the gap between running containers locally and deploying them to full-scale orchestrators like Azure Kubernetes Service (AKS). Over time, <b>az container</b> and the ACI service have evolved to support various operating systems (Linux, Windows), GPU-enabled containers, and advanced networking features like VNET integration, continuously enhancing its utility for serverless container deployments and event-driven architectures.


title: TLDR
content:
<b>Create a container in a container group</b>`az container create [[-g|--resource-group]] [resource_group] [[-n|--name]] [name] --image [image_name] [[-os|--os-type]] [windows|linux] --cpu [number_of_CPU_cores] --memory [memory_in_GB]`<br><b>Execute a command from within a running container of a container group</b>`az container exec [[-g|--resource-group]] [resource_group] [[-n|--name]] [container_group_name] --exec-command "[command]"`<br><b>Examine the logs of a container in a container group</b>`az container logs [[-n|--name]] [name] [[-g|--resource-group]] [resource_group]`<br><b>Get the details of a container group</b>`az container show [[-n|--name]] [name] [[-g|--resource-group]] [resource_group]`<br><b>Start all containers in a container group</b>`az container start [[-n|--name]] [name] [[-g|--resource-group]] [resource_group]`<br><b>Stop all containers in a container group</b>`az container stop [[-n|--name]] [name] [[-g|--resource-group]] [resource_group]`<br><b>Delete a container group</b>`az container delete [[-n|--name]] [name] [[-g|--resource-group]] [resource_group]`


title: TLDR
content:
<b>Install a package from <https://crates.io></b>`cargo binstall [package]`<br><b>Install a specific version of a package (latest by default)</b>`cargo binstall [package]@[version]`<br><b>Install a package and disable confirmation prompts</b>`cargo binstall [[-y|--no-confirm]] [package]`


title: SYNOPSIS
content:
<b>clusterdb</b> [<I>connection options</I>] [<I>options</I>] [<I>dbname</I>]<br><b>clusterdb</b> [<I>connection options</I>] [<I>options</I>] <b>--all</b>


title: PARAMETERS
content:
<b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cluster all databases accessible by the specified user, except template databases. Only tables that have a cluster index defined will be processed.<br><br><b><b>-d</b> <I>dbname</I>, <b>--dbname=</b><I>dbname</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the database to cluster. If not specified and <b>--all</b> is not used, the database name is read from the <I>PGDATABASE</I> environment variable, or defaults to the user name.<br><br><b><b>-e</b>, <b>--echo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Echo the SQL commands that <b>clusterdb</b> generates and sends to the server. This is useful for debugging or understanding the underlying operations.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display progress messages. Only error messages will be shown.<br><br><b><b>-t</b> <I>table</I>, <b>--table=</b><I>table</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cluster only the specified table. Multiple <b>-t</b> switches can be given to cluster multiple tables. If used with <b>--all</b>, <b>-t</b> specifies tables to cluster in each database.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose output, including detailed progress messages and the names of tables being clustered.<br><br><b><b>-z</b>, <b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the commands that would be executed, but do not actually run them. This is useful for testing and planning without making changes.<br><br><b><b>--maintenance-db=</b><I>dbname</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When <b>--all</b> is specified, this option specifies the database to connect to in order to discover other databases. If not specified, defaults to <I>postgres</I> or the user's name.<br><br><b><b>--cluster-options=</b><I>options</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass options directly to the underlying <I>CLUSTER</I> SQL command. For example, <b>--cluster-options=FREEZE</b> to freeze all rows in the newly written table.<br><br><b><b>-h</b> <I>host</I>, <b>--host=</b><I>host</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server host name or socket directory. If this value begins with a slash, it is used as the directory for the Unix domain socket.<br><br><b><b>-p</b> <I>port</I>, <b>--port=</b><I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server port number for the connection.<br><br><b><b>-U</b> <I>username</I>, <b>--username=</b><I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect as the specified database user. If not specified, defaults to the operating system user name.<br><br><b><b>-w</b>, <b>--no-password</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Never prompt for password. Useful for non-interactive scripts where a password is provided via environment variables or a password file.<br><br><b><b>-W</b>, <b>--password</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force password prompt. Useful when password authentication is expected but a password is not provided in other ways.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message and exit, providing a summary of command-line arguments.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br>


title: DESCRIPTION
content:
The <b>clusterdb</b> command is a utility provided with PostgreSQL that re-clusters tables within a database. Clustering a table means physically reordering its data on disk according to an index, typically a primary key or a frequently used index. This process can significantly improve query performance, especially for queries involving range scans, sequential scans, or joins where data locality is crucial.<br><br>When data is frequently updated, deleted, or inserted, the physical order of rows can diverge from the logical order defined by an index. This 'data fragmentation' can lead to increased disk I/O as the database has to jump between different physical locations to retrieve logically contiguous data. <b>clusterdb</b> helps rectify this by rebuilding the table in the desired index order.<br><br>Essentially, <b>clusterdb</b> is a convenient wrapper around the SQL command <I>CLUSTER</I>. It allows administrators to cluster all previously clustered tables in a database, all tables in all databases, or a specific table, without needing to connect to <I>psql</I> and execute individual <I>CLUSTER</I> commands. It connects to the PostgreSQL server and issues the necessary <I>CLUSTER</I> commands, simplifying maintenance tasks.


title: CAVEATS
content:
Clustering a table requires an <I>ACCESS EXCLUSIVE</I> lock on that table, which means it will block all other read and write operations on the table until the clustering is complete. This can lead to significant downtime for large tables and active systems. Therefore, <b>clusterdb</b> should typically be run during maintenance windows or periods of low activity. The operation also requires temporary disk space roughly equal to the size of the table being clustered, as it creates a new copy of the table. Only tables that have previously been clustered using the SQL <I>CLUSTER</I> command or an index created <I>WITH (CLUSTER)</I> will be processed by default; otherwise, it will report that the table has no cluster index.


title: WHEN TO USE CLUSTER
content:
Clustering is most beneficial for tables that experience frequent sequential scans, range scans, or join operations on the clustered index. If the physical order of data has significantly deviated from the index order due to heavy INSERT/UPDATE/DELETE activity, re-clustering can dramatically reduce disk I/O and improve cache hit rates. It's often considered after a significant amount of data modification, or if query plans indicate high costs related to table scans that would benefit from sorted data. Regular monitoring of table statistics and query performance helps determine if and when clustering is necessary.


title: PERFORMANCE IMPLICATIONS
content:
A well-clustered table can lead to faster data retrieval because related data rows are stored close together on disk. This reduces the number of disk pages that need to be read, improves CPU cache utilization, and minimizes random I/O, leading to better overall query performance for affected queries. However, the clustering process itself is resource-intensive, requiring considerable CPU and I/O resources during its execution. The trade-off between the maintenance overhead and the potential query performance gain should be carefully evaluated for each specific workload and table.


title: HISTORY
content:
<b>clusterdb</b> has been a foundational part of the PostgreSQL client utility suite for many years, evolving alongside the database system itself. Its primary function as a convenient command-line wrapper for the SQL <I>CLUSTER</I> command has remained consistent. It provides database administrators with an essential tool for managing data organization and optimizing query performance, particularly in scenarios where data skew or fragmentation significantly impacts I/O efficiency. Over time, options like <I>--dry-run</I> and <I>--maintenance-db</I> have been added to enhance its usability, provide greater control, and integrate better into automated maintenance scripts.


title: TLDR
content:
<b>Cluster a specific database</b>`clusterdb [database_name]`<br><b>Cluster all databases</b>`clusterdb [[-a|--all]]`<br><b>Cluster a specific table in a database</b>`clusterdb [[-t|--table]] [table_name] [database_name]`


title: TLDR
content:
<b>Compute distances from a given source node in a graph file</b>`dijkstra [source_node_file]`<br><b>Treat the graph as [d]irected when computing distances</b>`dijkstra -d [source_node_file]`<br><b>Record the [p]revious closest node for each node on the shortest path</b>`dijkstra -p [source_node_file]`<br><b>[a]ssign large distance values to unreachable nodes</b>`dijkstra -a [source_node_file]`


title: PARAMETERS
content:
<b><b>-?</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief usage message for <b>dotty</b> and then exits the program.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of the <b>dotty</b> command and then exits.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables client-server mode for <b>dotty</b>. In this mode, <b>dotty</b> can communicate with other processes or instances, allowing for external control or dynamic graph manipulation.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates verbose output. This provides more detailed information during execution, which can be useful for debugging or understanding <b>dotty</b>'s internal operations.<br><br><b><i>file...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more graph files to be loaded into <b>dotty</b>. These files should be in the DOT language format. If no files are provided, <b>dotty</b> will attempt to read graph data from standard input.<br><br>


title: DESCRIPTION
content:
<b>dotty</b> is an interactive graph visualization tool, a core component of the open-source Graphviz suite. It specializes in viewing and editing graphs specified in the DOT language. Unlike static layout generators like <b>dot</b>, <b>dotty</b> provides a graphical user interface built upon <i>lefty</i> and Tcl/Tk, enabling users to load graph files, visualize their layouts, and interactively manipulate nodes and edges. It offers features like zooming, panning, and selecting graph elements, making it an invaluable tool for debugging graph specifications, experimenting with different layout parameters, or exploring large, intricate graph structures where a static image might not suffice. Its interactive nature significantly enhances the process of understanding and refining graph visualizations.


title: CAVEATS
content:
<b>dotty</b> requires an X Window System environment to run, as it is a graphical application and does not function in purely text-based terminals. Performance can be significantly impacted when dealing with extremely large or highly complex graphs, leading to slower rendering and interactive response times. While it allows interactive changes, these modifications are not automatically saved to the original DOT file; users must explicitly export their changes. Its initial layout quality is dependent on the underlying Graphviz layout engine (e.g., <b>dot</b>) used to generate the graph structure.


title: GRAPHICAL USER INTERFACE (GUI)
content:
<b>dotty</b> provides a rich GUI, offering functionalities like zooming, panning, node/edge selection, attribute inspection, and interactive modification of graph elements. This visual interaction is a primary distinction from command-line tools.


title: CLIENT-SERVER MODE
content:
The <b>-c</b> option enables <b>dotty</b> to operate as a server. This allows other programs or scripts to dynamically send graph data to it for visualization, or to programmatically request graph manipulations, facilitating integration into larger interactive systems.


title: DOT LANGUAGE SUPPORT
content:
<b>dotty</b> natively supports and interprets the DOT language, the standard textual graph description language used by all Graphviz tools. This ensures seamless interoperability and consistent interpretation within the entire Graphviz ecosystem.


title: HISTORY
content:
<b>dotty</b> emerged as a key component of the Graphviz (Graph Visualization Software) project, initiated at AT&T Bell Labs (later AT&T Labs Research) in the mid-1990s. Graphviz was developed to automate graph drawing. While <b>dot</b> served as the foundational command-line tool for generating static layouts, the need for an interactive environment to explore, debug, and fine-tune these graphs led to the creation of <b>dotty</b>. It leveraged <i>lefty</i>, a programmable graphics editor, and Tcl/Tk for its user interface, providing real-time interaction crucial for analyzing complex graph structures and extending graph visualization beyond static image generation.


title: TLDR
content:
<b>Open a graph file (.gv or .dot) in the Dotty editor</b>`dotty [path/to/graph.gv]`<br><b>Start Dotty with the [V]ersion information displayed</b>`dotty -V`<br><b>Set the [l]ayout [m]ode to synchronous or asynchronous</b>`dotty -lm [sync|async] [path/to/graph.gv]`<br><b>Set the m[e]ssage verbosity [l]evel (0 for minimal, 1 for detailed)</b>`dotty -el [0|1] [path/to/graph.gv]`


title: PARAMETERS
content:
<b>--aggressive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Packs all loose objects into a single packfile with an aggressive packing strategy, which can result in a smaller packfile but takes significantly longer. Useful for long-term storage or highly optimized repositories.<br><br><b>--auto</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs garbage collection only if the value of the <b>gc.auto</b> configuration variable (or the default threshold) indicates that it's due. This is the default behavior when Git triggers <b>gc</b> automatically.<br><br><b>--prune=<I>date</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prunes (deletes) all unreachable objects older than the specified date. If not specified, the default is 2 weeks. Use <b>--prune=now</b> to prune all unreachable objects immediately.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all progress messages and reports during the garbage collection process, only showing errors.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>gc</b> to run even if <b>gc.auto</b> threshold is not met. Useful when you want to explicitly run a full garbage collection regardless of Git's auto-detection.<br><br><b>--no-prune</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables pruning of unreachable objects. Useful if you want to repack objects but retain all unreachable objects.<br><br>


title: DESCRIPTION
content:
The <b>gc</b> command in Git (invoked as <b>git gc</b>) performs garbage collection on the current repository. Its primary function is to clean up unnecessary files and pack Git repository data, which helps in optimizing performance and saving disk space.<br><br>When you commit, branch, or perform other operations in Git, some objects (like old commits, deleted branches, or unreachable objects) might become 'loose' or unreferenced. <b>git gc</b> identifies and removes these unreferenced objects and packs remaining loose objects into packfiles. Packfiles are more efficient for storage and retrieval, especially for large numbers of objects. This process makes the repository smaller and faster for future operations.<br><br>While often run automatically by Git after certain operations (like <b>git commit</b> or <b>git merge</b>), it can also be invoked manually for thorough cleanup or specific optimization needs. It's a fundamental maintenance command for any Git user.


title: CAVEATS
content:
Running <b>git gc --aggressive</b> on very large repositories can consume significant CPU and memory resources and take a long time to complete. It is generally not recommended to run <b>git gc</b> while other Git operations that might create new objects or modify refs (e.g., pushes, fetches, merges) are in progress, as it could lead to inconsistencies or data loss if not handled carefully.


title: AUTOMATIC GARBAGE COLLECTION
content:
Git often runs <b>git gc --auto</b> automatically after certain operations to keep the repository in good shape without explicit user intervention. This behavior is controlled by configuration variables like <b>gc.auto</b> (which sets the threshold for loose objects before auto-gc runs) and <b>gc.autoPackLimit</b> (for controlling the number of packfiles).


title: LOOSE OBJECTS VS. PACKFILES
content:
Git stores objects (blobs, trees, commits, tags) either as 'loose objects' (individual files) or within 'packfiles' (compressed archives of multiple objects). Loose objects are easier to create quickly, but packfiles are more efficient for storage and network transfer. <b>git gc</b>'s main task is to convert loose objects into packfiles and consolidate existing packfiles, improving overall repository efficiency.


title: HISTORY
content:
Garbage collection has been an integral part of Git since its early days. As a distributed version control system designed for efficiency and integrity, the ability to maintain repository health and optimize storage was crucial. The <b>git gc</b> command evolved to manage the lifecycle of Git objects, ensuring that repositories remain performant and free of unnecessary clutter, reflecting Git's continuous focus on robust and efficient data management.


title: TLDR
content:
<b>Count nodes and edges in a file</b>`gc [path/to/file.dot]`<br><b>Count only [n]odes</b>`gc -n [path/to/file.dot]`<br><b>Count only [e]dges</b>`gc -e [path/to/file.dot]`<br><b>Count [c]onnected components</b>`gc -c [path/to/file.dot]`<br><b>Display help</b>`gc -?`


title: SYNOPSIS
content:
<b>gh a11y check</b> <I>pr-number | pr-url</I> [<i>options</i>]<br><b>gh a11y run</b> [<i>options</i>]<br><b>gh a11y</b> <I>command</I> [<i>flags</i>]


title: PARAMETERS
content:
<b>--pr <number | URL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the pull request number or URL to analyze.<br><br><b>--repo <owner/repo></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the GitHub repository (e.g., <i>octocat/Spoon-Knife</i>).<br><br><b>--comment</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Post accessibility results as a comment directly on the pull request.<br><br><b>--web-report</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a detailed HTML accessibility report with the findings.<br><br><b>--fail-on-issue</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit with a non-zero status code if any accessibility issues are detected.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the accessibility results in a machine-readable JSON format.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose logging, useful for debugging and detailed output.<br><br><b>--only-changes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the scan to only the files that have been modified in the pull request.<br><br><b>--tags <tags></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of <i>axe-core</i> tags (e.g., <i>wcag2a,wcag21aa</i>) to include in the scan.<br><br><b>--exclude-tags <tags></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of <i>axe-core</i> tags to exclude from the scan.<br><br><b>--rules <rules></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of specific <i>axe-core</i> rules to include.<br><br><b>--exclude-rules <rules></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of specific <i>axe-core</i> rules to exclude.<br><br>


title: DESCRIPTION
content:
<i>gh-a11y</i> is a GitHub CLI extension that helps contributors and maintainers identify accessibility issues in pull requests before they are merged. It scans the rendered HTML of a pull request's changed files using tools like <i>axe-core</i>. The extension can be configured to run automatically as a GitHub Action or manually via the CLI, providing feedback directly in the PR timeline. Its primary goal is to shift left accessibility testing, making it easier to catch and fix issues early in the development cycle, thereby improving the overall accessibility of web projects hosted on GitHub.


title: CAVEATS
content:
Requires a headless browser (like Chromium/Chrome) to be installed and accessible on the system. It also relies on a GitHub token with sufficient permissions (e.g., <i>pulls</i> scope for commenting) to interact with repositories. Performance might vary with the size and complexity of the pull request changes.


title: INSTALLATION
content:
To install <i>gh-a11y</i>, use the GitHub CLI extension command:<br><b>gh extension install github/gh-a11y</b>


title: INTEGRATION WITH GITHUB ACTIONS
content:
<i>gh-a11y</i> can be seamlessly integrated into a project's CI/CD pipeline as a GitHub Action, enabling automated accessibility checks on every pull request, providing immediate feedback to contributors.


title: UNDERLYING TECHNOLOGY
content:
The extension uses <i>axe-core</i>, a leading accessibility testing engine, to evaluate HTML against a set of accessibility rules. It renders the pull request's HTML content in a headless browser (e.g., Chromium) to perform dynamic analysis.


title: HISTORY
content:
<i>gh-a11y</i> was developed by GitHub to address the growing need for earlier detection of accessibility issues in the software development workflow. Its creation leverages the extensibility of the GitHub CLI, providing a native and integrated experience for developers. It represents GitHub's commitment to fostering accessible development practices, aiming to empower teams to build more inclusive web applications by embedding accessibility checks directly into the pull request review process.


title: TLDR
content:
<b>Show checks for the pull request of the current branch</b>`gh pr checks`<br><b>Show checks for a specific pull request</b>`gh pr checks [pr_number]`<br><b>Watch checks and update in real time until completion</b>`gh pr checks [pr_number] --watch`<br><b>Show only required checks</b>`gh pr checks [pr_number] --required`


title: SYNOPSIS
content:
<b>gh project</b> <i>&lt;command&gt;</i> [<i>&lt;arguments&gt;</i>] [<i>&lt;flags&gt;</i>]<br><b>gh project item</b> <i>&lt;subcommand&gt;</i> [<i>&lt;arguments&gt;</i>] [<i>&lt;flags&gt;</i>]<br><b>gh project field</b> <i>&lt;subcommand&gt;</i> [<i>&lt;arguments&gt;</i>] [<i>&lt;flags&gt;</i>]<br><br>Examples:<br><i>gh project list --owner monalisa<br>gh project view 1 --owner github<br>gh project create --title "New Initiative" --org octocats<br>gh project item add 123 --url https://github.com/cli/cli/issues/4567</i>


title: PARAMETERS
content:
<b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help for the command or subcommand.<br><br><b><b>--owner</b> <i>&lt;login&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the login of the user or organization that owns the project. Required for some commands if not run from a repository context, or to specify projects not owned by the current user/repo.<br><br><b><b>--org</b> <i>&lt;login&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <b>--owner</b> <i>&lt;login&gt;</i> when the project owner is an organization.<br><br><b><b>--limit</b> <i>&lt;number&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the number of results returned, useful for commands like <b>list</b>.<br><br><b><b>--format</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print output in a specific format using a Go template string.<br><br><b><b>--jq</b> <i>&lt;expression&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter JSON output using a <i>jq</i> expression.<br><br><b><b>--web</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Open the project in the default web browser. Applicable with commands like <b>view</b>.<br><br><b><b>--title</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the title for a new project or when editing an existing one.<br><br><b><b>--body</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide a description or body content for a new project or when editing.<br><br><b><b>--url</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the URL of an item (e.g., issue, pull request, draft issue) to add to a project.<br><br>


title: DESCRIPTION
content:
<i>gh project</i> is a powerful subcommand of the GitHub CLI (<i>gh</i>) designed for comprehensive management of GitHub Projects directly from the terminal. It provides a full suite of functionalities for project lifecycle management, including creating, listing, viewing, editing, closing, reopening, and deleting projects. Beyond core project management, <i>gh project</i> enables detailed manipulation of project items—such as issues, pull requests, and draft items—through subcommands like <b>item add</b>, <b>item list</b>, <b>item edit</b>, <b>item archive</b>, and <b>item delete</b>. Furthermore, it supports managing custom fields within projects, allowing users to <b>field list</b>, <b>field create</b>, <b>field view</b>, <b>field edit</b>, and <b>field delete</b> project fields. This command streamlines project workflows by integrating seamlessly into the developer's terminal environment, significantly enhancing productivity for individuals and teams leveraging GitHub's project boards.


title: CAVEATS
content:
Using <i>gh project</i> requires the GitHub CLI to be installed and properly authenticated with GitHub (via <i>gh auth login</i>). Project operations are tightly coupled with GitHub's Project API v2, which may have specific data structures and limitations. Users must possess appropriate permissions on the repository, organization, or user account to manage projects. All operations require an active internet connection to GitHub.


title: AUTHENTICATION
content:
All <i>gh project</i> operations rely on an authenticated session with GitHub. Users must first authenticate using the <b>gh auth login</b> command, which stores credentials for subsequent CLI operations.


title: PROJECT VERSIONING
content:
<i>gh project</i> primarily interacts with GitHub's newer Projects V2. While it can list classic projects, most item and field manipulation features are designed for the advanced capabilities of the Projects V2 system. Be aware of which project version you are targeting.


title: OWNER SPECIFICATION
content:
Many <i>gh project</i> commands, especially those for creating or modifying projects, require explicit specification of the project's owner (a user or an organization) using the <b>--owner</b> or <b>--org</b> flags. This is crucial when operating outside of a specific repository context or when managing projects not owned by the authenticated user.


title: HISTORY
content:
The <i>gh project</i> command was introduced as a core component of the GitHub CLI to provide a native command-line interface for managing GitHub's evolving Project features. Its development directly addresses the newer, more powerful Projects V2 (often referred to as 'Projects (beta)' during its development phase), which offer flexible table-based project boards. The command's inclusion aligns with GitHub's broader strategy to enable more development and project management workflows directly from the terminal, making project management seamless for developers already utilizing the CLI for code, issues, and pull requests.


title: TLDR
content:
<b>List projects owned by the currently authenticated user</b>`gh project [[ls|list]]`<br><b>List projects owned by a specific user or organization</b>`gh project [[ls|list]] --owner [owner]`<br><b>View a project by number</b>`gh project view [number] --owner [owner]`<br><b>Create a new project</b>`gh project create --owner [owner] --title [project_title]`<br><b>Add an item (issue or pull request) to a project</b>`gh project item-add [number] --owner [owner] --url [issue_or_pr_url]`<br><b>List items in a project</b>`gh project item-list [number] --owner [owner]`<br><b>Close a project</b>`gh project close [number] --owner [owner]`


title: SYNOPSIS
content:
<B>gh</B> &lt;command&gt; &lt;subcommand&gt; [flags]<br><br><I>Common commands include:</I><br>  <B>gh auth</B> &lt;login|logout|status&gt; [flags]<br>  <B>gh pr</B> &lt;list|create|view|merge&gt; [flags]<br>  <B>gh issue</B> &lt;list|create|view|close&gt; [flags]<br>  <B>gh repo</B> &lt;create|clone|view&gt; [flags]<br>  <B>gh api</B> &lt;endpoint&gt; [flags]


title: PARAMETERS
content:
<b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The primary action to perform (e.g., <B>auth</B> for authentication, <B>pr</B> for pull requests, <B>issue</B> for issues, <B>repo</B> for repository management, <B>api</B> for direct API calls).<br><br><b><I>subcommand</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A more specific action under a given command (e.g., <B>login</B> to authenticate under <B>auth</B>, <B>list</B> to view pull requests under <B>pr</B>, <B>create</B> to make a new issue under <B>issue</B>).<br><br><b>[flags]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments that modify the behavior of a command or subcommand. Flags can be specific to a command/subcommand or global.<br><I>Examples of common global flags:</I><br>  <B>--help</B>: Display help message for the given command or subcommand.<br>  <B>--version</B>: Show the <I>gh</I> client version.<br>  <B>--editor</B> &lt;editor-command&gt;: Specify the text editor to use for prompts (e.g., <B>vi</B>, <B>nano</B>).<br><br>


title: DESCRIPTION
content:
<B>gh-rs</B> is not a standard Linux command. It most likely refers to the <B>GitHub CLI</B>, an official command-line interface for GitHub, or a Rust-based project/plugin related to it. The official <B>GitHub CLI</B>, invoked as <I>gh</I>, brings pull requests, issues, releases, and other GitHub functionality directly to your terminal. This powerful tool allows developers to authenticate with their GitHub account, manage repositories, interact with pull requests, issues, gists, and GitHub Actions workflows, all without leaving the command line. This analysis will focus on the capabilities and usage of the official <I>gh</I> command, acknowledging that "gh-rs" might imply a Rust-specific context, such as a Rust-written plugin or an alternative library/tool. Using <I>gh</I>, developers can streamline their workflow, automate tasks, and integrate GitHub operations into scripts, enhancing productivity and consistency across development environments.


title: CAVEATS
content:
<B>gh-rs</B> is not a recognized standalone command in standard Linux distributions; the official GitHub CLI is invoked as <I>gh</I>.<br>Requires an active GitHub account and successful authentication via personal access tokens or a web flow.<br>Operations are subject to GitHub API rate limits, which can temporarily block requests if exceeded.<br>Requires an active internet connection to communicate with GitHub.<br>The availability and behavior of commands and flags are dependent on the installed <I>gh</I> CLI version.


title: EXTENSIBILITY (PLUGINS)
content:
The <I>gh</I> CLI boasts robust extensibility through its plugin system. Users can install custom commands, known as extensions, which can be written in any scripting language. These extensions are typically installed using <B>gh extension install</B> &lt;repository&gt; and then invoked as <B>gh</I> <I>&lt;plugin-name&gt;</B>. This mechanism allows for highly customized workflows and is a scenario where a Rust-based tool or script (a "gh-rs" project) could be integrated as a <I>gh</I> extension, expanding its functionality.


title: AUTHENTICATION METHODS
content:
<I>gh</I> primarily uses personal access tokens (PATs) for secure authentication with GitHub. Users can initiate the login process using <B>gh auth login</B>, which typically guides them through an interactive web-based authentication flow. Alternatively, users can paste a PAT directly. The CLI securely stores these credentials, often utilizing OS-specific keychains or credential managers, ensuring that subsequent operations can proceed without requiring repeated login prompts.


title: HISTORY
content:
The <B>GitHub CLI</B> (<I>gh</I>) was officially released by GitHub Inc. in 2020, becoming the successor and official command-line interface, taking over from the widely used, community-driven <I>hub</I> tool. It is primarily written in Go and designed to provide a more integrated and native GitHub experience directly from the terminal. Its development aimed to streamline common GitHub workflows like pull request management, issue tracking, and repository administration into a unified, user-friendly CLI tool, significantly enhancing developer productivity. While the official tool is <I>gh</I>, the term <I>gh-rs</I> might occasionally refer to specific Rust-based projects, libraries, or experimental bindings related to GitHub, but it is not the name or primary invocation of the official CLI.


title: TLDR
content:
<b>Clone a repository under the ghq root directory (default is ~/ghq)</b>`ghq get [repository_url]`<br><b>Clone a repository from a user/project format (defaults to GitHub)</b>`ghq get [user]/[project]`<br><b>Clone a repository and cd into it</b>`ghq get [repository_url] --look`<br><b>Clone a repository via SSH</b>`ghq get [user]/[project] -p`<br><b>Update an existing repository to the latest version</b>`ghq get [repository_url] -u`<br><b>List all locally cloned repositories</b>`ghq list`<br><b>List locally cloned repositories with full paths</b>`ghq list --full-path`<br><b>Remove a locally cloned repository</b>`ghq rm [user]/[project]`


title: TLDR
content:
<b>Extract commit hash ID or quietly exit with a return code of 1</b>`git < [path/to/archive.tar] get-tar-commit-id`


title: PARAMETERS
content:
<b><i>file...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more Graphviz DOT files to open for editing. If no files are specified, <b>gvedit</b> starts with an empty graph, allowing the user to create a new graph from scratch.<br><br>


title: DESCRIPTION
content:
<b>gvedit</b> is a graphical user interface (GUI) application designed for the interactive creation, editing, and visualization of graphs defined in the Graphviz DOT language. It provides a visual environment where users can load existing DOT files, modify graph elements (nodes, edges, attributes), and see the rendered layout instantly. The editor integrates with the various Graphviz layout engines (like <i>dot</i>, <i>neato</i>, <i>twopi</i>, etc.), allowing users to choose different layout algorithms and preview their effects in real-time. This interactive approach makes <b>gvedit</b> a valuable tool for designing complex graph structures, debugging DOT syntax, and exploring different visual representations without repeatedly invoking command-line tools. It supports saving changes back to DOT files and exporting the rendered graph to various image formats, streamlining the graph design workflow.


title: CAVEATS
content:
<b>gvedit</b> is a GUI application and therefore requires a graphical display environment (e.g., X Window System) to function.<br>It relies heavily on the underlying Graphviz libraries and layout engines for rendering and layout calculations; a complete Graphviz installation is necessary for full functionality.<br>While <b>gvedit</b> offers interactive editing, it may not support all advanced or experimental features of the DOT language or specific layout engine parameters directly through its graphical interface.


title: HISTORY
content:
<b>gvedit</b> is an integral part of the <B>Graphviz</B> (Graph Visualization) project, which originated at <B>AT&T Labs Research</B>. Graphviz began development in the late 1990s as a set of open-source tools for drawing graphs specified in simple text files using the DOT language. <b>gvedit</b> was developed to provide a user-friendly graphical front-end to this powerful suite of command-line tools, making graph visualization and editing more accessible to users who prefer an interactive environment over command-line scripting. Its development has progressed alongside the broader Graphviz project, continually enhancing its capabilities for interactive graph design and visualization.


title: TLDR
content:
<b>Open a Graphviz file in the editor</b>`gvedit [path/to/graph.gv]`<br><b>[s]cale coordinates from points to inches (useful for layouts generated by Graphviz tools)</b>`gvedit -s [path/to/graph.gv]`<br><b>Enable [v]erbose mode</b>`gvedit -v [path/to/graph.gv]`<br><b>Display help</b>`gvedit -?`


title: TLDR
content:
<b>Generate a clustered map layout from a DOT format graph</b>`gvmap [graph.gv] -o [output.xdot]`<br><b>Generate a map using existing cluster subgraphs from the input</b>`gvmap -D [graph.gv]`<br><b>Include graph edges in the [o]utput map</b>`gvmap -e [graph.gv] -o [output.xdot]`<br><b>Specify a [c]olor scheme (1: pastel, 2: blue-yellow, 3: white-red, etc.)</b>`gvmap -c [1|2|3|...] [graph.gv] -o [output.xdot]`<br><b>Set the maximum number of [C]lusters (by default 0, meaning there is no limit)</b>`gvmap -C [10] [graph.gv] -o [output.xdot]`<br><b>Only draw cluster 2 (by default, all clusters are drawn)</b>`gvmap -highlight=[2] [graph.gv] -o [output.xdot]`


