# CommandSection

title: USAGE EXAMPLE
content:
To create an enrollment token for a Kibana instance, execute the following command on an Elasticsearch node:<br><i>./bin/elasticsearch-create-enrollment-token -s kibana</i><br>The command will output a long string, which is the enrollment token. This token is then provided to the Kibana setup wizard or configuration to initiate the secure connection.


title: HISTORY
content:
The concept of enrollment tokens was introduced as part of the simplified security setup in Elastic Stack 7.x, gaining prominence with versions 7.10+ and 8.x. Prior to this, securely connecting Kibana to Elasticsearch often involved more manual steps, such as certificate exchange and direct configuration of usernames and passwords, which could be cumbersome. The <i>elasticsearch-create-enrollment-token</i> command streamlined this process by providing a secure, temporary, and single-use credential. Its development focused on improving the out-of-the-box user experience for security-enabled clusters, making it easier for new users to get started with a secure Elastic Stack deployment without deep knowledge of TLS or complex security configurations.


title: SEE ALSO
content:
elasticsearch-reset-password(8), elasticsearch-setup-passwords(8), elasticsearch-service-tokens(8), elasticsearch-reconfigure-node(8)


title: TLDR
content:
<b>Create an enrollment token for adding a new Elasticsearch node</b>`elasticsearch-create-enrollment-token [[-s|--scope]] node`<br><b>Create an enrollment token for adding a new Kibana instance</b>`elasticsearch-create-enrollment-token [[-s|--scope]] kibana`<br><b>Create an enrollment token and display verbose output</b>`elasticsearch-create-enrollment-token [[-s|--scope]] node --verbose`<br><b>Create an enrollment token for a Kibana instance with a custom Elasticsearch URL</b>`elasticsearch-create-enrollment-token [[-s|--scope]] kibana --url "[IP]"`<br><b>Display help</b>`elasticsearch-create-enrollment-token [[-h|--help]]`


title: SYNOPSIS
content:
The <i>minidlna</i> command is primarily designed to run as a background daemon. Its most common invocation involves specifying a configuration file. Options can be used to override settings or for debugging purposes.<br><br><b>minidlna</b> [<i>OPTIONS</i>]<br><br>Common usage examples include:<br><b>minidlna -f</b> <i>/etc/minidlna.conf</i><br><b>minidlna -d</b> (<i>for foreground debug mode</i>)


title: PARAMETERS
content:
<b><b>-f</b> <i>&lt;config_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to an alternative configuration file.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug mode, running the server in the foreground and logging to stderr.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug mode, providing more detailed logging output.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables quiet mode, suppressing most standard output.<br><br><b><b>-a</b> <i>&lt;ip_address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the IP address on which the server should listen.<br><br><b><b>-p</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the listening port for the server (default is 8200).<br><br><b><b>-s</b> <i>&lt;serial&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom serial number for the server.<br><br><b><b>-m</b> <i>&lt;model&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom model name for the server.<br><br><b><b>-t</b> <i>&lt;friendly_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom friendly name that clients will see for the server.<br><br><b><b>-U</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces unbuffered I/O, often used for debugging purposes.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Requests a re-index of all media files from the configured directories.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a full re-index of all media files and rebuilds the database from scratch.<br><br><b><b>-P</b> <i>&lt;pid_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path for the PID (process ID) file when running as a daemon.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs logging output to the system's syslog facility.<br><br><b><b>-u</b> <i>&lt;user&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the user (and group if <b>-g</b> is specified) that <i>minidlna</i> runs as after startup.<br><br><b><b>-g</b> <i>&lt;group&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the group that <i>minidlna</i> runs as after startup (requires <b>-u</b>).<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br>


title: DESCRIPTION
content:
<i>minidlna</i>, often known as <i>ReadyMedia</i>, is a lightweight and simple Digital Living Network Alliance (DLNA) and Universal Plug and Play (UPnP) Audio/Video media server. It enables users to effortlessly share multimedia content – including photos, music, and videos – from their Linux system to various DLNA-certified devices on the same local network. These compatible devices range from smart televisions and game consoles (like PlayStation and Xbox) to smartphones and other dedicated media players.<br><br>The server automatically scans designated directories for media files, building a database that is then presented to clients in an organized and browsable format. Designed for minimal resource consumption, <i>minidlna</i> is an ideal choice for embedded systems, Network-Attached Storage (NAS) devices, or older hardware, while still providing robust and reliable media streaming capabilities. Its primary configuration is managed via a dedicated text file, typically <b>minidlna.conf</b>, rather than relying heavily on command-line arguments for daemon operation.


title: CAVEATS
content:
While command-line options exist, the primary and most robust configuration of <i>minidlna</i> is achieved through its configuration file (e.g., <b>/etc/minidlna.conf</b>). Command-line parameters often override configuration file settings or are intended for temporary debugging.<br><br>For <i>minidlna</i> to be discoverable and accessible, proper firewall rules must be configured to allow traffic on its listening port (default 8200 TCP/UDP) and potentially other UPnP discovery ports. Ensure the user <i>minidlna</i> runs as has appropriate read permissions to all shared media directories.


title: CONFIGURATION FILE
content:
The core functionality and settings of <i>minidlna</i> are managed through its dedicated configuration file, typically located at <b>/etc/minidlna.conf</b> or in a user's home directory (e.g., <b>~/.config/minidlna/minidlna.conf</b>). This file allows users to define critical parameters such as media directories to be scanned, the server's name, listening port, network interfaces, log file paths, and database locations. Editing this file is essential for customizing the server's behavior to specific network and media library needs.


title: MEDIA RESCANNING AND DATABASE MANAGEMENT
content:
<i>minidlna</i> can be configured to automatically monitor media directories for changes, adding new files or removing deleted ones. However, for significant changes or troubleshooting, manual rescanning is often necessary. This can be triggered by restarting the <i>minidlna</i> service, or by using the command-line options <b>-r</b> (re-index existing files) or <b>-R</b> (force a full rebuild of the media database). The latter is particularly useful after adding a large collection of new media or if the database becomes corrupted.


title: HISTORY
content:
Initially developed as <i>minidlna</i>, this lightweight UPnP AV media server gained popularity for its simplicity and efficiency. It was later rebranded as <i>ReadyMedia</i>, though the original name remains widely used and recognized within the Linux community. Throughout its development, the focus has remained on providing a compliant, low-resource DLNA server, making it a persistent choice for embedded systems and home network media sharing.


title: TLDR
content:
<b>Start the MiniDLNA daemon using the default configuration at /etc/minidlna.conf</b>`minidlna`<br><b>Start MiniDLNA with a specific configuration file</b>`minidlna -f [path/to/minidlna.conf]`<br><b>Force a database rescan on startup</b>`minidlna -R`<br><b>Run MiniDLNA in the foreground (useful for debugging)</b>`minidlna -d`<br><b>Enable verbose debug output</b>`minidlna -d -v`<br><b>Specify a custom media directory (overrides config)</b>`minidlna -m [path/to/media]`<br><b>Specify a custom database directory</b>`minidlna -P [path/to/pidfile]`<br><b>Specify a custom log file path</b>`minidlna -l [path/to/logfil.log]`


title: PARAMETERS
content:
<b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <i>efibootdump</i> utility.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message and usage synopsis for the command.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides more detailed or verbose output, potentially showing additional information during the dump process.<br><br><b>VARNAME...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more particular EFI variable names (e.g., <i>BootOrder</i>, <i>Boot0001</i>) to dump. If no <i>VARNAME</i> is provided, <i>efibootdump</i> typically dumps all recognized boot-related variables.<br><br>


title: DESCRIPTION
content:
<i>efibootdump</i> is a specialized diagnostic utility designed to display the raw contents of UEFI (Unified Extensible Firmware Interface) boot variables. These variables, stored in NVRAM (Non-Volatile Random-Access Memory), hold critical information regarding the system's boot configuration, including boot order, boot entries, and other EFI-specific settings.<br><br>Unlike <i>efibootmgr</i>, which offers a higher-level interface for managing these variables, <i>efibootdump</i> focuses on presenting the underlying, often hexadecimal, data. This low-level perspective is invaluable for debugging complex boot problems, analyzing firmware behavior, or understanding the precise byte-level structure of EFI variables. It assists system administrators and developers in identifying issues not apparent from standard <i>efibootmgr</i> output, providing a deep dive into the firmware's view of the boot process. It typically requires root privileges to access the EFI variable filesystem.


title: CAVEATS
content:
Requires <b>root privileges</b> to read EFI variables from the <i>/sys/firmware/efi/efivars/</i> filesystem.<br>The output is raw, often in <b>hexadecimal format</b>, and requires an understanding of EFI variable structures for correct interpretation.<br>Only functional on systems with <b>UEFI firmware</b> and the <i>efivars</i> filesystem mounted and accessible.<br>This command is <b>read-only</b>; it cannot modify or delete EFI variables. Use <i>efibootmgr</i> for modifications.


title: OUTPUT INTERPRETATION
content:
The output produced by <i>efibootdump</i> is typically a raw hexadecimal dump of the EFI variable's contents. Interpreting this data often requires familiarity with the specific EFI variable structures defined by the UEFI specification, such as <i>EFI_LOAD_OPTION</i> for boot entries or GUIDs for variable names. Without this knowledge, the output can be difficult to understand.


title: EFI VARIABLE LOCATION
content:
On Linux systems, EFI variables are exposed as files within the pseudo-filesystem mounted at <i>/sys/firmware/efi/efivars/</i>. Each file in this directory corresponds to an EFI variable. <i>efibootdump</i> reads the contents of these files to present the variable data, which is why it requires root access to this protected filesystem.


title: HISTORY
content:
<i>efibootdump</i> is part of the <i>efibootmgr</i> project, which originated to provide Linux systems with robust tools for interacting with UEFI firmware. As UEFI supplanted legacy BIOS as the dominant firmware interface, the need for Linux utilities to manage and debug EFI boot variables became paramount. Developed by Matt Domsch and others, the <i>efibootmgr</i> suite, including <i>efibootdump</i>, emerged to fill this gap. <i>efibootdump</i> specifically caters to diagnostic needs, offering a low-level view of boot variables that complements <i>efibootmgr</i>'s higher-level management functions. Its evolution reflects Linux's continuous adaptation and integration with modern UEFI-based hardware.


title: SYNOPSIS
content:
<b>kodi-send</b> [<b>-a</b> <I>address</I>] [<b>-p</b> <I>port</I>] [<b>-c</b>|<b>--connect</b>] [<b>-v</b>|<b>--verbose</b>] {<b>sendaction</b> <I>action</I> | <b>sendtext</b> <I>text</I> | <b>sendcommand</b> <I>jsonrpc_command</I>}


title: PARAMETERS
content:
<b><b>-a</b> <I>address</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the IP address or hostname of the Kodi instance to connect to. If omitted, `localhost` or the default broadcast address is often used.<br><br><b><b>-p</b> <I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the port number for communication. The default is typically 9777 for UDP (EventServer) and 9090 for TCP (JSON-RPC, if <b>--connect</b> is used).<br><br><b><b>-c</b> | <b>--connect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>kodi-send</b> to establish a TCP connection instead of the default UDP. This is generally more reliable.<br><br><b><b>-v</b> | <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying detailed information about the communication process and what is being sent.<br><br><b><b>sendaction</b> <I>action</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a predefined Kodi action, such as 'Play', 'Stop', 'Home', 'Right', or 'ActivateWindow(Videos)'. Actions simulate built-in button presses or system commands.<br><br><b><b>sendtext</b> <I>text</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a string of text to Kodi, useful for populating input fields like search bars, login prompts, or on-screen keyboards.<br><br><b><b>sendcommand</b> <I>jsonrpc_command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows sending a raw JSON-RPC command directly to Kodi. This requires Kodi's JSON-RPC server to be enabled and configured, typically accessible over TCP.<br><br>


title: DESCRIPTION
content:
<b>kodi-send</b> is a lightweight command-line utility designed to interact with a running Kodi media center instance. It allows users to send various commands, actions, and text inputs directly to Kodi, making it ideal for scripting, automation, or remote control applications. It typically communicates with Kodi using the EventClient network protocol, often over UDP, but can be configured for TCP. Common uses include sending keyboard presses, built-in Kodi actions (like <i>Play</i>, <i>Pause</i>, <i>Stop</i>), text input for search fields, or specific Kodi JSON-RPC commands. This tool provides a powerful way to integrate Kodi into home automation systems or create custom control interfaces without needing to use the full JSON-RPC API directly from a programming language.


title: CAVEATS
content:
For <b>kodi-send</b> to function, the Kodi EventServer (for actions and text) or JSON-RPC server (for <b>sendcommand</b>) must be enabled and accessible within your Kodi settings. Ensure no firewall rules are blocking the specified UDP or TCP ports. Using UDP (the default) is connectionless and less reliable than TCP; consider using the <b>-c</b> option for critical commands to ensure delivery. This utility sends commands without immediate feedback on execution success, so careful scripting and error handling are advised.


title: COMMON ACTIONS
content:
Many common Kodi operations can be triggered using the <b>sendaction</b> parameter. Examples include: <br> <b>kodi-send sendaction Play</b><br> <b>kodi-send sendaction Stop</b><br> <b>kodi-send sendaction Right</b> (simulates right arrow key)<br> <b>kodi-send sendaction ActivateWindow(Home)</b> (navigates to the Home screen)<br>A comprehensive list of available actions can often be found in the Kodi wiki or its source code.


title: JSON-RPC INTEGRATION
content:
The <b>sendcommand</b> option unlocks advanced control by allowing direct interaction with Kodi's powerful JSON-RPC API. This enables fetching information, managing playlists, and executing complex functions not available via simple actions. For example:<br> <b>kodi-send sendcommand '{"jsonrpc":"2.0","method":"Player.PlayPause","params":{"playerid":1},"id":1}'</b><br>Using JSON-RPC requires a deeper understanding of Kodi's API, typically found in the official Kodi JSON-RPC API documentation.


title: HISTORY
content:
The <b>kodi-send</b> utility is a long-standing component of the Kodi (formerly XBMC) ecosystem, designed to provide a straightforward command-line interface for interacting with a running Kodi instance. It emerged as part of the EventClient tools, enabling external applications and scripts to control Kodi via its built-in EventServer. Its development has mirrored Kodi's own evolution, consistently offering a simple yet powerful method for automation and remote control, filling the gap for quick, scriptable interactions without requiring complex API integrations.


title: SYNOPSIS
content:
<b>lid.libuser</b> [<I>OPTIONS</I>] [<I>USER</I> | <I>GROUP</I>]<br><br><I>Note: As `lid.libuser` is not a standard command, this synopsis is a best-effort representation based on the presumed functionality related to user/group ID management. Actual options and arguments would depend entirely on its specific implementation.</I>


title: PARAMETERS
content:
<b><I>USER</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the username for which to retrieve ID information. If omitted, information for the current user might be displayed.<br><br><b><I>GROUP</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the group name for which to retrieve ID information or membership details.<br><br><b>-u, --uid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, might display only the effective user ID (UID).<br><br><b>-g, --gid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, might display only the effective group ID (GID).<br><br><b>-G, --groups</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, might display all supplementary group IDs associated with a user.<br><br><b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, might list all users or groups and their associated IDs managed by the system.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hypothetically, might provide more detailed output about the IDs or user attributes.<br><br>


title: DESCRIPTION
content:
`lid.libuser` is <B>not a standard, universally recognized Linux command</B> found in most distributions. Its name, however, strongly suggests a utility designed to interact with user and group identification data (IDs) through the `libuser` library.<br><br> The `libuser` library provides a robust, abstract API for managing user and group accounts, encapsulating the details of the underlying storage (e.g., <I>/etc/passwd</I>, <I>/etc/group</I>, NIS, LDAP). If such a command exists, it would likely be a custom script or a specialized utility within a particular system environment that leverages `libuser`'s capabilities. Its primary function would probably involve listing user IDs (UIDs), group IDs (GIDs), or supplementary groups for specified users, similar to the `id` command, but potentially with extended functionality or integration specific to the `libuser` framework's handling of user attributes. It would be valuable in environments requiring detailed auditing or programmatic access to user identity information beyond what standard utilities provide, all while benefiting from `libuser`'s consistent interface.


title: CAVEATS
content:
`lid.libuser` is <B>not a standard Linux command</B> distributed with most common operating systems. If encountered, it is most likely a custom script, a localized utility, or part of a very specific software package. Therefore, its exact functionality, syntax, and available options are not universally documented and would depend entirely on its particular implementation. Users should consult local system documentation or the script itself for accurate details. Using this name might also be a misinterpretation, as `libuser` is primarily a programming library, not typically a direct command prefix.


title: ROLE OF LIBUSER
content:
The <I>libuser</I> library provides a set of functions that allow applications to manage users and groups in a consistent manner, regardless of the underlying storage mechanism. It handles tasks such as adding, modifying, deleting users and groups, managing passwords, and retrieving user/group information. Many standard Linux user management commands are built upon this library to ensure compatibility and robustness across different system configurations.


title: POTENTIAL USE CASES
content:
If `lid.libuser` were an actual utility, its use cases might include: custom scripts requiring programmatic access to user/group IDs, compliance auditing to list specific user attributes, or integration into larger system management frameworks where direct manipulation of user databases is abstracted by <I>libuser</I>.


title: HISTORY
content:
The `libuser` library itself was developed primarily by Red Hat and is widely used in Red Hat-derived distributions (like Fedora, CentOS, RHEL) as the underlying framework for many of the standard user and group management utilities (e.g., `useradd`, `groupadd`). It was created to provide a consistent and robust API for managing user and group accounts, abstracting away the specifics of various backend storage mechanisms (local files, LDAP, NIS, etc.). The concept of `lid.libuser` as a direct command is not part of this historical development, as `libuser` serves as a library for other tools rather than a command prefix.


title: TLDR
content:
<b>List primary and secondary groups of a specific user</b>`sudo lid [username]`<br><b>List users of a specific group</b>`sudo lid --group [group_name]`


title: SYNOPSIS
content:
<b>hd-idle</b> [<i>options</i>]<br><b>hd-idle</b> <b>-a</b> <i>&lt;device&gt;</i> <b>-i</b> <i>&lt;interval&gt;</i>


title: PARAMETERS
content:
<b>-a <device> -i <interval></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Target a specific <i>&lt;device&gt;</i> (e.g., /dev/sdb) to monitor with a <i>&lt;interval&gt;</i> (in seconds) for its activity. This overrides the global interval.<br><br><b>-i <interval></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the global check <i>&lt;interval&gt;</i> in seconds. <i><b>hd-idle</b></i> will check for inactivity on all monitored drives every <i>&lt;interval&gt;</i> seconds. Default is 5 seconds.<br><br><b>-t <timeout></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the spin-down <i>&lt;timeout&gt;</i> in seconds. A drive will spin down if no I/O activity is detected for this period. Default is 600 seconds (10 minutes).<br><br><b>-s <sectors></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log total <i>&lt;sectors&gt;</i> read/written to/from a drive (requires <b>-d</b> for display).<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not daemonize. Run <i><b>hd-idle</b></i> in the foreground. Useful for debugging.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output. Shows detailed drive activity and actions taken by the command.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information of <i><b>hd-idle</b></i> and exit.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message with command usage and options, then exit.<br><br><b>-c <command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified <i>&lt;command&gt;</i> just before a drive is spun down. Useful for pre-spindown tasks.<br><br><b>-p <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the <i>&lt;path&gt;</i> for the PID file when running as a daemon. This file stores the process ID.<br><br><b>-l <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the <i>&lt;path&gt;</i> for the log file where <i><b>hd-idle</b></i> will write its activity logs.<br><br><b>-e <secs></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude devices from monitoring for a specific number of <i>&lt;secs&gt;</i> after they are initially detected. Useful for drives that might be busy during startup.<br><br><b>-r <secs></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Re-read configuration or command-line parameters every <i>&lt;secs&gt;</i>. Primarily used with service managers like systemd.<br><br><b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><b>WARNING:</b></i> Attempt to unmount drives before spinning them down. Can cause data loss or file system corruption if partitions are still in use.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not spin down drives that are not currently mounted. This prevents unmounted drives from being affected.<br><br><b>-k</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keep drives awake if any I/O activity is detected, even if it's minimal. Ensures continuous operation for active drives.<br><br>


title: DESCRIPTION
content:
<i><b>hd-idle</b></i> is a command-line utility for Linux systems designed to spin down hard disk drives after a configurable period of inactivity. Its primary purpose is to conserve power, reduce noise, and potentially extend the lifespan of HDDs that are not in constant use.<br><br>By monitoring I/O activity on specified or all connected drives, <i><b>hd-idle</b></i> sends a spindown command (typically using <i>hdparm</i> internally or similar ATA commands) when no read or write operations have occurred for a defined timeout period. It can operate as a daemon in the background, continuously monitoring the drives. This tool is particularly useful for servers, Network Attached Storage (NAS) devices, or desktop systems where some hard drives are used for archival purposes or accessed intermittently, allowing them to enter a low-power state when idle. It helps in reducing electricity bills and minimizing wear-and-tear associated with continuous platter rotation, especially for drives not involved in active system operations.


title: CAVEATS
content:
<i><b>hd-idle</b></i> should be used with caution, especially the <code>-u</code> option which attempts to unmount drives and can lead to data loss or file system corruption if the drive is in use. Frequent spin-ups/spin-downs can increase the Load/Unload Cycle Count (LCC) attribute in S.M.A.R.T. data, potentially reducing the drive's lifespan, although modern drives are rated for hundreds of thousands to millions of cycles. It is generally not suitable for drives that are constantly accessed or host critical system files (like the root filesystem). Compatibility with USB enclosures can vary; some enclosures may not pass the necessary ATA commands for spin-down effectively, leading to no effect or unexpected behavior.


title: INSTALLATION
content:
<i><b>hd-idle</b></i> is commonly available in the official repositories of most Linux distributions (e.g., <code>apt install hd-idle</code> on Debian/Ubuntu, <code>dnf install hd-idle</code> on Fedora/RHEL), making it straightforward to install using the system's package manager.


title: SERVICE MANAGEMENT
content:
It is often configured to run as a <i>systemd</i> service, allowing it to start automatically at boot and manage its daemon process. A typical setup involves creating a <i>systemd</i> unit file (e.g., <code>hd-idle.service</code>) to define its execution parameters and dependencies, ensuring it operates reliably in the background.


title: HISTORY
content:
<i><b>hd-idle</b></i> emerged as a dedicated utility to address power management for hard drives on Linux, specifically focusing on automatic spin-down based on inactivity. While tools like <i>hdparm</i> provide the underlying capability to spin down a drive, <i><b>hd-idle</b></i> automates this process by continuously monitoring I/O, filling a niche for energy-efficient system configurations. Its development is driven by the need to reduce power consumption and noise in environments with intermittently accessed storage, such as home servers or NAS devices, evolving to handle various drive types and monitoring methods.


title: TLDR
content:
<b>Start a service to manage hard drive spin down. By default hard disks will spin down after 10 minutes of inactivity</b>`systemctl start hd-idle`<br><b>Spin down a disk immediately</b>`hd-idle -t [/dev/sdX]`<br><b>Set disks to never spin down, then set explicit idle times (in seconds) for disks which have "sda" or "sdb" in their device name</b>`hd-idle -i 0 -a /dev/sda -i [300] -a /dev/sdb -i [1200]`


title: TLDR
content:
<b>Display the saved configuration</b>`pct config [100]`<br><b>Display the running configuration without pending changes</b>`pct config [100] --current`<br><b>Display configuration of a specific snapshot</b>`pct config [100] --snapshot [snapshot_name]`


title: SYNOPSIS
content:
<b>remote-viewer</b> [<i>OPTIONS</i>] [<i>URI</i> | <i>GUESTNAME</i>]<br><br>Examples of URI/GUESTNAME:<br>  <i>guestname</i> (Connect to a libvirt guest)<br>  <b>spice://</b><i>host</i>:<i>port</i> (Direct SPICE connection)<br>  <b>vnc://</b><i>host</i>:<i>port</i> (Direct VNC connection)<br>  <b>qemu:///system/</b><i>guestname</i> (Libvirt guest via URI)


title: PARAMETERS
content:
<b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b>, <b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information and exits.<br><br><b><b>--connect</b>=<i>URI</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the specified URI (e.g., <b>qemu:///system/guestname</b>, <b>spice://host:port</b>, <b>vnc://host:port</b>).<br><br><b><b>--direct</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a direct connection to a VNC or SPICE server, bypassing libvirt resolution. Requires a <b>--spice-uri</b> or <b>--vnc-uri</b>.<br><br><b><b>--file</b>=<i>FILENAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads connection details from a virt-viewer (.vv) file. This file usually contains SPICE or VNC connection parameters.<br><br><b><b>--full-screen</b>, <b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the viewer in full-screen mode. Press <b>Shift+F11</b> to toggle.<br><br><b><b>--read-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the remote display in read-only mode, disabling keyboard and mouse input.<br><br><b><b>--password</b>=<i>PASSWORD</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the password for the connection. Be cautious when using this on the command line due to security risks.<br><br><b><b>--no-verify-tls</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables TLS certificate verification. Use only in trusted environments or for testing, as it compromises security.<br><br><b><b>--spice-uri</b>=<i>URI</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects using a direct SPICE URI.<br><br><b><b>--vnc-uri</b>=<i>URI</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects using a direct VNC URI.<br><br><b><b>--clipboard</b>=<i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the clipboard mode. Common values include <b>auto</b> (default), <b>none</b>, <b>copy-paste</b>, <b>paste-copy</b>.<br><br><b><b>--resize-to-guest</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically resizes the viewer window to match the guest's display resolution (requires SPICE agent in guest).<br><br>


title: DESCRIPTION
content:
<i>remote-viewer</i> is a lightweight client application primarily used for connecting to virtual machine graphical consoles (SPICE, VNC) managed by libvirt, or directly to SPICE/VNC servers. It provides a highly interactive and responsive experience, especially with the SPICE protocol, offering features like audio redirection, clipboard sharing, and smart card pass-through. While often associated with QEMU/KVM virtual machines, it can connect to any generic VNC or SPICE server. It serves as the display component for the <i>virt-manager</i> tool but can also be used independently for quick and direct access to remote desktops.


title: CAVEATS
content:
For optimal performance and features (like display resizing, clipboard sharing, and sound), ensure that the SPICE guest tools (e.g., <i>spice-vdagent</i>) are installed and running inside the virtual machine. Direct VNC connections may lack advanced features compared to SPICE. Using passwords directly on the command line can expose them in shell history or process listings, so consider more secure methods for production environments.


title: HISTORY
content:
<i>remote-viewer</i> is an integral part of the <i>virt-viewer</i> project, which originated to provide a dedicated, high-performance display client for virtual machines managed by libvirt, specifically focusing on the QEMU/KVM hypervisor. Its development has closely tracked the evolution of the SPICE protocol, aiming to offer a rich remote desktop experience for virtualized environments on Linux. It spun off as a standalone executable to allow direct connections without the need for the full <i>virt-manager</i> GUI.


title: TLDR
content:
<b>List all containers (running and stopped)</b>`nerdctl ps [[-a|--all]]`<br><b>Start a container from an image, with a custom name</b>`nerdctl run --name [container_name] [image]`<br><b>Start or stop an existing container</b>`nerdctl [start|stop] [container_name]`<br><b>Pull an image from a container registry</b>`nerdctl pull [image]`<br><b>Display the list of already downloaded images</b>`nerdctl images`<br><b>Open an interactive tty with Bourne shell (sh) inside a running container</b>`nerdctl exec [[-it|--interactive --tty]] [container_name] sh`<br><b>Remove stopped containers</b>`nerdctl rm [container1 container2 ...]`<br><b>Fetch and follow the logs of a container</b>`nerdctl logs [[-f|--follow]] [container_name]`


title: TLDR
content:
<b>Show the status of a systemd unit</b>`systemctl status [unit].[service|timer|socket|target|...]`<br><b>Show the status of failed units</b>`systemctl status --failed`<br><b>List all running services</b>`systemctl status`<br><b>List all units in the system</b>`systemctl status --all`<br><b>List all units of a specific type</b>`systemctl status --type [service|timer|socket|target|...]`<br><b>List all units with a specific state</b>`systemctl status --state [active|inactive|failed]`<br><b>Show the status of a user unit</b>`systemctl status [unit] --user`


title: PARAMETERS
content:
<b><b>-M <i>&lt;module&gt;</i></b>, <b>--module=<i>&lt;module&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the DRM driver module name to use (e.g., <i>i915</i>, <i>amdgpu</i>, <i>nouveau</i>). If not specified, <b>modetest</b> attempts to detect an active module.<br><br><b><b>-D <i>&lt;device&gt;</i></b>, <b>--device=<i>&lt;device&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the DRM device file path (e.g., <i>/dev/dri/card0</i>). Useful when multiple DRM devices are present.<br><br><b><b>-s <i>&lt;connector&gt;</i></b>, <b>--size=<i>&lt;connector&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used alone (e.g., <b>-s DP-1</b>), lists available modes for the specified connector. When used with a resolution (e.g., <b>-s DP-1@1920x1080p</b>), attempts to set that mode on the connector. An optional 'p' suffix indicates preferred, 'r' for reduced blanking.<br><br><b><b>-P <i>&lt;plane-id&gt;</i></b>, <b>--planes=<i>&lt;plane-id&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tests specific display planes, typically used for overlays, cursors, or dedicated video planes. This option can take complex arguments specifying source/destination rectangles and pixel formats.<br><br><b><b>-c <i>&lt;crtc-id&gt;</i></b>, <b>--crtc=<i>&lt;crtc-id&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Targets a specific CRTC (Cathode Ray Tube Controller) ID for operations, such as mode setting or property manipulation. CRTCs manage timing and synchronization for displays.<br><br><b><b>-f <i>&lt;format&gt;</i></b>, <b>--format=<i>&lt;format&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the pixel format for surfaces (e.g., <i>XR24</i> for XRGB8888, <i>BGRA888</i>). Used with plane tests or buffer allocation.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, providing more detailed information about DRM objects and operations.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage instructions and exits.<br><br>


title: DESCRIPTION
content:
<b>modetest</b> is a command-line tool designed for testing and debugging the Kernel Mode Setting (KMS) functionality of Direct Rendering Manager (DRM) drivers. It allows users to query and manipulate display hardware directly through the kernel interface, independent of any desktop environment or display server. It can be used to list available connectors, CRTCs (Cathode Ray Tube Controllers), encoders, and planes, as well as to set display modes, test atomic commits, and display various test patterns or images.<br><br>This tool is invaluable for graphics driver developers, system integrators, and advanced users troubleshooting display-related issues or verifying display hardware capabilities on Linux.


title: CAVEATS
content:
Using <b>modetest</b> often requires root privileges or membership in the <i>render</i> or <i>video</i> user groups to access DRM devices. Running it on an actively used display can disrupt the current desktop environment (Xorg, Wayland), potentially leading to a blank screen or display corruption, as it directly manipulates the low-level display state. It's primarily a diagnostic tool for developers and advanced users.


title: TYPICAL USAGE
content:
Commonly, <b>modetest</b> is run with just the module name (e.g., <b>sudo modetest -M i915</b>) to enumerate all available DRM objects like connectors, encoders, CRTCs, and planes, along with their supported modes and properties. To test a specific mode, one might use <b>sudo modetest -s DP-1@1920x1080p</b>. Developers use it to test atomic commits for multi-plane setups or complex display configurations.


title: INTERPRETING OUTPUT
content:
The output of <b>modetest</b> lists various DRM objects identified by unique IDs. <i>Connectors</i> represent physical display outputs (HDMI, DisplayPort, LVDS). <i>CRTCs</i> (Cathode Ray Tube Controllers) are responsible for generating scanout signals to display a buffer. <i>Encoders</i> convert CRTC signals to connector-specific formats. <i>Planes</i> are memory buffers that can be scanned out by CRTCs, including primary planes, overlay planes, and cursor planes. Understanding these components is key to interpreting <b>modetest</b>'s detailed output.


title: HISTORY
content:
<b>modetest</b> is an integral part of the <b>libdrm</b> project, the userspace library providing the API for interacting with the Linux kernel's Direct Rendering Manager (DRM). Its development gained prominence with the introduction of Kernel Mode Setting (KMS), which shifted the responsibility of display mode configuration from userspace applications (like the X server) into the kernel. This change enhanced stability, security, and performance of graphics on Linux.<br><br><b>modetest</b> was created as a crucial utility to test, debug, and validate the KMS interface, enabling developers to directly interact with and verify display hardware capabilities and driver implementations.


title: TLDR
content:
<b>List connectors and their available modes for a specific driver</b>`modetest -M [mgag200] -c`<br><b>Set the resolution of a connector</b>`sudo modetest -M [mgag200] -s [connector_id]:[1600]x[1200]`


title: SYNOPSIS
content:
<b>fbset</b> [<i>OPTIONS</i>] [<i>MODE_NAME</i> | <i>GEOMETRY_AND_TIMING_PARAMETERS</i>]<br>Example: <b>fbset</b> <i>-xres 1024 -yres 768 -depth 16</i>


title: PARAMETERS
content:
<b><b>-s</b>, <b>--show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the current video mode settings of the framebuffer device.<br><br><b><b>-i</b>, <b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about supported video modes from the kernel's mode database or a specified mode file.<br><br><b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply the specified settings to all detected framebuffer devices.<br><br><b><b>-xres</b> <i>&lt;X&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the horizontal resolution (width) in pixels.<br><br><b><b>-yres</b> <i>&lt;Y&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the vertical resolution (height) in pixels.<br><br><b><b>-depth</b> <i>&lt;D&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the color depth (bits per pixel), typically 8, 16, 24, or 32.<br><br><b><b>-pixclock</b> <i>&lt;P&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the pixel clock in picoseconds (ps). Defines how fast pixels are drawn.<br><br><b><b>-left</b> <i>&lt;L&gt;</i>, <b>-right</b> <i>&lt;R&gt;</i>, <b>-upper</b> <i>&lt;U&gt;</i>, <b>-lower</b> <i>&lt;L&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the horizontal and vertical blanking intervals for timings.<br><br><b><b>-hsync</b> <i>&lt;P&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set horizontal sync polarity (<i>+</i> or <i>-</i>).<br><br><b><b>-vsync</b> <i>&lt;P&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set vertical sync polarity (<i>+</i> or <i>-</i>).<br><br><b><b>-vmode</b> <i>&lt;M&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the video mode (e.g., <i>interlace</i> for interlaced scan, <i>double</i> for double scan).<br><br><b><b>-g</b> <i>&lt;XRES&gt; &lt;YRES&gt; &lt;VXRES&gt; &lt;VYRES&gt; &lt;DEPTH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set resolution, virtual resolution, and color depth.<br><br><b><b>-t</b> <i>&lt;PIXCLOCK&gt; &lt;LEFT&gt; &lt;RIGHT&gt; &lt;UPPER&gt; &lt;LOWER&gt; &lt;HSYNC&gt; &lt;VSYNC&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shorthand to set all timing parameters.<br><br><b><b>-f</b> <i>&lt;file&gt;</i>, <b>--file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read mode settings from a specified file, typically <i>/etc/fb.modes</i>.<br><br><b><b>-fb</b> <i>&lt;device&gt;</i>, <b>--fb</b> <i>&lt;device&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the framebuffer device to operate on, e.g., <i>/dev/fb1</i>. Defaults to <i>/dev/fb0</i>.<br><br>


title: DESCRIPTION
content:
<b>fbset</b> is a command-line utility used to query and modify the settings of the Linux framebuffer device. The framebuffer provides a standard interface to access the graphics hardware, allowing for console graphics without relying on a full X Window System. It enables users to change display parameters such as resolution (X and Y), color depth, pixel clock, sync polarities, and video modes (e.g., interlaced, double scan). This command is particularly useful in environments where a graphical desktop isn't running, such as server consoles, embedded systems, or during the early boot process. Incorrect settings can lead to display issues or a blank screen, so caution is advised. It typically requires root privileges to operate.


title: CAVEATS
content:
Applying incorrect parameters with <b>fbset</b> can lead to an unreadable or blank screen, requiring a system reboot or specific knowledge to restore.<br>Changes made by <b>fbset</b> are typically not persistent across reboots unless integrated into system startup scripts or configuration files.<br>It requires root privileges to modify framebuffer settings.<br>For graphical environments like X11 or Wayland, <b>xrandr</b> or display server-specific tools are generally preferred and safer.


title: THE LINUX FRAMEBUFFER DEVICE
content:
The Linux framebuffer (<i>fbdev</i>) is a graphics hardware-independent abstraction layer to show graphics on a computer monitor. It provides a direct memory region (the framebuffer) that holds the pixel data currently displayed on the screen. <b>fbset</b> interacts directly with this device to change its operational parameters.


title: USING FB.MODES
content:
The <i>/etc/fb.modes</i> file contains predefined video mode descriptions that can be loaded by <b>fbset</b> using the <i>-f</i> option or by simply passing the mode name (e.g., <i>fbset 1024x768-60</i>). This file allows system administrators to easily configure standard display resolutions and timings without needing to specify all parameters individually on the command line.


title: HISTORY
content:
<b>fbset</b> is part of the <i>fbtools</i> package, which emerged with the development of the Linux framebuffer device itself. The Linux framebuffer was introduced to provide a generic graphics output layer that was hardware-independent, allowing for console graphics and earlier boot graphics without relying on proprietary or complex graphics drivers. While its usage has diminished on modern desktops with the advent of advanced display servers, <b>fbset</b> remains a critical tool for embedded systems, servers without graphical interfaces, and low-level display configuration.


title: TLDR
content:
<b>Show current framebuffer settings</b>`sudo fbset [[-i|--info]]`<br><b>Set a framebuffer mode defined in /etc/fb.modes</b>`sudo fbset "[800]x[600]-[60]"`<br><b>Set an arbitrary framebuffer mode</b>`sudo fbset [[-g|--geometry]] [TTY_horizontal] [TTY_vertical] [monitor_horizontal] [monitor_vertical] [color_depth]`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br><b><b>-p</b>, <b>--processes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a detailed view showing individual processes running within selected containers, along with their resource consumption.<br><br><b><b>-d</b> <i><delay></i>, <b>--delay=</b><i><delay></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the delay in seconds between screen updates. The default is typically 3 seconds.<br><br><b><b>-i</b> <i><interval></i>, <b>--interval=</b><i><interval></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <b>--delay</b> option, specifying the refresh interval.<br><br><b><b>-m</b> <i><unit></i>, <b>--memory-unit=</b><i><unit></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the unit for displaying memory usage. Possible values include <i>M</i> (megabytes) or <i>G</i> (gigabytes).<br><br><b><b>-n</b> <i><unit></i>, <b>--network-unit=</b><i><unit></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the unit for displaying network I/O. Possible values include <i>K</i> (kilobytes), <i>M</i> (megabytes), or <i>G</i> (gigabytes).<br><br><b><b>-s</b> <i><sort_key></i>, <b>--sort=</b><i><sort_key></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the column by which the container list should be sorted. Common sort keys include <i>cpu</i>, <i>mem</i>, <i>net_rx</i>, <i>net_tx</i>, or <i>name</i>.<br><br><b><b>-c</b>, <b>--show-cpu-percent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures CPU usage is displayed as a percentage, rather than raw jiffies. This is often the default behavior.<br><br>


title: DESCRIPTION
content:
<b>lxc-top</b> provides a real-time, interactive display of resource usage for Linux Containers (LXC) running on the host system. Similar to the <i>top</i> command for processes, <b>lxc-top</b> focuses specifically on containers, showing their CPU, memory, network I/O, and process counts. It leverages <i>cgroups</i> (control groups) to aggregate resource consumption at the container level. Users can view a summary of all running containers, sort them by various metrics, and even drill down to see individual processes within a selected container, offering a comprehensive overview of container performance and resource utilization. This tool is essential for system administrators and developers managing LXC environments, helping them identify resource-intensive containers and optimize system performance.


title: CAVEATS
content:
<b>lxc-top</b> relies heavily on the kernel's <i>cgroup</i> subsystem for accurate resource data. Inaccurate or incomplete data may be displayed if <i>cgroups</i> are not properly configured or if LXC containers operate in a non-standard environment.<br>It typically requires root privileges or sufficient capabilities (like <i>CAP_SYS_ADMIN</i>) to access the necessary <i>cgroupfs</i> information.


title: INTERACTIVE COMMANDS
content:
While running, <b>lxc-top</b> supports several interactive keyboard commands to control its display:<br><b>q</b>: Quit the application.<br><b>r</b>: Reverse the current sort order.<br><b>s</b>: Change the column used for sorting (prompts for new key).<br><b>d</b>: Change the update delay (prompts for new delay in seconds).<br><b>m</b>: Toggle or select the memory unit.<br><b>n</b>: Toggle or select the network I/O unit.<br><b>p</b>: Toggle the detailed process view within containers (if not already enabled via command-line option).


title: DEPENDENCIES AND PERMISSIONS
content:
<b>lxc-top</b> requires the <b>lxc</b> user space tools to be installed. It critically depends on the <i>cgroup</i> filesystem, so a Linux kernel with <i>cgroup</i> support enabled and mounted is essential. For proper operation and access to all resource metrics, it generally requires root privileges or processes running with the <i>CAP_SYS_ADMIN</i> capability.


title: HISTORY
content:
<b>lxc-top</b> is an integral part of the LXC (Linux Containers) project, which began development around 2008-2009. As LXC emerged as a lightweight virtualization solution, the need for dedicated container monitoring tools became evident. <b>lxc-top</b> was developed to provide a <i>top</i>-like interface specifically tailored for LXC, leveraging the kernel's <i>cgroup</i> subsystem to aggregate and present resource usage per container. Its development has closely tracked the LXC project's releases, reflecting updates in <i>cgroup</i> v1/v2 support and general LXC lifecycle management. It remains a specialized utility for users deeply embedded in the LXC ecosystem.


title: TLDR
content:
<b>Start lxc-top</b>`lxc-top`<br><b>Adjust update interval</b>`lxc-top [[-d|--delay]] [5]`<br><b>Sort by [n]ame, [c]pu use, [b]lock I/O, [m]emory, or [k]ernel memory</b>`lxc-top [[-s|--sort]] [n|c|b|m|k]`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's help message and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>-o</b> <i>&lt;file&gt;</i>, <b>--output</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name. Defaults to <i>input-pdf_book.pdf</i>.<br><br><b><b>-p</b> <i>&lt;pagespec&gt;</i>, <b>--pages</b> <i>&lt;pagespec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select specific pages to include (e.g., <i>1-10</i>, <i>odd</i>, <i>even</i>).<br><br><b><b>-s</b> <i>&lt;size&gt;</i>, <b>--paper</b> <i>&lt;size&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the paper size for the output PDF (e.g., <i>a4</i>, <i>letter</i>).<br><br><b><b>-m</b> <i>&lt;margin&gt;</i>, <b>--margin</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define margins around pages in millimeters (e.g., <i>10</i>). Can be a single value for all sides, or <i>left:top:right:bottom</i>.<br><br><b><b>-r</b>, <b>--rotate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically rotate pages by 90 degrees if necessary to fit the layout.<br><br><b><b>-d</b>, <b>--duplex</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assume duplex printing. Pages will be reordered for double-sided output. This is often the default behavior.<br><br><b><b>--no-duplex</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not assume duplex printing; produce output suitable for single-sided printing.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress verbose output and warnings during processing.<br><br><b><b>--odd-front</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensure odd-numbered pages are on the front side of each printed sheet.<br><br><b><b>--even-front</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensure even-numbered pages are on the front side of each printed sheet.<br><br><b><b>--landscape</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the output pages to be in landscape orientation.<br><br><b><b>--portrait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the output pages to be in portrait orientation.<br><br><b><b>--no-crop</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent cropping of input pages to their media box, preserving original page dimensions.<br><br><b><b>--sheet-align</b> <i>&lt;align&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify alignment of pages on the sheet (<i>center</i>, <i>top</i>, <i>bottom</i>).<br><br><b><b>--sheet-size</b> <i>&lt;width&gt;</i><b>x</b><i>&lt;height&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define a custom sheet size in millimeters (e.g., <i>210x297</i> for A4).<br><br><b><b>--sheet-orientation</b> <i>&lt;orientation&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set custom sheet orientation (<i>portrait</i> or <i>landscape</i>).<br><br><b><b>--sheet-margins</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply a uniform margin to all four sides of the sheet.<br><br><b><b>--booklet-layout</b> <i>&lt;layout&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Choose the layout of pages on the sheet (e.g., <i>2-up</i>, <i>4-up</i>, <i>1-up-left</i>, etc.).<br><br><b><b>--bind-left</b>, <b>--bind-right</b>, <b>--bind-top</b>, <b>--bind-bottom</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the binding edge for the booklet, affecting imposition.<br><br><b><b>--inner-margin</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an additional margin to the inner side of the booklet.<br><br><b><b>--outer-margin</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an additional margin to the outer side of the booklet.<br><br><b><b>--front-margin</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an additional margin to the front side of the booklet.<br><br><b><b>--back-margin</b> <i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an additional margin to the back side of the booklet.<br><br>


title: DESCRIPTION
content:
<b>pdfbook2</b> is a versatile command-line utility designed to transform standard PDF documents into booklet format, suitable for printing and binding. It rearranges the pages of a given PDF file into a 2-up (or other specified layouts) imposition scheme, ensuring that when printed duplex and folded, the pages appear in the correct sequential order. This tool automatically handles page ordering, rotation for optimal layout, and adds customizable margins to facilitate proper printing and trimming.<br><br>It is particularly useful for users who need to print long documents in a compact, reader-friendly booklet style from standard PDF viewers. By preparing the PDF for duplex printing, <b>pdfbook2</b> simplifies what would otherwise be a complex manual rearrangement of pages, making it accessible even to those without specialized desktop publishing software.


title: CAVEATS
content:
<b>pdfbook2</b> relies on Python and specific libraries like <i>pypdf</i> (or older <i>PyPDF2</i>) and <i>reportlab</i>. Ensure these dependencies are installed for the command to function correctly. The exact page ordering for duplex printing can vary slightly depending on your printer's duplex mechanism; it's advisable to perform a test print with a few pages to confirm the correct output orientation before printing an entire document.


title: DEPENDENCIES
content:
<b>pdfbook2</b> is written in Python. It typically requires the <i>pypdf</i> (or older <i>PyPDF2</i>) library for PDF manipulation and the <i>reportlab</i> library for generating new PDF content. These can usually be installed using pip: <br><i>pip install pypdf reportlab</i>


title: USAGE EXAMPLE
content:
To create a booklet from a file named <i>document.pdf</i>, outputting to <i>document_book.pdf</i> on A4 paper with a 10mm margin:<br><b>pdfbook2 -s a4 -m 10 -o document_book.pdf document.pdf</b><br><br>For a more specific duplex booklet, assuming <i>input.pdf</i>:<br><b>pdfbook2 --duplex --output booklet.pdf input.pdf</b>


title: HISTORY
content:
<b>pdfbook2</b> is a modern Python-based reincarnation and enhancement of earlier tools like <i>pdfbook</i>, which aimed to simplify the process of creating printable PDF booklets. Its development focuses on providing a robust, flexible, and easy-to-use command-line interface for PDF imposition, abstracting away the complexities of page reordering and layout calculations. It leverages modern Python PDF libraries to offer improved stability and feature sets, making it a valuable tool for anyone needing to prepare PDFs for professional-looking booklet printing without relying on complex graphical software.


title: TLDR
content:
<b>Create a booklet named file-book.pdf with sane defaults</b>`pdfbook2 [path/to/file.pdf]`<br><b>Create a booklet with the paper size set to A4</b>`pdfbook2 [[-p|--paper]] a4paper [path/to/file.pdf]`<br><b>Create a booklet that has the inner margin reduced to 50 pixels (default = 150px)</b>`pdfbook2 [[-p|--paper]] a4paper [[-i|--inner-margin]] 50 [path/to/file.pdf]`<br><b>Organize a large file with print signatures for binding into a larger booklet (signatures must be divisible by 4)</b>`pdfbook2 [[-p|--paper]] a4paper --signature [24] [path/to/file.pdf]`


title: PARAMETERS
content:
<b><I>&lt;vmid&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique numeric ID (VMID) of the Linux Container (LXC) that you wish to permanently destroy. This is a mandatory argument.<br><br><b><I>--force &lt;boolean&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Default: <I>0</I>) If set to <I>1</I>, the destroy operation will proceed even if the container is currently running. Using this option on a running container can lead to data corruption or unexpected behavior. Use with extreme caution.<br><br><b><I>--destroy-unreferenced-disks &lt;boolean&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Default: <I>0</I>) If set to <I>1</I>, this option will also destroy any disk volumes that are associated with the container but are no longer referenced in its configuration. This helps in cleaning up orphaned disk images.<br><br>


title: DESCRIPTION
content:
The <I>pct-destroy</I> command is a critical command-line utility within Proxmox Virtual Environment (PVE) used to permanently remove a Linux Container (LXC) from a Proxmox node.<br><br>When a container is destroyed, its configuration, all associated disk images, and any data residing within those disks are deleted from the system. This operation is irreversible and should always be used with extreme caution, as data loss is permanent.<br><br>It serves as an essential tool for system administrators to manage disk space, free up system resources, and clean up obsolete or unused containers on their Proxmox servers. The command requires the unique virtual ID (VMID) of the container as its primary argument.


title: CAVEATS
content:
<B>Irreversible Operation:</B> Destroying a container is permanent. All data, configuration, and disk images associated with the VMID will be irrecoverably lost.<BR><BR><B>Data Loss:</B> Ensure all critical data is backed up before attempting to destroy a container.<BR><BR><B>Use with Caution:</B> Always double-check the <I>VMID</I> to ensure you are destroying the correct container. Accidental deletion of a production container can lead to significant downtime and data loss.<BR><BR><B>Running Containers:</B> Using the <I>--force</I> option on a running container can lead to inconsistencies or data corruption. It is highly recommended to stop a container gracefully before destroying it.


title: IMPORTANT CONSIDERATIONS BEFORE DESTRUCTION
content:
Before executing the <I>pct destroy</I> command, it is <B>strongly recommended</B> to confirm that all necessary data within the container has been backed up. Proxmox offers integrated backup solutions (e.g., <I>vzdump</I>), but direct container destruction bypasses these mechanisms for data preservation. Always verify the <I>VMID</I> of the target container to prevent accidental deletion of an unintended or critical resource.


title: HISTORY
content:
The <I>pct</I> command-line utility set is an integral component of Proxmox Virtual Environment (PVE), which was initially released in 2007. As Proxmox VE evolved to support Linux Containers (LXC) alongside QEMU/KVM virtual machines, the <I>pct</I> commands, including <I>pct-destroy</I>, were developed to provide robust command-line management capabilities for LXC containers.<br><br>The ability to reliably create, manage, and destroy containers from the command line has been a core feature from the early stages of LXC integration within Proxmox, reflecting the project's focus on powerful and flexible system administration tools.


title: TLDR
content:
<b>Destroy a container</b>`pct [[des|destroy]] [100]`<br><b>Destroy a container even if it's running</b>`pct [[des|destroy]] [100] --force`<br><b>Also delete all references to this container</b>`pct [[des|destroy]] [100] --purge`


title: PARAMETERS
content:
<b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the particular networking operation to perform. Common subcommands include <b>create</b> (to provision new networks), <b>list</b> (to view existing resources), <b>show</b> (to display details of a specific resource), <b>set</b> (to modify properties), <b>delete</b> (to remove resources), <b>agent</b> (to manage network agents), <b>router</b> (to manage routers), <b>port</b> (to manage network ports), <b>subnet</b> (to manage IP subnets), and <b>floating ip</b> (to manage public IP addresses). Each subcommand has its own set of specific options and arguments.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the command or subcommand, detailing available options, common usage patterns, and examples. Using `openstack help network` provides an overview of network subcommands, while `openstack help network <subcommand>` gives specific help.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output, which is invaluable for troubleshooting by displaying detailed information about API requests, responses, and internal client operations.<br><br><b>--os-cloud <i>&lt;cloud_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a named cloud configuration to use, as defined in the `clouds.yaml` file (typically located in `~/.config/openstack/clouds.yaml` or `/etc/openstack/clouds.yaml`). This simplifies authentication and endpoint discovery.<br><br><b>--os-auth-url <i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The full authentication URL for the OpenStack Identity service (Keystone). This is a fundamental piece of information for the client to connect to the cloud. It can also be set via an environment variable.<br><br><b>--os-project-name <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the project (tenant) within which the operation should be performed. OpenStack resources are typically scoped to a specific project. This can also be set via an environment variable.<br><br><b>--os-username <i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The username for authenticating against the OpenStack Identity service. This is usually set via an environment variable to avoid exposing credentials on the command line.<br><br>


title: DESCRIPTION
content:
The `openstack network` command provides a comprehensive interface for managing networking resources within an OpenStack cloud environment. It is a vital part of the unified OpenStack command-line client, enabling users and administrators to programmatically interact with the Neutron (OpenStack Networking) service. This includes a wide array of operations such as creating, listing, showing details of, updating, and deleting networks, subnets, ports, routers, security groups, floating IPs, and more. It allows for detailed configuration of virtual network topologies, IP addressing schemes, and access control rules, facilitating the robust deployment and management of virtual network infrastructure essential for virtual machines and other cloud resources. The commands allow fine-grained control over network segmentation, routing, and external connectivity.


title: CAVEATS
content:
The command `openstack-network` is not a standalone executable. Instead, it refers to the collection of networking operations performed using the <b>openstack</b> unified command-line client, specifically by invoking the <b>network</b> subcommand (e.g., <b>openstack network create</b>, <b>openstack network list</b>).<br><br>Effective use requires a properly configured OpenStack environment, which typically involves setting environment variables (like OS_CLOUD, OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_PROJECT_NAME) or having a valid `clouds.yaml` configuration file.<br><br>User permissions within OpenStack are paramount; operations will fail if the authenticated user lacks the necessary roles or policies to perform the requested networking action.


title: UNIFIED CLI STRUCTURE
content:
The `openstack` client is designed with a hierarchical command structure. `<b>network</b>` acts as a top-level subcommand, grouping all operations related to OpenStack Networking. To perform an action, you combine `openstack`, the service subcommand (`network`), and then the specific operation (e.g., `<b>create</b>`, `<b>list</b>`, `<b>delete</b>`). This structure ensures consistency across all OpenStack services.


title: ENVIRONMENT VARIABLES & CONFIGURATION
content:
Most `openstack` commands, including `network` operations, rely heavily on environment variables (e.g., `OS_AUTH_URL`, `OS_USERNAME`, `OS_PROJECT_NAME`, `OS_PASSWORD`, `OS_REGION_NAME`, `OS_IDENTITY_API_VERSION`) or a `clouds.yaml` configuration file for authentication, endpoint discovery, and region selection. It is crucial to have these configured correctly before attempting to run `openstack network` commands to ensure proper connection to your OpenStack cloud.


title: HISTORY
content:
OpenStack's networking service, Neutron (originally named Quantum), provides the underlying infrastructure for these commands. Historically, OpenStack users interacted with networking services using the dedicated `neutronclient` CLI. However, with the evolution of OpenStack and its unified client, the `openstack` command-line tool, introduced around the Mitaka/Newton releases, consolidated all service interactions under a single interface. The `openstack network` subcommands thus replaced and absorbed the functionalities of the older `neutronclient`, providing a more consistent and streamlined user experience for managing all OpenStack resources.


title: TLDR
content:
<b>List all networks</b>`openstack network list`<br><b>Show details of a network</b>`openstack network show [network_id_or_name]`<br><b>Create a new network with a given name</b>`openstack network create [network_name]`<br><b>Delete a network</b>`openstack network delete [network_id_or_name]`<br><b>Enable a network</b>`openstack network set --enable [network_id_or_name]`<br><b>Disable a network</b>`openstack network set --disable [network_id_or_name]`


title: SYNOPSIS
content:
The <b>openstack subnet</b> command operates as a subcommand of the <b>openstack</b> client. Its general syntax is:<br><i><b>openstack subnet</b> <action> [options] [arguments]</i><br><br>Common actions include <i>create</i>, <i>list</i>, <i>show</i>, <i>set</i>, and <i>delete</i>. For example:<br><i><b>openstack subnet create</b> --network <network> [--name <name>] [--ip-version {4|6}] [--gateway <gateway> | --no-gateway] <cidr_or_network_name_or_id></i><br><i><b>openstack subnet list</b> [--network <network>] [--name <name>] [--ip-version {4|6}] [--long]</i>


title: PARAMETERS
content:
<b><i>--network <network></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network (ID or name) to which the subnet belongs or to filter by.<br><br><b><i>--name <name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a name to the subnet during creation or specifies a subnet by name for other actions.<br><br><b><i>--ip-version {4|6}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the IP version (4 for IPv4, 6 for IPv6) for the subnet.<br><br><b><i>--gateway <gateway></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the IP address of the gateway for the subnet.<br><br><b><i>--no-gateway</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates that the subnet should not have a gateway.<br><br><b><i>--disable-dhcp</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the DHCP service for the subnet, preventing automatic IP assignment.<br><br><b><i>--enable-dhcp</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the DHCP service for the subnet, allowing automatic IP assignment.<br><br><b><i>--allocation-pool <start=ip,end=ip></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a specific range of IP addresses within the subnet that can be allocated to instances. Can be specified multiple times.<br><br><b><i>--dns-nameserver <dns-ip></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more IP addresses of DNS servers to be used by instances on this subnet. Can be specified multiple times.<br><br><b><i>--host-route <destination=ip,nexthop=ip></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a static host route to the subnet, specifying a destination CIDR and its next hop. Can be specified multiple times.<br><br><b><i>--long</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays more detailed information when listing subnets, typically used with <i>list</i> action.<br><br><b><i>--project <project></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the project (tenant) ID or name that owns or is associated with the subnet.<br><br><b><i>--share | --no-share</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows (or disallows) the subnet to be shared across multiple projects.<br><br><b><i>--subnet-pool <subnet-pool></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses an existing subnet pool (ID or name) to automatically allocate the CIDR for the new subnet.<br><br><b><i>--prefix-length <length></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the desired prefix length for the subnet when allocated from a subnet pool.<br><br>


title: DESCRIPTION
content:
The <b>openstack subnet</b> command is a crucial part of the unified OpenStack command-line client, enabling users and administrators to manage IP subnets within an OpenStack cloud environment. It provides a comprehensive interface to perform various actions, including creating new subnets, listing existing ones, viewing detailed properties, updating configurations, and deleting subnets. Subnets are fundamental networking components that define IP address ranges and are used to allocate IP addresses to virtual machines and other cloud resources. This command allows for the precise configuration of subnet properties such as CIDR (Classless Inter-Domain Routing), IP version (IPv4 or IPv6), default gateway, DNS servers, DHCP settings, and specific IP allocation pools. It is indispensable for setting up and maintaining network connectivity for instances and other services in OpenStack.


title: CAVEATS
content:
Using the <b>openstack subnet</b> command requires an active OpenStack cloud environment. Users must be properly authenticated and possess the necessary permissions within OpenStack to perform subnet operations. A foundational understanding of networking concepts, including CIDR notation, DHCP, and routing, is highly recommended for effective use. Ensure the OpenStack Neutron (networking) service is operational.


title: ACTION-SPECIFIC HELP
content:
For detailed information and specific options pertaining to a particular <b>openstack subnet</b> action, users can invoke the help command: <i><b>openstack help subnet <action></b></i> (e.g., <i><b>openstack help subnet create</b></i>).


title: SUBNET IDENTIFIERS
content:
While subnets can often be identified by their name, using their unique ID is generally more reliable and is recommended for scripting purposes to avoid ambiguity, especially if multiple subnets share the same name.


title: HISTORY
content:
OpenStack, an open-source cloud computing platform, was first released in 2010. The <b>openstackclient</b> is the unified command-line interface, designed to consolidate and replace earlier service-specific CLI tools (like the separate Neutron client). The capabilities for managing subnets were integrated into <b>openstackclient</b> as part of its evolution, providing a consistent and streamlined way to interact with the Neutron networking service. This integration simplified cloud resource management for users and administrators by offering a single tool to interact with various OpenStack services.


title: TLDR
content:
<b>List all subnets</b>`openstack subnet list`<br><b>Show details of a specific subnet</b>`openstack subnet show [subnet_id_or_name]`<br><b>List subnets associated with a network</b>`openstack subnet list --network [network_id_or_name]`<br><b>Create a subnet with subnet range 192.168.0.0/24 in a given network</b>`openstack subnet create --network [network_id_or_name] --subnet-range 192.168.0.0/24 [subnet_name]`<br><b>Delete a subnet</b>`openstack subnet delete [subnet_id_or_name]`<br><b>Update a subnet with DNS 8.8.8.8 and set a new name</b>`openstack subnet set --dns-nameserver 8.8.8.8 --name [new_subnet_name] [subnet_id]`


title: SYNOPSIS
content:
<B>Not a standard command.</B><br><br>As 'sr' is not a standard Linux command, there is no universal synopsis. Its usage would depend entirely on its custom definition (e.g., as an alias or a script).<br><br><I>Examples of how 'sr' might be used if defined as an alias:</I><br><code>sr &lt;pattern&gt; &lt;replacement&gt; &lt;file&gt;</code> (if aliased to a search/replace command)<br><code>sr &lt;script_path&gt;</code> (if aliased to the 'source' command)


title: DESCRIPTION
content:
The command 'sr' is <B>not a standard, universally recognized Linux utility</B> found in common distributions. Unlike commands such as <I>ls</I>, <I>grep</I>, or <I>sed</I>, 'sr' does not have a predefined function or a man page within the core Linux system.<br><br>Users may encounter 'sr' in various non-standard contexts:<br>- <B>Custom Aliases or Functions:</B> It is frequently defined by individual users or system administrators as a shortcut (an alias) for more complex commands, often related to 'search and replace' operations (e.g., aliased to <I>sed</I> or <I>grep -r</I>) or to 'source' a script.<br>- <B>Script Names:</B> 'sr' might be the name of a custom shell script (e.g., <I>sr.sh</I>) created for a specific task.<br>- <B>Typographical Error:</B> It could be a typo for similar-looking standard commands like <I>strace</I>, <I>sort</I>, or <I>sed -r</I>.<br>- <B>Niche Tools:</B> In rare cases, 'sr' might refer to a command from a highly specialized, non-standard package (e.g., related to specific hardware tools or embedded systems), which is not part of the common Linux userland.<br><br>Therefore, the behavior of 'sr' is entirely dependent on how it has been defined or if it's a specific, obscure utility installed on a particular system. Without such a definition, executing 'sr' will typically result in a 'command not found' error.


title: CAVEATS
content:
<B>Command Not Found:</B> By default, on most Linux systems, 'sr' will not be recognized as a command and will result in an error message indicating it cannot be found.<br><br><B>Context-Dependent Behavior:</B> If 'sr' is defined (e.g., via an alias in <I>.bashrc</I> or <I>.zshrc</I>, or as a script in the user's PATH), its functionality, options, and arguments are entirely determined by that custom definition. There is no shared understanding of what 'sr' does across different Linux environments.


title: CHECKING FOR 'SR' DEFINITION
content:
To determine if 'sr' is defined on your system, you can use the <I>type</I> command: <br><code>type sr</code><br>This command will show if 'sr' is an alias, a function, a built-in, or a file in your PATH. If it's not defined, it will report 'sr not found'.


title: HISTORY
content:
The command 'sr' does <B>not have a documented history</B> as a standalone, standard Linux command. It has not been part of the GNU Core Utilities or other foundational Linux projects. Its 'history' in Linux usage primarily revolves around its informal adoption as a common abbreviation or alias in personal shell configurations for various 'search and replace' or 'source' operations, reflecting users' desire for shorter, more convenient command shortcuts.


title: PARAMETERS
content:
<b><I>javac_options</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;All options supported by the standard <b>javac</b> command are passed through by <b>mpijavac</b>. These can include options for specifying output directories (<I>-d</I>), source/target versions, debugging information (<I>-g</I>), and more.<br><br><b><I>source_files</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more Java source files (<I>.java</I> files) to be compiled. These are typically the files containing your MPI application code.<br><br><b><I>--version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <b>mpijavac</b> wrapper and potentially the underlying MPI library.<br><br><b><I>--help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief usage message and available options for the <b>mpijavac</b> command.<br><br><b><I>--showme</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the exact <b>javac</b> command line that <b>mpijavac</b> would execute, including the automatically added classpath and other options, without actually running it.<br><br>


title: DESCRIPTION
content:
The <b>mpijavac</b> command is a convenient wrapper script provided by MPI (Message Passing Interface) implementations, such as Open MPI or MPICH, to simplify the compilation of Java applications that utilize the MPI API.  <br><br>Essentially, it acts as a frontend to the standard Java compiler, <b>javac</b>. Its primary function is to automatically set the necessary classpath to include the MPI Java library files (e.g., <I>mpi.jar</I>). This eliminates the need for developers to manually specify the <I>-classpath</I> option when compiling MPI-enabled Java source code.  <br><br>By abstracting away the specifics of the MPI library location, <b>mpijavac</b> makes the development workflow for parallel Java applications significantly smoother, mirroring the convenience provided by wrappers like <I>mpicc</I> for C/C++ or <I>mpif90</I> for Fortran MPI programs. It ensures that the compiler can locate and link against the MPI bindings required for the program to function correctly in a parallel environment.


title: CAVEATS
content:
<b>mpijavac</b> requires a compatible Java Development Kit (JDK) to be installed and accessible in the system's PATH. It also relies on the MPI installation having been compiled and installed with Java bindings enabled. If MPI Java bindings are not correctly set up or found, <b>mpijavac</b> may fail or produce errors related to missing classes. While it simplifies compilation, the resulting Java classes still require an MPI runtime environment (e.g., <I>mpirun</I>) for parallel execution.


title: RUNNING MPI JAVA PROGRAMS
content:
After successfully compiling your Java MPI source files using <b>mpijavac</b>, the resulting <I>.class</I> files are executed using an MPI process launcher, typically <I>mpirun</I> or <I>orterun</I>. The command usually looks like: <I>mpirun -np N java MyMPIProgram</I>, where <I>N</I> is the number of processes, and <I>MyMPIProgram</I> is the main class without the <I>.class</I> extension.


title: UNDERLYING MECHANISM
content:
<b>mpijavac</b> works by invoking the standard <I>javac</I> executable with additional arguments. Crucially, it automatically adds the path to the MPI Java library (e.g., <I>/path/to/mpi/lib/mpi.jar</I>) to the <I>-classpath</I> option passed to <I>javac</I>. This ensures that all MPI-related classes and interfaces are available during compilation. It typically determines the correct MPI library path based on its own installation location or environment variables.


title: HISTORY
content:
The Message Passing Interface (MPI) standard, initially defined in the early 1990s, primarily focused on C, C++, and Fortran. As Java gained prominence, efforts were made to create Java bindings for MPI. This led to the development of specifications like MPJ API and eventually official Java bindings within the MPI-2.0 and MPI-3.0 standards. With these bindings, MPI implementations (like Open MPI, MPICH) started providing convenience wrappers such as <b>mpijavac</b> to facilitate the compilation process for Java developers, abstracting away the complexities of classpath management for MPI libraries. Its usage grew with the increasing adoption of Java for high-performance computing tasks.


title: TLDR
content:
<b>Compile a Java source file</b>`mpijavac [path/to/source_file.java]`<br><b>Pass application-specific classpaths to compiler</b>`mpijavac -cp [path/to/app.jar] [path/to/source_file.java]`<br><b>Show the flags necessary to build MPI Java applications</b>`mpijavac --showme`<br><b>Show the flags necessary to compile MPI Java applications</b>`mpijavac --showme:compile`<br><b>Show full invoked Java compiler command line</b>`mpijavac [path/to/source_file.java] --showme`


title: SYNOPSIS
content:
<b>soffice</b> [<i>options</i>] [<i>files...</i>]<br><b>soffice --convert-to</b> <i>output_format</i> [<i>:filter_name</i>] [<i>:filter_options</i>] <i>file1</i> [<i>file2...</i>] [<b>--outdir</b> <i>output_directory</i>]<br><b>soffice --print</b> <i>file1</i> [<i>file2...</i>]<br><b>soffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;"


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the LibreOffice version and exits.<br><br><b><b>--writer</b> | <b>--calc</b> | <b>--impress</b> | <b>--draw</b> | <b>--base</b> | <b>--math</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice with the specified component.<br><br><b><b>--headless</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs LibreOffice without a graphical user interface. Essential for server-side processing.<br><br><b><b>--convert-to</b> <i>&lt;output_format&gt;[:filter_name][:filter_options]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the input files to the specified output format using an optional filter.<br><br><b><b>--outdir</b> <i>&lt;directory&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output directory for converted files.<br><br><b><b>--print</b> | <b>--pt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the specified documents to the default printer.<br><br><b><b>--invisible</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice invisibly (no GUI visible, but process runs). Often used with <b>--accept</b>.<br><br><b><b>--accept="</b><i>&lt;connection_string&gt;</i><b>"</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Accepts connections from other processes (e.g., for `unoconv` or programmatic control).<br><br><b><b>--norestore</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents LibreOffice from restoring unsaved documents.<br><br><b><b>--nofork</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not fork a new process; keeps `soffice` running in the foreground.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified files in read-only mode.<br><br><b><b>--nologo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not show the splash screen at startup.<br><br><b><b>--view</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens documents in viewer mode, preventing editing.<br><br><b><b>--safe-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice in safe mode, disabling extensions and resetting user profiles.<br><br><b><b>--terminate_after_init</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits after initialization, useful for testing startup.<br><br><b><b>--skip-first-run-wizard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the first-run wizard from appearing on first launch.<br><br>


title: DESCRIPTION
content:
soffice is the main executable for LibreOffice, providing a powerful command-line interface to interact with the office suite without necessarily opening the full graphical user interface. Users can leverage soffice to perform various tasks such as opening documents, converting files between different formats (e.g., DOCX to PDF, ODT to TXT), printing documents, or running LibreOffice in a "headless" (server) mode for batch processing. It supports operations across all LibreOffice components: Writer, Calc, Impress, Draw, Base, and Math, making it a versatile tool for automation, scripting, and server-side document management. Its ability to run without a GUI makes it ideal for integration into workflows on servers or within scripts.


title: CAVEATS
content:
While powerful, `soffice` has some considerations:<br><I>GUI Dependency</I>: Some operations, especially direct opening or printing without <b>--headless</b>, may require an X server or display environment, even if the GUI is not fully displayed.<br><I>Memory Usage</I>: Even in headless mode, LibreOffice can consume significant memory, especially when converting large or numerous documents.<br><I>Process Management</I>: When running in server modes (e.g., <b>--headless --accept</b>), proper process management and termination are crucial to prevent zombie processes or resource leaks.<br><I>Filter Limitations</I>: Not all conversion filters support all features or retain perfect fidelity across complex documents. Testing is recommended for specific conversion needs.


title: USAGE IN AUTOMATION
content:
The <b>--headless</b> and <b>--convert-to</b> options are particularly useful for scripting and automation. For example, converting a directory full of DOCX files to PDF can be done with a simple shell script iterating through files and calling `soffice --headless --convert-to pdf --outdir /path/to/output_pdfs *.docx`.


title: SERVER MODE
content:
Running `soffice --headless --invisible --accept="socket,host=127.0.0.1,port=8100;urp;"` allows a single LibreOffice instance to serve multiple conversion requests. This mode is often utilized by applications like `unoconv` or custom services to avoid repeated LibreOffice startup overhead, making batch processing more efficient.


title: HISTORY
content:
The `soffice` command is the core executable of the LibreOffice suite, which originated as a fork of OpenOffice.org in 2010. OpenOffice.org itself was based on StarOffice, developed by StarDivision and later acquired by Sun Microsystems. The command-line capabilities, including headless operation and document conversion features, have been a foundational part of the suite since its early days, evolving to support new document formats and improve performance. Its robust command-line interface has made it a popular choice for document processing in server environments and automated workflows, continuing its legacy from StarOffice and OpenOffice.org as a versatile, open-source office solution.


title: TLDR
content:
<b>Open one or more files in read-only mode</b>`soffice --view [path/to/file1 path/to/file2 ...]`<br><b>Display the content of one or more files</b>`soffice --cat [path/to/file1 path/to/file2 ...]`<br><b>Print files using a specific printer</b>`soffice --pt [printer_name] [path/to/file1 path/to/file2 ...]`<br><b>Convert all .doc files in the current directory to PDF</b>`soffice --convert-to pdf *.doc`


title: SYNOPSIS
content:
<b>openstack port</b> <i>&lt;subcommand&gt;</i> [<i>options</i>] [<i>arguments</i>]<br><br>Common Subcommands:<br>  <b>create</b> <i>&lt;network&gt;</i> [<i>options</i>]           <i>Create a new network port.</i><br>  <b>delete</b> [<i>options</i>] <i>&lt;port&gt;</i> [<i>&lt;port&gt;</i> ...]      <i>Delete one or more ports.</i><br>  <b>list</b> [<i>options</i>]                             <i>List ports.</i><br>  <b>show</b> [<i>options</i>] <i>&lt;port&gt;</i>                      <i>Display port details.</i><br>  <b>set</b> [<i>options</i>] <i>&lt;port&gt;</i>                       <i>Update port attributes.</i><br>  <b>unset</b> [<i>options</i>] <i>&lt;port&gt;</i>                     <i>Unset port attributes.</i>


title: PARAMETERS
content:
<b><i>&lt;network&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name or ID of the network to which the port will be connected (primarily for <b>create</b>).<br><br><b><i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name or ID of the port to operate on (for <b>show</b>, <b>delete</b>, <b>set</b>, <b>unset</b>).<br><br><b><b>--fixed-ip</b> <i>ip-address=&lt;ip-address&gt;[,subnet=&lt;subnet&gt;]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a fixed IP address for the port, optionally associating it with a specific subnet (for <b>create</b>, <b>set</b>). Can be specified multiple times.<br><br><b><b>--security-group</b> <i>&lt;security-group&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Associate the port with a security group by name or ID (for <b>create</b>, <b>set</b>). Can be specified multiple times. Use <b>--no-security-group</b> with <b>set</b> to remove all security groups.<br><br><b><b>--enable-dhcp</b> / <b>--disable-dhcp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable DHCP for the port's fixed IP addresses (for <b>create</b>, <b>set</b>).<br><br><b><b>--device-owner</b> <i>&lt;owner&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the device owner of the port (e.g., <i>compute:nova</i> for VM ports, <i>network:router_interface</i> for router ports) (for <b>create</b>, <b>set</b>).<br><br><b><b>--mac-address</b> <i>&lt;mac-address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the MAC address for the port (for <b>create</b>, <b>set</b>).<br><br><b><b>--project</b> <i>&lt;project&gt;</i> | <b>--project-id</b> <i>&lt;project-id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter or assign the port to a specific project by name or ID (for <b>list</b>, <b>create</b>).<br><br><b><b>--description</b> <i>&lt;description&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a human-readable description for the port (for <b>create</b>, <b>set</b>).<br><br><b><b>--tag</b> <i>&lt;tag&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a tag on the port. Can be specified multiple times (for <b>create</b>, <b>set</b>).<br><br><b><b>--qos-policy</b> <i>&lt;qos-policy&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Associate the port with a QoS policy by name or ID (for <b>create</b>, <b>set</b>).<br><br>


title: DESCRIPTION
content:
The <b>openstack port</b> command is part of the OpenStack unified command-line client, used for managing network ports within an OpenStack cloud environment. Network ports are virtual connection points that attach resources (like virtual machines, routers, or load balancers) to virtual networks.<br><br>Each port is assigned a unique identifier, and typically has one or more IP addresses (fixed IPs), a MAC address, and is associated with a specific network. Ports can also be configured with security groups to control network traffic, Quality of Service (QoS) policies, and other attributes.<br><br>This command provides a comprehensive set of subcommands to perform various operations on ports, including creating new ports, listing existing ports with their details, displaying detailed information for a specific port, updating port attributes, and deleting ports. It is an essential tool for network administrators and cloud users to configure connectivity for their cloud resources.


title: CAVEATS
content:
Permissions are critical; users must have the necessary roles and policies to create, modify, or delete ports. Deleting a port that is attached to an active virtual machine or another resource will disrupt its network connectivity and may lead to instance failure or orphaned resources. Ensure the associated network and subnet exist and are correctly configured before creating ports. When assigning fixed IPs, ensure they are within the subnet's allocation pool and not already in use.


title: USAGE EXAMPLES
content:
<b><I>Create a port on a network with a specific fixed IP and security group:</I></b><br><i>openstack port create --network private-net --fixed-ip ip-address=192.168.1.10 --security-group default my-new-port</i><br><br><b><I>List all ports in a project:</I></b><br><i>openstack port list --project my-project-name</i><br><br><b><I>Show details of a specific port:</I></b><br><i>openstack port show my-new-port</i><br><br><b><I>Update a port to add a description and new security group:</I></b><br><i>openstack port set --description 'Port for web server' --security-group web-sg my-web-port</i><br><br><b><I>Delete a port:</I></b><br><i>openstack port delete my-new-port</i>


title: PORT LIFE CYCLE AND DEVICE OWNERS
content:
OpenStack ports play a crucial role in the lifecycle of various cloud resources. When a virtual machine (VM) is created, OpenStack automatically provisions a port for it, typically with a <i>device-owner</i> of <i>compute:nova</i>. Similarly, routers have ports for external and internal network interfaces (e.g., <i>network:router_interface</i>). Understanding the <i>device-owner</i> attribute helps in identifying the purpose of a port and avoiding accidental deletion of ports that are managed by other OpenStack services, which could lead to service disruptions. Manually created ports often have no initial <i>device-owner</i>, allowing them to be attached later to instances or other services.


title: HISTORY
content:
The functionality now provided by <b>openstack port</b> originated within the dedicated <i>neutron client</i> for OpenStack Networking (Neutron). As OpenStack evolved towards a unified command-line interface, the capabilities of the neutron client were gradually integrated into the generic <b>openstack</b> client. This consolidation aimed to simplify CLI interactions by providing a consistent experience across all OpenStack services, making <b>openstack port</b> the standard way to manage networking ports since the Kilo release (2015) and becoming the preferred method over the legacy <i>neutron client</i> commands.


title: TLDR
content:
<b>List all ports</b>`openstack port list`<br><b>Show detailed information about a specific port</b>`openstack port show [port_id_or_name]`<br><b>Create a port on a specific network</b>`openstack port create --network [network_id_or_name] [port_name]`<br><b>Create a port and assign it a fixed IP 192.168.1.50</b>`openstack port create --network [network_id] --fixed-ip subnet=[subnet_id],ip-address=192.168.1.50 [port_name]`<br><b>Delete a port</b>`openstack port delete [port_id_or_name]`


title: SYNOPSIS
content:
<b>VBoxManage</b> <b>modifyvm</b> <<i>vmname</i>|<i>uuid</i>> [--<i>setting1</i> <<i>value1</i>>] [--<i>setting2</i> <<i>value2</i>>] [...]<br>Example: <b>VBoxManage</b> <b>modifyvm</b> "<i>MyLinuxVM</i>" <b>--memory</b> <i>4096</i> <b>--cpus</b> <i>2</i> <b>--nic1</b> <i>bridged</i>


title: PARAMETERS
content:
<b>--name <newname></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the display name of the virtual machine.<br><br><b>--ostype <ostypeid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the operating system type of the virtual machine (e.g., <i>Linux26_64</i>, <i>Windows7_64</i>).<br><br><b>--memory <mbytes></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures the base memory size (RAM) allocated to the VM in megabytes.<br><br><b>--cpus <numcpus></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of virtual CPUs assigned to the VM.<br><br><b>--vram <mbytes></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the amount of video memory (VRAM) for the VM in megabytes.<br><br><b>--accelerate3d <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables 3D acceleration for the VM's display.<br><br><b>--accelerate2dvideo <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables 2D video acceleration.<br><br><b>--nic<1-8> <none|nat|bridged|hostonly|intnet|generic></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures the network adapter type for a specific network interface card (NIC).<br><br><b>--macaddress<1-8> <macaddr></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific MAC address for a network adapter.<br><br><b>--cableconnected<1-8> <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates connecting or disconnecting the network cable for a NIC.<br><br><b>--boot<1-4> <none|floppy|dvd|disk|net></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the boot order for the specified boot device.<br><br><b>--clipboard <disable|hosttoguest|guesttohost|bidirectional></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the clipboard sharing mode between host and guest.<br><br><b>--draganddrop <disable|hosttoguest|guesttohost|bidirectional></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the drag and drop functionality between host and guest.<br><br><b>--usb <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the USB controller for the VM.<br><br><b>--usbehci <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the USB EHCI (USB 2.0) controller.<br><br><b>--usbxhci <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the USB xHCI (USB 3.0) controller.<br><br><b>--vrde <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the VirtualBox Remote Desktop Extension (VRDE) server.<br><br><b>--uart<1-2> <off|port|file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures a serial port, either off, connected to a host port, or a file.<br><br><b>--guestcontrol <on|off></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the guest control interface for running guest commands.<br><br>


title: DESCRIPTION
content:
The <b>VBoxManage modifyvm</b> command is a powerful utility within Oracle VM VirtualBox that allows users to change a wide range of configuration settings for an existing virtual machine (VM). It provides granular control over hardware aspects like memory, CPU count, video memory, network adapters, storage controllers, and USB devices, as well as software features such as clipboard sharing, drag and drop, and VRDP (VirtualBox Remote Desktop Protocol) settings. This command is essential for advanced VM management, automation scripts, and adjusting VM configurations without using the graphical user interface, making it a cornerstone for headless server environments or large-scale VM deployments. Most modifications require the VM to be powered off or in a saved state before they can take effect.


title: CAVEATS
content:
Most configuration changes made with <b>modifyvm</b> require the virtual machine to be in a powered off or saved state to take effect. Trying to modify certain settings on a running VM may result in an error.<br>Incorrectly configured settings, especially concerning hardware resources (memory, CPUs), can lead to performance issues, instability, or prevent the VM from starting.<br>Features like clipboard sharing, drag and drop, and certain display options often rely on the VirtualBox Guest Additions being installed and running within the guest operating system.


title: EXTENSIVE OPTIONS
content:
The <b>modifyvm</b> command offers an exceptionally large number of configurable parameters, far more than can be listed concisely. For a comprehensive list of all available options and their detailed usage, refer to the official Oracle VM VirtualBox User Manual or execute <b>VBoxManage modifyvm --help</b> on your system.


title: SCRIPTING AND AUTOMATION
content:
Due to its command-line nature, <b>modifyvm</b> is widely used in shell scripts and other automation frameworks to provision, configure, and manage VirtualBox VMs in an unattended manner, facilitating rapid deployment and consistent environments.


title: HISTORY
content:
The <b>VBoxManage</b> command-line utility, including its <b>modifyvm</b> subcommand, has been a core component of VirtualBox since its early days under InnoTek. It has consistently served as the primary non-GUI interface for managing and configuring virtual machines. Over its development history, through its acquisition by Sun Microsystems and later Oracle, the <b>modifyvm</b> command has evolved significantly, gaining a vast array of new options and parameters to support the ever-expanding features and capabilities of VirtualBox. Its robust command-line interface has made it indispensable for system administrators, developers, and cloud orchestration tools requiring programmatic control over virtual environments.


title: SEE ALSO
content:
VBoxManage createvm(1), VBoxManage showvminfo(1), VBoxManage startvm(1), VBoxManage controlvm(1), VBoxManage clonevm(1), VBoxManage storageattach(1)


title: TLDR
content:
<b>Rename the VM</b>`VBoxManage modifyvm [uuid|vm_name] --name [new_name]`<br><b>Adjust memory and CPU</b>`VBoxManage modifyvm [uuid|vm_name] --memory [2048] --cpus [2]`<br><b>Enable Remote Display (VRDE)</b>`VBoxManage modifyvm [uuid|vm_name] --vrde on`<br><b>Enable session recording</b>`VBoxManage modifyvm [uuid|vm_name] --recording on`


title: SYNOPSIS
content:
<i><b>openstack flavor</b> &lt;subcommand&gt; [<i>--options</i>] [<i>&lt;arguments&gt;</i>]</i><br><br><i>Common Subcommands:</i><br> <b>list</b> [<i>--all</i> | <i>--public</i> | <i>--private</i> | <i>--long</i>]<br> <b>show</b> <i>&lt;flavor&gt;</i><br> <b>create</b> [<i>--id &lt;uuid&gt;</i>] <i>--ram &lt;MiB&gt; --disk &lt;GiB&gt; --vcpus &lt;count&gt;</i> [<i>--ephemeral &lt;GiB&gt;</i>] [<i>--swap &lt;MiB&gt;</i>] [<i>--rxtx-factor &lt;factor&gt;</i>] [<i>--public</i> | <i>--private</i>] <i>&lt;name&gt;</i><br> <b>set</b> [<i>--name &lt;new-name&gt;</i>] [<i>--property &lt;key=value&gt;</i>] <i>&lt;flavor&gt;</i><br> <b>unset</b> [<i>--property &lt;key&gt;</i>] <i>&lt;flavor&gt;</i><br> <b>delete</b> <i>&lt;flavor&gt;</i> [<i>&lt;flavor&gt; ...</i>]<br> <b>access add</b> <i>&lt;flavor&gt; &lt;project&gt;</i><br> <b>access remove</b> <i>&lt;flavor&gt; &lt;project&gt;</i>


title: PARAMETERS
content:
<b><i>&lt;flavor&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name or ID of the flavor to operate on.<br><br><b><i>--ram &lt;MiB&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Amount of RAM in MiB for a new flavor (required for <b>create</b>).<br><br><b><i>--disk &lt;GiB&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the root disk in GiB for a new flavor (required for <b>create</b>).<br><br><b><i>--vcpus &lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of virtual CPUs for a new flavor (required for <b>create</b>).<br><br><b><i>--ephemeral &lt;GiB&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the ephemeral disk in GiB (optional for <b>create</b>).<br><br><b><i>--swap &lt;MiB&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the swap disk in MiB (optional for <b>create</b>).<br><br><b><i>--rxtx-factor &lt;factor&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rate of network I/O in relation to the overall system (optional for <b>create</b>).<br><br><b><i>--public</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes the flavor public (visible to all projects) (for <b>create</b>/<b>set</b>).<br><br><b><i>--private</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes the flavor private (visible only to the creating project) (for <b>create</b>/<b>set</b>).<br><br><b><i>--id &lt;uuid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A unique UUID to assign to the new flavor instead of a generated one (optional for <b>create</b>).<br><br><b><i>--property &lt;key=value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set an extra specification (key-value pair) on the flavor (for <b>set</b>).<br><br><b><i>--all</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all flavors, including private ones not owned by the current project (for <b>list</b>).<br><br><b><i>--long</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List additional details about flavors, such as extra specs (for <b>list</b>).<br><br>


title: DESCRIPTION
content:
The <b>openstack flavor</b> command (part of the <i>python-openstackclient</i>) is a fundamental tool for cloud administrators and users to manage <i>flavors</i> within an OpenStack environment.<br>Flavors define the computing resources (CPU, RAM, disk) available to virtual machine instances. This command provides a comprehensive interface to list, create, show details of, modify, and delete flavors. It enables the definition of resource limits and capabilities for instances, ensuring consistent resource allocation and billing.<br>Common operations include creating custom flavors for specific workloads, managing public and private access to flavors, and inspecting existing flavor definitions. Proper flavor management is crucial for efficient resource utilization, cost management, and reliable instance provisioning in any OpenStack cloud.


title: CAVEATS
content:
The <b>openstack flavor</b> command requires the <i>python-openstackclient</i> to be installed and configured with appropriate access to an OpenStack cloud.<br>Permissions are critical for creating, modifying, or deleting flavors; insufficient privileges will result in errors.<br>Flavor core properties (RAM, disk, vCPUs) cannot be modified after creation; only extra specs and visibility can be updated.<br>Deleting flavors that are currently in use by active virtual machine instances is generally prevented by OpenStack to maintain system stability.


title: <I>FLAVOR EXTRA SPECS</I>
content:
Extra specs are arbitrary key-value pairs that can be associated with a flavor, allowing for additional capabilities or requirements beyond the basic RAM, disk, and vCPU. These can be used by schedulers or services to enforce specific hardware features, resource policies, or billing tags.<br>They are managed using the <b>openstack flavor set --property &lt;key=value&gt;</b> and <b>openstack flavor unset --property &lt;key&gt;</b> commands.


title: <I>PUBLIC VS. PRIVATE FLAVORS</I>
content:
By default, flavors are <i>public</i> and visible to all projects within the OpenStack cloud. <i>Private</i> flavors, on the other hand, are only visible to the project that created them, or to specific projects explicitly granted access via the <b>openstack flavor access add</b> and <b>openstack flavor access remove</b> subcommands.<br>This distinction allows cloud administrators to offer controlled resource configurations tailored to specific tenants or use cases.


title: HISTORY
content:
The <b>openstack flavor</b> command is an integral part of the <i>python-openstackclient</i>, a unified command-line interface designed to interact with various OpenStack services. Before its introduction, users typically relied on service-specific CLIs, such as <i>nova-client</i> for flavor management.<br>The unified client, which began consolidating various service clients around 2014, aimed to simplify OpenStack interactions by providing a consistent and cohesive interface across all services. This consolidation significantly improved the user experience, making flavor management more streamlined and accessible through a single, powerful command-line tool.


title: TLDR
content:
<b>List all flavors</b>`openstack flavor list`<br><b>Show details of a flavor</b>`openstack flavor show [flavor_id_or_name]`<br><b>Create a new flavor with 2 vCPUs, 4GB RAM, and 20GB disk</b>`openstack flavor create [flavor_name] --vcpus 2 --ram 4096 --disk 20`<br><b>Delete a flavor</b>`openstack flavor delete [flavor_id_or_name]`<br><b>Create a flavor with 10GB ephemeral disk and 512MB swap space</b>`openstack flavor create [flavor_name] --vcpus 4 --ram 8192 --disk 40 --ephemeral 10 --swap 512`


title: SYNOPSIS
content:
<b>kubectl exec</b> <I>POD</I> [-c <I>CONTAINER</I>] [--] <I>COMMAND</I> [<I>ARGS</I>...]<br><b>kubectl exec</b> [-i] [-t] <I>POD</I> [-c <I>CONTAINER</I>] [--] <I>COMMAND</I> [<I>ARGS</I>...]


title: PARAMETERS
content:
<b><I>POD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the pod where the command will be executed.<br><br><b>-c, --container <I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the container to execute the command in. If omitted, the first container in the pod is used.<br><br><b>-i, --stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass <b>stdin</b> to the container, enabling interactive input. Essential for interactive shell sessions.<br><br><b>-t, --tty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allocate a pseudo-TTY (terminal). Required for an interactive shell experience with proper line editing and cursor control.<br><br><b>--</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A separator. Any arguments after <b>--</b> are treated as the command and its arguments, useful when the command itself starts with a hyphen.<br><br><b><I>COMMAND</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The command to execute inside the container.<br><br><b>[<I>ARGS</I>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments for the command being executed.<br><br>


title: DESCRIPTION
content:
<b>kubectl exec</b> is a fundamental command in Kubernetes that allows users to execute arbitrary commands inside a running container within a pod. It provides a secure way to interact directly with your containerized applications for debugging, troubleshooting, and administrative tasks, without needing to SSH into the host node. This command can capture output, and optionally pass input, simulating a shell-like experience. <br><br>Unlike <b>kubectl attach</b>, which connects to the main process of a container, <b>kubectl exec</b> spins up a new process for the specified command. It's widely used to inspect file systems, check network configurations, run diagnostic tools, or perform one-off scripts directly within the container's isolated environment. When combined with the <b>-i</b> (interactive) and <b>-t</b> (TTY) flags, it enables a powerful, interactive shell session inside the target container.


title: CAVEATS
content:
<b>No Default Shell:</b> Containers often do not have common shells like <b>bash</b> or <b>sh</b> installed at standard paths, or they might not be in the container's PATH. You may need to specify the full path (e.g., <i>/bin/sh</i>) or ensure the shell is available.<br><br><b>Security Implications:</b> Granting <b>exec</b> permissions (specifically <i>create</i> on <i>pods/exec</i>) allows users to run arbitrary code inside your containers, which can be a significant security risk. Use Role-Based Access Control (RBAC) to restrict access carefully.<br><br><b>Ephemeral Nature:</b> Commands run via <b>exec</b> are temporary. Any changes made to the container's filesystem are lost when the container is restarted or recreated, unless they are within mounted volumes.<br><br><b>Command Availability:</b> The command you intend to execute must be present and executable within the container's environment.


title: HOW IT WORKS
content:
When you run <b>kubectl exec</b>, the Kubernetes API server receives the request and proxies it to the Kubelet agent running on the node hosting the target pod. The Kubelet then instructs the container runtime (e.g., containerd, Docker) to execute the specified command within the container's namespace. The output and input are streamed back through this proxy connection, providing a seamless user experience.


title: INTERACTIVE SHELL USAGE
content:
The most common and powerful usage pattern for <b>kubectl exec</b> is to obtain an interactive shell inside a container. This is typically achieved using the command: <b>kubectl exec -it &lt;pod-name&gt; -- /bin/sh</b> (or <b>/bin/bash</b>). This allows for a rich debugging experience directly within the container's runtime context.


title: HISTORY
content:
<b>kubectl exec</b> has been a core and indispensable part of the <b>kubectl</b> command-line tool since the early days of Kubernetes. Its introduction provided a crucial mechanism for direct interaction with containerized applications, complementing logging and port-forwarding functionalities. It quickly became the go-to tool for developers and operators for in-depth debugging, allowing them to step into the container's environment to diagnose issues that weren't apparent from logs alone. Its development focused on providing a robust, secure, and reliable way to execute commands remotely, leveraging Kubernetes' internal communication channels.


title: TLDR
content:
<b>Open Bash in a pod, using the first container by default</b>`kubectl exec [pod_name] [[-it|--stdin --tty]] -- bash`


title: SYNOPSIS
content:
<code>monolith</code> [<i>OPTIONS</i>] <i>URL</i>...<br><code>monolith</code> [<i>OPTIONS</i>] - (to read HTML from standard input)


title: PARAMETERS
content:
<b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's version and exit.<br><br><b>-o, --output <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name (defaults to standard output).<br><br><b>-a, --no-audio</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed audio elements.<br><br><b>-v, --no-video</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed video elements.<br><br><b>-i, --no-images</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed image elements.<br><br><b>-f, --no-fonts</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed web fonts.<br><br><b>-j, --no-js</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed JavaScript code.<br><br><b>-s, --no-css</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed CSS stylesheets.<br><br><b>-c, --no-canvas</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed canvas elements.<br><br><b>-m, --no-manifest</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed web app manifest files.<br><br><b>-p, --no-frames</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed iframe or frame elements.<br><br><b>-x, --no-xmp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed XMP metadata.<br><br><b>-k, --no-svg</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed SVG elements.<br><br><b>-t, --timeout <seconds></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the network request timeout in seconds.<br><br><b>-r, --retries <num></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of network request retries.<br><br><b>-U, --user-agent <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a custom User-Agent string for requests.<br><br><b>-H, --header <key:value>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set custom HTTP headers (can be specified multiple times).<br><br><b>-b, --base-url <URL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the base URL for resolving relative paths.<br><br><b>-d, --document-root <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the document root for resolving local relative paths.<br><br><b>-P, --pretty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pretty-print the output HTML for readability.<br><br><b>-l, --level [0|1|2|3]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the log level (0: quiet, 1: error, 2: info, 3: debug).<br><br><b>-S, --silent</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all output except errors.<br><br><b>-e, --exclude <regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude resources whose URLs match the provided regular expression.<br><br><b>-I, --include <regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include only resources whose URLs match the provided regular expression.<br><br><b>--isolate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Isolate resources to the same domain as the document.<br><br><b>--keep-links</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not rewrite external links (they will remain external).<br><br><b>--backend [requests|playwright]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the rendering backend (e.g., <i>requests</i> for simple fetches, <i>playwright</i> for complex JS rendering).<br><br><b>--disable-strict-ssl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable strict SSL certificate verification.<br><br><b>--encoding <encoding></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the input HTML encoding.<br><br><b>--user <username:password></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide HTTP Basic Authentication credentials.<br><br><b>--no-robots</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore <i>robots.txt</i> directives.<br><br><b>--no-content-security-policy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not remove Content-Security-Policy headers.<br><br><b>--host <host></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bind to a specific host address for network requests.<br><br><b>--proxy <proxy_url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a proxy for network requests (e.g., <i>http://localhost:8080</i>).<br><br><b>--skip-inlined</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip processing of inlined resources (e.g., base64 data URIs).<br><br><b>--ignore-errors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continue processing even if errors occur during resource fetching.<br><br><b>--disable-css-float</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable CSS float processing.<br><br><b>--disable-media-query</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable media query processing.<br><br><b>--no-shadow-dom</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not embed shadow DOM content.<br><br><b>--unreadable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make the output HTML unreadable (opposite of <i>--pretty</i>).<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable colored output for logs.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br>


title: DESCRIPTION
content:
<code>monolith</code> is a powerful command-line utility designed to <b>archive web pages into a single, self-contained HTML file</b>. It intelligently embeds external assets such as <i>images, CSS stylesheets, JavaScript code, fonts, and other media</i> directly into the HTML document. This unique capability makes the archived page fully functional offline, eliminating dependencies on external servers or internet connectivity for linked resources.<br><br>It serves as an excellent tool for various purposes, including <b>offline reading, long-term archival, content sharing, and creating portable web documents</b>. <code>monolith</code> provides extensive options to control which asset types are embedded, how external links are handled, and the output format, offering a highly customizable archiving experience. Its simplicity and effectiveness make it a go-to solution for preserving dynamic web content in a static, accessible format.


title: CAVEATS
content:
<code>monolith</code> is not a standard component of most Linux distributions; it typically requires manual installation (e.g., via <i>pip</i>).<br>It relies on external Python libraries (such as <i>requests</i> and <i>lxml</i>) and optionally headless browsers (like <i>Playwright</i>) for advanced rendering capabilities.<br>Complex JavaScript-driven applications or dynamically loaded content might not render perfectly if the tool cannot execute all JavaScript or if content relies on external API calls not captured.<br>Archiving very large or complex web pages can consume significant memory and CPU resources.<br>Security implications exist if used to process untrusted URLs, as it downloads and processes external content.


title: INSTALLATION
content:
<code>monolith</code> is typically installed using Python's package manager, <i>pip</i>:<br><i>pip install monolith</i><br><br>For advanced rendering with JavaScript execution, you might need to install <i>Playwright</i> and its browser binaries:<br><i>pip install 'monolith[playwright]'<br>playwright install</i>


title: USAGE EXAMPLES
content:
Archive a web page and save it to a file:<br><i>monolith https://example.com -o example.html</i><br><br>Archive a page without embedding images or JavaScript:<br><i>monolith -i -j https://example.com -o no_media.html</i><br><br>Pretty-print the output HTML for readability:<br><i>monolith --pretty https://example.com -o pretty_example.html</i><br><br>Archive a local HTML file from standard input:<br><i>cat my_local_page.html | monolith -o archived_local.html</i>


title: HISTORY
content:
The <code>monolith</code> command-line tool, particularly the Python implementation by <i>Yash Kandarkori</i>, emerged to address the growing need for a simple and robust way to archive web pages into a single, portable file. Traditional browser 'save as' features often create complex folders of assets, while <code>monolith</code> streamlines this by embedding all necessary assets directly into the HTML.<br><br>Leveraging Python's powerful libraries like <i>lxml</i> for parsing HTML and <i>requests</i> for handling HTTP, its development focused on creating a highly customizable and dependency-free output. It quickly gained traction among users requiring offline access, long-term preservation, and simplified sharing of web content, evolving to support various asset types and advanced rendering options over time.


title: SEE ALSO
content:
wget(1): Command-line utility for retrieving files using HTTP, HTTPS, and FTP. Primarily for downloading, not single-file archiving., curl(1): A versatile command-line tool for transferring data with URLs. Similar to <i>wget</i>, but more focused on data transfer., httrack(1): A free, open-source web crawler that allows you to download a World Wide Web site from the Internet to a local directory, building recursively all directories, getting HTML, images, and other files from the server to your computer., ArchiveBox (tool): A more comprehensive self-hosted web archiving solution, often used for personal archives., SingleFile (browser extension): A browser-based tool that saves a complete web page as a single HTML file, similar to <code>monolith</code> but integrated within a web browser.


title: TLDR
content:
<b>Save a webpage as a single HTML file</b>`monolith [url]`<br><b>Save a webpage as a single HTML file, excluding audio</b>`monolith [url] [[-a|--no-audio]]`<br><b>Save a webpage as a single HTML file, excluding CSS</b>`monolith [url] [[-c|--no-css]]`<br><b>Save a webpage as a single HTML file, excluding images</b>`monolith [url] [[-i|--no-images]]`<br><b>Save a webpage as a single HTML file, excluding videos</b>`monolith [url] [[-v|--no-video]]`<br><b>Save a webpage as a single HTML file, excluding JavaScript</b>`monolith [url] [[-j|--no-js]]`<br><b>Save a webpage as a single HTML file, accepting invalid TLS certificates</b>`monolith [url] [[-k|--insecure]]`<br><b>Save a webpage as a single HTML file, specifying a specific output file</b>`monolith [url] [[-o|--output]] [path/to/file.html]`


title: SYNOPSIS
content:
nerdctl [global options] command [command options] [arguments...]<br><br><b>Examples:</b><br><i>nerdctl run -p 8080:80 nginx</i><br><i>nerdctl build -t myapp .</i><br><i>nerdctl ps -a</i><br><i>nerdctl compose up -d</i>


title: PARAMETERS
content:
<b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output for detailed troubleshooting.<br><br><b>--address / -a <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the address of the <i>containerd</i> socket (e.g., <i>/run/containerd/containerd.sock</i>).<br><br><b>--namespace / -n <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the <i>containerd</i> namespace to use for commands (e.g., <i>default</i>, <i>k8s.io</i>). Isolates resources.<br><br><b>--snapshotter <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the <i>containerd</i> snapshotter to use (e.g., <i>overlayfs</i>, <i>btrfs</i>, <i>aufs</i>, <i>native</i>). Controls image layering.<br><br><b>--storage-backend <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select the storage backend (e.g., <i>containerd</i>, <i>ipsw</i>, <i>nydus</i>). Note: Only <i>containerd</i> is stable and recommended for general use.<br><br><b>--data-root <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the root directory for <i>containerd</i> data and configuration (defaults to <i>/var/lib/containerd</i>).<br><br><b>--cni-path <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide the path to CNI plugin binaries (e.g., <i>/opt/cni/bin</i>), essential for network functionality.<br><br><b>--cni-netconfpath <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the path to CNI network configuration files (e.g., <i>/etc/cni/net.d</i>).<br><br><b>--insecure-registry <registry></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip TLS certificate verification for the specified image registry, useful for local or private registries.<br><br><b>--host-gateway <ip-address></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the IP address to be used for the <i>host.docker.internal</i> entry within container's <i>/etc/hosts</i>.<br><br><b>--help / -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for global options or a specific subcommand.<br><br><b>--version / -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the <i>nerdctl</i> client version and <i>containerd</i> server information.<br><br><b><i>(Subcommand-specific Options)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each <i>nerdctl</i> subcommand (e.g., <i>run</i>, <i>build</i>, <i>pull</i>, <i>exec</i>) has its own extensive set of specific options. For instance, <i>nerdctl run</i> includes options like <i>-p</i> (publish ports), <i>-v</i> (bind mounts), <i>--name</i> (assign a name), <i>--rm</i> (auto-remove container), <i>--net</i> (network mode), etc. For detailed information on a specific command's options, use <i>nerdctl [command] --help</i> (e.g., <i>nerdctl run --help</i>).<br><br>


title: DESCRIPTION
content:
<i>nerdctl</i> is a command-line interface (CLI) tool that provides a user experience highly similar to the Docker CLI, but it interacts directly with the <i>containerd</i> runtime. Developed as part of the <i>containerd</i> project itself, its primary goal is to offer a familiar and intuitive way for users to manage containers and images without relying on the traditional Docker daemon. <br><br>It supports a wide range of common container operations, including <b>pulling</b> and <b>pushing</b> images, <b>running</b> and <b>stopping</b> containers, managing <b>volumes</b> and <b>networks</b>, inspecting resources, and even orchestrating multi-container applications via <b>nerdctl compose</b>. <i>nerdctl</i> leverages <i>containerd</i>'s robust and OCI-compliant capabilities, making it a powerful and lightweight alternative for container management, particularly in environments where direct interaction with <i>containerd</i> is preferred, such as Kubernetes nodes or minimalist server setups. It aims for a high degree of compatibility with Docker CLI commands, making the transition for Docker users relatively seamless while providing the architectural benefits of <i>containerd</i>.


title: CAVEATS
content:
While <i>nerdctl</i> strives for high compatibility, it is not 100% feature-complete or behaviorally identical to the Docker CLI in every edge case or obscure scenario. Users might encounter minor differences, especially with advanced inspection output or highly specific networking configurations.<br><br>It functions as a client to <i>containerd</i> and therefore requires a running <i>containerd</i> daemon to operate; <i>nerdctl</i> itself does not replace the daemon.<br><br>Network management within <i>nerdctl</i> typically leverages CNI (Container Network Interface) plugins, which might require separate setup and configuration compared to Docker's native networking stack. This can be a point of difference for users accustomed to Docker's integrated network capabilities.


title: COMPOSE SUPPORT
content:
<i>nerdctl</i> integrates a <b>compose</b> subcommand (e.g., <i>nerdctl compose up</i>, <i>nerdctl compose down</i>) that mirrors the functionality of <i>docker compose</i>. This allows users to define and run multi-container applications using standard Compose files (typically named <i>docker-compose.yaml</i> or <i>compose.yaml</i>), providing a consistent experience for application orchestration.


title: ROOTLESS MODE
content:
A significant feature of <i>nerdctl</i> is its robust support for <b>rootless mode</b>. This enables non-root users to create, run, and manage containers without requiring elevated privileges on the host system. Running containers in rootless mode greatly enhances security by minimizing the potential impact of container escapes or vulnerabilities.


title: BUILDKIT INTEGRATION
content:
For building container images, <i>nerdctl build</i> leverages <b>BuildKit</b>, a powerful and highly efficient toolkit for building container images from Dockerfiles. This integration provides advanced build features such as improved caching, parallel build steps, multi-stage build optimizations, and enhanced security, leading to faster and more reliable image creation.


title: HISTORY
content:
<i>nerdctl</i> was developed by the <i>containerd</i> project maintainers and contributors to provide a user-friendly, Docker-compatible command-line interface directly for <i>containerd</i>. Its creation was motivated by the evolving container ecosystem, where <i>containerd</i> became the industry-standard core container runtime (even used by the Docker daemon itself). <br><br>Recognizing the need for a familiar CLI that could operate independently of the Docker daemon, <i>nerdctl</i> was designed to fill this gap, offering a lightweight and direct interface to <i>containerd</i>'s capabilities. It has become particularly popular in Kubernetes environments, where <i>containerd</i> is often the chosen container runtime, and for users who prefer a more direct and efficient way to manage their container infrastructure.


title: PARAMETERS
content:
<b><i>vmid</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique numeric ID of the Linux Container for which to retrieve or set configuration. This is a mandatory argument.<br><br><b><b>--arch</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the container's architecture (e.g., amd64, i386).<br><br><b><b>--cpu</b> <i><integer></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of CPU cores allocated to the container.<br><br><b><b>--cpulimit</b> <i><integer></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the CPU limit as a percentage (100 for one CPU core). Values can range from 1 to 10000.<br><br><b><b>--description</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a descriptive text for the container, visible in the Proxmox web interface.<br><br><b><b>--hostname</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the container's hostname.<br><br><b><b>--memory</b> <i><integer></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the memory limit for the container in MB.<br><br><b><b>--net</b><i><N></i> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configure network device N (e.g., '<b>--net0</b> bridge=vmbr0,ip=dhcp'). Multiple network devices can be configured (net0, net1, etc.).<br><br><b><b>--onboot</b> <i><boolean></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable automatic container startup on host boot (0=no, 1=yes).<br><br><b><b>--ostype</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the operating system type for the container (e.g., debian, ubuntu, centos, fedora, gentoo, suse, alpine, archlinux).<br><br><b><b>--rootfs</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the root filesystem of the container (e.g., 'local-lvm:10', specifying storage and size in GB).<br><br><b><b>--swap</b> <i><integer></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the swap space for the container in MB.<br><br><b><b>--unprivileged</b> <i><boolean></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Convert container to/from unprivileged status (0=privileged, 1=unprivileged). This setting is critical for security and usually requires container recreation.<br><br><b><b>--nameserver</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set custom DNS nameservers for the container.<br><br><b><b>--searchdomain</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set DNS search domains for the container.<br><br><b><b>--features</b> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable specific container features (e.g., 'nesting=1,keyctl=1').<br><br><b><b>--mountpoint</b><i><N></i> <i><string></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configure mount point N for additional storage (e.g., '<b>--mountpoint0</b> mp=/var/www,volume=local:10/subvol-100-disk-1.raw').<br><br>


title: DESCRIPTION
content:
<i>pct-config</i> is a command-line utility within the Proxmox Virtual Environment (PVE) used for managing configuration parameters of Linux Containers (LXC). It provides a unified interface to both query and modify various aspects of a container's setup, such as resource limits (memory, CPU), network interfaces, storage, boot behavior, and more. When invoked with only a <i>vmid</i>, it displays the current configuration of the specified container. When invoked with specific options, it applies changes to the container's configuration. This tool is crucial for administrators to fine-tune container performance, resource allocation, and integrate containers seamlessly into the Proxmox cluster environment, ensuring consistency and proper validation for all configuration changes.


title: CAVEATS
content:
This command is specific to Proxmox Virtual Environment (PVE) installations and is used exclusively for managing LXC containers. Changes made using <i>pct config</i> are applied to the container's configuration file immediately. However, some modifications (e.g., CPU, memory) may require the container to be restarted to take full effect. Changing the 'unprivileged' status of a container effectively requires a new container to be created and data migrated, as it fundamentally alters the container's security context.


title: DISPLAYING CURRENT CONFIGURATION
content:
When <i>pct config <vmid></i> is executed without any specific configuration options (i.e., no '<b>--</b>' flags), it prints the current, full configuration of the specified LXC container to the standard output. This functionality is invaluable for reviewing existing settings, troubleshooting, or preparing to make informed changes to a container's setup.


title: APPLYING CONFIGURATION CHANGES
content:
When <i>pct config <vmid></i> is executed with one or more configuration options, it attempts to apply those changes to the specified container. Proxmox performs internal validation checks to ensure the proposed configuration is valid and compatible with the system. If successful, the container's configuration file (located typically under <i>/etc/pve/lxc/<vmid>.conf</i>) is updated. Users should be aware that while the configuration file is updated immediately, the running container may need to be stopped and started again for all changes to take effect, particularly for resource-related adjustments.


title: HISTORY
content:
The <i>pct-config</i> command is an integral part of the Proxmox Virtual Environment, a Debian-based open-source server virtualization management solution. It was developed as a key component of the <i>pct</i> (Proxmox Container Toolkit) utility to provide a consistent and user-friendly interface for managing Linux Containers (LXC). Its evolution mirrors the increasing adoption and feature set of LXC within Proxmox VE, offering robust control over container parameters without direct manipulation of underlying configuration files, thereby enhancing management efficiency and reducing errors in complex virtualization environments. It complements the <i>qm</i> command used for KVM virtual machines.


title: SYNOPSIS
content:
<b>systemctl status</b> <i>[OPTIONS...]</i> <i>[UNIT...]</i><br><br>Displays status for specified <i>UNIT</i>s. If no <i>UNIT</i> is given, a short system status is shown.


title: PARAMETERS
content:
<b>--no-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not pipe output into a pager (e.g., 'less').</i><br><br><b>--full, -l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show full output lines without truncation.</i><br><br><b>--lines=<number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Control the number of journal lines shown in the output.</i><br><br><b>--output=<format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Format the journal output, e.g., 'json', 'short', 'cat'.</i><br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Operate on the user systemd instance, not the system-wide one.</i><br><br>


title: DESCRIPTION
content:
<i>systemctl status</i> is a fundamental command for inspecting the current state of <b>systemd units</b> on a Linux system. It provides a detailed overview of whether a service, socket, mount point, or other unit type is active, loaded, and enabled.<br><br>When invoked with a specific unit name (e.g., `apache2.service`), it displays its `Loaded`, `Active`, and `Sub` states, recent log entries from `journalctl`, process IDs (`Main PID`), and CGroup information. This command is invaluable for troubleshooting services, verifying their operation, and understanding their runtime behavior. Without a specified unit, it provides a concise summary of the overall system status, often highlighting failed units. Its output is typically paginated, allowing for easy navigation through potentially long logs and status details. It serves as the primary tool for administrators and developers to monitor the health and performance of their system's components managed by systemd.


title: CAVEATS
content:
<i>systemctl status</i> typically requires <b>root privileges</b> or `sudo` to view status for most system-wide units. Output can be extensive and is often piped to a pager like `less`, which might require pressing `q` to exit. If a specified unit does not exist or its name is incorrect, the command will report "<i>Unit UNIT_NAME could not be found.</i>"


title: INTERPRETING OUTPUT FIELDS
content:
When viewing the status of a specific unit, you'll see several key fields:<br><ul><li><b>Loaded:</b> Indicates if the unit definition file was loaded. <i>(loaded)</i> means it's recognized.</li><li><b>Active:</b> Shows the unit's runtime state. <i>(active)</i> indicates running; <i>(inactive)</i> stopped; <i>(failed)</i> encountered an error.</li><li><b>Docs:</b> Provides links to relevant documentation, if available.</li><li><b>Main PID:</b> The Process ID of the unit's main process.</li><li><b>CGroup:</b> The control group path for the unit, useful for resource management.</li><li><b>Lines from journal:</b> Recent log entries related to the unit, providing valuable insight into its operations and any errors.</li></ul>


title: HISTORY
content:
<b>systemctl</b> and the broader <b>systemd</b> init system were developed as replacements for the traditional SysVinit and Upstart systems. Introduced in 2010 and widely adopted, `systemd` aimed to improve boot times, provide better dependency management, and offer more comprehensive service control. <i>systemctl status</i> emerged as the direct successor to commands like `<i>service status</i>` (from SysVinit) or checking process lists, offering a unified and richer interface for monitoring system components.


title: SEE ALSO
content:
journalctl(1): <i>For comprehensive log analysis and filtering.</i>, systemctl(1): <i>The main command for controlling the systemd system and service manager.</i>, systemctl start(1): <i>To start (activate) units.</i>, systemctl stop(1): <i>To stop (deactivate) units.</i>, systemctl enable(1): <i>To configure units to start automatically at boot.</i>


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more <i>systemd</i> units (e.g., `apache2.service`, `network.target`) to activate and start. The `.service` suffix is often optional for service units.<br><br><b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not wait for the operation to complete. The command returns immediately, allowing for parallel execution or non-blocking scripting.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a "dry run" by showing what actions would be taken without actually executing them. Useful for verifying dependencies and potential conflicts.<br><br><b>--quiet or -q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, showing only errors or critical information.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the <i>systemd</i> user instance for the current user, managing user-specific services.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the <i>systemd</i> system instance (the default), managing system-wide services.<br><br>


title: DESCRIPTION
content:
<code>systemctl start</code> is a fundamental command within the <i>systemd</i> init system, used to immediately activate and run one or more specified units. A unit can be a service (like a web server or database), a mount point, a socket, or various other components managed by <i>systemd</i>.<br><br>When you issue this command, <i>systemd</i> resolves any necessary dependencies, brings the unit into an "active" state, and executes its defined start-up sequence. This action is transient; it starts the unit for the current session but does <b>not</b> automatically configure it to start again after a reboot. For persistent activation across reboots, the `systemctl enable` command is used in conjunction with `start` or separately.<br><br>The command typically requires root privileges for system-wide units and is essential for managing the operational state of services on modern Linux distributions.


title: CAVEATS
content:
<ul><li>Starting system-wide units typically requires <b>root privileges</b>.</li><li>`systemctl start` only activates units for the current session; it does <b>not</b> configure them to start automatically on boot. Use `systemctl enable` for persistent activation.</li><li>If a unit fails to start, investigate its logs using `journalctl -u <unit_name>` for troubleshooting.</li><li>Using `--no-block` can make it harder to immediately detect start-up failures, as the command returns before the unit is fully operational.</li></ul>


title: UNIT TYPES
content:
<i>systemd</i> manages various unit types, not just services (`.service`). Other common types include `socket`, `mount`, `automount`, `device`, `target`, `path`, `timer`, and `swap`. While `systemctl start` can apply to many of these, it's most frequently used with `.service` units.


title: UNIT FILE NAMING
content:
When referring to a unit, you can often omit the suffix (e.g., `nginx` instead of `nginx.service`) as <i>systemd</i> is usually smart enough to infer it, especially for services. However, it's good practice to include the suffix for clarity or when ambiguity might exist.


title: HISTORY
content:
The `systemctl` command is an integral part of <i>systemd</i>, the init system developed by Lennart Poettering and Kay Sievers. <i>systemd</i> began development around 2010 and rapidly gained adoption, replacing the traditional <i>SysVinit</i> system as the default init system in major Linux distributions like Fedora (2011), RHEL, Debian (2014), and Ubuntu (2015). `systemctl start` provides a modern, unified, and more efficient interface for managing services compared to the previous fragmented methods involving `service` scripts or direct calls to init scripts in `/etc/init.d/`. Its design leverages parallelization and dependency management for faster boot times and more robust service control.


title: SEE ALSO
content:
systemctl enable(1), systemctl stop(1), systemctl restart(1), systemctl status(1), journalctl(1), systemd.unit(5)


title: TLDR
content:
<b>Start a unit</b>`systemctl start [unit]`<br><b>Start a user unit</b>`systemctl start [unit] --user`


title: SYNOPSIS
content:
<b>fbi</b> [<i>options</i>] <i>&lt;file1&gt;</i> [<i>file2 ...</i>]<br><b>fbi</b> [<i>options</i>] <b>-l</b> <i>&lt;filelist&gt;</i>


title: PARAMETERS
content:
<b><b>-l</b> <i>file</i>, <b>--list</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the list of images to display from <i>file</i> instead of from the command line arguments.<br><br><b><b>-a</b>, <b>--autozoom</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically zoom images to fit the screen, scaling down only if necessary, maintaining aspect ratio.<br><br><b><b>-u</b>, <b>--autoup</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically zoom images to fit the screen, scaling up or down as needed, maintaining aspect ratio.<br><br><b><b>-t</b> <i>seconds</i>, <b>--timeout</b> <i>seconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display each image for the specified number of <i>seconds</i>, then automatically advance to the next.<br><br><b><b>-r</b>, <b>--random</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Randomize the order in which images are displayed from the list.<br><br><b><b>-P</b>, <b>--pernicious</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not terminate on errors; try to display the next image even if the current one fails to load or display.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show verbose messages during operation, providing more detail about <i>fbi</i>'s actions.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all informational messages, showing only critical errors if any occur.<br><br><b><b>-o</b>, <b>--once</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately after displaying the last image in the list, rather than looping or waiting for user input.<br><br><b><b>-d</b> <i>device</i>, <b>--device</b> <i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the framebuffer <i>device</i> to use (e.g., <i>/dev/fb0</i>). By default, <i>fbi</i> attempts to guess the correct device.<br><br><b><b>-T</b> <i>vt</i>, <b>--vt</b> <i>vt</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the virtual terminal number (<i>vt</i>) to switch to for displaying images (e.g., <i>/dev/tty1</i> corresponds to 1). Requires permissions to switch VTs.<br><br><b><b>-p</b>, <b>--proportional</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use proportional scaling, maintaining the image's aspect ratio (this is the default behavior for fitting).<br><br><b><b>-g</b>, <b>--no-proportional</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable proportional scaling, allowing images to be stretched or squeezed to fit the screen, potentially distorting the aspect ratio.<br><br><b><b>-m</b>, <b>--monochrome</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display images in monochrome (black and white) regardless of their original color depth.<br><br><b><b>-e</b>, <b>--exit-on-error</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately if an image cannot be displayed or any other significant error occurs, without attempting to proceed.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message detailing command usage and options, then exit.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information for <i>fbi</i> and then exit.<br><br>


title: DESCRIPTION
content:
<i>fbi</i>, the <b>f</b>rame<b>b</b>uffer <b>i</b>mageviewer, is a lightweight utility designed to display images directly on the Linux framebuffer console. Unlike traditional image viewers that require a graphical desktop environment (like Xorg), <i>fbi</i> operates at a lower level, making it ideal for systems without an X server, such as embedded devices, servers, or when booting into a text-only console. It supports various popular image formats, including JPEG, PNG, GIF, and others, often leveraging external libraries like libjpeg and libpng.<br><br>Users can navigate through images, zoom, pan, and rotate using simple keyboard shortcuts. Its primary advantage lies in its independence from graphical environments, offering a fast and efficient way to view images directly on a virtual console. This makes it particularly useful for quickly checking images on headless systems or for diagnostic purposes where a full desktop environment isn't available or desired, providing a direct visual output on the console screen.


title: CAVEATS
content:
<i>fbi</i> requires direct access to the Linux framebuffer device (e.g., <i>/dev/fb0</i>), which often necessitates root privileges or membership in the <i>video</i> group. It is designed for use in console environments and typically does not function within a standard X (graphical desktop) server session. Its functionality is focused on basic image viewing, lacking advanced editing features or complex metadata display found in full-featured graphical viewers. Proper display depends on the availability of necessary image decoding libraries (like libjpeg, libpng) on the system.


title: KEYBOARD CONTROLS
content:
<i>fbi</i> relies heavily on keyboard shortcuts for user interaction, as it operates in a console environment without mouse support. Common controls include: arrow keys for navigating between images, '<b>+</b>' and '<b>-</b>' for zooming in and out, '<b>R</b>' (clockwise) and '<b>r</b>' (counter-clockwise) for rotating images, '<b>p</b>' to pause or resume slideshows, and '<b>ESC</b>' or '<b>q</b>' to quit the viewer. These controls provide a complete interactive experience tailored for direct console use.


title: PERMISSIONS
content:
To access and display images directly on the framebuffer, <i>fbi</i> typically needs special permissions. Users usually need to be part of the '<i>video</i>' group or execute the command with <i>sudo</i>/root privileges to interact with framebuffer devices like <i>/dev/fb0</i> and switch virtual terminals (<i>/dev/ttyX</i>). Without these permissions, <i>fbi</i> may fail to initialize the framebuffer, switch to the desired console, or display images correctly, often resulting in error messages about permission denied.


title: HISTORY
content:
<i>fbi</i> was developed by Michael Schierl as part of the <i>fbida</i> toolkit (framebuffer image processing tools). It emerged from the need for a simple, fast, and efficient image viewer capable of operating directly on the Linux framebuffer, independent of a graphical X server. This made it invaluable for embedded systems, server environments, and for viewing images during the system boot process before a full graphical environment is loaded. Its design prioritized minimal dependencies and direct hardware interaction, establishing its niche in console-based image display over the years.


title: TLDR
content:
<b>Display an image</b>`sudo fbi [path/to/file]`<br><b>Display multiple images</b>`sudo fbi [path/to/file1 path/to/file2 ...]`<br><b>Start a slideshow with a custom delay (in seconds)</b>`sudo fbi [[-t|--timeout]] [delay] [path/to/files/*]`<br><b>Scale the image to fit the screen</b>`sudo fbi [[-a|--autozoom]] [path/to/file]`<br><b>Display help</b>`fbi [[-h|--help]]`


title: PARAMETERS
content:
<b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the user manager instance. By default, `systemctl` operates on the system manager instance.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the system manager instance. This is the default behavior and is often implied.<br><br><b><b>--no-pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not pipe output into a pager. Useful for scripting or capturing output without interaction.<br><br><b><b>--plain</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print output in a plain format without headers, useful for parsing in scripts.<br><br><b><b>--json=MODE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output in JSON format. `MODE` can be `pretty` (indented) or `short` (single line), for machine-readable output.<br><br>


title: DESCRIPTION
content:
The <b>systemctl show-environment</b> command displays the environment block that the systemd system and service manager itself operates with. These environment variables are fundamental because they are inherited by default by all services, units, and processes that systemd spawns, unless those units explicitly override or clear specific variables. It provides a crucial snapshot of the foundational context in which many system processes execute. <br><br>Administrators and developers use this command to debug issues where services might be missing expected environment settings or to confirm that system-wide environment configurations, often set in files like <i>/etc/systemd/system.conf.d/*.conf</i> or <i>/etc/environment</i>, have been correctly applied and are visible to systemd. Unlike <i>printenv</i> or <i>env</i>, which show the environment of the current shell or a specific command, <b>systemctl show-environment</b> specifically queries the environment of the <i>PID 1</i> systemd process, offering a system-wide perspective rather than a user-session specific one.


title: CAVEATS
content:
<ul><li><b>Service Overrides:</b> While services inherit these variables by default, individual service units can override or clear specific environment variables within their <i>.service</i> files using directives like <i>Environment=</i> or <i>EnvironmentFile=</i>.</li><li><b>Update Mechanism:</b> Changes to systemd's global environment (e.g., via <i>/etc/systemd/system.conf.d/</i>) require <i>systemctl daemon-reload</i> and often a service restart or system reboot to take full effect and be reflected by <b>show-environment</b>.</li><li><b>Security:</b> Avoid placing highly sensitive information directly in systemd's global environment variables, as they can be widely accessible to processes.</li></ul>


title: <B>SOURCES OF ENVIRONMENT VARIABLES</B>
content:
Systemd's global environment variables displayed by <b>show-environment</b> are primarily sourced from configuration files. Common locations include snippets in <i>/etc/systemd/system.conf.d/</i> (e.g., <i>DefaultEnvironment=</i>), the traditional <i>/etc/environment</i> file (which <i>systemd-environment-generator</i> can read), and settings defined by other <i>systemd</i> components. These sources converge to build the environment block of the <i>PID 1</i> process.


title: <B>IMPACT ON SERVICE EXECUTION</B>
content:
Understanding <i>systemd</i>'s environment is vital for troubleshooting service behavior. If a service fails to start or behaves unexpectedly due to missing or incorrect environment variables (e.g., <i>PATH</i>, <i>LD_LIBRARY_PATH</i>, or custom application variables), <b>systemctl show-environment</b> can help determine if the base <i>systemd</i> process provides the necessary context. If not, the issue might stem from how <i>systemd</i> itself is configured, rather than the service unit file directly.


title: HISTORY
content:
The <b>systemctl</b> command, including its <i>show-environment</i> verb, emerged as an integral part of the <i>systemd</i> project. <i>systemd</i> was initially released in 2010 with the goal of replacing the traditional SysVinit and Upstart init systems in Linux distributions. As <i>systemd</i> became the de facto init system for many major distributions (like Fedora, RHEL, Debian, Ubuntu), <b>systemctl</b> became the primary interface for controlling and querying the system and services. The <i>show-environment</i> subcommand specifically provides administrators with essential visibility into the environment context of <i>systemd</i> itself, a feature crucial for modern system management and debugging in the <i>systemd</i> ecosystem.


title: TLDR
content:
<b>Display the environment block for the system</b>`systemctl show-environment`<br><b>Display the environment block for the current user</b>`systemctl show-environment --user`


title: PARAMETERS
content:
<b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Don't wait for the operation to finish.</I> This option causes <b>systemctl</b> to exit immediately after sending the stop request, without waiting for the unit to actually stop. The operation will continue in the background.<br><br><b>--no-wall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Do not send wall message.</I> Suppresses the sending of a wall message (a broadcast message to all logged-in users) that would normally occur for certain critical operations.<br><br><b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>The name(s) of the unit(s) to stop.</I> This argument specifies one or more systemd unit names (e.g., <I>nginx.service</I>, <I>apache2.service</I>). The suffix (e.g., <I>.service</I>) is often optional if it's clear from context.<br><br>


title: DESCRIPTION
content:
<b>systemctl stop</b> is a fundamental command in the systemd suite, used to terminate one or more active systemd units. When executed, it sends a stop signal (typically <I>SIGTERM</I>) to the processes associated with the specified unit, allowing them to perform a graceful shutdown. This command is versatile, capable of stopping various unit types including services (<I>.service</I>), sockets (<I>.socket</I>), mount points (<I>.mount</I>), and devices (<I>.device</I>).<br><br>Its primary function is to change the current operational state of a unit from "active" to "inactive." This is crucial for system administrators performing maintenance, troubleshooting, or resource management. For instance, stopping a web server service might be necessary before applying updates or reconfiguring it. It's important to note that <b>systemctl stop</b> only affects the runtime state and does not alter the unit's configuration for automatic startup on boot; for that, <b>systemctl disable</b> is required.<br><br>The command often requires root privileges to stop system-level services. While it aims for a graceful shutdown, if a unit fails to stop within a defined <I>TimeoutStopSec</I>, systemd may escalate by sending a <I>SIGKILL</I> to forcefully terminate the processes. Understanding unit dependencies is also vital, as stopping one unit might trigger the stopping of other units that depend on it.


title: CAVEATS
content:
<b>Root Privileges:</b> <I>Most system-level services require root privileges (or `sudo`) to be stopped.</I> Attempting to stop them without sufficient permissions will result in an error.<br><b>System Stability:</b> <I>Stopping critical system services can lead to instability or make the system unusable.</I> Always ensure you understand the implications before stopping a service.<br><b>Dependencies:</b> <I>Stopping a unit may automatically stop other units that depend on it.</I> <b>systemctl</b> automatically resolves and manages these dependencies.<br><b>Automatic Restart:</b> <I>Stopping a service does not prevent it from automatically restarting</I> if its unit file is configured with <I>Restart=always</I> or similar. For persistent shutdown, consider <I>disable</I> or <I>mask</I>.<br><b>Runtime Only:</b> <I>This command affects the current runtime state only.</I> It does not prevent the service from starting again on the next boot if it's enabled. Use <b>systemctl disable</b> to prevent automatic startup.


title: UNIT DEPENDENCIES AND CONFLICTS
content:
<I>When <b>systemctl stop</b> is invoked, systemd intelligently manages unit dependencies and conflicts.</I> If a unit is configured with <I>Wants=</I> or <I>Requires=</I> clauses, stopping a required unit will cause systemd to also stop the dependent units. Conversely, if a unit <I>Conflicts=</I> with another, stopping one might be necessary before starting the other, though <I>stop</I> itself usually resolves "conflicts" by just stopping the requested unit.


title: GRACEFUL VS. FORCED SHUTDOWN
content:
<I>Systemd first attempts a graceful shutdown by sending <I>SIGTERM</I> to the unit's main process.</I> This allows the application to clean up resources and save state. If the unit does not terminate within the time specified by <I>TimeoutStopSec=</I> (defaulting to 90 seconds), systemd then sends <I>SIGKILL</I> to forcefully terminate the processes, which can lead to data loss or corruption if the application hasn't saved its state.


title: HISTORY
content:
The <b>systemctl</b> command is the primary control interface for <I>systemd</I>, which was introduced as a modern replacement for the traditional <I>SysVinit</I> and <I>Upstart</I> init systems in many Linux distributions. Developed by Lennart Poettering and Kay Sievers, <I>systemd</I> gained widespread adoption starting around 2010. The <b>systemctl stop</b> command emerged as part of this shift, providing a unified and consistent way to manage service lifecycle operations, replacing a disparate set of <I>init.d</I> scripts or <I>service</I> commands found in older systems. Its design focuses on efficient dependency management and parallelization during boot.


title: SEE ALSO
content:
systemctl(1), systemctl start(1), systemctl enable(1), systemctl disable(1), systemctl status(1), systemctl restart(1), journalctl(1)


title: TLDR
content:
<b>Stop a unit</b>`systemctl stop [unit]`<br><b>Stop a service and suppress warnings</b>`systemctl stop [unit] --no-warn`<br><b>Stop a user unit</b>`systemctl stop [unit] --user`


title: SYNOPSIS
content:
<b>python</b> <i>sambapipe.py</i> [<i>OPTIONS</i>] <i>&lt;input_file&gt;</i><br>Alternatively, if made executable and in PATH:<br><i>sambapipe.py</i> [<i>OPTIONS</i>] <i>&lt;input_file&gt;</i>


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits. Useful for understanding the specific implementation's options.<br><br><b><b>-i</b> <i>&lt;file&gt;</i>, <b>--input</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input SAM or BAM alignment file to be processed.<br><br><b><b>-o</b> <i>&lt;file&gt;</i>, <b>--output</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the path for the output processed SAM, BAM, or VCF file.<br><br><b><b>-r</b> <i>&lt;file&gt;</i>, <b>--reference</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the reference genome FASTA file, essential for many downstream analyses.<br><br><b><b>-t</b> <i>&lt;num&gt;</i>, <b>--threads</b> <i>&lt;num&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of CPU threads or cores to be used for parallel processing, speeding up tasks.<br><br><b><b>--filter</b> <i>&lt;criteria&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies specific filtering rules to reads, such as minimum mapping quality, removing duplicates, or unmapped reads.<br><br><b><b>--sort-order</b> <i>&lt;order&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the desired sort order for the output BAM file (e.g., <i>coordinate</i>, <i>queryname</i>).<br><br><b><b>--skip-qc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Option to skip initial quality control steps if already performed.<br><br>


title: DESCRIPTION
content:
<i>sambapipe.py</i> is typically a Python script designed to act as a bioinformatics pipeline or a component within one, primarily focused on the processing and analysis of Sequence Alignment/Map (SAM) and Binary Alignment Alignment/Map (BAM) files. These files are standard formats in genomics, storing high-throughput sequencing reads aligned to a reference genome.<br><br>As a non-standard command, its exact functionalities vary significantly depending on its specific implementation, often developed for particular research projects or institutional workflows. Common tasks performed by such a script might include: initial quality control, filtering reads based on mapping quality or flags, sorting and indexing alignment files, merging multiple BAM files, performing variant calling, or preparing data for downstream analyses like SNP detection, structural variant identification, or expression quantification.<br><br>It serves to automate complex, multi-step bioinformatics workflows, integrating various command-line tools such as <b>samtools</b>, <b>bcftools</b>, <b>BWA</b>, or <b>GATK</b> into a cohesive pipeline, thereby streamlining data processing and ensuring reproducibility. Users should refer to the specific script's documentation or source code for precise usage and options.


title: CAVEATS
content:
<i>sambapipe.py</i> is not a standard, pre-installed Linux command. It is typically a custom Python script developed for specific bioinformatics projects or pipelines. As such, its exact functionality, available options, and dependencies can vary wildly between implementations.<br><br>Users must consult the specific script's documentation, source code, or the project maintainers for accurate usage instructions. Running an unknown <i>sambapipe.py</i> script without understanding its purpose and origin could lead to unexpected data processing, incorrect results, or security risks. It often requires a Python environment with specific libraries and external bioinformatics tools (e.g., <b>samtools</b>, <b>bcftools</b>) installed and accessible in the system's PATH.


title: TYPICAL WORKFLOW
content:
A common workflow automated by <i>sambapipe.py</i> might involve:<br><br>1.  <b>Input:</b> Raw FASTQ files (or pre-aligned SAM/BAM).<br>2.  <b>Alignment:</b> Aligning reads to a reference genome using tools like <b>BWA</b>.<br>3.  <b>SAM/BAM Processing:</b> Converting SAM to BAM, sorting, indexing, merging, and removing duplicates using <b>samtools</b>.<br>4.  <b>Quality Control:</b> Filtering reads based on mapping quality, read length, or other metrics.<br>5.  <b>Variant Calling:</b> Identifying genetic variations (SNPs, indels) using tools like <b>bcftools</b> or <b>GATK</b>.


title: HISTORY
content:
The concept behind scripts like <i>sambapipe.py</i> emerged with the advent of high-throughput sequencing and the subsequent explosion in genomic data. As the volume and complexity of sequencing data grew, manual processing became impractical. Bioinformaticians began developing custom scripts, often in Python due to its versatility and rich ecosystem, to automate multi-step workflows involving alignment files (SAM/BAM).<br><br>These scripts typically integrate existing, specialized command-line tools (like <b>samtools</b>, <b>BWA</b>, <b>GATK</b>) into a single, cohesive pipeline, enabling researchers to efficiently process raw sequencing reads through alignment, quality control, variant calling, and other analyses. <i>sambapipe.py</i> represents this common practice of creating project-specific or laboratory-specific pipelines to standardize and streamline bioinformatics data processing.


title: TLDR
content:
<b>Upload and load a shared object file on a vulnerable Samba server</b>`sambaPipe.py -so [path/to/file.so] [domain]/[username]:[password]@[target]`<br><b>Authenticate using NTLM hashes instead of a password</b>`sambaPipe.py -so [path/to/file.so] -hashes [LM_HASH:NT_HASH] [domain]/[username]:[password]@[target]`<br><b>Use Kerberos authentication for the target</b>`sambaPipe.py -so [path/to/file.so] -k -no-pass [domain]/[username]:[password]@[target]`<br><b>Specify a domain controller IP for authentication</b>`sambaPipe.py -so [path/to/file.so] -dc-ip [dc_ip] [domain]/[username]:[password]@[target]`<br><b>Use a custom port for the SMB connection</b>`sambaPipe.py -so [path/to/file.so] -port [port] [domain]/[username]:[password]@[target]`


title: SYNOPSIS
content:
<b>kubectl autoscale</b> <I>RESOURCE_TYPE</I>/<I>NAME</I> [--min=<I>MIN_PODS</I>] --max=<I>MAX_PODS</I> [--cpu-percent=<I>PERCENT</I>]


title: PARAMETERS
content:
<b><I>RESOURCE_TYPE</I>/<I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type and name of the resource (e.g., <I>deployment/my-app</I>) to be autoscaled. This is a mandatory argument.<br><br><b>--min=<I>MIN_PODS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The lower limit for the number of pods that can be set by the autoscaler. Defaults to 1 if not specified.<br><br><b>--max=<I>MAX_PODS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The upper limit for the number of pods that can be set by the autoscaler. This is a mandatory option.<br><br><b>--cpu-percent=<I>PERCENT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target average CPU utilization (as a percentage of the requested CPU) over all the pods, which the autoscaler tries to maintain. If not specified, the HPA will default to 80% if the resource defines CPU requests.<br><br>


title: DESCRIPTION
content:
The <b>kubectl autoscale</b> command is a powerful tool within Kubernetes for managing the scaling of applications. It enables the creation or modification of a Horizontal Pod Autoscaler (HPA) object, which automatically adjusts the number of pods running for a specified workload (such as a <I>Deployment</I>, <I>ReplicaSet</I>, <I>ReplicationController</I>, or <I>StatefulSet</I>).<br><br>The HPA dynamically scales pods up or down to meet demand, primarily by monitoring CPU utilization, but can also be configured for custom metrics. This ensures that applications have sufficient resources during peak loads and don't waste resources during low periods, optimizing cost and performance. Users define minimum and maximum pod counts, and an optional target CPU utilization percentage. Kubernetes then takes over, continuously monitoring the workload and making scaling decisions to maintain the desired performance level.


title: CAVEATS
content:
<b>Resource Requests:</b> For CPU-based autoscaling to work effectively, pods must have CPU resource requests defined in their container specifications. Without these, the HPA controller cannot calculate CPU utilization as a percentage of requested CPU.<br><br><b>Metrics Server:</b> To utilize <I>--cpu-percent</I> or other resource-based metrics, a Kubernetes Metrics Server must be deployed in the cluster.<br><br><b>Custom Metrics:</b> While <b>kubectl autoscale</b> primarily supports CPU, HPAs can be configured for custom and external metrics through direct YAML manifests. This command does not expose those options.<br><br><b>Scaling Limits:</b> Setting appropriate <I>--min</I> and <I>--max</I> values is critical to prevent over-scaling or under-scaling, which could lead to performance issues or excessive costs.<br><br><b>Rollout Interactions:</b> Be mindful of how HPA interacts with rolling updates or other deployment strategies, as they both modify pod counts.


title: HOW IT WORKS
content:
The HPA controller continuously monitors the specified metrics (e.g., CPU utilization) against the target values. Based on the observed values and the configured <I>--min</I> and <I>--max</I> pod counts, it calculates the desired number of replicas and updates the target resource (<I>Deployment</I>, etc.) accordingly.


title: AUTOSCALING ALGORITHM
content:
The HPA uses a controller that periodically checks the metrics. For CPU, it calculates the average CPU utilization across all pods in the target workload and compares it to the <I>--cpu-percent</I> target. If the current utilization is higher, it scales up; if lower, it scales down. There are cool-down and stabilization periods to prevent rapid, unnecessary scaling changes.


title: TARGET RESOURCES
content:
The command specifically targets <I>deployments</I>, <I>replicasets</I>, <I>replicationcontrollers</I>, and <I>statefulsets</I>. It does not directly autoscale individual pods or other resource types.


title: HISTORY
content:
The Horizontal Pod Autoscaler (HPA) was introduced in Kubernetes as an Alpha feature in version 1.0, becoming Beta in 1.1, and Generally Available (GA) in 1.2. The <b>kubectl autoscale</b> command provides a simplified interface for creating and managing these HPA objects directly from the command line, abstracting away the underlying YAML definition.<br><br>Its development paralleled the maturity of the HPA API, making it easier for users to quickly set up basic CPU-based autoscaling without needing to write full HPA manifests, thus improving the user experience for common autoscaling scenarios.


title: TLDR
content:
<b>Auto scale a deployment with no target CPU utilization specified</b>`kubectl autoscale [[deploy|deployment]] [deployment_name] --min [min_replicas] --max [max_replicas]`<br><b>Auto scale a deployment with target CPU utilization</b>`kubectl autoscale [[deploy|deployment]] [deployment_name] --max [max_replicas] --cpu-percent [target_cpu]`


title: SYNOPSIS
content:
<b>conda env</b> <<i>list | create | update | remove | export | config</i>> [<i>options</i>] [<i>arguments</i>]


title: PARAMETERS
content:
<b><b>list</b>, <b>ls</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all known conda environments.</i><br><br><b><b>create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Creates a new conda environment.</i><br><br><b><b>update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Updates an existing conda environment.</i><br><br><b><b>remove</b>, <b>rm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Removes a specified conda environment.</i><br><br><b><b>export</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exports the specification of an environment to a YAML file.</i><br><br><b><b>config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Modifies conda environment configurations.</i><br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a help message for the command or subcommand.</i><br><br><b><b>-n</b> <<i>name</i>>, <b>--name</b> <<i>name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the name of the environment to operate on.</i><br><br><b><b>-f</b> <<i>file</i>>, <b>--file</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path to an <b>environment.yml</b> file for creating or updating an environment.</i><br><br><b><b>-y</b>, <b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not ask for confirmation on any prompt during an operation.</i><br><br><b><b>--verbose</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the verbosity of the output, showing more detailed information for debugging.</i><br><br>


title: DESCRIPTION
content:
<i><b>conda env</b> is a subcommand of the <b>conda</b> package, dependency, and environment manager. It allows users to create, list, activate, deactivate, update, and remove isolated environments. These environments are crucial for managing different sets of packages and their dependencies without conflicts, especially when working on multiple projects that require different versions of Python or other libraries. For instance, one project might need Python 3.8 with TensorFlow 2.x, while another requires Python 3.10 with PyTorch 1.x. <b>conda env</b> provides the tools to switch between these configurations seamlessly. It supports creating environments from <b>environment.yml</b> files, making environments reproducible and shareable. This capability is fundamental for scientific computing, data science, and software development, ensuring consistent project setups across various machines and collaborators. It significantly enhances productivity and reduces dependency-related issues across diverse development tasks.</i>


title: CAVEATS
content:
<i><br><b>conda env</b> is a subcommand, meaning it must be invoked as <b>conda env</b>, not as a standalone executable.<br>Environments can consume significant disk space, especially with many environments or large packages.<br>Activating and deactivating environments modifies your shell's environment variables; ensure proper shell initialization.<br>Mixing package managers (e.g., <b>pip</b> and <b>conda</b>) indiscriminately within a single environment can lead to dependency conflicts.</i>


title: <I>ACTIVATION AND DEACTIVATION</I>
content:
<i>To use an environment, it must be activated using <b>conda activate</b> <<i>environment_name</i>>. This modifies your shell's PATH and other environment variables to point to the packages within that specific environment. To exit an environment and return to the base environment, use <b>conda deactivate</b>.</i>


title: <I>ENVIRONMENT FILES (ENVIRONMENT.YML)</I>
content:
<i><b>environment.yml</b> files are YAML-formatted manifests that specify an environment's name, channels, and dependencies (packages). They are crucial for creating reproducible environments and sharing them with others. You can create an environment from a file using <b>conda env create -f environment.yml</b> and export an existing environment to a file using <b>conda env export > environment.yml</b>.</i>


title: HISTORY
content:
<i><b>conda</b> was developed by Continuum Analytics (now Anaconda, Inc.) starting around 2012. The <b>conda env</b> subcommand was introduced as a core feature to provide a robust and cross-platform way to manage isolated environments, extending beyond just Python to include any language or package. It became fundamental in the scientific computing and data science communities, addressing the challenges of dependency management and reproducibility. Its capability to create environments from <b>environment.yml</b> files has been a pivotal feature for collaboration and deployment, making consistent project setups achievable across diverse development environments.</i>


title: TLDR
content:
<b>Create an environment from an environment file (YAML, TXT, etc.)</b>`conda env create [[-f|--file]] [path/to/file]`<br><b>Delete an environment and everything in it</b>`conda env remove [[-n|--name]] [environment_name]`<br><b>Update an environment based on an environment file</b>`conda env update [[-f|--file]] [path/to/file] --prune`<br><b>List all environments</b>`conda env list`<br><b>View environment details</b>`conda env export`<br><b>List environment variables</b>`conda env config vars list`<br><b>Set environment variables</b>`conda env config vars set [my_var]=[value]`


title: PARAMETERS
content:
<b><b>--api-group</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show only resources belonging to the specified API group (e.g., 'apps', 'batch').<br><br><b><b>--api-version</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show only resources belonging to the specified API version (e.g., 'v1', 'apps/v1').<br><br><b><b>--cached</b>=<<i>bool</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If true, uses the cached list of API resources instead of fetching directly from the API server. Defaults to <i>false</i>.<br><br><b><b>--namespaced</b>=<<i>bool</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If <i>true</i> (default), only namespaced resources are returned. If <i>false</i>, only non-namespaced (cluster-scoped) resources are returned.<br><br><b><b>--no-headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables printing column headers in the output.<br><br><b><b>--output</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. Can be 'wide' for more details or 'name' to show just resource names.<br><br><b><b>--output-group-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the API group and version for each resource.<br><br><b><b>--output-verbs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the supported verbs (e.g., 'get', 'list', 'create') for each resource.<br><br><b><b>--sort-by</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts the list of API resources by a specified field (e.g., 'name', 'kind', 'namespaced', 'verbs').<br><br><b><b>--verbs</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show only resources that support the specified verbs (e.g., 'get,list,watch').<br><br><b><b>--context</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the kubeconfig context to use for the command.<br><br><b><b>--kubeconfig</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the kubeconfig file to use for CLI requests, overriding the default location.<br><br><b><b>--server</b>=<<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The address and port of the Kubernetes API server to connect to.<br><br>


title: DESCRIPTION
content:
The <i>kubectl api-resources</i> command is a crucial tool for understanding the landscape of available resources within a Kubernetes cluster. It provides a comprehensive list of all API resources that the Kubernetes API server exposes, including built-in resources like Pods, Deployments, and Services, as well as any <br>Custom Resource Definitions (CRDs) installed in the cluster. For each resource, it displays its <b>NAME</b>, any <b>SHORTNAMES</b> (aliases for easier command-line usage), its associated <b>APIVERSION</b> (e.g., apps/v1, v1), whether it is <b>NAMESPACED</b> (true for most application resources, false for cluster-level resources like Nodes), and its <b>KIND</b>. This command is invaluable for developers and administrators to quickly identify available APIs, verify resource existence, debug configuration issues, or learn about the specific API group and version to use when crafting YAML manifests or interacting with the cluster via the <i>kubectl</i> CLI.


title: CAVEATS
content:
This command relies on connectivity and authentication to a Kubernetes API server. <br>Users must have appropriate <br>Role-Based Access Control (RBAC) permissions to discover API resources. <br>The output can be extensive in clusters with numerous <br>Custom Resource Definitions (CRDs). <br>Using the <b>--cached</b> flag may return outdated information if the API server's available resources have recently changed.


title: TYPICAL USE CASES
content:
<i>kubectl api-resources</i> is highly useful for:<br><b>Discovering available resources:</b> Quickly find out what standard and custom resources are deployed in a cluster.<br><b>Debugging 'resource not found' errors:</b> Verify the correct name, API group, and version of a resource.<br><b>Learning about API structure:</b> Understand which resources are namespaced versus cluster-scoped.<br><b>Crafting YAML manifests:</b> Identify the correct <i>apiVersion</i> and <i>kind</i> fields for new resources.


title: HISTORY
content:
The <i>kubectl</i> command-line tool is the primary interface for interacting with Kubernetes clusters, and the <i>api-resources</i> subcommand has been a fundamental part of its discovery capabilities since the early days of Kubernetes. As the Kubernetes ecosystem grew, especially with the introduction and widespread adoption of <br>Custom Resource Definitions (CRDs), the need for a reliable and comprehensive way to discover all available API objects became even more critical. <i>kubectl api-resources</i> was developed to address this, providing a dynamic view of the cluster's API surface, adapting to new features and custom extensions deployed by users and operators.


title: SEE ALSO
content:
kubectl get(1), kubectl explain(1), kubectl describe(1), kubectl api-versions(1), kubectl get crd(1)


title: TLDR
content:
<b>Print the supported API resources</b>`kubectl api-resources`<br><b>Print the supported API resources with more information</b>`kubectl api-resources [[-o|--output]] wide`<br><b>Print the supported API resources sorted by a column</b>`kubectl api-resources --sort-by [name]`<br><b>Print the supported namespaced resources</b>`kubectl api-resources --namespaced`<br><b>Print the supported non-namespaced resources</b>`kubectl api-resources --namespaced=false`<br><b>Print the supported API resources with a specific API group</b>`kubectl api-resources --api-group [api_group]`


title: SYNOPSIS
content:
<B>plink</B> [<I>options</I>] [<I>user</I>@]<I>host</I> [<I>command</I>]<br><B>plink</B> [<I>options</I>] -load <I>session_name</I> [<I>command</I>]


title: PARAMETERS
content:
<b>-ssh</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of the SSH protocol for the connection.<br><br><b>-telnet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of the Telnet protocol.<br><br><b>-rlogin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of the Rlogin protocol.<br><br><b>-raw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of the raw TCP protocol.<br><br><b>-P <I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the port number to connect to.<br><br><b>-l <I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the username for login.<br><br><b>-pw <I>password</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the password for authentication. <B>Caution:</B> Using this option on the command line is insecure.<br><br><b>-i <I>keyfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the private key file for public-key authentication.<br><br><b>-load <I>session_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a pre-configured PuTTY saved session.<br><br><b>-batch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables all interactive prompts, making it suitable for scripting.<br><br><b>-N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not start a remote shell or command; useful for port forwarding only.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose messages for debugging.<br><br><b>-C</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables SSH compression.<br><br><b>-L <I>localport</I>:<I>remotehost</I>:<I>remoteport</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets up local port forwarding (e.g., <B>2222:localhost:22</B>).<br><br><b>-R <I>remoteport</I>:<I>localhost</I>:<I>localport</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets up remote port forwarding (e.g., <B>8080:localhost:80</B>).<br><br>


title: DESCRIPTION
content:
<B>plink</B> is a command-line interface to the PuTTY back ends. It is primarily used for automated operations, such as calling SSH from a script, batch file, or cron job. It can connect to SSH, Telnet, Rlogin, or raw TCP ports, making it highly versatile for various network tasks.<br><br>While often associated with Windows, <B>plink</B> is also available on Linux and other Unix-like systems, providing a PuTTY-compatible alternative to the standard <B>ssh</B> client. It supports key-based authentication, port forwarding, and can load saved PuTTY sessions, making it easy to manage complex connection configurations. Its ability to execute commands remotely and transfer files (via its <B>pscp</B> and <B>psftp</B> counterparts) makes it a powerful tool for system administrators and developers.


title: CAVEATS
content:
Using the <B>-pw</B> option exposes your password in plain text, which can be seen by other users on the system via process lists and may be stored in shell history. It is strongly recommended to use public-key authentication with the <B>-i</B> option or agent forwarding for secure, automated logins. <B>plink</B> relies on PuTTY's private key format, so OpenSSH keys might need conversion using <B>puttygen</B>.


title: SCRIPTING AND AUTOMATION
content:
<B>plink</B> excels in scripting scenarios where unattended execution is crucial. By combining it with the <B>-batch</B> option and key-based authentication, users can automate tasks like remote command execution, file transfers (using <B>pscp</B> and <B>psftp</B>), and tunnel creation without manual interaction. This makes it invaluable for CI/CD pipelines, backup scripts, and system monitoring.


title: PUTTY SESSION INTEGRATION
content:
One of <B>plink</B>'s unique advantages is its ability to load saved PuTTY sessions using the <B>-load</B> option. This allows users to centralize connection configurations within PuTTY's session management, including hostnames, ports, authentication methods, and port forwarding rules, and then reuse them from the command line without re-specifying all options.


title: HISTORY
content:
<B>plink</B> is a core component of the PuTTY suite, developed by Simon Tatham. It emerged as the command-line equivalent of the PuTTY GUI client, primarily for Windows systems, to enable automation and scripting of secure shell connections. Its development focused on providing a comprehensive, cross-platform SSH client that could integrate seamlessly with PuTTY's configuration files and saved sessions. Over time, its availability extended to Unix-like systems, including Linux, providing a consistent interface for users accustomed to the PuTTY ecosystem, often used in mixed-OS environments or when specific PuTTY features are desired.


title: SYNOPSIS
content:
<b>impacket-sambapipe</b> <I>[[domain/]username[:password]@]<targetName or address></I> <I><pipe_name></I> [<b>-debug</b>] [<b>-hashes</b> <I>LMHASH:NTHASH</I>] [<b>-no-pass</b>] [<b>-k</b>] [<b>-aesKey</b> <I>hexkey</I>] [<b>-dc-ip</b> <I>ip address</I>] [<b>-kdcHost</b> <I>hostname</I>] [<b>-keytab</b> <I>file</I>]


title: PARAMETERS
content:
<b><I>[[domain/]username[:password]@]<targetName or address></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target system's IP address or hostname, and optionally authentication credentials. Credentials (domain, username, password) can be provided directly within this argument, or via specific authentication options for hashes or Kerberos.<br><br><b><I><pipe_name></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the SMB named pipe to connect to on the target system (e.g., `netlogon`, `lsarpc`, `svcctl`).<br><br><b><b>-debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output for detailed operational information and troubleshooting.<br><br><b><b>-hashes</b> <I>LMHASH:NTHASH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides NTLM hashes for authentication, in the format `LMHASH:NTHASH`.<br><br><b><b>-no-pass</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the script not to ask for a password, using an empty password for authentication. Particularly useful when performing Kerberos authentication (with <b>-k</b>).<br><br><b><b>-k</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses Kerberos authentication. Credentials are typically sourced from a ccache file (`KRB5CCNAME`) or requested if not found, then saved to the ccache file.<br><br><b><b>-aesKey</b> <I>hexkey</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AES key (128 or 256 bits, in hexadecimal format) to be used for Kerberos authentication.<br><br><b><b>-dc-ip</b> <I>ip address</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IP address of the Domain Controller. If omitted, the domain part of the target parameter (if available) or the target server itself will be used.<br><br><b><b>-kdcHost</b> <I>hostname</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The KDC's hostname or IP address to use for Kerberos authentication. If empty, the domain part of the target parameter is used to locate the KDC.<br><br><b><b>-keytab</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads Kerberos keys from the specified keytab file for authentication.<br><br>


title: DESCRIPTION
content:
<i>impacket-sambapipe</i> is a powerful command-line tool, part of the widely-used Impacket Python library, designed for low-level interaction with SMB (Server Message Block) named pipes on remote Windows systems. Unlike higher-level Impacket tools that perform specific tasks like remote command execution, <i>impacket-sambapipe</i> serves as a fundamental utility to establish a direct connection to a specified named pipe and facilitate interactive communication.<br><br>It is commonly used by security professionals and developers for reconnaissance, analysis, and demonstrating how to interact with various Windows services exposed over named pipes, such as `netlogon`, `lsarpc`, `samr`, or `svcctl`. By connecting to a named pipe, users can send raw data and receive responses, which is crucial for understanding service behavior, testing custom exploits, or performing advanced protocol-level operations. This tool emphasizes the programmatic capabilities of the Impacket library for MSRPC (Microsoft Remote Procedure Call) over SMB, providing a foundation for building more complex network attacks or diagnostic utilities.


title: CAVEATS
content:
Using <i>impacket-sambapipe</i> requires the Impacket Python library to be installed. Successful interaction with remote named pipes depends on network connectivity to the SMB port (445) on the target, as well as appropriate user permissions on the target system for the specified named pipe. It is a low-level interaction tool, meaning effective use often requires a strong understanding of SMB, MSRPC, and the specific named pipe's protocol being targeted.


title: INTERACTIVE MODE
content:
Upon successful connection to a named pipe, <i>impacket-sambapipe</i> typically provides an interactive prompt (or simply opens the pipe for read/write operations depending on context). This allows users to manually send data to the pipe and observe the responses, facilitating real-time investigation and protocol interaction.


title: MSRPC INTERFACE INTERACTION
content:
While <i>impacket-sambapipe</i> provides the raw named pipe connection, its primary utility often lies in serving as the transport for MSRPC communications. Many Windows services expose their functionality over named pipes using MSRPC interfaces. This tool allows direct interaction with these underlying communication channels, enabling exploration of service functions and potential vulnerabilities.


title: HISTORY
content:
<i>impacket-sambapipe</i> is an integral part of the Impacket library, a collection of Python classes for working with network protocols. Developed by Core Security Technologies (now Fortra), Impacket has been a staple in network security for interacting with protocols like SMB, MSRPC, and Kerberos. <i>sambapipe.py</i> has existed as an example script within the Impacket project for many years, showcasing the library's capabilities for direct, low-level named pipe communication and serving as a foundational component for more complex MSRPC-based tools and exploits.


title: SEE ALSO
content:
smbclient(1), smbexec.py (Impacket), psexec.py (Impacket), wmiexec.py (Impacket), rpcdump.py (Impacket)


title: SYNOPSIS
content:
<b>conda-doctor diagnose</b> [<i>OPTIONS</i>]<br><b>conda-doctor</b> --version<br><b>conda-doctor</b> --help


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Display a help message for the command and exit. This applies to both the main command and subcommands like </i><b>diagnose</b><i>.</i><br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show the program's version number and exit.</i><br><br><b>diagnose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The primary subcommand to initiate the diagnostic process, running a suite of checks on your <i>conda</i> setup.</i><br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output results of the diagnostic checks in JSON format, suitable for programmatic parsing or integration with other tools.</i><br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increase output verbosity to display more detailed information about the checks being performed and their outcomes.</i><br><br><b>--quiet, -q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppress standard output, showing only warnings and errors to minimize console noise.</i><br><br><b>--name NAME, -n NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the name of a particular <i>conda</i> environment to diagnose, rather than the active or default one.</i><br><br><b>--prefix PATH, -p PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the file path to a specific <i>conda</i> environment to diagnose. This is an alternative to using </i><code>--name</code><i>.</i><br><br><b>--experimental</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Include experimental diagnostic checks which might not be fully stable or vetted, but can offer deeper insights.</i><br><br><b>--list-checks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>List all available diagnostic checks that <i>conda-doctor</i> can perform, without actually executing them.</i><br><br><b>--channel CHANNEL_URL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a custom channel URL (e.g., a private or test channel) to be included in network connectivity tests to ensure accessibility.</i><br><br><b>--solver SOLVER_TYPE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a solver type (e.g., 'libmamba', 'classic') to include in solver tests, verifying its functionality and configuration.</i><br><br>


title: DESCRIPTION
content:
<i>conda-doctor</i> is a powerful diagnostic utility designed to help users identify and resolve common problems within their <i>conda</i> environments. It performs a series of comprehensive checks on various aspects of the <i>conda</i> setup, including system <i>PATH</i> configuration, file and directory permissions, available disk space, network connectivity, <i>conda</i> configuration settings, and the integrity of installed packages and channels.<br><br>By systematically examining these components, <i>conda-doctor</i> can pinpoint the root causes of issues such as failed installations, environment activation problems, or unexpected package behavior. Upon completion, it provides a detailed report outlining any detected problems and often suggests specific actions or commands to rectify them. This tool is invaluable for maintaining a healthy <i>conda</i> ecosystem and efficiently troubleshooting errors, making it an essential utility for anyone regularly working with <i>conda</i> environments on Linux systems. It aims to empower users to self-diagnose and fix issues, reducing the need for extensive manual debugging.


title: CAVEATS
content:
<i>conda-doctor</i> requires a functional <i>conda</i> installation to operate. While it identifies common issues and suggests fixes, users are ultimately responsible for understanding and applying these solutions. Some diagnostic checks may require active network connectivity. It might not detect highly specific, esoteric, or custom system configuration issues that fall outside its predefined checks.


title: TYPICAL USAGE
content:
<i>The most common invocation of the command is simply </i><b>conda-doctor diagnose</b><i>, which runs a comprehensive set of default checks on the active <i>conda</i> environment or the base environment if no specific environment is activated.</i>


title: OUTPUT INTERPRETATION
content:
<i>The diagnostic report categorizes each check's status as </i><b>PASS</b><i>, </i><b>FAIL</b><i>, or </i><b>WARN</b><i>. For checks resulting in </i><b>FAIL</b><i> or </i><b>WARN</b><i>, <i>conda-doctor</i> provides a concise explanation of the identified problem and often includes specific recommendations or commands to resolve the issue, guiding the user towards a solution.</i>


title: HISTORY
content:
<i>conda-doctor</i> emerged as a dedicated tool within the <i>conda</i> ecosystem to address the growing complexity of environment management and the frequent support requests related to common installation or configuration issues. It was developed to empower users with self-service diagnostics, shifting from manual debugging to automated problem identification and recommended solutions. Its introduction aimed to streamline troubleshooting and improve the overall user experience by providing clear, actionable insights into environment health and promoting a more self-sufficient approach to maintaining <i>conda</i> environments.


title: TLDR
content:
<b>View report for the currently active environment</b>`conda doctor`<br><b>Specify an environment by name</b>`conda doctor [[-n|--name]] [environment_name]`<br><b>Specify an environment by its path</b>`conda doctor [[-p|--prefix]] [path/to/environment]`<br><b>Enable verbose output (Note: the -v flag can be repeated to increase verbosity)</b>`conda doctor [[-v|--verbose]]`


title: TLDR
content:
<b>Check a filesystem for errors</b>`fsadm check [/dev/vg_name/lv_name]`<br><b>Perform a dry-run resize to a specific size (no changes made)</b>`fsadm [[-n|--dry-run]] resize [/dev/vg_name/lv_name] [10G]`<br><b>Grow a filesystem to fill the entire device (omit the size)</b>`fsadm resize [/dev/vg_name/lv_name]`<br><b>Resize the filesystem and the underlying logical volume together</b>`fsadm [[-l|--lvresize]] resize [/dev/vg_name/lv_name] [100G]`<br><b>For ext2/3/4, unmount and resize offline</b>`fsadm [[-e|--ext-offline]] resize [/dev/vg_name/lv_name] [20G]`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information and exits.<br><br><b><b>-s</b>, <b>--scan</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scans for available CEC adapters and devices on the bus.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all connected CEC devices and their logical addresses.<br><br><b><b>-d</b>, <b>--device</b> <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the CEC adapter to use (e.g., 'RPI', 'Pulse8').<br><br><b><b>-p</b>, <b>--port</b> <i><port></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the serial port for USB CEC adapters (e.g., <i>/dev/ttyACM0</i>).<br><br><b><b>-t</b>, <b>--test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enters test mode, often used for sending raw commands or advanced debugging.<br><br><b><b>-r</b>, <b>--monitor-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the client in monitor-only mode, showing all received CEC messages without sending any.<br><br><b><b>-m</b>, <b>--monitor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the client in monitor mode, allowing interactive command input while continuously monitoring CEC traffic.<br><br><b><b>-f</b>, <b>--force-open</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the opening of the CEC adapter, even if it's reported as already in use.<br><br><b><b>-o</b>, <b>--osd-name</b> <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the On-Screen Display (OSD) name for this CEC client, visible to other CEC devices.<br><br><b><b>-P</b>, <b>--physical-address</b> <i><addr></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manually sets the physical address of the client (e.g., <i>1.0.0.0</i> for HDMI port 1).<br><br><b><b>-L</b>, <b>--logical-address</b> <i><addr></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the logical address for the client (e.g., 0 for TV, 4 for Playback device).<br><br><b><b>-D</b>, <b>--daemon</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the client as a daemon in the background, continuously processing commands or monitoring.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity level of output for debugging and detailed message logging.<br><br><b><b>-e</b>, <b>--event-timeout</b> <i><ms></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout for event processing in milliseconds.<br><br><b><b>-c</b>, <b>--cec-config</b> <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads CEC configuration from a specified file instead of using default settings.<br><br><b><b>-T</b>, <b>--terminal</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces terminal interaction, even when stdout is not a TTY.<br><br><b><b>-i</b>, <b>--input-source</b> <i><port></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the HDMI input port for commands like 'activate source'.<br><br><b><b>-U</b>, <b>--rc-command</b> <i><cmd></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a remote control command (e.g., 'power', 'menu', 'volume up') to a device.<br><br><b><b>-S</b>, <b>--standby-timeout</b> <i><sec></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout after which the device automatically enters standby if inactive.<br><br><b><b>-N</b>, <b>--no-wait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents waiting for a reply to a sent CEC command, useful for fire-and-forget scenarios.<br><br><b><b>-C</b>, <b>--connection-timeout</b> <i><ms></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout for establishing a connection to the CEC adapter.<br><br><b><b>-Z</b>, <b>--command</b> <i><cmd></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a single CEC command string non-interactively and then exits.<br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs results in JSON format, suitable for programmatic parsing (requires newer `libCEC` versions).<br><br>


title: DESCRIPTION
content:
`cec-client` is a versatile command-line utility for interacting with devices connected via HDMI Consumer Electronics Control (CEC). It allows users to send various CEC commands to control compliant devices, such as TVs, Blu-ray players, and AV receivers, directly from the terminal. This tool is often used on systems like the <b>Raspberry Pi</b>, which typically have CEC support built into their HDMI hardware. Its functionalities include scanning for active CEC devices, turning devices on or off, switching HDMI inputs, and monitoring CEC traffic for debugging purposes. `cec-client` acts as an interface to the underlying <b>libCEC</b> library, providing a powerful way to automate home entertainment systems or troubleshoot CEC communication issues.


title: CAVEATS
content:
Requires compatible hardware with HDMI CEC support, such as a <b>Raspberry Pi</b> or a dedicated USB CEC adapter (e.g., <b>Pulse-Eight CEC adapter</b>).<br>CEC implementations can vary significantly between device manufacturers, leading to inconsistent behavior or compatibility issues across different brands.<br>Accessing the CEC device often requires appropriate user permissions, sometimes necessitating `sudo` or being part of a specific user group (e.g., `dialout`).<br>The `cec-client` command might not be present by default and may need to be installed via your distribution's package manager (e.g., `apt install cec-utils` on Debian/Ubuntu).


title: INTERACTIVE MODE AND COMMANDS
content:
When run without a specific command (e.g., just `cec-client`), it enters an interactive prompt where users can type CEC commands directly. Common commands include: <br> <b>on</b> <i><address></i>: Turns on a device. <br> <b>standby</b> <i><address></i>: Puts a device into standby. <br> <b>as</b>: Activates the current source. <br> <b>pow</b> <i><address></i>: Reports power status of a device. <br> <b>tx</b> <i><frame></i>: Sends a raw CEC frame (e.g., `tx 10:04`).


title: USING WITH SCRIPTING
content:
`cec-client` is frequently used in shell scripts for home automation. For example, to turn on a TV when a media center starts, a script might execute: <br> `echo 'on 0' | cec-client -s -d 1`<br> (where '0' is the TV's logical address and '-d 1' selects the first adapter). The <b>-Z</b>/<b>--command</b> option provides a more direct way to execute single commands non-interactively, making it ideal for scripting: <br> `cec-client -s -d 1 -Z 'on 0'`


title: HISTORY
content:
The `cec-client` utility has its roots in the <b>libCEC</b> library, developed primarily by <b>Pulse-Eight</b>. It gained significant traction with the rise of embedded systems like the <b>Raspberry Pi</b>, where it became a standard tool for enabling seamless integration of the mini-computer with HDMI-connected displays and other home theater equipment. Its development has focused on providing a robust command-line interface to the underlying CEC capabilities, evolving to support various CEC adapters and providing increasingly detailed control over CEC communication.


title: TLDR
content:
<b>List all CEC adapters</b>`cec-client [[-l|--list-devices]]`<br><b>Start an interactive CEC session</b>`sudo cec-client`<br><b>Set the On-Screen Display name</b>`sudo cec-client [[-o|--osd-name]] [name]`<br><b>Send a single command</b>`echo [on 0] | sudo cec-client [[-s|--single-command]]`<br><b>Set a device to standby in interactive mode</b>`standby [0]`<br><b>Turn a device on in interactive mode</b>`on [0]`


title: SYNOPSIS
content:
<b>cec-ctl</b> [<I>options</I>]<br><b>cec-ctl</b> <I>-d</I> <I>device</I> [<I>command</I>] [<I>options</I>]


title: PARAMETERS
content:
<b><b>-d</b> <I>device</I>, <b>--device</b> <I>device</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the CEC device node to operate on (e.g., <i>/dev/cec0</i>).<br><br><b><b>-s</b>, <b>--status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief status overview of the CEC adapter.<br><br><b><b>-S</b>, <b>--settings</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all current settings and capabilities of the CEC adapter.<br><br><b><b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide detailed information about the CEC adapter, including its driver and capabilities.<br><br><b><b>--query</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query the capabilities supported by the CEC adapter hardware.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed logs of operations and CEC messages.<br><br><b><b>--monitor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continuously monitor and display all incoming and outgoing CEC messages.<br><br><b><b>--phys-addr</b> [<I>addr</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the current physical address, or set it if an address is provided (e.g., <i>1.0.0.0</i>).<br><br><b><b>--log-addr</b> [<I>addr_list</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the current logical addresses, or set them using a comma-separated list of hex values (e.g., <i>4,8</i>).<br><br><b><b>--power</b> <I>addr</I> <I>state</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a power command to a specific logical address. <i>state</i> can be <i>on</i>, <i>off</i>, <i>toggle</i>, or <i>status</i>.<br><br><b><b>--ping</b> <I>addr</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a ping message to a logical address to check if the device is responsive.<br><br><b><b>--send-msg</b> <I>msg</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a raw CEC message, provided as a hexadecimal string (e.g., <i>40:04</i> for power off from TV).<br><br><b><b>--playback</b>, <b>--recorder</b>, <b>--tuner</b>, <b>--processor</b>, <b>--tv</b>, <b>--audio-system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Convenience options to set the device type for logical address assignment.<br><br><b><b>--osd-name</b> [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get or set the On Screen Display (OSD) name of the device.<br><br><b><b>--menu-language</b> [<I>lang</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get or set the menu language using a 3-letter ISO 639-2/B code (e.g., <i>eng</i> for English).<br><br><b><b>--cec-version</b> [<I>version</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get or set the supported CEC version (e.g., <i>1.3a</i>, <i>1.4</i>, <i>2.0</i>).<br><br>


title: DESCRIPTION
content:
<b>cec-ctl</b> is a powerful command-line utility for interacting with and controlling Consumer Electronics Control (CEC) compatible devices connected via HDMI. It allows users to query CEC device capabilities, set adapter properties like logical and physical addresses, and send various CEC commands such as power on/off, input switching, and menu navigation to other connected devices within a home theater setup. This tool is particularly useful for automating interactions with TVs, AV receivers, and other HDMI-connected equipment from a Linux system. It typically operates on specific CEC device nodes, commonly found as <i>/dev/cecX</i>.


title: CAVEATS
content:
Using <b>cec-ctl</b> requires a CEC-enabled HDMI adapter or integrated hardware (e.g., on a Raspberry Pi).<br>Proper permissions on the <i>/dev/cecX</i> device nodes are necessary for non-root users.<br>Behavior and command support can vary significantly depending on the CEC hardware and the specific HDMI devices connected.<br>Not all CEC commands are universally supported by all manufacturers or device types.


title: DEVICE SELECTION
content:
Most <b>cec-ctl</b> commands require the <b>-d</b> or <b>--device</b> option to explicitly specify which CEC adapter to interact with. These adapters are typically enumerated as <i>/dev/cec0</i>, <i>/dev/cec1</i>, and so on. While some systems with a single CEC device might implicitly select it, it is best practice to always specify the device for clarity and robustness.


title: LOGICAL VS. PHYSICAL ADDRESSES
content:
CEC communication relies on two types of addresses: the <i>physical address</i>, which reflects the HDMI port topology and hierarchy, and the <i>logical address</i>, a 4-bit address assigned dynamically to each CEC device type (e.g., TV, Playback Device, Audio System) to identify its function on the network. Understanding these addressing schemes is crucial for effectively targeting commands to specific devices.


title: HISTORY
content:
<b>cec-ctl</b> is part of the <i>v4l-utils</i> project, a collection of utilities for Video4Linux devices. Its development tracks the evolution of CEC support within the Linux kernel, especially as CEC has become more prevalent in embedded systems like the Raspberry Pi. It provides a standardized command-line interface for interacting with CEC device nodes, abstracting the underlying hardware specifics.


title: TLDR
content:
<b>List CEC devices</b>`cec-ctl --list-devices`<br><b>Monitor CEC traffic</b>`sudo cec-ctl [[-m|--monitor]]`<br><b>Show CEC topology</b>`cec-ctl [[-S|--show-topology]]`


title: TLDR
content:
<b>List all names on the session bus</b>`gdbus list-names --session`<br><b>List all names on the system bus</b>`gdbus list-names --system`<br><b>Introspect an object to see its interfaces and methods</b>`gdbus introspect --session --dest [destination_bus_name] --object-path /[path/to/object]`<br><b>Call a method on an object with arguments</b>`gdbus call --session --dest [destination_bus_name] --object-path /[path/to/object] --method [interface.method_name] [argument1 argument2 ...]`<br><b>Emit a signal from an object with arguments</b>`gdbus emit --session --object-path /[path/to/object] --signal [interface.signal_name] [argument1 argument2 ...]`<br><b>Monitor all messages on the session bus</b>`gdbus monitor --session`


title: TLDR
content:
<b>Print current terminal number or serial if the terminal is serial</b>`fgconsole`<br><b>Print the next unallocated virtual terminal</b>`fgconsole [[-n|--next-available]]`


title: PARAMETERS
content:
<b><i>&lt;package-specifier&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more package names, globs, file paths, or provide-specifiers (e.g., <i>'httpd'</i>, <i>'kernel*'</i>, <i>'/usr/bin/bash'</i>, <i>'systemd'</i>).<br><br><b><b>-x</b> <i>&lt;DIR&gt;</i>, <b>--downloaddir=</b><i>&lt;DIR&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the directory where downloaded packages will be saved. If not provided, DNF typically uses a temporary directory or the current working directory, depending on the DNF version and configuration.<br><br><b><b>--destdir=</b><i>&lt;DIR&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <b>--downloaddir</b>.<br><br><b><b>--resolve</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download all package dependencies in addition to the specified packages. This is crucial for creating complete sets of packages for offline use.<br><br><b><b>--source</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download the source RPM (SRPM) files instead of the binary RPMs. Useful for reviewing source code or rebuilding packages.<br><br><b><b>--urls</b>, <b>--urlsonly</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instead of downloading files, print the URLs of the packages that would be downloaded to standard output. Useful for scripting or manual downloads.<br><br><b><b>--nogpgcheck</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable GPG signature checking for all packages. Use with caution as it bypasses an important security measure.<br><br><b><b>--skip-broken</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to continue with transactions even if some packages are problematic or would cause dependency issues.<br><br><b><b>-y</b>, <b>--assumeyes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically answer yes for all questions asked by DNF, bypassing interactive prompts.<br><br><b><b>--repoid=</b><i>&lt;REPONAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify one or more repository IDs to include or exclude during the download operation. Can be used multiple times.<br><br><b><b>--arch=</b><i>&lt;ARCH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the architecture for which to download packages (e.g., <i>'x86_64'</i>, <i>'aarch64'</i>).<br><br>


title: DESCRIPTION
content:
The <b>dnf download</b> command is a powerful utility within the DNF package manager ecosystem, designed to fetch RPM packages and their associated dependencies without performing an actual installation. Unlike a standard <i>dnf install</i> command, which downloads and then immediately installs packages, <b>dnf download</b> focuses solely on the acquisition of the package files. This makes it invaluable for various scenarios such as preparing for offline installations, creating local mirror repositories, auditing package contents before deployment, or transferring specific packages to environments without direct internet access.<br><br>It supports sophisticated dependency resolution, ensuring that all required packages for a target application are retrieved. Users can specify a download directory, choose to download source RPMs, or even opt to only list the download URLs. By separating the download and installation phases, <b>dnf download</b> provides greater control and flexibility in managing software packages on Linux systems, particularly those using RPM-based distributions like Fedora, RHEL, CentOS, and their derivatives.


title: CAVEATS
content:
While <b>dnf download</b> is highly useful, it's important to note that it does not perform any installation or configuration of the downloaded packages. Users must manually install them using <b>rpm -i</b> or <b>dnf install</b> later. Additionally, using <b>--nogpgcheck</b> can expose your system to untrusted packages, and should only be used if the source's integrity is guaranteed through other means. The command requires sufficient disk space for all specified packages and their dependencies, which can be substantial.


title: USAGE SCENARIOS
content:
<b>dnf download</b> is ideal for creating offline installation media, populating local repositories for air-gapped networks, or transferring specific software versions between systems. It's also useful for analyzing package contents before installation or for backup purposes.


title: DIFFERENCE FROM <I>'DNF INSTALL --DOWNLOADONLY'</I>
content:
While <i>'dnf install --downloadonly'</i> also downloads packages without installing them, <b>dnf download</b> is generally preferred for pure download operations. The <i>'install --downloadonly'</i> command still performs more extensive transaction checks and might involve temporary installations, which can sometimes be less efficient or desirable for simply fetching files.


title: HISTORY
content:
The concept of downloading packages without installing them has been a long-standing requirement in RPM-based systems. In the older <b>YUM</b> package manager, this functionality was typically provided by a plugin like <i>'yum-plugin-downloadonly'</i>. When <b>DNF</b> emerged as the successor to <b>YUM</b>, this critical feature was integrated directly as a subcommand, often bundled as part of <i>dnf-plugins-core</i> or directly available in modern DNF installations. This evolution reflects the increasing demand for robust package management tools that support flexible deployment and system administration strategies.


title: TLDR
content:
<b>Download the latest version of a package to the current directory</b>`dnf download [package]`<br><b>Download a package to a specific directory (the directory must exist)</b>`dnf download [package] --destdir [path/to/directory]`<br><b>Print the URL where the RPM package can be downloaded from</b>`dnf download --url [package]`


title: TLDR
content:
<b>Back up metadata for all volume groups (to /etc/lvm/backup/ by default)</b>`sudo vgcfgbackup`<br><b>Back up metadata for a specific volume group</b>`sudo vgcfgbackup [vg_name]`<br><b>Write the backup to a specific file</b>`sudo vgcfgbackup [[-f|--file]] [path/to/backup] [vg_name]`<br><b>Back up multiple VGs using a filename template (%s becomes the VG name)</b>`sudo vgcfgbackup [[-f|--file]] [/tmp/vg-backup-%s] [vg1 vg2 ...]`<br><b>Increase verbosity (repeat -v for more detail)</b>`sudo vgcfgbackup [[-v|--verbose]] [vg_name]`


title: TLDR
content:
<b>Attach a Pulse8 CEC device to the input system</b>`inputattach --pulse8-cec [/dev/ttyACM0]`<br><b>Display help</b>`inputattach --help`


title: PARAMETERS
content:
<b><i>UNIT...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more systemd unit names (e.g., `<i>apache2.service</i>`, `<i>multi-user.target</i>`) to edit. If the unit does not exist, a new drop-in directory and file will be created.<br><br><b><b>--full</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Edit the entire main unit file in `<i>/etc/systemd/system/</i>` directly, instead of creating a drop-in snippet. This implies `<b>--force</b>` if editing a vendor unit and creates the unit file if it doesn't exist.<br><br><b><b>--runtime</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Edit a transient drop-in snippet file in `<i>/run/systemd/system/&lt;unit&gt;.d/override.conf</i>`. Changes made with this option are ephemeral and will be lost upon the next system reboot.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override protection against editing vendor-shipped units. This is automatically implied when using `<b>--full</b>` on a vendor unit or if the `<i>/etc</i>` unit file is already a symlink to `<i>/lib</i>`.<br><br><b><b>--suffix=</b><i>SUFFIX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom suffix for the drop-in snippet file (e.g., `<i>.conf</i>`). The default suffix is `<i>.conf</i>`.<br><br>


title: DESCRIPTION
content:
The `<b>systemctl edit</b>` command is a powerful utility for safely customizing systemd unit files without directly modifying the original files provided by packages. When invoked, it opens a temporary file in your preferred text editor (defined by `EDITOR` or `VISUAL` environment variables). Upon saving and exiting the editor, <b>systemd</b> automatically creates or updates a "drop-in" snippet file for the specified unit. These drop-in files are typically located in `<i>/etc/systemd/system/&lt;unit&gt;.d/override.conf</i>`.<br><br>This method ensures that your local modifications persist across package upgrades, as the original unit file (usually in `<i>/usr/lib/systemd/system/</i>`) remains untouched. After the drop-in file is saved, <b>systemctl</b> automatically reloads the systemd daemon configuration to apply the changes. If the unit is active, it will often prompt you to restart it. This command is essential for making persistent, upgrade-safe changes to unit behavior, such as altering execution commands, modifying dependencies, or setting resource limits.


title: CAVEATS
content:
Using `<b>--full</b>` to directly edit vendor unit files in `<i>/etc/</i>` can lead to conflicts during package upgrades, as the package manager might attempt to overwrite your modifications. The preferred and safer method is to use drop-ins without `<b>--full</b>`.<br><br>Changes made with `<b>--runtime</b>` are temporary and will not persist after a system reboot.<br><br>When overriding directives, especially lists like `<i>ExecStart</i>`, you might need to first clear the previous definition by assigning an empty value (e.g., `<i>ExecStart=</i>`) before providing new values.


title: DROP-IN SNIPPETS EXPLAINED
content:
When you use `<b>systemctl edit &lt;unit&gt;.service</b>` (without `<b>--full</b>`), <b>systemd</b> creates a directory `<i>/etc/systemd/system/&lt;unit&gt;.service.d/</i>` and a file named `<i>override.conf</i>` (by default) within it. This file is where your custom configurations reside. When the unit is loaded, <b>systemd</b> merges the original unit file's directives with those in your drop-in file(s). Directives in the drop-in take precedence, allowing you to selectively override or add configurations without altering the original package-provided unit file. This ensures your customizations are resilient to package updates and allows for easy rollback by simply deleting the drop-in file.


title: HISTORY
content:
The `<b>systemctl edit</b>` command, along with the underlying drop-in snippet mechanism, was introduced in <b>systemd</b> to address the challenge of safely and persistently customizing unit files. Prior to its existence, users often resorted to manually copying unit files from `<i>/usr/lib/</i>` to `<i>/etc/</i>` and editing them, which was prone to errors and difficult to track. `<b>systemctl edit</b>` streamlines this process, providing a user-friendly and robust way to manage overrides, becoming a core part of <b>systemd</b>'s administration toolkit around early systemd versions.


title: TLDR
content:
<b>Overlay a unit file non-destructively</b>`sudo systemctl edit [unit_file]`<br><b>Edit an unit file</b>`sudo systemctl edit [unit_file] [[-l|--full]]`<br><b>Create a new unit file</b>`sudo systemctl edit [unit_file] [[-lf|--full --force]]`<br><b>Overlay a user unit file</b>`systemctl edit [unit_file] --user`


title: SYNOPSIS
content:
<b>st</b> [<b>-a</b>] [<b>-c</b> <i>class</i>] [<b>-f</b> <i>font</i>] [<b>-g</b> <i>geometry</i>] [<b>-n</b> <i>name</i>] [<b>-o</b> <i>file</i>] [<b>-T</b> <i>title</i>] [<b>-v</b>] [<i>command</i> [<i>arguments ...</i>]]


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information to standard output and exits.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents scrolling to the bottom on new input when using the alternate screen buffer.<br><br><b><b>-c</b> <i>class</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the X window class property (<i>WM_CLASS</i>) for the terminal window.<br><br><b><b>-f</b> <i>font</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of fonts to use. Note: default fonts are often hardcoded in <i>config.h</i> and may override or be overridden by this option depending on the build.<br><br><b><b>-g</b> <i>geometry</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial size and position of the terminal window (e.g., <i>80x24+0+0</i>).<br><br><b><b>-n</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the X window instance name property (<i>WM_NAME</i>) for the terminal window.<br><br><b><b>-o</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects all terminal output (including command output) to the specified <i>file</i>.<br><br><b><b>-T</b> <i>title</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial title of the terminal window. This can often be changed by applications running inside the terminal.<br><br><b><b>-w</b> <i>windowid</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Embeds the terminal window inside an existing window identified by <i>windowid</i>.<br><br><b><i>command</i> [<i>arguments ...</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <i>command</i> with its <i>arguments</i> instead of the default shell.<br><br>


title: DESCRIPTION
content:
<i>st</i>, short for <i>simple terminal</i>, is a free and open-source terminal emulator for the X Window System, developed by the suckless.org community. Adhering to the suckless philosophy, it prioritizes minimalism, efficiency, and a small codebase.<br><br>Unlike most terminal emulators, <i>st</i> is primarily configured by editing its C source file, <i>config.h</i>, and then recompiling the program, rather than through runtime command-line options or external configuration files. This design choice offers profound customization and high performance at the cost of requiring the user to compile it for any changes. By default, <i>st</i> offers core features like UTF-8 and 256-color support. Many advanced functionalities, such as scrollback, ligatures, and advanced clipboard handling, are typically added by applying patches to the source code before compilation. It is favored by users who seek a highly optimized, resource-efficient, and fully controllable terminal environment.


title: CAVEATS
content:
The primary method of configuring <i>st</i> is by editing its <i>config.h</i> file and recompiling. Many features common in other terminal emulators (like scrollback, tab support, or advanced copy-paste) are not built-in by default and require applying various patches to the source code. This approach makes <i>st</i> highly customizable but also demands familiarity with compilation and patching processes, differing significantly from runtime configuration methods.


title: CONFIGURATION VIA <I>CONFIG.H</I>
content:
<i>st</i>'s unique configuration model involves editing the <i>config.h</i> file, a C header, which defines colors, fonts, keybindings, and other behaviors. After making changes, the user must recompile and reinstall <i>st</i> for them to take effect. This method ensures that the final executable is tailored precisely to the user's preferences, leading to a lightweight and efficient program without the overhead of parsing configuration files at runtime.


title: ADDING FUNCTIONALITY WITH PATCHES
content:
Many advanced features not present in the default <i>st</i> distribution, such as scrollback history, support for font ligatures, clipboard integration, or transparency, are available as community-contributed 'patches'. These are small diff files that modify the source code. Users apply these patches to their <i>st</i> source tree and then recompile, effectively building a customized version of <i>st</i> with their desired functionalities. The suckless website hosts a variety of these patches.


title: HISTORY
content:
<i>st</i> was developed by the suckless.org community as part of their suite of minimalist tools, which also includes the <i>dwm</i> window manager and <i>dmenu</i> application launcher. It emerged from a desire for a terminal emulator that adhered strictly to the Unix philosophy – doing one thing well, with a minimal, auditable, and high-performance codebase. Its development emphasizes simplicity and control, offering a highly optimized and secure environment by moving most configuration to compile-time decisions rather than runtime options.


title: TLDR
content:
<b>Open a terminal</b>`st`<br><b>Open a terminal with a specific title</b>`st -T [title]`<br><b>Open a terminal, execute a given command, and write the output to a file</b>`st -o [path/to/file] -e [command argument1 argument2]`<br><b>Increase/decrease the font size</b>`<Ctrl Shift [PageUp|PageDown]>`<br><b>Copy/paste from the clipboard</b>`<Ctrl Shift [c|v]>`


title: TLDR
content:
<b>List all available packages</b>`pacsift`<br><b>Filter packages that provide a given package</b>`pacsift --satisfies [package]`


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more <I>systemd unit names</I> (e.g., <I>apache2.service</I>, <I>network.target</I>). Unit types can be omitted if ambiguity is not present.<br><br><b>--runtime</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mask the unit only for the current runtime session. The change will not persist across reboots. The symbolic link is created in <I>/run/systemd/system/</I> instead of <I>/etc/systemd/system/</I>.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a trial run, showing what changes would be made without actually modifying the system. No actual masking takes place.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress output messages from the command.<br><br>


title: DESCRIPTION
content:
The <b>systemctl mask</b> command provides the strongest possible method to prevent a <I>systemd unit</I> from being started, either manually or automatically via dependencies. Unlike <b>systemctl disable</b>, which merely removes auto-start links, <b>mask</b> effectively makes the unit unstartable under any circumstance. It achieves this by creating a symbolic link from the unit file (e.g., <I>/etc/systemd/system/foo.service</I>) to <I>/dev/null</I>. When <I>systemd</I> attempts to load or start a masked unit, it encounters <I>/dev/null</I> and considers the unit unusable. This command is particularly useful for critical system services that should never run, for troubleshooting to isolate problematic services, or to definitively prevent a service from being enabled or started by other means.


title: CAVEATS
content:
If the unit is currently running, <b>systemctl mask</b> will prevent future starts but will <I>not</I> stop the currently active instance.<br>You must explicitly stop the unit using <b>systemctl stop</b> before masking if you wish for it to cease running immediately.<br>Masking essential system services can lead to an unbootable or unstable system. Use this command with extreme caution and only when you fully understand the implications.<br>A masked unit cannot be started or enabled without first being unmasked using <b>systemctl unmask</b>.<br>Dependencies: If other units depend on a masked unit, those dependent units might fail to start or operate correctly.


title: MASKING MECHANISM EXPLAINED
content:
The core of the <b>mask</b> operation is the creation of a symbolic link from the unit's configuration file (typically in <I>/etc/systemd/system/</I> or <I>/run/systemd/system/</I>) to <I>/dev/null</I>. When <I>systemd</I> tries to read the unit file, it effectively reads nothing, leading it to mark the unit as 'masked' and preventing its activation. This design ensures that the unit cannot be loaded or executed by any other means as long as the symlink exists.


title: PRIORITY OVER OTHER COMMANDS
content:
Masking a unit takes absolute precedence over other <I>systemctl</I> commands like <b>enable</b> or <b>start</b>. If a unit is masked, attempting to enable or start it will fail with an error, reinforcing its status as definitively disabled. You must first <b>unmask</b> the unit before any other activation commands can succeed.


title: HISTORY
content:
<I>systemctl</I> is the primary command-line tool for controlling the <I>systemd</I> init system, which replaced traditional <I>SysVinit</I> and <I>Upstart</I> in many modern Linux distributions. The <I>mask</I> functionality was introduced as part of <I>systemd</I>'s design to provide a robust and definitive way to manage unit activation, offering a stronger control mechanism than simple disabling. It has been a core feature of <I>systemd</I> since its widespread adoption, enhancing system administrators' ability to manage service lifecycle and system stability.


title: SEE ALSO
content:
systemctl unmask(1), systemctl enable(1), systemctl disable(1), systemctl start(1), systemctl stop(1), systemctl status(1)


title: TLDR
content:
<b>Mask a service</b>`systemctl mask [service_name]`<br><b>Ensure that the service is shut down while masking</b>`systemctl mask [service_name] --now`<br><b>Mask a user service</b>`systemctl mask [service_name] --user`


title: PARAMETERS
content:
<b><b>--width=<i>N</i></b>, <b>-w <i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum width for the displayed thumbnails in pixels.<br><br><b><b>--height=<i>N</i></b>, <b>-h <i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum height for the displayed thumbnails in pixels.<br><br><b><b>--zoom=<i>N</i></b>, <b>-z <i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a zoom factor for images (e.g., `0.5` for half size, `2.0` for double size).<br><br><b><b>--recursive</b>, <b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists images in subdirectories recursively.<br><br><b><b>--long</b>, <b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays images with additional file information (like `ls -l`), including original dimensions and file size.<br><br><b><b>--size</b>, <b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the original image dimensions (widthxheight) alongside the thumbnail.<br><br><b><b>--all</b>, <b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows hidden files (those starting with '.').<br><br><b><b>--force</b>, <b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces sixel output even if the terminal does not advertise sixel support. Use with caution as it may produce garbled output.<br><br><b><b>--single</b>, <b>-1</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays one image per line, preventing multiple images from appearing side-by-side.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>lsix</b> version information and exits.<br><br><b><b>--help</b>, <b>-H</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><i>FILES...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more image file paths or directories to process. If no files are specified, it processes the current directory.<br><br>


title: DESCRIPTION
content:
<b>lsix</b> is a powerful non-standard command-line tool that enables users to display image thumbnails directly within their terminal emulator. Unlike traditional file listing commands, <b>lsix</b> leverages <i>sixel graphics</i> technology to render visual previews of image files, making it incredibly useful for quickly browsing directories containing many images without needing to open a dedicated GUI image viewer. <br><br>It functions by using <i>ImageMagick</i>'s `convert` utility to resize and transform image files into the sixel format, which is then printed to the terminal. For <b>lsix</b> to work, your terminal emulator must support sixel graphics (e.g., <i>xterm</i> with sixel patches, <i>mlterm</i>, <i>wezterm</i>, or <i>kitty</i> with appropriate setup). It's an excellent utility for system administrators, developers, or anyone working in a terminal-centric environment who needs quick visual feedback on image content.


title: CAVEATS
content:
<b>lsix</b> is not a standard Linux utility and requires manual installation. Its core functionality depends on two key prerequisites: <br>1. A terminal emulator that supports <i>sixel graphics</i> (e.g., <i>xterm</i> compiled with sixel support, <i>mlterm</i>, <i>wezterm</i>, <i>Konsole</i>, or <i>kitty</i> with appropriate `imgcat` setup). Without sixel support, <b>lsix</b> will only output plain text or nothing at all. <br>2. The <i>ImageMagick</i> suite must be installed, specifically the `convert` command, which <b>lsix</b> uses for image processing. <br><br>Performance can be an issue when displaying a large number of high-resolution images, as each image needs to be processed and converted to sixel. Output over SSH may also be problematic if the `TERM` environment variable is not correctly configured or if the SSH client does not properly forward sixel capabilities.


title: INSTALLATION
content:
To use <b>lsix</b>, you typically need to clone its Git repository (e.g., from <i>github.com/hackerb9/lsix</i>), make the script executable, and place it in a directory included in your system's <i>PATH</i> environment variable. No complex compilation is usually required as it is a shell script, making installation straightforward for most users.


title: SIXEL GRAPHICS EXPLAINED
content:
Sixel is a bitmap graphics format originally introduced by DEC (Digital Equipment Corporation) in the late 1970s. It allows for image data to be encoded as a sequence of ASCII characters, which a compatible terminal can then interpret and render as pixels on the screen. <b>lsix</b> uses this mechanism to draw images directly within the text area of the terminal, providing a unique visual experience.


title: HISTORY
content:
The <b>lsix</b> command was primarily developed by Hisham H. Muhammad (<i>@hackerb9</i>) and emerged as a popular tool to bring visual image previews to the command line. It capitalizes on the resurgence of <i>sixel graphics</i>, a bitmap display format from the late 1970s and early 80s, which has seen renewed interest with modern, feature-rich terminal emulators. Its development highlights an ongoing effort within the open-source community to enhance the terminal experience, bridging the gap between graphical and text-based environments. <b>lsix</b> quickly became a go-to solution for terminal users needing efficient image browsing without leaving their command-line interface.


title: TLDR
content:
<b>List images in the current directory</b>`lsix`<br><b>List images in a specific directory</b>`lsix [path/to/directory]`<br><b>Display an image on the terminal</b>`lsix [path/to/image]`


title: TLDR
content:
<b>Run an i3 command</b>`i3-msg [command]`<br><b>Print a list of workspaces in JSON</b>`i3-msg -t get_workspaces`<br><b>Print a layout tree of all open windows, containers, outputs, and workspaces in JSON</b>`i3-msg -t get_tree`


title: PARAMETERS
content:
<b><b>-L, --dereference</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow symbolic links. If <i>FILE</i> is a symbolic link, <b>stat</b> will display information about the file the link points to, rather than the link itself.<br><br><b><b>-f, --file-system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display file system status instead of file status. This shows information about the file system where <i>FILE</i> resides, such as block size, total blocks, free blocks, and available inodes.<br><br><b><b>-c, --format=</b><i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the specified <i>FORMAT</i> instead of the default output format. <i>FORMAT</i> can contain C-style backslash escapes and percentage sequences to print specific file or file system information.<br><br><b><b>-t, --terse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the information in a terse (simplified) form. This option is mostly for backward compatibility.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information and exit.<br><br>


title: DESCRIPTION
content:
<i><br><b>Important Note:</b> The command &quot;st.2&quot; is not a standard Linux command or system call. The &quot;.2&quot; suffix typically refers to section 2 of the Unix/Linux manual pages, which describes system calls (e.g., stat(2)). It is possible that &quot;st.2&quot; is a typo or a specific reference to an unlisted or custom tool.<br><br>This analysis assumes &quot;st.2&quot; was intended to refer to the standard Linux command <b>stat(1)</b>, which is used to display detailed information (status) about files or file systems. The <b>stat</b> command retrieves metadata such as file size, access and modification times, permissions, owner, group, and inode number without displaying the file's content. It is a fundamental utility for inspecting file system objects and is part of the GNU Core Utilities.</i>


title: CAVEATS
content:
As stated in the description, <b>&quot;st.2&quot; is not a standard, executable Linux command.</b> This analysis is provided for <b>stat(1)</b>, which is the most probable intended command when considering &quot;st&quot; in the context of system utilities that provide &quot;status&quot; information. The &quot;.2&quot; in &quot;st.2&quot; typically refers to the system call interface (e.g., <b>stat(2)</b> is the system call that <b>stat(1)</b> uses). Another less likely interpretation for &quot;st&quot; could be the &quot;simple terminal&quot; (st), a minimalist terminal emulator, but this is an application rather than a command-line utility for status checks.


title: OUTPUT FORMAT SPECIFIERS
content:
The <b>--format</b> option is powerful for custom output. Common specifiers for files include:<br><i><b>%n</b></i>: File name<br><i><b>%s</b></i>: Total size in bytes<br><i><b>%F</b></i>: File type<br><i><b>%a</b></i>: Access permissions in octal<br><i><b>%A</b></i>: Access permissions in human-readable form<br><i><b>%U</b></i>: User name of owner<br><i><b>%G</b></i>: Group name of owner<br><i><b>%x</b></i>: Time of last access<br><i><b>%y</b></i>: Time of last modification<br><i><b>%z</b></i>: Time of last status change<br>For file systems (with <b>-f</b>):<br><i><b>%T</b></i>: Type of file system<br><i><b>%b</b></i>: Total data blocks on file system<br><i><b>%f</b></i>: Free blocks available to non-privileged user<br><i><b>%i</b></i>: Total inodes<br><i><b>%c</b></i>: Free inodes available to non-privileged user


title: EXIT STATUS
content:
The <b>stat</b> command exits with a status of 0 if successful, and a non-zero value if an error occurred (e.g., file not found, permission denied).


title: HISTORY
content:
The functionality of the <b>stat</b> command is deeply rooted in the Unix operating system. It relies on the <b>stat(2)</b> system call, which has been a fundamental part of Unix since its early versions (e.g., AT&T System V, BSD). The user-level <b>stat(1)</b> command, typically found in GNU Core Utilities on Linux systems, provides a convenient interface to this system call. Over time, options like <b>--format</b> have been added to provide highly customizable output, making it an invaluable tool for scripting and detailed system analysis.


title: TLDR
content:
<b>Print count, min, max, sum, mean, and standard deviation for numbers in a file</b>`st [path/to/file]`<br><b>Print statistics from stdin</b>`cat [path/to/file] | st`<br><b>Print only the sum of the numbers</b>`st [[-s|--sum]] [path/to/file]`<br><b>Print only the mean of the numbers</b>`st [[-m|--mean]] [path/to/file]`<br><b>Print only the standard deviation</b>`st [[-s|--sd]] [path/to/file]`<br><b>Transpose output (keys in one column, values in another)</b>`st [[-t|--transpose]] [path/to/file]`


title: SYNOPSIS
content:
<b>i3-nagbar</b> [<b>-v</b>|<b>--version</b>] [<b>-h</b>|<b>--help</b>]<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<b>-t</b> <i>type</i>|<b>--type</b> <i>type</i>]<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<b>-m</b> <i>message</i>|<b>--message</b> <i>message</i>]<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<b>-f</b> <i>font</i>|<b>--font</b> <i>font</i>]<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<b>-b</b> <i>label</i>:<i>command</i>|<b>--button</b> <i>label</i>:<i>command</i>] ...


title: PARAMETERS
content:
<b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>i3-nagbar</i> version and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a short help message and exits.<br><br><b><b>-t</b> <i>type</i>, <b>--type</b> <i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of message. Valid types are <i>error</i>, <i>warning</i>, and <i>message</i>. This influences the default colors used, which are defined in the <i>i3</i> configuration file.<br><br><b><b>-m</b> <i>message</i>, <b>--message</b> <i>message</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The text message to be displayed in the nagbar.<br><br><b><b>-f</b> <i>font</i>, <b>--font</b> <i>font</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font to be used for the message and buttons. For example, 'pango:monospace 8'.<br><br><b><b>-b</b> <i>label</i>:<i>command</i>, <b>--button</b> <i>label</i>:<i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a button to the nagbar. When the button is clicked, the specified <i>command</i> is executed. Multiple <b>-b</b> options can be used to add several buttons. The command can be any shell command.<br><br>


title: DESCRIPTION
content:
<i>i3-nagbar</i> is a dedicated utility for the <i>i3 window manager</i>, designed to display persistent and often critical messages to the user. Unlike transient notifications, the nagbar appears as a bar at the top of the screen and typically remains visible, sometimes blocking further interaction with <i>i3</i> until dismissed or an action is taken. It serves as an essential channel for system-level communication, commonly invoked for error reporting, critical warnings, or to solicit user confirmation for significant actions, such as restarting <i>i3</i> or exiting the session. The utility supports displaying custom text messages and allows for the inclusion of multiple interactive buttons. Each button can be configured to execute a specific shell command upon being clicked, enabling direct user interaction within the notification context. Its appearance can be subtly customized through type-based color schemes (error, warning, message) that defer to the main <i>i3</i> configuration for consistent theming. This makes <i>i3-nagbar</i> an indispensable tool for ensuring users are aware of and can respond to important events within their <i>i3</i> environment.


title: CAVEATS
content:
Older color-related command-line options are deprecated; <i>i3-nagbar</i> now relies on the <i>i3</i> configuration file for its visual theming. The utility requires the <i>i3 window manager</i> to be running and an X display environment to function correctly. Due to its persistent and sometimes modal nature, it can temporarily block user interaction with the <i>i3</i> desktop until a resolution is provided or the bar is explicitly dismissed via a button action.


title: APPEARANCE CUSTOMIZATION
content:
While <i>i3-nagbar</i> does not offer direct command-line color options anymore, its appearance is highly customizable through the <i>i3</i> configuration file. The `client.urgent`, `client.focused_inactive`, and `client.unfocused` directives, among others, influence the nagbar's colors based on the <b>-t</b> <i>type</i> option used. This integration ensures a consistent look and feel with your overall <i>i3</i> theme.


title: COMMON USE CASES
content:
<i>i3-nagbar</i> is frequently used in scripts or directly by <i>i3</i> for critical interactions. Examples include asking for confirmation before exiting <i>i3</i> (`i3-nagbar -m "Quit i3?" -b "Yes:i3-msg exit" -b "No:exit 0"`), reporting configuration file errors (`i3-nagbar -t error -m "Configuration error: line 123" -b "Edit:$EDITOR ~/.config/i3/config"`), or displaying system-level warnings that require immediate attention.


title: HISTORY
content:
<i>i3-nagbar</i> has been an integral part of the <i>i3 window manager</i> project since its early development. It was conceived to provide a direct and unavoidable mechanism for <i>i3</i> to communicate critical information or solicit user decisions. Over time, its development has seen refinements, particularly concerning its aesthetic customization, where direct command-line color options were deprecated in favor of leveraging the unified theming definitions within the main <i>i3</i> configuration file. This evolution reflects a broader effort to centralize and simplify configuration management within the <i>i3</i> ecosystem, ensuring consistency across all <i>i3</i> components.


title: TLDR
content:
<b>Display an error</b>`i3-nagbar [[-m|--message]] "[error message]"`<br><b>Display a warning</b>`i3-nagbar [[-t|--type]] warning [[-m|--message]] "[warning message]"`<br><b>Use the specified font</b>`i3-nagbar [[-f|--font]] "[pango:monospace bold 9]" [[-m|--message]] "[error message]"`<br><b>Create a button and run a command in a terminal on click</b>`i3-nagbar [[-b|--button]] "[button text]" [command] [[-m|--message]] "[error message]"`<br><b>Create a button and run a command on click</b>`i3-nagbar [[-B|--button-no-terminal]] "[button text]" [command] [[-m|--message]] "[error message]"`<br><b>Always open i3-nagbar on the primary monitor (default: focused monitor)</b>`i3-nagbar [[-pm|--primary --message]] "[error message]"`


title: SYNOPSIS
content:
<B>vc</B> <I>[OPTIONS]</I> <I>&lt;command&gt;</I> <I>[ARGUMENTS]</I><br><br>Common hypothetical usage patterns:<br>&nbsp;&nbsp;<B>vc</B> <I>init</I><br>&nbsp;&nbsp;<B>vc</B> <I>add</I> <I>&lt;file&gt;</I><br>&nbsp;&nbsp;<B>vc</B> <I>commit</I> <I>&lt;file&gt;</I> <I>-m "message"</I><br>&nbsp;&nbsp;<B>vc</B> <I>log</I> <I>&lt;file&gt;</I><br>&nbsp;&nbsp;<B>vc</B> <I>diff</I> <I>&lt;file&gt;</I> <I>[rev1]</I> <I>[rev2]</I><br>&nbsp;&nbsp;<B>vc</B> <I>restore</I> <I>&lt;file&gt;</I> <I>&lt;revision&gt;</I>


title: PARAMETERS
content:
<b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform. Hypothetical commands include <I>init</I>, <I>add</I>, <I>commit</I>, <I>log</I>, <I>diff</I>, <I>restore</I>, etc.<br><br><b><I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target file for the version control operation.<br><br><b><I>-m "message"</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a descriptive message for a commit operation.<br><br><b><I>-r &lt;revision&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular revision number or identifier for operations like <I>diff</I> or <I>restore</I>.<br><br><b><I>-f</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force an operation, e.g., to overwrite an existing file during a restore without confirmation.<br><br><b><I>--help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and available commands/options.<br><br>


title: DESCRIPTION
content:
The command <I>vc</I> is <B>not a standard Linux utility</B> and is generally not found in common distributions. If such a command exists, it is likely a custom script, an alias, or part of a highly specialized, non-widespread tool. This analysis describes a <B>hypothetical</B> <I>vc</I> command interpreted as a <I>Very basic Version Control</I> utility.<br><br>In this hypothetical scenario, <I>vc</I> would provide fundamental functionalities for managing file revisions locally. It might allow users to 'check in' files to a simple, local history, list past revisions, compare different versions, or restore a previous state. Unlike comprehensive systems like Git or SVN, this <I>vc</I> would operate on individual files or small directories, prioritizing simplicity over complex features like distributed workflows, branching, or advanced merging. Its primary use could be for quick backups of configuration files, tracking minor changes in personal scripts, or managing small project revisions where a full-fledged VCS is overkill. Its lightweight nature would be its strength, but also its limitation in scope and features.


title: CAVEATS
content:
The <B>vc</B> command is <B>not a standard Linux utility</B> and is generally not found in common distributions. Users attempting to run <B>vc</B> on a typical Linux system will likely encounter a 'command not found' error. Any analysis of <B>vc</B> must therefore be based on a <B>hypothetical interpretation</B> (e.g., as a basic version control tool), or refer to a custom script, alias, or specialized program that coincidentally uses this name. This document describes such a hypothetical tool.


title: <B>ABSENCE IN STANDARD DISTRIBUTIONS</B>
content:
The <B>vc</B> command is not part of the GNU Core Utilities, busybox, or other common Linux package sets. Its name also does not correspond to any frequently used tools for virtual consoles (which often use commands like <I>chvt</I> or <I>openvt</I>) or other common system functions. Therefore, its presence on any given system almost certainly indicates a local installation, custom script, or alias defined by the user or system administrator.


title: <B>POTENTIAL FOR CUSTOM IMPLEMENTATIONS</B>
content:
Due to its simple, two-letter abbreviation, <B>vc</B> is a name that could easily be chosen for a custom script or alias by users for various purposes, such as '<b>v</b>irtual <b>c</b>onsole', '<b>v</b>ersion <b>c</b>heck', '<b>v</b>ideo <b>c</b>onverter', or indeed '<b>v</b>ersion <b>c</b>ontrol'. The actual functionality of a command named <B>vc</B> would entirely depend on its specific implementation in a given environment.


title: HISTORY
content:
As <B>vc</B> is <B>not a standard Linux command</B>, there is no public or widely recognized history of its development or widespread usage. If such a command exists in a specific environment, its history would be internal to that project or organization. It would likely have originated as a custom utility or script developed to address niche versioning needs, perhaps as a simpler alternative or wrapper where more complex version control systems were deemed overkill or too resource-intensive for specific tasks.


title: TLDR
content:
<b>Open a file in a file descriptor for read an write</b>`exec [3]<>[path/to/file]`<br><b>Open a file descriptor to a remote connection</b>`exec [3]<>/dev/[tcp]/[remote_host]/[port_number]`<br><b>Close a file descriptor</b>`exec [3]<>-`


title: SYNOPSIS
content:
<b>i3-msg</b> [<b>-s</b> <I>socket</I>] [<b>-t</b> <I>type</I>] [<b>-q</b>] [<b>-v</b>] [<b>-h</b>] [<I>command</I> [arguments]]


title: PARAMETERS
content:
<b><b>&lt;command&gt; [arguments]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This specifies the <I>i3</I> command string to be executed by the window manager. Examples include <I>workspace next</I>, <I>move container to scratchpad</I>, <I>exec --no-startup-id firefox</I>, or <I>reload</I>. These commands mirror those found in the <I>i3</I> configuration file or bound to key combinations.<br><br><b><b>-s</b>, <b>--socket</b> <I>socket</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows you to specify a custom path to the <I>i3</I> IPC socket. By default, <I>i3-msg</I> automatically discovers the socket path, typically located within the user's runtime directory, e.g., <I>/run/user/&lt;UID&gt;/i3/ipc-socket.&lt;PID&gt;</I> or <I>$XDG_RUNTIME_DIR/i3/ipc-socket.&lt;PID&gt;</I>.<br><br><b><b>-t</b>, <b>--type</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the message type for the IPC request. The default type is <I>command</I> for executing i3 actions. Other common types are for querying information, such as <I>get_workspaces</I>, <I>get_outputs</I>, <I>get_tree</I>, <I>get_marks</I>, <I>get_version</I>, <I>get_binding_modes</I>, and <I>get_config</I>.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses any output from <I>i3-msg</I>. This option is particularly useful when the command is integrated into scripts where no console feedback or success messages are desired, allowing for cleaner script execution.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <I>i3-msg</I> utility and then exits. This helps in verifying the installed version of the tool.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a comprehensive help message that details the command's usage and lists all available options, then exits. It serves as a quick reference guide for using <I>i3-msg</I>.<br><br>


title: DESCRIPTION
content:
The <I>i3-msg</I> command serves as the primary interface for sending commands to a running <I>i3</I> window manager instance. It establishes communication with <I>i3</I> through its Inter-Process Communication (IPC) socket, enabling users and scripts to dynamically control various aspects of the desktop environment. This includes managing window layout, navigating and organizing workspaces, executing applications, and querying the current state of the window manager. <I>i3-msg</I> is an essential tool for scripting complex behaviors, configuring custom keybindings beyond what the configuration file directly supports, and for debugging <I>i3</I> setups. Whether you need to move a window to a specific workspace, toggle its floating state, reload your configuration without restarting <I>i3</I>, or retrieve detailed information about your window tree, <I>i3-msg</I> provides the necessary programmatic access for seamless interaction. It is a fundamental component for extending <I>i3</I>'s capabilities and integrating with external tools.


title: CAVEATS
content:
For <I>i3-msg</I> to function, an <I>i3</I> window manager instance must be actively running; otherwise, the command will fail to establish a connection. Users should exercise caution when sending commands, as incorrect or malformed instructions can lead to unintended alterations in window layout or configuration. Scripts employing <I>i3-msg</I> are advised to include robust error handling. Access to the IPC socket could potentially pose a minor security consideration in multi-user environments if not properly secured, as it grants control over the user's desktop session.


title: IPC INTERFACE
content:
<I>i3-msg</I> communicates with the running <I>i3</I> daemon through an Inter-Process Communication (IPC) socket. This socket serves as a direct, real-time channel for sending commands and receiving responses. The path to this socket is typically dynamically generated and stored in a user's runtime directory, for instance, <I>$XDG_RUNTIME_DIR/i3/ipc-socket.&lt;PID&gt;</I>, ensuring that each <I>i3</I> instance has its unique communication endpoint. This robust and efficient IPC mechanism is fundamental to <I>i3</I>'s extensibility, allowing third-party tools, custom scripts, and even other applications to deeply integrate and interact with the window manager.


title: MESSAGE TYPES AND QUERIES
content:
Beyond simply executing direct commands (the default <I>type</I>), <I>i3-msg</I> supports a variety of query message types via the <I>-t</I> option. These queries empower users to retrieve detailed, structured information about the current state of the <I>i3</I> window manager. For example, <I>i3-msg -t get_tree</I> will return a comprehensive JSON representation of the entire window tree, including all containers, workspaces, and outputs. Similarly, <I>get_workspaces</I> provides data on active workspaces, while <I>get_version</I> retrieves <I>i3</I>'s version information. These powerful query capabilities are invaluable for developing custom status bars, monitoring tools, and intelligent scripts that can react dynamically to the window manager's state changes.


title: HISTORY
content:
The <I>i3-msg</I> utility has been a cornerstone of the <I>i3</I> window manager project since its inception around 2009. Conceived by Michael Stapelberg as a modern, user-friendly tiling window manager, <I>i3</I> was designed with a strong emphasis on a simple, well-documented IPC mechanism for programmatic control. <I>i3-msg</I> was developed to provide a straightforward command-line interface to this IPC, enabling users to script complex behaviors, extend their desktop environment's functionality, and interact with <I>i3</I> outside of standard keybindings. Its consistent and logical design reflects <I>i3</I>'s overarching philosophy of providing a highly configurable, scriptable, and transparent environment.


title: SYNOPSIS
content:
This term refers to shell features rather than a single command. The primary components are:<br><br><B>1. <I>less</I> command syntax:</B><br><I>less</I> [<B>-?abBcCdeEfFgGiIJKmMnNqQrRsSuUVwWXz</B>] [<B>-<I>P</I></B> prompt] [<B>-<I>t</I></B> tag] [<B>-<I>T</I></B> tagsfile] [<B>-<I>u</I></B> [bBsS]] [<B>-<I>x</I></B> tab,...] [<B>-<I>y</I></B> lines] [<B>-<I>z</I></B> lines] [<B>-<I>_</I></B> [^]] [<B>--</B> [.] ] [<B>-</B>| <I>file</I>...]<br><br><B>2. Input Redirection syntax:</B><br><I>command</I> <I>options</I> < <I>input_file</I><br><br><B>3. Output Redirection syntax:</B><br><I>command</I> <I>options</I> > <I>output_file</I><br><I>command</I> <I>options</I> >> <I>append_file</I>


title: PARAMETERS
content:
<b>-?</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help (brief list of less commands).<br><br><b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search forward from the current position in the first file, or from the beginning of subsequent files.<br><br><b>-B</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't automatically skip over blank lines.<br><br><b>-E</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes less to exit automatically when the end of the file is reached.<br><br><b>-F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes less to exit if the entire file can be displayed on the first screen.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes searches to ignore case, unless the search pattern contains uppercase letters.<br><br><b>-N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display line numbers at the beginning of each line.<br><br><b>-R</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes 'raw' control characters to be displayed.<br><br><b>-S</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Chop long lines rather than wrapping them.<br><br><b>-X</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable sending termcap initialization/deinitialization strings to the terminal.<br><br>


title: DESCRIPTION
content:
The phrase "less-than-more-than" does not refer to a single, executable Linux command. Instead, it's a colloquial expression that commonly alludes to two distinct but related concepts in the Linux command-line environment: <br>1. <B>Shell Input Redirection (<):</B> The "less-than" symbol is used to redirect the content of a file to become the standard input for a command, rather than the keyboard. <br>2. <B>Shell Output Redirection (>):</B> The "more-than" symbol is used to redirect the standard output of a command to a file, overwriting its contents. <br>These operators are fundamental to shell scripting and command-line data processing. Often, these redirection concepts are discussed in conjunction with the <I>less</I> command, a powerful pager used for viewing text files or command output one screen at a time. While <I>less</I> itself primarily takes input (often via redirection or pipes) and displays it, it doesn't directly use '>' for its own output in the same way other commands might. The "less-than-more-than" idiom, therefore, encapsulates the idea of controlling data flow into and out of commands, with <I>less</I> being a common consumer of redirected input.


title: CAVEATS
content:
The most important caveat is that <B>"less-than-more-than"</B> is <I>not a directly executable Linux command or program</I>. It is a conceptual term referring to shell features (<, >) and a separate utility (<I>less</I>). Confusing it as a single command will lead to errors. <br><br>When using output redirection (<B>></B>), be extremely cautious as it <B>overwrites</B> the target file without warning. Use <B>>> (append redirection)</B> to add content to the end of a file, or ensure you intend to replace the file's contents entirely. Input redirection (<B><</B>) expects the specified file to exist and be readable. Improper use of these operators can lead to data loss or unexpected command behavior.


title: INPUT REDIRECTION (<)
content:
The 'less-than' symbol (<) is used to change the standard input source for a command from the keyboard to a specified file. Instead of waiting for user input, the command will read its input directly from the contents of the file. This is particularly useful for commands that process text, allowing them to operate on file content without having to open the file explicitly. <br>Example: <I>grep "pattern" < logfile.txt</I> (finds patterns in logfile.txt by redirecting its content to grep's standard input).


title: OUTPUT REDIRECTION (>)
content:
The 'more-than' symbol (>) is used to redirect the standard output of a command from the terminal screen to a specified file. If the file does not exist, it will be created. If the file already exists, its contents will be completely <B>overwritten</B>. <br><br>For appending output to an existing file without overwriting, the double 'more-than' symbol (<B>>>)</B> is used. This adds the command's output to the end of the file. <br>Example: <I>ls -l > filelist.txt</I> (writes directory listing to filelist.txt, overwriting if it exists). <br>Example: <I>echo "New line" >> filelist.txt</I> (adds "New line" to the end of filelist.txt).


title: HISTORY
content:
The <I>less</I> command was written by Mark Nudelman and first released in 1983, with the goal of being a more flexible and powerful alternative to the earlier <I>more</I> pager. Its name is a playful jab at <I>more</I>, implying it can do "less" (meaning fewer restrictions) than <I>more</I> can. It allows both forward and backward navigation, unlike <I>more</I> which was primarily forward-only.<br><br>Input and output redirection, using the '<' and '>' operators, are fundamental features of the Unix shell, predating specific commands like <I>less</I>. These redirection mechanisms were integral to the design of the original Unix operating system and its command-line interface, allowing for powerful piping and script automation. They enable the core Unix philosophy of small, specialized tools working together by manipulating their standard input and output streams.


title: PARAMETERS
content:
<b><b>-s</b>, <b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search the sync database (repositories) instead of the local database.<br><br><b><b>-i</b>, <b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed package information (like <i>pacman -Si</i>/<i>pacman -Qi</i>).<br><br><b><b>-g</b>, <b>--groups</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter by package groups.<br><br><b><b>-r</b>, <b>--repo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter by repository name.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List unique values for a specified field (e.g., <i>repos</i>, <i>groups</i>).<br><br><b><b>-p</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress output headers.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the full package description.<br><br><b><b>-f</b> <i>&lt;field&gt;</i>, <b>--field</b> <i>&lt;field&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the field to search (e.g., <i>name</i>, <i>desc</i>, <i>group</i>, <i>repo</i>).<br><br><b><b>-w</b>, <b>--word</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Match whole words only.<br><br><b><b>-c</b>, <b>--case</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a case-sensitive search.<br><br><b><b>-x</b>, <b>--regex</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use extended regular expressions (this is the default behavior).<br><br><b><b>-e</b>, <b>--exact</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform an exact string match.<br><br><b><b>-o</b>, <b>--origin</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter packages by their installation origin (e.g., <i>explicit</i>, <i>dependency</i>).<br><br><b><b>-u</b>, <b>--upgrades</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only packages that have available upgrades.<br><br><b><b>-S</b> <i>&lt;field&gt;</i>, <b>--sort</b> <i>&lt;field&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort results by a specified field (e.g., <i>name</i>, <i>size</i>, <i>version</i>).<br><br><b><b>-D</b>, <b>--desc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort results in descending order.<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;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<b>pacsift</b> is a powerful command-line utility for Arch Linux that enables users to efficiently search and filter packages within the <br><i>pacman</i> database. It acts as an intelligent wrapper around <br><i>pacman -Qs</i> (for installed packages) and <i>pacman -Ss</i> (for repository packages), providing a more structured and flexible way to query package information.<br><br>Unlike basic <br><i>grep</i> pipes, <b>pacsift</b> understands various package fields like name, description, group, repository, and origin, allowing users to target their searches precisely. It supports regular expressions, case sensitivity, whole-word matching, and can display detailed package information or list unique values for specific fields, making it an invaluable tool for system administration and package management.


title: CAVEATS
content:
<b>pacsift</b> relies on <i>pacman</i>'s database and output format. Changes in <i>pacman</i>'s behavior or output could potentially affect <b>pacsift</b>'s functionality. It requires the <i>pacman-contrib</i> package to be installed on Arch Linux.


title: USAGE EXAMPLES
content:
Search sync database for "linux": <br><i>pacsift -s linux</i><br>Filter installed packages by the "base-devel" group: <br><i>pacsift -g base-devel</i><br>List all unique repository names: <br><i>pacsift -l repo</i><br>Show upgradable packages: <br><i>pacsift -u</i><br>Search for packages with "python" in their name or description in a case-sensitive manner: <br><i>pacsift -c python</i>


title: INTEGRATION WITH PACMAN
content:
<b>pacsift</b> leverages <i>pacman</i>'s capabilities, essentially parsing and enhancing its output for more user-friendly and precise filtering. It streamlines the process of extracting relevant package information without needing complex shell pipelines.


title: HISTORY
content:
<b>pacsift</b> is part of the <i>pacman-contrib</i> package, which provides various helper scripts and tools for <i>pacman</i>. It emerged to address the need for more sophisticated package searching and filtering capabilities beyond what <i>pacman -Qs</i> or <i>pacman -Ss</i> combined with simple piping could offer, providing a more structured and field-aware approach to querying package metadata.


title: PARAMETERS
content:
<b><i>&lt;vmid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique numeric <b>Virtual Machine ID</b> of the target Proxmox LXC container. This argument specifies which container to connect to.<br><br>


title: DESCRIPTION
content:
<i>pct console</i> is a command-line utility provided by the <b>Proxmox Container Toolkit (PCT)</b> that allows users to connect directly to the console of a running or stopped Linux Container (LXC) on a Proxmox VE host. It primarily acts as a wrapper for the <i>lxc-attach</i> command, enabling direct interaction with the container's shell environment. This is particularly useful for debugging, performing administrative tasks, or troubleshooting containers, especially when network access (e.g., SSH) to the container is unavailable or misconfigured. The command requires the Virtual Machine ID (vmid) of the target container to establish the connection.<br><br>It provides a secure and reliable way to get a shell inside the container, even if its network stack is broken or it's stuck during boot, making it an essential tool for Proxmox administrators.


title: CAVEATS
content:
Connecting to the container's console via <i>pct console</i> typically requires <b>root privileges</b> on the Proxmox host. The container must be in a state where <i>lxc-attach</i> (the underlying command) can successfully connect; usually, this means the container is running. If the container's init system or shell is unresponsive, the console session might appear to hang. It provides direct console access only, without features like file transfer that are common with SSH.


title: PURPOSE AND USE CASES
content:
<i>pct console</i> provides a direct, low-level interface to the container's operating system, bypassing network layers. This makes it invaluable for recovering containers with network configuration issues, troubleshooting boot failures, or for initial setup where network services haven't started yet. It connects you directly to the container's PID 1's TTY, or a new TTY if available.<br><br>While primarily for emergencies, it's also convenient for quick administrative tasks without needing to configure SSH keys or remember container IPs.


title: SECURITY CONSIDERATIONS
content:
As <i>pct console</i> grants direct access (often equivalent to root within the container, depending on the container's user mapping) to the container from the host, proper host security and access control are paramount. Any user with <i>sudo</i> access to run <i>pct console</i> on the Proxmox host can effectively gain access to the container. It's crucial to restrict host access to trusted administrators.


title: HISTORY
content:
<i>pct console</i> is an integral part of the <b>Proxmox Container Toolkit</b>, which was developed alongside <b>Proxmox Virtual Environment (PVE)</b> to provide robust management for Linux Containers (LXC). Its introduction aimed to simplify direct console access to LXC containers, mirroring the <i>qm console</i> functionality for KVM virtual machines, thereby offering a unified management experience within the Proxmox ecosystem. It has been a core utility since the early days of LXC support in Proxmox VE, evolving with the platform to ensure reliable container management.


title: PARAMETERS
content:
<b><i>NAME...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name(s) of one or more <i>systemd units</i> to restart. Common examples include <br><code>apache2.service</code>, <code>nginx.service</code>, or <code>dbus.socket</code>.<br><br><b><b>-H</b> <i>HOST</i>, <b>--host=</b><i>HOST</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the operation on a <i>remote host</i>. This allows managing services on a different machine <br>via SSH or a similar mechanism.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output messages from <b>systemctl</b>, useful for scripting or when output is not <br>desired.<br><br><b><b>--no-block</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the operation to complete. The command will return immediately, allowing the <br>restart process to happen in the background.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Communicate with the <i>user systemd instance</i> rather than the default <i>system systemd instance</i>. <br>This is used for managing services started by a specific user.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Default) Communicate with the <i>system systemd instance</i>. This manages system-wide services <br>and units.<br><br><b><b>-t</b> <i>TYPE</i>, <b>--type=</b><i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only operate on units of the specified <i>TYPE</i>. For example, <b>--type=service</b> would only <br>consider units ending with <code>.service</code>.<br><br>


title: DESCRIPTION
content:
The <b>systemctl restart</b> command is used to gracefully stop and then immediately start one or more <br> <i>systemd units</i>. This is a critical operation for applying configuration changes to a service, <br>re-initializing a service that might be in an unstable state, or simply ensuring a service is running <br>with its latest configuration. Unlike a manual `stop` followed by `start`, `restart` ensures that the <br>service is brought back online if it was previously active, and often handles underlying dependencies <br>more elegantly. It's an atomic operation in the sense that it combines both actions, minimizing the <br>window where the service is unavailable. If a service defines an `ExecReload` directive in its unit <br>file, <b>systemctl reload</b> might be a less disruptive alternative, but `restart` guarantees a full <br>reinitialization.


title: CAVEATS
content:
<ul><li>Most <b>systemctl restart</b> operations on system units require root privileges (e.g., using <br><b>sudo</b>).</li><li>If a service fails to stop or start during the restart process, the command will report a failure. <br>Consult <b>journalctl -u <i>NAME</i></b> for detailed logs.</li><li>For services that support it, <b>systemctl reload</b> is often preferred over <b>restart</b> as it <br>minimizes service downtime by only reloading configuration files without stopping the entire service. <br>Check the service's documentation or unit file for `ExecReload` support.</li><li>A successful `restart` command does not guarantee that the service is fully functional, only that <br>the `ExecStart` command was executed. Always check the service's status and logs.</li></ul>


title: UNIT FILES
content:
<i>systemd</i> manages system resources through configuration files called <i>unit files</i>, typically <br>found in <code>/etc/systemd/system/</code> or <code>/lib/systemd/system/</code>. Each unit type (e.g., <code>.service</code>, <br><code>.socket</code>, <code>.mount</code>) has specific directives defining its behavior. When restarting, you refer <br>to these units by their full name (e.g., <code>ssh.service</code>).


title: IDEMPOTENCY
content:
The <b>systemctl restart</b> command is generally <i>idempotent</i> in its desired outcome: regardless <br>of the service's current state (running or stopped), executing `restart` will attempt to bring the <br>service to a 'restarted and active' state.


title: DEPENDENCY HANDLING
content:
<i>systemd</i> is designed with advanced dependency management. When you restart a service, <i>systemd</i> <br>considers the `Requires`, `Wants`, `Before`, and `After` directives within the service's unit file, <br>intelligently managing related units to ensure proper startup order and functionality.


title: HISTORY
content:
<b>systemctl</b> is the primary command-line utility for controlling the <i>systemd</i> init system, <br>which became the default init system for many major Linux distributions starting in the early 2010s. <br><i>systemd</i> replaced older systems like <i>SysVinit</i> and <i>Upstart</i>, aiming to improve boot times, <br>enhance service management, and provide robust dependency handling. The <b>restart</b> subcommand is a <br>core part of <b>systemctl</b>'s service control capabilities, offering a standardized and efficient way <br>to reinitialize services across modern Linux environments.


title: SEE ALSO
content:
systemctl start(1), systemctl stop(1), systemctl enable(1), systemctl disable(1), systemctl status(1), systemctl reload(1), journalctl(1)


title: TLDR
content:
<b>Restart a unit</b>`systemctl restart [unit]`<br><b>Restart more than one unit</b>`systemctl restart [unit1 unit2 ...]`<br><b>Restart a user unit</b>`systemctl restart [unit] --user`


title: PARAMETERS
content:
<b><b>-u</b>, <b>--user</b> <I>user</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target username to run the command as. If omitted, the command is run as <b>root</b>.<br><br><b><b>-D</b>, <b>--description</b> <I>description</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the descriptive text shown in the graphical password dialog, helping users understand why a password is required.<br><br><b><b>-m</b>, <b>--message</b> <I>message</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <b>--description</b>, this option provides a custom message displayed to the user in the dialog.<br><br><b><b>--display</b> <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to use for the graphical dialog. Useful in environments with multiple displays or when forwarding X.<br><br><b><b>--preserve-environment</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <b>gksudo</b> to pass the calling user's environment variables to the elevated command. Use with caution as it can introduce security risks.<br><br><b><b>--sudo-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tries to behave more like the standard <b>sudo</b> command, particularly concerning environment variable handling and privilege changes.<br><br><b><b>--disable-grab</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the graphical password dialog from grabbing the keyboard and mouse input, which can be useful in certain display environments.<br><br>


title: DESCRIPTION
content:
<b>gksudo</b> is a graphical frontend for the <b>sudo</b> command, specifically designed to execute graphical applications with superuser privileges. Unlike directly using <b>sudo</b> in a terminal, which can lead to issues with X server permissions and environment variables (like DISPLAY and XAUTHORITY), <b>gksudo</b> ensures these necessary graphical environment variables are correctly set for the elevated process. It provides a user-friendly graphical password dialog, making the elevation of privileges more intuitive for GUI programs.<br><br>Historically, it was a staple in GTK-based desktop environments like GNOME for launching system configuration utilities, file managers, or other tools requiring root access. While it served a crucial role in enabling graphical root access, it has largely been superseded by <b>pkexec</b>, which offers a more secure and fine-grained approach to privilege escalation for graphical applications.


title: CAVEATS
content:
<br> <I><b>Deprecation:</b></I> <b>gksudo</b> (and its counterpart <b>gksu</b>) is considered deprecated in modern Linux distributions. It is no longer actively maintained and has been removed from many distributions (e.g., Ubuntu since 18.04).<br> <br> <I><b>Security:</b></I> Running entire graphical applications as <b>root</b> generally poses higher security risks than elevating privileges for specific, minimal actions. A compromise of a root-privileged GUI application can have widespread system impact.<br> <br> <I><b>Alternatives:</b></I> For new applications and scripts, <b>pkexec</b> (part of PolicyKit/polkit) is the officially recommended and more secure alternative for graphical privilege escalation, offering more granular control and adhering to the principle of least privilege.


title: WHY NOT USE <B>SUDO</B> DIRECTLY FOR GRAPHICAL APPLICATIONS?
content:
<br> When <b>sudo</b> is used directly in a terminal to launch a graphical application (e.g., `sudo nautilus`), it often fails or causes unexpected behavior. This is because the elevated process typically loses access to the necessary X Window System environment variables (like `DISPLAY`) and authentication tokens (like `XAUTHORITY`). These are crucial for the application to connect to and display on the user's X server. <b>gksudo</b> was specifically designed to correctly set up this environment, ensuring the graphical application could run successfully with elevated privileges, thus bridging the gap between terminal `sudo` and graphical environments.


title: TRANSITION TO <B>PKEXEC</B>
content:
<br> The move from <b>gksudo</b> to <b>pkexec</b> represents a significant shift in how graphical applications handle privileges. While <b>gksudo</b> runs the entire application as <b>root</b>, <b>pkexec</b> (leveraging PolicyKit) allows for more granular control. PolicyKit rules can be configured to grant specific permissions for specific actions or executables, often enabling an application to run mostly as the unprivileged user while only the critical, privilege-requiring parts interact with PolicyKit. This 'least privilege' model dramatically enhances security compared to <b>gksudo</b>'s 'all or nothing' approach of running the whole GUI application as <b>root</b>.


title: HISTORY
content:
<br> <b>gksudo</b> emerged as part of the <b>gksu</b> package, primarily serving the GNOME desktop environment. Its development coincided with the increasing adoption of <b>sudo</b> as the preferred method for privilege escalation over <b>su</b>. It addressed the critical need for a safe and user-friendly way to launch graphical applications with root privileges, correctly handling the complexities of X server permissions and environment variables that direct terminal-based <b>sudo</b> often struggled with.<br><br>As desktop environments matured and security models evolved, particularly with the advent of PolicyKit (now polkit), <b>gksudo</b> began to be phased out. PolicyKit offered a more robust framework for authorization and privilege management, leading to <b>pkexec</b> becoming the standard, more secure, and fine-grained alternative, ultimately deprecating <b>gksudo</b>'s role.


title: TLDR
content:
<b>Run a command as a specific user</b>`gksudo [[-u|--user]] [userid] [command]`<br><b>Run the command while preserving the current environments</b>`gksudo [[-u|--user]] [userid] [[-k|--preserve-env]] [command]`<br><b>Force gksudo to use su to run the command</b>`gksu [[-u|--user]] [userid] [[-w|--su-mode]] [command]`<br><b>Force gksudo to use sudo to run the command</b>`gksudo [[-u|--user]] [userid] [[-S|--sudo-mode]] [command]`<br><b>Output debug info for the given command</b>`gksudo [[-u|--user]] [userid] [[-d|--debug]] [command]`


title: TLDR
content:
<b>Expose a local port to a remote Bore server</b>`bore local [[-t|--to]] [remote_server_address] [local_port]`<br><b>Expose a specific local host instead of localhost</b>`bore local [[-l|--local-host]] [host] [[-t|--to]] [remote_server_address] [local_port]`<br><b>Specify a remote server port explicitly</b>`bore local [[-t|--to]] [remote_server_address] [[-p|--port]] [remote_port] [local_port]`<br><b>Use a secret for authentication</b>`bore local [[-t|--to]] [remote_server_address] [[-s|--secret]] [your_secret] [local_port]`<br><b>Display help</b>`bore local [[-h|--help]]`


title: SYNOPSIS
content:
<b>aur-sync</b> [<i>options</i>] <i>&lt;packages...&gt;</i><br><b>aur-sync</b> -u [<i>options</i>]<br><b>aur-sync</b> -c [<i>options</i>] [<i>&lt;packages...&gt;</i>]<br><b>aur-sync</b> -r <i>&lt;repo&gt;</i> [<i>options</i>] [<i>&lt;packages...&gt;</i>]


title: PARAMETERS
content:
<b>-u, --upgrade</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade all installed AUR packages that have newer versions available in the AUR.<br><br><b>-c, --clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clean old package files and build directories managed by <b>aur-sync</b>.<br><br><b>-r <i>&lt;repo&gt;</i>, --repo <i>&lt;repo&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the local AUR repository to use for building and installing packages. This is crucial for <b>aur-sync</b>'s operation.<br><br><b>-d, --dryrun</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run; show what would be done without actually executing any changes.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force rebuild existing packages even if they are up-to-date or already present in the local repository.<br><br><b>--chroot <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Build packages within a specified chroot directory, providing an isolated and clean build environment.<br><br><b>--makepkg-args <i>&lt;args&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass additional arguments directly to the <i>makepkg</i> command during package building.<br><br><b>--sudo-args <i>&lt;args&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass additional arguments directly to the <i>sudo</i> command when elevated privileges are required.<br><br><b>--ignore <i>&lt;pkg&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore a specific package during upgrade or synchronization operations.<br><br><b>--no-confirm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not prompt for confirmation during operations, proceeding automatically.<br><br><b>-s, --sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only synchronize PKGBUILDs from the AUR, without building or installing packages.<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:
<b>aur-sync</b> is a command-line utility from the <i>aurutils</i> project designed to streamline the management of packages from the Arch User Repository (AUR). It automates the process of fetching PKGBUILDs, resolving both official repository and AUR dependencies, building packages, and installing/upgrading them.<br><br>A key feature is its ability to interact with a local <i>pacman</i> repository, allowing users to build AUR packages once and then install them on multiple machines or reinstall them easily using <i>pacman -S</i>. It handles complex dependency chains, including those where AUR packages depend on other AUR packages. This tool significantly simplifies the workflow for Arch Linux users who rely heavily on the AUR, providing a robust and efficient alternative to manual building or less sophisticated AUR helpers. It promotes a more secure approach by often being used in conjunction with chroot environments for isolated builds.


title: CAVEATS
content:
<b>aur-sync</b> relies heavily on a properly configured <i>aurutils</i> setup, including a dedicated local <i>pacman</i> repository. Users must ensure their `<i>/etc/pacman.conf</i>` includes this repository. Manual intervention may be required for complex build failures or dependency issues not automatically resolved. Always review <i>PKGBUILDs</i> for security vulnerabilities or malicious code before building packages, especially from untrusted sources, as they can execute arbitrary commands during the build process.


title: SECURITY PRACTICES
content:
It is highly recommended to build AUR packages within a clean chroot environment using <b>aur-sync</b>'s `<i>--chroot</i>` option. This isolates the build process, preventing potential system compromise from malicious PKGBUILDs. Always inspect the <i>PKGBUILD</i> file, and any associated `.install` or `.hook` scripts, for unusual commands or behavior before initiating a build, especially for packages from unknown or less reputable sources.


title: LOCAL REPOSITORY INTEGRATION
content:
The strength of <b>aur-sync</b> lies in its seamless integration with a local <i>pacman</i> repository. By adding AUR packages to a local repository managed by <i>aurutils</i>, users can install, update, and remove these packages using standard <i>pacman</i> commands (e.g., `<i>pacman -S my-aur-package</i>`, `<i>pacman -Syu</i>`). This provides a consistent package management experience and enables easy synchronization across multiple machines or after system reinstallations, as packages are pre-built and readily available.


title: HISTORY
content:
Part of the <i>aurutils</i> project, <b>aur-sync</b> was developed to provide a more robust and secure method for managing AUR packages compared to earlier AUR helpers. It gained popularity as Arch Linux users sought better ways to integrate AUR packages into their system management workflows. It leverages <i>pacman</i>'s capabilities by building AUR packages into a local repository, allowing for seamless upgrades and dependency resolution through standard <i>pacman</i> commands. Its design focuses on efficiency and security, particularly through its strong support for chroot builds, which became a widely adopted best practice for AUR package management.


title: TLDR
content:
<b>Download one or more packages and their dependencies from the AUR, build them, and add them to a local repository</b>`aur sync [package1 package2 ...]`<br><b>Upgrade local repository packages</b>`aur sync [[-u|--upgrades]]`<br><b>Clean build files after install</b>`aur sync [[-C|--clean]] [package]`<br><b>Install a package without viewing changes in Vim and do not confirm dependency installation</b>`aur sync --noview [[-n|--noconfirm]] [package]`<br><b>Ignore specific packages when upgrading</b>`aur sync [[-u|--upgrades]] --ignore [package1,package2,...]`


title: PARAMETERS
content:
<b><i>UNIT</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name(s) of the systemd unit(s) whose effective configuration content should be displayed. Examples include `myservice.service` or `multi-user.target`.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When specified, `systemctl` will connect to and operate on the per-user systemd instance for the current logged-in user, rather than the global system instance.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;This is the default. Explicitly tells `systemctl` to connect to and operate on the main system-wide systemd instance.<br><br>


title: DESCRIPTION
content:
The `systemctl cat` command provides a comprehensive view of how the systemd init system interprets a specific unit file. Unlike merely displaying the content of a single `.service` or `.target` file, `systemctl cat` intelligently aggregates the primary unit file with all its associated <i>drop-in files</i>. Drop-in files are typically found in subdirectories named `<i>unit_name</i>.d/` (e.g., `foo.service.d/override.conf`) and are used to extend or modify the unit's configuration without altering the original file.<br><br>This makes `systemctl cat` an invaluable tool for debugging and understanding the <b>effective configuration</b> of a systemd unit. It presents the consolidated content as a single, unified text, showing exactly what systemd reads and applies, thus resolving potential ambiguities arising from fragmented configurations across multiple files. This command is crucial for administrators to grasp the full scope of a unit's behavior, especially in complex environments where configurations are layered or customized.


title: CAVEATS
content:
<b>Permissions:</b> <i>To view system units, appropriate permissions are required, typically `root` privileges. User units can be viewed by the user who owns them.</i><br><b>Static Content:</b> <i>This command displays the parsed textual configuration. It does not reflect the dynamic runtime state, status, or any variables resolved at runtime by systemd.</i><br><b>Read-Only View:</b> <i>`systemctl cat` provides a read-only view. It does not validate the syntax or semantic correctness of the unit file content.</i>


title: <B>UNDERSTANDING DROP-IN FILES</B>
content:
<i>Systemd unit files can be extended or overridden by so-called "drop-in" files. These are small configuration snippets located in `<i>unit_name</i>.d/` directories (e.g., `/etc/systemd/system/nginx.service.d/override.conf`). `systemctl cat` is essential because it presents the combined content of the main unit file and all relevant drop-ins, giving a complete picture of the unit's configuration that would be impossible to deduce by just looking at the primary unit file alone.</i>


title: <B>DEBUGGING UNIT CONFIGURATIONS</B>
content:
<i>When a systemd unit behaves unexpectedly, its configuration might be spread across multiple files or subtly overridden by drop-ins. `systemctl cat` offers a powerful debugging advantage by showing the merged configuration. This allows administrators to quickly identify unintended overrides, missing directives, or incorrect settings that collectively define the unit's behavior, helping to diagnose and resolve issues efficiently.</i>


title: HISTORY
content:
<i>The `systemctl cat` subcommand emerged as a necessary feature within the broader `systemctl` framework, which itself is the primary control interface for `systemd`. `systemd` was developed to replace traditional Unix `init` systems, introducing advanced features like parallelization, dependency management, and socket activation. The concept of <i>drop-in files</i> (`.d/*.conf`) was a key innovation allowing flexible unit customization without direct modification of vendor-provided unit files. This layering, while powerful, could make it difficult to ascertain the final, effective configuration. `systemctl cat` was specifically introduced to address this challenge, providing a transparent way for administrators and developers to see the complete, consolidated unit definition as interpreted by `systemd`, significantly aiding in troubleshooting and configuration management.</i>


title: TLDR
content:
<b>Show the contents and absolute path of a unit file</b>`systemctl cat [unit]`<br><b>Show the contents of multiple unit files</b>`systemctl cat [unit1 unit2 ...]`<br><b>Show the contents of a unit file for a template</b>`systemctl cat [template@]`<br><b>Show the contents of a user unit file</b>`systemctl cat [unit] --user`


title: SYNOPSIS
content:
The <b>bore</b> command operates primarily in client and server modes.<br><b>Client mode:</b> <b>bore local</b> [<i>OPTIONS</i>] <i>&lt;LOCAL_PORT&gt;</i> <br><b>bore local</b> <b>--to</b> <i>&lt;HOST&gt;</i>:<i>&lt;PORT&gt;</i> [<i>OPTIONS</i>] <i>&lt;LOCAL_PORT&gt;</i> <br><b>Server mode:</b> <b>bore server</b> [<i>OPTIONS</i>] <br><b>bore server</b> <b>--port</b> <i>&lt;SERVER_PORT&gt;</i> [<i>OPTIONS</i>] <br>Additional subcommands include <b>bore help</b> and <b>bore version</b>.


title: PARAMETERS
content:
<b><b>local</b> <i>&lt;LOCAL_PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the client, exposing a local service running on <i>&lt;LOCAL_PORT&gt;</i> to the remote server.<br><br><b><b>server</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the bore server daemon, listening for incoming client connections.<br><br><b><b>--to</b> <i>&lt;HOST&gt;</i>:<i>&lt;PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Client) Specifies the address and port of the remote bore server to connect to.<br><br><b><b>--port</b> <i>&lt;PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Client) Requests a specific public port on the remote server for the tunnel. If omitted, a random port is assigned.<br>(Server) Specifies the port the bore server will listen on. Default is 7878.<br><br><b><b>--auth</b> <i>&lt;TOKEN&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Client/Server) An authentication token for secure connections. Required if the server is configured with <b>--auth</b>.<br><br><b><b>--secret</b> <i>&lt;TOKEN&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Server) A secret key used to generate and validate authentication tokens for clients. Used in conjunction with <b>--auth</b>.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs logs and operational information in JSON format.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose logging for more detailed diagnostic output.<br><br>


title: DESCRIPTION
content:
<b>bore</b> is an open-source, self-hosted reverse proxy that enables secure and fast TCP tunneling from a public server to a local machine. Written in Rust for performance and reliability, it allows users to expose local services (like web servers, databases, or development environments) to the internet without complex network configurations. Unlike many proprietary tunneling services, <b>bore</b> emphasizes a straightforward, self-hostable model, giving users full control over their infrastructure. It's particularly useful for development purposes, demonstrating local applications, or accessing services behind firewalls or NAT. The command operates by establishing a persistent connection to a remote <b>bore</b> server, through which incoming connections are forwarded to a specified local port. This makes <b>bore</b> an excellent alternative to tools like <b>ngrok</b> for those who prefer an open-source and self-managed solution.


title: CAVEATS
content:
<b>bore</b> primarily functions as a client-server pair, requiring a publicly accessible <b>bore</b> server instance to be running for tunneling to occur. While it offers an <b>--auth</b> mechanism, exposing local services to the internet always carries inherent security risks; ensure the exposed service is adequately secured. The availability of requested public ports on the remote server may be limited or blocked by network firewalls. <b>bore</b> is designed for TCP port forwarding and does not provide a full VPN solution, nor does it inherently encrypt all traffic unless underlying protocols (like HTTPS) are used.


title: INSTALLATION
content:
<b>bore</b> can be installed via Cargo (Rust's package manager) using <b>cargo install bore-cli</b>. Pre-compiled binaries are also available for various platforms on its GitHub releases page.


title: TYPICAL WORKFLOW
content:
First, a <b>bore</b> server must be run on a publicly accessible machine: <b>bore server --port 7878</b>. Then, from your local machine, expose a service: <b>bore local 8000 --to</b> <i>&lt;YOUR_SERVER_IP&gt;</i>:7878. The server will then assign a public URL or port to access your local service.


title: HISTORY
content:
<b>bore</b> was created by Eric Zhang (<i>ekzhang</i>) and first appeared around late 2021 / early 2022. Developed using Rust, it quickly gained traction as a lightweight, performant, and self-hostable alternative to commercial tunneling services like <b>ngrok</b> or more complex <b>ssh -R</b> configurations. Its design prioritizes simplicity and ease of setup, making it popular among developers for quickly exposing local development servers or services to the public internet without relying on third-party infrastructure.


title: TLDR
content:
<b>Expose a local port to a remote Bore server</b>`bore local [[-t|--to]] [remote_server_address] [local_port]`<br><b>Start a Bore server</b>`bore server`<br><b>Display help</b>`bore [[-h|--help]]`


title: TLDR
content:
<b>Activate a logical volume</b>`sudo lvchange [[-a|--activate]] y [/dev/vg_name/lv_name]`<br><b>Deactivate a logical volume</b>`sudo lvchange [[-a|--activate]] n [/dev/vg_name/lv_name]`<br><b>Enable autoactivation for a logical volume</b>`sudo lvchange [[-a|--activate]] ay [/dev/vg_name/lv_name]`<br><b>Set a logical volume to read-only (use rw for read-write)</b>`sudo lvchange [[-p|--permission]] r [/dev/vg_name/lv_name]`<br><b>Skip activation for a logical volume</b>`sudo lvchange [[-k|--setactivationskip]] y [/dev/vg_name/lv_name]`<br><b>Refresh a logical volume using the latest metadata</b>`sudo lvchange --refresh [/dev/vg_name/lv_name]`


title: TLDR
content:
<b>Run a command as a specific user</b>`gksu [[-u|--user]] [userid] [command]`<br><b>Run the command while preserving the current environments</b>`gksu [[-u|--user]] [userid] [[-k|--preserve-env]] [command]`<br><b>Force gksu to use su to run the command</b>`gksu [[-u|--user]] [userid] [[-w|--su-mode]] [command]`<br><b>Force gksu to use sudo to run the command</b>`gksu [[-u|--user]] [userid] [[-S|--sudo-mode]] [command]`<br><b>Output debug info for the given command</b>`gksu [[-u|--user]] [userid] [[-d|--debug]] [command]`


title: TLDR
content:
<b>Convert a linear logical volume to RAID1 (add one mirror: two copies total)</b>`sudo lvconvert --type raid1 [[-m|--mirrors]] 1 [/dev/vg_name/lv_name]`<br><b>Remove mirroring and convert back to a linear logical volume</b>`sudo lvconvert [[-m|--mirrors]] 0 [/dev/vg_name/lv_name]`<br><b>Merge a snapshot back into its origin logical volume (applies on next activation)</b>`sudo lvconvert --merge [/dev/vg_name/snapshot_lv]`<br><b>Repair a degraded RAID logical volume</b>`sudo lvconvert --repair [/dev/vg_name/lv_name]`<br><b>Convert an existing logical volume into a thin pool with a separate metadata LV</b>`sudo lvconvert --type thin-pool --poolmetadata [/dev/vg_name/pool_metadata_lv] [/dev/vg_name/pool_lv]`


title: PARAMETERS
content:
<b>-s, --socket <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Unix socket path for IPC communication. Overrides the default discovery mechanism.<br><br><b>-t, --type <i>&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the message type for the request sent to Sway (e.g., <i>command</i>, <i>get_workspaces</i>, <i>get_tree</i>). The default type is <i>command</i>.<br><br><b>-m, --monitor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads commands from standard input line by line, sending each as a separate IPC message. Useful for interactive scripting.<br><br><b>-p, --pretty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats JSON responses with indentation and line breaks for improved human readability.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command usage and available options.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>swaymsg</b> utility's version information.<br><br>


title: DESCRIPTION
content:
<b>swaymsg</b> is the command-line utility used to interact with the running Sway Wayland compositor instance. It leverages Sway's Inter-Process Communication (IPC) interface, allowing users to send various commands to manipulate the desktop environment or to query its current state. This powerful tool is essential for scripting custom behaviors, dynamic configuration changes, and integrating Sway with other applications. Users can issue commands to manage windows, switch workspaces, control outputs, or retrieve detailed information about the compositor's internal tree structure, marks, and version. Designed as a direct equivalent to <b>i3-msg</b> for the i3 window manager, <b>swaymsg</b> maintains a similar syntax and functionality, making it familiar to i3 users transitioning to Wayland. It can execute single commands provided as arguments or continuously process commands from standard input, offering significant flexibility for advanced automation and customization of the Sway desktop. Its output, especially for queries, is typically in JSON format, facilitating parsing with tools like <b>jq</b>(1).


title: CAVEATS
content:
<b>swaymsg</b> requires a running Sway session to function, as it communicates directly with the compositor's IPC socket. Access to this socket is necessary, typically managed automatically when running within a Sway session, but it can be manually specified using the <b>--socket</b> option. Commands and queries sent to Sway are processed asynchronously, and their successful execution depends on the compositor's state and configuration. When providing complex commands or arguments, proper shell escaping is crucial to prevent misinterpretation. For querying system state, the output is often in JSON format, which necessitates external tools like <b>jq</b>(1) for effective parsing in scripts.


title: IPC MESSAGE TYPES
content:
<b>swaymsg</b> supports various message types beyond just sending commands. Common types include <i>command</i> (to execute actions, e.g., 'workspace next'), <i>get_workspaces</i> (to list available workspaces), <i>get_outputs</i> (for monitor information), <i>get_tree</i> (a hierarchical view of windows and containers), <i>get_marks</i> (for named windows), and <i>get_version</i> (for software versions). These types allow for comprehensive control and monitoring of the Sway environment.


title: SOCKET DISCOVERY
content:
By default, <b>swaymsg</b> attempts to locate the Sway IPC socket via the <b>SWAYSOCK</b> environment variable. If <b>SWAYSOCK</b> is not set, it falls back to a standard path like <i>/run/user/$(id -u)/sway-ipc.$(id -u).$(pidof sway).sock</i>. This automatic discovery simplifies usage, but the <b>--socket</b> option provides explicit control for non-standard setups or debugging scenarios.


title: SCRIPTING USE CASES
content:
The ability of <b>swaymsg</b> to accept commands from standard input (via <b>-m</b>) and output structured JSON data (via <b>-t get_...</b>) makes it exceptionally powerful for scripting. It's often piped with tools like <b>jq</b>(1) to parse output, filter information, and automate complex tasks, such as creating dynamic workspace layouts, managing application launches based on system state, or displaying custom status bar information.


title: HISTORY
content:
<b>swaymsg</b> was developed as an integral part of the Sway project, a re-implementation of the i3 window manager for the Wayland protocol. Its design closely mirrors <b>i3-msg</b>, providing a compatible command-line interface for interacting with the compositor. This lineage ensured that users familiar with i3 could easily transition to Sway, benefiting from a consistent control mechanism. Its development tracks that of Sway itself, evolving to support new features and IPC capabilities introduced in the compositor.


title: TLDR
content:
<b>Run a Sway command</b>`swaymsg [command]`<br><b>Display a list of workspaces</b>`swaymsg [[-t|--type]] get_workspaces`<br><b>Display a list of input devices</b>`swaymsg [[-t|--type]] get_inputs`<br><b>Display a list of output devices</b>`swaymsg [[-t|--type]] get_outputs`<br><b>Display a layout tree of all open windows, containers, outputs, and workspaces</b>`swaymsg [[-t|--type]] get_tree`


title: PARAMETERS
content:
<b><i>&lt;package-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the `npm` package whose documentation you wish to open. If omitted, <b>npm docs</b> attempts to open the documentation for the package in the current working directory, identified by its `package.json` file.<br><br>


title: DESCRIPTION
content:
<b>npm docs</b> (often mistakenly referred to as `npm-docs` but typically invoked as an `npm` subcommand) is a crucial utility within the `npm` (Node Package Manager) ecosystem. It's designed to provide quick and convenient access to the official documentation of installed or registry packages. When invoked, this command intelligently determines the appropriate documentation URL for the specified package and then attempts to open it in your system's <b>default web browser</b>.<br><br>If no package name is provided, <b>npm docs</b> will try to open the documentation for the <b>current project</b> (based on the `package.json` in the current directory). This utility is invaluable for developers seeking to understand how to use a library, explore its API, or troubleshoot issues without manually searching through browser tabs or external websites. It streamlines the development workflow by integrating documentation access directly into the command-line interface.


title: CAVEATS
content:
<b>Internet Connection Required</b>:<br> <b>npm docs</b> requires an active internet connection to retrieve documentation URLs from the `npm` registry and to access the documentation hosted online.<br><br><b>Web Browser Configuration</b>:<br> A <b>default web browser</b> must be properly configured on your system for <b>npm docs</b> to function. If no browser is set or available, the command may fail or display an error message.<br><br><b>Documentation Availability</b>:<br> Not all packages in the `npm` registry may have explicitly defined documentation URLs. In such cases, <b>npm docs</b> might open a generic search page or the package's main repository URL if available.<br><br><b>Current Project Context</b>:<br> When invoked without a package name, the command relies on a valid `package.json` file in the <b>current working directory</b> to identify the project and its documentation. If this file is missing or malformed, the command may not behave as expected.


title: CONFIGURING THE DEFAULT BROWSER
content:
You can configure which browser <b>npm docs</b> uses by setting the `browser` configuration property.<br>To view the current browser setting: <b>npm config get browser</b><br>To set a specific browser (e.g., Firefox): <b>npm config set browser firefox</b><br>This setting affects all `npm` commands that interact with a web browser.


title: HISTORY
content:
The <b>npm docs</b> command has been an integral part of the `npm` CLI since its early versions, evolving alongside the Node.js ecosystem. Its inclusion reflects the core philosophy of providing developers with seamless tools for package management, which inherently includes easy access to learning and reference materials. While the fundamental function of opening documentation remains consistent, its integration and robustness have improved with `npm` updates, ensuring a reliable pathway to critical information for millions of packages.


title: TLDR
content:
<b>Open a specific package's documentation page</b>`npm docs [package]`<br><b>Open documentation for multiple packages at once</b>`npm docs [package1 package2 ...]`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <i>help information</i> for <b>rbw</b> or a specific subcommand.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>rbw</b> <i>version string</i>.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables <i>debug logging</i> for troubleshooting.<br><br>


title: DESCRIPTION
content:
<b>rbw</b> is a <b>command-line interface (CLI)</b> for the Bitwarden password manager, written in Rust. It provides a fast, secure, and user-friendly way to interact with your Bitwarden vault directly from the terminal. Users can <i>unlock their vault</i>, <i>list stored items</i>, and <i>retrieve sensitive information</i> like usernames, passwords, and TOTP codes, as well as manage their entries. Often preferred over the official Bitwarden CLI for its performance and streamlined interface, <b>rbw</b> integrates well into shell scripts and workflows, allowing for programmatic access to your passwords. It ensures data security by encrypting your vault locally and requiring a master password for decryption. <b>rbw</b> supports various Bitwarden features, including item management, synchronization, and handling diverse item types.


title: CAVEATS
content:
<b>rbw</b> is a <i>third-party client</i>, not officially supported by Bitwarden Inc., though it interacts with the official Bitwarden API. It requires an active Bitwarden account to function. The command relies on external programs like `pinentry` for secure password prompts, which must be correctly installed and configured. While the vault data is stored locally encrypted, its security ultimately depends on the strength of your Bitwarden master password and the overall security of your system. It may not immediately support all new advanced features introduced in official Bitwarden clients.


title: INSTALLATION
content:
<b>rbw</b> is primarily installed via the Rust package manager, Cargo (`<i>cargo install rbw</i>`), which necessitates having Rust installed. It is also available in some Linux distribution repositories (e.g., `<i>apt install rbw</i>` on Debian/Ubuntu, `<i>pacman -S rbw</i>` on Arch Linux) or can be built directly from its source code.


title: CONFIGURATION
content:
The command utilizes a configuration file, typically located at `<i>~/.config/rbw/config.json</i>`. This file can be managed and modified through the `<b>rbw config</b>` subcommand, allowing users to set default behaviors for item creation, synchronization, and other preferences.


title: SUBCOMMANDS
content:
<b>rbw</b> operates on a subcommand structure to manage various aspects of your vault. Essential subcommands include `<i>unlock</i>` (to access your vault), `<i>sync</i>` (to update local data), `<i>list</i>` (to view items), `<i>get</i>` (to retrieve item details like passwords or TOTP), `<i>add</i>`, `<i>edit</i>`, `<i>delete</i>` (for item management), and `<i>config</i>` (for settings). Each subcommand typically has its own set of specific options and arguments, for instance, `<b>rbw get</b> <i><NAME></i> <i>--full</i>` retrieves all details of a specific item.


title: HISTORY
content:
The <b>rbw</b> project was initiated by <i>Dominic van Essen ("doy")</i> around 2020. Developed in Rust, it quickly gained traction as a performant and secure alternative to the official Bitwarden CLI (`bw`), primarily due to its speed and simpler, more Unix-like interface for common tasks. It is actively maintained and developed by a community of contributors, continually adding features and improving stability. Its design principles often draw parallels to the `pass` (Unix password manager) command, aiming for a robust and scriptable command-line experience for Bitwarden users.


title: SEE ALSO
content:
bw(1) (official Bitwarden CLI), pass(1) (Unix password manager), gpg(1) (GnuPG encryption), pinentry(1) (secure passphrase entry)


title: TLDR
content:
<b>Log in to the vault</b>`rbw login`<br><b>Unlock the vault</b>`rbw unlock`<br><b>List all items in the vault</b>`rbw list`<br><b>Get a password for an entry</b>`rbw get "[entry_name]"`<br><b>Get a username for an entry</b>`rbw get [[-f|--field]] username "[entry_name]"`<br><b>Copy a password to the clipboard</b>`rbw get [[-c|--clipboard]] "[entry_name]"`<br><b>Generate a new password with the specified number of characters</b>`rbw generate [password_length]`<br><b>Lock the vault</b>`rbw lock`


title: SYNOPSIS
content:
<b>flox</b> [<i>GLOBAL_OPTIONS</i>] <i>COMMAND</i> [<i>COMMAND_OPTIONS</i>] [<i>ARGUMENTS</i>...]<br><b>flox</b> <i>COMMAND</i> --help<br><br>Common commands:<br><b>flox</b> <i>init</i> [<i>PROJECT_NAME</i>]<br><b>flox</b> <i>install</i> [<i>PACKAGES</i>...]<br><b>flox</b> <i>run</i> <i>PROGRAM</i> [<i>ARGS</i>...]<br><b>flox</b> <i>shell</i>


title: PARAMETERS
content:
<b>--config <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the <b>flox</b> configuration file.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the command or subcommand.<br><br><b>--log-format <FORMAT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the format for log output (e.g., <i>json</i>, <i>text</i>).<br><br><b>--profile <PROFILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific profile for the operation (e.g., <i>user</i>, <i>system</i>).<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases logging verbosity, showing more detailed output.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>flox</b> version information.<br><br>


title: DESCRIPTION
content:
<b>flox</b> is a powerful command-line tool designed to create and manage <br><i>declarative development environments</i>. It allows developers to specify <br>all the dependencies, tools, and configurations for a project in a <br>version-controlled definition, often leveraging the underlying power of <br>Nix. This approach ensures that every developer working on a project, <br>regardless of their local machine setup, has an identical and <br><i>reproducible development environment</i>. <br><br>Key benefits include streamlined developer onboarding, consistent <br>builds across different machines, and the elimination of "it works on my <br>machine" issues. <b>flox</b> achieves this by creating isolated environments <br>where tools and libraries are managed precisely, preventing conflicts <br>with system-wide installations. It offers commands to initialize new <br>environments, install packages, run commands within an environment, <br>and switch into a fully configured shell. By making environments <br>declarative and shareable, <b>flox</b> significantly simplifies complex <br>dependency management and enhances team collaboration.


title: CAVEATS
content:
<b>flox</b> relies heavily on the <i>Nix package manager</i>, which introduces a <br>learning curve for users unfamiliar with Nix concepts and its <br>functional approach to package management. While it aims to simplify <br>Nix usage, a basic understanding can be beneficial for advanced <br>configurations and debugging. Environments created by <b>flox</b> can <br>sometimes consume significant disk space due to Nix's immutable <br>store. It's also a relatively newer tool compared to established <br>alternatives, meaning its ecosystem and community support are still <br>growing.


title: <I>DECLARATIVE CONFIGURATION</I>
content:
At its core, <b>flox</b> promotes a declarative approach to <br>environment management. Instead of imperative scripts that describe <br><i>how</i> to set up an environment, <b>flox</b> configurations describe <br><i>what</i> the environment should look like. This allows for <br>version-controlled environment definitions that are easily shared, <br>audited, and rolled back.


title: <I>ENVIRONMENT SHARING AND COLLABORATION</I>
content:
One of <b>flox</b>'s key strengths is facilitating seamless <br>environment sharing among team members. By committing the <br>environment definition to source control, new team members can <br>onboard rapidly by simply running a <b>flox</b> command, guaranteeing <br>they have the exact same toolchain and dependencies as the rest <br>of the team. This significantly improves consistency and reduces <br>setup-related issues.


title: HISTORY
content:
<b>flox</b> was developed by <i>Flox, Inc.</i> (later rebranded as <i>Jetpack.io</i>), <br>founded in 2021. It emerged from the growing need for more reliable <br>and reproducible development environments, addressing challenges <br>often faced with traditional package managers and ad-hoc setup <br>scripts. The project aimed to abstract away the complexities of Nix <br>while leveraging its strengths, making declarative environments more <br>accessible to a broader developer audience. Its development focuses <br>on providing a user-friendly interface for defining, sharing, and <br>managing environments across diverse operating systems and teams.


title: SEE ALSO
content:
nix(1): The underlying package manager that <b>flox</b> often utilizes for environment construction., devbox(1): Another tool that provides declarative developer environments, often compared to <b>flox</b>., docker(1): Containerization platform used for isolating applications and their dependencies, a different approach to environment reproducibility., podman(1): A daemonless container engine, an alternative to Docker for creating isolated environments., direnv(1): Manages environment variables based on the current directory, often used in conjunction with other environment tools.


title: TLDR
content:
<b>Create a new environment in the current directory</b>`flox init`<br><b>Enter an environment, or create one if it doesn't exist</b>`flox activate`<br><b>Search for packages in the FloxHub catalog</b>`flox search [package]`<br><b>Install a package into the current environment</b>`flox [[i|install]] [package]`<br><b>Uninstall a package from the current environment</b>`flox uninstall [package]`<br><b>View a list of all packages installed in the current environment</b>`flox [[l|list]]`<br><b>Push a local environment to FloxHub to share with others</b>`flox push`<br><b>Pull a shared environment from FloxHub</b>`flox pull [environment_name]`


title: PARAMETERS
content:
<b><b>use</b> <i>&lt;python&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Activates a specific Python version</i> (e.g., `python3.9`, `3.8.10`, or a full path to an executable) to create or switch to a virtual environment for the current project. If a virtual environment for the specified Python version does not exist, Poetry will attempt to locate the interpreter and create one.<br><br><b><b>info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays detailed information</i> about the currently active virtual environment for the project, including its absolute path, Python version, associated project root, and the number of installed packages.<br><br><b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all virtual environments</i> that Poetry recognizes as being associated with the current project or, if run outside a project, all globally managed environments.<br><i>Options:</i><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>--full-path</b>: Displays the absolute path for each listed virtual environment.<br><br><b><b>remove</b> [<i>&lt;python&gt;</i> | <i>&lt;path&gt;</i> | <b>--all</b>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Removes one or more virtual environments</i>. You can specify a Python version (e.g., `3.8`), a direct path to an environment, or use the <b>--all</b> flag to remove all virtual environments associated with the current project.<br><br><b><b>path</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prints the absolute path</i> to the root directory of the currently active virtual environment. This is useful for scripting or for manually navigating to the environment's directory.<br><br><b><b>python</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prints the absolute path</i> to the Python executable within the currently active virtual environment. This can be used to directly invoke the environment's Python interpreter.<br><br>


title: DESCRIPTION
content:
The <b>poetry env</b> command is a fundamental subcommand within the Poetry ecosystem, designed for comprehensive management of isolated Python virtual environments. It empowers developers to seamlessly create, activate, inspect, and remove virtual environments that are tightly coupled with their specific projects.<br><br>By abstracting the complexities of underlying tools like <i>virtualenv</i> or <i>venv</i>, <b>poetry env</b> streamlines the process of ensuring project dependencies are isolated and consistent, thereby preventing conflicts across different projects. It integrates directly with a project's <i>pyproject.toml</i> file, automatically linking environments and facilitating automatic environment creation when commands like <b>poetry install</b> or <b>poetry run</b> are executed.<br><br>This command is crucial for maintaining a clean, reproducible, and efficient development workflow, allowing developers to switch between Python versions and dependency sets with ease, ensuring each project operates in its own dedicated space.


title: CAVEATS
content:
<ul><li><b>Poetry Installation:</b> <b>poetry env</b> relies entirely on a functional Poetry installation.</li><li><b>PATH Dependency:</b> When using <b>poetry env use</b>, Poetry relies on the system's PATH to locate specified Python interpreters. Ensure your desired Python versions are discoverable.</li><li><b>Environment Location:</b> By default, Poetry stores virtual environments in a centralized cache (usually `~/.cache/pypoetry/virtualenvs/`), which might be unexpected if you are used to project-local environments. This can be configured.</li><li><b>No Direct Shell Activation:</b> <b>poetry env</b> does not directly activate a shell within the environment; use `poetry shell` for that purpose.</li></ul>


title: ENVIRONMENT STORAGE LOCATION
content:
By default, Poetry stores virtual environments in a centralized global cache, typically located at <i>~/.cache/pypoetry/virtualenvs/</i>. Each environment's directory name is usually derived from the project's name and a unique hash. This default location can be customized globally using `poetry config virtualenvs.path <new_path>` or configured to create environments directly within the project directory using `poetry config virtualenvs.in-project true`.


title: AUTOMATIC ENVIRONMENT CREATION
content:
One of the key benefits of Poetry's environment management is its automation. When you execute essential commands like <b>poetry install</b>, <b>poetry add</b>, or <b>poetry run</b> for a project, Poetry automatically checks for an associated virtual environment. If no environment is found or if the specified Python version is not active, it will automatically create and configure a new one based on the Python version requirements defined in your project's <i>pyproject.toml</i>, or use an available system Python if no specific version is indicated.


title: INTEGRATION WITH PROJECT CONFIGURATION
content:
Virtual environments managed by <b>poetry env</b> are deeply integrated with the project's <i>pyproject.toml</i> file. Poetry leverages this file not only for dependency resolution but also to determine the target Python version for the environment. This tight linkage ensures that the created environment is precisely tailored for the project's needs, promoting consistency and simplifying dependency management throughout the development lifecycle.


title: HISTORY
content:
Poetry, created by Sébastien Eustace, emerged as a modern, opinionated Python dependency manager and package builder, aiming to provide a more holistic workflow than fragmented tools like `pip` with `setuptools` and `virtualenv`. The <b>poetry env</b> subcommand has been a foundational component since Poetry's early development, addressing the common pain point of virtual environment management. Its integration reflects Poetry's core philosophy of offering a complete, self-contained solution for Python project development, ensuring environments are seamlessly linked to projects and their `pyproject.toml` configurations.


title: TLDR
content:
<b>Print the command to activate a virtual environment</b>`poetry env activate`<br><b>Display information about the current environment</b>`poetry env info`<br><b>Display the path of the current environment</b>`poetry env info [[-p|--path]]`<br><b>Display the path of the current environment's Python executable</b>`poetry env info [[-e|--executable]]`<br><b>List all virtual environments associated with the current project (optionally showing the full path)</b>`poetry env list --full-path`<br><b>Remove specific or all virtual environments associated with the current project</b>`poetry env remove python [path/to/executable|environment_name] | poetry env remove --all`<br><b>Activate or create a virtual environment for the project using the specified Python executable</b>`poetry env use python [path/to/executable]`


title: SYNOPSIS
content:
<b>get_iplayer</b> <i>[OPTIONS] [SEARCH_TERMS]</i><br><b>get_iplayer</b> <i>--refresh</i><br><b>get_iplayer</b> <i>--list [TYPE]</i><br><b>get_iplayer</b> <i>--get &lt;PID|INDEX|TITLE&gt; [OPTIONS]</i><br><b>get_iplayer</b> <i>--search &lt;TERMS&gt; [OPTIONS]</i>


title: PARAMETERS
content:
<b><i>--refresh</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates the local programme index from broadcasters, fetching the latest available content information.<br><br><b><i>--list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all programmes currently in the index, optionally filtered by type (e.g., 'tv', 'radio').<br><br><b><i>--get &lt;PID|INDEX|TITLE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Downloads a specific programme. Can be identified by its unique Programme ID (PID), its numeric index from a <i>--list</i> output, or a partial title.<br><br><b><i>--search &lt;TERMS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches the programme index for programmes matching the provided keywords or regular expressions.<br><br><b><i>--type &lt;TYPE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters searches and listings by programme type, such as 'tv' for television or 'radio' for radio programmes.<br><br><b><i>--pid &lt;PID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more Programme IDs (PIDs) for direct download without needing to perform a search or list operation.<br><br><b><i>--output &lt;DIR&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the directory where downloaded files will be saved instead of the default location.<br><br><b><i>--quality &lt;QUALITY&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the desired video or audio quality for download (e.g., 'hd', 'sd', 'best', 'worst').<br><br><b><i>--subtitles</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Downloads available subtitles along with the programme, typically in SRT or VTT format.<br><br><b><i>--force</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the download of a programme, even if it has been previously downloaded or is marked as unavailable in the index.<br><br><b><i>--pvr</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the Personal Video Recorder (PVR) daemon, which automatically checks for and downloads new episodes based on saved search criteria.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive help message with all available options and their usage.<br><br>


title: DESCRIPTION
content:
<b>get_iplayer</b> is a powerful, open-source command-line utility for downloading programmes from BBC iPlayer, BBC Sounds, ITV Hub, and other UK TV and radio services. It provides a convenient way to access and archive content that might otherwise be unavailable or difficult to obtain. The tool supports various download formats, resolutions, and quality levels, offering users significant flexibility. It can search for programmes, list available content, record live streams, and manage downloads. Beyond simple downloads, <b>get_iplayer</b> also handles metadata extraction, provides options for post-processing, and integrates with scheduling tools to automate content acquisition. It's an essential tool for users wishing to curate their own collection of UK broadcast media.


title: CAVEATS
content:
<b>get_iplayer</b> is primarily designed for use within the UK due to geo-restrictions imposed by broadcasters; accessing content from outside the UK often requires a VPN or proxy. The tool relies on parsing broadcaster websites and APIs, so changes made by broadcasters can sometimes temporarily break functionality until the tool is updated. Users should also be aware of local laws regarding the downloading of copyrighted material.


title: CONFIGURATION FILE
content:
<b>get_iplayer</b> can be extensively configured via a global (e.g., <i>/etc/get_iplayer/options</i>) or user-specific (<i>~/.get_iplayer/options</i>) options file. This allows users to set default behaviours for quality, output paths, PVR settings, and other preferences without needing to specify them on the command line every time.


title: PVR (PERSONAL VIDEO RECORDER) MODE
content:
The PVR feature transforms <b>get_iplayer</b> into an automated recording system. Users can save search criteria as 'PVR Series'. When <b>get_iplayer</b> is run in PVR mode (<i>--pvr</i>), it periodically checks for new episodes matching these criteria and automatically downloads them, making it ideal for keeping up with favourite TV shows or radio series.


title: HISTORY
content:
Initially developed as a Perl script, <b>get_iplayer</b> emerged as a crucial tool for Linux users seeking to download BBC iPlayer content when official options were scarce. Its popularity grew as it adapted to BBC's evolving streaming technologies, moving from RTMP to HLS/DASH. Over time, its capabilities expanded to include other UK broadcasters like ITV Hub. Maintained by a dedicated community, it continuously evolves to counteract broadcaster changes and offer robust functionality for archiving UK broadcast media.


title: TLDR
content:
<b>Search programmes by name</b>`get_iplayer "[program_name]"`<br><b>Record programme by results of search</b>`get_iplayer "[program_name]" [[-g|--get]]`<br><b>Record programme by URL from the BBC iPlayer website</b>`get_iplayer "https://www.bbc.co.uk/iplayer/episode/[program_PID]/[name-of-show-episode-number-episode-title]"`<br><b>Download subtitles for a programme by results of search</b>`get_iplayer "[program_name]" --subtitles-only`<br><b>Search for a programme, record it and download subtitles</b>`get_iplayer "[program_name]" [[-g|--get]] --subtitles`<br><b>Display help</b>`get_iplayer [[-h|--help]]`


title: TLDR
content:
<b>Subset a TTF font file to the Basic Latin Unicode block</b>`fonttools subset [path/to/font.ttf] --unicodes=U+0000-007F`<br><b>Change the file type to WOFF2</b>`fonttools subset [path/to/font.ttf] --unicodes=U+0000-007F --flavor=woff2`<br><b>Keep only the onum (oldstyle figures) and kern (kerning) OpenType font features</b>`fonttools subset [path/to/font.ttf] --unicodes=U+0000-007F --layout-features=onum,kern`<br><b>Set the output file's name</b>`fonttools subset [path/to/font.ttf] --unicodes=U+0000-007F --output-file=[path/to/subset.ttf]`


title: SYNOPSIS
content:
The `fonttools` project provides a collection of specialized command-line utilities rather than a single dispatcher command. The most commonly used tools include <b>ttx</b> (for converting fonts to/from XML), <b>pyftsubset</b> (for subsetting fonts), <b>pyftmerge</b> (for merging fonts), <b>pyftcompile</b> (for compiling fonts), <b>pyftdecompile</b> (for decompiling fonts), <b>pyftinfo</b> (for displaying font information), and <b>pyftstrip</b> (for stripping data from fonts).<br><br><i>General syntax for many `fonttools` commands:</i><br><b>command_name</b> [<i>options</i>] <i>input_file(s)</i> [<i>output_file</i>]<br><br><i>Example for `ttx` (decompiling/compiling fonts to/from XML):</i><br><b>ttx</b> [<i>options</i>] <i>input.ttf</i><br><b>ttx</b> [<i>options</i>] <i>input.ttx</i>


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit for the specific command.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase verbosity of output during execution.<br><br><b><b>-o</b> <i>FILE</i>, <b>--output</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name or directory. If omitted, a default name is often used.<br><br><b><b>-i</b> <i>FILE</i>, <b>--input</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input font file. This is often a positional argument rather than an option.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>-t</b> <i>TAG</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Specific to `ttx`) Dump only the specified font table(s) to XML.<br><br><b><b>--unicodes</b> <i>RANGES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Specific to `pyftsubset`) Define Unicode code point ranges to include in the subsetted font (e.g., 'U+0000-007F').<br><br>


title: DESCRIPTION
content:
`fonttools` is a powerful, open-source Python library and suite of command-line tools for manipulating font files. It provides deep access to the internal structures of OpenType and TrueType fonts, allowing users and developers to inspect, modify, and create font data. Key capabilities include decompiling fonts into an XML representation (TTX format) for human readability and editing, and then compiling them back into binary font files. It also supports subsetting fonts (reducing their size by removing unused glyphs or features), merging fonts, converting between different font formats (e.g., WOFF, WOFF2), and inspecting font metadata. Widely used in font development, web typography, and internationalization workflows, `fonttools` is an essential utility for anyone working with digital fonts.


title: CAVEATS
content:
While powerful, `fonttools` operates at a low level of font data. Incorrect modifications to TTX files or inappropriate use of subsetting options can easily corrupt font files, rendering them unusable or causing rendering issues. Users should always back up original fonts before making changes. Advanced features often require a good understanding of OpenType and TrueType font specifications.


title: <B>PYTHON LIBRARY USAGE</B>
content:
Beyond its command-line tools, `fonttools` is primarily a Python library. It can be imported and used directly in Python scripts to programmatically manipulate font objects, tables, and glyphs, offering granular control for complex font processing tasks. This makes it highly versatile for custom automation and integration into larger systems.


title: <B>FONT FORMATS SUPPORTED</B>
content:
`fonttools` natively supports a wide array of font formats including TrueType (TTF), OpenType (OTF with CFF or TrueType outlines), WOFF (Web Open Font Format), WOFF2, SFNT-wrapped EOT, and SVG fonts. It provides robust mechanisms for parsing, modifying, and writing these formats, ensuring broad compatibility across different font ecosystems.


title: HISTORY
content:
The `fonttools` project was originally started by Just van Rossum in 1999, making it one of the earliest and most mature Python libraries for font manipulation. It was developed to provide a robust and flexible way to work with OpenType and TrueType fonts programmatically. Over the years, it has gained significant contributions from the Google Fonts team and the wider open-source community, becoming an essential component in many font-related pipelines, including Google Fonts, Adobe, and various web development tools. Its core functionality, particularly `ttx` (TrueType eXchange), revolutionized how font developers could inspect and modify fonts using a human-readable XML format.


title: SEE ALSO
content:
<b>ttx</b>(1) (Part of the fonttools suite, for XML conversion), <b>pyftsubset</b>(1) (Part of the fonttools suite, for font subsetting), <b>pyftmerge</b>(1) (Part of the fonttools suite, for merging fonts), <b>otfinfo</b>(1) (Utility for printing OpenType font information), <b>sfnttool</b> (Java-based tool for manipulating SFNT fonts, often used for WOFF conversion), <b>fontforge</b> (Powerful graphical font editor, also has scripting capabilities)


title: TLDR
content:
<b>Subset a TTF font file to the Basic Latin Unicode block</b>`fonttools subset [path/to/font.ttf] --unicodes=U+0000-007F`<br><b>Display help</b>`fonttools --help`


title: PARAMETERS
content:
<b><i>&lt;LOCAL_PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The local port number that the <b>bore local</b> client will expose to the internet through the remote server. This is a required positional argument.<br><br><b><b>-t</b>, <b>--to</b> <i>&lt;REMOTE_HOST&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the hostname or IP address of the remote <i>bore</i> server to which the local client will connect. This is a required option.<br><br><b><b>-p</b>, <b>--port</b> <i>&lt;REMOTE_PORT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the port on the remote <i>bore</i> server to which the client should connect. The default value is typically <code>7878</code>.<br><br><b><b>-l</b>, <b>--local-host</b> <i>&lt;LOCAL_HOST&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the local interface or IP address to bind to when exposing <i>&lt;LOCAL_PORT&gt;</i>. The default is usually <code>127.0.0.1</code> (localhost).<br><br><b><b>-k</b>, <b>--key</b> <i>&lt;KEY&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a secret key for authenticating with the <i>bore</i> server. This enhances security by preventing unauthorized access to your tunnel.<br><br><b><b>--mtu</b> <i>&lt;MTU&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Maximum Transmission Unit (MTU) for the tunnel, optimizing packet size for specific network conditions.<br><br><b><b>--log-level</b> <i>&lt;LOG_LEVEL&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the verbosity of logging output. Possible values include <code>info</code>, <code>debug</code>, <code>trace</code>, <code>warn</code>, and <code>error</code>.<br><br><b><b>--no-auth</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables authentication with the <i>bore</i> server. This option should be used with extreme caution, primarily for testing purposes, as it removes a critical security layer.<br><br>


title: DESCRIPTION
content:
The <b>bore local</b> command is the client-side component of the <i>bore</i> utility, a fast and lightweight TCP proxy written in Rust. It establishes a secure, persistent tunnel from a specified local port on your machine to a remote <i>bore</i> server. This server then exposes the local service to the public internet, making it accessible via a unique URL or a specific port on the remote host.<br><br>It is commonly used by developers for quickly exposing local development servers, APIs, or IoT devices without configuring complex network settings, dynamic DNS, or firewall rules. The command requires a running <i>bore-server</i> instance on a publicly accessible machine. It handles connection stability and can be secured with an authentication key, simplifying the process of sharing work-in-progress or testing webhooks and other integrations.


title: CAVEATS
content:
<b>Security Implications</b>: Exposing local services directly to the internet, especially without proper authentication or if the service itself is insecure, poses significant security risks. It's crucial to only expose trusted services and always use the <code>--key</code> option for authentication unless absolutely necessary for testing.<br><br><b>Server Dependency</b>: The <b>bore local</b> command requires a running <i>bore-server</i> instance on a publicly accessible machine. It cannot establish a public tunnel independently.<br><br><b>Ephemeral Remote Ports</b>: By default, the <i>bore-server</i> might assign a random, ephemeral remote port for your tunnel. To obtain a fixed, predictable remote port, the server must be configured accordingly, or you might need to specify it if the server allows.


title: REMOTE ACCESS URL
content:
Upon successful connection, the <i>bore-server</i> will typically output a public URL or IP address and port that can be used to access the forwarded local service. This address is automatically generated unless specific server-side configurations are in place to assign a fixed port.


title: RUST IMPLEMENTATION BENEFITS
content:
<i>bore</i> is implemented in Rust, a language known for its focus on speed, memory safety, and concurrency. This choice of technology contributes to <i>bore</i>'s reputation for being a highly efficient, reliable, and secure tool for persistent tunneling tasks.


title: HISTORY
content:
The <i>bore</i> project was initiated by <br><i>ekzhang</i><br> as a modern, simple, and fast open-source alternative to existing port forwarding solutions like <i>ngrok</i> or <code>ssh -R</code> tunnels. Written in Rust, it emphasizes performance, ease of use, and memory safety, offering a single executable for both client and server components. Its development addresses the growing need for self-hostable, lightweight options for developers to quickly expose local development environments. While relatively new compared to venerable tools like <code>ssh</code>, <i>bore</i> has quickly gained traction within communities looking for a performant, and secure tunneling solution.


title: PARAMETERS
content:
<b>-o FILE, --output FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output font file name. If not provided, a name will be generated.<br><br><b>--text TEXT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Characters to include in the subset, e.g., 'Hello World'. Can be repeated.<br><br><b>--unicodes UNICODES</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unicode codepoints or ranges to keep, e.g., 'U+0041-00FF'. Can be repeated.<br><br><b>--glyphs GLYPHS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specific glyph names to keep, e.g., 'A,B,C'. Can be repeated.<br><br><b>--layout-features FEATURES</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages OpenType layout features (e.g., ligatures, kerning) to keep ('+tag') or drop ('-tag').<br><br><b>--flavor FLAVOR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output font format (e.g., 'woff', 'woff2', 'ttf', 'otf').<br><br><b>--no-hinting</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all hinting instructions from the font, further reducing file size.<br><br><b>--drop-tables TABLES</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of OpenType tables to remove (e.g., 'name,hdmx').<br><br><b>--passthrough-tables TABLES</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of OpenType tables to keep untouched.<br><br><b>--drop-tables-all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Drops all known dangerous or unnecessary tables based on common recommendations.<br><br><b>--notdef-glyph / --no-notdef-glyph</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls whether to keep or remove the '.notdef' glyph.<br><br><b>--recalc-bounds / --no-recalc-bounds</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls recalculation of the font's bounding box.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>fonttools-subset</b> command is a powerful utility from the FontTools library, designed to reduce the file size of fonts by removing unused glyphs, OpenType features, and tables. This process, known as font subsetting, is particularly beneficial for web performance, embedded systems, or applications where only a specific set of characters or language support is required. By specifying which characters (via text, Unicode ranges, or glyph names) or OpenType layout features to retain, users can create highly optimized font files containing only the essential components, leading to faster loading times and reduced bandwidth consumption. It supports various font formats like TrueType (TTF), OpenType (OTF), WOFF, and WOFF2.


title: CAVEATS
content:
Subsetting can sometimes lead to unexpected visual changes if not all necessary glyphs or layout features are included, especially for complex scripts or specific language requirements. Aggressive subsetting (e.g., removing all hinting or many tables) might impact font rendering quality on older systems or specific browsers. Always test the subsetted font thoroughly in target environments before deployment.


title: CHARACTER SELECTION METHODS
content:
The command offers multiple ways to select characters: explicit <i>--text</i> strings, <i>--unicodes</i> codepoint ranges (e.g., "U+0041-U+005A"), or <i>--glyphs</i> by name. Users should choose the method most appropriate for their use case, with Unicode ranges being common for defining language subsets.


title: OPENTYPE FEATURE CONTROL
content:
Advanced users can precisely control which OpenType layout features (like kerning, ligatures, contextual alternates) are kept or dropped using the <i>--layout-features</i> option, which is crucial for maintaining typographic quality while minimizing file size.


title: HISTORY
content:
The <b>fonttools</b> library, including its robust subsetting functionality, has been a cornerstone of font development and optimization for the web for many years. Developed and maintained by Just van Rossum and other contributors, it originated in the early 2000s. The subsetting tool evolved significantly with the rise of web fonts, becoming an essential component for delivering performant typography online by enabling precise control over font content and reducing bandwidth. Its Python-based nature makes it highly extensible and scriptable.


title: TLDR
content:
<b>Freeze a specific unit</b>`systemctl freeze [unit]`<br><b>Freeze multiple units</b>`systemctl freeze [unit1 unit2 ...]`<br><b>Freeze all running units</b>`systemctl freeze '*'`


title: PARAMETERS
content:
<b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the operation to complete. The command will return immediately after queuing the suspend request, allowing the calling script or process to continue.<br><br><b>--no-wall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not send a wall message to all logged-in users before suspending the system. This option is useful for automated scripts or situations where user notification is not desired.<br><br><b>--no-ask-password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not prompt for a password when performing privileged operations. This assumes that the user already has the necessary authorization via Polkit rules.<br><br>


title: DESCRIPTION
content:
The <b>systemctl suspend</b> command is a high-level utility used to transition a Linux system into a suspend-to-RAM state. This action temporarily powers down most system components while keeping the RAM powered to preserve its contents. Upon waking, the system quickly resumes operation from where it left off, making it ideal for short breaks or conserving battery life without fully shutting down.<br><br>When executed, <b>systemctl suspend</b> triggers the <i>systemd-suspend.service</i> unit, which handles the underlying mechanics of putting the system to sleep. This includes flushing disk caches, preparing devices, and finally, issuing the suspend command to the kernel. It's a modern replacement for older power management tools like <i>pm-suspend</i>, integrating power management seamlessly with the <i>systemd</i> init system.


title: CAVEATS
content:
Suspending the system requires appropriate privileges, typically root access or membership in a group allowed to manage power (e.g., `power` group, or granted via Polkit rules for desktop users).<br><br>Hardware compatibility can be an issue; some devices or drivers might not properly support suspend-to-RAM, leading to resume failures or unexpected behavior. It's crucial to ensure your system's hardware and kernel are well-supported.<br><br>While suspended, the system still consumes a small amount of power to maintain RAM. If power is lost (e.g., battery fully drains, or power cord is removed from a desktop), all unsaved data in RAM will be lost, similar to a sudden power failure.


title: WAKE-UP SOURCES
content:
Systems can typically be woken from suspend by various events, including pressing the power button, keyboard input, mouse movement, or specific network activity (Wake-on-LAN, if configured and supported by hardware). Advanced configurations may also involve Real-Time Clock (RTC) alarms to wake the system at a scheduled time.


title: CONFIGURATION
content:
The behavior of suspend operations can be fine-tuned through the <i>/etc/systemd/sleep.conf</i> file. This configuration file allows administrators to set default actions for suspend, hibernate, and hybrid sleep, as well as specify delays or other power-related options for systemd's sleep management.


title: HISTORY
content:
With the adoption of <i>systemd</i> as the default init system in many Linux distributions, power management commands like suspend, hibernate, reboot, and poweroff were unified under the <b>systemctl</b> utility. This replaced older, less integrated tools such as those provided by <i>pm-utils</i> (e.g., <i>pm-suspend</i>), which often involved separate scripts and configurations. The move aimed to streamline power management, improve reliability, and provide a consistent interface across different systemd-based systems, leveraging systemd's service management capabilities for better control over the suspend and resume process.


title: SEE ALSO
content:
systemctl hibernate(8), systemctl poweroff(8), systemctl reboot(8), systemd-suspend.service(8), systemd-sleep.conf(5)


title: TLDR
content:
<b>Suspend the system immediately</b>`systemctl suspend`<br><b>Schedule a suspend after a 5 minute delay</b>`sleep 300 && systemctl suspend`<br><b>Suspend the system and then hibernate after a delay</b>`systemctl hybrid-sleep`


title: TLDR
content:
<b>List all logical volumes</b>`sudo lvscan`<br><b>List only active logical volumes</b>`sudo lvscan --active`<br><b>List only inactive logical volumes</b>`sudo lvscan --inactive`<br><b>Display logical volumes in JSON format</b>`sudo lvscan --reportformat json`


title: SYNOPSIS
content:
<b>lvm_import_vdo</b> [<i>OPTIONS</i>] <i>&lt;VDO_DEVICE_PATH&gt;</i> <i>&lt;VG_NAME&gt;</i> [<i>&lt;LV_NAME&gt;</i>]


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the operation.<br><br><b>-y, --yes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assumes 'yes' to all interactive prompts, proceeding without confirmation.<br><br><b>--name <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name for the new LVM Logical Volume. If omitted, a name derived from the VDO device path is used.<br><br><b>--pool-name <i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name for the new LVM Thin Pool. If omitted, a default name like 'vdo_<i>&lt;VDO_DEVICE_BASENAME&gt;</i>_pool' is used.<br><br><b>--uuid <i>&lt;UUID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a specific UUID to the newly created LVM Logical Volume.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the import operation, overriding some warnings or checks. Use with caution as it might lead to unintended consequences.<br><br><b>--tags <i>&lt;TAGS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds one or more tags (comma-separated) to the created Logical Volume and Thin Pool.<br><br><b>--readonly</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports the VDO volume as a read-only LVM Logical Volume.<br><br><b>--alloc <i>&lt;AllocationPolicy&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the allocation policy for the LVM thin pool. For example, 'contiguous', 'anywhere', 'inherit'.<br><br><b>--addtag <i>&lt;TAG&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a single tag to the created logical volume.<br><br><b>--driverstatus</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports information about the VDO driver itself rather than performing an import.<br><br>


title: DESCRIPTION
content:
The `lvm_import_vdo` command is a specialized utility designed to bring an existing VDO (Virtual Data Optimizer) volume under the management of LVM (Logical Volume Manager). <br><br> VDO is a Linux kernel module that provides inline block-level deduplication, compression, and thin provisioning, significantly reducing storage requirements. When a VDO volume is created directly using the `vdo` command (outside of LVM), it can be managed independently. However, to leverage LVM's advanced features like snapshots, mirroring, or easier resizing alongside VDO's data reduction, the `lvm_import_vdo` command bridges this gap. <br><br> This command imports the specified VDO device into an LVM Volume Group, creating a new LVM thin pool and a thin logical volume within that pool. The data device for this LVM thin pool is the underlying VDO device itself. This allows LVM to manage the VDO volume as a regular logical volume, making it accessible and manageable through standard LVM tools.


title: CAVEATS
content:
Before importing, the target VDO volume <b>must be stopped</b> using `vdo stop <i>&lt;VDO_NAME&gt;</i>`. <br><br> The `lvm_import_vdo` command creates a <i>thin logical volume</i> on top of the VDO device. While LVM can manage this volume, operations like `lvresize` will typically modify the thin volume's reported size within LVM, not necessarily the underlying VDO's physical allocation. <br><br> This command is intended for VDO volumes created outside of LVM. For new VDO volumes, it's generally recommended to create them directly using `lvcreate --type vdo` for seamless LVM integration from the start.


title: IMPORT PROCESS OVERVIEW
content:
1. <b>Stop the VDO Volume:</b> Ensure the VDO volume to be imported is not active. Use `sudo vdo stop <i>&lt;VDO_NAME&gt;</i>` or `sudo systemctl stop vdo.service` if configured as a service.<br>2. <b>Run `lvm_import_vdo`:</b> Execute the command with the VDO device path, target Volume Group name, and optionally the desired Logical Volume name.<br>   <i>Example:</i> `sudo lvm_import_vdo /dev/vdodev1 my_vg my_vdo_lv`<br>3. <b>Activate LVM Volume:</b> After import, activate the newly created logical volume: `sudo vgchange -ay my_vg`<br>4. <b>Start VDO Volume:</b> If needed for direct VDO tools, the underlying VDO volume might need to be started, though LVM will manage its access. However, typically the VDO service handles this automatically upon system boot, or LVM will activate it as part of the LV activation.


title: RESULTING LVM STRUCTURE
content:
After a successful import, `lvm_import_vdo` creates an LVM thin pool and a thin logical volume. The thin pool's data device will be the original VDO device (e.g., `/dev/vdodev1`), and the metadata device for the thin pool will typically be created from other physical extents in the target Volume Group. The thin logical volume will then represent the VDO volume within LVM, allowing you to interact with it using commands like `lvs`, `lvdisplay`, `lvcreate -s` for snapshots, etc.


title: HISTORY
content:
The LVM (Logical Volume Manager) suite has been a cornerstone of flexible storage management in Linux for decades. VDO (Virtual Data Optimizer) is a more recent addition, providing advanced data reduction capabilities. As VDO gained traction, the need for seamless integration with LVM became apparent. While LVM itself gained the ability to create VDO volumes directly via `lvcreate --type vdo`, `lvm_import_vdo` was developed to address the scenario where users already had existing VDO volumes created independently. This utility allows administrators to bring these pre-existing VDO volumes into the LVM ecosystem without recreating them, ensuring backward compatibility and offering greater flexibility in managing diverse storage environments.


title: TLDR
content:
<b>Import a VDO volume with automatic names for the VG/LV</b>`lvm_import_vdo [/dev/mapper/vdo_volume]`<br><b>Import and set the destination VG/LV name</b>`lvm_import_vdo [[-n|--name]] [vg_name/lv_name] [/dev/mapper/vdo_volume]`<br><b>Show what would be done without changing anything</b>`lvm_import_vdo --dry-run [/dev/mapper/vdo_volume]`<br><b>Convert in place without using a temporary snapshot (less safe)</b>`lvm_import_vdo --no-snapshot [/dev/mapper/vdo_volume]`<br><b>Verbose output and automatically answer "yes" to prompts</b>`lvm_import_vdo [[-v|--verbose]] [[-y|--yes]] [/dev/mapper/vdo_volume]`<br><b>Use a VDO manager configuration file during import</b>`lvm_import_vdo --vdo-config [path/to/vdo.conf] [/dev/mapper/vdo_volume]`


title: TLDR
content:
<b>Scan all devices</b>`lvmdiskscan`<br><b>Show only physical volumes (PVs)</b>`lvmdiskscan [[-l|--lvmpartition]]`<br><b>Increase verbosity (repeat for more detail)</b>`lvmdiskscan [[-v|--verbose]]`


title: PARAMETERS
content:
<b><b>--type</b> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of configuration to display, such as <i>global</i>, <i>profile</i>, or <i>command</i>.<br><br><b><b>--config</b> <I>section.key=value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific configuration item. Can be used multiple times to set several items.<br><br><b><b>--commandprofile</b> <I>profile_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a named command profile for the current operation.<br><br><b><b>--format</b> <I>format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format, such as <i>raw</i>, <i>json</i>, or <i>yaml</i>.<br><br><b><b>--ignoreunmanaged</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes unmanaged configuration settings from the output.<br><br><b><b>--merged</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the complete, merged configuration from all active sources.<br><br><b><b>--profile</b> <I>profile_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads configuration from a specified profile.<br><br><b><b>--rename</b> <I>old_key=new_key</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renames an existing configuration key.<br><br><b><b>--showempty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all configuration items, including those with empty or default values.<br><br><b><b>--unmanaged</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only unmanaged configuration settings.<br><br><b><b>--validate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates LVM configuration provided via standard input.<br><br><b><b>-?</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the LVM version information and exits.<br><br>


title: DESCRIPTION
content:
<b>lvmconfig</b> is a powerful utility within the LVM2 suite designed for inspecting and manipulating the Logical Volume Manager's configuration. It allows administrators to display the current LVM configuration, including default values and any custom settings defined in <i>lvm.conf</i> or files within <i>lvm.conf.d</i>. <br><br>Beyond viewing, <b>lvmconfig</b> can also be used to set specific configuration parameters at runtime or to validate configuration files. It supports displaying a merged view of all configuration sources, identifying unmanaged settings, and even renaming configuration keys. This command is crucial for understanding how LVM behaves and for fine-tuning its operations, especially in automated scripting environments or when troubleshooting LVM-related issues.


title: CAVEATS
content:
Careless modification of LVM configuration through <b>lvmconfig</b> can lead to unexpected LVM behavior or even data inaccessibility if critical parameters are set incorrectly. Changes made directly via <b>--config</b> on the command line are often temporary for the current LVM operation unless explicitly written to a configuration file. It's essential to understand the implications of each configuration setting before altering it.


title: CONFIGURATION SOURCES
content:
<b>lvmconfig</b> aggregates LVM configuration from various sources, including the main <i>lvm.conf</i> file, supplementary files in <i>lvm.conf.d/</i> directories, and any command-line options. The order of precedence ensures that more specific settings override general ones, providing flexible and hierarchical configuration management.


title: COMMAND PROFILES
content:
LVM command profiles allow administrators to define custom sets of configuration options for specific LVM commands or scenarios. These profiles can be activated using the <b>--commandprofile</b> option, enabling tailored LVM behavior without altering the global configuration files.


title: HISTORY
content:
The ability to centrally manage and inspect LVM configuration has been a continuous area of development within the LVM2 project. While configuration files like <i>lvm.conf</i> have always existed, <b>lvmconfig</b> emerged as a dedicated tool to provide a programmatic and standardized interface for interacting with these settings. This facilitated better scripting, debugging, and consistent management of LVM across different systems, reducing reliance on direct file editing and enhancing operational reliability.


title: TLDR
content:
<b>Display the effective configuration in use (after merging all config sources)</b>`lvmconfig --typeconfig current --mergedconfig`<br><b>Show only settings that differ from their defaults</b>`lvmconfig --typeconfig diff`<br><b>List all configuration keys</b>`lvmconfig [[-l|--list]]`<br><b>Print the default configuration with full comments and extra spacing</b>`lvmconfig --typeconfig default --withcomments --withspaces`<br><b>Validate the full merged configuration and report errors</b>`lvmconfig --mergedconfig --validate`<br><b>Write the current effective configuration to a file</b>`lvmconfig --typeconfig current [[-f|--file]] [path/to/output.conf]`


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of one or more systemd units (e.g., `my-service.service`, `user@1000.service`) to thaw. Multiple units can be specified, separated by spaces.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the systemd system and service manager. This is the default.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the systemd user session manager for the current user.<br><br>


title: DESCRIPTION
content:
The `systemctl thaw` command is used to resume the execution of one or more systemd units (services, scopes, etc.) that were previously put into a frozen (paused) state using `systemctl freeze`. When a unit is thawed, its processes, which were suspended and held in memory, are allowed to continue their execution from the exact point where they were paused. This action effectively reverses the `freeze` operation.<br><br>Unlike `systemctl stop`, which terminates a unit's processes and releases its resources, `freeze` and `thaw` are designed to pause and resume processes while keeping their state and allocated resources intact. This makes `thaw` particularly useful for scenarios requiring system snapshots, live migration of services, or debugging a service in a suspended state without altering its runtime environment. The underlying mechanism for `freeze` and `thaw` relies on the cgroup freezer subsystem, which allows the kernel to pause and unpause all processes within a specific control group.


title: CAVEATS
content:
<ul><li><b>Permissions</b>: Thawing units typically requires root privileges or appropriate permissions configured via Polkit.</li><li><b>Resource Usage</b>: While thawed, the unit continues to consume memory and other resources it held when frozen. This is not a resource-freezing mechanism.</li><li><b>Kernel Support</b>: Relies on the cgroup freezer subsystem, which must be supported and enabled by the Linux kernel.</li><li><b>Not a Replacement for Stop/Start</b>: `freeze`/`thaw` is for pausing execution, not for graceful shutdown or startup. Misuse can lead to unexpected behavior if services are not designed to handle sudden pauses.</li></ul>


title: UNDERLYING MECHANISM
content:
The `freeze` and `thaw` operations are implemented using the Linux kernel's cgroup freezer subsystem. When a unit is frozen, systemd places its processes into a cgroup and sets the cgroup's `freezer.state` to `FROZEN`. Thawing reverses this by setting the state to `THAWED`.


title: COMMON USE CASES
content:
This command is particularly useful in environments requiring precise control over process execution, such as creating consistent system snapshots for backups or virtualization, debugging services by pausing them at a specific state, or preparing services for live migration across hosts without losing their in-memory state.


title: HISTORY
content:
The `systemctl thaw` command is an integral part of the systemd init system, which was initially developed by Lennart Poettering and Kay Sievers and first adopted by Fedora in 2011. The `freeze` and `thaw` functionalities leverage the Linux kernel's cgroup freezer subsystem, a feature that allows processes within a control group to be suspended and resumed. This capability was incorporated into `systemd` to provide advanced process lifecycle management, offering a more granular control over running services than traditional `stop`/`start` operations, particularly useful for system introspection, debugging, and snapshotting purposes in modern Linux environments.


title: SEE ALSO
content:
<b>systemctl-freeze</b>(1), <b>systemctl</b>(1), <b>systemctl-start</b>(1), <b>systemctl-stop</b>(1), <b>cgroups</b>(7)


title: TLDR
content:
<b>Thaw a specific unit</b>`systemctl thaw [unit]`<br><b>Thaw multiple units</b>`systemctl thaw [unit1 unit2 ...]`<br><b>Thaw all currently frozen units</b>`systemctl thaw '*'`


title: TLDR
content:
<b>Generate a basic dump</b>`lvmdump`<br><b>Generate an extended dump with metadata and daemon info</b>`lvmdump -a -l -m`<br><b>Dump the information into a directory instead of a tarball</b>`lvmdump -d [path/to/directory]`<br><b>Display help</b>`lvmdump -h`


title: SYNOPSIS
content:
<code>xdp-filter</code> <I>[OPTIONS]</I> <B>COMMAND</B> <I>[ARGS]</I><br><br><B>Commands:</B><br>&nbsp;&nbsp;<code>xdp-filter attach -i <I>IFACE</I> -p <I>PROG_FILE</I> [-F <I>FUNC_NAME</I>] [-m <I>MODE</I> | -S | -D | -U] [--force] [--reuse-maps]</code><br>&nbsp;&nbsp;<code>xdp-filter detach -i <I>IFACE</I> [-m <I>MODE</I> | -S | -D | -U | --all]</code><br>&nbsp;&nbsp;<code>xdp-filter show -i <I>IFACE</I></code><br>&nbsp;&nbsp;<code>xdp-filter list</code><br>&nbsp;&nbsp;<code>xdp-filter stats -i <I>IFACE</I> [-p <I>PROG_FILE</I>] [--interval <I>SECONDS</I>]</code><br>&nbsp;&nbsp;<code>xdp-filter help</code><br>&nbsp;&nbsp;<code>xdp-filter version</code>


title: PARAMETERS
content:
<b><B>attach</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches an XDP <B>eBPF</B> program from a specified object file to a network interface.<br><br><b><B>detach</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detaches an XDP program from a specified network interface and mode.<br><br><b><B>show</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current XDP program status for a given network interface.<br><br><b><B>list</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all XDP programs currently loaded on the system.<br><br><b><B>stats</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows statistics for an XDP program attached to an interface, including packet counts and actions.<br><br><b><B>-i</B> <I>IFACE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network <I>interface</I> name (e.g., <I>eth0</I>) to operate on. Required for most commands.<br><br><b><B>-p</B> <I>PROG_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the <I>ELF object file</I> containing the compiled <B>eBPF</B> XDP program.<br><br><b><B>-F</B> <I>FUNC_NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the <I>function</I> within the <B>eBPF</B> object file to be attached as the XDP program. Defaults to <I>xdp_filter</I>.<br><br><b><B>-m</B> <I>MODE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the XDP <I>mode</I> to use for attachment or detachment. Can be <I>generic</I>, <I>driver</I>, or <I>offload</I>. (Mutually exclusive with -S, -D, -U).<br><br><b><B>-S</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shortcut for setting XDP mode to <I>generic</I> (SKB mode).<br><br><b><B>-D</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shortcut for setting XDP mode to <I>driver</I>.<br><br><b><B>-U</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shortcut for setting XDP mode to <I>offload</I> (hardware offload).<br><br><b><B>--force</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces attachment of the XDP program, replacing any existing program on the interface in the specified mode.<br><br><b><B>--reuse-maps</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <code>xdp-filter</code> to reuse existing <B>BPF</B> maps if they already exist with the same name and definition.<br><br><b><B>--all</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <B>detach</B> to detach XDP programs from all possible modes (generic, driver, offload) on the specified interface.<br><br><b><B>--interval</B> <I>SECONDS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the refresh <I>interval</I> in seconds for displaying statistics with the <B>stats</B> command.<br><br><b><B>-h</B>, <B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><B>-v</B>, <B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<code>xdp-filter</code> is a command-line utility used to manage <B>eXpress Data Path (XDP)</B> programs on Linux network interfaces. XDP is a high-performance, programmable network data path in the Linux kernel that allows for custom packet processing at the earliest possible point, even before the kernel’s networking stack fully processes the packet. This enables extremely fast packet filtering, forwarding, or modification, making it ideal for scenarios like DDoS mitigation, load balancing, or custom network monitoring. <br><br> The utility takes an <B>eBPF</B> (extended Berkeley Packet Filter) program, typically compiled from C code into an ELF object file (<I>.o</I> file), and attaches it to a specified network interface. It supports various XDP modes, including <I>generic</I> (software-based, works on any driver), <I>driver-specific</I> (optimized for specific NIC drivers), and <I>hardware offload</I> (program runs directly on the NIC). <code>xdp-filter</code> simplifies the complex process of loading, attaching, detaching, and inspecting the status and statistics of these powerful low-level network programs. It provides a user-friendly interface to leverage the benefits of XDP for high-performance networking tasks.


title: CAVEATS
content:
Using <code>xdp-filter</code> requires <B>root privileges</B> for attaching or detaching programs. The system must have a Linux kernel version that supports <B>XDP</B> (typically 4.8 or later for basic XDP, with continuous improvements in newer versions) and <B>eBPF</B>. Attaching programs in <I>driver</I> or <I>offload</I> modes requires specific <B>NIC driver</B> or <B>hardware support</B>, respectively; otherwise, only <I>generic</I> mode will work. Care must be taken when deploying XDP programs, as a faulty program can lead to <B>network disruption</B> or even kernel crashes if not properly developed and tested. Always ensure your <B>eBPF</B> program is well-tested and validated before deploying in a production environment.


title: <B>XDP MODES EXPLAINED</B>
content:
XDP supports three primary modes: <br> 1. <B>Generic (SKB) Mode</B>: The default software-based mode, which works on any network driver. It attaches the XDP program slightly later in the packet reception path, after the SKB (socket buffer) is allocated. <br> 2. <B>Driver Mode</B>: This mode allows the XDP program to run earlier, directly within the network driver's receive path, for improved performance. It requires specific driver support. <br> 3. <B>Hardware Offload Mode</B>: The most performant mode, where the XDP program is offloaded and executed directly by the network interface card (NIC) hardware. This requires a NIC with XDP offload capabilities. Choosing the correct mode is crucial for optimal performance and compatibility.


title: <B>EBPF PROGRAM STRUCTURE</B>
content:
An <B>eBPF</B> program for XDP is typically written in C, compiled into an <I>ELF object file</I> (<I>.o</I>) using a compiler like <I>clang</I> with the <I>BPF backend</I>. This object file contains the BPF bytecode and metadata, which <code>xdp-filter</code> then loads into the kernel. The program's entry point function, usually named <I>xdp_filter</I>, receives a pointer to an <I>xdp_md</I> (XDP metadata) struct and returns an <B>XDP action code</B> (e.g., <I>XDP_PASS</I> to allow, <I>XDP_DROP</I> to discard, <I>XDP_REDIRECT</I> to redirect to another interface, or <I>XDP_TX</I> to transmit back on the same interface). <B>BPF maps</B> are often used by these programs for persistent storage and to communicate with userspace.


title: HISTORY
content:
The development of <B>XDP</B> and its associated tools like <code>xdp-filter</code> is closely tied to the evolution of <B>eBPF</B> in the Linux kernel. XDP was initially introduced around Linux kernel <B>4.8</B> to provide a high-performance, programmable data path for network processing. <code>xdp-filter</code> emerged as part of the broader effort to make <B>eBPF</B> and XDP more accessible to users. It leverages the <I>libbpf</I> library, which simplifies the loading and management of <B>eBPF</B> programs. Over time, as <B>eBPF</B> capabilities expanded and XDP gained wider adoption for use cases such as next-generation firewalls and load balancers, <code>xdp-filter</code> became a standard utility for interacting with XDP programs, often found within the <I>iproute2</I> or similar network utility packages.


title: TLDR
content:
<b>Load the filter on an interface in skb (generic) mode with default allow policy</b>`sudo xdp-filter load [[-p|--policy]] allow [[-m|--mode]] skb [network_interface]`<br><b>Unload the filter from an interface</b>`sudo xdp-filter unload [network_interface]`<br><b>Deny traffic to a specific destination port</b>`sudo xdp-filter port [destination_port]`<br><b>Deny traffic from a specific source IP address</b>`sudo xdp-filter ip [[-m|--mode]] src [source_ip]`<br><b>Deny traffic from a specific source MAC address</b>`sudo xdp-filter ether [[-m|--mode]] src [mac_address]`<br><b>Poll packets and show statistics every 10000 milliseconds</b>`sudo xdp-filter poll [[-i|--interval]] 10000`


title: DESCRIPTION
content:
The term <b>'lvmdevices'</b> does not correspond to a standard, directly executable Linux command within the Logical Volume Manager (LVM) framework. It is likely a conceptual reference to the methods and components LVM uses to manage storage devices. LVM handles physical storage (hard drives, partitions) by organizing them into a hierarchy of <b>Physical Volumes (PVs)</b>, <b>Volume Groups (VGs)</b>, and <b>Logical Volumes (LVs)</b>.<br><br>Each of these stages, from initializing a raw device as a PV to creating and managing an LV, is performed using a specific set of LVM utilities (e.g., <code>pvcreate</code>, <code>vgcreate</code>, <code>lvcreate</code>, <code>pvdisplay</code>, <code>vgdisplay</code>, <code>lvdisplay</code>, etc.). There is no single, unified command named <b>'lvmdevices'</b> that encompasses all these individual operations. Users seeking to interact with or configure LVM devices should refer to the specific commands dedicated to each LVM component.


title: CAVEATS
content:
Attempting to execute <code>lvmdevices</code> directly in a shell will result in a 'command not found' error, as it is not an actual executable. All LVM device-related operations must be performed using the specific, well-defined LVM commands like <code>pvcreate</code>, <code>vgcreate</code>, <code>lvcreate</code>, and their various management counterparts. Misunderstanding this can lead to confusion or incorrect system administration practices.


title: LVM DEVICE HIERARCHY
content:
LVM structures storage into a distinct hierarchy to provide flexibility and abstraction over physical storage:<br><ul><li><b>Physical Volumes (PVs):</b> These are the base components, typically raw disk partitions or whole disks, initialized using <code>pvcreate</code>. They serve as the raw storage units for LVM.</li><li><b>Volume Groups (VGs):</b> A VG is formed by combining one or more PVs using <code>vgcreate</code>. It acts as a pool of storage from which logical volumes are allocated.</li><li><b>Logical Volumes (LVs):</b> These are the user-facing 'disks' created within a VG using <code>lvcreate</code>. LVs can be resized, snapshotted, and mirrored independently of the underlying physical storage, providing flexibility.<br>Each step of this hierarchy is managed by its own set of dedicated LVM commands.</b>


title: HISTORY
content:
Since the inception of LVM, the design philosophy has been to provide a modular set of tools for each specific aspect of logical volume management, rather than a monolithic command. Therefore, a standalone <b>'lvmdevices'</b> command has never been part of the official LVM toolset. This approach allows for granular control and clear separation of concerns in managing physical volumes, volume groups, and logical volumes. The evolution of LVM (from LVM1 to LVM2) has refined these individual commands but has not introduced a singular <b>'lvmdevices'</b> utility.


title: SEE ALSO
content:
lvm(8), lvm.conf(5), pvcreate(8), vgcreate(8), lvcreate(8), pvs(8), vgs(8), lvs(8), pvdisplay(8), vgdisplay(8), lvdisplay(8)


title: TLDR
content:
<b>List devices recorded in the devices file</b>`sudo lvmdevices`<br><b>Add a device to the devices file</b>`sudo lvmdevices --adddev [/dev/sdXN]`<br><b>Remove a device from the devices file</b>`sudo lvmdevices --deldev [/dev/sdXN]`<br><b>Add a physical volume by its PVID</b>`sudo lvmdevices --addpvid [PVID]`<br><b>Remove a physical volume by its PVID</b>`sudo lvmdevices --delpvid [PVID]`<br><b>Update the devices file after device names change</b>`sudo lvmdevices --update`<br><b>Check the devices file for problems</b>`sudo lvmdevices --check`<br><b>Display version</b>`lvmdevices --version`


title: SYNOPSIS
content:
<b>hyprshot</b> <I>[OPTIONS]</I><br><b>hyprshot</b> <I>-m</I> <I>{region|output|window}</I> <I>[-o {file|clipboard|upload}]</I> <I>[<FILE_PATH>]</I>


title: PARAMETERS
content:
<b><b>-m, --mode</b> <I>MODE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the capture mode: <b>region</b> for interactive selection, <b>output</b> for the current monitor, or <b>window</b> for a specific application window.<br><br><b><b>-o, --output</b> <I>TYPE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the destination for the screenshot: <b>file</b> to save to disk, <b>clipboard</b> to copy to the clipboard, or <b>upload</b> to upload to Imgur.<br><br><b><b>-s, --silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables desktop notifications after taking a screenshot.<br><br><b><b>-c, --clipboard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand option to copy the captured screenshot to the clipboard. Equivalent to <b>--output clipboard</b>.<br><br><b><b>-f, --file</b> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand option to save the captured screenshot to a specified file path. Equivalent to <b>--output file</b> <I>PATH</I>.<br><br><b><b>-u, --upload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand option to upload the captured screenshot to Imgur. Equivalent to <b>--output upload</b>.<br><br><b><b>-d, --delay</b> <I>SECONDS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Introduces a delay in seconds before taking the screenshot.<br><br><b><b>-e, --edit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the screenshot in <I>swappy</I> for editing after capture.<br><br><b><b>-z, --freeze</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Freezes the screen during interactive region or window selection, preventing visual updates.<br><br><b><b>-r, --raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the raw image data of the screenshot to standard output.<br><br><b><b>-p, --print</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the full path of the saved file to standard output when using <b>--output file</b>.<br><br><b><b>-w, --wait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits for the <I>grim</I> utility to finish its operations before proceeding.<br><br><b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-v, --version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information and exits.<br><br>


title: DESCRIPTION
content:
<b>hyprshot</b> is a modern and feature-rich screenshot utility specifically designed for the <I>Wayland compositor Hyprland</I>. It provides a seamless experience for capturing screenshots with various modes, including interactive region selection, full window capture, or entire output (monitor) capture.<br><br>Users can choose to copy the captured image directly to the clipboard, save it to a specified file path, or even upload it to <I>Imgur</I> for easy sharing. The tool integrates well with other Wayland utilities like <I>slurp</I> for selection and <I>wl-clipboard</I> for clipboard operations. It also supports post-capture editing with <I>swappy</I> and provides customizable desktop notifications for feedback. <b>hyprshot</b> aims to be a fast, intuitive, and highly configurable solution for all screenshot needs within the Hyprland environment.


title: CAVEATS
content:
<b>hyprshot</b> is designed for the <I>Hyprland Wayland compositor</I> and relies heavily on Wayland-specific utilities. It may not function correctly on <I>X11</I> environments or other Wayland compositors that do not provide the necessary protocols or helper applications. The tool requires several external dependencies such as <I>grim</I> for image capture, <I>slurp</I> for interactive selection, <I>wl-clipboard</I> for clipboard operations, and <I>swappy</I> for image editing. Users planning to utilize the Imgur upload feature must ensure they have properly configured Imgur authentication or provided a client ID.


title: HISTORY
content:
<b>hyprshot</b> emerged as a dedicated screenshot solution for the growing <I>Hyprland Wayland compositor</I> community. With Wayland's security model, traditional X11 screenshot tools often don't work, necessitating native Wayland alternatives. <b>hyprshot</b> fills this gap by leveraging Wayland-native tools like <I>grim</I> and <I>slurp</I>. Its development focuses on providing a feature-rich yet simple-to-use utility, quickly becoming a popular choice for Hyprland users due to its interactive capabilities and various output options. It's an active open-source project, continuously evolving with community contributions.


title: TLDR
content:
<b>Select and take a screenshot of a region</b>`hyprshot [[-m|--mode]] region`<br><b>Select and take a screenshot of a specific window</b>`hyprshot [[-m|--mode]] window`<br><b>Select and take a screenshot of a specific output</b>`hyprshot [[-m|--mode]] output`<br><b>Take a screenshot of the currently active window</b>`hyprshot [[-m|--mode]] active [[-m|--mode]] window`<br><b>Freeze the screen and take a screenshot of the selected region</b>`hyprshot [[-z|--freeze]] [[-m|--mode]] region`<br><b>Select and take a screenshot of a specific window, saving to the given output directory</b>`hyprshot [[-o|--output-folder]] [path/to/directory] [[-m|--mode]] window`<br><b>Select and take a screenshot of a specific output, saving the screenshot to the clipboard only</b>`hyprshot --clipboard [[-m|--mode]] output`


title: TLDR
content:
<b>Check validation and consistency between pyproject.toml and poetry.lock for Poetry</b>`poetry check`<br><b>Verify that poetry.lock exists</b>`poetry check --lock`<br><b>Fail if warnings are reported</b>`poetry check --strict`


title: SYNOPSIS
content:
<b>resticprofile</b> <b>unschedule</b> [<b>--global</b>] [<b>--user</b>] [<b>--quiet</b>|<b>-q</b>] [<b>--verbose</b>|<b>-v</b>] <i>&lt;profile-name&gt;</i>


title: PARAMETERS
content:
<b><i>&lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the <i>resticprofile</i> profile whose schedule should be removed. This name must correspond to an existing profile configuration.<br><br><b><b>--global</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Unschedules the backup task system-wide (e.g., from root's <b>crontab</b> or <b>systemd</b> system units). Requires root privileges.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Unschedules the backup task for the current user (e.g., from the user's <b>crontab</b> or <b>systemd --user</b> units). This is often the default if neither <b>--global</b> nor <b>--user</b> is specified, but explicit use ensures clarity.<br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Suppresses output messages, showing only errors.<br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Enables verbose output, providing more detailed information about the operation.<br><br>


title: DESCRIPTION
content:
The <i>resticprofile-unschedule</i> command is a subcommand of the <i>resticprofile</i> utility, designed to manage automated <a href="https://restic.net/" target="_blank">restic</a> backups. Its primary function is to remove or disable previously configured backup schedules for a specific <i>resticprofile</i> profile. When <i>resticprofile schedule</i> is used, it typically creates entries in the system's scheduling mechanisms, such as <b>cron</b> jobs or <b>systemd</b> timers. The <i>unschedule</i> command reverses this action, deleting the relevant <b>cron</b> entries or disabling/removing the <b>systemd</b> unit files associated with the specified backup profile. This ensures that the automated backup for that profile will no longer run at its designated intervals, without affecting any existing backup data in the repository or the repository itself.


title: CAVEATS
content:
<ul><li><b>Permissions</b>: Unscheduling a system-wide (<b>--global</b>) task requires <b>root</b> privileges. User-specific tasks typically require only user privileges.</li><li><b>No Data Deletion</b>: This command only removes the schedule; it does <i>not</i> delete any existing backup data or the <b>restic</b> repository itself.</li><li><b>Profile Existence</b>: The command will fail if the specified <i>&lt;profile-name&gt;</i> does not correspond to a configured <i>resticprofile</i>.</li><li><b>Scheduler Dependency</b>: Relies on <b>cron</b> or <b>systemd</b> being properly configured and running on the system for the original schedule to have been effective.</li></ul>


title: HOW IT WORKS
content:
The <i>resticprofile-unschedule</i> command typically operates by either removing a specific line from the relevant <i>crontab</i> file (e.g., <i>/etc/crontab</i> for system-wide, or a user's <i>crontab</i> for user-specific) or by disabling and potentially deleting the <b>systemd</b> timer and service unit files (e.g., <i>.timer</i> and <i>.service</i> files) that were created to manage the scheduled backup. It identifies these entries based on the provided <i>&lt;profile-name&gt;</i>.


title: IMPACT ON BACKUP REPOSITORY
content:
It is crucial to understand that running <i>resticprofile-unschedule</i> has <b>no impact</b> on the <b>restic</b> backup repository itself. All data previously backed up remains intact and accessible. The command solely affects the automation of future backups for the specified profile.


title: HISTORY
content:
The <i>resticprofile</i> utility, of which <i>unschedule</i> is a part, emerged from the need for a simplified and standardized way to manage multiple <a href="https://restic.net/" target="_blank">restic</a> backup configurations and automate their execution. Developed as a community-driven script, it abstracts away the complexities of directly interacting with <b>crontab</b> or <b>systemd</b> units, providing a higher-level interface for scheduling, managing, and maintaining <b>restic</b> backups. The <i>unschedule</i> command was a necessary counterpart to <i>schedule</i>, ensuring users could easily deactivate automated backups without manual intervention in system configuration files.


title: TLDR
content:
<b>Unschedule a backup for a specific profile</b>`resticprofile unschedule [[-n|--name]] "[profile_name]"`<br><b>Unschedule all backups</b>`resticprofile unschedule --all`


title: PARAMETERS
content:
<b><i>PROFILE_NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the <i>resticprofile</i> to be executed. The command will load the configuration for this profile and perform the scheduled backup, prune, or check operations as defined within it. If omitted in some setups, a default profile might be assumed or it might iterate through all configured profiles, though explicitly naming is common practice.<br><br>


title: DESCRIPTION
content:
<i>resticprofile-schedule</i> is a helper utility within the <i>resticprofile</i> ecosystem, designed to automate and manage <a href="https://restic.net/">Restic</a> backups. Unlike standalone command-line tools with extensive options, <i>resticprofile-schedule</i> acts as an execution engine, typically invoked by an external scheduler like <b>cron(8)</b> or <b>systemd.timer(5)</b>.<br><br>Its primary function is to trigger backup, prune, and check operations based on predefined configurations within a <i>resticprofile</i>. When called, it reads the specified profile's settings, including paths to backup, repository details, retention policies, and pre/post-backup hooks, and then orchestrates the corresponding <i>restic</i> commands. This abstraction simplifies complex backup strategies, allowing users to define schedules and backup parameters in declarative YAML files, and then rely on <i>resticprofile-schedule</i> to execute them consistently. It ensures that backups adhere to the configured schedule and policies without requiring manual intervention.


title: CAVEATS
content:
<i>resticprofile-schedule</i> does not manage the scheduling frequency or timing itself; it relies on external system schedulers such as <b>cron(8)</b> or <b>systemd.timer(5)</b> to invoke it at specified intervals. All backup configurations, including paths, repositories, and retention policies, are defined within the <i>resticprofile</i> configuration files (typically YAML files), not through command-line arguments to <i>resticprofile-schedule</i>.<br>Error handling and reporting largely depend on the output of the underlying <i>restic</i> commands and the surrounding scripting or scheduler configuration.


title: INTEGRATION WITH CRON
content:
To schedule <i>resticprofile-schedule</i> using <b>cron(8)</b>, you typically add an entry to your crontab. For example, to run a backup for 'my_profile' every day at 3:00 AM, you would add:<br><code>0 3 * * * /usr/bin/resticprofile-schedule my_profile >> /var/log/resticprofile-my_profile.log 2>&1</code><br>This ensures regular, automated execution of your defined backup profile.


title: INTEGRATION WITH SYSTEMD.TIMER
content:
For more advanced scheduling and logging, <i>resticprofile-schedule</i> can be integrated with <b>systemd.timer(5)</b>. This involves creating a <code>.service</code> unit and a corresponding <code>.timer</code> unit. For example, a <code>resticprofile-my_profile.service</code> might contain:<br><code>[Unit]<br>Description=Restic Backup for my_profile<br><br>[Service]<br>Type=oneshot<br>ExecStart=/usr/bin/resticprofile-schedule my_profile<br></code><br>And a <code>resticprofile-my_profile.timer</code> could be:<br><code>[Unit]<br>Description=Run Restic Backup for my_profile daily<br><br>[Timer]<br>OnCalendar=daily<br>Persistent=true<br><br>[Install]<br>WantedBy=timers.target<br></code><br>This provides better process management, logging via <b>journalctl(1)</b>, and dependency handling.


title: HISTORY
content:
<i>resticprofile-schedule</i> is an integral part of the <i>resticprofile</i> project, which emerged as a solution to manage and simplify the often complex configuration and execution of <a href="https://restic.net/">Restic</a> backups. Developed to provide a more user-friendly interface for defining backup strategies, <i>resticprofile-schedule</i> was designed from its inception to be invoked by system schedulers, offering a robust and automated way to maintain data integrity and availability.


title: TLDR
content:
<b>Schedule default profile</b>`resticprofile schedule`<br><b>Schedule a profile (default profile is "default")</b>`resticprofile --name "[group_name]" schedule`<br><b>Schedule all profiles</b>`resticprofile schedule --all`<br><b>Don't start the job after installing</b>`resticprofile schedule --no-start`<br><b>Display status of scheduled jobs for a profile</b>`resticprofile status [[-n|--name]] [profile_name]`<br><b>Run a scheduled job manually (used by system scheduler)</b>`resticprofile run-schedule "backup@[profile_name]"`


title: SYNOPSIS
content:
Since there is no direct '<b>pkl</b>' command, interaction with <i>.pkl</i> files is handled through Python scripts or the Python interpreter.<br><br>Conceptual Python Interaction (Loading a file):<br><b>python</b> [<i>options</i>] <i>your_script.py</i> [<i>script_arguments</i>]<br><br>Where <i>your_script.py</i> contains code such as:<br><code><b>import</b> <b>pickle</b><br><b>with</b> <b>open</b>('<i>your_file.pkl</i>', '<b>rb</b>') <b>as</b> <i>f</i>:<br>    <i>data</i> = <b>pickle.load</b>(<i>f</i>)<br><b>print</b>(<i>data</i>)</code><br><br>Or directly from the command line for a quick view (though often not fully representative of complex objects):<br><b>python</b> -c "<b>import</b> <b>pickle</b>; <b>with</b> <b>open</b>('<i>your_file.pkl</i>', '<b>rb</b>') <b>as</b> <i>f</i>: <i>obj</i> = <b>pickle.load</b>(<i>f</i>); <b>print</b>(<i>obj</i>)"


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;There is no direct '<b>pkl</b>' command with command-line parameters. Interaction with <i>.pkl</i> files is typically done programmatically using Python's <b>pickle</b> module, where functions like <b>pickle.load()</b> and <b>pickle.dump()</b> accept various arguments for controlling the serialization process.<br><br>


title: DESCRIPTION
content:
While not a standalone Linux command, <b>.pkl</b> refers to files created using Python's <b>pickle</b> module. These files store Python objects in a serialized (byte stream) format, allowing them to be saved to disk and loaded back into a Python program later. This process is called pickling (serialization) and unpickling (deserialization). <br><br>The primary purpose of <b>.pkl</b> files is to preserve the state of Python objects, making them useful for tasks like machine learning model persistence, caching data structures, or transferring complex Python objects between different Python environments. Unlike human-readable formats like JSON or XML, <b>.pkl</b> files are binary and Python-specific, meaning they cannot be easily inspected or modified without a Python interpreter. <br><br>Interaction with <b>.pkl</b> files is exclusively performed programmatically using Python scripts that import the <b>pickle</b> module.


title: CAVEATS
content:
<b>Security Risk:</b> Deserializing a <i>.pkl</i> file from an untrusted source is extremely dangerous. The <b>pickle</b> module is not secure. It is possible to construct malicious pickle data which will execute arbitrary code upon unpickling. Never unpickle data received from an untrusted or unauthenticated source. <br><br><b>Python Version Compatibility:</b> Pickle files can sometimes be incompatible between different Python versions. While the <b>pickle</b> protocol has evolved, older Python versions may not be able to unpickle files created by newer versions, and vice-versa, especially when using specific protocol versions. <br><br><b>Not Human-Readable:</b> <i>.pkl</i> files are binary and not designed for human inspection. Debugging issues or understanding the content without Python code can be challenging.


title: HOW TO SAVE (PICKLE) AN OBJECT IN PYTHON
content:
To save a Python object to a <i>.pkl</i> file, you use <b>pickle.dump()</b>:<br><code><b>import</b> <b>pickle</b><br><br><i>my_object</i> = {'<i>name</i>': '<i>Alice</i>', '<i>age</i>': <i>30</i>, '<i>city</i>': '<i>New York</i>'}<br><br><b>with</b> <b>open</b>('<i>my_data.pkl</i>', '<b>wb</b>') <b>as</b> <i>f</i>:  <i># 'wb' for write binary</i><br>    <b>pickle.dump</b>(<i>my_object</i>, <i>f</i>)</code>


