# CommandSection

title: CAVEATS
content:
Using unofficial modifications like BetterDiscord may violate Discord's Terms of Service and could potentially lead to account suspension, though this is rare. Discord client updates frequently break BetterDiscord installations, necessitating the use of <b>betterdiscordctl rebuild</b>. The tool typically requires root privileges for system-wide Discord installations to apply patches. Its functionality relies on the underlying structure of the Discord Electron app, which can change with updates, potentially requiring updates to <b>betterdiscordctl</b> itself.


title: <B>INSTALLATION</B>
content:
<b>betterdiscordctl</b> is typically installed as a standalone shell script, often placed in a system's PATH, or through a package manager like the Arch User Repository (AUR) for Arch Linux users (e.g., <I>betterdiscordctl-git</I>). It usually depends on Node.js and npm for its underlying patching mechanisms.


title: HISTORY
content:
BetterDiscord, as a client modification, has existed for several years, initially with a primary focus on Windows and macOS. As Discord's user base on Linux grew, and given that the Discord client is an Electron application, there arose a need for a streamlined, command-line method to manage BetterDiscord installations on Linux distributions. <b>betterdiscordctl</b> was developed to address this gap, abstracting away the complexities of patching Electron applications and providing a consistent experience for Linux users who wish to customize their Discord client.


title: SYNOPSIS
content:
<b>betterlockscreen</b> [<i>options</i>]<br><b>betterlockscreen</b> -l [<i>fx_options</i>]<br><b>betterlockscreen</b> -u [<i>path_to_image</i>]<br><b>betterlockscreen</b> -s [<i>name</i>]<br><b>betterlockscreen</b> -w<br><b>betterlockscreen</b> -p


title: PARAMETERS
content:
<b>-l, --lock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Locks the screen using the current configuration. Can be followed by effect options.<br><br><b>-u, --update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates the current wallpaper configuration. Optionally takes a path to a new image.<br><br><b>-s, --save</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current desktop wallpaper as a named lock screen.<br><br><b>-w, --wallpapers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all saved lock screen wallpapers.<br><br><b>-p, --path</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the path to the currently used lock screen image.<br><br><b>-d, --dim</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a dimming effect to the wallpaper.<br><br><b>-b, --blur</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a blurring effect to the wallpaper.<br><br><b>--fx-blur &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the blur intensity (e.g., <i>10x5</i>).<br><br><b>--fx-pixel &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a pixelation effect with specified pixel size.<br><br><b>--fx-vignette &lt;color1&gt; &lt;color2&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a vignette effect with specified colors.<br><br><b>--fx-line</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a horizontal line effect.<br><br><b>--no-text</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the text input/status display from <i>i3lock</i>.<br><br><b>--display &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which display to use (e.g., <i>DP-1</i>).<br><br><b>--i3lock-args &lt;args&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes additional arguments directly to <i>i3lock-color</i>.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help message and exits.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<i>betterlockscreen</i> is a sophisticated wrapper script designed to enhance the <i>i3lock</i> or <i>i3lock-color</i> lock screen experience.<br><br>It automates the process of generating visually appealing lock screens by dynamically applying various image effects, such as blurring, pixelation, dimming, and vignetting, to your current desktop wallpaper. The script handles caching of processed images to ensure fast lock screen transitions. It provides a user-friendly interface to set, update, and manage lock screen wallpapers, making it easier to personalize your system's security aesthetic.<br><br>It's particularly popular among users of tiling window managers like i3wm, providing a more feature-rich alternative to directly calling <i>i3lock</i>. It leverages tools like ImageMagick for image manipulation and <i>xrandr</i> for multi-monitor setups.


title: CAVEATS
content:
Requires <i>i3lock-color</i> (recommended) or <i>i3lock</i>, <i>imagemagick</i>, and <i>xrandr</i> to be installed and accessible. Applying complex effects on very high-resolution images can be resource-intensive during generation, though cached images ensure fast lock screen transitions. The exact appearance of the lock screen heavily depends on the <i>i3lock-color</i> version and its features.


title: CONFIGURATION AND CACHE
content:
<i>betterlockscreen</i> stores its configuration and cached images typically in <i>~/.cache/betterlockscreen/</i> and <i>~/.local/share/betterlockscreen/</i>. Users can manually manage these directories for advanced customization or troubleshooting.


title: DEPENDENCIES
content:
Ensure <i>i3lock-color</i> (or <i>i3lock</i>), <i>imagemagick</i>, and <i>xrandr</i> are installed and accessible in your PATH for <i>betterlockscreen</i> to function correctly.


title: HISTORY
content:
<i>betterlockscreen</i> emerged from the Linux desktop community, particularly among users of <i>i3wm</i> and other tiling window managers, who desired more advanced customization options for their lock screens than <i>i3lock</i> alone provided. It gained popularity as a convenient wrapper script that integrated <i>i3lock</i> with image processing tools like ImageMagick to automatically apply aesthetic effects to wallpapers. Its development has been driven by the need for a simple, yet powerful, tool to manage lock screen appearances, leading to its widespread adoption in various dotfile configurations.


title: PARAMETERS
content:
<b><i>file_path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the C source code file(s) to be analyzed by the <b>betty</b> checker. If multiple files are provided (depending on implementation), <b>betty</b> processes each one.<br><br>


title: DESCRIPTION
content:
<b>betty</b> is a non-standard Linux command, typically implemented as a shell script, designed to enforce specific C coding style guidelines known as "Betty style." It acts as a linter and style checker, primarily used within the Holberton School curriculum to ensure consistency and adherence to predefined coding conventions. The script usually checks various aspects of C source code, including indentation, variable naming, function prototypes, comments, file headers, and general code structure. Its purpose is to promote clean, readable, and maintainable code, facilitating collaborative development and automated code evaluation. Depending on the implementation, <b>betty</b> might wrap other specialized scripts, such as <i>betty-style.pl</i> for style checks and <i>betty-doc.pl</i> for documentation checks.


title: CAVEATS
content:
<b>betty</b> is <i>not</i> a standard Linux command and is typically a custom script used in specific educational environments like Holberton School.<br>Its exact implementation, features, and required dependencies (e.g., Perl) can vary significantly depending on where the script was obtained.<br>It is primarily tailored for C code and the "Betty style" guidelines, which may not align with other common C coding standards.


title: BETTY STYLE EXPLAINED
content:
"Betty style" refers to a comprehensive set of C coding conventions and best practices primarily enforced at Holberton School. It covers a wide range of aspects, including function and variable naming (<i>snake_case</i>), indentation (4 spaces, no tabs), spacing, comment style, header file structure, and documentation requirements. The <b>betty</b> script serves as the automated tool to verify adherence to these specific guidelines, making it a critical component of the Holberton curriculum.


title: HISTORY
content:
The <b>betty</b> command originated from the Holberton School, an advanced software engineering academy. It was developed to automate the enforcement of strict coding style guidelines, dubbed "Betty style," for C programming projects undertaken by students. This ensures uniformity and high code quality across student submissions, which is crucial for automated grading and peer review processes. Historically, it often comprised a combination of Perl scripts (<i>betty-style.pl</i>, <i>betty-doc.pl</i>) encapsulated by a simpler shell script named <b>betty</b> for ease of use.


title: SYNOPSIS
content:
<b>java -jar bfg.jar</b> [<i>options</i>] <i>&lt;repository-path&gt;</i><br><br><i>Examples:</i><br>Remove all blobs bigger than 100 megabytes:<br><code>java -jar bfg.jar --strip-blobs-bigger-than 100M my-repo.git</code><br><br>Remove specific file paths from history, protecting latest commit:<br><code>java -jar bfg.jar --strip-blobs-with-filepaths secret.txt,passwords/ my-repo.git</code><br><br>Remove all big files and their commit history (use with caution!):<br><code>java -jar bfg.jar --all-and-co --force my-repo.git</code>


title: PARAMETERS
content:
<b>--strip-blobs-bigger-than <size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all blobs larger than the specified size (e.g., 100M, 1G).<br><br><b>--strip-blobs-with-filepaths <file-path-file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes blobs found at paths listed in the provided file, or comma-separated paths. Wildcards like `*.zip` are supported.<br><br><b>--strip-blobs-with-regex <regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes blobs matching the given regular expression.<br><br><b>--no-blob-protection</b><br>&nbsp;&nbsp;&nbsp;&nbsp;By default, BFG protects blobs in your <i>latest</i> commit. This option disables that protection.<br><br><b>--all-and-co</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes ALL instances of target files/blobs, even if they are present in protected commits. Use with extreme caution.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Required to run BFG. It's a reminder that BFG performs destructive, history-rewriting operations.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes the repository without making any changes, showing what <i>would</i> be done.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug logging.<br><br>


title: DESCRIPTION
content:
The BFG Repo-Cleaner, often simply referred to as <i>bfg</i>, is a powerful and fast tool for cleaning up Git repository history. Unlike the traditional <i>git-filter-branch</i>, BFG is designed to be significantly quicker and simpler to use, especially for large repositories. <br><br> Its primary purpose is to remove unwanted large files, sensitive data, or any specified blobs from a Git repository's history, effectively rewriting the repository's commit history. It operates directly on the Git object database, making it very efficient. <br><br> BFG is not a native Linux command but rather a Java application distributed as an executable JAR file. It's an indispensable tool for maintaining lean repositories, particularly after accidentally committing large files or sensitive information that needs to be purged from the entire history. After running BFG, it's crucial to perform additional Git cleanup steps and ensure all collaborators re-clone the repository due to the rewritten history.


title: CAVEATS
content:
<i>The BFG Repo-Cleaner is not a standard Linux command-line utility; it requires Java to be installed on your system.</i><br><br><b>Destructive Operation:</b> BFG permanently rewrites Git history. It is highly recommended to create a complete backup of your repository before running BFG.<br><br><b>Bare Repository:</b> BFG must be run on a <I>bare</I> Git repository (e.g., `my-repo.git`), not a working copy (e.g., `my-repo/.git`).<br><br><b>Post-BFG Steps:</b> After running BFG, critical `git` commands (`git reflog expire --expire=now --all` and `git gc --prune=now`) are necessary to truly remove the old, unwanted data.<br><br><b>Collaboration Impact:</b> After cleaning, all collaborators must delete their old local clones and re-clone the repository from scratch.


title: <B>POST-BFG CLEANUP</B>
content:
After BFG completes, the old, unwanted objects are still referenced by the Git 'reflog'. To completely remove them and reclaim disk space, you must navigate into the cleaned bare repository and execute:<br><code>git reflog expire --expire=now --all</code><br>followed by:<br><code>git gc --prune=now</code><br>This step is crucial for permanent data removal and repository size reduction.


title: <B>BARE REPOSITORY REQUIREMENT</B>
content:
The BFG must be run against a <I>bare</I> repository. A bare repository is essentially the `.git` directory without the working tree. You can create one from a full clone using:<br><code>git clone --mirror your-repo-url.git</code><br>or by copying the `.git` directory:<br><code>cp -R your-working-repo/.git your-bare-repo.git</code><br>This ensures BFG operates on the raw Git database without interference from local files or branches that might be checked out.


title: HISTORY
content:
The BFG Repo-Cleaner was created by Robert P. R. for Atlassian, with its first public release around 2014. It was developed as a modern, high-performance alternative to Git's built-in `git-filter-branch` command, which was often slow and complex for large repositories. BFG gained rapid popularity due to its significant speed advantage and simpler command-line interface, making the process of purging sensitive data or large files from Git history much more accessible and efficient.


title: SYNOPSIS
content:
N/A: The 'bfs' command does not exist as a standard Linux utility.<br>Attempts to execute 'bfs' will typically result in a 'command not found' error.


title: DESCRIPTION
content:
The term 'bfs' most commonly refers to the <I>Breadth-First Search</I> algorithm, a fundamental graph traversal algorithm. It is not a standalone command in standard Linux distributions. BFS explores all the neighbor nodes at the present depth before moving on to nodes at the next depth level. This methodical approach is widely used in various computer science applications, such as finding the shortest path in unweighted graphs, web crawlers, and network topology analysis.<br><br>While the Linux <I>find</I> command typically performs a Depth-First Search (DFS) by default for file system traversal, the principles of BFS are conceptually relevant to how certain data structures or operations might process information in a level-by-level manner. There is no direct executable named 'bfs' that users can invoke to perform a BFS traversal of a file system or other data structure.


title: CAVEATS
content:
Users should be aware that 'bfs' is an algorithmic concept, not an executable program. If one encounters references to 'bfs' in a Linux context, it almost certainly pertains to the <I>Breadth-First Search</I> algorithm's application or conceptual understanding, rather than a specific command to be run from the terminal.


title: UNDERSTANDING BREADTH-FIRST SEARCH ALGORITHM
content:
BFS systematically explores a graph or tree level by level. It starts at a source node, then visits all its direct neighbors, then all their unvisited neighbors, and so on. This approach ensures that all nodes at depth <I>d</I> are visited before any nodes at depth <I>d+1</I>. It is often implemented using a <I>queue</I> data structure to keep track of the nodes to visit next.<br><br>This is in contrast to <I>Depth-First Search</I> (DFS), which explores as far as possible along each branch before backtracking. While <I>find</I> uses DFS by default, the conceptual understanding of BFS is valuable for optimizing certain data processing tasks or for developing custom scripts that need to process files or directories in a level-by-level manner.


title: HISTORY
content:
The <I>Breadth-First Search</I> algorithm was first devised by Edward F. Moore in 1959 for finding the shortest path in a labyrinth, and independently by C. Y. Lee in 1961 for wire routing. As 'bfs' refers to an algorithm rather than a specific Linux command, it does not have a command-specific development or usage history within the Linux operating system itself.


title: SYNOPSIS
content:
<i>bg</i> [<i>%job_spec</i>]<br>This command is a shell built-in; it does not have options in the traditional sense. The optional <i>%job_spec</i> refers to the job to be acted upon.


title: PARAMETERS
content:
<b>%job_spec</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional argument specifying the job to be resumed. If omitted, the most recently stopped job is used. Job specifications can be numbers (e.g., <b>%1</b>), prefixes of command names (e.g., <b>%vi</b>), or special symbols (e.g., <b>%%</b> or <b>%+</b> for the current job, <b>%-</b> for the previous job).<br><br>


title: DESCRIPTION
content:
The <b>bg</b> command (short for "background") is a shell built-in that resumes a stopped job and continues its execution in the background. When a command is running in the foreground, you can suspend it by pressing <b>Ctrl+Z</b>. This sends a <b>SIGSTOP</b> signal to the process, pausing its execution. Once suspended, you can use <b>bg</b> to make it continue running without occupying your terminal's input prompt. This is particularly useful for long-running tasks that don't require immediate interactive input. You can identify stopped jobs using the <b>jobs</b> command, which lists all active jobs with their status and job ID. If no job is specified, <b>bg</b> operates on the most recently stopped job. It's often used in conjunction with <b>fg</b> (foreground), which brings a background or suspended job back to the foreground.


title: CAVEATS
content:
<b>bg</b> is a shell built-in command, meaning its behavior is handled directly by your interactive shell (like Bash, Zsh, or Ksh) rather than being a separate executable program. Consequently, its exact implementation details might vary slightly between shells, though its core functionality remains consistent.<br><br>It can only be used on jobs that are currently <i>stopped</i> (suspended) or <i>running in the foreground</i>. It cannot be used on jobs that have already terminated or are already running in the background. Output from a backgrounded job will still appear on the terminal unless redirected.


title: JOB CONTROL
content:
The <b>bg</b> command is an integral part of the shell's job control system. Job control allows users to manage multiple processes within a single interactive shell session, enabling them to suspend foreground jobs, move them to the background, bring background jobs to the foreground, and list active jobs. This system provides a powerful way to multitask efficiently on the command line.


title: JOB SPECIFICATION (<I>%JOB_SPEC</I>)
content:
When referring to a specific job with <b>bg</b> (or <b>fg</b>, <b>jobs</b>, <b>kill</b>), you use a job specification. Common forms include:<br><ul><li><b>%N</b>: The job with number <i>N</i> (as shown by <b>jobs</b>). E.g., <b>%1</b>.</li><li><b>%string</b>: The job whose command line begins with <i>string</i>. E.g., <b>%emacs</b>.</li><li><b>%?string</b>: The job whose command line contains <i>string</i>. E.g., <b>%?ssh</b>.</li><li><b>%%</b> or <b>%+</b>: The current job (the one most recently started or stopped).</li><li><b>%-</b>: The previous job.</li></ul>


title: HISTORY
content:
Job control, including the <b>bg</b> command, was a significant enhancement to Unix-like operating systems to improve interactivity and multitasking for command-line users. It was first widely implemented in the C shell (csh) in the late 1970s and subsequently adopted by other popular shells like the Korn shell (ksh) and later Bash. Its development was driven by the need to manage multiple processes within a single terminal session without having to open new terminal windows or use complex process management tools. It has been a standard feature in modern Unix-like shells for decades.


title: SYNOPSIS
content:
<b>bgpgrep</b> [<i>OPTIONS</i>] [<i>PATTERNS</i>]<br>Common usage examples:<br><b>birdc show route</b> | <b>bgpgrep</b> [<i>OPTIONS</i>]<br><b>bgpgrep</b> [<i>OPTIONS</i>] <b>-f</b> <i>&lt;FILE&gt;</i> [<i>PATTERNS</i>]


title: PARAMETERS
content:
<b><b>-p</b> <i>&lt;prefix&gt;</i>, <b>--prefix</b> <i>&lt;prefix&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Matches routes that advertise the specified IP prefix (e.g., <i>192.168.1.0/24</i>).<br><br><b><b>-a</b> <i>&lt;AS_PATH_REGEX&gt;</i>, <b>--as-path</b> <i>&lt;AS_PATH_REGEX&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Matches routes whose AS path attribute matches the given regular expression (e.g., <i>_65001_</i> for routes traversing AS 65001).<br><br><b><b>-n</b> <i>&lt;next_hop&gt;</i>, <b>--next-hop</b> <i>&lt;next_hop&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Matches routes with a specific next-hop IP address.<br><br><b><b>-c</b> <i>&lt;community&gt;</i>, <b>--community</b> <i>&lt;community&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Matches routes carrying a specific BGP community string (e.g., <i>65535:666</i>).<br><br><b><b>-o</b> <i>&lt;origin_as&gt;</i>, <b>--origin-as</b> <i>&lt;origin_as&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Matches routes that originated from a specific AS number.<br><br><b><b>-l</b>, <b>--long</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays matching routes in a more detailed, long output format.<br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the matching routes in JSON format, if supported by the specific implementation.<br><br><b><b>-v</b>, <b>--invert-match</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inverts the match, selecting routes that <b>do not</b> match the specified patterns.<br><br><b><b>-i</b>, <b>--ignore-case</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs case-insensitive matching for patterns.<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;Reads BGP routing information from the specified <i>&lt;file&gt;</i> instead of standard input.<br><br>


title: DESCRIPTION
content:
<i>bgpgrep</i> is a specialized command-line utility designed to search, filter, and display BGP (Border Gateway Protocol) routing information. Unlike general-purpose text search tools like <b>grep</b>, <i>bgpgrep</i> understands the structured nature of BGP routes, allowing users to query routes based on specific BGP attributes such as prefixes, AS paths, next-hops, BGP communities, origin AS, and more.<br><br>It is particularly useful for network engineers and administrators to diagnose routing issues, verify routing policies, analyze BGP updates, and extract specific routing information from large BGP routing tables or BGP dumps. It often works in conjunction with routing daemon outputs, like <b>birdc show route</b> from the BIRD routing daemon, by processing their standard output or files containing BGP routing data.


title: CAVEATS
content:
<i>bgpgrep</i> is <b>not</b> a standard core Linux command and requires installation of specific routing software (e.g., BIRD Internet Routing Daemon or Free Range Routing).<br><br>The exact set of options, their syntax, and behavior can vary significantly between different implementations or versions. Users should always consult the official documentation or man pages for the specific <i>bgpgrep</i> version they are using.<br><br>It is primarily designed for parsing structured BGP data and is not a general-purpose text processing tool.


title: INPUT DATA FORMATS
content:
<i>bgpgrep</i> is designed to parse BGP routing information, typically from human-readable output of BGP daemon commands. Common input sources include the standard output of commands like <b>birdc show route</b>, <b>show ip bgp</b> (from FRR or Cisco/Juniper devices), or files containing BGP RIB dumps in a textual format.


title: INTEGRATION WITH SCRIPTING
content:
Given its command-line interface and capability to output structured data (especially with options like <b>-j</b> or <b>-l</b>), <i>bgpgrep</i> is frequently employed in shell scripts for automated BGP route analysis, network monitoring, and generating reports, making it a valuable tool for network automation.


title: HISTORY
content:
<i>bgpgrep</i> emerged from the growing need for efficient analysis of large BGP routing tables. As BGP became the dominant routing protocol for the Internet, the volume of routing information processed by network devices increased dramatically. Standard text processing tools like <b>grep</b> were inadequate for intelligently filtering and querying structured BGP attributes.<br><br>Consequently, specialized tools like <i>bgpgrep</i> were developed, often as part of open-source routing daemon projects such as the BIRD project. Its development aimed to provide network engineers with a powerful and intuitive way to query BGP data, facilitating debugging, policy validation, and network monitoring tasks in complex BGP environments.


title: PARAMETERS
content:
<b>-c, --stdout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output to standard output, keep original files unchanged.<br><br><b>-d, --decompress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decompress files.<br><br><b>-i, --index</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a TBI index for the compressed file (requires <I>tabix</I> compatibility, data must be coordinate-sorted).<br><br><b>-I <I>file</I>, --index-filename <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the filename for the index (used with <code>-i</code>).<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite existing output files without prompting.<br><br><b>-r, --reindex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recreate TBI index for an existing BGZF file (requires data to be coordinate-sorted).<br><br><b>-s <I>num</I>, --nthreads <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of threads to use for compression/decompression.<br><br><b>-t, --test</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test integrity of compressed file.<br><br><b>-b <I>offset</I>, --offset <I>offset</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decompress from <I>offset</I> (for testing or partial decompression).<br><br><b>-l, --fast</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use faster compression (produces larger files).<br><br><b>-o <I>file</I>, --output <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output to specified file.<br><br><b>-@ <I>level</I>, --compression-level <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compression level (1-9, where 9 is best compression).<br><br><b>-k, --keep</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keep (don't delete) input files during compression.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit.<br><br>


title: DESCRIPTION
content:
<code>bgzip</code> is a utility for compressing files into the Block Gzip Format (BGZF). Unlike standard <code>gzip</code>, which produces a single, non-indexed compressed stream, <code>bgzip</code> divides the input into small, independent blocks, each compressed separately using <code>gzip</code>. This unique block-based compression allows for efficient random access to any part of the compressed file without decompressing the entire file, which is crucial for large datasets. It's widely used in bioinformatics for compressing genomic data files like BAM, VCF, and BCF, as it enables tools like <code>samtools</code> and <code>tabix</code> to quickly retrieve specific data ranges. While it creates <code>.gz</code> files, these are not directly interchangeable with <code>gzip</code>-compressed files if random access is required; <code>bgzip</code>-produced files are optimized for index-based access.


title: CAVEATS
content:
<code>bgzip</code> is specifically designed for block-gzipped files, primarily for random access in genomic data. While it produces files with a <code>.gz</code> extension, these are not directly interchangeable with standard <code>gzip</code> files if random access is a requirement, and tools that rely purely on sequential <code>gzip</code> streams might not fully leverage its block structure. The overhead of block headers means it might be slightly less efficient for pure sequential decompression of small files compared to <code>gzip</code>. It's not intended as a general-purpose <code>gzip</code> replacement for all use cases.


title: <B>BGZF FORMAT</B>
content:
The Block Gzip Format (BGZF) is an extension of the <code>gzip</code> format that divides the compressed data into blocks. Each block is independently compressed and includes a special header containing the size of the compressed block. This structure allows tools to skip directly to specific blocks based on an index, enabling efficient random access. This is particularly useful for large datasets where only small portions of the data need to be accessed at a time.


title: <B>RANDOM ACCESS AND INDEXING</B>
content:
The primary advantage of <code>bgzip</code> over standard <code>gzip</code> is its ability to support random access. By compressing data in blocks, an accompanying index (often created by <code>tabix</code> or <code>samtools</code> for coordinate-sorted files) can store the file offset for each data record or genomic region. When a specific region is requested, the tool can use the index to jump directly to the relevant BGZF block, decompress only that block, and retrieve the data. This capability significantly speeds up queries on large, sorted datasets, a common requirement in genomics.


title: HISTORY
content:
<code>bgzip</code> was developed as part of the <code>hts-lib</code> (High-Throughput Sequence Library) project, which provides the underlying library for `samtools` and `bcftools`. Its creation was driven by the necessity for efficient random access to increasingly large genomic data files (like BAM and VCF files) that are often sorted by chromosomal coordinates. Traditional <code>gzip</code> files do not support this, leading to the development of the Block Gzip Format (BGZF) and the <code>bgzip</code> utility to implement it, thereby enabling fast lookups of specific regions without decompressing the entire file, which is critical for bioinformatics workflows.


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 <b>biber</b> version information and exits.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug mode, providing verbose logging output.<br><br><b><b>-D</b>, <b>--debuglog</b> &lt;<i>file</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects debug output to the specified log file.<br><br><b><b>-l</b>, <b>--logfile</b> &lt;<i>file</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file for general log messages.<br><br><b><b>-O</b>, <b>--output_directory</b> &lt;<i>dir</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the directory where output files (e.g., <i>.bbl</i>) will be written.<br><br><b><b>--input_encoding</b> &lt;<i>encoding</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the character encoding of input files (e.g., <i>UTF-8</i>, <i>latin1</i>). Default is <i>UTF-8</i>.<br><br><b><b>--output_encoding</b> &lt;<i>encoding</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the character encoding for output files. Default is <i>UTF-8</i>.<br><br><b><b>--config</b> &lt;<i>file</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative XML configuration file for <b>biber</b>.<br><br><b><b>--safe_mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables safe mode, restricting certain operations like external command execution.<br><br><b><b>--terse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informational messages, only showing warnings and errors.<br><br><b><b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all messages except critical errors.<br><br><b><b>--output_format</b> &lt;<i>format</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <i>bbl</i>, <i>bibtex</i>, <i>xml</i>, <i>json</i>).<br><br><b><b>--onlycompile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes the bibliography but does not generate the <i>.bbl</i> output for LaTeX.<br><br><b><b>--sortcase</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enforces case-sensitive sorting of bibliography entries.<br><br><b><b>--min_crossrefs</b> &lt;<i>num</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum number of cross-references an entry must have to be included.<br><br>


title: DESCRIPTION
content:
<b>biber</b> is a powerful and highly configurable bibliography processor, designed as a modern replacement for <b>BibTeX</b>. It serves as the primary backend for the <i>biblatex</i> package in LaTeX, overcoming many limitations of its predecessor. Written in Perl, <b>biber</b> provides robust Unicode support, advanced sorting capabilities, multi-language features, and a flexible data model for bibliography entries. It processes the <i>.bcf</i> (BibLaTeX Control File) generated by LaTeX engines like <i>pdflatex</i> or <i>xelatex</i>, then produces a <i>.bbl</i> file containing the formatted bibliography, which is subsequently included in the LaTeX document. Its design allows for extensive customization of bibliography styles and data handling, making it an indispensable tool for academic writing in LaTeX.


title: CAVEATS
content:
<b>biber</b> is specifically designed for the <i>biblatex</i> package; it is not a direct replacement for <i>BibTeX</i> when using older bibliography styles (like <i>plain</i>, <i>abbrv</i>, <i>alpha</i>, <i>unsrt</i>) or packages like <i>natbib</i>. While it offers excellent Unicode support, ensuring consistent encoding across your LaTeX document, <i>.bib</i> file, and <b>biber</b>'s settings is crucial to avoid issues. For very large bibliographies, its processing can sometimes be slower than <i>BibTeX</i>.


title: TYPICAL WORKFLOW
content:
A common compilation sequence for a LaTeX document using <i>biblatex</i> and <b>biber</b> is:<br>1. Run your LaTeX engine (e.g., <b>pdflatex</b> <i>main.tex</i>) to generate the <i>.bcf</i> file.<br>2. Run <b>biber</b> (e.g., <b>biber</b> <i>main</i>) to process the <i>.bcf</i> and generate the <i>.bbl</i> file.<br>3. Run your LaTeX engine again (e.g., <b>pdflatex</b> <i>main.tex</i>) to incorporate the <i>.bbl</i> into the document.<br>4. Run your LaTeX engine one final time (e.g., <b>pdflatex</b> <i>main.tex</i>) to resolve all cross-references and citations.


title: CONFIGURATION
content:
<b>biber</b> is extensively configurable through its command-line options and XML-based configuration files (typically <i>biber.conf</i>). This allows users to define custom data models, sorting schemes, and other advanced behaviors, making it highly adaptable to various academic and publishing requirements.


title: HISTORY
content:
<b>biber</b> was created by Philip Kime and first released around 2006-2007, developed specifically to address the numerous limitations of the aging <b>BibTeX</b> program. Key motivations included the lack of native Unicode support in <b>BibTeX</b>, its inflexible data model, and limited sorting and customization options. Its development in Perl allowed for greater flexibility and extensibility. <b>biber</b> quickly became the de-facto standard backend for the popular <i>biblatex</i> package, establishing a modern, robust, and highly configurable bibliography workflow for LaTeX users.


title: SYNOPSIS
content:
<b>bind</b> [<i>options</i>] [<i>keyseq:function</i> | <i>keyseq:"macro"</i>]<br><b>bind</b> -f <i>filename</i><br><b>bind</b> -r <i>keyseq</i><br><b>bind</b> -u <i>function</i><br><b>bind</b> -x <i>keyseq:command</i><br><b>bind</b> -l|-P|-p|-s|-v|-V [-m <i>keymap</i>]


title: PARAMETERS
content:
<b><b>-m</b> <i>keymap</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>keymap</i> to use. Common keymaps include <i>emacs</i>, <i>vi-insert</i>, and <i>vi-command</i>. When used with display options (`-P`, `-p`), it lists bindings for that specific keymap.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the names of all <i>readline</i> functions.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists current <i>readline</i> function names and the keys they are bound to. Output format shows function first, then its bindings.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists current <i>readline</i> key bindings in a format that can be re-read as input to `bind`. This is useful for saving and restoring bindings.<br><br><b><b>-r</b> <i>keyseq</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes (unbinds) the binding for <i>keyseq</i>.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <i>readline</i> key sequences bound to macros and the strings they output. Macros are sequences of characters that are inserted when a key is pressed.<br><br><b><b>-u</b> <i>function</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unbinds all keys that are bound to the specified <i>function</i>.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists current <i>readline</i> variable names and their values. These variables control <i>readline</i> behavior (e.g., `editing-mode`).<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current <i>readline</i> version information.<br><br><b><b>-f</b> <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads key bindings from <i>filename</i>. This allows for defining multiple bindings in a script or configuration file.<br><br><b><b>-x</b> <i>keyseq:command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When <i>keyseq</i> is typed, <i>command</i> is executed in the shell. This provides advanced customization by allowing direct shell command execution on a key press.<br><br><b><i>keyseq:function</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Binds <i>keyseq</i> to <i>function</i>. <i>Keyseq</i> specifies the keyboard sequence (e.g., `"\C-x\C-r"` for Ctrl+X Ctrl+R). <i>Function</i> is a <i>readline</i> function name (e.g., `re-read-init-file`).<br><br><b><i>keyseq:"macro"</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Binds <i>keyseq</i> to a macro, which is a literal string that gets inserted when the key sequence is pressed. The string must be enclosed in quotes (e.g., `bind '"\C-o": "Hello, World!\n"'`).<br><br>


title: DESCRIPTION
content:
The `bind` command in Linux is a <b>bash</b> shell builtin used to customize and display the key bindings for the <i>readline</i> library. <i>Readline</i> is a fundamental component of interactive command-line interfaces, most notably <b>bash</b>, providing features like command history, line editing, and tab completion. <br><br>Users leverage `bind` to tailor their terminal experience by assigning specific keyboard sequences to <i>readline</i> functions. For instance, you can bind `Ctrl+K` to delete text from the cursor to the end of the line, or remap existing shortcuts. This allows for personalized workflows and increased efficiency. <br><br>Beyond setting new bindings, `bind` can also list current bindings, show available <i>readline</i> functions, display variable settings, or read bindings from a file. Changes made with `bind` are effective immediately but are temporary, applying only to the current shell session unless saved in a startup file like `~/.bashrc` or `~/.inputrc`.


title: CAVEATS
content:
`<b>bind</b>` is a <b>bash</b> shell builtin, meaning its availability and behavior are specific to <b>bash</b> (and shells that implement similar <i>readline</i> integration). While <i>readline</i> is a library, `bind` itself is typically part of the shell's builtins. <br><br>Changes made with `bind` are only active for the current shell session. For persistent bindings, they must be added to `~/.bashrc` (for <b>bash</b> startup) or `~/.inputrc` (for <i>readline</i> applications in general). Be cautious when modifying default key bindings, as it can disrupt familiar command-line editing workflows. Incorrect bindings can render certain shell functions unusable.


title: <I>READLINE</I> MODES AND `~/.INPUTRC`
content:
The `bind` command respects the current <i>readline</i> editing mode, typically <i>Emacs</i> mode (default) or <i>Vi</i> mode. You can switch between these modes using `set -o emacs` or `set -o vi`. Bindings created or listed via `bind` will apply to the active mode or can be specified for a particular mode using `<b>-m</b> <i>keymap</i>`. <br><br>For permanent key binding changes that apply to all <i>readline</i>-enabled applications (not just <b>bash</b>), bindings should be placed in the `~/.inputrc` file. This file is read by the <i>readline</i> library upon application startup. The `<b>bind</b>` command allows testing and temporary modification, while `~/.inputrc` is for persistent configuration.


title: KEY SEQUENCE REPRESENTATION
content:
When specifying <i>keyseq</i> for `bind`, special characters are often represented using backslash escapes. Common examples include: <br><ul><li>`\C-x`: Represents Ctrl+X. (`\C` for Control)</li><li>`\M-x`: Represents Alt+X or Meta+X. (`\M` for Meta/Alt)</li><li>`\e`: Represents the Escape key.</li><li>`\n`: Represents a newline character.</li></ul>Octal codes (`\007` for Bell) or hexadecimal codes (`\x07`) can also be used for specific ASCII characters. Understanding these escape sequences is crucial for accurately defining complex key combinations.


title: HISTORY
content:
The `<b>bind</b>` command's functionality is deeply intertwined with the development of the <i>readline</i> library, which was created by Brian Fox for the GNU Project. <i>Readline</i> became an integral part of the <b>GNU Bash</b> shell since its early versions, providing powerful command-line editing capabilities that were lacking in many traditional Unix shells. <br><br>The `bind` builtin was introduced to allow users to customize these <i>readline</i> behaviors directly from the shell prompt or through configuration files like `~/.inputrc` and `~/.bashrc`. Its core purpose and syntax have remained largely consistent over decades, evolving primarily with new <i>readline</i> functions and options. It represents a cornerstone of <b>bash</b>'s user experience customization.


title: SYNOPSIS
content:
<b>bindkey</b> [<I>options</I>] [<I>key-sequence</I> [<I>widget-or-string</I>]]<br><br>Examples:<br><b>bindkey</b><br><b>bindkey</b> <I>"^X^X"</I> <I>"transpose-chars"</I><br><b>bindkey</b> <I>-s "^K"</I> <I>"echo Hello\n"</I><br><b>bindkey</b> <I>-r "^D"</I><br><b>bindkey</b> <I>-m vicmd</I> <I>"j"</I> <I>"down-line"</I>


title: PARAMETERS
content:
<b><I>-e</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the active keymap to the default <I>emacs</I> editing mode.<br><br><b><I>-v</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the active keymap to the default <I>vi</I> editing mode, starting in insert mode (<I>viins</I>).<br><br><b><I>-a</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies the specified binding to all keymaps. This is useful for global bindings.<br><br><b><I>-m</I> <I>keymap</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <I>keymap</I> to which the binding operation will apply. Common keymaps include <I>emacs</I>, <I>viins</I> (vi insert mode), and <I>vicmd</I> (vi command mode).<br><br><b><I>-r</I> <I>key-sequence</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the binding for the specified <I>key-sequence</I> in the current or specified keymap.<br><br><b><I>-s</I> <I>key-sequence</I> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Binds the <I>key-sequence</I> to output a literal <I>string</I> (a macro). The string will be inserted into the buffer as if typed.<br><br><b><I>-L</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all keymaps and their bindings in a format suitable for inclusion in a <I>.zshrc</I> configuration file.<br><br><b><I>-l</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available ZLE widgets (editor functions) that can be bound to key sequences.<br><br><b><I>key-sequence</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The sequence of keystrokes to be bound. Can be literal characters, control characters (e.g., <I>^X</I> or <I>\C-X</I>), meta characters (e.g., <I>\M-X</I> or <I>\eX</I>), or hexadecimal codes (<I>\xHH</I>).<br><br><b><I>widget-or-string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ZLE widget name (e.g., <I>accept-line</I>, <I>forward-char</I>) or a literal string (when used with <I>-s</I>) that the <I>key-sequence</I> will execute or insert.<br><br>


title: DESCRIPTION
content:
<b>bindkey</b> is a fundamental <i>builtin</i> command in the <I>Zsh</I> shell, designed to manage and display key bindings for the <I>Zsh Line Editor</I> (ZLE). ZLE is the powerful interactive editor used by Zsh for command-line input. Through <b>bindkey</b>, users can extensively customize their command-line editing experience by associating specific sequences of keystrokes (key sequences) with predefined ZLE widgets (editor functions) or custom macros (arbitrary strings to be inserted or executed).<br><br>This command supports a wide array of key notations, including control characters (e.g., <I>^X</I>), meta keys (<I>M-x</I>), and function keys, providing granular control over how the shell responds to user input. It also allows for the display of current key bindings, which is invaluable for understanding the editor's default behavior or debugging custom configurations. <b>bindkey</b> operates within different <I>keymaps</I> (such as <I>emacs</I>, <I>viins</I>, and <I>vicmd</I>), enabling context-specific bindings that change based on the editor's mode. It is an essential tool for anyone looking to personalize and optimize their Zsh interactive environment.


title: CAVEATS
content:
<b>bindkey</b> is a Zsh-specific command and is not available in other shells like Bash, which uses the <I>bind</I> command for similar functionality based on the <I>readline</I> library. <br><br>Defining complex key sequences, especially those involving escape characters or terminal-specific codes, can sometimes be challenging. <br><br>Effective use often requires familiarity with ZLE widgets and their functions. <br><br>The order of bindings in configuration files matters, as later definitions for the same key sequence will override earlier ones.


title: KEYMAPS EXPLAINED
content:
Keymaps in ZLE define sets of key bindings. Zsh comes with several standard keymaps, most notably <I>emacs</I> (default for Emacs-like editing) and <I>viins</I> (vi insert mode) and <I>vicmd</I> (vi command mode) for vi-like editing. Users can also create custom keymaps using <I>zle -N</I> and <I>bindkey -N</I> for highly specialized workflows or context-dependent behaviors.


title: WIDGET VS. STRING BINDING
content:
When using <b>bindkey</b> without <I>-s</I>, a <I>key-sequence</I> is bound to a ZLE <I>widget</I>. Widgets are predefined C functions within ZLE that perform specific editor actions (e.g., moving the cursor, deleting text, completing commands). When using <I>-s</I> (for string binding), the <I>key-sequence</I> inserts a literal <I>string</I> into the command buffer, acting as a macro. This distinction is crucial for understanding whether you're triggering an editor function or simply inserting text.


title: KEY SEQUENCE NOTATION
content:
<b>bindkey</b> accepts various notations for key sequences. Common examples include:<br>- Literal characters: <I>"a"</I><br>- Control characters: <I>"^A"</I> or <I>"\C-a"</I><br>- Meta/Alt characters: <I>"\M-a"</I> or <I>"\ea"</I> (where <I>\e</I> is the escape character)<br>- Function keys and special keys: often represented by escape sequences, e.g., <I>"\e[A"</I> for Up Arrow (though <I>bindkey -L</I> typically shows canonical forms for these).<br>- Hexadecimal byte values: <I>"\x1b"</I> for Escape.


title: HISTORY
content:
The <I>bindkey</I> command is an intrinsic part of the <I>Zsh</I> shell, evolving with it to provide sophisticated line editing capabilities. While its functionality is conceptually similar to the <I>bind</I> command found in shells like Bash (which rely on the GNU <I>readline</I> library), <I>bindkey</I> is specific to Zsh's proprietary <I>Zsh Line Editor</I> (ZLE). Its development reflects Zsh's commitment to highly customizable and powerful interactive shell environments, allowing users to tailor keyboard shortcuts and macros to an unprecedented degree for enhanced productivity.


title: SEE ALSO
content:
<I>zsh</I>(1), <I>zle</I>(1), <I>man zshzle</I> (for detailed widget documentation), <I>bind</I>(1) (Bash equivalent)


title: PARAMETERS
content:
<b>-flip</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Flips the image rows (vertically) before outputting the PGM/PPM.<br><br><b>-flop</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Flips the image columns (horizontally) before outputting the PGM/PPM.<br><br><b>-rotate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates the image 90 degrees clockwise before outputting.<br><br><b>-verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed debugging or informational messages to standard error during processing.<br><br><b>-info</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses the input Bio-Rad file and prints its metadata (dimensions, channels, slices, etc.) to standard error, then exits without generating an image.<br><br><b>-truegrayscale</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the default scaling of grayscale values to the full 0-255 range. The original pixel intensity values are preserved without contrast enhancement.<br><br><b>-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the output to be a PPM (Portable Pixmap) color image, even if the Bio-Rad file might otherwise be interpreted as grayscale. This is particularly useful for older files where color information might be present but not immediately obvious.<br><br><b>-min <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum intensity value for image scaling. Pixels with intensity less than N will be clamped to N during conversion.<br><br><b>-max <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum intensity value for image scaling. Pixels with intensity greater than N will be clamped to N during conversion.<br><br><b>-z <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which Z-axis slice number (0-indexed) to extract from a 3D Bio-Rad dataset. Default is 0.<br><br><b>-t <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which T-axis (time series) slice number (0-indexed) to extract from a time-lapse Bio-Rad dataset. Default is 0.<br><br><b>-channel <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which channel number (0-indexed) to extract from a multi-channel Bio-Rad image. Default is 0.<br><br><b>-image <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which image number (0-indexed) to extract from a Bio-Rad file containing multiple distinct images. Default is 0.<br><br>


title: DESCRIPTION
content:
The <b>bioradtopgm</b> command is a specialized utility included in the extensive <i>Netpbm</i> toolkit, which provides a comprehensive set of tools for image format conversion and manipulation. Its primary function is to convert proprietary image files generated by Bio-Rad confocal microscopes, specifically those in the PIC format, into open, portable image formats: <i>PGM</i> (Portable Graymap) for grayscale images or <i>PPM</i> (Portable Pixmap) for color images. <br><br>By default, if the Bio-Rad file is grayscale, <b>bioradtopgm</b> will output a PGM file. However, if the source file contains color information and the <b>-color</b> option is specified, it will produce a PPM file. This conversion capability is crucial for researchers and users who need to process, analyze, or integrate Bio-Rad microscopy data with standard image processing software or custom scripts that are compatible with Netpbm formats.


title: CAVEATS
content:
The <b>bioradtopgm</b> command is tightly integrated into the <i>Netpbm</i> ecosystem. This means its direct output is typically a PGM or PPM stream to standard output, not a common format like JPEG or PNG. Users will often need to pipe the output to another Netpbm utility (e.g., <i>pnmtojpeg</i> or <i>pnmtopng</i>) for conversion to more widely used image formats.<br><br>The command is specifically designed for Bio-Rad PIC format files and will not recognize or process other image formats. When dealing with multi-dimensional (Z, T, channel) or multi-image Bio-Rad files, <b>bioradtopgm</b> extracts only one specified slice/channel/image per invocation. Batch processing of such files typically requires scripting multiple command calls.


title: INPUT AND OUTPUT HANDLING
content:
If no <i>bioradfile</i> argument is provided, <b>bioradtopgm</b> will read the Bio-Rad PIC data from standard input (<code>stdin</code>). The resulting PGM or PPM image is always written to standard output (<code>stdout</code>). This design philosophy is central to Netpbm's Unix-like pipe-oriented operation, allowing for efficient chaining of commands, for example: <code>cat bioimage.pic | bioradtopgm -z 5 | pnmtojpeg > slice5.jpg</code>.


title: INTENSITY SCALING AND SCIENTIFIC DATA
content:
By default, <b>bioradtopgm</b> scales the intensity values of the Bio-Rad image to span the full 0-255 range of the PGM or PPM format. While this often improves visual contrast, it may alter the original quantitative intensity relationships. For scientific applications where absolute photometric values are critical and should not be modified, it is essential to use the <b>-truegrayscale</b> option to preserve the original intensity values without scaling.


title: HISTORY
content:
<b>bioradtopgm</b> is an integral part of the venerable <i>Netpbm</i> collection of graphics utilities. The Netpbm project, originating from the PBMPLUS toolkit developed by Jef Poskanzer in the late 1980s, is renowned for its modular design, allowing users to chain simple commands together via pipes to achieve complex image manipulations. <b>bioradtopgm</b> was developed to fill a specific niche: enabling the conversion of proprietary Bio-Rad confocal microscope image data into Netpbm's open, interchangeable formats. This allows scientific and medical researchers to seamlessly integrate their Bio-Rad data into open-source workflows, facilitating further analysis and visualization with the rich set of tools available in Netpbm and beyond.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>biosdecode</b> command is a utility designed to extract and display system management BIOS (SMBIOS) or Desktop Management Interface (DMI) information directly from the system's firmware.<br><br>This data includes crucial hardware details such as the BIOS vendor, version, and date, as well as information about the system's manufacturer, product name, serial number, UUID, and various board, chassis, and memory attributes.<br><br>While its functionality is largely superseded by the more comprehensive <b>dmidecode</b> utility on modern Linux systems, <b>biosdecode</b> served as an earlier or simpler tool focused specifically on retrieving this fundamental hardware inventory. It is often used for system auditing, troubleshooting hardware compatibility, and gathering specific machine identification details that are encoded within the BIOS/UEFI firmware.


title: CAVEATS
content:
The <b>biosdecode</b> utility is often considered deprecated or replaced by <b>dmidecode</b> on modern Linux distributions. Its availability and specific functionality may vary significantly across systems. It typically requires root privileges to access the system's memory (e.g., <i>/dev/mem</i>) where the DMI/SMBIOS tables reside. The reliability of the output depends heavily on the accuracy and completeness of the system's BIOS/UEFI firmware.


title: SMBIOS VS. DMI
content:
SMBIOS (System Management BIOS) is a standard specification for reporting system information via the BIOS firmware. DMI (Desktop Management Interface) was an older standard, and SMBIOS essentially took over its role for representing hardware information. The terms are often used interchangeably, but <b>biosdecode</b> (and <b>dmidecode</b>) specifically parse the SMBIOS structures present in the firmware, which effectively serves the purpose of DMI.


title: ROOT PRIVILEGES REQUIREMENT
content:
Accessing the raw memory where SMBIOS data is stored (typically <i>/dev/mem</i>) requires superuser privileges for security reasons. Therefore, <b>biosdecode</b> (and similarly <b>dmidecode</b>) must generally be run as the root user or via <b>sudo</b> to function correctly and retrieve system information.


title: HISTORY
content:
The <b>biosdecode</b> command has roots as an early tool for extracting DMI/SMBIOS data from system firmware. It often ran in parallel with, or predated, the development of the more robust and versatile <b>dmidecode</b> utility. Over time, <b>dmidecode</b> evolved to become the de facto standard for this purpose, offering more detailed parsing and a wider range of options, while <b>biosdecode</b>'s standalone usage diminished significantly. In many contemporary Linux environments, <b>biosdecode</b> might be a symbolic link to <b>dmidecode</b>, or not present at all, as its specific functionality has been absorbed by the more comprehensive tool.


title: PARAMETERS
content:
<b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the BIRD daemon in read-only mode, preventing any configuration changes or state modifications.<br><br><b><b>-s</b> <i>&lt;socket&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the BIRD control socket. By default, <i>birdc</i> attempts to connect to standard socket locations (e.g., <i>/run/bird/bird.ctl</i>).<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <i>birdc</i> client and the connected BIRD daemon, then exits.<br><br>


title: DESCRIPTION
content:
<i>birdc</i> is the command-line client for the BIRD Internet Routing Daemon. It provides an interface to interact with a running BIRD instance, allowing network administrators to manage and observe the daemon's operations.<br><br>Through <i>birdc</i>, users can perform a variety of tasks such as displaying current routing tables, inspecting the state of various routing protocols (e.g., BGP, OSPF, RIP), loading new configurations, reloading the daemon, enabling or disabling specific protocols, and troubleshooting routing issues. It supports both interactive mode, where users can enter multiple commands, and non-interactive mode, where a single command can be executed directly from the shell.<br><br>The client connects to the BIRD daemon via a control socket, typically located at <i>/run/bird/bird.ctl</i> (for IPv4/IPv6) or <i>/run/bird/bird6.ctl</i> (for IPv6 only), enabling secure and privileged communication for management tasks.


title: CAVEATS
content:
<i>birdc</i> requires the BIRD Internet Routing Daemon to be running for it to function correctly. Access to the control socket usually requires appropriate file system permissions, often restricting usage to privileged users (e.g., root or members of a specific group). Ensure the specified socket path is correct and accessible.


title: INTERACTIVE VS. NON-INTERACTIVE MODE
content:
When invoked without a specific <i>command</i> argument, <i>birdc</i> enters an interactive shell-like mode, indicated by a prompt. In this mode, users can execute multiple commands sequentially. If a <i>command</i> argument is provided on the command line, <i>birdc</i> executes that single command and then exits (non-interactive mode).


title: COMMON INTERNAL COMMANDS
content:
Once connected to the BIRD daemon, <i>birdc</i> can execute numerous commands:<br><b>show status</b>: Displays the general status of the BIRD daemon.<br><b>show protocols</b>: Lists all configured routing protocols and their current states.<br><b>show routes</b> [<i>protocol</i>]: Shows routes in the routing table, optionally filtered by protocol.<br><b>configure</b>: Reloads the configuration from the default configuration file.<br><b>reload</b>: Reloads the configuration from the default configuration file. (Similar to configure).<br><b>enable</b> <i>&lt;protocol&gt;</i>: Activates a specified routing protocol.<br><b>disable</b> <i>&lt;protocol&gt;</i>: Deactivates a specified routing protocol.<br><b>quit</b> or <b>exit</b>: Exits the <i>birdc</i> client.<br><b>help</b>: Provides a list of available commands and their brief descriptions.


title: HISTORY
content:
The BIRD Internet Routing Daemon project, including its client <i>birdc</i>, was initiated at Charles University, Prague, in 1998. It was designed to be a flexible and powerful routing daemon for Unix-like operating systems. <i>birdc</i> has been an integral part of the BIRD ecosystem from its early stages, serving as the primary administrative interface for controlling and monitoring the daemon's complex routing operations.


title: PARAMETERS
content:
<b><b>-d</b>, <b>--defines</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Generate</i> a header file (e.g., <i>.tab.h</i>) with token definitions and other declarations for the parser.<br><br><b><b>-o</b> <i>FILE</i>, <b>--output=</b><i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify</i> the name of the output parser file, e.g., '<i>parser.c</i>'.<br><br><b><b>-g</b>, <b>--graph</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output</i> a <b>VCG</b> (Visualization of Compiler Graphs) grammar graph for visualization.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output</i> a verbose description of the grammar, including conflicts (shift/reduce, reduce/reduce) and states.<br><br><b><b>-t</b>, <b>--no-parser</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not generate</i> the parser source file. Useful when only the header file (with <b>-d</b>) or reports are needed.<br><br><b><b>-y</b>, <b>--yacc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Emulate</i> <b>Yacc</b> compatibility. Primarily affects output file names and some default behaviors.<br><br><b><b>--file-prefix=</b><i>PREFIX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify</i> a <i>prefix</i> for all generated file names, overriding the default based on the input file.<br><br><b><b>--language=</b><i>LANG</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify</i> the target programming language for the generated parser (e.g., '<b>c</b>', '<b>c++</b>', '<b>java</b>').<br><br><b><b>--name-prefix=</b><i>PREFIX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify</i> a <i>prefix</i> for all generated external symbols (functions, variables) in the parser, e.g., '<b>yy</b>' is default for '<b>yyparse</b>'.<br><br>


title: DESCRIPTION
content:
<b>bison</b> is the <b>GNU</b> Project's <i>general-purpose</i> parser generator. <br>It is <i>compatible</i> with <b>Yacc</b> (Yet Another Compiler Compiler). <br>It takes a <b>LALR(1)</b> context-free grammar description and generates a <b>C</b>, <b>C++</b>, <b>Java</b>, or other language source file for a parser that can <i>recognize valid sentences</i> of that grammar. <br>Parsers generated by <b>Bison</b> are <b>LALR(1)</b> and capable of detecting syntax errors. <br>It is commonly used in conjunction with a lexical analyzer generator like <b>flex</b> (Fast Lexical Analyzer), where <b>flex</b> handles <i>tokenization</i> (lexing) and <b>bison</b> handles <i>parsing the sequence of tokens</i> according to the grammar rules. <br>This combination is fundamental in building compilers, interpreters, and other language processing tools. <br><b>bison</b> helps <i>automate the tedious and error-prone task</i> of writing parsers manually, allowing developers to focus on the grammar rules themselves.


title: CAVEATS
content:
<b>bison</b>, by default, generates <i>LALR(1)</i> parsers. <br>This means they cannot handle all context-free grammars, especially those requiring more than one token of lookahead to resolve ambiguities. <br>Common issues include: <br><b>Shift/Reduce Conflicts</b>: Occur when the parser cannot decide whether to shift the next token onto the stack or reduce a grammar rule. <b>Bison</b> <i>defaults to shifting</i>. <br><b>Reduce/Reduce Conflicts</b>: Occur when the parser has two or more grammar rules that apply to the same sequence of tokens. <b>Bison</b> <i>resolves by choosing the rule that appears first</i> in the grammar file. <br>Both types of conflicts often indicate <i>ambiguities</i> in the grammar that need to be resolved by the grammar designer to ensure correct parsing behavior.


title: <B>INPUT FILE FORMAT</B>
content:
<b>bison</b> expects a grammar description file, conventionally named with a '<i>.y</i>' extension (e.g., '<i>grammar.y</i>'). <br>This file is typically divided into three main sections, separated by '<b>%%</b>': <br>1. <b>Declarations</b> (e.g., token definitions, C code inclusions). <br>2. <b>Grammar Rules</b> (the core of the language definition). <br>3. <b>Additional C/C++/Java Code</b> (e.g., custom functions, error reporting).


title: <B>OUTPUT FILES</B>
content:
By default, <b>bison</b> generates a parser source file named after the input file with a '<i>.tab.c</i>' (or '<i>.tab.cpp</i>' for C++, etc.) suffix (e.g., '<i>grammar.tab.c</i>'). <br>This file contains the parser logic, including the '<b>yyparse()</b>' function. <br>When the '<b>-d</b>' or '<b>--defines</b>' option is used, it also generates a corresponding header file (e.g., '<i>grammar.tab.h</i>') containing token definitions and other necessary declarations for linking with the lexical analyzer.


title: HISTORY
content:
<b>bison</b> was developed as part of the <b>GNU Project</b> to provide a <i>free software replacement</i> for the proprietary <b>Yacc</b> (Yet Another Compiler Compiler). <br>It was first released in <i>1988</i>. <br>Over the years, <b>bison</b> has significantly evolved, adding support for <b>C++</b>, <b>Java</b>, and other languages, as well as more advanced features like <i>GLR parsing</i> (Generalized LR) for ambiguous grammars, although <b>LALR(1)</b> remains the default. <br>Its development is <i>ongoing</i>, reflecting advancements in language parsing theory and software engineering practices. <br>It has become a <i>cornerstone tool</i> for many open-source projects requiring custom language processing, cementing its role in the compiler construction ecosystem.


title: DESCRIPTION
content:
The command <b>'bit'</b> is <i>not</i> a standard, widely recognized utility found in typical Linux distributions. When attempted, executing <b>'bit'</b> will usually result in a 'command not found' error. This might be due to a typo, or the user might be referring to a custom script, an alias, or a specific component of a niche software package where 'bit' is an internal or domain-specific command. Without further context, it is impossible to provide a definitive analysis of a non-standard 'bit' command.


title: CAVEATS
content:
As <b>'bit'</b> is not a standard Linux command, its execution will typically fail. Users might encounter a command named 'bit' if they are working within a custom environment, a specific application framework that defines such a command, or if it's an internal command within a complex system like certain build tools (e.g., related to bitbake from Yocto) or embedded development environments. It is not part of the GNU Core Utilities or standard system management tools.


title: HISTORY
content:
There is <i>no documented history</i> of a standard Linux command named <b>'bit'</b> within the mainstream open-source or commercial Linux distributions. Its mention typically arises from specific project contexts, custom shell configurations, or potential misinterpretations of other commands or concepts related to 'bits' of data.


title: PARAMETERS
content:
<b>-daemon</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run in the background as a daemon.<br><br><b>-datadir=<i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify data directory (default: ~/.bitcoin/).<br><br><b>-conf=<i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify configuration file (default: bitcoin.conf).<br><br><b>-testnet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the test network.<br><br><b>-regtest</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the regression test network.<br><br><b>-printtoconsole</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print all output to the console, even if running as a daemon.<br><br><b>-disablewallet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable all wallet functionality.<br><br><b>-rpcport=<i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Listen for RPC connections on the specified port.<br><br><b>-rpcuser=<i>&lt;user&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Username for JSON-RPC connections.<br><br><b>-rpcpassword=<i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Password for JSON-RPC connections.<br><br><b>-rpcbind=<i>&lt;addr&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bind to specified address or wildcard address 0.0.0.0 for JSON-RPC connections.<br><br><b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a list of command-line options.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print version and exit.<br><br><b>-reindex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rebuild blockchain index from scratch.<br><br><b>-prune=<i>&lt;MiB&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable pruning to reduce disk usage. Minimum size is 550 MiB.<br><br><b>-txindex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maintain a full transaction index, allowing for getrawtransaction queries (requires more disk space).<br><br>


title: DESCRIPTION
content:
<i>bitcoind</i> is the official reference implementation of the Bitcoin protocol, operating as a background daemon process. It is the fundamental component for running a Bitcoin full node, participating directly in the Bitcoin peer-to-peer network.<br><br>The primary function of <i>bitcoind</i> is to download and synchronize the entire Bitcoin blockchain, validating every block and transaction against the network's consensus rules. This process ensures the integrity and security of the chain. Once synchronized, it continuously monitors for new blocks and transactions, relaying them across the network.<br><br><i>bitcoind</i> also provides a powerful JSON-RPC interface, allowing for programmatic interaction with the Bitcoin network. This interface is utilized by tools like <i>bitcoin-cli</i> and various applications to query blockchain data, manage wallets (if enabled), and send transactions. Running a <i>bitcoind</i> full node contributes significantly to the decentralization, security, and resilience of the Bitcoin network.


title: CAVEATS
content:
Running a <i>bitcoind</i> full node requires significant resources. On mainnet, it demands <b>hundreds of gigabytes of disk space</b> (and growing) for the blockchain data, along with considerable CPU and RAM during initial synchronization and validation. Exposing the RPC port publicly without proper security measures (e.g., firewall, strong credentials, TLS) is a severe security risk. It's crucial to ensure sufficient network bandwidth and a stable internet connection for efficient synchronization and operation.


title: RPC INTERFACE
content:
<i>bitcoind</i> exposes a robust JSON-RPC interface, which is the primary way to interact with the full node programmatically. This interface enables users and applications to query blockchain data, send transactions, and manage various aspects of the node's operation. Access to the RPC interface is typically secured with a username and password defined in the <i>bitcoin.conf</i> file.


title: CONFIGURATION FILE (BITCOIN.CONF)
content:
While many settings can be specified via command-line options, persistent configuration for <i>bitcoind</i> is typically managed through the <i>bitcoin.conf</i> file, usually located in the data directory. This file allows users to define network settings, RPC credentials, pruning options, and various other operational parameters, ensuring consistent behavior across restarts.


title: DATA DIRECTORY
content:
The data directory (default: <i>~/.bitcoin</i> on Linux) is where <i>bitcoind</i> stores all essential blockchain data, including blocks, chainstate database, wallet files (if enabled), and debug logs. Its size grows as new blocks are added to the blockchain, which is why disk space management (e.g., using the <i>-prune</i> option) is important for some users.


title: HISTORY
content:
<i>bitcoind</i> is the daemon component of Bitcoin Core, the software project that originated with Satoshi Nakamoto's release of the Bitcoin client in 2009. It represents the reference implementation of the Bitcoin protocol, continuously developed and maintained by a large, decentralized community of developers. Over the years, its codebase has evolved significantly, incorporating numerous improvements for performance, security, and stability, solidifying its role as the backbone of the Bitcoin network.


title: PARAMETERS
content:
<b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays program usage message and exits.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version information.<br><br><b>-name <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the name of the created image for XBM output.<br><br><b>-foreground <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the initial drawing (foreground) color.<br><br><b>-background <i>color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the initial background color.<br><br><b>-grid <i>size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the pixel grid overlay size (e.g., 8 for 8x8).<br><br><b>-size <i>width</i>x<i>height</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial image dimensions.<br><br><b>-width <i>width</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial image width.<br><br><b>-height <i>height</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial image height.<br><br><b>-tool <i>toolname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial drawing tool (e.g., <i>pencil</i>, <i>line</i>, <i>floodfill</i>).<br><br><b>-toolbar <i>position</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the toolbar's initial position (e.g., <i>left</i>, <i>top</i>).<br><br><b>-square</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces drawing operations to be square (e.g., ellipses drawn as circles).<br><br><b>-proportional</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces proportional resizing during scale operations.<br><br><b>-mono</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures for monochrome (1-bit) drawing.<br><br><b>-gray</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 2x2 gray scaling (simulating gray tones with pixels).<br><br><b>-stipple</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pre-sets size to 16x16 and names the bitmap "stipple".<br><br><b>-cursor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pre-sets size to 16x16 and names the bitmap "cursor".<br><br><b>-icon</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pre-sets size to 32x32 and names the bitmap "icon".<br><br><b>-tile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pre-sets size to 64x64 and names the bitmap "tile".<br><br><b>-pattern</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Alias for -tile, pre-sets size to 64x64 and names the bitmap "tile".<br><br><b>-noresize</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the resize functionality.<br><br><b>-noselection</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the selection box.<br><br><b>-notoolbar</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the toolbar.<br><br><b>-nogrid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the grid overlay.<br><br><b>-nomono</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables monochrome mode.<br><br><b>-nogray</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables gray scaling.<br><br><b>-nostipple</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting the default stipple configuration.<br><br><b>-nocursor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting the default cursor configuration.<br><br><b>-noicon</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting the default icon configuration.<br><br><b>-notile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting the default tile configuration.<br><br><b>-nopattern</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting the default pattern configuration.<br><br><b>-noversion</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents displaying the version message on startup.<br><br><b>-noforeground</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting a default foreground color.<br><br><b>-nobackground</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents setting a default background color.<br><br>


title: DESCRIPTION
content:
<b>bitmap</b> is an interactive graphical utility for the X Window System, primarily used for creating and editing small monochrome images, specifically in the XBM (X BitMap) file format. These images are commonly employed as icons, cursors, and patterns within X applications. Users can draw, erase, copy, paste, and manipulate pixels on a grid. The command offers various drawing tools like pencil, line, circle, rectangle, and floodfill. Options allow specifying initial image dimensions, colors, grid visibility, toolbar placement, and pre-setting common image types such as cursors, icons, or stipples. While its primary output is the XBM format, a legacy format, <b>bitmap</b> remains useful for simple, pixel-level artwork compatible with older X applications. It's a GUI application that launches its own window.


title: CAVEATS
content:
<b>bitmap</b> primarily supports the legacy XBM (X BitMap) format, which is simple and monochrome. While historically significant for X Window System applications, modern GUIs and web applications often use more versatile formats like PNG or SVG, which support full color and transparency.<br><br><b>bitmap</b> is an interactive GUI tool and not suitable for automated batch processing from the command line. Its feature set is basic compared to modern image editors.


title: FILE FORMAT
content:
The <b>bitmap</b> command exclusively reads and writes files in the XBM (X BitMap) format. This is a plain text file format that defines a monochrome (1-bit) image, often embedded directly into C source code for use in X applications. XBM files store the image data as C arrays of static data.


title: INTERACTIVE USAGE
content:
<b>bitmap</b> is an interactive graphical application. When launched, it opens a window with a drawing canvas, a toolbar containing various drawing tools (pencil, line, rectangle, etc.), and menus for file operations (load, save, clear), editing (copy, paste), and view options (grid, mono/gray). Users manipulate pixels directly on the canvas.


title: HISTORY
content:
<b>bitmap</b> is a venerable utility originating from the early days of the X Window System, designed to create graphical assets for X applications. It's part of the <i>xbitmaps</i> or <i>xorg-apps</i> distribution, reflecting its foundational role in the X environment. Its design predates widespread adoption of richer image formats, thus focusing on the simple, efficient XBM format suitable for icons and cursors in resource-constrained graphical environments of its time. While its core functionality remains, its prominent usage has diminished with the rise of modern desktop environments and more sophisticated image editing tools.


title: SYNOPSIS
content:
There is no direct 'bitwise' command with a standard synopsis. Instead, bitwise operations are performed using built-in shell features or other utilities. <br><br><i>Examples:</i><br><b>Bash/Zsh Arithmetic Expansion:</b><br><br><i>(( result = value1 & value2 ))</i><br><i>(( result = value1 | value2 ))</i><br><i>(( result = value1 << bits ))</i><br><br><b>expr command:</b><br><br><i>expr value1 \& value2</i> (Note: '<i>&</i>' needs escaping)<br><i>expr value1 \| value2</i> (Note: '<i>|</i>' needs escaping)<br><br><b>awk:</b><br><br><i>awk 'BEGIN { print (value1 & value2) }'</i>


title: DESCRIPTION
content:
The term 'bitwise' refers to operations that manipulate individual bits of binary numbers. <br><br>Unlike a dedicated 'bitwise' command, Linux shells and utilities perform bitwise operations through various built-in features, arithmetic expansions, or scripting languages. These operations are fundamental in low-level programming, network protocols, file permissions, and flag manipulation. <br><br>Common bitwise operators include AND (<i>&</i>), OR (<i>|</i>), XOR (<i>^</i>), NOT (<i>~</i>), left shift (<i><<</i>), and right shift (<i>>></i>). Users typically employ shell arithmetic (e.g., <i>(( ... ))</i> in Bash/Zsh), the <i>expr</i> command, <i>awk</i>, or higher-level scripting languages like Python or Perl to achieve bitwise logic within a Linux environment.


title: CAVEATS
content:
The most significant caveat is that 'bitwise' is not a dedicated command in standard Linux distributions. Users often mistakenly search for such a command when they intend to perform bitwise operations. These operations must be executed within the context of a shell's arithmetic capabilities, a programming language, or specific utilities like <i>expr</i> or <i>awk</i> that support them. Shell arithmetic (<i>(( ... ))</i> in Bash/Zsh) is generally the most convenient and performant method for simple bitwise operations directly within scripts.


title: COMMON BITWISE OPERATORS
content:
Understanding the basic bitwise operators is crucial:<br><br><b>Bitwise AND ( & )</b>: Sets a bit if it is set in both operands.<br><b>Bitwise OR ( | )</b>: Sets a bit if it is set in at least one of the operands.<br><b>Bitwise XOR ( ^ )</b>: Sets a bit if it is set in only one of the operands.<br><b>Bitwise NOT ( ~ )</b>: Inverts all bits (one's complement).<br><b>Left Shift ( << )</b>: Shifts bits to the left, filling new bits with zeros. Equivalent to multiplying by powers of 2.<br><b>Right Shift ( >> )</b>: Shifts bits to the right. For unsigned integers, new bits are zeros. For signed integers, behavior can be arithmetic (sign-extending) or logical (zero-filling).


title: HISTORY
content:
The concept of bitwise operations is fundamental to computer science and programming, dating back to the earliest days of digital computing. These operations are intrinsic to how CPUs process data at the lowest level. As such, their availability in various forms (assembly instructions, high-level language operators, shell built-ins) has been a constant feature across all operating systems, including Unix and Linux. There isn't a specific 'bitwise' command with a development history, but rather a continuous evolution of how these operations are exposed and utilized within programming constructs and scripting environments.


title: PARAMETERS
content:
<b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>--diff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't write files back, just print diffs to stdout. This is useful for reviewing changes before applying them.<br><br><b><b>--check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't write files back, just return the status code. Useful for CI/CD pipelines to verify formatting compliance.<br><br><b><b>--line-length</b> <<i>INT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;How many characters per line to allow. Default is 88. Black is opinionated, so this is one of the few configurable options.<br><br><b><b>--target-version</b> <<i>py{36,37,38,39,310,311,312}</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Python versions that Black should target, primarily affecting quotes and trailing commas. Can be specified multiple times.<br><br><b><b>--include</b> <<i>TEXT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A regular expression that matches files and directories to include. Default is '(\.pyi?|\.ipynb)$'.<br><br><b><b>--exclude</b> <<i>TEXT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A regular expression that matches files and directories to exclude. Useful for ignoring generated code or specific parts of a project.<br><br><b><b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't emit non-error output to stderr. Suppresses progress messages.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Emit all non-error output to stderr. Provides more detailed information about files processed.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br>


title: DESCRIPTION
content:
<i><b>black</b></i> is a deterministic and opinionated Python code formatter. It's designed to provide a consistent code style across projects, reducing bikeshedding and cognitive load during development and code reviews. Unlike linters, <i><b>black</b></i> doesn't just suggest changes; it automatically reformats your code to adhere to a strict subset of PEP 8, along with its own uncompromising rules. This ensures that all code formatted by <i><b>black</b></i> looks the same, regardless of the original author's style.<br><br>It is a Python package, typically installed via pip, and executed from the command line. Its core philosophy is to remove manual formatting decisions, allowing developers to focus solely on the logic and functionality of their code. <i><b>black</b></i> is idempotent, meaning running it multiple times on the same code will produce the identical output.


title: CAVEATS
content:
<i><b>black</b></i> is intentionally opinionated and offers very limited configuration. This can be a limitation for teams that require highly specific formatting rules not aligned with Black's philosophy. It requires a Python interpreter to run, as it's not a native Linux binary. While generally safe, it's always recommended to use version control (e.g., Git) when applying <i><b>black</b></i> to an existing codebase, as it will overwrite files in place.


title: CONFIGURATION
content:
<i><b>black</b></i> can be configured via a <i>pyproject.toml</i> file in your project root. This file can specify options like <i>line-length</i>, <i>target-version</i>, and <i>include</i>/<i>exclude</i> patterns, allowing consistent settings across team members without needing to pass command-line arguments each time.


title: EDITOR INTEGRATION
content:
Most modern Python IDEs and text editors (e.g., VS Code, PyCharm, Sublime Text, Vim) offer seamless integration with <i><b>black</b></i>, allowing users to format code automatically on save or via a keyboard shortcut, further streamlining the development process.


title: HISTORY
content:
<i><b>black</b></i> was created by Łukasz Langa and first publicly released in 2018. Its development was driven by the desire to eliminate the time spent on formatting decisions and to enforce a consistent, unchangeable style. It rapidly gained popularity within the Python community due to its uncompromising nature and the benefits of unified code style, quickly becoming a standard tool in many Python development workflows and CI/CD pipelines.


title: SYNOPSIS
content:
<pre>blackfire &lt;command&gt; [options] [arguments]</pre><br>This is a simplified representation. The <b>blackfire</b> command typically operates with subcommands, each having its own specific options and arguments.<br><br>Common subcommands and their general usage include:<br><ul><li><code><b>blackfire profile [options] &lt;URL&gt;</b></code>: Profiles a web request by sending an HTTP request to the specified URL.</li><li><code><b>blackfire run [options] &lt;command&gt;</b></code>: Profiles a local command-line script or application process.</li><li><code><b>blackfire agent [options]</b></code>: Manages or interacts with the Blackfire Agent service.</li><li><code><b>blackfire config [options]</b></code>: Manages Blackfire client and agent configuration settings.</li><li><code><b>blackfire inspect &lt;UUID&gt;</b></code>: Retrieves details and data for a specific profile identified by its UUID.</li><li><code><b>blackfire help [command]</b></code>: Displays help information for the main command or a specific subcommand.</li></ul>


title: PARAMETERS
content:
<b><b>--agent=&lt;addr&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Specifies the Blackfire Agent's address (e.g., 'tcp://127.0.0.1:8307' or 'unix:///var/run/blackfire/agent.sock'). This overrides the default agent discovery.<br><br><b><b>--auth=&lt;client_id&gt;:&lt;client_token&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Provides the Blackfire client credentials directly for authentication, overriding environment variables or configuration files.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Enables highly verbose debugging output, useful for diagnosing issues with the Blackfire CLI or its interaction with the agent/probe.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Outputs results in JSON format, suitable for programmatic parsing and integration into automated workflows.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Displays the current version of the Blackfire CLI tool.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Global)</i> Increases the verbosity of messages, providing more detailed information about the command's execution.<br><br><b><b>--output=&lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> Saves the raw profile data or a generated report to the specified file path instead of sending it to Blackfire.io or printing to stdout.<br><br><b><b>--format=&lt;format&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> Specifies the output format for the profile report when using <code>--output</code> (e.g., 'html', 'json', 'callgrind', 'dot', 'svg').<br><br><b><b>--aggregate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> When profiling multiple times (e.g., using <code>--iterations</code>), this option aggregates the collected data from all runs into a single, comprehensive profile.<br><br><b><b>--env=&lt;name&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> Specifies the Blackfire environment (defined on Blackfire.io) to associate the generated profile with. Useful for organizing profiles across different application stages.<br><br><b><b>--title=&lt;title&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> Assigns a custom, human-readable title to the generated profile, making it easier to identify on the Blackfire.io dashboard.<br><br><b><b>--php=&lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Run)</i> Specifies the path to the PHP executable that should be used when profiling PHP CLI commands with <code>blackfire run</code>.<br><br><b><b>--php-ini=&lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Run)</i> Specifies an additional PHP INI file to be loaded by the PHP executable during profiling, allowing custom runtime configurations.<br><br><b><b>--disable-php-ini</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Profile/Run)</i> Prevents Blackfire from loading default PHP INI files during profiling. Useful for ensuring a clean, isolated profiling environment.<br><br>


title: DESCRIPTION
content:
The <b>blackfire</b> command-line tool is the primary interface for interacting with the Blackfire.io performance management service. It enables developers and operations teams to profile web applications to identify performance bottlenecks, optimize code, and monitor application health. Blackfire works by deploying a lightweight <i>agent</i> on the server and a <i>probe</i> within the application's runtime environment (e.g., PHP-FPM, Node.js process). The CLI tool acts as a <i>companion</i>, orchestrating the profiling process: it triggers a request to the application, the probe collects data, sends it to the agent, which then forwards it to the Blackfire.io cloud for analysis and visualization. <br><br>Beyond on-demand profiling, Blackfire supports <i>continuous profiling</i>, integration with CI/CD pipelines, and automated performance assertions. This allows teams to detect performance regressions early in the development lifecycle, ensuring consistent application performance. It's widely used in the PHP ecosystem but also supports other languages like Python, Node.js, and Go.


title: CAVEATS
content:
<i>Blackfire requires a Blackfire.io account and proper setup</i>, including the Blackfire Agent running on the server and the Blackfire Probe installed within the application's runtime environment (e.g., PHP-FPM extension). <br>The tool needs <i>network connectivity</i> to the Blackfire.io cloud service for profile analysis and storage. <br>While profiling, there is a <i>minimal performance overhead</i> on the application being profiled, which is typical for profiling tools. <br>It is primarily designed for <i>web application performance profiling</i>, focusing on execution paths triggered by HTTP requests or CLI commands, rather than general system-wide performance monitoring.


title: KEY CONCEPTS
content:
The Blackfire ecosystem relies on three core components: the <i>Blackfire Agent</i> (a daemon collecting data), the <i>Blackfire Probe</i> (an application extension gathering runtime data), and the <i>Blackfire Companion CLI</i> (the <b>blackfire</b> command, which orchestrates profiling sessions). <br>Blackfire also introduces concepts like <i>Assertions</i> (rules to validate performance metrics against predefined thresholds) and <i>Scenarios</i> (automated sequences of requests to profile specific user flows or functionalities).


title: INTEGRATION WITH CI/CD
content:
One of Blackfire's strengths is its seamless integration into <i>Continuous Integration and Continuous Delivery (CI/CD) pipelines</i>. The <b>blackfire</b> CLI can be used in build scripts to automatically profile code changes, run performance assertions, and detect regressions before deployment. This proactive approach helps maintain application performance quality throughout the development lifecycle, ensuring that performance issues are caught early.


title: HISTORY
content:
Blackfire was initially developed by <i>SensioLabs</i>, the company behind the Symfony PHP framework, and officially launched in 2014. Its roots are deeply embedded in the PHP ecosystem, providing a much-needed robust and developer-friendly profiling solution for PHP applications. <br><br>Over time, Blackfire expanded its language support to include Python, Node.js, Go, and Ruby, evolving into a more general-purpose web application profiler. A key focus has been on integrating profiling into <i>CI/CD workflows</i>, enabling 'continuous profiling' and automated performance testing. This shift allowed developers to proactively identify and fix performance issues before they reached production, moving beyond reactive post-deployment monitoring.


title: SYNOPSIS
content:
<b>blahaj</b> [<I>OPTIONS</I>]<br><b>blahaj</b> -m <I>MESSAGE_TYPE</I><br><b>blahaj</b> -a <I>ART_STYLE</I>


title: PARAMETERS
content:
<b>-m, --message-type <TYPE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the type of comforting message to display. Possible types include <I>motivational</I>, <I>calm</I>, or <I>silly</I>.<br><br><b>-a, --art-style <STYLE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Choose the ASCII art style for the shark or other comforting imagery. Options might include <I>simple</I>, <I>detailed</I>, or <I>none</I>.<br><br><b>-c, --color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable colorful output, potentially integrating with tools like <I>lolcat</I> for vibrant text and art.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message with command usage and options, then exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information for the <b>blahaj</b> command and exit.<br><br>


title: DESCRIPTION
content:
The <b>blahaj</b> command is a conceptual, non-standard Linux utility designed to bring a touch of comfort and positivity to your terminal experience. While not part of official distributions, if it existed, <i>blahaj</i> would serve as a digital companion, offering soothing messages, positive affirmations, or delightful ASCII art. Inspired by the popular IKEA plush shark, the command aims to reduce stress and foster a more welcoming environment within the command line. It would be particularly useful for users needing a quick mental break or a dose of digital cheer during intense work sessions. Imagine a gentle reminder to take a break, or a cute shark swimming across your screen, bringing a smile to your face. Its simplicity would be its strength, focusing purely on user well-being.


title: CAVEATS
content:
It is crucial to note that <b>blahaj</b> is <i>not</i> a standard, pre-installed Linux command. This description is based on a hypothetical concept, drawing inspiration from the Internet meme culture surrounding the IKEA Blåhaj shark. Users will not find it in typical package repositories and would need to develop or install a custom script to replicate its described functionality.


title: EMBRACING WHOLESOMENESS
content:
The hypothetical <i>blahaj</i> command champions the integration of lightheartedness and emotional support into the technical landscape of Linux. It signifies a move towards user-centric design that considers well-being alongside functionality, even in a playful, non-serious context.


title: HISTORY
content:
The concept of a 'blahaj' Linux command stems entirely from the widespread Internet phenomenon and meme culture surrounding the IKEA Blåhaj (Swedish for 'blue shark') plush toy. Gaining significant popularity in the early 2020s, Blåhaj became an icon of comfort, inclusivity, and internet wholesomeness. While no official command exists, the idea of a 'blahaj' utility on Linux is a playful extension of this cultural trend, imagining a software counterpart that embodies the same comforting and positive attributes in the often-text-heavy and utilitarian Linux terminal environment.


title: SYNOPSIS
content:
<b>blastn</b> [<i>OPTIONS</i>] <b>-query</b> <<i>query_file</i>> <b>-db</b> <<i>database_name</i>> [<b>-out</b> <<i>output_file</i>>]


title: PARAMETERS
content:
<b><b>-query</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the input query nucleotide sequence(s) file in FASTA format.<br><br><b><b>-db</b> <<i>name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name or path of the BLAST nucleotide database to search against. This database must be pre-formatted using <b>makeblastdb</b>.<br><br><b><b>-out</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the output file where results will be written. If not specified, results go to standard output.<br><br><b><b>-outfmt</b> <<i>format</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Common values include 0 (pairwise), 6 (tabular, often preferred for parsing), and 7 (tabular with comments).<br><br><b><b>-evalue</b> <<i>float</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Expectation value (E-value) cutoff for reporting matches. Lower values indicate higher statistical significance.<br><br><b><b>-max_target_seqs</b> <<i>int</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximum number of aligned sequences to keep for each query.<br><br><b><b>-num_threads</b> <<i>int</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of threads (CPU cores) to use for parallel execution, speeding up searches on multi-core systems.<br><br><b><b>-task</b> <<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a particular BLAST algorithm task. Examples include 'blastn' (default), 'megablast' (optimized for highly similar sequences), and 'dc-megablast'.<br><br><b><b>-strand</b> <<i>string</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for matches on the 'plus' (forward), 'minus' (reverse complement), or 'both' strands of the query sequence.<br><br><b><b>-perc_identity</b> <<i>float</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Minimum percentage of identical matches for an alignment to be reported (e.g., 90.0 for 90% identity).<br><br><b><b>-word_size</b> <<i>int</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the initial word (seed) for seeding alignments. Larger words are faster but less sensitive. Default is 11 for <b>blastn</b>, 28 for <b>megablast</b>.<br><br>


title: DESCRIPTION
content:
The <b>blastn</b> command is a fundamental tool within the NCBI BLAST+ suite, designed for performing <i>nucleotide-nucleotide</i> basic local alignment searches. It efficiently compares a query nucleotide sequence (or multiple sequences) against a pre-formatted nucleotide sequence database. The primary goal is to identify regions of local similarity, which often indicate functional, structural, or evolutionary relationships between sequences.<br><br><b>blastn</b> utilizes a heuristic algorithm to achieve high search speed, making it suitable for searching large databases. While it sacrifices some sensitivity compared to optimal alignment algorithms, it provides a practical balance for genomic-scale analysis. Biologists and bioinformaticians widely use <b>blastn</b> for tasks such as gene discovery, identifying homologous sequences, primer design, validating sequencing reads, and phylogenetic analysis. The output typically includes alignment scores, E-values (expected number of random matches), percent identity, and graphical representations, enabling comprehensive interpretation of similarity.


title: CAVEATS
content:
Due to its heuristic nature, <b>blastn</b> is not guaranteed to find all possible optimal alignments, especially for very divergent sequences. A pre-formatted database created with <b>makeblastdb</b> is essential before running <b>blastn</b>. Large queries or databases can be resource-intensive, requiring significant CPU and memory. The interpretation of E-values and understanding of output formats are crucial for meaningful results.


title: BLAST DATABASES
content:
Before running <b>blastn</b>, you must prepare your target sequences into a BLAST database using the <b>makeblastdb</b> command. This process indexes the sequences, allowing <b>blastn</b> to search them efficiently. Without a properly formatted database, <b>blastn</b> cannot execute a search.


title: E-VALUE SIGNIFICANCE
content:
The E-value (Expectation value) is a critical statistical measure in BLAST results. It represents the number of hits one can 'expect' to see by chance when searching a database of a particular size. A lower E-value indicates a more statistically significant match, meaning it's less likely to have occurred randomly. Common cutoffs are 1e-5 or 1e-10 for significant biological relationships.


title: OUTPUT FORMATS
content:
Choosing the correct output format (via <b>-outfmt</b>) is vital for how you intend to use the results. Format 0 (pairwise) is human-readable, showing detailed alignments. Format 6 (tabular) is highly recommended for programmatic parsing, as it outputs results in a clean, tab-separated table, making it easy to integrate into scripts and data analysis workflows.


title: HISTORY
content:
The original BLAST algorithm, upon which <b>blastn</b> is based, was first published by Stephen F. Altschul and colleagues in 1990. Developed at the National Center for Biotechnology Information (NCBI), it quickly became a cornerstone tool in bioinformatics. The current command-line utility, part of the BLAST+ suite, represents a significant rewrite in C++ from the original C toolkit, released around 2009. This iteration brought improved performance, multi-threading capabilities, and a more modular design, solidifying <b>blastn</b>'s role as the go-to tool for rapid nucleotide sequence comparison.


title: SYNOPSIS
content:
<b>blastp</b> -query <i>&lt;input_query_file&gt;</i> -db <i>&lt;database_name&gt;</i> [<i>options</i>]<br>Example: <b>blastp</b> -query my_protein.fasta -db nr -out results.txt -evalue 0.001 -num_threads 8


title: PARAMETERS
content:
<b><b>-query</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the input protein query sequence(s) in FASTA format.<br><br><b><b>-db</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the protein database to search against. This database must be pre-formatted using <b>makeblastdb</b>.<br><br><b><b>-out</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path for the output file. If not specified, output goes to standard output.<br><br><b><b>-evalue</b> <i>&lt;float&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Expectation value (E-value) threshold. Alignments with E-values higher than this threshold are not reported. Lower values mean stricter significance.<br><br><b><b>-outfmt</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format. Common options include: 0 (Pairwise), 5 (XML), 6 (Tabular with comment lines), 7 (Tabular with headers), 10 (CSV), 11 (Blast archive). Custom formats can be specified using format specifiers.<br><br><b><b>-num_threads</b> <i>&lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of CPU threads to use for the search, speeding up execution on multi-core systems.<br><br><b><b>-max_target_seqs</b> <i>&lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximum number of aligned sequences to keep and report for each query.<br><br><b><b>-remote</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the search on a remote NCBI server instead of locally. Requires internet connection.<br><br><b><b>-matrix</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scoring matrix to use (e.g., BLOSUM62, BLOSUM45, PAM30). Default is BLOSUM62.<br><br><b><b>-word_size</b> <i>&lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the initial word match (seed length). Larger values increase speed but decrease sensitivity.<br><br>


title: DESCRIPTION
content:
<b>blastp</b> is a fundamental bioinformatics command-line tool from the NCBI BLAST (Basic Local Alignment Search Tool) suite. Its primary function is to compare a protein query sequence or sequences against a protein sequence database to identify regions of local similarity. This similarity search helps in inferring functional and evolutionary relationships between sequences. It works by finding short matches between sequences and then extending these matches into longer alignments, statistically evaluating their significance. <b>blastp</b> is widely used for protein annotation, homolog detection, and comparative genomics studies, providing crucial insights into protein function and evolution.


title: CAVEATS
content:
<b>blastp</b> requires a pre-built BLAST database (created with <b>makeblastdb</b>) to run locally.<br>For large query sets or databases, searches can be computationally intensive and time-consuming.<br>Interpreting results requires understanding statistical metrics like E-value and bit score.<br>The accuracy of results depends on the quality and currency of the database used.<br>Different scoring matrices (<b>-matrix</b>) and E-value thresholds (<b>-evalue</b>) can significantly impact search sensitivity and specificity.


title: UNDERSTANDING E-VALUE AND BIT SCORE
content:
The <i>E-value</i> (Expectation value) indicates the number of hits one can expect to see by chance when searching a database of a particular size. A lower E-value means a more significant match. The <i>Bit score</i> provides a measure of sequence similarity independent of database size and is based on the alignment's raw score, normalized by the scoring system.


title: BLAST DATABASES
content:
To perform a local <b>blastp</b> search, a target protein sequence database must first be created using the <b>makeblastdb</b> utility. This typically involves converting a FASTA file containing protein sequences into a set of indexed files that <b>blastp</b> can efficiently search. Common public databases include NCBI's <i>nr</i> (non-redundant protein sequences).


title: HISTORY
content:
The BLAST algorithm was first described by Stephen Altschul, Warren Gish, Webb Miller, Eugene Myers, and David Lipman in 1990. <b>blastp</b> is a core component of the NCBI BLAST suite, which has undergone continuous development and improvements over decades, including the development of BLAST+ (BLAST executables rewritten in C++ for better performance and flexibility). Its widespread adoption has made it an indispensable tool in genomics and proteomics research.


title: SYNOPSIS
content:
<b>bleachbit</b> [<I>OPTIONS</I>] [<I>CLEANER_OPTIONS</I>...]<br><br>Examples:<br>  <b>bleachbit</b> --<I>list-cleaners</I><br>  <b>bleachbit</b> --<I>preview</I> <I>firefox.cache system.tmp</I><br>  <b>bleachbit</b> --<I>clean</I> <I>firefox.cache system.tmp</I><br>  <b>bleachbit</b> --<I>delete</I> --<I>preset</I>


title: PARAMETERS
content:
<b>--<I>clean</I> <I>CLEANER</I> [<I>CLEANER</I>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified cleaning operations. <I>CLEANER</I> refers to specific cleaning options like <I>firefox.cache</I> or <I>system.tmp</I>.<br><br><b>--<I>list-cleaners</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a list of all available cleaning options, categorized by application.<br><br><b>--<I>preview</I> [<I>CLEANER</I>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show files that would be deleted without actually performing the deletion. Essential for reviewing before cleaning.<br><br><b>--<I>delete</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the deletion. This option is typically used in conjunction with `--<I>clean</I>` or `--<I>preset</I>`.<br><br><b>--<I>preset</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the predefined set of cleaning options, which can be configured within the GUI or via configuration files.<br><br><b>--<I>wipe-free-space</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Securely wipe the free disk space on selected partitions, making previously deleted data unrecoverable. This can be time-consuming.<br><br><b>--<I>overwrite</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When cleaning, overwrite the files with random data before deleting, further preventing recovery.<br><br><b>--<I>shred</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shred files and directories to prevent recovery. This is applied to individual files specified as arguments or by certain cleaners.<br><br><b>--<I>shred-sqlitedb</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shred SQLite databases (e.g., browser histories, cookies) to securely remove sensitive data.<br><br><b>--<I>vacuum</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Vacuum SQLite databases to rebuild them, reclaiming unused space and potentially improving performance.<br><br><b>-v, --<I>version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information of <I>BleachBit</I>.<br><br><b>-h, --<I>help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a comprehensive help message with all available options.<br><br>


title: DESCRIPTION
content:
<b>BleachBit</b> is a free and open-source system cleaner designed to free up disk space and protect your privacy on Linux systems. It effectively identifies and removes various types of unnecessary files, including web browser caches, cookies, history, temporary files, broken shortcuts, and system log files.<br><br>The command-line interface (CLI) of <b>bleachbit</b> allows for powerful automation and scripting, making it ideal for scheduled cleanups or server environments where a graphical interface is not available. Beyond basic file deletion, <b>bleachbit</b> offers advanced privacy features such as shredding files to prevent data recovery and wiping free disk space to erase remnants of previously deleted files. It supports a wide array of applications, from popular web browsers (like Firefox and Chrome) to system components and various desktop applications. Users are strongly encouraged to use the `--<I>preview</I>` option before committing to a deletion, minimizing the risk of accidental data loss. Its primary goal is to provide a robust solution for maintaining system hygiene and enhancing digital privacy by efficiently removing digital clutter.


title: CAVEATS
content:
<b><I>Use with extreme caution!</I></b> <b>BleachBit</b> can permanently delete important files if not used carefully. Always use the `--<I>preview</I>` option before performing any deletion, especially when dealing with system-wide cleaners. Deleting critical system files or necessary application data can lead to system instability, application malfunctions, or even prevent your operating system from booting. Wiping free space or shredding large files can be a very time-consuming operation, depending on disk size and speed. It is primarily a data deletion tool, not a full security suite for malware removal or network protection.


title: <B>CLEANERS AND CATEGORIES</B>
content:
The command-line interface of <b>bleachbit</b> allows you to specify 'cleaners' in the format <i>category.option</i>, for example, <i>system.tmp</i> for temporary system files or <i>firefox.cache</i> for Firefox's cache. You can use `--<I>list-cleaners</I>` to see all available options specific to your installed applications.


title: <B>GUI VS. CLI</B>
content:
<b>BleachBit</b> offers both a graphical user interface (GUI) for ease of use and a command-line interface (CLI) for scripting and automation. While the GUI provides visual feedback and simpler navigation, the CLI is powerful for batch operations and integration into larger scripts.


title: HISTORY
content:
Developed by Andrew Ziem and first released in 2008, <b>BleachBit</b> was conceived as a privacy-focused system cleaner, often cited as an open-source alternative to proprietary tools like CCleaner for Windows. While initially featuring a strong graphical user interface (GUI), its command-line interface (CLI) was developed to enable scripting and automation for server environments and advanced users. The tool gained significant public attention and usage in political contexts for its ability to securely wipe sensitive data.


title: PARAMETERS
content:
<b><b>-o</b> <i>FILE</i>, <b>--output</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file path for collected build data.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the collected data in JSON format.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase verbosity of <i>blight</i>'s own messages.<br><br><b><b>--trace-exec</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable tracing of <i>execve</i> (program execution) system calls.<br><br><b><b>--trace-open</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable tracing of <i>open</i> (file access) system calls.<br><br><b><b>--trace-stat</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable tracing of <i>stat</i> (file metadata) system calls.<br><br><b><b>--all-syscalls</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Trace all supported system calls (default behavior).<br><br><b><b>--only-exec</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only trace <i>execve</i> system calls, disabling others.<br><br><b><b>--ignore-exec</b> <i>PATTERN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not trace executions matching the given pattern.<br><br><b><b>--ignore-open</b> <i>PATTERN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not trace file opens matching the given pattern.<br><br><b><b>--ignore-stat</b> <i>PATTERN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not trace file stats matching the given pattern.<br><br><b><b>--config</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load configuration from the specified file.<br><br><b><b>--no-default-config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent loading of default configuration files.<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>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>--</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Separator that indicates all subsequent arguments belong to the <i>COMMAND</i> being instrumented.<br><br>


title: DESCRIPTION
content:
<i>blight</i> is a powerful Linux command-line tool designed for comprehensive analysis and instrumentation of software build processes. It acts as a wrapper around existing build commands (e.g., <i>make</i>, <i>cmake</i>), intercepting system calls such as <i>execve</i>, <i>open</i>, and <i>stat</i> to meticulously record all file accesses, command executions, and inter-process communications that occur during a build. This detailed logging provides invaluable insights into a project's build graph, exact dependencies, and potential inefficiencies. The collected data can be used for various purposes, including optimizing build times, ensuring build reproducibility, identifying redundant operations, or enhancing software supply chain security by understanding exactly what resources are touched during compilation and linking. Its primary goal is to provide a granular view into the "black box" of complex software builds, transforming implicit behaviors into explicit, analyzable data.


title: CAVEATS
content:
<i>blight</i> relies on system call interposition (e.g., using <i>ptrace</i> or <i>LD_PRELOAD</i>), which can introduce performance overhead to the build process. It may also encounter compatibility issues with certain sandboxing environments, container runtimes, or highly optimized build configurations. It's primarily designed for tracing build processes and might not be suitable for general-purpose system call tracing.


title: USAGE MODEL
content:
<i>blight</i> is typically invoked by prefixing your standard build command. For example, to trace a <i>make</i> build, you would run <br><code>blight -- make all</code>.<br>The collected data, often in JSON format, can then be processed by other tools for visualization, analysis, or dependency graph generation.


title: HISTORY
content:
Developed by the <i>blight-build</i> organization, <i>blight</i> emerged to address the growing need for deeper introspection into complex software build systems. Its development focuses on providing a robust, cross-platform solution for capturing granular build data, which is crucial for modern software development practices like supply chain security, build reproducibility initiatives, and build performance optimization. It leverages OS-specific mechanisms (like <i>ptrace</i> on Linux or library interposition) to achieve its tracing capabilities.


title: PARAMETERS
content:
<b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the block device (e.g., /dev/sda1, /dev/nvme0n1, /dev/sdb).<br><br><b>-o, --offset <i>bytes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the starting offset in bytes from the beginning of the device where discarding should begin. The default is 0.<br><br><b>-l, --length <i>bytes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of bytes to discard. By default, the entire device or the remaining part from the specified offset is discarded.<br><br><b>-s, --secure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a secure discard, if supported by the device. This aims for a more thorough erasure, attempting to ensure data is irreversibly destroyed according to device specifications. Not all devices support this level of security.<br><br><b>-z, --zeroout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;After discarding, zero out the blocks. This option is only effective if the device supports RZAT (Return Zero After Trim) or similar capabilities, meaning the device guarantees to return zeros on subsequent reads of discarded blocks.<br><br><b>-p, --pb-size <i>bytes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the physical block size of the device in bytes. This can be used to ensure alignment with the device's internal block structure for optimal performance. The default is usually determined automatically by the kernel.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the discard operation even if the device is mounted. <b>Use with extreme caution</b> as this can severely corrupt the filesystem and lead to irreversible data loss.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress any output messages except for errors.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display more detailed output during the operation.<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:
The <b>blkdiscard</b> command is a utility used to discard (or TRIM/UNMAP) specified block ranges on a block device. This operation informs the underlying storage device (such as an SSD, eMMC, or thin-provisioned LUN) that these data blocks are no longer in use by the operating system and can be internally reclaimed. This is crucial for maintaining the performance and longevity of SSDs by allowing wear leveling and garbage collection, and for efficient space management in thin-provisioned storage. Unlike commands like <i>dd</i> or <i>shred</i> which overwrite data, <b>blkdiscard</b> does not write any data to the device; instead, it sends a command to the device controller indicating that the specified block ranges are free. This makes it a much faster operation for mass 'erasure' on compatible hardware. It is typically used on unmounted partitions or entire disks. For discarding free space on *mounted* filesystems, <i>fstrim(8)</i> is the appropriate command.


title: CAVEATS
content:
<b><br>Extreme Data Loss:</b> <b>blkdiscard</b> permanently discards data. Once blocks are discarded, the data they contained is typically unrecoverable. Use this command with the utmost care and always double-check the target device.<br><br><b>Mounted Devices:</b> Never use <b>blkdiscard</b> on a mounted filesystem unless you fully understand the severe risk of filesystem corruption and irreversible data loss. The <i>-f</i> (force) option can override this safety mechanism, but it is highly discouraged for active filesystems. For discarding free space on *mounted* filesystems, the dedicated utility <i>fstrim(8)</i> is the correct and safe choice.<br><br><b>Device Support:</b> <b>blkdiscard</b> relies on the underlying storage device supporting TRIM/UNMAP commands. If the device does not support this functionality, the command will either fail, appear to succeed but have no effect on internal data reclamation, or potentially return an error.<br><br><b>Secure Discard:</b> The effectiveness of the <i>--secure</i> option depends entirely on the device's implementation and how it interprets the secure erase command. There is no universal guarantee of cryptographic erasure. For highly sensitive data, physical destruction or certified data sanitization methods might be necessary for absolute assurance.


title: HISTORY
content:
The <b>blkdiscard</b> command is part of the <i>util-linux</i> project, a collection of essential utilities for Linux systems. It was introduced to provide a direct and low-level mechanism for managing block discards, which became increasingly important with the widespread adoption of Solid State Drives (SSDs) and thin-provisioned storage solutions. It leverages the Linux kernel's BLKDISCARD ioctl, allowing userspace applications to explicitly send discard (TRIM/UNMAP) commands to block devices. Its development reflects the need for tools that can efficiently interact with modern storage hardware capabilities.


title: SYNOPSIS
content:
<b>blkid</b> [<i>options</i>] [<i>device...</i>]<br><b>blkid</b> <i>-L</i> <i>&lt;label&gt;</i><br><b>blkid</b> <i>-U</i> <i>&lt;uuid&gt;</i><br><b>blkid</b> <i>-p</i> <i>&lt;device&gt;</i>


title: PARAMETERS
content:
<b>-c <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative cache file to use. The default is usually <i>/etc/blkid.tab</i> or <i>/run/blkid/blkid.tab</i>.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all devices (default is to skip devices that don't have filesystems or partitions).<br><br><b>-g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a garbage collection on the <i>libblkid</i> cache. This removes entries for non-existent devices.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-k</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all known filesystem types and their internal signatures that <i>libblkid</i> recognizes.<br><br><b>-L <label></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Look up a device by its filesystem label. This is a common way to find a device without knowing its UUID or path.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List only devices that are labeled or have a UUID.<br><br><b>-M</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display information about supported metadata types. Useful for debugging <i>libblkid</i>.<br><br><b>-o <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format. Common formats include 'full' (default), 'value' (only attribute values), 'device' (only device names), 'export' (shell export format), or 'udev'.<br><br><b>-p <device></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Probe a specific device directly, ignoring the cache. This ensures the most current information but can be slower.<br><br><b>-s <tag></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only the specified tag (e.g., 'UUID', 'LABEL', 'TYPE'). Can be specified multiple times.<br><br><b>-t <tag=value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for devices with a specific tag and value pair (e.g., 'TYPE=ext4').<br><br><b>-U <uuid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Look up a device by its filesystem UUID. This is the most reliable way to find a device.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>-w <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the current <i>libblkid</i> cache to the specified file.<br><br><b>-x <tag></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude the specified tag from the output. Can be specified multiple times.<br><br><b>-z</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't use the cache and don't write to the cache. Similar to <i>-p</i> for all devices, but does not update the cache.<br><br>


title: DESCRIPTION
content:
The <b>blkid</b> command is a utility used to identify and print the attributes (such as UUID, LABEL, TYPE, PARTUUID, PARTLABEL, etc.) of block devices. It is primarily used for scripting, configuration, and debugging tasks related to filesystems and partitions. <b>blkid</b> can retrieve information from the <i>libblkid</i> cache (which is faster) or by directly probing the block devices (which ensures up-to-date information but can be slower).<br><br>The unique identifiers provided by <b>blkid</b>, especially UUIDs (Universally Unique Identifiers) and PARTUUIDs (Partition UUIDs), are crucial for persistent device naming. This is vital in contexts like <i>/etc/fstab</i>, where devices need to be referenced reliably regardless of their dynamic kernel-assigned names (e.g., /dev/sda1, /dev/nvme0n1p1) which can change between reboots or hotplugging events. By using these identifiers, system configurations remain robust and consistent, ensuring that the correct filesystems are mounted every time.


title: CAVEATS
content:
Root privileges are often required to probe block devices directly, especially for devices that are not publicly accessible or for updating the <i>libblkid</i> cache. If <b>blkid</b> is run without root privileges, it might only be able to display information from the cached data, which could be stale. Direct probing (`-p` option) or ignoring the cache (`-z` option) can ensure accuracy but may take longer.


title: CACHE MANAGEMENT
content:
<b>blkid</b> primarily relies on a cache file (usually <i>/etc/blkid.tab</i> or <i>/run/blkid/blkid.tab</i>) to quickly retrieve device information. This cache is built by probing devices at boot or when the system detects changes. While faster, it can become outdated if devices are added/removed without proper system updates. The <i>-p</i> (probe) and <i>-z</i> (no cache) options are available to bypass or ignore this cache, ensuring the most current device attributes are reported.


title: PERSISTENT NAMING
content:
One of <b>blkid</b>'s most significant contributions is facilitating 'persistent naming' of block devices. Instead of relying on volatile device names like <i>/dev/sda1</i> (which can change if hardware is reordered), UUIDs and labels provide stable, unique identifiers. This is vital for configuring <i>/etc/fstab</i>, which ensures that the correct filesystems are always mounted to their designated mount points, regardless of how the kernel enumerates the devices.


title: HISTORY
content:
<b>blkid</b> is part of the <i>util-linux</i> project, a collection of essential utilities for Linux. It emerged as a more robust and programmatic way to identify block devices compared to earlier, less reliable methods that often depended on device path (e.g., <i>/dev/sda1</i>). Its development was crucial for systems that use UUIDs and labels for persistent device naming, becoming a cornerstone for modern Linux filesystem management and ensuring system stability across reboots and hardware changes. It provides the underlying functionality for utilities like <i>mount</i> and system configurations like <i>/etc/fstab</i> to reliably locate filesystems.


title: SYNOPSIS
content:
<b><code>blkpr</code></b> [<i>options</i>] [<i>arguments</i>]<br><br><i>Note: This command is not standard; its syntax is hypothetical.</i>


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specific parameters for <b><code>blkpr</code></b> are not documented as it is not a standard Linux command. It is highly likely this command does not exist in standard distributions.<br><br>


title: DESCRIPTION
content:
The command <b><code>blkpr</code></b> is not a standard or commonly recognized utility found in mainstream Linux distributions or core command-line toolsets. Information regarding a standalone <b><code>blkpr</code></b> command is exceedingly scarce, suggesting it might be a very niche, experimental, or deprecated tool, or possibly a typo for other commands like <b><code>blkparse</code></b> (for analyzing block I/O traces) or <b><code>blockdev</code></b> (for managing block device attributes).<br><br>If <b><code>blkpr</code></b> ever existed, it likely pertained to operations or diagnostics related to block devices, possibly for 'printing' or 'profiling' block device properties or performance. However, without specific context or a package where it's distributed, its functionality remains unconfirmed for general use. Users encountering references to <b><code>blkpr</code></b> should verify the source or consider if another, more common command was intended.


title: CAVEATS
content:
<b><code>blkpr</code></b> is not a standard or widely available Linux command. Attempting to execute it on a typical system will likely result in a 'command not found' error. Any documentation found online for <b><code>blkpr</code></b> should be scrutinized for its relevance to current systems or its origin. It's often confused with <b><code>blkparse</code></b> or <b><code>blockdev</code></b>.


title: HISTORY
content:
Due to the non-standard nature of <b><code>blkpr</code></b>, there is no publicly documented history of its development or widespread usage within the Linux ecosystem. If it ever existed as a functional utility, it was likely part of a very specific, perhaps experimental, kernel development branch, a custom-built tool, or an internal diagnostic script that never became a mainstream user-facing command.


title: SYNOPSIS
content:
<b>blockdev</b> <I>[options]</I> <I><device></I><br><br><b><I>Examples:</I></b><br><b>blockdev</b> <b>--getsize64</b> <I>/dev/sda</I><br><b>blockdev</b> <b>--setra</b> 2048 <I>/dev/sdb1</I>


title: PARAMETERS
content:
<b><b>--getbsz</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the block device logical block size in bytes.<br><br><b><b>--setbsz</b> <I>&lt;BYTES&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the block device logical block size to <I>BYTES</I>.<br><br><b><b>--getpbsz</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the physical block size in bytes.<br><br><b><b>--getss</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the logical sector size in bytes (usually 512 or 4096).<br><br><b><b>--getsize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the device size in 512-byte sectors.<br><br><b><b>--getsize64</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the device size in bytes (64-bit value).<br><br><b><b>--getra</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the current read-ahead value in 512-byte sectors.<br><br><b><b>--setra</b> <I>&lt;SECTORS&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the read-ahead value to <I>SECTORS</I> (in 512-byte units).<br><br><b><b>--getfra</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the current file system read-ahead value.<br><br><b><b>--setfra</b> <I>&lt;SECTORS&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the file system read-ahead value.<br><br><b><b>--getiocount</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the I/O operation count.<br><br><b><b>--setiocount</b> <I>&lt;COUNT&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the I/O operation count to <I>COUNT</I>.<br><br><b><b>--flushbufs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Flush all dirty buffers to disk (write cached data).<br><br><b><b>--rereadpt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the kernel to reread the partition table.<br><br><b><b>--partscan</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scan device for new partitions (often used after creating or deleting partitions).<br><br><b><b>--getro</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the read-only status (1 if read-only, 0 if read-write).<br><br><b><b>--setro</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the device to read-only mode.<br><br><b><b>--setrw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the device to read-write mode.<br><br><b><b>--getdiscard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get discard (TRIM/UNMAP) support status (1 if supported, 0 if not).<br><br><b><b>--getalignoff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the alignment offset in bytes.<br><br><b><b>--getmaxsect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the maximum sectors per request.<br><br><b><b>--getblkioopt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the I/O scheduler's optimal I/O size.<br><br><b><b>--getblkiobug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the I/O scheduler's granularity.<br><br><b><b>--getdiscardzeroes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the discard_zeroes_data value.<br><br><b><b>--getzoned</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get the zoned block device type.<br><br><b><b>--setmq</b> <I>&lt;QUEUE_DEPTH&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set multi-queue depth.<br><br><b><b>--getmq</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Get multi-queue depth.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress output messages.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<b>blockdev</b> is a command-line utility used to manage and manipulate various attributes of block devices, such as hard drives, SSDs, and USB drives. It provides a way to query and set parameters related to a device's physical and logical characteristics, I/O performance, and behavior.<br><br>Common uses include retrieving device size, block sizes, and read-ahead settings, as well as operations like flushing write buffers, rereading partition tables, and changing read-only status. This tool is often employed by system administrators or scripts requiring low-level interaction with storage devices to optimize performance or ensure data integrity. It directly interacts with the kernel's block layer via <b>ioctl</b> system calls, making it a powerful but potentially risky tool if used incorrectly.


title: CAVEATS
content:
Most operations that modify device parameters or perform privileged actions (e.g., flushing buffers, rereading partition tables) require <b>root privileges</b>.<br><br>Incorrect usage, especially when setting parameters like block sizes or read-ahead, can potentially lead to <b>performance degradation</b> or even <b>data corruption</b>.<br><br>Changes made by <b>blockdev</b> are often <b>temporary</b> and may not persist across reboots, especially for system-managed parameters, unless explicitly configured in system-wide configuration files (e.g., udev rules or init scripts).


title: <I>KERNEL INTERACTION</I>
content:
<b>blockdev</b> primarily interacts with the Linux kernel through the <b>ioctl()</b> system call on the specified device file (e.g., <I>/dev/sda</I>). This allows it to directly query and modify parameters managed by the kernel's block layer and device drivers, offering fine-grained control over storage devices.


title: <I>DEVICE FILES</I>
content:
The command operates on block device files, which are special files typically found in the <I>/dev/</I> directory (e.g., <I>/dev/sda</I>, <I>/dev/nvme0n1</I>, <I>/dev/dm-0</I>). It is crucial to specify the correct device path to avoid unintended operations on other devices.


title: HISTORY
content:
The <b>blockdev</b> command is part of the <b>util-linux</b> project, a collection of essential Linux utilities. Its core functionality, providing a user-space interface to various <b>ioctl</b> commands for interacting directly with block device drivers, has been a fundamental aspect of Linux kernel's block layer management for a long time. While not always used interactively by end-users, it remains a critical low-level tool for system administrators and in scripting for managing storage devices and their properties within the Linux ecosystem.


title: DESCRIPTION
content:
The command '<I>blockout2</I>' does not appear to be a standard Linux command or a widely documented utility. Searches for '<I>blockout2</I>' in common Linux man pages, command databases, and online resources do not yield any results for a recognized command with this name. It is highly probable that '<I>blockout2</I>' refers to a custom script, a very specific niche application, or possibly a typo. Without further context or documentation, it is not possible to provide a detailed analysis of its syntax, parameters, or functionality as a standard Linux command.


title: CAVEATS
content:
As '<I>blockout2</I>' is not a recognized standard Linux command, attempting to execute it on a typical system will likely result in a 'command not found' error. If this command is part of a custom environment or a specific software package, its functionality and usage would be defined by that specific context and not generally applicable across Linux distributions.


title: COMMAND EXISTENCE
content:
This analysis is based on the premise that '<I>blockout2</I>' is a command. However, current research indicates it is not a part of standard Linux distributions or commonly known utilities. Users encountering this command should verify its source and purpose within their specific environment.


title: PARAMETERS
content:
<b><b>-d</b> <i>&lt;domain&gt;</i>, <b>--domain</b> <i>&lt;domain&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target Active Directory domain name (e.g., <i>example.com</i>).<br><br><b><b>-u</b> <i>&lt;username&gt;</i>, <b>--username</b> <i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the username for authentication (e.g., <i>user@domain.com</i> or <i>DOMAIN\user</i>).<br><br><b><b>-p</b> <i>&lt;password&gt;</i>, <b>--password</b> <i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the password for the given username. If omitted, the user will be prompted for it.<br><br><b><b>--hashes</b> <i>&lt;LM:NT&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides NTLM hashes for authentication instead of a password (e.g., <i>aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0</i>).<br><br><b><b>--aesKey</b> <i>&lt;key&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AES key for Kerberos authentication (Pass-the-Key).<br><br><b><b>--kerberos</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Kerberos authentication. Requires a Kerberos ticket (TGT) in the ccache.<br><br><b><b>--dc</b> <i>&lt;IP|hostname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a specific Domain Controller to connect to for data collection.<br><br><b><b>--dns-tcp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces DNS queries to use TCP instead of UDP, which can be useful in some network environments.<br><br><b><b>--collect</b> <i>&lt;method&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the type of data to collect. Common methods include <i>All</i>, <i>Acls</i>, <i>GroupMembers</i>, <i>Sessions</i>, <i>Trusts</i>, <i>Certificates</i>, <i>RDP</i>, <i>DCOM</i>, etc. Can be specified multiple times. Use <i>--help</i> for a full list of collection methods.<br><br><b><b>--zip</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compresses the output JSON files into a single ZIP archive, suitable for direct import into <i>BloodHound</i>.<br><br><b><b>--outputfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the base name for the output JSON or ZIP file.<br><br><b><b>--disable-ldaps-validation</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables LDAPS certificate validation. Use with caution, primarily for testing or in environments with self-signed certificates.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output for troubleshooting.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version number and exits.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br>


title: DESCRIPTION
content:
<i>bloodhound-python</i> is a robust, Python-based ingestor designed to collect comprehensive data from Microsoft Active Directory (AD) environments. It serves as a vital component of the <i>BloodHound</i> ecosystem, a powerful graphical analysis tool used to visualize and identify complex attack paths, privilege escalation opportunities, and misconfigurations within AD domains.<br><br>The script enumerates a wide array of Active Directory objects and their intricate relationships, including users, groups, computers, trusts, Group Policy Objects (GPOs), Access Control Lists (ACLs), and active user sessions. The collected data is meticulously formatted into industry-standard JSON files (often packaged as a ZIP archive of JSON files), which can then be seamlessly imported into the <i>BloodHound</i> GUI (backed by a Neo4j database).<br><br>By providing this granular data, <i>bloodhound-python</i> empowers security professionals, penetration testers, and red teamers to gain an unparalleled understanding of an organization's AD security posture. It supports diverse authentication methods, including username/password, NTLM hashes, and Kerberos (Pass-the-Ticket), and interacts with various AD services like LDAP, SMB, and DNS to ensure thorough data collection. It is widely adopted for its cross-platform compatibility and effectiveness in gathering critical information for advanced AD security assessments.


title: CAVEATS
content:
While highly effective, the use of <i>bloodhound-python</i> can generate network traffic and log entries that might be detected by security monitoring solutions. Collection on very large Active Directory environments can be time-consuming and resource-intensive, requiring sufficient network bandwidth and system resources. The accuracy and completeness of the collected data are directly dependent on the permissions of the Active Directory account used for execution. Users must ensure compliance with organizational policies and legal regulations when deploying and using this tool, as unauthorized data collection can have severe consequences.


title: <B>OUTPUT FORMAT</B>
content:
The command generates JSON files, typically compressed into a single ZIP archive using the <i>--zip</i> option. These files are directly importable into the <i>BloodHound</i> GUI, which then populates its Neo4j graph database for analysis.


title: <B>AUTHENTICATION FLEXIBILITY</B>
content:
<i>bloodhound-python</i> supports a variety of authentication methods, including traditional username/password, NTLM hashes (Pass-the-Hash), and Kerberos tickets (Pass-the-Ticket or AES keys). This flexibility allows it to be used effectively in diverse penetration testing and security assessment scenarios.


title: HISTORY
content:
<i>bloodhound-python</i> was originally developed by <i>fox-it</i> (now part of Deloitte) as a cross-platform Python-based ingestor for the <i>BloodHound</i> project. It emerged as a powerful alternative to the initial PowerShell-based data collection scripts, offering broader compatibility (especially for non-Windows operating systems) and often improved performance. Its development has closely tracked the evolution of the <i>BloodHound</i> analysis tool, continuously adding new collection methods and features to provide more comprehensive insights into Active Directory security. It is now maintained within the official <i>BloodHound</i> GitHub organization, solidifying its role as a primary data collection agent.


title: SYNOPSIS
content:
<b>bluebuild</b> <I>command</I> [<I>options</I>]<br><b>bluebuild build</b> [<I>directory</I>] [<I>options</I>]<br><b>bluebuild init</b> [<I>directory</I>]<br><b>bluebuild validate</b> [<I>directory</I>]


title: PARAMETERS
content:
<b><b>build</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates the image building process based on the <code>bluebuild.yaml</code> file found in the specified or current directory.<br><br><b><b>init</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new <b>bluebuild</b> project directory with a sample <code>bluebuild.yaml</code> configuration, providing a starting point for custom images.<br><br><b><b>validate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks the syntax and validity of the <code>bluebuild.yaml</code> configuration file without performing a full image build.<br><br><b><code>--debug</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug logging, providing more detailed output for troubleshooting during command execution.<br><br><b><code>--git-ref</code> <I>TEXT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>OSTree</i> reference (e.g., <code>fedora/39/x86_64/kinoite</code>) for the base image that <b>bluebuild</b> will use to layer on top of.<br><br><b><code>--tag</code> <I>TEXT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a specific tag to the built container image (e.g., <code>ublue-os/kinoite-main:latest</code>) for easier identification and deployment.<br><br><b><code>--push</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <b>bluebuild</b> to push the successfully built container image to a configured container registry (e.g., Docker Hub, Quay.io).<br><br><b><code>--sign</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Digitally signs the built container image, providing integrity and authenticity verification.<br><br><b><code>--source-date</code> <I>YYYY-MM-DD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the source date for reproducible builds, aiming to ensure that the same inputs always produce identical image outputs.<br><br><b><code>--cache-dir</code> <I>DIRECTORY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory for caching build artifacts, which can significantly speed up subsequent builds by reusing previously downloaded components.<br><br><b><code>--temp-dir</code> <I>DIRECTORY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory for temporary files generated during the build process, useful for managing disk space.<br><br>


title: DESCRIPTION
content:
<b>bluebuild</b> is a command-line tool designed to simplify the creation of custom Fedora <i>rpm-ostree</i> images, such as those used by Fedora Silverblue, Kinoite, and IoT. It allows users to declaratively define their desired image configuration&mdash;including layered packages, custom services, and filesystem modifications&mdash;within a <code>bluebuild.yaml</code> file.<br><br>By abstracting the complexities of <i>rpm-ostree</i> commands and container image building, <b>bluebuild</b> enables reproducible and maintainable custom operating system images. It is a core component of the Universal Blue (UBlue) project, aiming to make immutable desktop Linux more accessible and customizable. <b>bluebuild</b> leverages containerization (e.g., Podman) to build the image layers and applies them to an <i>rpm-ostree</i> base, resulting in a ready-to-deploy <i>ostree</i> commit.


title: CAVEATS
content:
<b>bluebuild</b> is a specialized tool primarily designed for building custom <i>rpm-ostree</i> images, such as those found in Fedora Silverblue, Kinoite, and IoT. It is not a general-purpose package manager or build system for traditional Linux distributions.<br><br>It requires a functional container runtime (like Podman or Docker) for its operations and depends heavily on the declarative configuration provided in the <code>bluebuild.yaml</code> file rather than extensive command-line options. Its primary audience is users and developers working within the immutable Linux ecosystem.


title: CONFIGURATION FILE (<CODE>BLUEBUILD.YAML</CODE>)
content:
<b>bluebuild</b> heavily relies on a YAML configuration file (typically named <code>bluebuild.yaml</code>) located in the project directory. This file is the primary interface for customizing the image build, defining elements such as the base image, layered RPM packages, <i>rpm-ostree</i> services, <i>systemd</i> units, <i>ujust</i> commands, and other filesystem modifications. It enables reproducible and version-controlled image configurations, acting as the blueprint for your custom OS.


title: REPRODUCIBILITY
content:
A key goal of <b>bluebuild</b> is to facilitate reproducible image builds. By leveraging features like <code>--source-date</code> and precise dependency management defined in the <code>bluebuild.yaml</code>, it aims to produce identical image outputs from the same inputs, contributing to more reliable and consistent image deployments across different environments. This ensures that a build created today will be the same as one created months later, given the same configuration.


title: HISTORY
content:
<b>bluebuild</b> emerged from the Universal Blue (UBlue) project, an initiative focused on making <i>rpm-ostree</i> based immutable operating systems more accessible and customizable for end-users. It was created to provide a simpler, declarative interface for building custom images, automating the complex steps involving <i>rpm-ostree</i> commands and container image management. Its development reflects the growing interest in immutable Linux desktops and the need for user-friendly tools to manage and personalize them.


title: PARAMETERS
content:
<b><i>CAPABILITY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input/output capabilities of the agent. This determines how the agent will handle PINs, passkeys, and confirmations for pairing.<br><br><b>DisplayOnly</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The agent can only display a PIN code or passkey, but cannot accept input from the user.<br><br><b>DisplayYesNo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The agent can display a PIN code or passkey and accept a 'yes' or 'no' confirmation from the user.<br><br><b>KeyboardOnly</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The agent can only accept a PIN code or passkey as input from the user, but cannot display anything.<br><br><b>NoInputNoOutput</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The agent neither displays nor accepts input. This capability is typically used for automatic pairing where no user interaction is required (e.g., certain secure or embedded devices).<br><br><b>KeyboardDisplay</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The agent can both display a PIN code or passkey and accept input from the user.<br><br>


title: DESCRIPTION
content:
The <b>bluetooth-agent</b> command provides a mechanism for handling various Bluetooth pairing and authentication requests generated by the BlueZ daemon (<b>bluetoothd</b>). It acts as an intermediary, presenting information (like PIN codes or passkeys) to the user or accepting input (like confirmations or passkeys) from the user, facilitating the secure connection process between Bluetooth devices.<br><br>Typically, an agent is required when devices need to exchange security keys or confirm pairing. Without an active agent registered with <b>bluetoothd</b>, pairing processes that require user interaction will fail. The <b>bluetooth-agent</b> can be run in different modes (capabilities) depending on the input/output capabilities of the device it represents or the user interface it interacts with. While not a primary user-facing tool for initiating connections, it is an essential background component for completing interactive Bluetooth pairings.


title: CAVEATS
content:
The exact implementation and availability of a direct <b>bluetooth-agent</b> command can vary across Linux distributions. It often refers to an example agent script (such as <i>simple-agent</i>) provided by the BlueZ project, which might be located in a non-standard PATH (e.g., <i>/usr/lib/bluez/examples/simple-agent</i>). It requires the <b>bluetoothd</b> daemon to be running and typically needs appropriate permissions (often root or membership in the 'bluetooth' group) to interact with the D-Bus system. It usually runs in the foreground until terminated or unregistered, handling incoming requests.


title: INTEGRATION WITH BLUETOOTHCTL
content:
Users commonly interact with the agent functionality through the <b>bluetoothctl</b> command-line tool. After starting <b>bluetooth-agent</b> in a separate terminal with the desired capability, one can register it with <b>bluetoothctl</b> using commands like <i>agent on</i> and <i>default-agent</i>. This tells <b>bluetoothctl</b> and subsequently <b>bluetoothd</b> to use the running agent for handling authentication requests, ensuring that pairing prompts are properly managed.


title: HISTORY
content:
<b>bluetooth-agent</b> is intrinsically linked to the BlueZ project, which serves as the official Linux Bluetooth protocol stack. As Bluetooth technology evolved with new security features (e.g., Secure Simple Pairing in Bluetooth 2.1), the agent functionality became crucial for handling these more complex pairing methods that require user interaction. Its development has paralleled the continuous improvements and adherence to Bluetooth specifications within the BlueZ stack.


title: SYNOPSIS
content:
<b>bluetooth-sendto</b> <I>DEVICE_ADDRESS</I> <I>FILE1</I> [<I>FILE2</I>...]<br>Or: <b>bluetooth-sendto</b> (to launch GUI for device/file selection)


title: PARAMETERS
content:
<b><I>DEVICE_ADDRESS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Bluetooth MAC address of the target device (e.g., <I>00:11:22:33:44:55</I>). The device must be discoverable and typically paired with the host system.<br><br><b><I>FILE1</I> [<I>FILE2</I>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more paths to the files that should be sent to the target Bluetooth device.<br><br>


title: DESCRIPTION
content:
<b>bluetooth-sendto</b> is a command-line utility used to transfer files to a Bluetooth-enabled device. It leverages the Object Exchange (OBEX) Push profile to facilitate the transfer. When invoked with a target device's MAC address and one or more file paths, it attempts to establish a connection and push the specified files. If no target device or file is provided, it typically launches a graphical user interface (GUI) dialog to allow the user to select the destination device and files interactively.<br><br>This command is commonly part of desktop environment Bluetooth integration packages like <b>gnome-bluetooth</b>, providing a convenient and user-friendly way to share content with mobile phones, other computers, or Bluetooth-enabled accessories.


title: CAVEATS
content:
<ul><li>Requires a working Bluetooth adapter on the host system.</li><li>The target device must support the OBEX Push profile (common for smartphones but not all Bluetooth devices).</li><li>The target device should ideally be paired with the host system for a smooth transfer. Some devices might accept transfers from non-paired devices if explicitly allowed.</li><li>Error handling is often basic; issues like "device not found" or "transfer failed" might occur without detailed explanations.</li><li>This command is typically part of desktop environment utilities (e.g., <b>gnome-bluetooth</b>), and its exact behavior or available options might vary slightly between distributions or versions.</li></ul>


title: GUI INTEGRATION
content:
Many desktop environments integrate <b>bluetooth-sendto</b> into file managers (e.g., Nautilus for GNOME) as a "Send via Bluetooth" context menu option. This offers a seamless graphical experience for initiating file transfers without needing to use the command line directly.


title: DEPENDENCIES
content:
This command typically relies on underlying BlueZ services and libraries, which provide the core Bluetooth stack. Additionally, it interacts with desktop environment-specific components (e.g., D-Bus services) for discovering devices, managing connections, and handling the OBEX Push protocol.


title: HISTORY
content:
<b>bluetooth-sendto</b> is not a standalone historical command but rather a utility bundled with modern desktop environments, particularly GNOME, to simplify file transfers over Bluetooth. Its development aligns with the increasing integration of Bluetooth capabilities into the desktop user experience, moving away from lower-level BlueZ utilities towards more user-friendly applications for common tasks like file sharing.


title: SYNOPSIS
content:
<b>bluetooth-wizard</b> is not a standard command-line executable with a universally defined synopsis or set of options across Linux distributions. The "Bluetooth Wizard" functionality is typically launched through a graphical desktop environment's system settings or a dedicated Bluetooth management application.<br><br>Examples of how a user might initiate a Bluetooth setup wizard <I>conceptually</I>:<br><ul><li>Clicking "Bluetooth" in GNOME's System Settings and then "Add Device".</li><li>Launching <b>blueman-manager</b> and selecting "Pair a new device".</ul><br>There is no common direct command-line invocation like <b>bluetooth-wizard [OPTIONS] [ARGUMENTS]</b>.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As <b>bluetooth-wizard</b> is not a standard command-line executable, there are no universally defined command-line parameters or options associated with it. The graphical wizard's behavior and options are controlled through its interactive GUI elements (buttons, checkboxes, text fields) rather than command-line arguments.<br><br>


title: DESCRIPTION
content:
The term <b>bluetooth-wizard</b> typically refers to a <I>graphical user interface (GUI)</I> tool designed to simplify the process of setting up and managing Bluetooth devices on a Linux system. Unlike command-line utilities such as <b>bluetoothctl</b>, a Bluetooth wizard provides a step-by-step interactive interface, guiding users through device discovery, pairing (often with PIN/Passkey prompts), and connecting services (e.g., audio profiles, file transfer).<br><br>While a direct command-line executable named <b>bluetooth-wizard</b> is not a standard, universally available utility in modern Linux distributions, the functionality it represents is commonly integrated into desktop environment settings (like GNOME's Bluetooth panel or KDE's System Settings) or specialized Bluetooth management applications (e.g., Blueman). These tools abstract the complexities of the <b>BlueZ</b> stack, making Bluetooth device management accessible to users without requiring intricate knowledge of underlying protocols or commands. Its purpose is to provide a user-friendly, visual workflow for establishing Bluetooth connections.


title: CAVEATS
content:
<ul><li><b>bluetooth-wizard</b> is <I>not</I> a standard command-line utility: Users should not expect to find an executable named <b>bluetooth-wizard</b> directly in their PATH or have a corresponding man page on most modern Linux systems. Its functionality is typically embedded within graphical desktop environments.</li><li>Desktop Environment Dependency: The availability and specific appearance/workflow of a "Bluetooth wizard" depend entirely on the desktop environment (GNOME, KDE, XFCE, MATE, etc.) and the installed Bluetooth management software (e.g., <b>gnome-bluetooth</b>, <b>blueman</b>).</li><li>Underlying Bluetooth Stack: All "Bluetooth wizard" functionalities rely on the <b>BlueZ</b> Bluetooth stack in Linux. Issues with <b>BlueZ</b> or the kernel's Bluetooth drivers will affect the wizard's ability to function correctly.</li></ul>


title: ACCESSIBILITY
content:
A "Bluetooth wizard" is crucial for making Bluetooth technology accessible to non-technical users by abstracting the complexities of discovery, pairing, and service configuration into a guided, visual process.


title: TYPICAL WORKFLOW
content:
A typical wizard workflow includes:<br><ul><li>Enabling Bluetooth adapter.</li><li>Scanning for nearby devices.</li><li>Displaying a list of discovered devices.</li><li>Prompting for selection of a device to pair.</li><li>Handling various pairing methods (e.g., PIN entry, numeric comparison, automatic pairing).</li><li>Confirming successful pairing and offering to connect.</li></ul>


title: HISTORY
content:
The concept of a user-friendly "Bluetooth wizard" emerged as graphical desktop environments gained prominence on Linux. Early Bluetooth tools were largely command-line driven (<b>hcitool</b>, <b>sdptool</b>), which proved challenging for average users. As <b>BlueZ</b> evolved into the standard Linux Bluetooth stack, desktop environments began integrating graphical front-ends. While there might have been specific scripts or applications with "wizard" in their name in the past (e.g., related to <b>bluez-utils</b> packages in the early 2000s), the modern "Bluetooth wizard" is generally an integrated component of a desktop's system settings or a dedicated GUI application like Blueman, rather than a standalone, commonly invoked <b>bluetooth-wizard</b> command. Its development mirrors the broader trend of simplifying complex system configurations through intuitive graphical interfaces.


title: PARAMETERS
content:
<b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output to the console, useful for troubleshooting issues.<br><br><b><b>-n</b>, <b>--nodetach</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the daemon from detaching from the controlling terminal, allowing it to run in the foreground. Primarily for debugging.<br><br><b><b>-p</b>, <b>--pidfile</b> <i><path></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path for the PID file. Usually managed by <i>systemd</i> for service instances.<br><br><b><b>-C</b>, <b>--compat</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables compatibility with older, deprecated APIs. May be required for legacy applications or scripts.<br><br><b><b>-E</b>, <b>--experimental</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates experimental interfaces, which are subject to change and may not be stable.<br><br><b><b>-P</b>, <b>--plugin</b> <i><plugin></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a specific plugin module, extending <i>bluetoothd</i>'s capabilities. Can be used multiple times.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <i>bluetoothd</i> daemon and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message with available command-line options.<br><br>


title: DESCRIPTION
content:
<i>bluetoothd</i> is the official Linux Bluetooth protocol stack daemon, a fundamental background service for all Bluetooth operations. It implements the BlueZ stack, handling Bluetooth adapter initialization, device discovery, pairing, connection management, and service advertisement. <br><br>It provides a D-Bus API, which is the standard interface for applications (like desktop environments, audio players, or <i>bluetoothctl</i>) to interact with Bluetooth functionality. <i>bluetoothd</i> supports both Classic Bluetooth (BR/EDR) and Bluetooth Low Energy (LE) profiles, enabling features such as audio streaming (A2DP), hands-free telephony (HFP), GATT operations, and many other Bluetooth-dependent services. <br><br>Without <i>bluetoothd</i> running, no Bluetooth device can be detected, paired, or connected on a Linux system, making it an indispensable component for wireless connectivity.


title: CAVEATS
content:
<i>bluetoothd</i> requires the necessary kernel modules (e.g., <i>bluetooth</i>, <i>btusb</i>) to be loaded and a functional Bluetooth adapter. It typically runs as a system service (e.g., via <i>systemd</i>'s <i>bluetooth.service</i>) and needs root privileges to initialize, though it often drops privileges after startup. Incorrect configurations in <i>/etc/bluetooth/main.conf</i> or hardware issues can prevent the daemon from starting or operating correctly. Due to its nature as a wireless communication service, proper security practices are crucial to prevent unauthorized access or exploits.


title: D-BUS INTERFACE
content:
The primary means by which applications and system components communicate with <i>bluetoothd</i> is through its D-Bus API. This standardized inter-process communication system allows for a flexible and secure way to manage Bluetooth devices, services, and profiles across the system.


title: CONFIGURATION FILES
content:
The behavior of <i>bluetoothd</i> is largely controlled by configuration files located in <i>/etc/bluetooth/</i>. The main configuration file is <i>/etc/bluetooth/main.conf</i>, which allows administrators to set global parameters, enable/disable profiles, define security policies, and manage various aspects of Bluetooth operation.


title: SYSTEMD INTEGRATION
content:
On most contemporary Linux distributions, <i>bluetoothd</i> is managed as a <i>systemd</i> service, typically named <i>bluetooth.service</i>. This allows for seamless startup at boot, controlled shutdown, and easy management (start, stop, enable, disable) using the <i>systemctl</i> command, integrating it deeply into the system's service management framework.


title: HISTORY
content:
<i>bluetoothd</i> is a central component of the BlueZ project, which has been the official Linux Bluetooth protocol stack for many years. Its development has closely followed the evolution of Bluetooth specifications, from early versions supporting basic connections to modern iterations with Bluetooth Low Energy (BLE) and advanced profiles. Historically, BlueZ offered more direct socket interfaces, but modern <i>bluetoothd</i> primarily communicates with applications via a robust D-Bus API, enhancing stability and security.


title: PARAMETERS
content:
<b><I>capability</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the I/O capabilities of the agent for pairing. This dictates how the agent handles authentication challenges (e.g., displaying passkeys, inputting codes, or automatic pairing without user interaction).<br>Possible values include:<br><ul><li><b>DisplayOnly</b>: The agent can only display a passkey.</li><li><b>DisplayYesNo</b>: The agent can display a passkey and confirm/deny (yes/no).</li><li><b>KeyboardOnly</b>: The agent can only input a passkey.</li><li><b>NoInputNoOutput</b>: The agent has no I/O capabilities (for automatic pairing where no user interaction is needed).</li><li><b>KeyboardDisplay</b>: The agent can both display and input passkeys.</li></ul><br><br>


title: DESCRIPTION
content:
<i>bluez-simple-agent</i> is a command-line utility from the <B>BlueZ</B> project, which serves as the official Bluetooth protocol stack for Linux. It functions as a rudimentary Bluetooth pairing agent, facilitating the connection and pairing of Bluetooth devices with a Linux system.<br><br>Unlike more interactive and feature-rich tools such as <B>bluetoothctl</B>, <B>bluez-simple-agent</B> is designed for straightforward, often programmatic use. It listens for incoming pairing requests and handles the authentication process based on the specified I/O capabilities of the agent. This utility simplifies the process of establishing basic Bluetooth connections by automating aspects of passkey entry or confirmation, making it suitable for quick setups, automated tasks, or headless environments where extensive user interaction is not feasible or desired.


title: CAVEATS
content:
<i>bluez-simple-agent</i> is generally considered an older or simpler utility within the BlueZ ecosystem. For interactive Bluetooth management and more robust agent capabilities, <b>bluetoothctl</b> is the preferred and more commonly used tool in modern Linux distributions. This command might not be present by default in all BlueZ installations or might be part of an older <I>bluez-utils</I> package.<br><br>It lacks advanced features like device discovery filtering or persistent device management, which are typically handled by the main Bluetooth daemon (<b>bluetoothd</b>) and comprehensive tools like <b>bluetoothctl</b>. Its primary purpose is handling a single pairing interaction rather than comprehensive Bluetooth device administration.


title: USAGE CONTEXT
content:
<i>bluez-simple-agent</i> is typically run in the foreground and waits for an incoming pairing request. After a successful pairing, the command usually exits. For persistent agent functionality or managing multiple devices interactively, it's often combined with other BlueZ commands or the <B>bluetoothd</B> service.<br><br>Its straightforward nature makes it particularly suitable for embedded systems, servers without a graphical interface, or within automated scripts where a simple and non-interactive Bluetooth pairing solution is required.


title: HISTORY
content:
The BlueZ project has been the standard Linux Bluetooth stack for many years, constantly evolving. <i>bluez-simple-agent</i> emerged as one of the earlier client utilities designed to interact with the BlueZ daemon for basic pairing operations. Its usage became common in scripting or for automated Bluetooth setups, particularly before the widespread adoption of more comprehensive interactive tools like <b>bluetoothctl</b>.<br><br>While still functional, its role has largely been superseded by <b>bluetoothctl</b>, which offers a more complete and interactive experience for Bluetooth device management. Despite this, its simplicity keeps it relevant for specific scripting needs or embedded systems.


title: SYNOPSIS
content:
<b>bmaptool</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<i>ARGS</i>]<br><br><b>bmaptool create</b> [<i>OPTIONS</i>] <i><image_file></i><br><b>bmaptool copy</b> [<i>OPTIONS</i>] <i><image_file></i> <i><device_file></i><br><b>bmaptool verify</b> [<i>OPTIONS</i>] <i><image_file></i> <i><device_file></i><br><b>bmaptool show</b> [<i>OPTIONS</i>] <i><image_file></i>


title: PARAMETERS
content:
<b><b>create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a block map (<i>.bmap</i>) file for the specified image file. The output is typically redirected to a file.<br><br><b><b>copy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies the image file to the target block device, utilizing an optionally provided block map file to optimize the transfer by skipping empty blocks.<br><br><b><b>verify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares the contents of the image file with the specified block device, using a block map file to verify data integrity only for blocks marked as used.<br><br><b><b>show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses and displays the content of a block map file in a human-readable format, or generates one from an image and displays it.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information and exits.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output.<br><br><b><b>-o</b> <i><file></i>, <b>--output</b>=<i><file></i> (for <i>create</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output <i>.bmap</i> file for the <i>create</i> command. If omitted, output goes to standard output.<br><br><b><b>--no-empty-blocks</b> (for <i>create</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes zero-filled blocks from the generated block map. (Default behavior is to include them, but mark them as empty.)<br><br><b><b>--size-in-blocks</b> (for <i>create</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and includes the image size in 4KiB blocks in the <i>.bmap</i> file's metadata.<br><br><b><b>--xml-indent</b> (for <i>create</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds indentation to the generated XML output for better readability.<br><br><b><b>--min-alloc-len</b>=<i><len></i> (for <i>create</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum allocation length for blocks in the map, in bytes. Defaults to 4KiB.<br><br><b><b>-p</b>, <b>--show-progress</b> (for <i>copy</i>, <i>verify</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays progress information during the operation.<br><br><b><b>-b</b> <i><file></i>, <b>--bmap</b>=<i><file></i> (for <i>copy</i>, <i>verify</i>, <i>show</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the block map file to use. If not specified for <i>copy</i>/<i>verify</i>, <i>bmaptool</i> will look for a <i>.bmap</i> file with the same base name as the image.<br><br><b><b>--no-verify</b> (for <i>copy</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the automatic post-copy verification check. Using this can be risky as it skips data integrity checks.<br><br><b><b>--no-fsync</b> (for <i>copy</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables flushing cached data to disk immediately after writing. Can speed up copy but increases risk of data loss on power failure.<br><br>


title: DESCRIPTION
content:
<i>bmaptool</i> is a powerful command-line utility designed to streamline and accelerate the process of flashing disk images onto block devices. It is part of the <i>bmap-tools</i> project, primarily developed to address the inefficiency of traditional flashing methods (like <i>dd</i>) which copy the entire image, including empty sections. <br><br>Instead, <i>bmaptool</i> generates a 'block map' file (<i>.bmap</i> file) from an image. This XML-based file precisely describes which blocks within the image contain actual data and which are empty. When flashing, <i>bmaptool</i> (or other <i>bmap</i>-aware tools) uses this map to copy *only* the used blocks, skipping the large, often sparse, empty regions. This significantly reduces flashing time, especially for large images that contain much unused space, and minimizes wear on the target storage device. <br><br>The tool supports various operations including creating block maps, copying images to devices using block maps, verifying flashed images, and displaying block map contents. It's widely used in embedded systems development, manufacturing, and general Linux environments where efficient image deployment is crucial.


title: CAVEATS
content:
<li>When using <i>bmaptool copy</i> to flash an image to a device, root privileges are typically required to write to the raw block device (e.g., <i>/dev/sdb</i> or <i>/dev/mmcblk0</i>).<br><li>The block map file must accurately reflect the content of the image file it describes. If the image changes, the <i>.bmap</i> file must be regenerated.<br><li>While <i>bmaptool</i> significantly speeds up transfers by skipping empty blocks, the initial image creation (e.g., creating a sparse disk image) must be done carefully to ensure empty blocks are truly empty (zero-filled) for <i>bmaptool</i> to identify them correctly.<br><li>The <i>--no-verify</i> option for <i>copy</i> should be used with caution, as it bypasses critical data integrity checks.


title: BLOCK MAP FILE FORMAT
content:
A <i>.bmap</i> file is an XML document that contains metadata about the image file, such as its size and checksums, but most importantly, a list of 'data' sections (ranges of blocks) that are actually occupied. Empty or zero-filled blocks are either explicitly marked as such or simply omitted from these data sections, allowing tools to skip them during operations. This format makes it highly extensible and human-readable.


title: TYPICAL WORKFLOW
content:
A common workflow with <i>bmaptool</i> involves two main steps:<br>1. <b>Creation:</b> First, generate a <i>.bmap</i> file from your image: <br><i><pre>bmaptool create my_image.img > my_image.bmap</pre></i>2. <b>Copying:</b> Then, use the generated <i>.bmap</i> file to flash the image to a device:<br><i><pre>sudo bmaptool copy --bmap my_image.bmap my_image.img /dev/sdX</pre></i>Alternatively, the <i>.bmap</i> file can be fetched from a URL, simplifying remote deployments.


title: HISTORY
content:
<i>bmaptool</i> is a core utility within the <i>bmap-tools</i> project, which was primarily developed by Intel. Its creation was driven by the need for more efficient image flashing solutions in embedded Linux development and manufacturing pipelines, especially within the Yocto Project ecosystem. Traditional methods like <i>dd</i>, while robust, are inefficient for sparse images common in embedded systems. <i>bmap-tools</i> was designed to optimize this by introducing the block map concept, allowing for significantly faster deployment times and reduced wear on storage media. It has since become a standard tool for many developers working with large, sparse disk images.


title: PARAMETERS
content:
<b><b>-i</b> <i><module></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input module (e.g., <i>netlink</i>, <i>proc</i>, <i>kstats</i>) to gather network statistics.<br><br><b><b>-o</b> <i><module></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output module (e.g., <i>curses</i> for interactive display, <i>ascii</i>, <i>html</i>, <i>csv</i>, <i>json</i>) for presenting data.<br><br><b><b>-p</b> <i><policy></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the policy for interpreting values (e.g., <i>avg</i>, <i>max</i>, <i>sum</i>). Default is <i>avg</i>.<br><br><b><b>-r</b> <i><rate></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the refresh rate in milliseconds. The default is 500ms.<br><br><b><b>-f</b> <i><filter></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter network interfaces using glob patterns (e.g., <i>eth*</i>, <i>lo</i>) to monitor specific ones.<br><br><b><b>-s</b> <i><size></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the history buffer size in packets. Default is 128 packets.<br><br><b><b>-B</b> <i><seconds></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the history buffer size in seconds.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable link-layer output, showing statistics for ARP and NDP.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display bandwidth usage as a percentage of interface capacity.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display absolute values instead of rates (e.g., total bytes instead of bytes/sec).<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all available input and output modules.<br><br><b><b>-N</b> <i><interface></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Monitor a specific network interface by its name (e.g., <i>eth0</i>, <i>enp0s3</i>).<br><br><b><b>-u</b> <i><unit></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the units for displayed rates (e.g., <i>bits</i>, <i>bytes</i>, <i>bps</i>, <i>Bps</i>).<br><br><b><b>-z</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Zero counters on startup, effectively resetting the displayed statistics from the moment <b>bmon</b> starts.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the help message and exit.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information and exit.<br><br>


title: DESCRIPTION
content:
<b>bmon</b> is a lightweight, real-time network monitoring and debugging tool for Linux. It provides detailed statistics of network interfaces, including received and transmitted bytes, packets, errors, and drop rates. Designed for command-line use, <b>bmon</b> leverages various input modules (like <i>netlink</i> or <i>procfs</i>) to gather data efficiently and supports multiple output formats. Users can choose from an interactive <i>curses</i>-based display, raw <i>ascii</i>, <i>html</i>, <i>csv</i>, or <i>json</i> data, making it versatile for both direct monitoring and integration into scripts or automation workflows. It's particularly useful for quickly identifying network bottlenecks or abnormal traffic patterns directly from the terminal.


title: CAVEATS
content:
<b>bmon</b> has a few considerations:<br>- <b>Requires root privileges</b> or appropriate capabilities (<i>CAP_NET_ADMIN</i>, <i>CAP_NET_RAW</i>) for some input modules (e.g., <i>netlink</i>) to gather comprehensive statistics.<br>- Data accuracy depends on the underlying kernel's ability to provide timely and consistent statistics.<br>- The <i>curses</i> output module requires a terminal emulator that supports <b>ncurses</b>.<br>- May consume more CPU than simpler tools like <b>iftop</b> when history tracking is enabled with large buffers, or if refreshing very rapidly.


title: <B>INTERACTIVE CONTROLS (CURSES OUTPUT)</B>
content:
When using the default <i>curses</i> output module, <b>bmon</b> offers several interactive controls:<br><i>?</i>: <b>Display help menu</b><br><i>d</i>: <b>Toggle detailed interface view</b><br><i>s</i>: <b>Toggle statistics view</b><br><i>g</i>: <b>Toggle graphs</b><br><i>a</i>: <b>Toggle absolute/rate values</b><br><i>p</i>: <b>Toggle percentages</b><br><i>h/j/k/l</i> or <i>arrow keys</i>: <b>Navigate between interfaces</b><br><i>+</i> or <i>-</i>: <b>Adjust refresh rate</b><br><i>q</i> or <i>Esc</i>: <b>Quit bmon</b>


title: HISTORY
content:
<b>bmon</b> was created by <b>Thomas Graf</b> and initially released around 2005-2006 as a rewrite of an older bandwidth monitor. It aimed to provide a more modular and flexible architecture, allowing different input sources and output formats. Its development has focused on efficiency, providing real-time data with minimal overhead, and supporting modern Linux kernel interfaces for network statistics. It has been actively maintained and improved, integrating features like per-interface history, filtering, and various output options suitable for both interactive and automated monitoring scenarios.


title: PARAMETERS
content:
<b><i>-alphacolor &lt;color&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When the BMP file has an alpha channel or transparent palette entries, this option combines transparent pixels with the specified <i>&lt;color&gt;</i> background, producing a PGM/PPM image without an alpha channel. The <i>&lt;color&gt;</i> format is defined by <b>pnm_parsecolor()</b>.<br><br><b><i>-verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed information about the BMP file format to standard error during processing.<br><br>


title: DESCRIPTION
content:
<b>bmptopnm</b> reads a Microsoft Windows Version 3 BMP file and converts it into a portable anymap (PNM) format. It supports various BMP formats including 24-bit, 8-bit, 4-bit, and 1-bit uncompressed images, as well as 8-bit and 4-bit RLE compressed images. The command also handles palette transparency for indexed color images and alpha channels for 24-bit images. Input can be a specified file or standard input, and output is always written to standard output. It is important to note that <b>bmptopnm</b> does not support OS/2 BMP files or newer Version 4 BMP files. This utility is a component of the Netpbm package.


title: CAVEATS
content:
<b>bmptopnm</b> is limited to handling Microsoft Windows Version 3 BMP files. It does not support OS/2 BMP files or newer Version 4 BMP files.


title: INPUT/OUTPUT
content:
Input for <b>bmptopnm</b> can be provided as a file path on the command line or, if no file is specified, from standard input. The converted portable anymap (PNM) output is consistently written to standard output.


title: HISTORY
content:
Part of the Netpbm project, <b>bmptopnm</b>'s initial copyright is from 1991 by Jef Poskanzer. It serves as a foundational tool within the Netpbm suite for BMP file manipulation.


title: SYNOPSIS
content:
<b>bmptoppm</b> [<i>-gamma</i> | <i>-no-gamma-correct</i>] [<i>-map=mapfile</i>] [<i>-verbose</i>] [<i>bmpfile</i>]<br>The <i>bmpfile</i> argument is optional; if omitted, <b>bmptoppm</b> reads from standard input.


title: PARAMETERS
content:
<b><i>bmpfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input BMP file. If omitted, input is read from standard input.<br><br><b><i>-gamma</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <b>bmptoppm</b> to perform gamma correction if the BMP file contains gamma information. This is the default behavior.<br><br><b><i>-no-gamma-correct</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables gamma correction, even if the BMP file contains gamma information.<br><br><b><i>-map=mapfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maps the colors in the output image to those found in the specified <i>mapfile</i>, which must be a PPM file. This option implies that the output will always be PPM, regardless of input color depth.<br><br><b><i>-verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed information about the input BMP file to standard error during processing.<br><br>


title: DESCRIPTION
content:
<i>bmptoppm</i> is a utility from the Netpbm project designed to convert Microsoft Windows Bitmap (BMP) image files into Netpbm formats, specifically Portable Pixmap (PPM) for color images or Portable Graymap (PGM) for grayscale images. It serves as a crucial bridge between the ubiquitous BMP format and the flexible Netpbm suite of image manipulation tools. The command handles various BMP file types, including RLE-encoded images, and intelligently determines the output format based on the input BMP's color depth.<br><br>A key feature of <i>bmptoppm</i> is its ability to perform gamma correction, adjusting the image brightness and contrast to ensure accurate color reproduction, which is often crucial when displaying images across different devices. By default, it applies this correction if the BMP file provides a gamma value. This command is frequently used as the first step in a larger image processing pipeline within the Netpbm ecosystem, allowing users to leverage tools like <i>pnmscale</i>, <i>pnmcrop</i>, or <i>pnmgamma</i> on their BMP images after conversion.


title: CAVEATS
content:
While <i>bmptoppm</i> is robust for many BMP formats, it may not support all obscure or very old/new variations of the BMP specification. Certain less common compression types or bit depths might not be fully handled. Users should verify output for critical applications. Also, the gamma correction relies on the gamma information being present and accurate within the BMP file itself.


title: <I>OUTPUT FORMAT</I>
content:
The output format is determined automatically: PPM for color or truecolor BMPs, and PGM for grayscale BMPs. If the <i>-map</i> option is used, the output is always PPM.


title: HISTORY
content:
<i>bmptoppm</i> is an integral part of the Netpbm project, a comprehensive suite of graphics file format conversion and manipulation tools. The Netpbm project itself originated from the Pbmplus package, created by Jef Poskanzer in the late 1980s. <i>bmptoppm</i> was written by Michael K. Johnson and has been a stable component of the Netpbm suite for many years, continuously maintained and updated as part of the broader project to ensure compatibility with evolving BMP standards and operating systems.


title: SYNOPSIS
content:
<b>Not applicable.</b> As 'bob' is not a standard Linux command, there is no universal syntax or set of options associated with it. Attempting to run 'bob' on most Linux systems will result in a 'command not found' error.


title: DESCRIPTION
content:
The command 'bob' is not a recognized or standard command within the vast majority of Linux distributions and their common package repositories. Unlike widely used utilities such as <i>ls</i>, <i>cd</i>, <i>grep</i>, or <i>awk</i>, there is no universal program or script named 'bob' that comes pre-installed or is part of core system utilities.<br><br>It is highly probable that 'bob' might refer to:<br>1. A custom script or alias created by a user or administrator on a specific system.<br>2. A placeholder name used in a tutorial, example, or specific project documentation.<br>3. A command associated with a very niche or specialized software package that is not commonly deployed.<br>4. A typo or a misremembered command name.<br><br>If you encountered 'bob' in a specific context, it would be crucial to investigate that context (e.g., source code, specific system setup, or documentation for a particular project) to understand its intended function.


title: CAVEATS
content:
The primary caveat is that 'bob' does not exist as a universally recognized or available command in the Linux ecosystem. Users should be cautious when encountering unfamiliar command names and always verify their origin and purpose before execution, especially if they are not part of standard system utilities or well-documented packages.


title: VERIFYING COMMAND EXISTENCE
content:
To check if a command exists on a Linux system, you can use utilities like <i>which</i> or <i>type</i>. For example:<br><i>which bob</i><br><i>type bob</i><br><br>If a command has a manual page, you can access it using <i>man command_name</i> (e.g., <i>man ls</i>). The absence of a man page or a 'command not found' message from <i>which</i> or <i>type</i> indicates that the command is not installed or not in the system's PATH.


title: CUSTOM COMMANDS AND ALIASES
content:
Linux users frequently create custom scripts (e.g., in <i>~/.local/bin/</i> or <i>/usr/local/bin/</i>) or aliases (e.g., in <i>~/.bashrc</i> or <i>~/.zshrc</i>) to automate tasks or provide shorthand for longer commands. If 'bob' exists and functions on a specific system, it is highly probable that it is such a custom creation rather than a standard, globally available system utility.


title: HISTORY
content:
There is no documented history of development or widespread usage for a standard 'bob' command in Linux, precisely because it does not exist as a common utility.


title: SYNOPSIS
content:
<b>boggle</b> [ <i>-a</i> ] [ <i>-c</i> ] [ <i>-f dictionary</i> ] [ <i>-g widthxheight</i> ] [ <i>-l length</i> ] [ <i>-p</i> ] [ <i>-s</i> ] [ <i>-t</i> ] [ <i>-v</i> ] [ <i>-x</i> ]


title: PARAMETERS
content:
<b><i>-a</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Analyze mode</b>: Show all possible words found by the computer after the player's turn, allowing for comparison of results.<br><br><b><i>-c</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Cheat mode</b>: Print all possible words that can be formed on the current board at the very beginning of the game.<br><br><b><i>-f dictionary</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the specified <i>dictionary</i> file as the word list instead of the default system dictionary. This allows for custom word sets or different languages.<br><br><b><i>-g widthxheight</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the board dimensions to <i>width</i> by <i>height</i> (e.g., `4x4`, `5x5`). The default is typically `4x4`.<br><br><b><i>-l length</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the minimum word <i>length</i> required for a word to be considered valid and scored (default is 3 characters).<br><br><b><i>-p</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Play game</b>: This is the default behavior if no other options are specified, starting an interactive Boggle game.<br><br><b><i>-s</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Score by the number of words found instead of the standard Boggle point system (which typically assigns points based on word length).<br><br><b><i>-t</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Play a <b>timed game</b>. By default, the game provides a 3-minute timer for players to find words.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Verbose mode</b>: Similar to analyze mode, but displays all possible words found by the computer after each game, useful for learning.<br><br><b><i>-x</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an <b>extra large dictionary</b> (e.g., `/usr/share/dict/words`) instead of the default smaller dictionary (e.g., `/usr/share/dict/web2`), potentially finding more words.<br><br>


title: DESCRIPTION
content:
<b>boggle</b> is a command-line implementation of the popular Boggle word game. Players are presented with a grid of random letters (typically 4x4 or 5x5) and must find as many words as possible by connecting adjacent letters. The letters can be connected horizontally, vertically, or diagonally. The game uses a dictionary to validate words. Scoring is usually based on word length, rewarding longer and rarer words. It's a fun way to test vocabulary and pattern recognition skills directly from the terminal, offering a classic game experience without a graphical interface.<br><br>The game usually provides a timer for the player to find words, and after the time expires, it can reveal all possible words that could have been found on the given board.


title: CAVEATS
content:
The <b>boggle</b> command relies on the presence of system dictionary files, typically located in <i>/usr/share/dict</i>. If these files are missing or incorrectly configured, the game may not function correctly or might have a very limited word list. Being entirely text-based, it lacks a graphical user interface. Word validation is strictly based on the provided dictionary, which may not always align with contemporary English or include proper nouns, and scoring rules might differ slightly from official Boggle board games.


title: <B>DICE SETS</B>
content:
The <b>boggle</b> game internally simulates the rolling of specific dice sets (e.g., standard 4x4 Boggle dice) to generate the board's letter configuration. These sets are designed to ensure a balanced distribution of letters, providing a varied gameplay experience.


title: <B>CUSTOM DICTIONARIES</B>
content:
A key feature of <b>boggle</b> is its reliance on dictionary files for word validation. Users can leverage the <i>-f</i> option to specify custom dictionaries, enabling gameplay in different languages, with specialized vocabulary sets, or with updated word lists not included in default system dictionaries.


title: HISTORY
content:
The <b>boggle</b> command is a part of the <b>bsdgames</b> package, which comprises a collection of classic Unix games ported from BSD systems. These games have a rich history dating back to the early development of Unix and are designed for command-line environments. The <b>boggle</b> implementation provides a robust terminal-based version of the popular board game, ensuring accessibility on systems without graphical interfaces. Its development has focused on faithfully replicating the core gameplay mechanics using standard text output and efficient dictionary lookup algorithms.


title: PARAMETERS
content:
<b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information of the <b>boltctl</b> utility and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message describing command usage and available options, then exit.<br><br><b><b>list</b>, <b>devices</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all detected Thunderbolt controllers and connected devices, providing a summary of their status and properties.<br><br><b><b>info</b> <i>UUID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show detailed information about a specific Thunderbolt device, identified by its unique ID (<i>UUID</i>).<br><br><b><b>enroll</b> <i>UUID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enroll a new Thunderbolt device, typically a prerequisite step before authorization for certain security policies.<br><br><b><b>authorize</b> <i>UUID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authorize a Thunderbolt device identified by its <i>UUID</i>. Once authorized, the device is fully functional and trusted.<br><br><b><b>forget</b> <i>UUID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove a Thunderbolt device from the list of enrolled or authorized devices, revoking its access and preventing future automatic connection.<br><br><b><b>domain</b> [<i>COMMAND</i>] [<i>UUID</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manage Thunderbolt domains. Use '<b>boltctl domain help</b>' for available subcommands like 'list', 'info', or 'power'.<br><br><b><b>power</b> <i>STATE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Control the power state of Thunderbolt controllers. <i>STATE</i> can be 'on' to enable or 'off' to disable.<br><br><b><b>monitor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Monitor Thunderbolt events in real-time, such as device connection, disconnection, or authorization changes.<br><br><b><b>config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manage and inspect the configuration of the <i>boltd</i> daemon.<br><br>


title: DESCRIPTION
content:
The <b>boltctl</b> command-line utility provides comprehensive management for Thunderbolt 3 (and newer compatible) devices connected to a Linux system. It serves as the primary interface to the <i>boltd</i> daemon, which is responsible for handling Thunderbolt security, device enumeration, and authorization policies. Users can leverage <b>boltctl</b> to list all connected Thunderbolt controllers and peripherals, retrieve detailed information about specific devices using their unique identifiers (UUIDs), and critically, manage their authorization status.<br><br>Given that Thunderbolt devices possess Direct Memory Access (DMA) capabilities, authorization is a paramount security feature, preventing unauthorized access to system memory. <b>boltctl</b> facilitates this by allowing users to enroll new devices, explicitly authorize them for full functionality, or forget previously authorized ones to revoke access, thereby ensuring system integrity and preventing potential security exploits.


title: CAVEATS
content:
<b>Permissions:</b> Most <b>boltctl</b> commands that modify device status (e.g., <b>authorize</b>, <b>forget</b>) require root privileges or membership in a specific administrative group (e.g., 'plugdev').<br><br><b>Daemon Requirement:</b> The <i>boltd</i> service must be actively running in the background for <b>boltctl</b> to communicate with Thunderbolt hardware and manage devices.<br><br><b>Kernel Support:</b> Proper kernel support for Thunderbolt technology is essential for device detection and management; without it, <b>boltctl</b> will not function.<br><br><b>Thunderbolt Version:</b> While it may show some information for older versions, <b>boltctl</b> and <i>boltd</i> are primarily designed for Thunderbolt 3 and newer compatible versions, which implement the security model requiring explicit device authorization.


title: SECURITY IMPLICATIONS OF THUNDERBOLT
content:
Thunderbolt's ability for Direct Memory Access (DMA) means a malicious device could potentially read or write directly to system memory, bypassing operating system security. <b>boltctl</b>'s authorization mechanism is vital to mitigate this. By requiring explicit user approval for devices, it protects against 'Evil Maid' attacks and ensures only trusted peripherals can interact with the system's memory.


title: COMMON WORKFLOW EXAMPLE
content:
A typical scenario for connecting a new Thunderbolt device might involve these steps:<br>1. Connect the Thunderbolt device to your system.<br>2. Run `<b>boltctl list</b>` to identify the new device (it may show as 'disconnected' or 'unauthorized').<br>3. Note the device's <i>UUID</i>.<br>4. Execute `<b>sudo boltctl authorize <i>UUID</i></b>` to grant the device full access to the system.<br>5. The device should now be recognized and fully functional within your Linux environment.


title: HISTORY
content:
The <b>boltctl</b> command emerged as a crucial component of the <i>boltd</i> project, developed to provide a standardized, secure, and robust way to manage Thunderbolt devices on Linux. With the advent of Thunderbolt 3, which introduced advanced security features like DMA protection and mandatory device authorization, a dedicated userspace daemon and its accompanying command-line interface became indispensable. Before <i>boltd</i> and <b>boltctl</b>, Thunderbolt management on Linux was often ad-hoc or reliant on vendor-specific drivers, lacking a unified security model. This project has significantly improved user experience and system security by offering a consistent and reliable interface for Thunderbolt device interaction across various Linux distributions.


title: PARAMETERS
content:
<b><I>--help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><I>--version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<br>The <b>bonobo-activation-server</b> was a critical daemon process within older versions of the GNOME desktop environment, specifically those leveraging the Bonobo component model (e.g., GNOME 1.x and 2.x). Its primary role was to act as an Object Request Broker (ORB) and an activation service for Bonobo components. Bonobo was a component architecture that allowed applications to embed functionality from other applications, similar in concept to Microsoft's OLE/COM or CORBA.<br><br>When a GNOME application needed to use a Bonobo component (e.g., embedding a Gnumeric spreadsheet into Evolution mail client), it would communicate with the <b>bonobo-activation-server</b>. The server was responsible for finding, launching, and managing instances of these Bonobo components, providing their interfaces to the requesting application. It facilitated inter-process communication and object lifecycle management for these embedded objects.<br><br>With the evolution of GNOME, particularly with GNOME 3 and the increasing adoption of D-Bus for inter-process communication, the Bonobo component model became obsolete. Consequently, the <b>bonobo-activation-server</b> and its associated libraries are no longer part of modern GNOME installations and are considered legacy components.


title: CAVEATS
content:
<br>The <b>bonobo-activation-server</b> is a deprecated and largely obsolete component. It is not present in modern Linux distributions running contemporary GNOME versions (e.g., GNOME 3 or 40+). If you encounter this command, it typically indicates a very old or custom system setup. Attempting to run it on a modern system will likely result in an error indicating the command is not found, or if old libraries are present, it may not function correctly due to missing dependencies or incompatible system components.


title: AUTOMATIC STARTUP
content:
The <b>bonobo-activation-server</b> was typically not started manually by users. Instead, it was automatically launched by other core GNOME components or by the system's session manager whenever a Bonobo component was requested by an application. It would run in the background as a daemon.


title: PURPOSE OF BONOBO
content:
Bonobo aimed to enable 'compound documents' where parts of a document (e.g., a graph, a spreadsheet) could be handled by different applications within the same user interface, allowing for highly integrated desktop applications. This concept was common in older desktop environments (e.g., Microsoft OLE).


title: HISTORY
content:
<br>The Bonobo component model, and by extension the <b>bonobo-activation-server</b>, was a cornerstone of GNOME's architecture during its 1.x and early 2.x releases (roughly 1999-2005). It aimed to solve complex inter-application embedding and communication challenges. However, the complexity of CORBA (on which Bonobo was built via ORBit), performance concerns, and the emergence of simpler, more lightweight inter-process communication mechanisms like D-Bus led to its gradual deprecation.<br><br>Development on Bonobo largely ceased around the mid-2000s, and its components were progressively removed from GNOME's core dependencies. By GNOME 3 (released in 2011), Bonobo was completely phased out, replaced by D-Bus for IPC and other mechanisms for document embedding. The <b>bonobo-activation-server</b> therefore became a relic of a past architectural design.


title: SYNOPSIS
content:
The act of booting a Linux system from a running state is typically initiated by system restart commands.<br>To trigger a system boot (restart):<br><b>reboot</b> [<i>OPTIONS</i>]<br><b>shutdown</b> <i>-r</i> [<i>OPTIONS</i>] [<i>TIME</i>] [<i>MESSAGE</i>]


title: PARAMETERS
content:
<b><b>reboot</b> specific options (commonly used to initiate a system restart):</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters for the <b>reboot</b> command.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force an immediate reboot, bypassing graceful shutdown and not writing to wtmp.<br><br><b><b>-p</b>, <b>--poweroff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Power off the system instead of rebooting (behaves like <b>poweroff</b> command).<br><br><b><b>shutdown -r</b> specific options (commonly used to schedule a system reboot):</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters for the <b>shutdown -r</b> command to initiate a reboot.<br><br><b><b>TIME</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When to perform the reboot. Can be 'now', '+M' (M minutes from now), or 'hh:mm'.<br><br><b><b>MESSAGE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A custom message to send to all logged-in users before the reboot.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cancel a pending shutdown/reboot.<br><br>


title: DESCRIPTION
content:
The term <b>'boot'</b> in Linux refers to the comprehensive process of starting up a computer and loading the operating system. Unlike many other Linux functionalities, <b>'boot'</b> is not a standalone executable command (e.g., <code>/usr/bin/boot</code>) that you would execute directly with parameters. Instead, it's a complex sequence of operations involving firmware, a bootloader, the kernel, and the init system. The typical boot sequence begins with the system's firmware (BIOS or UEFI) performing POST (Power-On Self-Test) and then locating and executing the bootloader (commonly <I>GRUB</I>, <I>LILO</I>, or <I>systemd-boot</I>) from a storage device. The bootloader is responsible for loading the Linux kernel and an initial ramdisk (initramfs or initrd) into memory. Finally, the kernel takes control and launches the init system (like <I>systemd</I>, <I>Upstart</I>, or <I>SysVinit</I>), which then brings up the rest of the system services and presents the user with a login prompt or graphical environment. Commands like <b>reboot(8)</b> or <b>shutdown(8)</b> are used to initiate a restart, which includes the entire boot process.


title: CAVEATS
content:
The term <b>'boot'</b> represents a complex system startup process, not a single executable command on a Linux system. <br>Initiating a system boot from a running system (i.e., a restart) typically requires root privileges. <br>Successful booting depends on various underlying components: a correctly configured bootloader (e.g., GRUB), a compatible kernel, and a functional initial RAM filesystem (initramfs). <br>Issues during the boot sequence can render a system unbootable, often requiring rescue mode or live media for repair. <br>The exact steps and tools involved can vary significantly between systems using traditional BIOS/MBR and newer UEFI/GPT setups, as well as different bootloaders and init systems.


title: THE BOOTLOADER
content:
The bootloader (e.g., <b>GRUB</b>, <b>LILO</b>, <b>systemd-boot</b>) is firmware-agnostic software that loads the Linux kernel and initial ramdisk into memory. It often provides a menu to select different operating systems or kernel versions, allowing for multi-boot setups.


title: INITIAL RAM FILESYSTEM (INITRAMFS)
content:
An <b>initramfs</b> (or initrd) is a compressed CPIO archive containing a minimal root filesystem. It's loaded into memory by the bootloader and provides essential modules and utilities (like filesystem drivers, RAID/LVM support) needed to mount the actual root filesystem before the main system fully initializes.


title: THE INIT SYSTEM
content:
After the kernel is loaded and the root filesystem is mounted, the kernel executes the init system (e.g., <b>systemd</b>, <b>SysVinit</b>). The init system is the first user-space process and is responsible for starting all other system services, managing daemons, mounting filesystems, and bringing the system to a usable state, eventually presenting a login prompt or graphical environment.


title: HISTORY
content:
The Linux boot process has evolved significantly over time. Early Linux systems primarily relied on BIOS for firmware and bootloaders like <I>LILO</I> or early versions of <I>GRUB</I> to load the kernel, which then directly initialized the system using <I>SysVinit</I> scripts. The introduction of <I>initramfs</I> (initial RAM filesystem) allowed for more flexible and modular kernel loading, supporting various hardware and file systems. The shift from BIOS/MBR to <I>UEFI/GPT</I> introduced new boot mechanisms, including secure boot and different boot entry management. Concurrently, init systems evolved from <I>SysVinit</I> to <I>Upstart</I> and most recently to <I>systemd</I>, fundamentally changing how services are managed during startup. These advancements have made the boot process more robust and versatile, but also more complex and layered.


title: SYNOPSIS
content:
<b>bootc</b> &lt;<i>subcommand</i>&gt; [<i>options</i>]<br>Common subcommands include: <i>install</i>, <i>upgrade</i>, <i>status</i>, <i>rebase</i>, <i>pull</i>, <i>pivot</i>.


title: PARAMETERS
content:
<b><b>install</b> &lt;<i>image_reference</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs the specified container image as a bootable OS onto a target disk. Example: <i>quay.io/centos-bootc/centos-bootc:stream9</i><br><br><b>  --target-disk &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the disk device to install the OS onto (e.g., <i>/dev/sda</i>). <b>Warning: This operation typically wipes the disk.</b><br><br><b>  --root-ssh-authorized-keys &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a path to an SSH authorized_keys file for the root user on the installed system.<br><br><b>  --generic-system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a generic system, not relying on Ignition for initial provisioning. Useful for simpler setups.<br><br><b><b>upgrade</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrades the currently running <b>bootc</b>-managed system to the latest available version of its current image stream.<br><br><b><b>status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current status of the <b>bootc</b>-managed system, including the currently deployed image and any pending updates.<br><br><b><b>rebase</b> &lt;<i>image_reference</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the base image of the currently running system to a different specified image, similar to an upgrade but potentially to a different image stream.<br><br><b><b>pull</b> &lt;<i>image_reference</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pulls a specified container image into the local <i>OSTree</i> repository without installing it.<br><br>


title: DESCRIPTION
content:
<b>bootc</b> is a command-line utility from Red Hat designed to deploy and manage Linux operating systems as container images. It transforms a standard container image into a fully bootable operating system, enabling image-based, atomic updates and rollbacks. By leveraging familiar container registries (like Docker Hub or Quay.io) for OS distribution, <b>bootc</b> streamlines the deployment and lifecycle management of systems, particularly beneficial for immutable infrastructure, edge devices, and embedded systems.<br><br>Underneath, <b>bootc</b> utilizes <i>OSTree</i> for atomic filesystem updates and transactions, ensuring that system upgrades are either fully applied or completely reverted, preventing partial updates. It also integrates with <i>bootupd</i> for managing system firmware updates. This approach simplifies OS provisioning, enhances system consistency, and reduces operational complexity by treating the entire operating system as a single, versioned artifact.


title: CAVEATS
content:
<b>bootc</b> is a relatively new and evolving tool, primarily designed for immutable, image-based Linux distributions (like Fedora CoreOS, RHEL for Edge, or custom <b>bootc</b>-enabled images). It is not intended for traditional package-managed systems (e.g., those using <i>yum</i>/<i>dnf</i> or <i>apt</i>). Installation typically performs a destructive write to the target disk, wiping existing data. Users should ensure they are using a compatible OS image and understand the implications of immutable system management.


title: DESIGN PHILOSOPHY
content:
<b>bootc</b> embraces the principles of immutable infrastructure, treating the operating system as an atomically updateable artifact. This design minimizes configuration drift, simplifies rollbacks, and enhances consistency across deployments by leveraging standard container image distribution mechanisms. It aims to make operating system management as predictable and reliable as managing application containers.


title: HISTORY
content:
<b>bootc</b> emerged from Red Hat's ongoing efforts to modernize Linux operating system deployment and management, building upon the foundations laid by projects like Atomic Host and Fedora CoreOS. Its development gained significant public visibility around 2022-2023, representing an evolution of <i>OSTree</i>-based atomic updates into a more container-native and accessible format. The core idea is to leverage the robust ecosystem of container images and registries for OS distribution, akin to how application containers are deployed, thereby standardizing and simplifying the immutable OS paradigm for a wider range of use cases, particularly at the edge.


title: PARAMETERS
content:
<b><I>DEPLOYMENT_ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The optional identifier of the target deployment to switch to. If omitted, <b>bootc</b> typically switches to the most recently installed deployment or the 'next' logical deployment available on the system.<br><br><b><I>--target-root</I> <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative root directory (<I>PATH</I>) to operate on, rather than the currently running system's root. This is particularly useful for offline maintenance or modifying a system's boot configuration from another environment.<br><br><b><I>--sysroot</I> <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <I>--target-root</I>, providing an alternative system root path for the operation.<br><br><b><I>--karg</I> <KARG></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specified kernel argument (<I>KARG</I>) to the boot entry of the new deployment. This option can be specified multiple times to add several kernel arguments.<br><br><b><I>--karg-remove</I> <KARG></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified kernel argument (<I>KARG</I>) from the boot entry of the new deployment. This option can be specified multiple times.<br><br><b><I>--force-atomic</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an atomic switch operation, ensuring the transition is performed transactionally even if <b>bootc</b> determines it's not strictly necessary. This enhances reliability.<br><br><b><I>--apply-all</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When switching, attempts to apply the change to all detected bootloader entries, ensuring consistency across different boot configurations.<br><br><b><I>--current-root</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches the bootloader configuration to point to the currently <I>running</I> root filesystem. This is invaluable for recovering from a problematic <b>bootc switch</b> or <b>bootc install</b> operation that left the system in an unbootable state.<br><br><b><I>--dry-run</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a simulated switch operation, displaying what changes would be made without actually modifying the system. Useful for testing and verifying commands before execution.<br><br>


title: DESCRIPTION
content:
<b>bootc-switch</b> is a fundamental subcommand of the <b>bootc</b> tool, which is designed for managing host operating systems built from OCI container images. It provides the capability to atomically switch the active root filesystem of a system to a different, previously installed or updated <b>bootc</b> deployment. This command is a cornerstone for enabling robust system updates, reliable rollbacks, and A/B style system management, where a new deployment can be thoroughly tested before being made active, or quickly reverted if issues arise. By modifying the system's bootloader configuration (such as <i>GRUB</i> or <i>systemd-boot</i>), <b>bootc-switch</b> ensures that the system boots into the desired deployment on the next reboot, providing a safe and controlled transition between system states.


title: CAVEATS
content:
The <b>bootc-switch</b> command operates at a critical level of the operating system.<br><br><I>Prerequisites:</I> It requires the system to be managed by <b>bootc</b> and for <b>bootc</b> itself to be correctly installed.<br><br><I>Bootloader Modification:</I> Incorrect or careless use can lead to an unbootable system as it directly modifies bootloader configurations (e.g., <I>GRUB</I>, <I>systemd-boot</I>). Always ensure a backup or recovery plan.<br><br><I>Deployment Existence:</I> The specified <I>DEPLOYMENT_ID</I> must correspond to an existing and valid deployment on the system.<br><br><I>Evolving Tool:</I> <b>bootc</b> is a relatively new and actively developed project. Its behavior, options, and capabilities may evolve between versions, so it's recommended to consult the specific version's documentation or <I>--help</I> output.


title: ATOMIC UPDATES AND ROLLBACKS
content:
<b>bootc-switch</b> is central to <b>bootc</b>'s atomic update capabilities. When an update is applied, a new deployment is prepared. <b>bootc-switch</b> then safely transitions the system to this new deployment by updating the bootloader. If the new deployment has issues, <b>bootc-switch</b> (or manual bootloader selection) allows for an immediate rollback to the previous, known-good state, significantly reducing downtime and risk during system upgrades.


title: A/B DEPLOYMENT MODEL
content:
This command facilitates an A/B deployment model for the entire operating system. Instead of in-place modifications, new system versions are installed alongside the existing one (e.g., on a 'B' partition while 'A' is active). <b>bootc-switch</b> then flips the active boot partition. This ensures that the old 'A' deployment remains untouched and serves as a quick fallback, providing robust disaster recovery and enabling a safe 'test-before-activate' workflow for system updates.


title: HISTORY
content:
The <b>bootc</b> project, and consequently the <b>bootc-switch</b> command, emerged from the Red Hat ecosystem, building upon technologies like <I>ostree</I> and the atomic update principles seen in <I>Fedora CoreOS</I> and <I>RHEL CoreOS</I>. Its primary motivation is to bridge the gap between OCI container images and host operating system management, allowing system images to be delivered and updated with the same tooling and practices used for application containers. <br><br><b>bootc-switch</b> is integral to this vision, as it provides the core mechanism for atomically transitioning between different system states, enabling reliable A/B updates and instant rollbacks, which are critical features for modern, cloud-native infrastructure.


title: PARAMETERS
content:
<b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show current status of the boot loader and its entries.<br><br><b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install <i>systemd-boot</i> into the EFI System Partition (ESP).<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update <i>systemd-boot</i> files on the ESP.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uninstall <i>systemd-boot</i> from the ESP.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List available boot entries and their details.<br><br><b>set-default ID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the default boot entry using its unique ID.<br><br><b>set-oneshot ID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the default boot entry for the next boot only.<br><br><b>set-timeout SECONDS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the boot loader menu timeout in seconds.<br><br><b>set-theme THEME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the boot loader theme for <i>systemd-boot</i>.<br><br><b>set-boot-vga MODE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the VGA mode for the boot loader display.<br><br><b>random-seed</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate and save a random seed for early boot entropy.<br><br><b>reboot-to-firmware</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Schedule the next reboot to enter the system's firmware setup (BIOS/UEFI).<br><br><b>--boot-path=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the default path to the boot partition.<br><br><b>--esp-path=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the default path to the EFI System Partition (ESP).<br><br><b>--graceful</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not fail if the boot loader is not installed or configured.<br><br><b>--json=MODE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output information in JSON format (e.g., <i>short</i>, <i>pretty</i>, <i>oneline</i>).<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show package version.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<i>bootctl</i> is a command-line utility used to inspect, manage, and configure the <b>systemd-boot</b> boot manager (formerly gummiboot) or the <b>U-Boot EFI boot manager</b>.<br><br>It's primarily used in systems that boot via <i>UEFI firmware</i>, where <i>systemd-boot</i> is responsible for loading the kernel and initial ramdisk. <i>bootctl</i> allows users to install the boot loader to the <b>EFI System Partition (ESP)</b>, update its files, list available boot entries, set the default boot entry, configure the boot timeout, and manage other boot-related settings. It integrates tightly with <i>systemd</i> and provides a simple, unified way to manage boot options on supported systems.


title: CAVEATS
content:
<i>bootctl</i> is specifically designed for <b>UEFI-based systems</b> and manages either <b>systemd-boot</b> or <b>U-Boot EFI boot managers</b>. It does not manage other boot loaders like GRUB or SYSLINUX.<br><br>Operations that modify the EFI System Partition (like `install`, `update`, `remove`) typically require <i>root privileges</i>.


title: EFI SYSTEM PARTITION (ESP) DEPENDENCY
content:
All <i>bootctl</i> operations, especially those involving installation or updates, heavily rely on the presence and correct mounting of the <b>EFI System Partition (ESP)</b>. The ESP is a FAT-formatted partition on the boot disk that stores the UEFI boot loaders and configuration files. It is typically mounted at `<i>/boot</i>` or `<i>/efi</i>`.


title: CONFIGURATION FILES
content:
While <i>bootctl</i> provides a high-level interface, <i>systemd-boot</i>'s behavior is primarily controlled by configuration files located on the ESP. The main configuration is `<i>loader.conf</i>`, and individual boot entries are defined in `<i>entries/*.conf</i>` files. Direct editing of these files is an alternative to using <i>bootctl</i> for certain configurations.


title: HISTORY
content:
<i>bootctl</i> is an integral part of the <b>systemd</b> project, designed to manage <b>systemd-boot</b>, which was originally known as <i>gummiboot</i>. <i>gummiboot</i> was a lightweight EFI boot manager developed by Lennart Poettering and Kay Sievers. In 2013, <i>gummiboot</i> was merged into the <i>systemd</i> project itself, and subsequently renamed <i>systemd-boot</i>. <i>bootctl</i> was introduced as the primary command-line interface to simplify the installation, configuration, and management of this boot loader, aligning with <i>systemd</i>'s philosophy of providing unified utilities.


title: SYNOPSIS
content:
<b>borg</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<i>ARGS...</i>]<br><br>Common commands and examples:<br><b>borg</b> <b>init</b> <i>--encryption=repokey-blake2</i> <i>/path/to/repo</i><br><b>borg</b> <b>create</b> <i>/path/to/repo::archive_name</i> <i>/source/path</i><br><b>borg</b> <b>extract</b> <i>/path/to/repo::archive_name</i><br><b>borg</b> <b>list</b> <i>/path/to/repo</i><br><b>borg</b> <b>prune</b> <i>/path/to/repo</i> <i>--keep-daily=7</i>


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show a help message for the command or subcommand and exit.</i><br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show the program's version number and exit.</i><br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increase verbosity (can be specified multiple times for more detailed output).</i><br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enable debug messages, providing very detailed output for troubleshooting.</i><br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output machine-readable JSON formatted data where applicable.</i><br><br><b><b>--show-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show Borg version and platform details.</i><br><br><b><b>--lock-wait</b> <i>TIMEOUT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Wait for the repository lock to become available for up to TIMEOUT seconds.</i><br><br><b><b>--no-files-cache</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disable the local files cache, which normally speeds up subsequent backups.</i><br><br><b><b>--file-cache-dir</b> <i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a different directory for the files cache.</i><br><br><b><b>--rsh</b> <i>COMMAND</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the remote shell command to use for SSH connections (e.g., 'ssh -i ~/.ssh/id_rsa').</i><br><br><b><b>--bypass-lock</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Bypass repository lock. Use with extreme caution, as it can lead to repository corruption.</i><br><br>


title: DESCRIPTION
content:
<i><b>borg</b> (BorgBackup) is a highly efficient and secure deduplicating backup program. Its primary goal is to provide an easy-to-use, robust, and performant solution for data backup, suitable for both local and remote scenarios. Borg achieves significant storage savings through its innovative deduplication process, which breaks files into variable-size chunks and stores only unique chunks. This means that if you back up multiple versions of a file, or many similar files, only the unique data is stored, saving considerable disk space.<br><br>Security is a core feature, offering authenticated encryption to protect your data's confidentiality and integrity. Various strong encryption ciphers (e.g., AES, ChaCha20) and MAC algorithms (e.g., Blake2) are supported. Data compression is also built-in, with options like zlib, lz4, and zstd available to further reduce storage requirements and network transfer sizes.<br><br>Borg supports remote backups over SSH, treating remote repositories as if they were local. It uses a fuse filesystem to mount archives as regular directories, allowing easy browsing and extraction of files. Its robust design handles large datasets efficiently and provides strong data integrity checks, making it a reliable choice for critical backups.</i>


title: CAVEATS
content:
<i><br><b>Resource Usage:</b> Borg can be CPU-intensive during backup and restore operations due to encryption, decryption, compression, and decompression. It also requires sufficient RAM for its chunking and caching mechanisms, especially for large datasets.<br><br><b>Repository Integrity:</b> Interrupting Borg operations (e.g., network failure, power loss) without proper cleanup can lead to repository corruption. The <b>borg check</b> command is crucial for verifying integrity.<br><br><b>Key Management:</b> Loss of the encryption passphrase or key file means permanent data loss. Securely managing your encryption keys is paramount.<br><br><b>Performance:</b> While generally fast, performance can vary greatly depending on CPU speed, I/O throughput, network latency (for remote repos), and the chosen encryption/compression algorithms.</i>


title: REPOSITORY CONCEPT
content:
<i>A <b>borg</b> repository is the central storage location for all your backup archives. It's an ordinary directory (or accessible via SSH for remote repos) that contains the deduplicated, encrypted, and compressed data. All operations (creating, listing, extracting, checking, pruning) are performed against a specified repository.</i>


title: DEDUPLICATION MECHANISM
content:
<i>Borg's deduplication works by segmenting files into variable-sized chunks using a rolling hash algorithm. Each chunk is then hashed, and only chunks with unique hashes are stored in the repository. If a chunk already exists, a reference is stored instead, significantly reducing storage requirements, especially across multiple backups of similar data or identical files. This content-addressable storage model is fundamental to its efficiency.</i>


title: SECURITY FEATURES
content:
<i>Borg provides strong security through authenticated encryption. This means not only is your data encrypted (confidentiality), but its integrity is also verified, preventing unauthorized modification. It supports various encryption modes like `repokey` (key derived from passphrase, stored in repo), `repokey-blake2` (adds Blake2 for stronger KDF), and `keyfile` (key stored in an external file).</i>


title: REMOTE OPERATION
content:
<i>Borg supports backing up to and restoring from remote repositories over SSH. The remote <b>borg</b> process handles all cryptographic and deduplication operations on the remote end, minimizing the amount of data transferred and improving performance for remote backups.</i>


title: HISTORY
content:
<i><b>BorgBackup</b> originated as a fork of the <b>attic</b> backup program. The fork occurred around 2015 due to disagreements within the <b>attic</b> development community regarding its direction and pace of development. Borg's creators aimed for more active development, feature additions (especially enhanced security features like authenticated encryption), and performance improvements. It quickly gained popularity due to its robust design, high performance, and commitment to active maintenance and new features, becoming a de facto standard for many Linux users seeking a modern, deduplicating backup solution.</i>


title: SYNOPSIS
content:
<B>bosh</B> [<I>GLOBAL_OPTIONS</I>] <I>COMMAND</I> [<I>COMMAND_OPTIONS</I>] [<I>ARGUMENTS</I>]<br><br>Example: <B>bosh</B> <B>--environment</B> <I>my-bosh-director</I> <B>deploy</B> <I>manifest.yml</I>


title: PARAMETERS
content:
<b>-e, --environment <name|alias></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target BOSH Director environment by name or alias. This is crucial for interacting with a specific BOSH deployment.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats command output as JSON, useful for scripting and integration with other tools.<br><br><b>-n, --non-interactive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips interactive prompts and assumes 'yes' to confirmations, useful for automation.<br><br><b>--no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables colored output in the terminal, which can be helpful for logging or specific terminal configurations.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints debug logs, providing more verbose and detailed output for troubleshooting purposes.<br><br><b>--ca-cert <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a custom CA certificate to trust when connecting to the BOSH Director, important for secure communication.<br><br>


title: DESCRIPTION
content:
<i>BOSH</i> (originally an acronym for BOSH Outer SHell) is an open-source tool for deploying and managing complex distributed systems. While widely known as the underlying infrastructure management layer for <B>Cloud Foundry</B>, it's a general-purpose orchestration tool capable of deploying any software stack onto various Infrastructure-as-a-Service (IaaS) providers like AWS, Google Cloud Platform, Azure, OpenStack, and vSphere.<br><br><i>BOSH</i> automates the entire lifecycle of a distributed system, from initial deployment and provisioning of virtual machines to ongoing management, health monitoring, and self-healing. It ensures the system's resilience by detecting and recovering from failures (e.g., restarting crashed VMs or re-creating instances). Key concepts include <b>Releases</b> (versioned collections of source code, configurations, and scripts), <b>Stemcells</b> (versioned OS images with a BOSH Agent), and the <b>BOSH Director</b> (the central BOSH management component). It promotes an 'immutable infrastructure' approach, simplifying updates and rollbacks.


title: CAVEATS
content:
<i>BOSH</i> is not a native Linux command-line utility; it must be installed separately (typically as a Go executable or via a package manager).<br><br>It requires a running <i>BOSH Director</i> instance to perform any operations. The learning curve can be steep due to its unique architectural concepts (Releases, Stemcells, Instance Groups, etc.), and it's primarily designed for managing complex, distributed systems rather than simple single-server applications.


title: BOSH DIRECTOR
content:
The <i>BOSH Director</i> is the central component of a <i>BOSH</i> deployment. It's a server that manages the lifecycle of your deployed systems. It orchestrates VMs, installs software, monitors health, and performs self-healing actions. All <i>BOSH CLI</i> commands interact with a specific <i>BOSH Director</i>, which acts as the control plane for your infrastructure.


title: RELEASES AND STEMCELLS
content:
A <b>Release</b> is a versioned archive containing source code, compiled binaries, configuration files, and packaging scripts for a piece of software (e.g., Cloud Foundry components, a database, or your application). A <b>Stemcell</b> is a versioned operating system image (e.g., Ubuntu, CentOS) with a <i>BOSH Agent</i> installed. <i>BOSH</i> combines a Release with a Stemcell to create and manage instances on IaaS providers, ensuring consistent and reproducible deployments across different environments.


title: HISTORY
content:
<i>BOSH</i> was originally developed by <B>VMware</B> as part of its Cloud Foundry efforts and later open-sourced. Its development began with a focus on solving the challenges of deploying and managing highly available, complex distributed systems in the cloud. It became a foundational component of the <B>Cloud Foundry</B> Platform-as-a-Service (PaaS), responsible for managing the underlying virtual machines and services. Over time, it evolved into a general-purpose deployment tool, adopted by various organizations for reliable software delivery and infrastructure automation, emphasizing immutable infrastructure principles.


title: SYNOPSIS
content:
<code>bower &lt;command&gt; [&lt;options&gt;]</code><br><br>Common commands include: <br><code><I>bower install</I></code><br><code><I>bower search</I></code><br><code><I>bower list</I></code><br><code><I>bower uninstall</I></code><br><code><I>bower update</I></code><br><code><I>bower init</I></code>


title: PARAMETERS
content:
<b>--allow-root</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allow running Bower as the root user, which is generally discouraged for security reasons.<br><br><b>--config.<I>key</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override a specific configuration value for the command (e.g., <code>--config.directory=./assets</code>).<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the command to execute, bypassing certain checks or overwriting existing files.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output results in JSON format, useful for scripting and programmatic interactions.<br><br><b>--loglevel <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the verbosity of log messages to <I>debug</I>, <I>info</I>, <I>warn</I>, <I>error</I>, or <I>silent</I>.<br><br><b>--offline</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Work in offline mode, using only cached packages and avoiding network requests.<br><br><b>--production</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install only production dependencies, skipping development-specific dependencies defined in <code>bower.json</code>.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for a specific command or general Bower usage.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the installed version of Bower.<br><br>


title: DESCRIPTION
content:
The <b>bower</b> command-line tool is a package manager designed specifically for web-oriented front-end dependencies such as JavaScript libraries, CSS frameworks, fonts, and images. Unlike traditional Linux commands that are part of the operating system core, Bower is an application installed via Node.js's package manager, npm, but it runs effectively within a Linux terminal environment. Its primary function is to fetch and install client-side packages and their dependencies into a specified project directory (commonly <code>bower_components/</code>), focusing on providing ready-to-use assets for web development. It was conceived to manage a flat dependency tree, avoiding the nested structures often seen in Node.js modules. While widely used in the past, Bower has largely been superseded by more modern front-end tooling like npm and Yarn for managing dependencies.


title: CAVEATS
content:
The <b>bower</b> project is officially deprecated and no longer actively maintained. Its GitHub repository prominently displays a deprecation notice, advising users to migrate their front-end dependency management to npm or Yarn. This means Bower may not receive updates for new features, bug fixes, or security vulnerabilities. It relies on Node.js and npm for installation and operation. Its dependency resolution, while designed to be flat, can sometimes lead to version conflicts if not managed carefully, especially in projects with many dependencies.


title: INSTALLATION
content:
Bower is installed globally via npm (Node.js Package Manager) using the command:<br><code>npm install -g bower</code><br>This command makes the <code>bower</code> executable available in your system's PATH, allowing you to run it from any directory in your Linux terminal.


title: TYPICAL WORKFLOW
content:
A common workflow with Bower involves initializing a project with <code>bower init</code>, which creates a <code>bower.json</code> file to define project metadata and dependencies. Packages are then installed using <code>bower install &lt;package&gt; --save</code>, which fetches the package and adds it to the project's dependencies in <code>bower.json</code>. Installed packages are typically placed in the <code>bower_components/</code> directory. These assets can then be directly linked in HTML files or integrated into a build pipeline using task runners like Gulp or Grunt to concatenate, minify, or process them.


title: HISTORY
content:
Bower was developed by Twitter and first released in 2012. It quickly gained traction as a crucial tool for front-end web development, primarily because npm at the time was heavily focused on Node.js modules and back-end dependencies, leaving a significant gap for client-side assets. Bower filled this void by providing a dedicated solution for managing JavaScript libraries, CSS frameworks, and other static web components. Its architecture prioritized a flat dependency structure, which was perceived as simpler for front-end projects than the nested `node_modules` structure. However, as npm evolved to better support front-end packages (e.g., with improved dependency resolution, `package-lock.json`, and direct client-side package distribution), and with the rise of alternatives like Yarn, Bower's distinct advantages diminished. In 2017-2018, Bower's official maintainers announced its deprecation, encouraging developers to transition to npm or Yarn, which led to a significant decline in its usage and active development.


title: SYNOPSIS
content:
As 'box' is <I>not a standard Linux command</I>, a universal synopsis cannot be provided. If you encountered a <I>box</I> command, it is likely a custom script, an alias, or a very specific utility installed in your environment. Its syntax would depend entirely on its custom implementation.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;No universally defined parameters or options exist for 'box' as it is not a standard Linux command. Any parameters would be specific to a custom implementation.<br><br>


title: DESCRIPTION
content:
The term 'box' as a direct, standalone Linux command (<I>box(1)</I>) is <I>not a standard or widely recognized utility</I> across most mainstream Linux distributions. Unlike commands such as <B>ls</B> or <B>cd</B>, there is no universal <B>man box</B> page.<br><br>However, the concept of 'boxing' in Linux often refers to creating <I>isolated environments</I> or <I>sandboxes</I> for applications or processes. This can involve technologies like <B>containers</B> (e.g., Docker, Podman), <B>virtual machines</B> (e.g., KVM, VirtualBox, Vagrant), or more lightweight <B>chroot jails</B> or <B>namespaces</B> (like <I>systemd-nspawn</I>). These tools effectively 'box in' an application, providing it with its own set of resources (filesystem, network, process IDs) and preventing it from directly interacting with the host system or other processes outside its designated 'box'.<br><br>Some niche or custom scripts might be named <I>box</I> for specific purposes (e.g., a script to automate container creation or a tool for drawing ASCII art boxes), but these are not part of the standard Linux command set.


title: CAVEATS
content:
The most significant caveat is that <I>box</I> is <I>not a standard or widely adopted Linux command</I>. Users expecting a built-in utility will not find it in typical distributions. Its functionality, if present, is entirely context-dependent, referring either to a specific, often localized, script or a broader concept of isolation and virtualization. Therefore, any usage or expected behavior must be derived from its specific implementation on a given system, rather than general Linux documentation.


title: POTENTIAL APPEARANCES OF 'BOX'
content:
A command named <I>box</I> might arise in specific contexts such as:<br>- <I>Custom Scripts:</I> System administrators or developers may create a shell script or program named <I>box</I> to encapsulate specific actions, e.g., to launch a pre-configured container, manage a development environment, or perform system cleanup within an isolated context.<br>- <I>Niche Utilities:</I> Less common or specialized software packages might include a utility named <I>box</I> (e.g., for drawing ASCII art boxes on a terminal, or specific project packaging tools like 'The Box Project' for PHP applications).<br>- <I>Aliases/Functions:</I> A user's shell configuration might define <I>box</I> as an alias or shell function, redirecting to a more complex command or sequence of commands.


title: HISTORY
content:
As a non-standard command, <I>box</I> does not have a formal, widely documented history of development and usage comparable to core Linux utilities. Any specific <I>box</I> command you might encounter would have its own localized history based on its creation and evolution within a particular project or organization. The <I>concept</I> of 'boxing' (i.e., isolation) has evolved significantly in Linux, from early <B>chroot</B> environments to modern containerization technologies (Docker, Kubernetes) and hypervisors, but this is a history of concepts and tools, not a single 'box' command.


title: SEE ALSO
content:
<b>docker(1)</b>, <b>podman(1)</b>, <b>systemd-nspawn(1)</b>, <b>chroot(1)</b>, <b>namespaces(7)</b>, <b>firejail(1)</b>


title: SYNOPSIS
content:
<b>boxes</b> [<i>options</i>] [<i>file...</i>]<br><b>boxes</b> <b>-s</b><br><b>boxes</b> <b>-d</b> <i>design</i> [<i>options</i>]


title: PARAMETERS
content:
<b><b>-d</b> <i>&lt;design&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific box <i>design</i>. Use <b>-s</b> to list available designs.<br><br><b><b>-a</b> <i>&lt;align&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies text <i>alignment</i> within the box (e.g., <i>l</i> for left, <i>c</i> for center, <i>r</i> for right).<br><br><b><b>-p</b> <i>&lt;pad&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets internal <i>padding</i> for the box (e.g., <i>2</i> for 2 spaces, <i>2x1</i> for horizontal and vertical).<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a list of all available box <i>designs</i> to standard output.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads input from standard input (<i>stdin</i>). This is the default if no <i>file</i> is specified.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes output to standard output (<i>stdout</i>). This is the default behavior.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverses the operation, attempting to <i>remove</i> an existing box from the input text.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief <i>help</i> message and exits.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the program's <i>version</i> information and exits.<br><br>


title: DESCRIPTION
content:
The <b>boxes</b> command is a versatile command-line utility designed to surround text with various ASCII art boxes and patterns. It offers a rich collection of predefined box styles, ranging from simple line borders to intricate, decorative designs, making it ideal for enhancing the visual appeal of terminal outputs, scripts, or documentation. Users can pipe text directly into <b>boxes</b> or specify files as input, and the command will format the content within the chosen enclosure. Beyond basic framing, <b>boxes</b> provides extensive customization options for text alignment, padding, and dynamic box generation based on content length. Its flexibility allows for creative applications, such as framing important messages, adding comments to code snippets, or generating aesthetically pleasing headers and footers in command-line environments. It's a non-essential yet powerful tool for improving the readability and aesthetic presentation of plain text in Unix-like systems.


title: CAVEATS
content:
The visual fidelity of <b>boxes</b> output can vary significantly across different terminal emulators and font configurations, as it relies heavily on consistent ASCII character rendering. While versatile, it is primarily intended for plain text decoration and may not handle complex structured data or binary content gracefully. Reversing a box with <b>-r</b> is not always perfect, especially with highly customized or unusual designs, and might lead to unintended formatting.


title: CUSTOM DESIGN FILES
content:
Users can extend <b>boxes</b>' capabilities by creating custom design definition files. These files, typically named <i>.boxes</i> in the user's home directory or system-wide configuration paths, allow for the creation of unique box styles, including multi-line headers, footers, and complex framing logic using a simple, human-readable format. This feature provides immense flexibility beyond the built-in designs.


title: HISTORY
content:
The <b>boxes</b> utility was developed by <i>Thomas E. Dickey</i>. It emerged as a specialized tool for ASCII text formatting, distinct from core Unix utilities, to fulfill the need for enhanced terminal output aesthetics. Its development has focused on providing a wide array of customizable box styles and flexible input/output handling, making it a popular choice for adding visual structure to command-line interfaces and text-based documents.


title: SYNOPSIS
content:
<b>bpftool</b> <I>object</I> <I>command</I> [<i>options</i>]<br><b>bpftool</b> <I>help</I><br><b>bpftool</b> <I>version</I>


title: PARAMETERS
content:
<b><I>object</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of BPF object to interact with. Common objects include: <br><i>prog</i>: BPF programs loaded into the kernel.<br><i>map</i>: BPF maps, used for data sharing between programs and user space.<br><i>link</i>: BPF links, connecting programs to specific events or data sources.<br><i>btf</i>: BPF Type Format data, providing rich type information for BPF objects.<br><i>feature</i>: Queries the kernel's BPF capabilities and supported features.<br><i>cgroup</i>: Commands related to BPF programs attached to cgroups.<br><i>perf</i>: Commands for BPF perf event integration.<br><i>net</i>: Network-related BPF commands.<br><i>gen</i>: BPF code generation and conversion utilities.<br><i>struct_ops</i>: BPF struct operations.<br><i>iter</i>: BPF iterators for kernel state introspection.<br><br><b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform on the BPF object. Commands vary by object type but commonly include: <br><i>list</i>: Enumerate all objects of a given type.<br><i>show</i>: Display detailed information about a specific object (by ID, name, tag, or path).<br><i>dump</i>: (For <i>prog</i>) Output the bytecode of a BPF program.<br><i>pin</i>: Pin an object to the BPF filesystem (<i>bpffs</i>) for persistent access or identification.<br><i>getnext</i>: Retrieve the ID of the next object in a sequence.<br><i>update</i>: (For <i>map</i>) Add or update entries in a BPF map.<br><i>lookup</i>: (For <i>map</i>) Retrieve specific entries from a BPF map.<br><i>delete</i>: (For <i>map</i>) Remove entries from a BPF map.<br><br><b>[<i>options</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;General or object/command-specific options that modify behavior. Some frequently used options include:<br><b>-f</b>, <b>--json</b>: Output information in JSON format.<br><b>-p</b>, <b>--pretty</b>: Pretty-print JSON output for readability.<br><b>-V</b>, <b>--version</b>: Display the <i>bpftool</i> version.<br><b>-h</b>, <b>--help</b>: Show help message for a specific object or command.<br><b>id</b> <i>ID</i>: Specify an object using its kernel-assigned ID.<br><b>tag</b> <i>TAG</i>: Specify a program using its unique tag.<br><b>name</b> <i>NAME</i>: Specify an object using its assigned name.<br><b>pinned</b> <i>PATH</i>: Specify an object by its path on the BPF filesystem.<br><b>force</b>: Force an operation that might otherwise fail (e.g., overwriting a pinned file).<br><b>-m</b>, <b>--map-path</b>: Specify the path to a map file.<br><br>


title: DESCRIPTION
content:
<i>bpftool</i> is a powerful command-line utility for interacting with <a href="https://en.wikipedia.org/wiki/BPF_(disambiguation)">eBPF</a> (extended Berkeley Packet Filter) programs and maps within the Linux kernel. It serves as an essential tool for developers and administrators working with BPF, allowing them to inspect, debug, and manage BPF objects directly. <br><br>The utility provides various sub-commands to list and show details about loaded BPF programs, BPF maps, BPF links, BTF (BPF Type Format) data, and more. It can dump bytecode, retrieve map entries, pin objects to the BPF filesystem (<i>bpffs</i>) for persistence, and query kernel BPF features. <br><br><i>bpftool</i> is indispensable for understanding the runtime state of BPF applications, verifying program behavior, and automating BPF object management.


title: CAVEATS
content:
Most operations performed by <i>bpftool</i> require <b>root privileges</b> because they involve direct interaction with the Linux kernel's BPF subsystem. <br>The exact set of available commands and options, as well as their behavior, can depend significantly on the Linux kernel version. Newer kernels typically introduce more BPF features and thus more <i>bpftool</i> capabilities. <br>Incorrect usage of <i>bpftool</i>, especially when modifying BPF maps or programs, can lead to system instability or security vulnerabilities.


title: BPF FILESYSTEM (BPFFS)
content:
A fundamental concept for advanced <i>bpftool</i> usage is the BPF filesystem, typically mounted at <i>/sys/fs/bpf</i>. This pseudo-filesystem allows BPF objects (programs, maps, links) to be 'pinned' or named and made persistent. Pinning objects enables them to be accessed by path across different user-space applications or even after the application that created them exits, which is crucial for building complex and robust BPF-driven systems.


title: SCRIPTING WITH JSON OUTPUT
content:
<i>bpftool</i>'s support for JSON output (using the <b>-f</b> or <b>--json</b> options, optionally with <b>-p</b> or <b>--pretty</b>) is a key feature for automation. This structured output format makes it straightforward to parse <i>bpftool</i>'s results with scripting languages like Python or Bash, enabling seamless integration into monitoring tools, CI/CD pipelines, and automated debugging workflows for BPF applications.


title: HISTORY
content:
The history of <i>bpftool</i> is inextricably linked to the rapid evolution of eBPF. While BPF originated as a simple packet filter in the early 1990s, the 'extended' BPF (eBPF) was introduced into the Linux kernel (version 3.18, in 2014) primarily by Alexei Starovoitov. This extension dramatically broadened BPF's scope beyond networking to encompass system tracing, security, observability, and more. <br><br>As eBPF's capabilities grew, a dedicated and robust user-space utility became essential for inspecting, managing, and debugging the kernel's BPF objects. <i>bpftool</i> was developed to fulfill this role and is distributed as part of the Linux kernel source tree itself (under <i>tools/bpf/bpftool</i>). Its development closely tracks new BPF features in the kernel, ensuring it remains the authoritative and feature-rich interface for eBPF developers and administrators.


title: SYNOPSIS
content:
<br><b>bpftrace</b> [<i>options</i>] <I>program</I> [<i>args</i>...]<br><b>bpftrace</b> [<i>options</i>] -e '<i>program</i>' [<i>args</i>...]


title: PARAMETERS
content:
<b>-e '<i>program</i>'</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified <i>program</i> string.<br>This allows one-liner scripts without saving them to a file.<br><br><b>-p <i>PID</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to a specific process ID for user-space probes (e.g., uprobes, USDT).<br><br><b>-c '<i>COMMAND</i>'</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute <i>COMMAND</i> and trace only processes spawned by it.<br><br><b>-o <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output to <i>FILE</i> instead of standard output.<br><br><b>-B <i>SIZE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the eBPF ring buffer size (in bytes or with suffix like 'K', 'M', 'G').<br>Defaults to 8MB.<br><br><b>-f <i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify output format (e.g., 'json', 'text').<br><br><b>-l [<i>PROBE</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List available probes. If <i>PROBE</i> is specified, list probes matching the pattern.<br><br><b>-L [<i>PROBE</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List available probes and their arguments. If <i>PROBE</i> is specified, list matching probes.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about compilation and execution.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output, including dumped eBPF bytecode and more detailed internal logs.<br><br><b>-q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet mode, suppresses warnings.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message and exit.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<br><b>bpftrace</b> is a versatile and efficient high-level tracing language designed for Linux, built upon the foundation of <I>eBPF</I> (extended Berkeley Packet Filter). It allows users to dynamically inspect and trace various aspects of kernel and user-space activity with minimal overhead.<br><br>Users write simple, C-like scripts that are then compiled into <I>eBPF</I> bytecode by the <b>bpftrace</b> compiler. This bytecode is then loaded into the Linux kernel and executed safely and efficiently.<br><br>The tool enables deep introspection into system behavior, such as tracking system calls, monitoring kernel function entry/exit, observing user-space function calls, and analyzing performance events. It's widely used for debugging performance issues, understanding system bottlenecks, and gaining insights into complex software interactions without modifying or recompiling applications. Its low overhead and powerful scripting capabilities make it an invaluable tool for system administrators, developers, and SREs.


title: CAVEATS
content:
<br>Requires a relatively recent Linux kernel (typically 4.x or 5.x+) due to its reliance on modern <I>eBPF</I> features.<br>Requires root privileges (specifically <I>CAP_BPF</I>, <I>CAP_PERFMON</I>, or <I>CAP_SYS_ADMIN</I> capability) to load <I>eBPF</I> programs into the kernel.<br>While designed for low overhead, inefficiently written scripts or tracing too many events can still impact system performance.<br>The <I>eBPF</I> JIT compiler must be enabled in the kernel for optimal performance.<br>Some advanced features may require kernel headers to be installed.


title: PROBE TYPES
content:
<br><b>bpftrace</b> supports a wide array of probe types for tracing different system events:<br><ul><li><b>kprobe/kretprobe</b>: Attach to kernel function entry/exit points.</li><li><b>uprobe/uretprobe</b>: Attach to user-space function entry/exit points in a process.</li><li><b>tracepoint</b>: Attach to stable kernel tracepoints (e.g., `syscalls`, `sched`, `net`).</li><li><b>syscall</b>: Shorthand for tracing system calls (e.g., `syscalls:sys_enter_openat`).</li><li><b>profile</b>: Periodic sampling of stack traces (e.g., `profile:hz:99`, `profile:s:1`).</li><li><b>interval</b>: Execute a script at regular time intervals (e.g., `interval:s:1`).</li><li><b>software/hardware</b>: Access performance counter events (e.g., `software:cpu-clock`, `hardware:cache-misses`).</li><li><b>USDT</b>: User-level Statically Defined Tracing, for applications with explicit tracepoints.</li><li><b>BEGIN/END</b>: Special probes that run once at the start/end of the bpftrace script's execution.</li></ul>


title: SCRIPT STRUCTURE
content:
<br>A <b>bpftrace</b> script consists of one or more clauses, each defined by a `probe /filter/ { action }` structure:<br><ul><li><b>probe</b>: Specifies the event to attach to (e.g., `kprobe:do_sys_open`).</li><li><b>filter</b>: An optional boolean expression that must evaluate to true for the `action` to execute (e.g., `/pid == 1234/`).</li><li><b>action</b>: A block of C-like code enclosed in braces `{}` that executes when the probe fires and the filter passes. Actions can include printing, aggregating data into maps, and manipulating variables.</li></ul><br>Example: `kprobe:do_sys_open { printf("Open called by PID %d\n", pid); }`


title: VARIABLES AND MAPS
content:
<br><b>bpftrace</b> provides several types of variables and powerful data structures (maps) for aggregating and storing tracing data:<br><ul><li><b>Built-in Variables</b>: Predefined variables like `pid` (process ID), `comm` (command name), `tid` (thread ID), `uid` (user ID), `arg0-argN` (function arguments), `retval` (return value), etc.</li><li><b>Global Variables</b>: User-defined variables with a leading `@` (e.g., `@my_var`). They are accessible across all probes.</li><li><b>Thread-Local Variables</b>: User-defined variables with a leading `$` (e.g., `$my_thread_var`). They store data unique to each thread.</li><li><b>Associative Arrays (Maps)</b>: Key-value stores for aggregation, also prefixed with `@` (e.g., `@counts[comm] = count();`). Common aggregation functions include `count()`, `sum()`, `avg()`, `min()`, `max()`, `hist()` (histogram), `lhist()` (linear histogram). Maps can be printed at the `END` probe or on script exit.</li></ul>


title: HISTORY
content:
<br><b>bpftrace</b> was primarily developed by Brendan Gregg, with contributions from others, as a high-level frontend for <I>eBPF</I>. It was first publicly released in late 2018.<br>Its design was heavily inspired by Sun's <I>DTrace</I> but specifically built for the Linux <I>eBPF</I> framework. This filled a critical gap by providing an intuitive, expressive language for dynamic tracing on Linux, making the powerful <I>eBPF</I> capabilities more accessible to system administrators and developers. It rapidly gained adoption as a go-to tool for deep system observability.


title: SEE ALSO
content:
<br>perf(1) - Linux performance analysis tools., <br>strace(1) - Trace system calls and signals., <br>ltrace(1) - Trace library calls., <br>bcc(8) - BPF Compiler Collection (a lower-level toolkit for eBPF)., <br>DTrace(1M) - Solaris dynamic tracing tool (conceptual inspiration).


title: SYNOPSIS
content:
<b>bpkg</b> [<I>options</I>] <I>command</I> [<I>arguments</I>]<br>Common commands:<br><b>bpkg</b> install <I>repository</I><br><b>bpkg</b> remove <I>repository</I><br><b>bpkg</b> update [<I>repository</I>]<br><b>bpkg</b> search <I>keyword</I><br><b>bpkg</b> list<br><b>bpkg</b> help


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for <b>bpkg</b> or a specific command.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about operations.<br><br><b>-g, --global</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform operations globally, affecting system-wide <b>bpkg</b> directories.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force an operation, often overwriting existing files or bypassing warnings.<br><br><b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug mode, providing extensive diagnostic output.<br><br><b>-c, --config <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file path.<br><br><b>-p, --proxy <url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specified proxy for network operations.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output, showing only critical messages.<br><br><b>install <repo></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install a package from a specified Git repository URL or short name.<br><br><b>remove <repo></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove an installed package.<br><br><b>update [<repo>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update all or a specific installed package.<br><br><b>search <keyword></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for packages matching a keyword in known registries (if configured).<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all currently installed packages.<br><br><b>info <repo></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about an installed or available package.<br><br><b>create <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a new <b>bpkg</b> package template.<br><br><b>link <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Link a local directory as a <b>bpkg</b> package.<br><br><b>clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clean <b>bpkg</b>'s cache directory.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display current <b>bpkg</b> configuration settings.<br><br>


title: DESCRIPTION
content:
<b>bpkg</b> is a <i>minimalistic</i> and <i>cross-platform</i> package manager primarily designed for C and C++ projects, emphasizing simplicity and speed. Unlike system-level package managers like <b>apt</b> or <b>dnf</b>, <b>bpkg</b> operates at the project level, allowing developers to manage dependencies for their C/C++ source code, particularly header-only libraries. It functions by cloning Git repositories directly from URLs, making it highly flexible and decentralized, as it does not rely on a central package repository.<br><br>Its design philosophy is to provide a "no-frills" solution for integrating third-party code. <b>bpkg</b> is particularly useful in environments where a lightweight solution is preferred, such as embedded systems development or scenarios where external dependencies need to be managed without complex build systems. It requires <b>git</b> and <b>curl</b> to be present on the system to fetch and manage packages. Being a single-file, header-only C/C++ library itself, <b>bpkg</b> is also easy to integrate and build from source.


title: CAVEATS
content:
<i>bpkg</i> is not a system-wide package manager; it does not manage system libraries or binaries. Its scope is primarily C/C++ source code dependencies. It relies on <i>git</i> and <i>curl</i> being pre-installed on the system to function correctly.<br><br>Without a central, curated repository, package discovery can be less straightforward than with other C++ package managers like Conan or vcpkg, relying on direct Git repository URLs or self-maintained lists. As a minimal tool, it might lack advanced features (e.g., complex dependency resolution for transitive dependencies, binary package management) found in more comprehensive solutions.


title: DECENTRALIZED NATURE
content:
Unlike many package managers that rely on a central repository, <b>bpkg</b> fetches packages directly from Git repository URLs. This decentralized approach means that any Git repository can be a <b>bpkg</b> package, promoting flexibility but requiring users to know the exact repository URLs.


title: HEADER-ONLY PHILOSOPHY
content:
While capable of managing any source code, <b>bpkg</b> is particularly well-suited for header-only C/C++ libraries. Its design aligns with the concept of simply dropping source files into a project, making it ideal for self-contained components.


title: HISTORY
content:
<i>bpkg</i> was created by 'r-lyeh' as a lightweight, cross-platform package manager designed with simplicity and speed in mind. Its development focused on providing a minimal tool for C/C++ developers to easily integrate header-only libraries or source code from Git repositories, without the overhead of more complex build systems or dependency managers. It emerged as a solution for projects requiring a straightforward approach to dependency management, particularly for embedded or small-scale applications where full-featured package managers might be too heavy or unnecessary.


title: SYNOPSIS
content:
<b>bpython</b> [<i>options</i>] [<i>scriptfile</i>] [<i>args</i>]<br>or<br><b>bpython</b> [<i>options</i>] -c <i>command</i> [<i>args</i>]


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's help message and exit.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b>-i INTERPRETER, --interpreter INTERPRETER</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specific Python interpreter executable, e.g., <i>/usr/bin/python3</i>.<br><br><b>-c CONFIG, --config CONFIG</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an alternative configuration file instead of the default.<br><br><b>-p, --pastebin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically upload the session content to a pastebin service on exit.<br><br><b>-o OUTPUT, --output OUTPUT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the entire session's output to a specified file on exit.<br><br><b>--curses</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the use of the curses-based full-screen interface (often the default).<br><br><b>--cli</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the use of the simpler command-line interface, which lacks some advanced features.<br><br><b>--urwid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the use of the urwid-based interface.<br><br>


title: DESCRIPTION
content:
<b>bpython</b> is a sophisticated, interactive Python interpreter that aims to provide a richer and more user-friendly experience than the standard Python shell. It offers a range of features designed to boost productivity and reduce common frustrations during interactive coding sessions. Key functionalities include <i>inline autocompletion</i> for attributes, methods, and built-in functions, <i>syntax highlighting</i> as you type, and a unique <i>'rewind'</i> feature that allows you to undo previous statements and their side effects. It also integrates with external services like pastebin for easily sharing code snippets and provides intelligent indentation. bpython typically runs in a terminal using a curses-based interface, but also offers simpler command-line and urwid-based interfaces. It's an excellent tool for rapid prototyping, learning Python, and debugging.


title: CAVEATS
content:
Due to its reliance on <i>curses</i> or <i>urwid</i>, <b>bpython</b>'s rendering might vary across different terminal emulators or operating systems. It may have a slightly longer startup time compared to the plain Python interpreter, and its 'rewind' feature might not fully undo side effects of certain complex operations or external interactions.


title: KEY BINDINGS
content:
<b>bpython</b> utilizes several function keys for quick access to its features:<br><i>F1</i>: Help<br><i>F2</i>: Configuration<br><i>F3</i>: Clear screen<br><i>F4</i>: Rewind (undo last statement)<br><i>F5</i>: Pastebin (upload session)<br><i>F8</i>: Save (save session to file)<br><i>F9</i>: Toggle paste mode<br><i>F10</i>: Quit


title: CONFIGURATION
content:
<b>bpython</b>'s behavior can be extensively customized via a configuration file, typically located at <i>~/.config/bpython/config</i> or <i>~/.bpython/config</i>. This file allows users to define key bindings, change color schemes, enable/disable features like autocompletion and syntax highlighting, and configure pastebin options.


title: HISTORY
content:
<b>bpython</b> was initially created by Robert Collins and first released around 2008. It was conceived as a highly interactive and user-friendly alternative to the standard Python REPL (Read-Eval-Print Loop), focusing on providing immediate visual feedback and powerful navigation capabilities that were not present in other tools at the time. Its development has focused on enhancing the interactive coding experience for Python programmers.


title: SYNOPSIS
content:
<b>bq</b> [<I>GLOBAL_FLAGS</I>] <I>command</I> [<I>command_args</I>]<br><b>bq</b> --version<br><b>bq</b> help [<I>command</I>]


title: PARAMETERS
content:
<b>--project <I>PROJECT_ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Google Cloud project ID to use for the command. Overrides the default configured project.<br><br><b>--dataset <I>DATASET_ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default dataset for operations that don't explicitly specify one.<br><br><b>--location <I>LOCATION</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the BigQuery dataset location (e.g., 'US', 'europe-west2').<br><br><b>--format <I>FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format for data (e.g., 'json', 'csv', 'pretty', 'none').<br><br><b>--dry_run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks a query or load job without actually running it or incurring costs.<br><br><b>--max_rows <I>COUNT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of rows to return from a query or table data command.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informational messages, showing only results or errors.<br><br><b>--verbosity <I>LEVEL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the verbosity level for logging (e.g., 'debug', 'info', 'warning', 'error', 'critical').<br><br><b>--synchronous_mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits for asynchronous jobs (e.g., queries, loads) to complete before exiting.<br><br>


title: DESCRIPTION
content:
The <b>bq</b> command is the command-line interface (CLI) tool for Google BigQuery, a fully managed, serverless, and highly scalable data warehouse. It allows users to interact with BigQuery directly from their terminal, managing datasets, tables, views, and jobs. Users can run SQL queries, load data into tables from various sources (e.g., Google Cloud Storage, local files), export query results, and perform administrative tasks like managing access control and monitoring job status. While it operates on Linux, it is not a native Linux utility but rather part of the Google Cloud SDK, requiring installation and authentication to a Google Cloud project. It serves as a powerful and flexible alternative to the BigQuery web UI, enabling scripting and automation of data warehouse operations.


title: CAVEATS
content:
The <b>bq</b> command requires the Google Cloud SDK to be installed and configured with appropriate authentication credentials for a Google Cloud project. Operations performed using <b>bq</b> consume BigQuery resources and may incur costs according to Google Cloud's pricing. It's crucial to understand BigQuery's data processing and storage costs. Some commands may create asynchronous jobs, and their completion status needs to be monitored separately unless <b>--synchronous_mode</b> is used. The command's functionality is entirely dependent on the availability and performance of the BigQuery service.


title: COMMON SUBCOMMANDS
content:
The <b>bq</b> tool operates via subcommands, each tailored for specific BigQuery operations. Common subcommands include:<br><i><b>bq query</b> <I>SQL_QUERY</I></i>: Executes a SQL query against BigQuery.<br><i><b>bq load</b> <I>DATASET.TABLE</I> <I>SOURCE_URI</I> <I>SCHEMA</I></i>: Loads data into a table from a specified source.<br><i><b>bq mk</b> <I>RESOURCE_TYPE</I> <I>ID</I></i>: Creates a new dataset, table, or view.<br><i><b>bq ls</b> [<I>DATASET_ID</I>]</i>: Lists datasets or tables within a dataset.<br><i><b>bq rm</b> <I>RESOURCE_TYPE</I> <I>ID</I></i>: Deletes a dataset, table, or view.<br><i><b>bq show</b> <I>RESOURCE_TYPE</I> <I>ID</I></i>: Displays information about a dataset, table, or job.


title: AUTHENTICATION
content:
Before using <b>bq</b>, you must authenticate to Google Cloud. This is typically done using the <b>gcloud auth login</b> command, which opens a browser for interactive login. Alternatively, service accounts can be used for automated scripts via <b>gcloud auth activate-service-account</b>.


title: HISTORY
content:
The <b>bq</b> command is an integral part of the Google Cloud SDK, which was first released in 2013 to provide a unified command-line experience for interacting with Google Cloud services. As BigQuery evolved from its initial beta release in 2010 into a fully managed enterprise-grade data warehouse, the <b>bq</b> tool has been continually updated to support new features, improve performance, and offer a comprehensive interface for data analysts, engineers, and administrators. Its development has focused on providing robust scripting capabilities and seamless integration with BigQuery's growing ecosystem of features, including streaming inserts, data manipulation language (DML), and advanced query capabilities.


title: SYNOPSIS
content:
<I>braa</I> <I>[options]</I> <I>&lt;target/net&gt;</I> <I>[target/net] ...</I><br>Example: <I>braa -c public -c private 192.168.1.0/24</I><br>Example: <I>braa -f targets.txt -o results.log -e .1.3.6.1.2.1.1.5.0</I>


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable <I>verbose output</I>.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable <I>debug output</I> for troubleshooting.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List <I>all OIDs</I> found, even if empty values are returned.<br><br><b><b>-c &lt;string&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an <I>SNMP community string</I> to use (e.g., 'public', 'private'). Can be specified multiple times.<br><br><b><b>-co &lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read <I>SNMP community strings</I> from the specified <I>file</I>.<br><br><b><b>-t &lt;milliseconds&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the <I>receive timeout</I> for SNMP responses in milliseconds (default: 200).<br><br><b><b>-p &lt;port&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the <I>UDP port</I> for SNMP (default: 161).<br><br><b><b>-i &lt;milliseconds&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the <I>interval</I> between sending SNMP packets.<br><br><b><b>-x &lt;count&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of <I>retries</I> for each SNMP request.<br><br><b><b>-e &lt;OID&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enumerate a <I>specific OID</I> (Object Identifier) on discovered devices. Can be specified multiple times.<br><br><b><b>-f &lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read <I>target IP addresses or networks</I> from the specified <I>file</I>.<br><br><b><b>-o &lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write <I>results</I> to the specified <I>output file</I>.<br><br><b><b>-a &lt;address&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bind to a <I>specific local IP address</I> for sending packets.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display <I>usage information</I> (help message).<br><br>


title: DESCRIPTION
content:
`braa` is a specialized network utility for <I>fast SNMP scanning</I> and <I>brute-forcing SNMP community strings</I>. It is often included as part of security tool suites like <I>thc-ipv6</I> or available standalone. Its primary function is to efficiently discover SNMP-enabled devices across large IP ranges, attempt to guess common or provided community strings (e.g., "public", "private"), and enumerate Object Identifiers (OIDs) to gather system information, such as uptime, device description, or network interfaces.<br><br>This tool is widely used by <I>network administrators</I> for auditing network security, identifying misconfigured devices, and by <I>penetration testers</I> to gain insights into network infrastructure. It leverages raw sockets for speed and can handle a high volume of requests.


title: CAVEATS
content:
Using <I>braa</I> can generate a significant amount of network traffic, potentially impacting network performance. It should <I>only be used on networks you have explicit permission to scan</I>, as unauthorized scanning can be considered a cybercrime. Depending on the system and configuration, running <I>braa</I> might require <I>root privileges</I> for raw socket access. It is not a standard pre-installed Linux command and typically needs to be installed from specific security tool repositories or compiled from source.


title: <B>ETHICAL USE</B>
content:
Always ensure you have <I>proper authorization</I> before using <I>braa</I> against any network. Unauthorized use can lead to legal consequences.


title: <B>INSTALLATION</B>
content:
<I>braa</I> is not part of standard Linux distributions. It typically needs to be installed from security-focused repositories (e.g., Kali Linux, Parrot OS) or compiled from its source code, often found within the <I>thc-ipv6</I> project.


title: HISTORY
content:
<I>braa</I> was developed by <I>The Hacker's Choice (THC)</I>, a well-known group in the cybersecurity community, as part of their comprehensive suite of network security tools, specifically within the <I>thc-ipv6</I> project (despite <I>braa</I> being an IPv4 tool). Its inception aimed to provide a <I>fast and efficient</I> method for enumerating SNMP-enabled devices and cracking weak community strings, addressing a common vulnerability in network infrastructure. It has been maintained as a specialized tool for security auditing and penetration testing since its release.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available command-line options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Brasero version number.<br><br><b>--display=<I>DISPLAY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to use for the graphical interface.<br><br><b>--session</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs Brasero to use the session manager.<br><br><b>--disable-sound</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables sound events within the application.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug messages for troubleshooting.<br><br><b><I>URI</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A path to a disc image file (e.g., <I>.iso</I>) or a Brasero project file (<I>.brasero</I>) to open upon launch.<br><br>


title: DESCRIPTION
content:
Brasero is a <I>free and open-source</I> disc burning application designed for Unix-like operating systems, primarily as part of the <B>GNOME desktop environment</B>.<br><br>It aims to be simple to use while offering a wide range of features for burning CDs and DVDs, including data discs, audio CDs, video DVDs (from existing files), and disc copying. Brasero supports various disc types (CD-R, CD-RW, DVD-R, DVD+R, DVD-RW, DVD+RW, DVD-RAM) and features like on-the-fly burning, multi-session support, and integrity checking of burned discs.<br><br>While it provides a graphical user interface for most operations, it can be launched from the command line to open specific files or project types.


title: CAVEATS
content:
Brasero is primarily a <B>Graphical User Interface (GUI)</B> application. Its command-line usage is mainly limited to launching the GUI and optionally opening a specific file or project.<br><br>It is <B>not designed for non-interactive disc burning</B> directly from the command line; for such tasks, tools like <I>wodim</I> or <I>growisofs</I> are more suitable.<br><br>Its functionality depends on the presence of an optical disc drive and necessary underlying libraries (e.g., GStreamer for multimedia decoding).


title: SUPPORTED PROJECT TYPES
content:
Brasero offers distinct project types to guide users through the burning process:<br><ul><li><I>Data Project</I>: For burning files and folders onto a disc.</li><li><I>Audio Project</I>: For creating standard audio CDs from various audio file formats.</li><li><I>Video Project</I>: For creating video DVDs or SVCDs/VCDs from video files.</li><li><I>Copy Disc</I>: For making an exact copy of an existing CD or DVD.</li><li><I>Burn Image</I>: For burning disc image files (like ISO files) to optical media.</li></ul>


title: UNDERLYING TECHNOLOGIES
content:
Brasero relies on several backend libraries for its functionality, including <B>cdrtools</B> (or its forks like <I>wodim</I> and <I>genisoimage</I>) for actual disc writing, and <B>GStreamer</B> for multimedia encoding and decoding when creating audio or video projects.


title: HISTORY
content:
Brasero started development around <B>2004-2005</B> with the aim of providing a simple yet powerful disc burning solution for the <I>GNOME desktop environment</I>.<br><br>It was officially adopted into the <B>GNOME project</B> and has been a staple utility for optical media management within GNOME ever since, undergoing continuous development and improvements to support new disc formats and burning technologies.


title: SYNOPSIS
content:
<b>brave-browser</b> [<i>options</i>] [<i>URLs</i>]<br><br>Alternatively, on some systems or with user-defined aliases:<br><b>brave</b> [<i>options</i>] [<i>URLs</i>]


title: PARAMETERS
content:
<b><i>URLs</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified one or more URLs in new tabs or a new window.<br><br><b><b>--new-window</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces opening a new browser window.<br><br><b><b>--incognito</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new incognito (private browsing) window.<br><br><b><b>--app=</b><I>URL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the specified URL as a web application, usually without browser UI elements.<br><br><b><b>--profile-directory=</b><I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user profile to use for the session.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the Brave browser version information.<br><br><b><b>--disable-gpu</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables GPU hardware acceleration, useful for troubleshooting rendering issues.<br><br><b><b>--args</b> <I>...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes additional command-line arguments directly to the underlying Chromium engine.<br><br>


title: DESCRIPTION
content:
<i>The <b>brave</b> command, typically executed as <b>brave-browser</b> depending on system installation and PATH configuration, serves as the command-line interface for interacting with the Brave web browser. Unlike traditional core Linux utilities, it is the executable for the Brave application itself, allowing users to launch the browser, open specific URLs, control window behavior, and manage profiles without relying solely on the graphical user interface. Its extensive command-line options are largely inherited from its Chromium codebase, providing powerful scripting capabilities for browser automation, testing, and customized launch scenarios. It's primarily used for opening new browser windows, tabs, specific web applications, or for debugging and configuring browser behavior from the terminal.</i>


title: CAVEATS
content:
<i>The primary executable is often named <b>brave-browser</b>; <b>brave</b> might be an alias or symlink. Many command-line options are inherited directly from Chromium and can be extremely numerous and sometimes change between versions. It is not a standard Linux system utility but an application executable, requiring the Brave browser to be installed.</i>


title: CHROMIUM HERITAGE
content:
<i>The <b>brave</b> command's vast array of options is largely due to its foundation on the Chromium open-source project. This means many command-line flags documented for Chromium-based browsers are also applicable to Brave.</i>


title: INSTALLATION AND PATH
content:
<i>Users typically install Brave via a package manager (e.g., <b>apt</b>, <b>dnf</b>) or a `.deb`/`.rpm` package. The executable is usually placed in a directory like <b>/usr/bin/</b>, making it accessible from the command line. If <b>brave</b> does not work, try <b>brave-browser</b>.</i>


title: HISTORY
content:
<i>The Brave browser was founded in 2015 by Brendan Eich, the creator of JavaScript and co-founder of Mozilla. Developed with a strong emphasis on user privacy, ad-blocking, and a unique Basic Attention Token (BAT) reward system, its command-line interface largely reflects the extensive options available in its open-source Chromium foundation. Its development has focused on providing a fast, secure, and privacy-centric browsing experience.</i>


title: SYNOPSIS
content:
<b>brctl</b> <I>command</I> [<I>bridge-name</I>] [<I>interface-name</I>] [<I>parameters</I>]<br><br><i>Examples of common usage patterns:</i><br><b>brctl</b> addbr <I>br0</I><br><b>brctl</b> addif <I>br0</I> <I>eth0</I><br><b>brctl</b> show<br><b>brctl</b> stp <I>br0</I> on


title: PARAMETERS
content:
<b>addbr <bridge></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Creates a new bridge device named <I>bridge</I>.</i><br><br><b>delbr <bridge></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deletes the bridge device named <I>bridge</I>.</i><br><br><b>addif <bridge> <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Adds the network <I>interface</I> to the specified <I>bridge</I>.</i><br><br><b>delif <bridge> <interface></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Removes the network <I>interface</I> from the specified <I>bridge</I>.</i><br><br><b>show</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all active bridge devices, their interfaces, and basic configuration.</i><br><br><b>showmacs <bridge></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the MAC addresses learned by the specified <I>bridge</I>.</i><br><br><b>showstp <bridge></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows Spanning Tree Protocol (STP) information for the specified <I>bridge</I>.</i><br><br><b>setageing <bridge> <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the MAC address aging time for the <I>bridge</I> in seconds.</i><br><br><b>setfd <bridge> <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the forwarding delay for the <I>bridge</I> in seconds (for STP).</i><br><br><b>sethello <bridge> <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the hello time for STP on the <I>bridge</I> in seconds.</i><br><br><b>setmaxage <bridge> <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the maximum message age for STP on the <I>bridge</I> in seconds.</i><br><br><b>setbridgeprio <bridge> <priority></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the bridge's STP priority (0-65535, lower is higher priority).</i><br><br><b>setportprio <bridge> <port> <priority></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets a specific <I>port</I>'s STP priority on the <I>bridge</I>.</i><br><br><b>stp <bridge> {on|off}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables or disables Spanning Tree Protocol (STP) on the specified <I>bridge</I>.</i><br><br>


title: DESCRIPTION
content:
The <b>brctl</b> command-line utility is used to create, manage, and configure <I>Ethernet bridge</I> devices on Linux systems.<br><br>An Ethernet bridge acts as a software switch, forwarding network traffic between different network interfaces (physical or virtual) to combine them into a single logical network segment. This is particularly useful in virtualization environments, such as with KVM or LXC containers, where virtual machines or containers need to connect to the host's physical network.<br><br>While still functional, <b>brctl</b> is largely considered a legacy tool. Modern Linux distributions often prefer the more comprehensive <I>iproute2</I> suite, specifically the <I>ip link</I> and <I>ip bridge</I> commands, for network configuration tasks. However, <b>brctl</b> remains straightforward for basic bridge management.


title: CAVEATS
content:
&bull; <b>Legacy Tool:</b> <b>brctl</b> is largely superseded by the <I>iproute2</I> suite (e.g., <I>ip link</I>) for modern Linux network configuration.<br>&bull; <b>Persistent Configuration:</b> Commands executed with <b>brctl</b> are not persistent across reboots. For permanent changes, integrate them into your system's network configuration files (e.g., <I>/etc/network/interfaces</I> on Debian/Ubuntu, <I>/etc/sysconfig/network-scripts</I> on RHEL/CentOS, or <I>Netplan</I> on newer systems).<br>&bull; <b>IP Addressing:</b> Adding an interface to a bridge causes the interface to lose its individual IP configuration. The bridge itself usually requires an IP address for the host to communicate on that network segment.


title: UNDERSTANDING ETHERNET BRIDGES
content:
An <I>Ethernet bridge</I> operates at Layer 2 of the OSI model, acting as a software switch. It inspects MAC addresses to intelligently forward frames between connected interfaces, rather than simply broadcasting all traffic. This allows multiple network segments (e.g., physical NICs, virtual Ethernet devices) to behave as if they are on the same local area network (LAN).


title: SPANNING TREE PROTOCOL (STP)
content:
STP (802.1D) is a network protocol that ensures a loop-free topology for Ethernet networks. When multiple paths exist between network segments (e.g., redundant links), STP logically blocks redundant paths to prevent broadcast storms and MAC address table instability. <b>brctl</b> provides commands to enable/disable STP and configure its parameters like forwarding delay, hello time, and bridge/port priorities.


title: HISTORY
content:
<b>brctl</b> is part of the <I>bridge-utils</I> package, which has been a staple in Linux networking for managing Ethernet bridges for many years. It was the primary tool for this purpose before the more unified <I>iproute2</I> utilities became prevalent. Its development has slowed, with <I>ip link</I> and <I>ip bridge</I> becoming the preferred methods for advanced bridge management and configuration.


title: PARAMETERS
content:
<b><i>n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional integer specifying the number of nested loops to exit. If <i>n</i> is 1, it exits the current (innermost) loop. If <i>n</i> is greater than 1, it exits <i>n</i> levels of enclosing loops. If <i>n</i> is not provided, it defaults to 1.<br><br>


title: DESCRIPTION
content:
The <b>break</b> command is a shell built-in used to exit immediately from <b>for</b>, <b>while</b>, <b>until</b>, or <b>select</b> loops within a shell script or interactive shell session. When <b>break</b> is executed, the remaining commands in the current loop iteration are skipped, and the loop itself is terminated. Execution then continues with the command immediately following the loop. By default, <b>break</b> exits only the innermost loop. However, it can be provided with an integer argument to specify how many levels of nested loops to exit simultaneously. This command is crucial for controlling flow in shell scripts, allowing for early termination of loops based on specific conditions, improving efficiency and logic.


title: CAVEATS
content:
<b>break</b> is a shell built-in command, not an external executable. It is interpreted directly by the shell.<br>It can only be used within the context of <b>for</b>, <b>while</b>, <b>until</b>, or <b>select</b> loops. Using it outside these constructs will result in an error.<br>It does not affect <b>if</b> statements or <b>case</b> statements; its scope is strictly limited to loop constructs.


title: USAGE EXAMPLE
content:
Here's a simple example demonstrating the use of <b>break</b>:<br><br><i>#!/bin/bash</i><br><i>for i in {1..10}; do</i><br><i>  if [ $i -eq 5 ]; then</i><br><i>    echo "Breaking loop at i = $i"</i><br><i>    break</i><br><i>  fi</i><br><i>  echo "Current i = $i"</i><br><i>done</i><br><i>echo "Loop finished."</i><br><br>This script will print 'Current i = 1' through 'Current i = 4', then 'Breaking loop at i = 5', and finally 'Loop finished.', as the loop terminates when <i>i</i> reaches 5.<br><br>For nested loops:<br><br><i>#!/bin/bash</i><br><i>for i in {1..3}; do</i><br><i>  echo "Outer loop i = $i"</i><br><i>  for j in {1..3}; do</i><br><i>    if [ $i -eq 2 ] && [ $j -eq 2 ]; then</i><br><i>      echo "Breaking 2 levels at i = $i, j = $j"</i><br><i>      break 2</i><br><i>    fi</i><br><i>    echo "  Inner loop j = $j"</i><br><i>  done</i><br><i>done</i><br><i>echo "Script finished."</i><br><br>This will exit both loops when <i>i</i> is 2 and <i>j</i> is 2, printing 'Script finished.' immediately after.


title: HISTORY
content:
The <b>break</b> command has been a fundamental control flow mechanism in Unix shells since the original Bourne shell (sh). Its functionality has remained consistent across subsequent shell implementations like the KornShell (ksh) and Bash (bash), serving as a core component for structured programming in shell scripts. Its simple yet powerful ability to prematurely exit loops makes it an indispensable tool for scriptwriters, adapting to evolving scripting needs without significant changes to its core behavior.


title: PARAMETERS
content:
<b><b>install</b> <I>formula</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install a specified <I>formula</I> (package).<br><br><b><b>uninstall</b> <I>formula</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uninstall a specified <I>formula</I>.<br><br><b><b>search</b> <I>text|regex</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for available <I>formulae</I> by name or description.<br><br><b><b>update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update Homebrew itself and all <I>formulae</I> from Git.<br><br><b><b>upgrade</b> [<I>formula</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade outdated <I>formulae</I>. If a <I>formula</I> is specified, only that one is upgraded.<br><br><b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all installed <I>formulae</I>.<br><br><b><b>info</b> <I>formula</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about a specified <I>formula</I>.<br><br><b><b>doctor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check your system for potential problems or misconfigurations related to Homebrew.<br><br><b><b>cleanup</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove stale lock files and old downloads for installed <I>formulae</I>.<br><br><b><b>deps</b> <I>formula</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the dependencies of a specified <I>formula</I>.<br><br><b><b>tap</b> <I>user/repo</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an external <I>formula</I> repository (tap) to Homebrew.<br><br><b><b>untap</b> <I>user/repo</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove a previously added external <I>formula</I> repository (tap).<br><br>


title: DESCRIPTION
content:
Homebrew is a free and open-source software package management system that simplifies the installation of software primarily on Apple's macOS operating system, but also fully supports Linux (as Linuxbrew). It allows users to install a wide range of Unix tools, utilities, and applications not typically pre-installed by default on many Linux distributions. Homebrew compiles software from source or installs pre-compiled binaries (bottles), managing dependencies automatically.<br><br>It installs packages to their own directories and then symlinks their files into a designated prefix (e.g., <I>/home/linuxbrew/.linuxbrew</I> on Linux). This design makes it easy to upgrade, uninstall, or roll back packages without affecting the system's core. Its "formulae" are Ruby scripts that describe how to build and install software. Homebrew is widely adopted for its simplicity, extensibility, and user-friendly command-line interface, providing a comprehensive ecosystem for developers and power users on both platforms.


title: CAVEATS
content:
Primarily developed for macOS, its Linux support (Linuxbrew) might have some specific considerations. It installs packages to its own prefix (<I>/home/linuxbrew/.linuxbrew</I> by default on Linux) which might require careful management of system paths to avoid conflicts. Homebrew is a user-level package manager and does not replace system-level package managers like <b>apt</b> or <b>dnf</b> for core system components.


title: FORMULAE AND CASKS
content:
Homebrew uses "formulae" (Ruby scripts) to define how to build and install command-line tools and libraries from source or pre-compiled binaries. While "casks" are primarily used for installing macOS graphical applications, their direct relevance for <b>brew</b> on Linux is minimal, as Linux users typically rely on native methods for GUI application management.


title: USER-SPACE INSTALLATION
content:
A distinguishing feature of Homebrew is its user-space installation model. Unlike traditional system package managers that install software globally requiring root privileges, Homebrew installs packages into a user-writable directory (e.g., <I>/home/linuxbrew/.linuxbrew</I> on Linux). This allows users to manage their own software and development environments without needing sudo access for every package installation, offering greater flexibility and security.


title: HISTORY
content:
Homebrew was created by Max Howell in 2009 for macOS, aiming to simplify software installation beyond Apple's pre-installed utilities. Its design principles emphasized simplicity, extensibility via Ruby formulae, and user-centric package management. It gained immense popularity on macOS, becoming the de facto standard for developers. In 2016, a fork named Linuxbrew was created to bring Homebrew's features to Linux distributions, eventually merging back into the main Homebrew project as official Linux support. This expansion made <b>brew</b> a truly cross-platform package manager, extending its reach and utility to a broader developer community.


title: PARAMETERS
content:
<b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a simulation of the removal process, showing which formulae would be uninstalled without actually removing them. This is useful for previewing changes.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays more detailed information about the operations being performed, including formulae being considered for removal.<br><br>


title: DESCRIPTION
content:
The command <I>brew-autoremove</I> is not a standard, built-in Homebrew command. Instead, it typically refers to a user-created alias or an external script designed to replicate the functionality of package managers like `apt autoremove` on Linux, which automatically removes packages that were installed as dependencies and are no longer required by any currently installed software.<br><br>For Homebrew, the core functionality for cleaning up unused dependencies is provided by the `brew cleanup` command, specifically when used with the `--prune=all` option. When a Homebrew formula is installed, it may pull in other formulae as dependencies. If the main formula is later uninstalled, its dependencies might remain on the system. The purpose of `brew-autoremove` (or `brew cleanup --prune=all`) is to identify these orphaned dependencies—those not explicitly installed by the user and no longer depended upon by any active formula—and remove them. This helps to free up disk space and keep the Homebrew installation tidy. Users often create `brew-autoremove` as a convenience to simplify regular system maintenance.


title: CAVEATS
content:
The most significant caveat is that <I>brew-autoremove</I> is not a native Homebrew command. Users typically implement it as an alias (e.g., `alias brew-autoremove='brew cleanup --prune=all'`) or a custom shell script. While the underlying Homebrew mechanisms are robust, misconfigurations or reliance on outdated scripts can lead to unexpected behavior. There's a slight risk of removing dependencies that a user might indirectly rely on if they were not explicitly installed or if Homebrew's dependency tracking has edge cases. Always use `--dry-run` or review the output carefully before proceeding with actual removal, especially with custom scripts. It's recommended to use the official <I>brew cleanup --prune=all</I> command directly for the most reliable behavior.


title: HOMEBREW'S OFFICIAL APPROACH TO DEPENDENCY PRUNING
content:
Homebrew maintains a dependency graph for all installed formulae. When a formula is uninstalled, its dependencies are not immediately removed. The `brew cleanup` command, particularly with the `--prune=all` option, is the official Homebrew method to identify and remove these orphaned dependencies. It checks if any installed formulae still require a particular dependency. If not, and the dependency was installed solely due to another formula, it's marked for removal. This process ensures that only truly unused components are uninstalled, maintaining system stability while freeing up disk space.


title: CREATING A `BREW-AUTOREMOVE` ALIAS
content:
Users often create a shell alias to make `brew-autoremove` available as a command. A common way to do this is by adding a line like `alias brew-autoremove='brew cleanup --prune=all'` to your shell's configuration file (e.g., `~/.bashrc`, `~/.zshrc`, `~/.profile`). After reloading your shell configuration (e.g., `source ~/.zshrc`), you can simply type `brew-autoremove` to perform the cleanup operation.


title: HISTORY
content:
The concept of `autoremove` became popular with package managers like APT on Debian/Ubuntu, where it simplifies system maintenance by automatically removing unused dependencies. As Homebrew grew in popularity on macOS and Linux, users often sought a similar convenient command. While Homebrew's `cleanup` command initially focused on removing old versions and cached downloads, its functionality was later extended to include dependency pruning with the `--prune=all` option. The name `brew-autoremove` emerged as a common user-created alias or external script to encapsulate this specific cleanup operation, mimicking the familiar `autoremove` pattern from other Linux distributions. Its usage reflects a desire for a straightforward command to keep Homebrew environments lean.


title: PARAMETERS
content:
<b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>(Default)</i> Installs or upgrades all dependencies listed in the <i>Brewfile</i>.<br><br><b>dump</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Generates a <i>Brewfile</i> from currently installed Homebrew packages, casks, and taps.<br><br><b>check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Checks if all items in the <i>Brewfile</i> are installed and up-to-date. Exits with 0 if true, 1 otherwise.<br><br><b>cleanup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Uninstalls Homebrew packages, casks, and taps that are <i>not</i> listed in the <i>Brewfile</i>.<br><br><b>--global / -g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Uses or creates the <i>Brewfile</i> at <i>~/.Brewfile</i> instead of the current directory.<br><br><b>--file=<path> / -f <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specifies an alternative path for the <i>Brewfile</i>.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>When used with <b>dump</b>, overwrites an existing <i>Brewfile</i>. With <b>cleanup</b>, performs cleanup without prompting.<br><br><b>--no-upgrade</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>During <b>install</b>, prevents upgrading already installed formulae/casks.<br><br><b>--no-install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>During <b>install</b>, performs <b>check</b> and <b>cleanup</b> but does not install anything.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Simulates the operation without making actual changes (useful with <b>install</b> or <b>cleanup</b>).<br><br><b>--verbose / -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Provides more detailed output during execution.<br><br>


title: DESCRIPTION
content:
<b>brew bundle</b> is a powerful Homebrew subcommand designed to manage software dependencies in a declarative and reproducible manner using a <i>Brewfile</i>. Similar to <i>Gemfile</i> for Ruby or <i>package.json</i> for Node.js, a <i>Brewfile</i> serves as a manifest listing formulae, casks, macOS App Store applications (via mas), taps, and even version control system repositories (<i>repo</i>) or Docker images (<i>whalebrew</i>). It streamlines the process of setting up a new development environment or migrating existing configurations by ensuring all specified software is installed. The command offers various subcommands like <b>install</b> (default, installs everything in <i>Brewfile</i>), <b>dump</b> (creates a <i>Brewfile</i> from currently installed packages), <b>check</b> (verifies if everything in <i>Brewfile</i> is installed), and <b>cleanup</b> (uninstalls packages not listed in <i>Brewfile</i>), making it a versatile tool for environment synchronization and maintenance.


title: CAVEATS
content:
<b>brew bundle</b> relies on the proper formatting of the <i>Brewfile</i>. Incorrect syntax or unsupported directives will lead to errors. The <b>cleanup</b> subcommand can remove a significant amount of software; it is highly recommended to use <i>--dry-run</i> first to preview changes, especially in production or sensitive environments. While <b>brew bundle</b> can manage <i>mas</i>, <i>repo</i>, and <i>whalebrew</i> entries, it acts as an orchestrator and doesn't replace their underlying tools (e.g., you still need <i>mas-cli</i> for <i>mas</i> entries).


title: BREWFILE FORMAT
content:
A <i>Brewfile</i> is a plain text file listing desired software. Common entry types include:<br><ul><li><b>brew '<i>formula_name</i>'</b>: For Homebrew formulae (e.g., <i>git</i>, <i>wget</i>).<br></li><li><b>cask '<i>application_name</i>'</b>: For macOS applications (e.g., <i>google-chrome</i>, <i>visual-studio-code</i>).<br></li><li><b>tap '<i>user/tap_name</i>'</b>: To add a third-party Homebrew tap (e.g., <i>homebrew/cask-fonts</i>).<br></li><li><b>mas '<i>App Name</i>', id: <i>APP_ID</i></b>: For macOS App Store applications (requires <i>mas-cli</i>).<br></li><li><b>repo '<i>git_repository_url</i>', branch: '<i>main</i>'</b>: To clone a Git repository.<br></li><li><b>whalebrew '<i>docker_image</i>'</b>: To manage <i>whalebrew</i> images (requires <i>whalebrew</i>).<br></li></ul>Each line typically represents one dependency, providing a clear overview of the environment.


title: HISTORY
content:
Homebrew, created by Max Howell, revolutionized package management on macOS. <b>brew bundle</b> emerged as a crucial extension, addressing the growing need for reproducible development environments. It started as an external command, <i>homebrew/bundle</i>, and was later integrated as a core subcommand, signifying its importance in the Homebrew ecosystem for managing complete software stacks from a single declarative file.


title: SYNOPSIS
content:
`<b>brew cask</b> <<i>command</i>> [<i>options</i>] [<i>arguments</i>]<br>Common commands include:<br>&nbsp;&nbsp;`<b>brew cask install</b> <<i>cask_name</i>> [...<i>cask_name</i>]`<br>&nbsp;&nbsp;`<b>brew cask uninstall</b> <<i>cask_name</i>> [...<i>cask_name</i>>]`<br>&nbsp;&nbsp;`<b>brew cask upgrade</b> [<i>cask_name</i>] [...<i>cask_name</i>>]`<br>&nbsp;&nbsp;`<b>brew cask search</b> <<i>text</i>>`<br>&nbsp;&nbsp;`<b>brew cask list</b>`<br>&nbsp;&nbsp;`<b>brew cask doctor</b>`


title: PARAMETERS
content:
<b>`--force`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For `install`, `uninstall`, `zap`, `reinstall`) Reinstall an existing Cask or force an operation.</i><br><br><b>`--no-quarantine`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For `install`, `upgrade`) Install or upgrade without applying macOS quarantine attributes (use with caution).</i><br><br><b>`--greedy`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For `upgrade`) Include Casks that are not typically auto-updating (e.g., Electron-based apps that update themselves).</i><br><br><b>`--verbose`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(General) Display more detailed output during command execution.</i><br><br>


title: DESCRIPTION
content:
Homebrew Cask, invoked via `<b>brew cask</b>`, is an extension to the popular Homebrew package manager specifically designed for macOS graphical user interface (GUI) applications. While Homebrew traditionally handles command-line tools and libraries, Homebrew Cask automates the installation, updating, and uninstallation of applications typically distributed as `.app` bundles, disk images (`.dmg`), or installers (`.pkg`). It replaces the manual process of downloading a `.dmg` file, dragging an application to the Applications folder, and cleaning up. Instead, users define applications using Ruby-based DSL files called <i>Casks</i>, which specify download URLs, checksums, and installation procedures. This integration brings the power of package management to macOS GUI apps, ensuring they are easily discoverable, kept up-to-date, and cleanly removed, contributing to a more organized and efficient macOS environment.


title: CAVEATS
content:
<ul><li>`<b>brew cask</b>` is exclusively for macOS and requires Homebrew to be installed.</li><li>It cannot manage applications installed directly from the Mac App Store.</li><li>Some applications may have unique installation or update mechanisms that are not fully supported or require manual intervention.</li><li>Using `--no-quarantine` can pose a security risk as it bypasses macOS's Gatekeeper checks.</li></ul>


title: <B>CASK FILES</B>
content:
<i>Casks are Ruby DSL (Domain Specific Language) files that define how to download, install, and manage a specific macOS application. They specify the application's source URL, checksum, installation type, and other relevant details, automating the entire process. Users can also create their own custom Casks.</i>


title: <B>APPLICATION LOCATIONS</B>
content:
<i>By default, `<b>brew cask</b>` installs applications into the user's `~/Applications` directory if it exists and is writable, otherwise into `/Applications`. This mimics the standard macOS application installation behavior.</i>


title: <B>`ZAP` SUBCOMMAND</B>
content:
<i>The `<b>brew cask zap</b>` command is an enhanced version of `<b>uninstall</b>` that not only removes the application but also attempts to clean up associated configuration files, caches, and application support files, providing a more complete removal.</i>


title: HISTORY
content:
Homebrew Cask began as a separate, independent project named "Homebrew-cask" (a GitHub repository) in 2012, aiming to extend Homebrew's capabilities to manage macOS graphical applications. Its popularity grew rapidly, filling a significant gap in macOS application management beyond the App Store. Due to its widespread adoption and essential functionality, the project was officially merged into the core Homebrew organization and became a built-in subcommand, `<b>brew cask</b>`, around 2014-2015. This integration streamlined the user experience, making it easier for Homebrew users to manage both command-line tools and GUI applications through a single ecosystem.


title: SEE ALSO
content:
<b>brew(1)</b>: The Homebrew package manager, parent command to `<b>brew cask</b>`., <b>man(1)</b>: Displays online manual pages.


title: SYNOPSIS
content:
<I>brew install</I> [<I>options</I>] &lt;<I>formula</I>&gt; ...<br>Or: <I>brew install</I> <I>--cask</I> &lt;<I>cask</I>&gt; ...<br>Example: <I>brew install htop</I><br>Example: <I>brew install --build-from-source python@3.9</I>


title: PARAMETERS
content:
<b><I>formula</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the software package (formula) to install. Homebrew will primarily attempt to install a pre-built binary (bottle).<br><br><b><I>cask</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Primarily for macOS) The name of the application, font, or plugin to install. On Linux, casks are less common as they primarily describe macOS-specific software. This argument requires the <I>--cask</I> option.<br><br><b><I>--cask</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs Homebrew to treat the following argument(s) as a <I>cask</I> rather than a <I>formula</I>.<br><br><b><I>--debug</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display verbose debug information during the installation process, useful for troubleshooting.<br><br><b><I>--force-bottle</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force installation of a pre-built bottle even if it's for a different architecture (e.g., ARM bottle on x86_64) or OS. This is generally not recommended unless you understand the implications and potential for instability.<br><br><b><I>--build-from-source</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile the specified <I>formula</I> from its source code rather than using a pre-built binary (bottle). This typically requires development tools (e.g., <I>gcc</I>, <I>make</I>) to be installed on your system.<br><br><b><I>--ignore-dependencies</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install the specified <I>formula</I> without also installing its required dependencies. This can lead to non-functional or broken software.<br><br><b><I>--only-dependencies</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install only the dependencies of the specified <I>formula</I> but not the <I>formula</I> itself. This is useful for preparing a build environment or for specific development workflows.<br><br><b><I>--HEAD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install the `HEAD` version (the latest development snapshot) of a <I>formula</I> directly from its version control repository. This version may be unstable and subject to frequent changes.<br><br><b><I>--devel</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install the `devel` version (development release) of a <I>formula</I>, if a specific development release version is defined by the formula author.<br><br><b><I>--help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help documentation and available options specific to the <I>brew install</I> command.<br><br>


title: DESCRIPTION
content:
Homebrew is a free and open-source package manager that simplifies the installation of software. On Linux, it functions as a versatile alternative or supplement to traditional distribution package managers like <I>apt</I>, <I>dnf</I>, or <I>yum</I>. The <I>brew install</I> command is its core functionality, allowing users to effortlessly download, compile (if necessary), and install thousands of pre-compiled binaries (bottles) or source packages (formulas). It automatically handles dependencies, ensuring all necessary prerequisites for a software package are also installed. This command is particularly useful for obtaining newer versions of software or packages not readily available in official distribution repositories.


title: CAVEATS
content:
<I>brew install</I> on Linux uses the Homebrew project, which was previously known as <I>Linuxbrew</I>.<br>Packages are typically installed to a user-specific directory (e.g., <I>/home/linuxbrew/.linuxbrew</I>), which may require adjusting your <I>PATH</I> and other environment variables to ensure executables are found.<br>Software installed via Homebrew might not integrate seamlessly with system-wide libraries or configurations managed by your distribution's native package manager, potentially leading to conflicts or unexpected behavior.<br>Building from source (<I>--build-from-source</I>) requires that necessary development tools and compilers (like <I>gcc</I>, <I>make</I>, <I>cmake</I>, etc.) are already installed on your system.


title: <B>FORMULAS VS. CASKS</B>
content:
Homebrew manages two primary types of software: <I>formulas</I> and <I>casks</I>. <I>Formulas</I> are definitions for command-line tools, libraries, and utilities, which are typically installed from source code or pre-compiled binaries (bottles). <I>Casks</I> (primarily for macOS) are definitions for graphical applications, fonts, or plugins, often installed by simply copying them to standard system locations. While <I>brew install</I> is used for both, the utility of <I>casks</I> on Linux is limited as they describe macOS-specific applications.


title: <B>TAPS</B>
content:
A <I>tap</I> in Homebrew is a Git repository that contains additional formulas or casks beyond those found in the core Homebrew repositories. Users can 'tap' these repositories using <I>brew tap</I> to expand the range of available software. For example, <I>brew tap homebrew/cask</I> adds the official Cask repository. Once tapped, formulas or casks from that repository become discoverable and installable using the <I>brew install</I> command, fostering a decentralized and community-driven ecosystem for software distribution.


title: HISTORY
content:
Homebrew originated as a package manager for macOS, created by Max Howell in 2009. Its success and user-friendly design led to the development of <I>Linuxbrew</I>, a port specifically for Linux, by Shaobo Li. For several years, Linuxbrew operated as a separate project with its own repository and installation instructions. Recognizing the benefits of unification, <I>Linuxbrew</I> was officially merged back into the main Homebrew project in 2020. This integration allowed a single Homebrew installation to manage packages on both macOS and Linux, streamlining development and maintenance efforts. The core <I>brew install</I> command has remained a fundamental part of its functionality, adapting over time to support new features and package types.


title: SEE ALSO
content:
<I>brew update</I>: Updates Homebrew itself and its formula definitions., <I>brew upgrade</I>: Upgrades all currently installed formulas to their latest versions., <I>brew remove</I> (<I>brew uninstall</I>): Uninstalls specified formulas or casks., <I>brew search</I>: Searches for available formulas or casks by name or description., <I>brew info</I>: Displays detailed information about a specific formula or cask., <I>apt(8)</I>: The package management system for Debian-based Linux distributions (e.g., Ubuntu)., <I>dnf(8)</I> (<I>yum(8)</I>): The primary package management system for Fedora and RHEL-based Linux distributions.


title: SYNOPSIS
content:
brew list [<I>options</I>] [<I>formula</I>]<br>brew list --formula<br>brew list --cask<br>brew list --full-name<br>brew list --unbrewed<br>brew list --versions<br>brew list --json=<I>version</I><br>brew list --verbose


title: PARAMETERS
content:
<b>--formula, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only installed <B>formulae</B> (default if no package specified).<br><br><b>--cask, -c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only installed <B>casks</B> (graphical applications).<br><br><b>--full-name</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints formulae and casks with their <I>full tap names</I> (e.g., <I>homebrew/core/git</I> instead of <I>git</I>).<br><br><b>--unbrewed</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists files found in the <I>Homebrew prefix</I> that were <I>not installed</I> by Homebrew.<br><br><b>--versions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <I>version number</I> for each installed formula.<br><br><b>--json=<I>version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs package data in <I>JSON format</I>. <I>version</I> can be <B>v1</B> or <B>v2</B>.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides more <I>detailed output</I>, including keg path for formulae.<br><br><b>[<I>formula</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When a <I>formula name</I> is provided, lists all files installed by that specific formula.<br><br>


title: DESCRIPTION
content:
The `brew list` command is a fundamental <I>subcommand</I> of <B>Homebrew</B>, a popular open-source <I>package manager</I> designed primarily for macOS, but also fully supported on Linux. Its primary function is to display a comprehensive list of all software packages – known as <B>formulae</B> for command-line tools and libraries, and <B>casks</B> for graphical applications – that have been installed on the system using Homebrew. <br><br>When invoked without any arguments, `brew list` provides a simple, alphabetically sorted output of all installed formulae. Users can refine this output significantly by employing various <I>options</I>. For instance, one can specify to only list <I>casks</I>, show the <I>full names</I> of packages, or display the <I>version numbers</I> of installed formulae. A particularly powerful feature is its ability to list all individual files installed by a specific formula when that formula's name is provided as an argument. This makes it invaluable for debugging, understanding installation paths, and ensuring system cleanliness. <br><br>Essentially, `brew list` acts as an inventory tool for your Homebrew-managed software, helping users keep track of their installed environment, prepare for upgrades, or identify packages for uninstallation. It's a cornerstone command for anyone leveraging Homebrew for software management on their Linux or macOS system.


title: CAVEATS
content:
The command `brew list` is part of the <B>Homebrew package manager</B> and is <I>not a standard, standalone Linux utility</I> included in most distributions by default. It requires Homebrew to be installed on your system. <br><br>The `--versions` option is primarily designed for <B>formulae</B> and may not provide meaningful output for <B>casks</B>. The exact structure of the `--json` output can vary significantly between <I>v1</I> and <I>v2</I> versions, requiring careful parsing.


title: OUTPUT BEHAVIOR
content:
By default, `brew list` prints installed packages <I>one per line</I>. When listing files for a specific formula, it outputs paths relative to the <B>Homebrew prefix</B> (e.g., <I>/usr/local</I> on macOS, or <I>~/.linuxbrew</I> on Linux). <br><br>The command returns an exit status of <B>0</B> upon successful execution, and a <B>non-zero</B> status if an error occurs, such as an invalid option or a non-existent formula.


title: ENVIRONMENT VARIABLES
content:
Homebrew's behavior, including that of `brew list`, can be influenced by various environment variables. For instance, <B>HOMEBREW_PREFIX</B> defines the installation root, affecting where `brew list` looks for installed packages. Other variables like <B>HOMEBREW_NO_COLOR</B> can alter output formatting.


title: HISTORY
content:
Homebrew, and thus the `brew list` command, was conceived by <B>Max Howell</B> and first launched in <B>2009</B> as a package manager primarily for macOS. Its utility quickly led to widespread adoption. <br><br>In <B>2017</B>, the separate <I>Linuxbrew</I> project, which brought Homebrew's capabilities to Linux, was officially <I>merged into the main Homebrew repository</I>, extending `brew`'s reach beyond macOS. The `list` subcommand has been a core and indispensable part of Homebrew since its inception, continually evolving with new options (like `--cask`, `--versions`, `--json`) to support the growing complexity and feature set of the package manager, making it crucial for package auditing and management across both platforms.


title: PARAMETERS
content:
<b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Lists only the names of outdated formulae, suppressing version information.</I><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Shows detailed versions of outdated formulae, including installed and latest available versions.</I><br><br><b><b>--json</b>[=<i>v1|v2</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Outputs outdated formulae in a</I> <I>JSON</I> <I>format. Currently, only</I> <I>v1</I> <I>is fully supported and is the default.</I><br><br><b><b>--cask</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Checks for outdated</I> <I>casks</I> <I>in addition to</I> <I>formulae</I>.<br><br><b><b>--formula</b>, <b>--formulae</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Checks for outdated</I> <I>formulae</I> <I>only, ignoring</I> <I>casks</I>.<br><br><b><b>--no-fetch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Prevents</I> <b>brew outdated</b> <I>from running</I> <b>brew update</b> <I>before checking for outdated packages. This uses the locally cached package definitions.</I><br><br><b><b>--fetch-HEAD</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Considers</I> <I>HEAD</I> <I>builds (development versions) as outdated if a newer</I> <I>HEAD</I> <I>commit is available. Relevant for formulae installed with</I> <b>--HEAD</b>.<br><br><b><b>--greedy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Considers</I> <I>casks</I> <I>that would be upgraded by</I> <b>brew upgrade --greedy</b> <I>as outdated. This applies to casks that might not have a direct version number, or whose update check behavior differs.</I><br><br><b><b>--pinned</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Shows pinned formulae (those explicitly prevented from upgrading) that are nonetheless not up-to-date according to the latest definitions.</I><br><br>


title: DESCRIPTION
content:
<I>The</I> <b>brew outdated</b> <I>command identifies installed</I> <I>Homebrew</I> <I>formulae and casks that have newer versions available in their respective taps. It's a crucial tool for maintaining an up-to-date software environment managed by</I> <I>Homebrew</I> <I>on a</I> <I>Linux</I> <I>system (often referred to as</I> <I>Homebrew on Linux</I> <I>or historically</I> <I>Linuxbrew</I><I>).<br><br>When executed, it typically performs a</I> <b>brew update</b> <I>first to fetch the latest package definitions from the</I> <I>Homebrew</I> <I>repositories. After updating, it compares the installed versions of your software with the latest available versions. If a discrepancy is found, indicating a newer version exists, the package is listed as 'outdated'. This command does not upgrade packages; it only reports which ones are candidates for upgrade. Users can then use</I> <b>brew upgrade</b> <I>to bring these packages to their latest versions.<br><br>It supports various options to filter the output, such as only showing formulae or casks, providing verbose version information, or outputting in</I> <I>JSON</I> <I>format for programmatic use.</I>


title: CAVEATS
content:
<I>The</I> <b>brew outdated</b> <I>command relies entirely on a functioning</I> <I>Homebrew</I> <I>installation on</I> <I>Linux</I>.<br><br><I>It requires an active internet connection (unless</I> <b>--no-fetch</b> <I>is used) to perform</I> <b>brew update</b> <I>and fetch the latest package information.<br><br>The accuracy of its output depends on the timeliness of</I> <I>Homebrew's</I> <I>taps; if a tap is not updated promptly with new software versions, then</I> <b>brew outdated</b> <I>will not report those packages as outdated.</I>


title: <I>FORMULAE VS. CASKS</I>
content:
<I>In</I> <I>Homebrew</I><I>, 'formulae' refer to command-line tools and libraries compiled from source, while 'casks' refer to binary applications (often GUI applications) distributed as pre-compiled packages. By default,</I> <b>brew outdated</b> <I>primarily checks formulae, but the</I> <b>--cask</b> <I>option allows it to check installed casks as well, expanding its utility for managing a wider range of software.</I>


title: <I>PINNING PACKAGES</I>
content:
<I>Homebrew</I> <I>allows users to 'pin' a formula, preventing it from being upgraded during a regular</I> <b>brew upgrade</b> <I>operation. Even if a package is pinned, it can still be reported as outdated by</I> <b>brew outdated</b> <I>(especially with the</I> <b>--pinned</b> <I>option), indicating that a newer version exists but will not be installed unless the pin is removed or the upgrade is forced.</I>


title: HISTORY
content:
<I>Homebrew</I> <I>originated as a popular package manager for</I> <I>macOS</I> <I>in 2009. Due to its ease of use and extensive package repository, a port for</I> <I>Linux</I> <I>environments, known as</I> <I>Linuxbrew</I><I>, was developed independently. It provided a similar experience for managing packages on</I> <I>Linux</I> <I>without root privileges, installing software into the user's home directory. In 2019, the</I> <I>Linuxbrew</I> <I>project officially merged back into the main</I> <I>Homebrew</I> <I>repository, becoming 'Homebrew on Linux'. The</I> <b>brew outdated</b> <I>command, like most</I> <I>Homebrew</I> <I>commands, has been a core part of the system since its early days, essential for users to keep track of available software updates.</I>


title: SEE ALSO
content:
<I><b>brew update</b>(1)</I>, <I><b>brew upgrade</b>(1)</I>, <I><b>brew list</b>(1)</I>, <I><b>brew install</b>(1)</I>, <I><b>brew cleanup</b>(1)</I>, <I><b>apt</b>(8)</I>, <I><b>dnf</b>(8)</I>, <I><b>pacman</b>(8)</I>


title: SYNOPSIS
content:
<B>brew search</B> [<I>options</I>] [<I>text</I>|<I>/regex/</I>]<br><br><B>Common usage examples:</B><br><i>brew search <I>git</I></i><br><i>brew search <I>/^ruby-/</I></i><br><i>brew search --desc <I>editor</I></i><br><i>brew search --cask <I>firefox</I></i><br><i>brew search --formula <I>python</I></i>


title: PARAMETERS
content:
<b><I>text</I>|<I>/regex/</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The search query. Can be a simple string (case-insensitive substring match) or a <B>regular expression</B> enclosed in forward slashes (<I>/</I>). Matches against package names.<br><br><b>--desc, -d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for formulae and casks whose <B>descriptions</B> contain the specified text or match the regular expression, instead of their names.<br><br><b>--formula, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the search results to <B>formulae only</B> (command-line tools and libraries).<br><br><b>--cask, -c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the search results to <B>casks only</B> (macOS applications). <I>--macapps</I> is an alias for this option.<br><br><b>--eval-all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces Homebrew to evaluate all available formulae and casks in all taps, even those not yet tapped. This can be significantly slower but ensures a comprehensive search.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the search results in <B>JSON format</B>, providing structured data including name, description, and whether it's an exact match.<br><br><b>--arch <I>architecture</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters search results to show packages compatible with or specific to the given CPU <B>architecture</B> (e.g., <I>arm64</I>, <I>x86_64</I>).<br><br>


title: DESCRIPTION
content:
<i>brew search</i> is a fundamental command within the <B>Homebrew</B> package manager, used to discover available software packages (known as <B>formulae</B> for command-line tools and libraries, and <B>casks</B> for macOS applications). It enables users to locate packages by providing a name, a partial name, or a <B>regular expression</B>. By default, the command searches the names of all available formulae and casks across <B>Homebrew Core</B> taps and any other taps the user has installed. The search operation is <B>case-insensitive</B> by default. Beyond just names, <i>brew search</i> can also delve into the descriptions of packages or even the content of formulae files, which is invaluable for identifying tools based on their functionality or dependencies. This command is crucial for exploring the vast Homebrew ecosystem, ensuring users find the precise package they need before proceeding with installation.


title: CAVEATS
content:
<i>brew search</i> relies on the <B>Homebrew</B> package manager being installed and configured correctly. For the most up-to-date and accurate results, it is recommended to run <B>brew update</B> prior to searching, as this refreshes Homebrew's local index of available packages. Searching with <I>--eval-all</I> or overly broad regular expressions can consume significant time and system resources due to the extensive evaluation required. By default, the search is case-insensitive for convenience.


title: HOMEBREW CONTEXT
content:
It's important to understand that <B>brew search</B> is not a standalone Linux command but a subcommand of <B>Homebrew</B>, a popular package manager. While primarily associated with macOS, Homebrew (and thus its <I>brew search</I> command) can also be used on Linux distributions via <B>Linuxbrew</B>, offering a consistent package management experience across different Unix-like systems.


title: SEARCH MECHANISM
content:
When you execute <B>brew search</B>, Homebrew first checks its local cache of formulae and casks. If the cache is outdated or a comprehensive search is requested (e.g., with <I>--eval-all</I>), it may fetch and evaluate remote tap information. The command distinguishes between exact matches (which are highlighted) and partial matches, and can also search within descriptions or the content of formula files themselves, providing a versatile discovery tool for the Homebrew ecosystem.


title: HISTORY
content:
The <B>Homebrew</B> project was initiated in 2009 by Max Howell as a package manager for macOS. The <B>brew search</B> command has been a core and indispensable part of Homebrew since its early development, providing users with the primary means to discover software. Over the years, its functionality has been extended to include searching for <B>casks</B> (introduced in 2013), support for regular expressions, searching by description, and the addition of structured <B>JSON</B> output for programmatic use. Its continuous evolution reflects Homebrew's commitment to providing a robust and user-friendly package management experience.


title: SYNOPSIS
content:
<b>brew services <I>subcommand</I></b> [options] [<I>service</I> ...]<br><br>Common subcommands:<br><i>&nbsp;&nbsp;&nbsp;&nbsp;list</i><br><i>&nbsp;&nbsp;&nbsp;&nbsp;start</i> <I>service</I> [...][options]<br><i>&nbsp;&nbsp;&nbsp;&nbsp;stop</i> <I>service</I> [...][options]<br><i>&nbsp;&nbsp;&nbsp;&nbsp;restart</i> <I>service</I> [...][options]<br><i>&nbsp;&nbsp;&nbsp;&nbsp;run</i> <I>service</I> [options]<br><i>&nbsp;&nbsp;&nbsp;&nbsp;cleanup</i><br><i>&nbsp;&nbsp;&nbsp;&nbsp;info</i> <I>service</I>


title: PARAMETERS
content:
<b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all services managed by Homebrew, showing their status (started, stopped), user, and plist file path.<br><br><b>start <I>service</I> [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the specified Homebrew service(s). This will generate and load a <i>launchd</i> <i>.plist</i> file, ensuring the service runs in the background and often restarts automatically.<br><br><b>stop <I>service</I> [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops the specified Homebrew service(s). This unloads the <i>launchd</i> <i>.plist</i> file and terminates the running process.<br><br><b>restart <I>service</I> [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restarts the specified Homebrew service(s). This is equivalent to running <i>stop</i> followed by <i>start</i>.<br><br><b>run <I>service</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the specified Homebrew service in the foreground, typically for debugging purposes. It does not register the service with <i>launchd</i>.<br><br><b>cleanup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes old or orphaned service <i>.plist</i> files that are no longer associated with installed formulae.<br><br><b>info <I>service</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about a specific Homebrew service, including its status, process ID, and the location of its <i>.plist</i> file.<br><br><b>--all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <i>start</i>, <i>stop</i>, or <i>restart</i> to apply the command to all currently managed Homebrew services.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Default) Manages services as user agents, typically running in <i>~/Library/LaunchAgents/</i>. These services start when the user logs in.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages services as system daemons, typically running in <i>/Library/LaunchDaemons/</i>. These services start at boot and run as the root user. Requires <i>sudo</i>.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the operation, for example, to force start a service even if it appears to be already running or has issues.<br><br><b>--file=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative <i>.plist</i> file to use for the service, overriding the default generated one.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show debug output for troubleshooting.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show verbose output.<br><br>


title: DESCRIPTION
content:
<b>brew services</b> is a crucial subcommand within the Homebrew package manager, designed to streamline the management of background processes, also known as services, installed through Homebrew formulae. It primarily leverages macOS's built-in <i>launchd</i> framework to ensure services start automatically at login or system boot, restart reliably upon crashes, and manage dependencies effectively.<br><br>This command abstracts away the complexities of dealing directly with <i>launchd</i> <i>.plist</i> files and <i>launchctl</i> commands, providing a user-friendly interface for common service operations. Developers and users frequently rely on <b>brew services</b> to effortlessly start, stop, restart, list, and link/unlink applications such as databases (e.g., PostgreSQL, Redis), web servers (e.g., Nginx, Apache), and other long-running daemons or agents necessary for their development or production environments.


title: CAVEATS
content:
<ul><li><b>Platform Dependency:</b> <b>brew services</b> is primarily designed for macOS and relies heavily on the <i>launchd</i> service management framework. While Homebrew can be installed on Linux (Linuxbrew), the <b>brew services</b> functionality might be less robust or require additional system-specific configurations (e.g., with <i>systemd</i>) for full service management.</li><li><b>Root Privileges:</b> Managing system-level services with the <i>--system</i> flag requires <i>sudo</i> privileges, as these services typically run as the root user and start at system boot.</li><li><b>Homebrew-Installed Services Only:</b> <b>brew services</b> can only manage services that were installed via Homebrew formulae and are configured to be managed by it. It cannot manage arbitrary system services or applications installed outside of Homebrew.</li><li><b>Configuration Overrides:</b> While <b>brew services</b> simplifies management, some services may require specific configuration adjustments that go beyond its scope, often involving editing the service's configuration files directly.</li></ul>


title: SERVICE CONFIGURATION FILES (<I>.PLIST</I>)
content:
At its core, <b>brew services</b> interacts with <i>launchd</i> by creating and managing XML-based configuration files known as <i>Property List</i> (<i>.plist</i>) files. These files contain instructions for <i>launchd</i> on how to run a service, including its executable path, arguments, environment variables, and restart behavior. <b>brew services</b> typically places user-specific agents in <i>~/Library/LaunchAgents/</i> and system-wide daemons in <i>/Library/LaunchDaemons/</i>.


title: INTEGRATION WITH <I>LAUNCHCTL</I>
content:
<b>brew services</b> acts as a high-level wrapper around the lower-level <i>launchctl</i> command, which is the primary command-line interface for interacting with the <i>launchd</i> daemon on macOS. When you use <b>brew services</b>, it automatically generates and loads/unloads the necessary <i>.plist</i> files via <i>launchctl load</i> and <i>launchctl unload</i> commands, abstracting these details from the user.


title: HISTORY
content:
<b>brew services</b> has been an integral part of the Homebrew ecosystem for many years, significantly enhancing its utility for macOS users. It was introduced to provide a more intuitive and automated approach to managing background processes compared to manually interacting with <i>launchd</i> and its complex <i>.plist</i> files. Its development has focused on robust error handling, seamless integration with <i>launchd</i>'s capabilities, and simplifying common service management tasks, making it an indispensable tool for developers setting up local development environments with Homebrew-installed dependencies like databases, message queues, and web servers.


title: PARAMETERS
content:
<b><i>&lt;formula&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Homebrew formula (package) to uninstall.<br><br><b><i>&lt;cask&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Homebrew Cask (application) to uninstall. Requires the <i>--cask</i> option.<br><br><b><i>--force</i>, <i>-f</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force uninstallation of a formula even if it is a dependency of another installed formula, or if it is keg-only.<br><br><b><i>--dry-run</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show what would be uninstalled without actually performing the uninstallation.<br><br><b><i>--verbose</i>, <i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print more verbose output during the uninstallation process.<br><br><b><i>--debug</i>, <i>-d</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display debug information, useful for troubleshooting.<br><br><b><i>--cask</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat subsequent arguments as Casks. This option is required to uninstall Casks.<br><br><b><i>--formula</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat subsequent arguments as Formulae. This is the default behavior if neither <i>--cask</i> nor <i>--formula</i> is specified.<br><br><b><i>--zap</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For Casks, remove all associated files (app support, cache, preferences, etc.) as defined by the Cask. Use with caution as it can remove user data and settings.<br><br>


title: DESCRIPTION
content:
<b>brew uninstall</b> is the command used to remove software packages (formulae) and applications (casks) previously installed via Homebrew. It is the direct counterpart to <b>brew install</b>.<br><br>When a formula is uninstalled, Homebrew removes its files from the Cellar (Homebrew's installation prefix, typically <i>/opt/homebrew</i> or <i>/usr/local/Cellar</i>), along with any symbolic links in the Homebrew prefix's <i>bin</i>, <i>sbin</i>, etc., directories. For Casks, <b>brew uninstall --cask &lt;caskname&gt;</b> removes the application bundle from the Applications directory and any other associated files specified by the Cask definition.<br><br>This command is essential for managing disk space and keeping your system clean by removing unneeded software. It typically does <i>not</i> automatically remove dependencies that were installed alongside the package unless those dependencies are no longer required by <i>any</i> other installed formulae. Users often combine this with <b>brew cleanup</b> to remove old versions of installed packages.


title: CAVEATS
content:
<b>brew uninstall</b> does not automatically remove unused dependencies. Unlike some other package managers (e.g., <i>apt autoremove</i>), Homebrew requires manual intervention or specific commands to clean up dependencies no longer needed by any installed formula.<br><br>Using <i>--force</i> can potentially break other installed formulae that rely on the uninstalled package. Use it only when you are certain the package is no longer needed by anything else.<br><br>The <i>--zap</i> option for Casks is very aggressive and will remove application data and user preferences. Always understand its implications before using it, as it can lead to data loss.<br><br>Files created by the uninstalled software <i>outside</i> of Homebrew's managed directories (e.g., in <i>~/.config</i> or <i>~/Library/Application Support</i>) are generally <i>not</i> removed by <b>brew uninstall</b>, unless the <i>--zap</i> option is used for Casks and the Cask specifically defines these locations for zapping.


title: DEPENDENCY MANAGEMENT
content:
Homebrew's <b>brew uninstall</b> command will remove the specified formula or cask. However, it does <i>not</i> automatically remove dependencies that were installed alongside it but are no longer needed by <i>any</i> other formula. This means your system might accumulate 'orphaned' dependencies over time. To find unused dependencies, you may need to manually inspect <b>brew leaves</b> output or use community scripts. <b>brew cleanup</b> helps by removing old versions of formulae and stale files, but it does not remove unused dependencies themselves.


title: CASK UNINSTALLATION WITH --ZAP
content:
When uninstalling a Cask (an application), the <b>--zap</b> option provides a more thorough removal. While a standard <b>brew uninstall --cask</b> typically removes only the application bundle from the Applications directory, <b>--zap</b> attempts to remove all files associated with the Cask, including application support files, caches, and preferences, as defined in the Cask's metadata. This can be very useful for a truly clean removal but should be used with extreme caution, as it can permanently delete user-specific data and settings for that application.


title: HISTORY
content:
Homebrew was created by Max Howell in 2009 to provide a more 'Mac-friendly' package manager than existing solutions like MacPorts or Fink. The <b>uninstall</b> command has been a fundamental component since Homebrew's early days, serving as the essential method to remove installed software.<br><br>Initially focused solely on managing formulae (packages compiled from source), Homebrew later expanded its capabilities to include Casks (binary applications, typically graphical ones, like browsers or IDEs) through the <i>homebrew-cask</i> project. The <b>brew cask uninstall</b> command was eventually merged into the main <b>brew uninstall</b> command, accessed via the <i>--cask</i> option, streamlining the interface for managing both formulae and applications. This integration reflects Homebrew's continuous effort to simplify and unify package management on macOS and Linux.


title: PARAMETERS
content:
<b><code>--force</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a hard update, even if Homebrew thinks it's already up-to-date.<br><br><b><code>--verbose</code>, <code>-v</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print more detailed information during the update process.<br><br><b><code>--debug</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display debug information and enable debugging mode.<br><br><b><code>--auto-update</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly enable auto-update. This is the default behavior for many <code>brew</code> commands.<br><br><b><code>--no-auto-update</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable auto-update for this particular command invocation.<br><br>


title: DESCRIPTION
content:
<b><I>Note:</I></b> The command is typically spelled <code>brew update</code>, not <code>brew-update</code>. This analysis assumes the user is referring to the <code>brew update</code> command for Homebrew installed on a Linux system.<br><br>The <code>brew update</code> command is used to synchronize your local Homebrew installation with the latest changes from Homebrew's Git repository. This includes fetching the newest versions of formulae (package definitions), taps (third-party repositories), and Homebrew's own source code. It essentially refreshes Homebrew's understanding of available software and its dependencies, but it <b>does not</b> upgrade or install any software packages themselves. Think of it as updating the catalog of available software before you can install or upgrade anything. It's a crucial first step before attempting to upgrade installed packages with <code>brew upgrade</code> or installing new ones, ensuring you are working with the most current information.


title: CAVEATS
content:
The command is <code>brew update</code>, not <code>brew-update</code>. Homebrew is a package manager originally for macOS but fully supported on Linux (formerly known as Linuxbrew). This command updates Homebrew's *definitions* and *itself*, not the software packages you have installed. To upgrade installed packages, you must run <code>brew upgrade</code> after <code>brew update</code>. A working internet connection is required for this command to function.


title: AUTOMATIC UPDATES
content:
Many <code>brew</code> commands (e.g., <code>brew install</code>, <code>brew upgrade</code>) automatically run <code>brew update</code> in the background by default to ensure you're working with the latest formulae. You can disable this for a single command by passing <code>--no-auto-update</code>, or configure it globally.


title: DIFFERENCE FROM OTHER LINUX PACKAGE MANAGERS
content:
Unlike traditional Linux package managers like <code>apt update</code> (Debian/Ubuntu) or <code>yum update</code>/<code>dnf update</code> (Red Hat/Fedora) which both fetch updates and often apply them, <code>brew update</code> solely fetches the latest definitions. It's more analogous to <code>apt update</code> (fetching package lists) without the <code>apt upgrade</code> (installing updates) component.


title: HISTORY
content:
Homebrew began as a package manager for macOS. Over time, a fork called 'Linuxbrew' was created to bring its convenient and user-friendly package management system to Linux distributions. In 2019, Linuxbrew was officially merged back into the main Homebrew project, allowing Homebrew to be installed and used natively on Linux as 'Homebrew on Linux'. The <code>brew update</code> command has been a core part of Homebrew's functionality since its early days, essential for keeping the local Homebrew installation synchronized with upstream changes and new software definitions.


title: SYNOPSIS
content:
<b>brew upgrade [<i>options</i>] [<i>formula</i>|<i>cask</i> ...]</b><br><i>Note: When no <i>formula</i> or <i>cask</i> is specified, all outdated packages are upgraded.</i>


title: PARAMETERS
content:
<b><b>--formula</b>, <b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade only formulae, not casks. This option helps to narrow down the scope of the upgrade.<br><br><b><b>--cask</b>, <b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade only casks, not formulae. Useful for managing graphical applications separately.<br><br><b><b>--cleanup</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;After the upgrade, automatically remove old versions of formulae and their obsolete dependencies. This helps to free up disk space.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a simulated upgrade. It shows which packages would be upgraded without actually making any changes, useful for planning.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a reinstallation of the formula or cask, even if it's already installed and up-to-date. Can be used to fix broken installations.<br><br><b><b>--greedy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade <i>auto_updates</i> casks even if they are not explicitly marked as outdated by Homebrew. This is for casks that manage their own updates.<br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display more detailed output during the upgrade process, including download progress and compilation steps.<br><br><b><b>--debug</b>, <b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display debug information, useful for troubleshooting issues with the upgrade process.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print upgrade information in JSON format, which can be useful for scripting and programmatic access.<br><br>


title: DESCRIPTION
content:
The <b>brew upgrade</b> command is a core component of Homebrew, the popular package manager for macOS and Linux. It is used to update all or specified installed packages (formulae and casks) to their latest available versions.<br><br>When executed without any arguments, it checks for newer versions of all currently installed software and downloads and installs them. If specific <i>formulae</i> or <i>casks</i> are provided as arguments, only those particular applications will be upgraded. <b>brew upgrade</b> handles dependencies automatically, ensuring that all necessary libraries and components are also updated or installed.<br><br>This command is crucial for maintaining a system with up-to-date software, patching security vulnerabilities, and accessing new features. It works by first running <b>brew update</b> implicitly to fetch the latest package definitions before performing the upgrade.


title: CAVEATS
content:
<b>Time and Network Usage:</b> Upgrading all packages, especially after a long time, can take a significant amount of time and consume considerable network bandwidth due to large downloads.<br><br><b>Breaking Changes:</b> New versions of software might introduce breaking changes that could affect existing configurations or workflows. It's advisable to check release notes for critical applications.<br><br><b>Disk Space:</b> While <b>brew upgrade</b> can clean up old versions with <b>--cleanup</b>, repeated upgrades without cleanup can consume significant disk space.<br><br><b>Dependency Issues:</b> Although Homebrew generally handles dependencies well, rare conflicts or issues can occur, especially with complex setups or older macOS versions.<br><br><b>Implicit <b>brew update</b>:</b> <b>brew upgrade</b> automatically runs <b>brew update</b> first, which might cause delays if the Homebrew tap cache is large or internet is slow.


title: IMPLICIT <B>BREW UPDATE</B> BEHAVIOR
content:
The <b>brew upgrade</b> command automatically performs a <b>brew update</b> operation before checking for and installing upgrades. This ensures that Homebrew's local package definitions (taps) are current, guaranteeing that it identifies the very latest available versions of software. This implicit update can sometimes add to the total execution time of <b>brew upgrade</b>.


title: BEST PRACTICE FOR REGULAR MAINTENANCE
content:
It is a common best practice to run <b>brew update && brew upgrade && brew cleanup</b> regularly. This sequence ensures that your Homebrew installation itself is updated, all your installed software is upgraded to the latest versions, and then old, unused files are removed, freeing up disk space.


title: HISTORY
content:
The <b>brew upgrade</b> command has been a fundamental part of Homebrew since its early days. Homebrew, created by Max Howell in 2009, was designed to simplify software installation on macOS (and later Linux via Linuxbrew/Homebrew for Linux). The <b>upgrade</b> command was essential from the outset to fulfill the basic need of keeping installed software up-to-date, mirroring similar functionality found in other package managers like <b>apt upgrade</b> or <b>yum update</b>. Its functionality has evolved with Homebrew, gaining options like <b>--cleanup</b> and <b>--greedy</b> to provide more control and better resource management, reflecting the growing complexity and user base of the package manager.


title: SEE ALSO
content:
<b>brew update</b><br><i>(Fetches the latest versions of Homebrew and all formulae and casks.)</i>, <b>brew install</b><br><i>(Ins<b>talls</b> a specified formula or cask.)</i>, <b>brew outdated</b><br><i>(Lists all installed formulae and casks that have newer versions available.)</i>, <b>brew cleanup</b><br><i>(Removes old versions of formulae and their dependencies from the Homebrew Cellar.)</i>, <b>brew list</b><br><i>(Lists all installed formulae and casks.)</i>


title: SYNOPSIS
content:
bridge [ <I>OPTIONS</I> ] <I>OBJECT</I> { <I>COMMAND</I> | help }<br><br><I>OBJECT</I> can be: <I>link</I>, <I>fdb</I>, <I>mdb</I>, <I>vlan</I>, <I>monitor</I>


title: PARAMETERS
content:
<b>link</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages bridge port attributes. Use to set administrative state, path cost, priority, and other properties for individual network interfaces added to a bridge.<br><br><b>fdb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages the Forwarding Database (FDB), also known as the MAC address table. Allows adding, deleting, or showing static or dynamic MAC address entries associated with bridge ports.<br><br><b>mdb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages the Multicast Database (MDB). Used for configuring multicast snooping, which optimizes multicast traffic forwarding by preventing it from being broadcast to all bridge ports.<br><br><b>vlan</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures VLAN filtering on bridge ports. Allows specifying which VLANs are allowed on a port, and whether a port operates as an access port or a trunk port for tagged traffic.<br><br><b>monitor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides real-time monitoring of bridge events, such as new MAC addresses being learned or port state changes.<br><br>


title: DESCRIPTION
content:
The <I>bridge</I> command is part of the <I>iproute2</I> utility suite, used for advanced configuration and management of Linux Ethernet bridge devices. A Linux bridge functions like a network switch, connecting multiple network segments (interfaces) into a single logical network. While the bridge device itself is primarily created using <I>ip link add type bridge</I>, the <I>bridge</I> command is essential for configuring its internal workings, such as managing bridge port settings, forwarding database (FDB) entries, multicast database (MDB) entries, and VLAN filtering rules. It provides granular control over how traffic is handled and forwarded across the bridged interfaces.


title: CAVEATS
content:
The <I>bridge</I> command does not create the bridge device itself; that operation is performed using <I>ip link add type bridge</I>.<br>Most <I>bridge</I> commands require root privileges to execute.<br>Its syntax can be complex due to the nested nature of objects and commands, requiring familiarity with underlying networking concepts.


title: BRIDGE CONCEPTS
content:
A Linux bridge functions as a software-defined Layer 2 switch. It forwards Ethernet frames between its attached interfaces based on MAC addresses. The <I>bridge</I> command allows administrators to precisely control this forwarding behavior (e.g., through static FDB entries), manage multicast efficiency (MDB), and implement VLAN segmentation at the bridge port level, enabling sophisticated network configurations.


title: INTEGRATION WITH IP LINK
content:
It's crucial to understand the distinction between creating a bridge device and configuring its ports. The bridge device itself is created using <I>ip link add name <I>br0</I> type bridge</I>. Subsequently, network interfaces are added to the bridge using commands like <I>ip link set dev <I>eth0</I> master <I>br0</I></I>. Once an interface becomes a bridge port, the <I>bridge</I> command is then used to configure its specific properties within the bridge context, such as its state, VLAN membership, or path cost.


title: HISTORY
content:
The <I>bridge</I> command is an integral part of the modern <I>iproute2</I> utility suite, which has largely superseded older network configuration tools like <I>net-tools</I> and, specifically, the <I>brctl</I> command for bridge management. <I>iproute2</I> offers a more comprehensive, unified, and powerful interface for managing various aspects of Linux networking. The <I>bridge</I> sub-command was developed to provide finer-grained control over bridge device properties and features, integrating bridge management seamlessly into the broader <I>iproute2</I> framework and leveraging its consistent syntax.


title: SYNOPSIS
content:
<b>brightnessctl</b> [<I>options</I>] <I>command</I> [<I>value</I>]<br><b>brightnessctl</b> [<I>options</I>] <b>set</b> <I>value</I>


title: PARAMETERS
content:
<b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available backlight devices found on the system.<br><br><b><b>-d</b> <I>DEVICE</I>, <b>--device</b>=<I>DEVICE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the backlight device to control. If omitted, the first detected device is typically used.<br><br><b><b>-p</b>, <b>--pretend</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a dry run; calculates and shows the new brightness value without actually applying it.<br><br><b><b>-s</b>, <b>--save</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current brightness level for the active device to a configuration file upon exit, allowing it to be restored later.<br><br><b><b>-r</b>, <b>--restore</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the brightness level saved from a previous session on startup, using the configuration file.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all command output except for errors.<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><b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One of the actions to perform: <b>set</b>, <b>get</b>, <b>max</b>, <b>info</b>, <b>devices</b>. Each command has a specific function for brightness control or query.<br><br><b><I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used primarily with the <b>set</b> command. Can be an absolute number (e.g., '1000'), a percentage (e.g., '50%'), or a relative change (e.g., '+10%', '-5%').<br><br>


title: DESCRIPTION
content:
<b>brightnessctl</b> is a command-line utility for managing screen brightness on Linux systems. It interacts directly with the kernel's backlight devices, providing a universal way to control brightness across different hardware. Unlike <b>xrandr</b>, which controls monitor output properties like gamma, <b>brightnessctl</b> directly adjusts the backlight intensity of the display, making it particularly useful for laptops and integrated screens. It allows users to query current brightness, set specific levels (absolute or percentage), and incrementally increase or decrease brightness, offering a flexible and scriptable solution for display brightness management. It's often preferred for its simplicity and direct interaction with kernel backlight interfaces.


title: CAVEATS
content:
<b>brightnessctl</b> relies on the Linux kernel's backlight interface (typically found under <i>/sys/class/backlight</i>). Its functionality is dependent on proper kernel support and device drivers for the specific display hardware. On some systems, especially those with non-standard graphics or display configurations, it might not work as expected or might require specific driver configurations. It may also conflict with desktop environments that have their own brightness control mechanisms if not properly integrated. Running it often requires root privileges or being part of a group with appropriate permissions (e.g., the 'video' group) to access <i>/sys/class/backlight</i> entries.


title: COMMON USAGE EXAMPLES
content:
<b>brightnessctl set 50%</b><br>Sets the brightness of the default device to 50% of its maximum.<br><br><b>brightnessctl set +10%</b><br>Increases the current brightness level by 10% for the default device.<br><br><b>brightnessctl get</b><br>Displays the current brightness level for the default device.<br><br><b>brightnessctl max</b><br>Displays the maximum brightness level for the default device.<br><br><b>brightnessctl --list</b><br>Shows all detected backlight devices, useful for determining which device to target with <b>--device</b>.


title: HISTORY
content:
<b>brightnessctl</b> emerged as a more reliable and universal solution for backlight control compared to older methods like <b>xbacklight</b> (which often relies on Xorg and specific drivers) or direct <b>xrandr</b> gamma adjustments. It leverages the standard <i>sysfs</i> backlight interface provided by the Linux kernel, making it hardware-agnostic as long as the kernel module for the display is present. Its development aimed to provide a simple, robust, and direct command-line interface for adjusting physical backlight intensity, crucial for laptop users and systems with integrated displays. It fills a niche for users seeking scriptable and system-level brightness control without relying on desktop environments.


title: PARAMETERS
content:
<b>--write-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats files <b>in-place</b>. This is the default behavior.<br><br><b>--check-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks if files are formatted correctly without modifying them. Exits with a non-zero status if formatting issues are found.<br><br><b>--diff-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a <i>diff</i> of changes that would be applied without actually modifying the files.<br><br><b>--stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads input from <i>standard input</i> and writes formatted output to <i>standard output</i>.<br><br><b>--config <PATH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom <i>configuration file</i> to use instead of the default <i>.brittany.yaml</i>.<br><br><b>--language-extensions <EXT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables specific <i>GHC language extensions</i> for parsing <i>Haskell</i> code.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>Brittany version</i> information.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's <i>help message</i> and available options.<br><br>


title: DESCRIPTION
content:
Brittany is an <b>opinionated</b>, yet highly configurable, source code formatter for <i>Haskell</i>. Its primary goal is to ensure consistent code style across projects and teams, significantly improving code readability and reducing debates over formatting choices. <br> It supports various modes of operation: formatting files <b>in-place</b> (the default), checking for formatting compliance without modifications (<b>--check-mode</b>), and showing a diff of potential changes (<b>--diff-mode</b>). Configuration is handled via <i>.brittany.yaml</i> files, allowing users to customize rules like column limits, indentation, and specific syntax preferences. Brittany is a valuable tool for maintaining code quality and consistency in <i>Haskell</i> development workflows, often integrated into <i>CI/CD</i> pipelines or <i>Git</i> hooks.


title: CAVEATS
content:
Brittany is inherently <b>opinionated</b>; while configurable, it might not align perfectly with every coding style. <br> It requires a working <i>Haskell</i> environment (e.g., <i>GHC</i>, <i>Stack</i>, or <i>Cabal</i>) to be installed on the system. <br> Performance can sometimes be a concern on extremely large or complex <i>Haskell</i> codebases.


title: CONFIGURATION FILES
content:
<b>Brittany</b> leverages <i>YAML</i>-based <i>configuration files</i>, typically named <i>.brittany.yaml</i>, to control its formatting behavior. These files allow users to define detailed rules, such as maximum line length, indentation levels, and specific formatting preferences for various <i>Haskell</i> constructs. They can be placed in the project root or user's home directory for global settings.


title: INTEGRATION IN WORKFLOWS
content:
A common use case for <b>Brittany</b> is its integration into development workflows. It's frequently used in <i>Git hooks</i> (e.g., pre-commit hooks) to automatically format code before commits, or incorporated into <i>CI/CD</i> pipelines to enforce code style compliance across pull requests. This ensures that all code contributed to a project adheres to a consistent formatting standard.


title: HISTORY
content:
<b>Brittany</b> originated as a community-driven project within the <i>Haskell</i> ecosystem to address the need for an opinionated yet flexible code formatter. It was developed to provide an alternative to existing formatters, balancing strictness with user configurability. Its development is ongoing, focusing on robustness and broader language feature support.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>brltty</i> version information and exits.<br><br><b><b>-b</b> <<i>driver</i>>, <b>--braille-driver=</b><<i>driver</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the braille display driver to use (e.g., 'al' for Alva, 'bm' for BrailleMemo).<br><br><b><b>-s</b> <<i>driver</i>>, <b>--speech-driver=</b><<i>driver</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the software speech synthesizer driver to use (e.g., 'espeak' for eSpeak, 'flite' for Flite).<br><br><b><b>-p</b> <<i>port</i>>, <b>--port=</b><<i>port</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the communication port for the braille display or speech device (e.g., '/dev/ttyS0', 'usb:', 'bluetooth:').<br><br><b><b>-f</b>, <b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <i>brltty</i> in the foreground instead of detaching and running as a daemon.<br><br><b><b>-C</b> <<i>configfile</i>>, <b>--config-file=</b><<i>configfile</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate configuration file to load instead of the default <i>/etc/brltty.conf</i>.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output, useful for troubleshooting issues.<br><br><b><b>-L</b> <<i>logfile</i>>, <b>--log-file=</b><<i>logfile</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects log output to the specified file instead of the default system log.<br><br>


title: DESCRIPTION
content:
<i>brltty</i> is a powerful background process (daemon) that enables blind and visually impaired users to interact with the Linux text console. It acts as a bridge between the operating system's text-mode output and a refreshable braille display or a software speech synthesizer. By translating screen content into braille dots or spoken words, <i>brltty</i> provides essential accessibility for console-based tasks, system administration, or early boot environments where graphical interfaces might not be available or desired.<br><br>It supports an extensive array of braille devices and speech engines, offering flexibility to users. Furthermore, <i>brltty</i> allows navigation of the console, inputting commands, and reading output directly from the braille display's keys or through specialized keyboard commands, making the traditionally visual console environment fully accessible.


title: CAVEATS
content:
Setting up <i>brltty</i> often requires careful identification of the correct braille or speech driver and the associated communication port. Proper user or system permissions (e.g., access to serial ports or USB devices) are crucial for its operation, sometimes requiring it to run as a privileged process. <i>brltty</i> is primarily designed for the text-mode console environment and does not directly provide accessibility for graphical desktop environments, which typically rely on dedicated screen readers like Orca or NVDA.


title: CONFIGURATION FILE
content:
The primary configuration for <i>brltty</i> is typically managed via the <i>/etc/brltty.conf</i> file. This file specifies default drivers, port settings, display options, key bindings, and other behavioral parameters. Changes to this file usually require restarting the <i>brltty</i> service to take effect.


title: DAEMON OPERATION
content:
<i>brltty</i> is designed to run as a system service, usually started automatically at boot by <i>systemd</i> or a similar init system. This ensures that braille and speech access is available from the earliest stages of the system's boot process, including login prompts and recovery modes, without requiring manual intervention.


title: DRIVER MODULES
content:
<i>brltty</i>'s extensibility comes from its modular architecture. It utilizes specific driver modules for each supported braille display and speech synthesizer. These modules handle the low-level communication protocols and specific features of the diverse hardware and software devices it supports, allowing for broad compatibility.


title: HISTORY
content:
<i>brltty</i> has a long and significant history in the Linux accessibility landscape, with its development beginning in the late 1990s (circa 1996-1997). It was conceived to provide essential low-level access to the Linux console for blind users, a critical gap at the time. Over the decades, it has continuously evolved, adding support for a vast array of braille displays and software speech synthesizers, and remains a cornerstone tool for console accessibility within the Linux ecosystem, maintained by a dedicated community.


title: PARAMETERS
content:
<b>[<i>PATH</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The starting directory for <b>broot</b>. If not specified, it defaults to the current working directory.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information and exits.<br><br><b><b>-s</b>, <b>--show-sizes</b>, <b>--sizes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the size of files and the sum of contents for directories. Sizes are computed on the fly.<br><br><b><b>-d</b>, <b>--disk-usage</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and displays the actual disk usage for directories. This can be slower than <b>--show-sizes</b> but provides more accurate space consumption.<br><br><b><b>-o</b>, <b>--output</b> <i>&lt;PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the path of the selected entry to the specified file instead of stdout.<br><br><b><b>-c</b>, <b>--cmd</b> <i>&lt;CMD&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a specified internal command after selecting a file or directory, useful for custom workflows.<br><br><b><b>-f</b>, <b>--file-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <b>broot</b> directly in file mode, showing only files and hiding directories. Ideal for quick file-specific searches.<br><br><b><b>--only-folders</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only directories in the tree view, hiding all files.<br><br><b><b>--hidden</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>broot</b> to display hidden files and directories (those starting with a dot).<br><br><b><b>--no-hidden</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly hides hidden files and directories (often the default behavior unless configured otherwise).<br><br><b><b>--git-status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays Git status for files and directories within the tree (e.g., modified, untracked).<br><br><b><b>--permissions</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays standard Unix file permissions alongside file names.<br><br><b><b>--no-sort</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the default sorting of files and directories in the display.<br><br>


title: DESCRIPTION
content:
<b>broot</b> is an interactive, terminal-based file manager that combines a tree view with a powerful fuzzy search capability. It is designed for speed and efficiency, allowing users to navigate complex directory structures quickly by typing a few characters to filter and find paths. Unlike traditional file managers, <b>broot</b> doesn't replace your shell but integrates seamlessly with it, often used with a shell alias like <b>br</b> to enable effortless directory changes. <br><br>Key features include a live, continuously updated tree display, fuzzy matching for files and directories, convenient file operations (copy, move, delete), the ability to open files with preferred applications, and highly customizable key bindings and internal commands. Written in Rust, it offers excellent performance and a modern, intuitive user experience directly within the command line.


title: CAVEATS
content:
<b>broot</b> requires a modern terminal emulator that supports true colors and interactive features for optimal functionality. To leverage its full potential, particularly to change your shell's current directory after selection, it's crucial to set up a shell function or alias (e.g., <b>br</b>). Without this integration, <b>broot</b> merely prints the selected path to standard output, not actually changing your shell's working directory. It is designed for interactive use and is not typically suitable for non-interactive scripting.


title: SHELL INTEGRATION FOR <I>CD</I>
content:
For <b>broot</b> to change your shell's current directory upon selection, you must define a shell function or alias. A common setup involves an alias like <b>br</b>. For Bash or Zsh, you typically add a function to your <b>.bashrc</b> or <b>.zshrc</b> file. This function is designed to call <b>broot</b> with the <b>--out-cmd</b> option. When you exit <b>broot</b> (e.g., by pressing Enter on a directory), <b>broot</b> outputs a command (such as <b>cd /path/to/directory</b>) that the shell function then <b>eval</b>uates. This allows <b>br</b> to launch <b>broot</b>, and upon selection, automatically change your shell's working directory.


title: CONFIGURATION
content:
<b>broot</b> is highly customizable through a TOML configuration file, usually located at <b>~/.config/broot/conf.toml</b>. This file allows users to define custom key bindings, add personalized commands, specify file associations for opening different file types, and adjust various display preferences. You can conveniently open and edit this configuration file directly from within the <b>broot</b> interface using the built-in <b>:config</b> command.


title: INTERNAL COMMANDS
content:
Within the <b>broot</b> interface, you can execute a rich set of internal commands by typing a colon (<b>:</b>) followed by the command name. Examples include <b>:cd</b> (to change the focused directory), <b>:focus</b> (to zoom into a directory), <b>:toggle_hidden</b> (to show or hide dotfiles), <b>:edit</b> (to open the selected file in your preferred editor), <b>:open</b> (to open the selected file with its default application), <b>:delete</b>, and <b>:rename</b>. These commands provide powerful interactive control without requiring you to exit the <b>broot</b> session.


title: HISTORY
content:
<b>broot</b> was created by Damien 'Canop' Degrandpre and first made its public appearance around 2019. Developed in Rust, it rapidly gained popularity for its innovative approach to terminal file management, uniquely combining fuzzy search capabilities with an interactive, real-time tree display. Its development has been consistently active, with continuous enhancements, new features, and performance improvements, solidifying its position as a favored tool among command-line users.


title: SYNOPSIS
content:
<b>brotli</b> [<i>OPTION</i>]... [<i>FILE</i>]...<br><b>brotli</b> { <b>-d</b> | <b>--decompress</b> } [<i>OPTION</i>]... [<i>FILE</i>]...<br><b>brotli</b> { <b>-t</b> | <b>--test</b> } [<i>OPTION</i>]... [<i>FILE</i>]...


title: PARAMETERS
content:
<b><b>-d</b>, <b>--decompress</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decompress input files.<br><br><b><b>-z</b>, <b>--compress</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compress input files (this is the default action).<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite existing output files without prompting.<br><br><b><b>-k</b>, <b>--keep</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not delete input files after compression or decompression.<br><br><b><b>-c</b>, <b>--stdout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output to standard output, keep original files.<br><br><b><b>-o</b>, <b>--output</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name.<br><br><b><b>-q</b>, <b>--quality</b>=<i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set compression quality (0-11). Higher values mean smaller files but slower compression. Default is 11.<br><br><b><b>-S</b>, <b>--suffix</b>=<i>SUFFIX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output filename suffix (default is <i>.br</i> for compression, or no suffix for decompression).<br><br><b><b>-j</b>, <b>--rm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove input files after successful operation (default unless <b>-k</b> is used).<br><br><b><b>-n</b>, <b>--no-file-information</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not store or restore the original file name and modification time in the compressed stream header.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing progress and detailed information.<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><b><b>-w</b>, <b>--window</b>=<i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the LZ77 sliding window size (10-24 bits). Larger window can improve compression but requires more memory. Default is 22 for quality 0-9, and 24 for 10-11.<br><br><b><b>-D</b>, <b>--dictionary</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a custom dictionary for compression. The dictionary file must be in brotli's custom dictionary format.<br><br><b><b>-t</b>, <b>--test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test the integrity of compressed files.<br><br>


title: DESCRIPTION
content:
<i>brotli</i> is a modern, open-source lossless data compression algorithm developed by Google. It is particularly effective for compressing text-based web content like HTML, CSS, and JavaScript, often achieving better compression ratios than older algorithms like Gzip. While optimized for web assets due to its context-adaptive modeling and a pre-defined static dictionary for common web terms, <i>brotli</i> is a general-purpose compressor. It offers a spectrum of compression quality levels (0-11), allowing users to balance compression speed against file size. Files compressed with <i>brotli</i> typically carry the <i>.br</i> extension. Its fast decompression speed makes it highly suitable for web servers to serve compressed content efficiently.


title: CAVEATS
content:
While <i>brotli</i> excels at text compression, for highly redundant binary data or very large files, other algorithms like <i>xz</i> or <i>zstd</i> might sometimes offer comparable or better ratios, though often with different speed profiles. Higher compression quality levels (e.g., 10-11) can be significantly slower for compression, making them more suitable for pre-compression of static assets rather than on-the-fly compression.


title: USAGE WITH PIPES
content:
Like many Unix utilities, <i>brotli</i> can process data from standard input and write to standard output. This makes it highly versatile for use in shell pipelines, for example: <br><i>tar cvf - some_dir | brotli -c > archive.tar.br</i> <br>or <br><i>brotli -d -c archive.tar.br | tar xvf -</i>


title: COMPRESSION QUALITY TRADE-OFFS
content:
The <b>-q</b> (quality) option is vital. A quality of 11 provides maximum compression but is the slowest. For real-time applications or situations where compression speed is critical, lower quality settings (e.g., 4-6) can offer a good balance between compression ratio and speed. Decompression speed is generally fast across all quality levels.


title: HISTORY
content:
<i>brotli</i> was initially developed by Google in 2013 as a generic compression library. The file format specification and its accompanying command-line tool, <i>brotli</i>, were publicly released in 2015. It quickly gained traction, especially within the web development community, being adopted by major web browsers and servers as a standard for HTTP compression (Content-Encoding: <i>br</i>) due to its superior compression ratios for text-based content compared to <i>gzip</i>.


title: SYNOPSIS
content:
<i>browser-sync</i> <I>command</I> [<i>options</i>]<br><br>Common commands:<br>  <b>start</b> [<i>options</i>] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start BrowserSync in your project.<br>  <b>init</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create a boilerplate config file.<br>  <b>reload</b> [<i>options</i>] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reload all connected browsers.<br>  <b>--version</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Output version info.<br>  <b>--help</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Display help information.


title: PARAMETERS
content:
<b><b>--server</b>, <b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start a static file server. Can accept a path or a boolean (current directory).<br><br><b><b>--files</b>, <b>-f</b> <I>paths</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify files to watch for changes. Accepts glob patterns (e.g., '<b>**/*.html, **/*.css</b>').<br><br><b><b>--proxy</b>, <b>-p</b> <I>url</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Proxy an existing backend server (e.g., '<b>localhost:3000</b>'). BrowserSync will inject its script into proxied pages.<br><br><b><b>--port</b> <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the port BrowserSync will run on (default: 3000).<br><br><b><b>--no-ui</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the BrowserSync UI (accessible on a separate port).<br><br><b><b>--no-open</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent BrowserSync from automatically opening a browser window on startup.<br><br><b><b>--browser</b> <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify which browser(s) to open (e.g., '<b>chrome</b>', '<b>firefox</b>', or a comma-separated list).<br><br><b><b>--index</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom index file to serve when using <b>--server</b> (default: '<b>index.html</b>').<br><br><b><b>--single</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Serve a Single Page Application (SPA). All requests will fallback to the '<b>index.html</b>' file.<br><br><b><b>--notify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable/disable the in-browser notifications (e.g., 'Connected to BrowserSync').<br><br>


title: DESCRIPTION
content:
<i>browser-sync</i> is an indispensable open-source tool for modern web development, dramatically improving workflow efficiency. It serves your static files, proxies an existing server, or integrates with task runners like Gulp or Grunt. Its core features include <b>live reloading</b> (injecting CSS/JS changes without full page refreshes) and <b>synchronized browsing</b> across multiple devices and browsers. This synchronization extends to scrolls, clicks, form inputs, and navigation, ensuring a consistent testing environment. It also provides a minimalist user interface (UI) to manage connections, test network sync speed, and inspect elements. By automating repetitive tasks, <i>browser-sync</i> allows developers to focus on writing code and instantly seeing its effects, making responsive design and cross-browser testing much faster and more reliable.


title: CAVEATS
content:
<i>browser-sync</i> requires <b>Node.js</b> and <b>npm</b> to be installed. When watching a large number of files on Linux, you might encounter limits on the number of file descriptors (<i>inotify</i> watches); increasing this limit via '<b>sysctl -w fs.inotify.max_user_watches=524288</b>' might be necessary. Complex server-side rendering or specific websocket implementations may require careful proxy configuration to ensure correct injection.


title: INSTALLATION
content:
<i>browser-sync</i> is typically installed globally via <b>npm</b> (Node Package Manager):<br><b>npm install -g browser-sync</b><br>This allows you to run the command directly from your terminal.


title: BROWSERSYNC UI
content:
Upon starting, <i>browser-sync</i> typically opens two browser tabs: your project and the BrowserSync UI. The UI, usually on a different port (e.g., 3001), provides an interface to control connected devices, view logs, test network sync speed, and manage options during development.


title: CONFIGURATION FILE
content:
For more complex setups or to store common settings, you can create a configuration file named <b>bs-config.js</b> (or a custom name) in your project root. This file can be generated with <b>browser-sync init</b> and allows programmatic configuration of all BrowserSync options.


title: HISTORY
content:
Developed by <i>Shane Osbourne</i>, <i>browser-sync</i> quickly rose to prominence within the front-end development community as a superior alternative for live-reloading and synchronized testing. It filled a critical gap by providing a robust, cross-device solution that integrated seamlessly with existing build processes and static sites, becoming a de-facto standard for rapid web development and testing.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Show help message and exit.</I><br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Show program's version number and exit.</I><br><br><b>-t, --text</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Force text-only rendering, disabling images and multimedia content.</I><br><br><b>-c, --config &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify a custom configuration file path for Browsh.</I><br><br><b>--start-url &lt;url&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Initial URL to open upon starting Browsh (can also be passed as a direct argument).</I><br><br><b>--firefox.path &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the exact path to the Firefox binary used for the headless backend.</I><br><br><b>--firefox.port &lt;port&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Define the port for connecting to the headless Firefox instance.</I><br><br><b>--firefox.args &lt;args&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Pass additional, raw arguments directly to the Firefox headless process.</I><br><br><b>--firefox.no-sandbox</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Disable the Firefox sandbox; use with extreme caution as it reduces security.</I><br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Enable verbose debug logging for the Browsh client process.</I><br><br><b>--http-proxy &lt;proxy&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the HTTP proxy server address (e.g., http://host:port).</I><br><br><b>--https-proxy &lt;proxy&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the HTTPS proxy server address.</I><br><br><b>--ftp-proxy &lt;proxy&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the FTP proxy server address.</I><br><br><b>--no-proxy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Disable proxy usage, overriding any environment variables.</I><br><br><b>--insecure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Allow insecure server connections and certificates when using SSL/TLS.</I><br><br><b>--keep-browser-alive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Keep the headless browser process running after the Browsh CLI exits.</I><br><br><b>--auto-quit-timeout &lt;seconds&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Automatically quit Browsh after a specified period of inactivity.</I><br><br>


title: DESCRIPTION
content:
Browsh is a <B>modern, fully-interactive, real-time</B> terminal-based browser. It renders webpages directly in your command line interface (CLI), leveraging the power of a headless version of Firefox (or Chromium). Unlike older text-only browsers like <I>Lynx</I> or <I>Links</I>, Browsh aims to provide a near-graphical browsing experience within the terminal, supporting modern web technologies such as <I>JavaScript</I>, <I>HTML5</I>, <I>CSS3</I>, and even <I>WebGL</I> and <I>video playback</I> (though video support can be limited by terminal capabilities).<br><br>It functions by running a headless browser in the background and streaming its rendered output to the terminal, allowing users to interact with dynamic content, fill forms, and navigate complex websites. This makes Browsh exceptionally useful for <I>remote SSH sessions</I>, environments with <I>limited bandwidth</I>, or for users who prefer a <I>keyboard-driven workflow</I> and wish to avoid switching between GUI and TUI environments.


title: CAVEATS
content:
Browsh requires a <I>headless Firefox</I> (or Chromium) instance to function, which can be resource-intensive compared to traditional text browsers. Full multimedia support (especially video) depends heavily on the terminal's capabilities and might not always work seamlessly. Using options like <B>--firefox.no-sandbox</B> can pose security risks and should only be used if absolutely necessary and understood. Performance can vary significantly based on the complexity of the webpage and the network connection.


title: INSTALLATION CONSIDERATIONS
content:
Browsh typically requires two main components: the Browsh CLI client and a headless browser (e.g., Firefox). The <B>browsh-install</B> script is often recommended for installation, as it helps ensure the correct version of headless Firefox is available and properly configured on your system. Users should verify their system meets the dependencies for running headless Firefox efficiently.


title: KEYBINDINGS AND CONTROLS
content:
Browsh uses a set of keyboard shortcuts for navigation and interaction, similar to other TUI applications. Common controls include: <B>Arrow keys</B> for scrolling; <B>Tab</B> and <B>Shift+Tab</B> for navigating interactive elements; <B>Enter</B> to follow links or activate elements; <B>Ctrl+L</B> to open the URL bar; <B>Ctrl+W</B> to close the current tab; <B>Ctrl+Q</B> or <B>Ctrl+C</B> to quit the application. A full list of keybindings can usually be accessed by pressing <B>?</B> within Browsh or referring to its official documentation.


title: HISTORY
content:
Browsh was created by <B>Tye Sheridan</B> and first released around <B>2018</B>. Its development was driven by the need for a modern web browsing experience within the terminal, overcoming the limitations of older text-based browsers that struggled with JavaScript-heavy and dynamic websites. It leverages <I>Go</I> for its CLI client and <I>WebExtensions</I> for the bridge to the headless browser, making it a unique solution that brings the full power of a modern rendering engine to the command line, enabling complex web interactions without a graphical desktop environment.


title: SEE ALSO
content:
lynx(1): <I>Classic text-mode web browser.</I>, links(1): <I>Text and graphical web browser with advanced features.</I>, w3m(1): <I>Pager-like text browser with tables and frames support.</I>, curl(1): <I>Tool to transfer data from or to a server, supporting various protocols.</I>, wget(1): <I>Non-interactive network downloader.</I>, ssh(1): <I>Secure Shell client for remote access (common use case for Browsh).</I>, tmux(1): <I>Terminal multiplexer (often used to manage Browsh sessions).</I>


title: PARAMETERS
content:
<b><I>-c</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a new archive. This is the backup operation mode. Often combined with <I>-f</I>.<br><br><b><I>-x</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extract files from an existing archive. This is the restore operation mode. Can specify individual files or directories.<br><br><b><I>-v</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose mode. Displays detailed information about files being processed during backup or restore.<br><br><b><I>-f</I> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the archive file or device (e.g., a tape device like <I>/dev/st0</I>, or a disk file).<br><br><b><I>-L</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the contents of an archive. Shows the table of contents without extracting any data.<br><br><b><I>-t</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test the integrity of an archive. Verifies the archive's data for readability and corruption without extraction.<br><br><b><I>-C</I> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable and specify the compression type for the archive (e.g., <I>zlib</I>, <I>bzip2</I>).<br>Example: <I>-C zlib</I>.<br><br><b><I>-E</I> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable encryption for the archive. Requires a passphrase and specifies the encryption algorithm (e.g., <I>aes256</I>).<br><br><b><I>paths...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more files, directories, or patterns to include in a backup or extract during a restore operation.<br><br>


title: DESCRIPTION
content:
The <b>bru</b> command typically refers to the <i>BRU (Backup and Restore Utility)</i> software by Enhanced Software Technologies, Inc. (EST). It is a commercial, enterprise-grade data backup and recovery solution designed for reliability and integrity across various Unix-like operating systems, including Linux. Unlike simpler archival tools, BRU offers advanced features such as checksum-based integrity verification, robust error detection and correction, multi-stream operations, built-in compression and encryption, and extensive support for diverse storage media, from tape drives to cloud storage. Its focus on data fidelity makes it a preferred choice for critical server backups and complex disaster recovery planning in professional IT environments.


title: CAVEATS
content:
The <b>bru</b> command refers to a commercial software product (EST BRU) and is not a standard, pre-installed utility found on typical Linux distributions. Its usage requires purchasing a license and installing the software package. Features and command-line options may vary significantly between different versions of the BRU software. It is generally designed for complex backup scenarios, which implies a steeper learning curve compared to simpler, built-in Linux tools.


title: HISTORY
content:
The BRU (Backup and Restore Utility) software has a long-standing history, originating in the late 1980s for Unix operating systems. It was recognized early on for its robust data integrity features, especially in critical server environments and with tape backup systems. Over the decades, BRU has continually evolved, adapting to new storage technologies, file systems, and operating system advancements, including extensive support for Linux. Its enduring presence underscores its reliability and comprehensive feature set in the niche of professional data backup and recovery.


title: PARAMETERS
content:
<b><I>brush_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Brother graphics file to be converted. If this argument is omitted, <b>brushtopbm</b> reads the input from standard input (stdin).<br><br>


title: DESCRIPTION
content:
<b>brushtopbm</b> is a specialized command-line utility from the <b>Netpbm</b> image manipulation toolkit. Its primary function is to convert a "brush" graphics file, typically generated by <b>Brother P-Touch</b> label printers, into a <b>portable bitmap</b> (<b>PBM</b>) image. The PBM format is a simple, plain-text or raw-binary format representing a monochrome (black and white) image.<br><br>This command is useful for users who need to extract or manipulate images from Brother P-Touch files outside of the printer's proprietary software environment. It reads the input brush file and outputs the corresponding PBM image to standard output, allowing for piping with other Netpbm tools or redirection to a file. The <b>PBM</b> output can then be further processed by other Netpbm utilities (e.g., <b>pbmtopng</b>, <b>pbmtext</b>) to convert it to different formats, add text, or perform other manipulations.


title: CAVEATS
content:
Input file must be in the specific proprietary Brother "brush" graphics format. Incorrect input formats will result in errors or garbled output.<br>The output is always a monochrome Portable Bitmap (PBM). There is no support for color or grayscale conversion.<br>Primarily used within the <b>Netpbm</b> suite; its standalone utility is limited unless integrated into a larger script or workflow.


title: STANDARD INPUT/OUTPUT
content:
By default, <b>brushtopbm</b> reads the Brother brush file from standard input if no <I>brush_file</I> is specified on the command line. It always writes the resulting PBM image to standard output. This behavior allows for seamless integration into shell pipelines, enabling complex image processing workflows by chaining <b>brushtopbm</b> with other Netpbm utilities or general Unix tools. For example, <b>cat mylabel.brush | brushtopbm > mylabel.pbm</b> or <b>brushtopbm mylabel.brush | pbmtopng > mylabel.png</b>.


