# CommandSection

title: CAVEATS
content:
<b>mpic++</b> requires an MPI implementation (e.g., <i>Open MPI</i>, <i>MPICH</i>) to be correctly installed and configured on the system.<br>Its specific behavior and the underlying C++ compiler invoked depend entirely on how MPI was configured during its installation.<br>It is a wrapper, not a compiler itself; it merely orchestrates the correct flags for the actual compiler.<br>Mixing different MPI implementations or versions within a single project can lead to compilation or runtime issues.


title: HOW IT WORKS INTERNALLY
content:
<b>mpic++</b> operates by querying the MPI installation's configuration. It retrieves the appropriate compiler (e.g., <i>g++</i>, <i>clang++</i>), include directories (<i>-I</i> flags), library directories (<i>-L</i> flags), and library names (<i>-l</i> flags) that are necessary for building an MPI application. It then constructs a full command line for the underlying C++ compiler, incorporating these MPI-specific flags along with any user-provided options and source files. This abstraction hides the complexity of MPI-specific build parameters from the developer.


title: PORTABILITY AND EASE OF USE
content:
The primary benefit of using <b>mpic++</b> is the significant boost in portability and ease of use it offers for MPI C++ development. By providing a consistent interface, it allows developers to compile their MPI code on different systems or with different MPI implementations without needing to modify their Makefiles or build scripts for specific MPI library locations. This greatly simplifies continuous integration, deployment, and collaborative development of parallel applications.


title: HISTORY
content:
The Message Passing Interface (MPI) standard emerged in the early 1990s as a vendor-independent, portable standard for message-passing. To simplify the development of parallel applications, particularly regarding compilation and linking, MPI implementations (like MPICH and Open MPI) introduced wrapper scripts such as <b>mpic++</b>. Before these wrappers, developers had to manually manage complex include paths, library paths, and linker flags, which varied significantly between different MPI versions and system configurations. The introduction of <b>mpic++</b> standardized this build process, making MPI programming more accessible, less error-prone, and promoting code portability across diverse high-performance computing environments.


title: SYNOPSIS
content:
<b>nagios</b> [<i>-d</i>] [<i>-f config_file</i>] [<i>-p pid_file</i>] [<i>-u user</i>] [<i>-g group</i>] [<i>-l log_file</i>] [<i>-s status_file</i>] [<i>-v</i>] [<i>-t</i>]<br><br><i>Note</i>: Direct invocation of the <b>nagios</b> daemon with these options is less common. It is usually started, stopped, and reloaded via system service management commands (e.g., <b>systemctl start nagios</b>).


title: PARAMETERS
content:
<b><i>-d</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the <b>nagios</b> daemon in the background.<br><br><b><i>-f config_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the main Nagios configuration file to use. This file typically points to other configuration files.<br><br><b><i>-p pid_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the PID file where the daemon's process ID will be stored.<br><br><b><i>-u user</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the <b>nagios</b> daemon as the specified user. This is important for security.<br><br><b><i>-g group</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the <b>nagios</b> daemon as the specified group.<br><br><b><i>-l log_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the event log file where Nagios will write its operational logs.<br><br><b><i>-s status_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the status file, which stores real-time monitoring information for the web interface.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information for the Nagios daemon and exit.<br><br><b><i>-t</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test the specified configuration files for validity and exit. This is crucial for troubleshooting configuration issues.<br><br>


title: DESCRIPTION
content:
The <i>nagios</i> command refers to the core daemon of the Nagios monitoring system. Nagios is a widely-used, open-source tool designed to monitor hosts, services, and network devices across an entire IT infrastructure. Its primary function is to continuously check the status of defined objects (like servers, routers, services such as HTTP, SSH, or disk space) by executing various monitoring plugins. If a check fails or deviates from predefined thresholds, Nagios can generate alerts and send notifications via various methods, including email, SMS, or custom scripts.<br><br>The daemon maintains a comprehensive view of the network's health, logs events, and provides a centralized web interface for administrators to view current status, historical data, and manage alerts. While <i>nagios</i> is the executable that runs the main monitoring process, it is typically managed and controlled through system service managers (like <i>systemd</i> or <i>SysVinit</i> scripts) rather than being directly invoked by users from the command line for daily operations.


title: CAVEATS
content:
The <b>nagios</b> daemon is primarily a background service and is rarely invoked directly by users with its command-line options. Its lifecycle (start, stop, reload) is almost exclusively managed by operating system service managers like <i>systemd</i> or traditional <i>SysVinit</i> scripts. <br><br>Nagios relies heavily on a complex set of external configuration files, and proper functionality requires careful and extensive setup. The actual monitoring tasks are performed by external Nagios plugins, which are separate executables that the daemon invokes.


title: CONFIGURATION FILES
content:
The <b>nagios</b> daemon's behavior is entirely defined by a hierarchy of configuration files (e.g., <i>nagios.cfg</i>, <i>commands.cfg</i>, <i>hosts.cfg</i>, <i>services.cfg</i>, <i>timeperiods.cfg</i>, etc.). These files specify what to monitor, how often, who to notify, and more. A common practice is to organize these files into separate directories for clarity.


title: NAGIOS PLUGINS
content:
The core <b>nagios</b> daemon does not perform actual checks itself. Instead, it relies on external executables called <i>Nagios Plugins</i>. These are independent scripts or binaries (e.g., <b>check_http</b>, <b>check_disk</b>, <b>check_cpu</b>) that perform specific checks and return their status (OK, WARNING, CRITICAL, UNKNOWN) and performance data in a standardized format that Nagios understands. This plugin architecture makes Nagios highly extensible.


title: WEB INTERFACE
content:
While <b>nagios</b> is a command-line daemon, its primary user interface for monitoring status, acknowledging problems, and viewing historical data is a comprehensive web interface. This interface provides dashboards, status maps, reports, and event logs, making it easy for administrators to get an overview of their monitored environment.


title: HISTORY
content:
Nagios originated in 1999 as <i>NetSaint</i>, developed by <i>Ethan Galstad</i>. It was initially designed as a simple host and service monitoring application. Due to trademark issues, the project was renamed to <b>Nagios</b> (a recursive acronym for 'Nagios Ain't Gonna Insist On Sainthood') in 2002. <br><br>Over the years, Nagios has evolved significantly, becoming one of the most popular and influential open-source monitoring solutions. It has spawned a rich ecosystem of plugins, add-ons, and commercial derivatives like Nagios XI, while Nagios Core remains the free and open-source foundation.


title: SYNOPSIS
content:
<b>zig</b> <i>&lt;subcommand&gt;</i> [<i>options</i>] [<i>arguments</i>]<br><br>Common invocations:<br><b>zig</b> <i>build</i> [<i>options</i>]<br><b>zig</b> <i>run</i> <i>&lt;file&gt;</i> [<i>args</i>]<br><b>zig</b> <i>test</i> <i>&lt;file&gt;</i><br><b>zig</b> <i>cc</i> <i>&lt;source.c&gt;</i> [<i>options</i>]


title: PARAMETERS
content:
<b>build</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and runs a project's <i>build.zig</i> file, executing defined build steps.<br><br><b>run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and immediately executes a single Zig source file.<br><br><b>test</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and runs all tests defined within a Zig source file or project.<br><br><b>init-exe</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new executable Zig project with a basic structure.<br><br><b>init-lib</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes a new library Zig project with a basic structure.<br><br><b>cc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Acts as a C compiler frontend, allowing compilation of C/C++ files using Zig's compiler infrastructure.<br><br><b>fmt</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats Zig source code according to official style guidelines.<br><br><b>translate-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Translates C header files into Zig equivalent declarations.<br><br><b>version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the installed Zig compiler version.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help or help for a specific subcommand.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output for compilation and build processes.<br><br><b>--release-fast</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles with optimizations for speed, suitable for production.<br><br><b>--release-safe</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles with optimizations and safety checks enabled (e.g., bounds checks).<br><br><b>--release-small</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles with optimizations for minimum binary size.<br><br>


title: DESCRIPTION
content:
The <b>zig</b> command is the primary interface for the Zig programming language. It acts as both a compiler and a versatile build system. Zig is a general-purpose, low-level programming language designed for robustness, optimality, and explicit control. The <b>zig</b> command allows users to compile Zig source files, cross-compile for various targets, run tests, and manage project dependencies. It integrates a powerful build system, often replacing traditional build tools like Make or CMake, by using a <i>build.zig</i> file written in Zig itself. This enables complex build logic to be expressed directly within the language, facilitating reproducible builds and simplified project management. Additionally, <b>zig</b> functions as a C/C++/Objective-C compiler, leveraging LLVM, which makes it a powerful drop-in replacement for <i>gcc</i> or <i>clang</i> in many contexts, offering features like link-time optimization (LTO) and advanced error checking.


title: CAVEATS
content:
The <b>zig</b> command is not a standard, pre-installed Linux utility; it must be downloaded and installed separately. As the Zig language and its compiler are under active development, specific commands, options, and behaviors may evolve rapidly between versions, requiring users to consult the official documentation for the version they are using.


title: CROSS-COMPILATION CAPABILITIES
content:
One of <b>zig</b>'s most praised features is its exceptional support for cross-compilation. It can effortlessly compile code for a vast array of target architectures and operating systems (e.g., ARM, WebAssembly, Windows, macOS, Linux) directly from a single development environment, often without the need to install separate toolchains. This simplifies the development and deployment of multi-platform and embedded applications significantly.


title: INTEGRATED BUILD SYSTEM
content:
Unlike many programming languages that rely on external build systems (like Make, CMake, or Cargo), Zig features an integrated and extensible build system defined by a <i>build.zig</i> file. This file is itself a Zig program, allowing developers to write complex and custom build logic using the full power of the Zig language, including compile-time execution. This approach fosters reproducible builds and streamlines project setup and dependency management.


title: HISTORY
content:
Zig was created by Andrew Kelley, with initial development beginning around 2015. It emerged from a desire for a systems programming language that provided explicit control and simplicity, without hidden control flow or memory allocations. It gained significant attention for its innovative approach to compile-time metaprogramming, error handling, and its powerful C/C++ interop capabilities. The project is open-source and community-driven, with development primarily managed through GitHub, characterized by rapid iteration and an engaged user base.


title: PARAMETERS
content:
<b><input_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the JavaScript file to be decoded. If this argument is omitted, <i>zjsdecode</i> reads the obfuscated JavaScript from standard input (stdin).<br><br><b>-o <output_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the file to which the decoded JavaScript should be written. If this option is omitted, the output is printed to standard output (stdout).<br><br>


title: DESCRIPTION
content:
<i>zjsdecode</i> is a specialized utility primarily used to de-obfuscate or decode JavaScript code that has been intentionally obscured to make it unreadable. It often targets specific encoding or obfuscation schemes, aiming to restore the code to a more human-readable format.<br><br>This tool is commonly employed in security analysis, reverse engineering of web applications, or malware analysis to understand the functionality of hidden or malicious JavaScript. It typically reads obfuscated JavaScript from a file or standard input and outputs the decoded version to standard output or a specified file.


title: CAVEATS
content:
<i>zjsdecode</i> is <i>not a standard Linux command</i> and may not be available on all systems by default. It typically needs to be installed separately or is part of specialized security toolkits.<br><br>Its effectiveness depends heavily on the <i>specific obfuscation techniques</i> used. It may not successfully decode all forms of obfuscated JavaScript, especially those employing advanced or custom methods. Users should be aware that the success rate can vary significantly based on the input.


title: USAGE IN SECURITY ANALYSIS
content:
This command is particularly valuable in cybersecurity for <i>malware analysis</i> and <i>web penetration testing</i>. It helps security researchers understand the true intent of malicious scripts found on compromised websites or within phishing campaigns by revealing their underlying logic.


title: INPUT/OUTPUT FLEXIBILITY
content:
<i>zjsdecode</i> commonly supports reading input from either a specified file path or directly from <i>standard input</i> (e.g., via a pipe from another command like <b>cat</b> or <b>curl</b>). Similarly, output can be redirected to a file using the <B>-o</B> option or displayed directly to <i>standard output</i>.


title: HISTORY
content:
<i>zjsdecode</i> appears to be a specialized tool, likely developed by individuals or small teams for specific tasks related to JavaScript code analysis, rather than a broad, community-driven project. Its development is often spurred by the need to analyze increasingly complex and obfuscated web-based threats or proprietary web applications. Precise historical details are scarce due to its niche nature and lack of widespread official documentation.


title: SYNOPSIS
content:
<b>zmv</b> [<i>-s substituteflags</i>] [<i>-W globflags</i>] [<i>-options</i>] <i>pattern replacement</i>


title: PARAMETERS
content:
<b><i>pattern</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A Zsh glob pattern matching the files to be renamed or moved. Parentheses <i>(...)</i> can be used to capture parts of the filename for later reference.<br><br><b><i>replacement</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The string specifying the new names for the files. Backreferences <i>$1</i>, <i>$2</i>, etc., correspond to the captured groups in the <i>pattern</i>.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactive mode. Prompt before each move/rename operation.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force mode. Overwrite existing destination files without prompting.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;No-execute mode (dry run). Show what would be done without actually performing any operations. Highly recommended for testing complex patterns.<br><br><b><b>-s</b> <i>substituteflags</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass specific flags to the substitution within the <i>replacement</i> string. For example, <i>s:r</i> for root name, <i>s:e</i> for extension.<br><br><b><b>-W</b> <i>globflags</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass specific flags to the globbing within the <i>pattern</i>. For example, <i>W:D</i> to include dot files, <i>W:n</i> to enable NULL_GLOB.<br><br><b><b>-Q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quote the arguments, treating them literally rather than as patterns or shell commands. Useful if patterns or replacements contain shell metacharacters.<br><br><b><b>-C</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copy files instead of moving them. Equivalent to using <i>cp</i> instead of <i>mv</i>.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create symbolic links instead of moving files. Equivalent to using <i>ln -s</i>.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create parent directories as needed if the destination path requires them.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass the <i>-f</i> (force) option to the underlying <i>mv</i> or <i>cp</i> command, ensuring existing files are overwritten.<br><br>


title: DESCRIPTION
content:
<i>zmv</i> is a highly powerful and flexible function within the Zsh (Z Shell) environment, designed for renaming or moving multiple files using pattern matching. Unlike the standard <i>mv</i> command which renames one file at a time or uses simple wildcards, <i>zmv</i> leverages Zsh's advanced globbing features to perform complex, rule-based renames across many files simultaneously. It allows for the use of capturing groups in the source pattern, which can then be referenced in the destination name, enabling sophisticated transformations like reordering parts of filenames, adding prefixes/suffixes, or changing file extensions across entire directories. It is an invaluable tool for batch file operations when basic globbing isn't sufficient.


title: CAVEATS
content:
<i>zmv</i> is a Zsh-specific function and is not available by default in other shells like Bash or Dash. It must typically be loaded using <i>autoload -Uz zmv</i> in your Zsh configuration. Due to its powerful pattern matching and batch operation capabilities, it can be destructive if not used carefully; always use the <b>-n</b> (dry run) option to preview changes before executing.


title: GLOBBING AND BACKREFERENCES
content:
The true power of <i>zmv</i> lies in its use of Zsh's extended globbing. By enclosing parts of the <i>pattern</i> in parentheses <i>(...)</i>, you create 'capturing groups'. These captured parts can then be referenced in the <i>replacement</i> string using variables like <i>$1</i>, <i>$2</i>, and so on, corresponding to the order of the capturing groups. For example, to rename files from 'IMG_1234.jpg' to 'photo_1234.jpg', you could use: <br><i>zmv 'IMG_(*).jpg' 'photo_$1.jpg'</i><br>This allows for highly flexible and complex renaming rules.


title: HISTORY
content:
<i>zmv</i> originated as a powerful utility within the Zsh (Z Shell) environment to extend basic file renaming capabilities. It's not a standalone executable but rather a highly optimized Zsh function, often found in the <i>zsh/files</i> or <i>zsh/zsh_misc</i> module. Its development aimed to provide glob-based renaming that is more versatile and safer than simple shell loops for batch operations, incorporating Zsh's advanced glob qualifiers and parameter expansion features from its inception.


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Verbose mode.</i> Displays more detailed information about the XFS filesystem, including additional sections like quota parameters, and more in-depth data about allocation groups.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Print version information.</i> Displays the version number of the <i><b>xfsinfo</b></i> command and exits.<br><br><b><i>mount-point</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>mount point</i> (e.g., <code>/mnt/data</code>) of the XFS filesystem for which information is to be displayed. This is typically a directory where the filesystem is mounted.<br><br><b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>device</i> file (e.g., <code>/dev/sda1</code> or <code>/dev/mapper/vg0-lv0</code>) of the XFS filesystem for which information is to be displayed. This can be used for unmounted filesystems.<br><br>


title: DESCRIPTION
content:
<i><b>xfsinfo</b></i> is a command-line utility used to display detailed information about an XFS filesystem. It provides crucial metadata such as the filesystem's block size, inode size, log size, and comprehensive details about its data, log, and optional realtime sections. This command can be used on either a mounted XFS filesystem by specifying its mount point, or on an unmounted XFS device. It is an invaluable tool for system administrators and users needing to understand the underlying structure, configuration, and parameters of an XFS volume, aiding in diagnostics, verification, or planning. As a read-only operation, <i><b>xfsinfo</b></i> ensures no modifications are made to the filesystem.


title: CAVEATS
content:
<i><b>xfsinfo</b></i> can only display information for XFS filesystems; it will return an error or unexpected output on other filesystem types.<br>When querying an unmounted device, root privileges are typically required for access.<br>The command provides static filesystem structure information and metadata; for dynamic real-time usage statistics (like free space or inode usage), other tools such as <i><b>df(1)</b></i> or <i><b>xfs_bmap(8)</b></i> should be used.


title: OUTPUT DETAILS
content:
The output of <i><b>xfsinfo</b></i> is typically structured into several distinct sections, each providing specific details about the XFS filesystem's configuration and layout:<br><ul><li><b>Data Section:</b> Displays information about the main data area of the filesystem, including its logical and physical block sizes, the number of allocation groups (AGs), and the total number of data blocks.</li><li><b>Log Section:</b> Provides details regarding the XFS journal log, such as its size, log block size, and whether it's an internal (on the data partition) or external log.</li><li><b>Realtime Section:</b> If the XFS filesystem was created with a dedicated realtime data area (often used for streaming or multimedia applications), this section provides information on its size, block size, and allocation policies.</li><li><b>Quota Section (with -v):</b> When the <i><b>-v</b></i> (verbose) option is used and filesystem quotas are enabled, this section will display detailed information about user, group, and project quota limits and usage settings.</li></ul>


title: HISTORY
content:
The <i><b>xfsinfo</b></i> command is an integral part of the <i><b>xfsprogs</b></i> package, a comprehensive suite of utilities designed for managing the XFS filesystem. XFS was originally developed by SGI (Silicon Graphics, Inc.) for its IRIX operating system and later became a prominent journaling filesystem in the Linux kernel. The <i><b>xfsprogs</b></i> utilities, including <i><b>xfsinfo</b></i>, have consistently evolved alongside the XFS filesystem itself, gaining new features and improvements to maintain compatibility with the latest XFS versions and Linux kernel advancements.


title: PARAMETERS
content:
<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;Show ZNC's version information and exit.<br><br><b><b>-d</b> <i>&lt;path&gt;</i>, <b>--datadir</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the data directory path (default: <i>~/.znc</i> or <i>/var/lib/znc</i>).<br><br><b><b>-c</b> <i>&lt;file&gt;</i>, <b>--config</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file path.<br><br><b><b>-p</b> <i>&lt;port&gt;</i>, <b>--port</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start ZNC on a specific port, overriding the configured port.<br><br><b><b>-f</b>, <b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run ZNC in the foreground; do not daemonize.<br><br><b><b>-D</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose debug output for troubleshooting.<br><br><b><b>--makeconf</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively create a new <i>znc.conf</i> configuration file.<br><br><b><b>--makepass</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a hashed password for use in configuration entries.<br><br><b><b>--adduser</b> <i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively add a new user to the configuration.<br><br><b><b>--setpass</b> <i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively set or change a user's password.<br><br><b><b>--checkconf</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validate the syntax and content of the configuration file for errors.<br><br>


title: DESCRIPTION
content:
ZNC is an <b>IRC bouncer</b> (BNC) that allows you to maintain a persistent connection to IRC networks, even when your client is offline. It acts as an intermediary, staying connected 24/7, buffering missed messages, and replaying them when you reconnect. This ensures you never miss conversations or network events.<br><br>ZNC supports multiple users and networks, making it ideal for shared server environments or individuals managing several IRC connections. Its modular architecture allows for extensive customization with various plugins for features like logging, SASL authentication, and more. A built-in web interface provides convenient administration, enabling users to manage settings, add/remove networks, and configure modules without direct command-line interaction. It's a robust solution for enhancing your IRC experience with reliability and flexibility.


title: CAVEATS
content:
Requires a persistent server or VPS to run continuously for 24/7 availability.<br>Initial configuration can be complex, especially when setting up advanced features or modules.<br>Ensure proper file permissions on the data directory and strong passwords for security.


title: CONFIGURATION FILES
content:
ZNC primarily uses <i>znc.conf</i> for its settings, user accounts, network definitions, and module configurations. This file is typically located in your data directory (e.g., <i>~/.znc/configs/</i> or <i>/etc/znc/</i>). It can be edited manually, through the built-in web interface, or initially created using <b>znc --makeconf</b>.


title: MODULES
content:
ZNC's functionality is highly extensible through a wide array of modules. These modules can add diverse features such as away logging, auto-op, historical message buffering, SASL authentication, and more. Modules can be loaded globally for all users or on a per-user basis within the configuration.


title: WEB INTERFACE
content:
ZNC includes a powerful web administration interface, usually accessible on a separate port defined in its configuration. This interface provides a user-friendly way to manage users, add/remove networks, configure modules, and adjust general settings without requiring direct command-line access to the server.


title: HISTORY
content:
ZNC was first released around 2004, quickly gaining popularity as a robust and feature-rich IRC bouncer. It offered a more stable and powerful alternative to simpler BNCs, with its modular architecture allowing for extensive customization and extension. This flexibility contributed to its widespread adoption within the IRC community, and it continues to be actively developed and maintained as a cornerstone for persistent IRC connectivity.


title: PARAMETERS
content:
<b>--automake-name=<I>prog</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the `automake` program to use instead of the default.<br><br><b>--force, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the regeneration of `aclocal.m4` even if `configure.ac` is older.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print a summary of the options and exit.<br><br><b>-I <I>dir</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add directory <I>dir</I> to the list of directories to be searched for `.m4` files. This option can be used multiple times.<br><br><b>--output=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the generated `aclocal.m4` content to <I>file</I> instead of the default `aclocal.m4`.<br><br><b>--print-ac-dir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the system-wide Autoconf macro directory and exit.<br><br><b>--system-macro-file=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <I>file</I> as the system-wide `aclocal.m4`. This overrides the default system-wide macro file.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose processing information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version number and exit.<br><br>


title: DESCRIPTION
content:
The `aclocal` command is a crucial part of the <B>GNU Autotools</B> suite, specifically designed to assist in preparing a package for configuration by <B>Autoconf</B>. Its primary function is to generate the `aclocal.m4` file.<br><br>This file contains definitions for M4 macros that are either built-in to <B>Automake</B>, found in external `.m4` files specified via `AC_MACRO_DIRS`, or are custom macros required by the `configure.ac` (or `configure.in`) script. `aclocal` scans `configure.ac` and `Makefile.am` files to identify all used <B>Automake</B> and custom macros, then collects their definitions from various sources, including the system-wide <B>Autoconf</B> macro directory and user-specified directories.<br><br>By collecting these definitions into a single `aclocal.m4` file, `aclocal` ensures that all necessary macros are available for <B>Autoconf</B> to successfully generate the final `configure` script. This automation greatly simplifies the process of making software packages portable and configurable across different Unix-like systems.


title: CAVEATS
content:
`aclocal` does not generate the `configure` script itself; it prepares the macro definitions required by `autoconf` for that purpose.<br>The order of `-I` (include) directories can be important if there are duplicate macro names across different directories.<br>It requires a `configure.ac` file to exist in the current directory (or specified path) to scan for macro usage.


title: THE ROLE OF `ACLOCAL.M4`
content:
The `aclocal.m4` file is a crucial intermediary. It serves as a repository for all non-standard and Automake-specific M4 macros that the `configure.ac` script needs. By centralizing these definitions, `aclocal` simplifies the process for <B>Autoconf</B>, which then only needs to process a single, self-contained macro file along with `configure.ac` to generate the final `configure` script. This modularity helps in maintaining a clean and manageable `configure.ac` file.


title: INTERACTION WITH AUTOMAKE
content:
While `aclocal` is often run implicitly by `automake`, it's `aclocal` that performs the actual scanning and aggregation of macros used by both `configure.ac` and `Makefile.am` files. <B>Automake</B> uses the output of `aclocal` to generate `Makefile.in` files, further demonstrating the tight integration within the Autotools build system.


title: HISTORY
content:
<B>aclocal</B> is an integral component of the <B>GNU Autotools</B> suite, which originated in the mid-1990s to standardize the build process for open-source projects. Its development was driven by the need to simplify the management of complex M4 macros required for configuring software across diverse Unix-like environments. Initially a simpler script, it evolved alongside <B>Automake</B> to automatically detect and collect macro dependencies, thereby streamlining the process of generating `configure` scripts. Its role has remained consistent: to ensure that all necessary Autoconf and Automake macros are correctly aggregated, making projects easier to build and maintain for developers worldwide.


title: PARAMETERS
content:
<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><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose messages during execution.<br><br><b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't remove temporary files, useful for debugging.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force <i>autoheader</i> to overwrite existing output files, even if they appear up-to-date.<br><br><b>-i, --include=DIR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Look for <i>aclocal.m4</i> files in <i>DIR</i> as well. This directory is added to the search path.<br><br><b>-B, --prepend-include=DIR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <i>--include</i>, but prepends <i>DIR</i> to the search path, giving it higher precedence.<br><br><b>-I, --localdir=DIR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Look for auxiliary files in <i>DIR</i>. This is primarily for <i>autoconf</i>, but useful for consistency.<br><br><b>-C, --macrodir=DIR</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for Autoconf macros in <i>DIR</i>, usually refers to the system-wide macro directory.<br><br><b>-o, --output=FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the output to <i>FILE</i> instead of the default <i>config.h.in</i>.<br><br><b>-t, --template=FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <i>FILE</i> as the input template for the generated header, rather than the default <i>acconfig.h</i> if it exists, or internal data.<br><br>


title: DESCRIPTION
content:
<i>autoheader</i> is a crucial utility within the GNU Autotools suite, specifically designed to help C/C++ projects maintain portability across diverse Unix-like systems.<br>Its primary function is to automatically generate a template for <i>config.h.in</i>, a header file that defines preprocessor macros based on the results of configuration checks performed by <i>configure</i>.<br>By scanning <i>configure.ac</i> (or <i>aclocal.m4</i> files it includes) for <i>AC_DEFINE</i>, <i>AC_CHECK_HEADERS</i>, <i>AC_CHECK_TYPES</i>, <i>AC_CHECK_FUNCS</i>, and similar macros, <i>autoheader</i> extracts the necessary information.<br>It then produces <i>config.h.in</i> containing <b>#undef</b> or <b>#cmakedefine</b> directives for each feature, which are later replaced with <b>#define</b> by the <i>configure</i> script if the feature is found on the target system.<br>This automation significantly simplifies the process of adapting software to different environments, ensuring that applications use the correct system features while avoiding manual header file modifications.


title: CAVEATS
content:
<i>autoheader</i> relies on <i>configure.ac</i> to define the necessary checks. If <i>configure.ac</i> is incomplete or incorrect, the generated <i>config.h.in</i> will also be flawed.<br>It primarily handles <b>#define</b> directives for feature presence. Complex conditional compilation logic often needs to be handled within the source code itself using the generated definitions.<br>While <i>autoheader</i> can be run manually, it's typically invoked as part of <i>autoreconf</i>, which orchestrates the entire Autotools build system generation process. Running it in isolation without updating other Autotools components might lead to inconsistencies.


title: WORKFLOW INTEGRATION
content:
Typically, the full Autotools workflow involves: 1. Running <i>aclocal</i> (for <i>aclocal.m4</i> and <i>config.m4</i>), 2. Running <i>autoconf</i> (for <i>configure</i>), 3. Running <i>autoheader</i> (for <i>config.h.in</i>), and optionally <i>automake</i> (for <i>Makefile.in</i> files). The <i>autoreconf</i> command conveniently executes these in the correct order, making it the most common way to invoke <i>autoheader</i>.


title: PURPOSE OF <I>CONFIG.H.IN</I>
content:
The <b>.in</b> suffix signifies that it's a template file. The <i>configure</i> script, when run by a user, reads this template, performs system checks, and then substitutes placeholders (like <b>@HAVE_SOME_FEATURE@</b> or <b>#undef SOME_FEATURE</b>) with actual definitions (e.g., <b>#define SOME_FEATURE 1</b>) to create the final <i>config.h</i> in the build directory. This separation allows the source code to include <i>config.h</i> directly, while the build system handles its generation for the specific target environment.


title: HISTORY
content:
<i>autoheader</i> is an integral part of the GNU Autotools suite, a set of programming tools designed to address the challenges of portability in software development, particularly for C and C++ projects.<br>Developed by the GNU project, Autotools emerged in the early 1990s with <i>autoconf</i> as its core component. <i>autoheader</i> was introduced to automate the generation of <i>config.h.in</i> files, complementing <i>autoconf</i>'s ability to create <i>configure</i> scripts.<br>This allowed developers to define system-dependent features in a high-level <i>configure.ac</i> script, with <i>autoheader</i> translating these into a C header template. Its development paralleled the growth of open-source software and the increasing need for cross-platform compatibility, making it a standard tool for many Unix-like software distributions.


title: PARAMETERS
content:
<b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recreate all files, even if they are newer than their inputs. This option implies <b>--install</b>.<br><br><b><b>-i</b>, <b>--install</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copy auxiliary files (e.g., config.guess, install-sh) into the source tree if they are missing or older. This also implies <b>--force</b>.<br><br><b><b>-s</b>, <b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize auxiliary files, updating them if they are older or differ from the system-wide versions.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose messages about the operations being performed.<br><br><b><b>-W</b> <I>CATEGORY</I>, <b>--warnings=</b><I>CATEGORY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable warnings classified by <I>CATEGORY</I>. Common categories include 'all', 'none', 'gnu', 'obsolete'.<br><br><b><b>-I</b> <I>DIR</I>, <b>--include=</b><I>DIR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <I>DIR</I> to the aclocal search path for .m4 macros.<br><br><b><b>-m</b>, <b>--make</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If automake is part of the build system, explicitly run it. This is usually handled implicitly by <b>--install</b>.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the system-wide versions of auxiliary files without copying them into the source tree.<br><br><b><b>--no-warn-each-tool</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress warnings about each Autotools tool being run.<br><br>


title: DESCRIPTION
content:
autoreconf is a shell script that automatically regenerates the GNU Build System (Autotools) configuration files for a software package. It typically runs <I>autoconf</I>, <I>autoheader</I>, <I>automake</I>, <I>aclocal</I>, <I>libtoolize</I>, and <I>autopoint</I> in the correct order, ensuring that all necessary generated files are up-to-date.<br><br>Developers use autoreconf to prepare a source tarball for distribution or when working with a source tree obtained directly from a version control system (like Git or SVN) where the <I>configure</I> script and <I>Makefile.in</I> templates are not pre-generated. By running autoreconf in the top-level directory of a project, it ensures that <I>configure.ac</I> and <I>Makefile.am</I> files are properly processed to produce the <I>configure</I> script, <I>Makefile.in</I> files, <I>config.h.in</I>, and other build system artifacts.<br><br>This command streamlines the process of bootstrapping an Autotools-based project, making it easier for users to compile the software by simply running <I>./configure && make && make install</I>. It eliminates the need to manually invoke each Autotools component separately, reducing potential errors and simplifying the build setup.


title: CAVEATS
content:
<ul><li><I>autoreconf</I> requires that the various Autotools components (like <I>autoconf</I>, <I>automake</I>, <I>libtool</I>, <I>aclocal</I>, <I>autoheader</I>) are installed and accessible in your system's PATH.</li><li>It should generally be run from the top-level directory of the project's source tree.</li><li>While <I>autoreconf</I> generates the <I>configure</I> script, it does not execute it. You still need to run <I>./configure</I> manually to configure the build.</li><li>Sometimes, issues can arise due to version mismatches between different Autotools components, or if the <I>configure.ac</I> or <I>Makefile.am</I> files have specific requirements.</li></ul>


title: USAGE CONTEXT
content:
<I>autoreconf</I> is primarily used in two scenarios: First, by project developers when they modify the <I>configure.ac</I> (Autoconf input) or <I>Makefile.am</I> (Automake input) files, or when adding new Autotools components to a project. Second, by users or developers who obtain a project's source code directly from a version control system (e.g., via <I>git clone</I>). In such cases, the <I>configure</I> script and <I>Makefile.in</I> files are typically not committed, requiring <I>autoreconf</I> to generate them before the project can be configured and built.


title: THE AUTOTOOLS WORKFLOW
content:
The typical workflow for building an Autotools-based project involves three main steps:<br><br>1. <b>Bootstrapping</b>: Running <I>autoreconf -i</I> (or similar) to generate the <I>configure</I> script and <I>Makefile.in</I> files from their source templates.<br>2. <b>Configuration</b>: Executing the generated <I>./configure</I> script to adapt the build to the specific system environment, creating <I>Makefile</I>s from <I>Makefile.in</I> and <I>config.h</I> from <I>config.h.in</I>.<br>3. <b>Building & Installation</b>: Running <I>make</I> to compile the source code and <I>make install</I> to install the compiled binaries and other files onto the system.<br><br><I>autoreconf</I> plays the crucial first role in this chain.


title: HISTORY
content:
<I>autoreconf</I> is an integral part of the GNU Autotools suite, which originated in the early 1990s to standardize and simplify the build process for complex Unix-like software, making it portable across different systems. <I>autoreconf</I> was developed to automate the often intricate and error-prone sequence of invoking individual Autotools commands (<I>aclocal</I>, <I>autoconf</I>, <I>autoheader</I>, <I>automake</I>, <I>libtoolize</I>). Before <I>autoreconf</I>, developers had to manually run these commands in the correct order.<br><br>Its introduction significantly streamlined the bootstrapping of Autotools-based projects, especially when obtaining source code directly from version control repositories, as it provides a single, convenient command to prepare the build system.


title: SYNOPSIS
content:
<b>dtach</b> [-Eeo] <b>-c</b> <I>socket</I> <I>command</I> [<I>arg...</I>]<br><b>dtach</b> [-Eeo] <b>-a</b> <I>socket</I><br><b>dtach</b> <b>-k</b> <I>socket</I>


title: PARAMETERS
content:
<b><b>-c</b> <I>socket</I> <I>command</I> [<I>arg...</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a new <b>dtach</b> session using the specified Unix domain <I>socket</I> path, and run the <I>command</I> with its <I>arguments</I> within it. If the socket already exists, this command will attempt to attach to it instead.<br><br><b><b>-a</b> <I>socket</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to an existing <b>dtach</b> session identified by the specified Unix domain <I>socket</I> path.<br><br><b><b>-k</b> <I>socket</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Kill the <b>dtach</b> server process associated with the specified Unix domain <I>socket</I> path, effectively terminating the session and the running command.<br><br><b><b>-E</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not erase the screen on attach.<br><br><b><b>-e</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Erase the screen on attach (this is the default behavior).<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the old-style (pre-0.9) protocol.<br><br>


title: DESCRIPTION
content:
<b>dtach</b> is a minimalistic program designed to detach a running process from its controlling terminal and allow reattachment from another. It serves as a lightweight alternative to more feature-rich terminal multiplexers like <b>screen</b> or <b>tmux</b>.<br><br>The core functionality of <b>dtach</b> revolves around a Unix domain socket: a process is started (using <b>-c</b>) with its standard I/O redirected through this socket. When the original terminal disconnects or closes, the process continues running, managed by <b>dtach</b> via the socket. Later, from a different terminal, you can reattach (using <b>-a</b>) to the same socket, regaining control and interaction with the persistent process. This makes <b>dtach</b> ideal for managing long-running commands, shell sessions, or remote processes that need to survive network disconnections or terminal closures, all with minimal resource overhead.


title: CAVEATS
content:
<b>dtach</b> offers no window management, scrolling, copy-paste buffers, or other advanced features found in <b>screen</b> or <b>tmux</b>. It's designed for simple detachment and reattachment of a single process. If the <b>dtach</b> process itself (the one managing the socket) dies, the attached program will lose its connection and likely terminate or become unmanageable through <b>dtach</b>. Unlike <b>screen</b>/<b>tmux</b>, <b>dtach</b> does not have built-in keybindings for detaching; detachment typically occurs when the controlling terminal exits.


title: HOW IT WORKS
content:
<b>dtach</b> acts as a proxy between your program and your terminal. It sets up a Unix domain socket, launches your program, and redirects its standard input, output, and error streams through this socket. When you 'detach' (usually by closing the terminal), <b>dtach</b> continues to manage the program's I/O via the socket. When you 'attach', another <b>dtach</b> instance connects to the same socket, taking over the I/O.


title: TYPICAL USAGE
content:
To start a new session named 'mysession' running <b>bash</b>:<br>dtach -c /tmp/mysession bash<br><br>To detach from this session (e.g., close the terminal window).<br><br>To reattach to the 'mysession' session from another terminal:<br>dtach -a /tmp/mysession<br><br>To terminate the session and the running program:<br>dtach -k /tmp/mysession


title: HISTORY
content:
Developed as a minimalistic alternative to more feature-rich terminal multiplexers like <b>GNU Screen</b>, <b>dtach</b> emphasizes simplicity and a smaller footprint. Its design philosophy is to provide basic detachment and reattachment capabilities without the overhead of window management or complex features, making it ideal for specific, lightweight use cases where only process persistence is required.


title: PARAMETERS
content:
<b><I>database-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Microsoft Access .mdb database file.<br><br><b><I>table-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the table within the database to export. This is required for <i>mdb-export</i>; omit to list tables with <i>mdb-tables</i>.<br><br><b>-H, --no-header</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the printing of column names in the output.<br><br><b>-D <I>delimiter</I>, --delimiter=<I>delimiter</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the column delimiter for CSV output. Default is a comma (,).<br><br><b>-Q <I>quote-char</I>, --quote=<I>quote-char</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the character used to quote string values. Default is a double quote (").<br><br><b>-R <I>delimiter</I>, --row-delimiter=<I>delimiter</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the row delimiter. Default is a newline character (\n).<br><br><b>-X, --xml</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports data in XML format.<br><br><b>-M, --html</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports data in HTML table format.<br><br><b>-I, --insert</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports data as SQL INSERT statements, suitable for importing into other databases.<br><br><b>-S, --schema</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the SQL schema (CREATE TABLE statements) for the specified table instead of data.<br><br><b>-J, --just-dump-schema</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <i>--schema</i>, dumps only the schema, no data.<br><br><b>-N, --no-memo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the export of memo (long text) fields, which can sometimes cause issues or be very large.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <i>mdbtools</i> suite.<br><br>


title: DESCRIPTION
content:
<i>mdbtools</i> is a collection of open-source utilities designed to read and export data from Microsoft Access (MDB) database files without needing Microsoft Access installed. It provides a suite of command-line tools that allow users to list tables, extract schema, export data into various formats (CSV, XML, HTML, SQL INSERT statements), and even run SQL queries against MDB files. This is particularly useful for Linux and Unix users who need to interact with Access databases for data migration, analysis, or integration with other systems. While it primarily supports older .mdb formats (up to Access 2003/2007), it offers crucial functionality for interoperability.


title: CAVEATS
content:
<i>mdbtools</i> primarily supports Microsoft Access .mdb files up to version 2003 or 2007. It generally does not support the newer .accdb format (Access 2007 and later) without additional patches or tools. Complex queries, VBA macros, and some advanced Access features or data types might not be fully supported or correctly interpreted. Data corruption in the source MDB file can also lead to export failures.


title: OTHER COMMANDS IN THE MDBTOOLS SUITE
content:
The <i>mdbtools</i> package includes several other specialized utilities beyond <i>mdb-export</i>:<br><b><i>mdb-tables</i></b>: Lists all tables within an MDB database.<br><b><i>mdb-schema</i></b>: Dumps the SQL schema (CREATE TABLE statements) for all or selected tables.<br><b><i>mdb-sql</i></b>: Allows execution of simple SQL queries against an MDB database.<br><b><i>mdb-ver</i></b>: Displays the version of an MDB file.<br><b><i>mdb-array</i></b>: A utility for extracting data into a format suitable for scripting.<br><b><i>mdb-prop</i></b>: Extracts properties of an MDB database.<br><b><i>mdb-hexdump</i></b>: Dumps raw data from an MDB file, useful for debugging.


title: HISTORY
content:
<i>mdbtools</i> was initiated in the early 2000s as a project to provide open-source access to Microsoft Access database files, addressing the lack of native tools for this format on non-Windows operating systems. Its development has been driven by the need for interoperability, allowing users to extract and migrate data from legacy Access applications without relying on proprietary Microsoft software.


title: PARAMETERS
content:
<b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disassemble an ACPI AML file into ASL code. This is the default action for AML input files.<br><br><b>-tc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile an ASL file into AML bytecode. This is the default action for ASL input files.<br><br><b>-dc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disassemble and then recompile. Useful for validating an existing AML file by round-tripping through ASL.<br><br><b>-p <prefix></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a common filename prefix for all generated output files.<br><br><b>-o <outfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name for the primary output file (e.g., compiled AML or disassembled ASL).<br><br><b>-i <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include a specific ASL file during compilation; used for modular ASL development.<br><br><b>-sa</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicate that input files are raw ACPI tables (AML) to be sourced for compilation or disassembly.<br><br><b>-da</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump ACPI tables from system memory or a specified file into a disassemblable format.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display statistics about the compiled or disassembled ACPI tables.<br><br><b>-vo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display verbose warnings during compilation or disassembly.<br><br><b>-ve</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display verbose errors during compilation or disassembly.<br><br><b>-vr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display verbose remarks during compilation or disassembly.<br><br><b>-va</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display all verbose output (warnings, errors, and remarks).<br><br><b>-w <level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the warning level: <I>0</I> (suppress all warnings), <I>1</I> (warnings), <I>2</I> (remarks).<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore compile-time errors and attempt to complete the compilation.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all supported command options and their brief descriptions.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the <b>iasl</b> compiler version information.<br><br><b>-?</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the help message and exit.<br><br>


title: DESCRIPTION
content:
The <b>iasl</b> command, part of the Intel ACPI Component Architecture (ACA) tools, serves as a crucial utility for developers and enthusiasts working with ACPI (Advanced Configuration and Power Interface) firmware. It acts as both a compiler, translating human-readable ACPI Source Language (ASL) code into compact ACPI Machine Language (AML) bytecode, and a disassembler, converting AML bytecode back into ASL. This bidirectional capability is indispensable for debugging, modifying, or customising ACPI tables&mdash;such as the Differentiated System Description Table (DSDT) or Secondary System Description Tables (SSDT)&mdash;which govern power management, device configuration, and other low-level hardware interactions on a system. It's often used to fix ACPI-related issues in Linux, like problems with suspend/resume, fan control, or specific hardware recognition, by allowing users to extract, patch, and recompile their system's ACPI tables.


title: CAVEATS
content:
Modifying ACPI tables can be complex and risky; incorrect changes can lead to system instability, boot failures, or hardware malfunctions. Recompiling ACPI tables often requires specific patches or a deep understanding of the system's ACPI implementation. The generated AML must typically be loaded dynamically by the kernel or integrated into a custom BIOS, which is an advanced procedure. Disassembly of AML to ASL is not always perfectly reversible, especially for highly optimised or legacy AML.


title: ACPI DSDT/SSDT
content:
The DSDT (Differentiated System Description Table) and SSDT (Secondary System Description Tables) are core ACPI tables that describe the system's hardware configuration to the operating system. <b>iasl</b> is primarily used to extract, modify, and recompile these tables to fix ACPI bugs or enable specific hardware features on platforms where the vendor-provided firmware is incomplete or buggy.


title: TYPICAL WORKFLOW FOR PATCHING DSDT
content:
A common workflow involves using <I>acpidump</I> to extract the DSDT, then <I>iasl -d</I> to disassemble it into ASL. The ASL source is then manually edited to apply necessary patches (e.g., from a kernel patch or a community fix). Finally, <I>iasl -tc</I> recompiles the modified ASL back into AML, which can then be loaded by the kernel (e.g., via <I>initramfs</I> or <I>kernel command line</I> parameters).


title: HISTORY
content:
The <b>iasl</b> utility is a key component of the ACPI Component Architecture (ACA) distribution, developed and maintained by Intel. Its development began with the advent of the ACPI specification itself, evolving alongside the standard to support new features and address complexities in firmware implementation. It serves as Intel's reference ACPI compiler/disassembler, making it the de facto standard tool for ACPI table manipulation on Linux and other platforms. Its continuous development reflects the ongoing importance of ACPI for modern operating systems' interaction with hardware, particularly concerning power management, device discovery, and thermal control.


title: PARAMETERS
content:
<b>No options</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The standard <i>pmidi</i> utility, as commonly found in <i>PortMidi</i> examples, typically does not accept any command-line options or arguments. It is run without parameters to list all detected MIDI devices.<br><br>


title: DESCRIPTION
content:
<i>pmidi</i> is a simple command-line utility typically provided as an example or tool within the <i>PortMidi</i> library distribution. Its primary function is to enumerate and display information about MIDI input and output devices detected by the <i>PortMidi</i> library on the system.<br><br>It provides a quick way to identify connected MIDI interfaces, their unique device IDs, and their capabilities (input, output, or both). This information is crucial for developers and users of <i>PortMidi</i>-based applications who need to know which device IDs to use for MIDI communication. It does not send or receive MIDI data itself, acting purely as a diagnostic tool for device discovery.


title: CAVEATS
content:
<i>pmidi</i> is not a standard POSIX or Linux core utility and is not part of the `util-linux` or `coreutils` packages. Its availability depends on the installation of the <i>PortMidi</i> library, often distributed as part of a `portmidi-examples` or similar development package. The exact functionality or availability of command-line options might vary slightly depending on the specific <i>PortMidi</i> version or how it was compiled/packaged.


title: TYPICAL OUTPUT
content:
When executed, <i>pmidi</i> usually outputs a numbered list of detected MIDI devices. Each entry typically includes:<br>- <i>Device ID:</i> A unique integer identifier for the device.<br>- <i>Device Name:</i> A human-readable name for the MIDI interface or port.<br>- <i>Capabilities:</i> Indicators such as 'Input', 'Output', or 'Input, Output', denoting whether the device can send or receive MIDI data.<br>- <i>Default Status:</i> Whether it's the system's default input/output device (often marked with 'default').


title: DEPENDENCIES
content:
The <i>pmidi</i> command relies on the <i>PortMidi</i> library. To use <i>pmidi</i>, the <i>PortMidi</i> development files and runtime libraries must be installed on your system. On Debian/Ubuntu-based systems, this often means installing packages like `libportmidi-dev` or similar.


title: HISTORY
content:
<i>pmidi</i> emerged as a basic utility within the <i>PortMidi</i> project. <i>PortMidi</i> itself is a cross-platform C library designed to provide a uniform API for real-time MIDI input and output across different operating systems, including Linux, macOS, and Windows. Developed to simplify MIDI programming by abstracting OS-specific details, <i>pmidi</i> was created as a straightforward example program to demonstrate the library's device enumeration capabilities, serving as a practical tool for users to identify MIDI devices on their system.


title: PARAMETERS
content:
<b><b>-d</b>, <b>--dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps raw MIDI bytes as hexadecimal values. This option is useful for low-level debugging and examining the exact byte stream of MIDI messages.<br><br><b><b>-l</b>, <b>--list-ports</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available ALSA MIDI sequencer ports, showing their client and port IDs. This is useful for identifying which ports to connect to for monitoring.<br><br><b><b>-c </b><i>client:port</i>, <b>--connect=</b><i>client:port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to a specific ALSA MIDI port to snoop its events. Multiple ports can be specified by repeating this option or by listing them as arguments after options.<br><br><b><b>-p</b>, <b>--parse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses and displays MIDI messages in a human-readable, symbolic format (e.g., 'Note On', 'Control Change'). This is the default behavior if no other output option (like <b>-d</b> or <b>-m</b>) is specified.<br><br><b><b>-m</b>, <b>--midi-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps MIDI messages with their types and basic parameters. Offers a more structured view of messages compared to a raw byte dump (<b>-d</b>) but less detailed parsing than <b>-p</b>.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of <i>midisnoop</i>.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message, outlining command usage and available options.<br><br>


title: DESCRIPTION
content:
<i>midisnoop</i> is a lightweight command-line utility designed to monitor and display ALSA MIDI events in real-time. It acts as a passive "snooper," capturing MIDI data streams from specified ALSA sequencer ports and presenting them in a human-readable format. This tool is invaluable for diagnosing MIDI setups, verifying the correct transmission of MIDI messages from hardware devices or software applications, and understanding the flow of MIDI signals within a Linux audio environment. It can interpret and display various MIDI message types, including Note On/Off, Control Change, Program Change, Pitch Bend, System Exclusive (SysEx) messages, and more. Because it only observes and does not alter the MIDI stream, <i>midisnoop</i> is a safe and non-intrusive diagnostic tool. Users can specify input ports by name or ID, list available ports, and choose between detailed parsed output or raw byte dumps. It's an essential utility for musicians, audio engineers, and developers working with MIDI on Linux.


title: CAVEATS
content:
<i>midisnoop</i> primarily operates within the ALSA MIDI subsystem; it does not directly interact with JACK MIDI or other MIDI layers without appropriate ALSA-to-JACK bridges. <br> The output can become very verbose with high MIDI traffic, potentially scrolling rapidly. <br> It is a monitoring tool only and cannot send or modify MIDI messages.


title: CONNECTING TO PORTS
content:
To monitor MIDI events, <i>midisnoop</i> needs to connect to an ALSA MIDI port. You can find available ports using the <b>-l</b> option (e.g., <b>midisnoop -l</b>). Once you have the <i>client:port</i> ID (for example, "14:0" for "Midi Through:Midi Through Port-0"), you can specify it as an argument (e.g., <b>midisnoop 14:0</b>) or using the <b>-c</b> option (e.g., <b>midisnoop -c 14:0</b>). If no port is specified, <i>midisnoop</i> typically attempts to connect to all readable ports or waits for new connections, depending on its version and configuration.


title: INTERPRETING OUTPUT
content:
The default output (achieved with <b>-p</b> or implicitly) displays parsed MIDI messages, including event types (e.g., "Note On", "Control Change"), channel numbers, and relevant data values (e.g., note number, velocity, controller number, value). System Exclusive (SysEx) messages are usually shown as sequences of hexadecimal bytes, often prefixed with 'F0' and suffixed with 'F7', representing the start and end of a SysEx message, respectively.


title: HISTORY
content:
<i>midisnoop</i> is an integral part of the <I>ALSA (Advanced Linux Sound Architecture)</I> utilities package. It was developed to serve as a crucial diagnostic tool alongside the evolution of ALSA's MIDI sequencer capabilities, offering a command-line interface for real-time MIDI event inspection. Its continued maintenance and usage reflect ALSA's enduring role as the standard sound system for professional audio and MIDI operations on Linux.


title: PARAMETERS
content:
<b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the allocation status (allocated or unallocated) of the file or directory.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display inode information (this is the default behavior if no other display options are specified).<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the data unit addresses (blocks/clusters) that comprise the file's content.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the raw content of the file. This option dumps the actual data associated with the inode.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If the specified inode is a directory, display its contents, including the names and inode numbers of its entries.<br><br><b><b>-o <offset></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the sector offset from the beginning of the image to the start of the file system. This is crucial for images containing multiple partitions.<br><br><b><b>-f <fstype></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the file system type. If not provided, <i>ftdump</i> attempts to auto-detect it. Examples include <i>fat</i>, <i>ntfs</i>, <i>ext2</i>, <i>ext3</i>, <i>ext4</i>, <i>hfs</i>, <i>iso9660</i>, <i>raw</i>.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information about the operation and file system parsing.<br><br><b><b>&lt;image&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the disk image file or device containing the file system to be analyzed (e.g., <i>/dev/sda1</i>, <i>disk_image.dd</i>).<br><br><b><b>&lt;inode_num&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The inode number of the file or directory within the file system to display. This number is typically obtained using other TSK tools like <i>fls</i> or <i>ils</i>.<br><br>


title: DESCRIPTION
content:
<i>ftdump</i>, a utility from The Sleuth Kit (TSK), is a powerful command-line tool used in digital forensics to extract and display the content and metadata of a specific file or directory located within a raw disk image or partition. Unlike mounting a live filesystem, <i>ftdump</i> operates directly on the image, allowing investigators to access data from allocated, unallocated, or corrupted areas without altering the original evidence. It primarily requires the inode number of the target file or directory and the path to the disk image. The command can display file content in various formats, including raw or ASCII, and provides crucial details such as file size, timestamps, and data unit addresses. It's an essential tool for deep-dive examinations of individual files or directory structures during a forensic investigation, complementing other TSK tools for a comprehensive analysis.


title: CAVEATS
content:
<i>ftdump</i> operates on raw disk images, meaning it does not modify the original evidence. However, correct interpretation of its output often requires a good understanding of file system structures. It relies on accurate inode numbers, which must be obtained beforehand. Using <i>ftdump</i> on a live, mounted file system is generally discouraged in forensic contexts to prevent data alteration.


title: FORENSIC WORKFLOW INTEGRATION
content:
<i>ftdump</i> is typically utilized as a critical step within a broader digital forensic workflow. Investigators commonly begin by identifying relevant partitions using tools like <i>mmls</i>, then enumerate files and directories and their associated inode numbers with <i>fls</i> or <i>ils</i>. Once a specific inode of interest (e.g., for a suspicious file or directory) is identified, <i>ftdump</i> is employed to extract and display its detailed metadata and raw content for in-depth analysis, complementing other TSK tools like <i>icat</i> for full file recovery or <i>istat</i> for inode statistics.


title: HISTORY
content:
<i>ftdump</i> is an integral part of The Sleuth Kit (TSK), a widely recognized suite of open-source command-line tools for digital forensics. TSK was initially developed by Brian Carrier, starting in 2001, to provide advanced and reliable disk image analysis capabilities beyond what was commercially available. As TSK evolved, <i>ftdump</i> emerged as a specialized utility for deep inspection of individual file and directory structures. Its development has consistently focused on maintaining forensic integrity by allowing non-intrusive analysis of various file system types within disk images.


title: SYNOPSIS
content:
<b>happy</b> [<I>options</I>]<br><b>happy</b> [-v | --verbose] [-s | --status] [-m | --message] [-c | --cheer] [-p | --positive]


title: PARAMETERS
content:
<b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays more detailed hypothetical 'happiness' metrics, potentially including abstract uptime satisfaction or process contentment scores.<br><br><b><b>-s</b>, <b>--status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a concise, metaphorical system 'happiness' score or a brief 'mood' assessment based on hypothetical internal states.<br><br><b><b>-m</b>, <b>--message</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a random positive affirmation, an encouraging quote, or a light-hearted joke to uplift the user.<br><br><b><b>-c</b>, <b>--cheer</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Triggers a short, joyful ASCII animation or plays a hypothetical cheerful sound effect, designed to bring a smile to the user's face.<br><br><b><b>-p</b>, <b>--positive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates a symbolic 'positive reinforcement' action, such as suggesting a non-invasive 'optimization' or displaying a message that metaphorically 'boosts' system morale.<br><br>


title: DESCRIPTION
content:
The <I>happy</I> command is a purely hypothetical Linux utility conceptualized to infuse positivity and offer a whimsical 'well-being' report for the system. While not a standard component of mainstream Linux distributions, its imagined existence centers on providing a light-hearted interaction: displaying uplifting messages, playing brief, joyful ASCII animations, or even generating sounds. It would metaphorically assess the system's operational 'mood' without performing critical system alterations. Instead, <I>happy</I> would offer a charming interface, perhaps reflecting on uptime, successful processes, or general system responsiveness in an abstract 'happiness' score. Its core objective would be to transform mundane terminal interactions into a more delightful experience, serving as a digital pat on the back for your machine or a quick pick-me-up for the user, thereby fostering a more positive computing environment. It aims to demonstrate how even command-line utilities can contribute to user satisfaction and a lighter atmosphere.


title: CAVEATS
content:
The <I>happy</I> command is a conceptual creation and is <b>not</b> a real or standard utility found in typical Linux distributions. All described functionalities are entirely fictional and for illustrative purposes only. Users seeking genuine system status, performance, or optimization tools should refer to standard, well-documented commands like <I>uptime</I>, <I>free</I>, <I>top</I>, <I>htop</I>, or <I>df</I>.


title: PHILOSOPHY OF CHEERFULNESS ON THE COMMAND LINE
content:
The concept of a 'happy' command underscores a growing appreciation among users for more human-centric and less intimidating interactions with complex digital environments. It serves as a playful counterpoint to the often stark, technical, and unembellished nature of the command line, advocating for tools that not only fulfill a function but also subtly enhance the user's emotional experience. Such commands could foster a sense of delight and approachability, making the Linux environment more welcoming to newcomers and providing a refreshing, positive break for seasoned professionals. It highlights a potential future where even system utilities contribute to overall user well-being.


title: HISTORY
content:
As a purely conceptual command, <I>happy</I> possesses no actual development history. However, its theoretical genesis lies within the rich tradition of whimsical and non-essential Unix programs, such as <I>fortune</I> and <I>cowsay</I>, which inject humor, personality, and unexpected delight into the often utilitarian command-line interface. If <I>happy</I> were to exist, its evolution would likely be driven by community desire for more engaging, positive, and less strictly functional interactions with the operating system, potentially progressing from simple textual affirmations to more interactive, albeit still light-hearted, system 'mood' reports.


title: PARAMETERS
content:
<b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile only; do not link the program. This generates <i>.ali</i> (Ada Library Information) and <i>.o</i> (object) files.<br><br><b><b>-o</b> <i>output_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the output executable file when linking.<br><br><b><b>-gnatg</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate debugging information, allowing the use of a debugger (like <b>gdb</b>) on the compiled program. Equivalent to <b>-g</b>.<br><br><b><b>-gnatp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all compilation warnings.<br><br><b><b>-gnatw</b><i>&lt;category&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable specific categories of warnings. For example, <b>-gnatwe</b> enables all warnings, while <b>-gnatws</b> disables them.<br><br><b><b>-O</b><i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable optimization at a specified level (e.g., <b>-O2</b>, <b>-O3</b>). This leverages GCC's optimization passes.<br><br><b><b>-gnatV</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce very verbose output, including detailed Ada-specific messages and warnings generated by the compiler.<br><br><b><b>-I</b><i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>&lt;dir&gt;</i> to the list of directories searched for Ada source files (<i>.ads</i>, <i>.adb</i>) and object files (<i>.o</i>).<br><br><b><b>-a</b><i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>&lt;dir&gt;</i> to the list of directories searched for Ada library information files (<i>.ali</i> files).<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose operation, showing the commands executed by <b>gnat</b> internally (e.g., calls to <b>as</b>, <b>ld</b>).<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information of the GNAT compiler and exit.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a summary of command-line options and exit.<br><br>


title: DESCRIPTION
content:
<b>GNAT</b> (<b>G</b>NU <b>N</b>ew <b>A</b>da <b>T</b>ranslator) is the GNU Compiler Collection (GCC) front-end for the Ada programming language. It is a powerful, production-quality native Ada compilation system. GNAT translates Ada source code (files typically ending in <i>.adb</i> for bodies and <i>.ads</i> for specifications) into machine code, allowing developers to build executable programs. GNAT supports all versions of the Ada standard (Ada 83, Ada 95, Ada 2005, Ada 2012, and Ada 2022) and integrates seamlessly with the standard GNU toolchain, leveraging GCC's powerful optimization capabilities and multi-platform support. It's often used for embedded systems, real-time applications, and high-integrity software where Ada's strong typing, reliability features, and concurrency capabilities are highly valued.


title: CAVEATS
content:
<b>GNAT</b> primarily handles the compilation of individual Ada source files. For managing complex Ada projects with multiple source files, dependencies, and intricate build configurations, the <b>gprbuild</b> project manager is the preferred and more powerful tool, which internally orchestrates calls to <b>gnat</b>. Users should ensure a complete GNAT toolchain is installed, as it relies on other GNU utilities like the assembler and linker.


title: COMPILATION WORKFLOW
content:
When compiling Ada code, <b>gnat</b> processes Ada specification (<i>.ads</i>) and body (<i>.adb</i>) files. For each compiled unit, it typically generates two primary output files: an object file (<i>.o</i>) containing machine code and an Ada Library Information (<i>.ali</i>) file. The <i>.ali</i> file contains crucial metadata, including symbol information, dependency data, and other details necessary for separate compilation and strong type checking across compilation units. These object files are then linked, often with the Ada runtime libraries, to create the final executable program.


title: INTEGRATION WITH GCC
content:
<b>GNAT</b> is not a standalone compiler but rather a front-end component of the GNU Compiler Collection (GCC). This means that while <b>gnat</b> handles the Ada-specific parsing, semantic analysis, and intermediate code generation, it leverages GCC's robust backend for code optimization, assembly generation, and target-specific machine code output. This deep integration allows GNAT to benefit from GCC's extensive support for various hardware architectures and operating systems, as well as its highly optimized code generation capabilities, resulting in efficient and portable Ada programs.


title: HISTORY
content:
The <b>GNAT</b> project was initiated in 1992 by Ada Core Technologies (now AdaCore) and New York University as a free software compiler for Ada. Its first official release was in 1995. GNAT quickly gained significant traction and was later integrated into the GNU Compiler Collection (GCC) in 2001, solidifying its role as the primary Ada compiler for Linux and other Unix-like systems. It continues to be actively developed, keeping pace with new Ada standards and supporting a wide range of architectures and operating systems.


title: SYNOPSIS
content:
<b><code>python knockpy.py</code></b> <i>[OPTIONS] &lt;TARGET_DOMAIN&gt;</i><br>Example: <b><code>python knockpy.py example.com -w custom_wordlist.txt --full -o results.txt</code></b>


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the 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>-c, --config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify path to config file.<br><br><b>-w, --wordlist</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to wordlist for DNS brute-force enumeration.<br><br><b>-r, --resolvers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a file containing custom DNS resolvers.<br><br><b>-t, --threads</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of threads to use for concurrent operations (default: 5).<br><br><b>-o, --output</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output file name for results.<br><br><b>-j, --json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output results in JSON format.<br><br><b>-x, --external</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use external/online services for enumeration (deprecated, use specific flags).<br><br><b>--dnsbrute</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform DNS brute-force (default is on when a wordlist is provided).<br><br><b>--virustotal</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilize VirusTotal for subdomain discovery.<br><br><b>--sublist3r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilize Sublist3r's techniques for subdomain discovery.<br><br><b>--crtsh</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query crt.sh for subdomain information from SSL certificates.<br><br><b>--hackertarget</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use HackerTarget's subdomain lookup service.<br><br><b>--netcraft</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query Netcraft for subdomain and hostname information.<br><br><b>--riskiq</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilize RiskIQ PassiveTotal for subdomain discovery.<br><br><b>--exalead</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use Exalead search engine for subdomain enumeration.<br><br><b>--threatcrowd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query ThreatCrowd for subdomain information.<br><br><b>--findsubdomains</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilize FindSubdomains.com for discovery.<br><br><b>--dogpile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use Dogpile search engine for subdomain enumeration.<br><br><b>--ipv4info</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query IPv4Info for related subdomain information.<br><br><b>--bufferover</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilize BufferOver.run for subdomain discovery.<br><br><b>--securitytrails</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use SecurityTrails for comprehensive subdomain data (may require API key).<br><br><b>--full</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable all available external sources for comprehensive subdomain enumeration.<br><br>


title: DESCRIPTION
content:
knockpy is a Python tool designed for fast and efficient subdomain enumeration. It leverages a multi-faceted approach, combining classic DNS brute-forcing with querying various online services and search engines like VirusTotal, crt.sh, Sublist3r, HackerTarget, and others. This comprehensive strategy helps uncover a broader range of subdomains for a given target domain. It's widely used by penetration testers, bug bounty hunters, and security researchers to expand the attack surface discovery during reconnaissance phases. The tool supports multithreading for speed and can output results in human-readable or JSON formats, making it suitable for integration into automated workflows. Its modular design allows users to specify which data sources to utilize, providing flexibility based on their needs and available API keys.


title: CAVEATS
content:
knockpy requires Python 3.x and specific Python libraries, which can be installed via <b><code>pip</code></b>. Some external data sources may require API keys (e.g., SecurityTrails) or might rate-limit requests, leading to incomplete results or longer execution times. The accuracy of results depends on the quality of the wordlist used for DNS brute-forcing and the up-to-dateness of external data sources. Ensure proper network connectivity and permissions for execution.


title: INSTALLATION
content:
To install knockpy, ensure you have Python 3 and pip installed. Then, run: <b><code>pip3 install knockpy</code></b><br>Alternatively, clone the repository and install dependencies:<br><b><code>git clone https://github.com/guelfoweb/knock.git</code></b><br><b><code>cd knock</code></b><br><b><code>pip3 install -r requirements.txt</code></b>


title: USAGE EXAMPLES
content:
- Basic scan with full external sources: <b><code>python knockpy.py example.com --full</code></b><br>- Scan with custom wordlist and output to JSON: <b><code>python knockpy.py target.com -w my_wordlist.txt -j -o results.json</code></b><br>- Specify a custom resolver: <b><code>python knockpy.py domain.com -r resolvers.txt</code></b>


title: HISTORY
content:
knockpy was developed as a Python-based alternative to earlier subdomain enumeration methods, focusing on speed and integrating multiple data sources. Its development aimed to provide a more comprehensive and efficient reconnaissance tool for security professionals, evolving to include a wide array of online services for broader coverage than traditional brute-force methods alone. It became a popular choice in the penetration testing and bug bounty communities due to its effectiveness and ease of use in discovery phases.


title: PARAMETERS
content:
<b><b>load</b> <i>&lt;user/repo&gt;</i> [<i>&lt;type&gt;</i> [<i>&lt;plugin_name&gt;</i>]]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a plugin or theme from a GitHub repository (e.g., <i>zsh-users/zsh-autosuggestions</i>). <i>&lt;type&gt;</i> can specify how to load (e.g., <i>main</i>, <i>plugin</i>, <i>theme</i>, <i>oh-my-zsh</i>). <i>&lt;plugin_name&gt;</i> is for specific <i>oh-my-zsh</i> plugins.<br><br><b><b>load-plugin</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a plugin from a specified local file path.<br><br><b><b>theme</b> <i>&lt;user/repo&gt;</i> [<i>&lt;name&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a theme from a GitHub repository, optionally specifying a theme file name within the repo.<br><br><b><b>oh-my-zsh</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes core <i>Oh My Zsh</i> functionalities, allowing its plugins and themes to be loaded.<br><br><b><b>oh-my-zsh-plugins</b> <i>&lt;plugin&gt;</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads one or more specific <i>Oh My Zsh</i> plugins by name (e.g., <i>git</i>, <i>history</i>).<br><br><b><b>save</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates or updates the <i>init.zsh</i> file in the <i><b>zgen</b></i> directory, which contains the pre-compiled code for all configured plugins and themes. This command must be run after any changes to your plugin list in <i>.zshrc</i>.<br><br><b><b>update</b> [<i>&lt;user/repo&gt;</i>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates specified plugins or all configured plugins if no arguments are given. This fetches the latest versions from their respective Git repositories.<br><br><b><b>reset</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears all compiled <i><b>zgen</b></i> files and repositories, then rebuilds everything from scratch. Useful for resolving inconsistencies or errors.<br><br><b><b>clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes any plugin repositories that are no longer referenced in your <i><b>zgen</b></i> configuration within <i>.zshrc</i>.<br><br><b><b>check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks for available updates for your configured plugins without performing the update operation.<br><br><b><b>help</b> [<i>&lt;command&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help for <i><b>zgen</b></i> or specific usage information for a given subcommand.<br><br>


title: DESCRIPTION
content:
<i><b>zgen</b></i> is a lightweight and highly performant Zsh plugin manager designed to significantly reduce shell startup times. It achieves this by pre-compiling plugins and themes into optimized <i>.zsh</i> files, which are then sourced directly on shell initialization, bypassing the overhead of dynamic sourcing from multiple Git repositories.<br><br>It supports loading plugins and themes from GitHub, local paths, and provides seamless integration with <i>Oh My Zsh</i>. <i><b>zgen</b></i> offers commands for managing your Zsh environment, including updating plugins, regenerating the compiled setup, and cleaning up unused repositories. Its focus on speed and simplicity makes it a popular choice for users seeking a highly responsive Zsh shell.


title: CAVEATS
content:
<i><b>zgen</b></i> relies on <i>Zsh</i> and <i>Git</i> being installed and accessible. While highly optimized, very dynamic Zsh plugins that rely on real-time sourcing of specific files (rather than simple function definitions) might not behave as expected with <i><b>zgen</b></i>'s pre-compilation. Always ensure to run <i><b>zgen save</b></i> after modifying your plugin list in <i>.zshrc</i> to apply changes.


title: TYPICAL CONFIGURATION
content:
To integrate <i><b>zgen</b></i> into your Zsh environment, you'll typically add a block of code to your <i>~/.zshrc</i> file. This involves sourcing the <i><b>zgen</b></i> script, defining your desired plugins and themes using <i><b>zgen</b></i> commands, and then calling <i><b>zgen save</b></i> inside a conditional block:<br><br><i># ~/.zshrc excerpt</i><br><i>source "${HOME}/.zgen/zgen.zsh"</i><br><br><i>if ! zgen saved; then</i><br><i>  # Oh My Zsh core</i><br><i>  zgen oh-my-zsh</i><br><br><i>  # Plugins</i><br><i>  zgen load zsh-users/zsh-syntax-highlighting</i><br><i>  zgen load zsh-users/zsh-autosuggestions</i><br><i>  zgen oh-my-zsh-plugins git history</i><br><br><i>  # Theme</i><br><i>  zgen theme romkatv/powerlevel10k</i><br><br><i>  zgen save</i><br><i>fi</i>


title: PERFORMANCE OPTIMIZATION
content:
<i><b>zgen</b></i>'s primary advantage is its unique approach to plugin management. Instead of sourcing individual plugin files on every shell startup, it consolidates and compiles all defined plugins and themes into a single, optimized <i>init.zsh</i> file. This file is then sourced once, dramatically reducing the I/O operations and processing overhead during Zsh initialization, leading to a much faster interactive shell experience.


title: HISTORY
content:
<i><b>zgen</b></i> was created by Tarjo (tarjoilija) as a lightweight and significantly faster alternative to existing Zsh plugin managers. Its development focused on addressing the common issue of slow shell startup times, introducing concepts like asynchronous loading and pre-compilation into a single file to optimize Zsh initialization. It quickly gained popularity among users seeking a highly performant Zsh setup.


title: SEE ALSO
content:
zsh(1), git(1), oh-my-zsh (Zsh framework), antigen (Zsh plugin manager), zplug (Zsh plugin manager), antibody (Zsh plugin manager)


title: PARAMETERS
content:
<b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action <b>zplug</b> should perform. Common commands include <code>install</code>, <code>update</code>, <code>load</code>, <code>clean</code>, and <code>status</code>.<br><br><b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs new plugins and their dependencies defined in your <code>.zshrc</code> file.<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates all installed plugins to their latest versions.<br><br><b>load</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes and loads the plugins defined in your configuration. This command is typically run automatically within <code>.zshrc</code>.<br><br><b>clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes plugins that are no longer referenced in your configuration file.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current status of installed and loaded plugins.<br><br><b>check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks for outdated plugins that need updating.<br><br><b>clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears the plugin cache, forcing a fresh load or install on next run.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the necessary internal configuration for <b>zplug</b> to function correctly, often run as part of the installation.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help information for the specified command or general usage of <b>zplug</b>.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details during <b>zplug</b> operations.<br><br><b>--log</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs output to a file instead of displaying it on stdout.<br><br>


title: DESCRIPTION
content:
<b>zplug</b> is a feature-rich, modern plugin manager designed specifically for Zsh. It aims to provide a fast, flexible, and powerful way to manage your Zsh configuration by handling plugins, themes, fonts, and even binaries from various sources like GitHub, Bitbucket, Gist, local paths, or arbitrary URLs. Unlike older managers, <b>zplug</b> focuses on asynchronous loading, which significantly speeds up shell startup times. It offers advanced features such as on-demand loading, dependency resolution, automatic compilation, caching, and a fuzzy-finder for easy plugin discovery. Users define their plugins in the <code>.zshrc</code> file using a clear, declarative syntax, allowing for fine-grained control over how and when each component is loaded, making it a robust choice for both simple and complex Zsh setups.


title: CAVEATS
content:
<b>zplug</b> requires Zsh to be installed and configured as your shell. Its extensive options for plugin definition can have a learning curve, and incorrect configurations might lead to slower shell startup or unexpected behavior. Migrating from other plugin managers requires careful cleanup to avoid conflicts.


title: PLUGIN DEFINITION SYNTAX
content:
Plugins are defined in the <code>.zshrc</code> using the <code>zplug</code> command followed by the plugin path and various options. For example: <br><code>zplug 'plugins/git', from:oh-my-zsh, defer:2</code><br><code>zplug 'b4b4r07/enhancd', nice:10, as:command, use:bin/enhancd</code><br>These options allow specifying the source (GitHub, OMZ, etc.), how the plugin should be loaded (asynchronously, on-demand), its type (plugin, theme, command, font), dependencies, and post-load hooks. This declarative syntax is key to <b>zplug</b>'s flexibility.


title: ASYNCHRONOUS LOADING
content:
One of <b>zplug</b>'s core features is its ability to load plugins asynchronously. This means that instead of waiting for each plugin to fully initialize before the shell becomes interactive, <b>zplug</b> can defer their loading to the background, significantly improving the perceived shell startup speed. This is primarily controlled via options like <code>defer</code> and <code>nice</code> in plugin definitions, allowing users to fine-tune the loading behavior of individual plugins.


title: HISTORY
content:
Developed by @b4b4r07 and first released around 2015, <b>zplug</b> emerged as a next-generation Zsh plugin manager with a strong focus on performance and flexibility. Its asynchronous loading capabilities were a significant advancement over existing solutions, addressing common complaints about slow Zsh startup times due to numerous plugins. Over the years, it has gained popularity among Zsh users seeking more control and speed in their shell environments.


title: PARAMETERS
content:
<b><b>-b</b> <i>color_index</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the background color to use for transparent pixels. <i>color_index</i> is an integer between 0 and 255, representing an index in the GIF's color map. The default is 0.<br><br><b><b>-t</b> <i>color_index</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the given <i>color_index</i> to be treated as transparent, even if the GIF file specifies a different transparency index (or none).<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Superimposed) This option is mainly for interlaced GIFs. It uses a "superimposed" algorithm to fill in the missing scanlines for an interlaced GIF, which might result in a slightly different appearance.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(No background) Prevents <b>giftoppm</b> from filling transparent areas with the background color. Transparent pixels will be output as black (RGB 0,0,0).<br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Gamma) Enables gamma correction for older GIF files, potentially adjusting the brightness or contrast of the output.<br><br><b><b>-O</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Old format) Handles very old GIF files that do not explicitly specify a global color map, assuming a default 256-color map.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a PAM (Portable Arbitrary Map) file instead of PPM. A PAM file can include an alpha channel, thereby preserving the transparency information from the GIF.<br><br><b><b>-m</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maps the GIF's 256-color palette to a more general set of 256 Netpbm colors, potentially optimizing the output color space.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If the input GIF is an multi-image (animated) GIF, this option ensures that only the first image in the sequence is processed and converted.<br><br>


title: DESCRIPTION
content:
The <b>giftoppm</b> command is a utility from the Netpbm project, designed to convert images from the GIF (Graphics Interchange Format) file format to the PPM (Portable PixMap) format. PPM is a simple, uncompressed image format that stores full-color pixel data, making it a suitable intermediate format for further image manipulation within the Netpbm suite or other image processing tools.<br><br><b>giftoppm</b> reads a GIF image from a specified file or standard input and writes the corresponding PPM image to standard output. While GIF is an indexed color format supporting up to 256 colors and optional transparency, PPM is a true-color format. <b>giftoppm</b> handles this conversion, including mapping GIF's color palette to PPM's direct color representation and managing transparency based on command-line options. It is widely used in scripting environments for batch image processing or as part of a larger image conversion pipeline.


title: CAVEATS
content:
<ul><li><b>GIF Patent History</b>: Historically, GIF was encumbered by LZW compression patents. While these patents have expired, some older software might still have patent-related restrictions. <b>giftoppm</b> and Netpbm generally handle this transparently.</li><li><b>Transparency Handling</b>: Converting GIF's indexed transparency to a true-color format like PPM can sometimes be tricky. The <b>-b</b> (background color) and <b>-n</b> (no background) options provide control over how transparent areas are rendered. Using <b>-a</b> to output PAM is the most robust way to preserve full alpha information.</li><li><b>Multi-Image GIFs</b>: <b>giftoppm</b> by default, or with the <b>-S</b> option, only processes the first frame of a multi-image (animated) GIF. To process all frames, other Netpbm tools or scripting might be required (e.g., using <b>gifsicle</b>).</li><li><b>Color Depth</b>: GIF images are limited to 256 colors. While <b>giftoppm</b> converts them to a true-color PPM format, the original image quality (in terms of color richness) is limited by the GIF source.</li></ul>


title: STANDARD I/O USAGE
content:
Like many Netpbm tools, <b>giftoppm</b> is designed to work efficiently with standard input and output. This allows it to be easily chained with other commands in a Unix pipeline (e.g., <code>cat input.gif | giftoppm | ppmtopng > output.png</code>).


title: ERROR HANDLING
content:
<b>giftoppm</b> provides informative error messages if the input file is not a valid GIF or if options are used incorrectly.


title: HISTORY
content:
<b>giftoppm</b> is an integral part of the <b>Netpbm</b> suite of graphics manipulation tools. The Netpbm project originated from <b>Pbmplus</b> utilities developed by Jef Poskanzer in the late 1980s. Its primary aim was to provide a robust, open-source set of tools for converting and manipulating various image formats using a simple, common intermediate format (PBM, PGM, PPM). <b>giftoppm</b> was specifically created to handle the then-proprietary GIF format, enabling users to convert GIFs into the open PPM format for further processing, at a time when GIF was a very popular but also somewhat controversial format due to its LZW compression patent. Its development reflects the open-source community's commitment to interoperability and freedom from proprietary restrictions.


title: SEE ALSO
content:
<b>giftopnm</b>(1), <b>ppmtogif</b>(1), <b>pnm</b>(5), <b>ppm</b>(5), <b>gif</b>(5), <b>netpbm</b>(1)


title: SYNOPSIS
content:
<b>unarc</b> [<I>options</I>] <I>archive_file</I> [<I>files...</I>]<br><b>unarc</b> <I>archive_file</I>


title: PARAMETERS
content:
<b>-x</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts files from the archive. This option is often implicit for the <b>unarc</b> command.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying the names of files as they are extracted.<br><br><b>-o</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces overwriting of existing files without prompting for confirmation.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pipes the content of an extracted file (usually a single file) to standard output (stdout).<br><br><b>-d <I>directory</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the destination directory where the extracted files should be placed. If not specified, files are extracted to the current working directory.<br><br><b><I>archive_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the ARC archive file to be uncompressed and extracted.<br><br><b><I>files...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. A space-separated list of specific files to extract from the archive. If omitted, all files within the archive are extracted.<br><br>


title: DESCRIPTION
content:
The <b>unarc</b> command is a utility designed to extract files from archives created using the ARC file format. ARC, short for ARChive, was a widely used file compression and archiving format, particularly popular on MS-DOS systems during the 1980s and early 1990s, especially within bulletin board system (BBS) communities. While largely superseded by more modern formats like ZIP, RAR, and TAR, <b>unarc</b> remains valuable for accessing historical or legacy data stored in ARC format. It serves as a compatibility tool on modern Linux systems, allowing users to decompress and retrieve content from these older archives. The utility typically decompresses the archived files and extracts them to the specified or current directory. Implementations of <b>unarc</b> on Linux are often ports of the original DOS utility or are part of broader `arc` archiving packages.


title: CAVEATS
content:
The ARC format is largely obsolete, meaning <b>unarc</b> is rarely found pre-installed on modern Linux distributions and might require specific package installation or compilation. It lacks advanced features like strong encryption, large file support, or solid archiving, which are common in contemporary archivers. Compatibility issues may arise with very old or non-standard ARC archives, and its command-line interface is generally simpler and less feature-rich compared to modern tools like <b>unzip</b> or <b>tar</b>.


title: INSTALLATION
content:
As <b>unarc</b> is part of a legacy archiving system, it's not always included by default in most Linux distributions. Users typically need to install the `arc` package (e.g., `sudo apt install arc` on Debian/Ubuntu, or `sudo yum install arc` on Fedora/RHEL if available in EPEL) which often includes `unarc` as a symlink or an executable.


title: USAGE EXAMPLE
content:
To extract all files from an ARC archive named <I>my_archive.arc</I> to the current directory:<br><code>unarc my_archive.arc</code><br><br>To extract a specific file named <I>document.txt</I> from the archive:<br><code>unarc my_archive.arc document.txt</code>


title: HISTORY
content:
The ARC file format was developed by Thom Henderson of System Enhancement Associates (SEA) in the early 1980s, becoming one of the first popular archive formats for personal computers. It gained significant traction through bulletin board systems (BBSs) for distributing software and files. The format's widespread use led to its being a de facto standard until the emergence of competing formats like PKZIP, which offered better compression ratios and faster performance. The <b>unarc</b> command on Linux systems is typically a port or a compatible re-implementation of the original DOS-era ARC extraction utility, allowing continued access to these historical archives.


title: SYNOPSIS
content:
<I>No standard synopsis available as the command is not recognized in common Linux environments.</I>


title: DESCRIPTION
content:
The <I>nomarch</I> command does not appear to be a standard or widely recognized Linux utility. A thorough search of common Linux distributions, official man pages, and widely used command-line tools reveals no documented command by this name. It is highly probable that <I>nomarch</I> is either a typographical error, a highly specialized and uncommonly documented tool, a custom script unique to a specific environment, or a misremembered command.<br><br>Due to its apparent non-existence within the standard Linux ecosystem, specific details regarding its functionality, typical use cases, or operational specifics cannot be provided. Users encountering this command in a specific context should verify its origin and purpose within that particular system or environment, as it is not part of general Linux usage.


title: CAVEATS
content:
This command is not documented in mainstream Linux distributions, official repositories, or common utility sets. Attempting to execute <I>nomarch</I> on a typical Linux system will most likely result in a 'command not found' error. Users should exercise caution and investigate the source if they encounter such a command, as it might be part of a custom setup, a non-standard application, or a deprecated tool from a very niche distribution.


title: VERIFICATION OF EXISTENCE
content:
Before attempting to use <I>nomarch</I>, it is strongly recommended to verify its presence on your system using commands like <B>which nomarch</B> or by checking relevant documentation within your specific Linux environment. It is highly unlikely to be present by default on a standard installation.


title: PARAMETERS
content:
<b><b>-font</b> <I>fontfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the TrueType font file (.ttf) to use for rendering the text.<br><br><b><b>-fontsize</b> <I>size</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the font size in pixels for the text.<br><br><b><b>-width</b> <I>width</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the desired width of the output image in pixels.<br><br><b><b>-height</b> <I>height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the desired height of the output image in pixels.<br><br><b><b>-leftmargin</b> <I>margin</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the left margin in pixels for the text within the image.<br><br><b><b>-rightmargin</b> <I>margin</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the right margin in pixels for the text within the image.<br><br><b><b>-topmargin</b> <I>margin</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the top margin in pixels for the text within the image.<br><br><b><b>-bottommargin</b> <I>margin</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the bottom margin in pixels for the text within the image.<br><br><b><b>-lineheight</b> <I>height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom line height in pixels, overriding default font metrics.<br><br><b><b>-pad</b> <I>lines</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds <I>lines</I> number of blank lines at the top of the text.<br><br><b><b>-text</b> <I>textfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads text input from the specified <I>textfile</I> instead of standard input.<br><br><b><b>-foreground</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color of the text. Can be a color name (e.g., 'red') or a hex RGB value (e.g., '#FF0000').<br><br><b><b>-background</b> <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the image. Accepts color names or hex RGB values.<br><br><b><b>-halign</b> <I>left|center|right</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies horizontal alignment of the text within the image.<br><br><b><b>-valign</b> <I>top|center|bottom</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies vertical alignment of the text within the image.<br><br><b><b>-characters</b> <I>characters</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the rendering to a specific set of characters provided as a string.<br><br><b><b>-encoding</b> <I>encoding</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the character encoding of the input text (e.g., 'UTF-8', 'ISO-8859-1').<br><br><b><b>-header</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes a header line at the top of the output image, typically showing the command used.<br><br><b><b>-plain</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the inclusion of any header line in the output image.<br><br><b><b>-alpha</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an alpha mask (PGM) alongside the main PPM image, useful for transparency when combined with other tools.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, printing progress and debugging messages to stderr.<br><br>


title: DESCRIPTION
content:
The <b>texttoppm</b> command is part of the Netpbm suite of graphics utilities. It converts plain ASCII text into a Portable Pixmap (PPM) image. This tool is invaluable for embedding textual information directly into image files, creating graphical banners from text, or simply visualizing text content in an image format. Users can control various aspects of the rendered text, including the font family (TrueType fonts), font size, foreground and background colors, margins, line height, and text alignment. It reads text from standard input or a specified file and outputs the resulting PPM image to standard output, making it highly compatible with other Netpbm tools for further image manipulation or conversion to formats like JPEG or PNG.


title: CAVEATS
content:
Requires TrueType fonts (.ttf) for font rendering. Output is strictly in PPM format, meaning it will require further Netpbm utilities like <b>pnmtojpeg</b> or <b>pnmtopng</b> for conversion to more common image formats like JPEG or PNG. This command does not natively support complex text layouts such as bidirectional text, advanced ligatures, or highly specific typographic features.


title: INPUT AND OUTPUT
content:
By default, <I>texttoppm</I> reads text from standard input (stdin). This means you can pipe text directly from other commands or redirect it from a file. To specify an input file directly, use the <I><b>-text</b></I> option. The resulting image is written to standard output (stdout) as a PPM (Portable Pixmap) file. This output can be redirected to a file (e.g., <I>> output.ppm</I>) or, more commonly, piped to another Netpbm utility for further processing or conversion to other image formats.


title: COMMON USAGE PATTERN
content:
A typical usage involves piping text into the command and then piping its PPM output to another Netpbm tool for conversion to a more widely viewable format. For example:<br><I>echo "Hello World" | texttoppm -font /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf -fontsize 24 -foreground '#FF0000' -background '#0000FF' | pnmtopng > hello.png</I><br>This command chain creates a PNG image named 'hello.png' containing the text 'Hello World' rendered in red color on a blue background, using a specified TrueType font.


title: HISTORY
content:
<b>texttoppm</b> is an integral part of the Netpbm project, a long-standing and widely used open-source toolkit for graphic file manipulation. Netpbm's development began in the late 1980s and has evolved to include hundreds of tools for converting, modifying, and creating various image formats, with PPM being one of its core formats. <b>texttoppm</b> specifically was developed to bridge the gap between simple text and image data, maintaining the project's philosophy of simple, composable tools.


title: SYNOPSIS
content:
<pre>
# Typically used after sourcing chruby.sh in your shell profile:<br>
<B>chruby</B> [<I>RUBY_VERSION</I>]<br>
<B>chruby</B> auto<br>
<B>chruby</B> none<br>
<B>chruby</B> --list | -l<br>
<B>chruby</B> --version | -v<br>
<B>chruby</B> --help | -h
</pre>


title: PARAMETERS
content:
<b><I>RUBY_VERSION</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switch to the specified Ruby version (e.g., <B>chruby ruby-3.2.2</B>). When no arguments are given, lists available Ruby versions.<br><br><b>auto</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically switch to the Ruby version specified in a <B>.ruby-version</B> file found in the current directory or its parent directories.<br><br><b>none</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unset the current Ruby version, effectively removing it from your <B>PATH</B> and restoring your system's default environment.<br><br><b>--list, -l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a list of all detected Ruby versions that <B>chruby</B> can manage.<br><br><b>--version, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version of <B>chruby</B> itself.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the command's help message, detailing usage and options.<br><br>


title: DESCRIPTION
content:
<b>chruby</b> is a remarkably light and fast Ruby version manager. Unlike more comprehensive alternatives such as RVM or rbenv, <b>chruby</b> operates on a philosophy of simplicity and non-invasiveness. It doesn't use shims, modify existing shell commands, or constantly hook into your shell's functions. Instead, <b>chruby</b> works by intelligently adjusting your <b>PATH</b> and other environment variables when you explicitly invoke it or when its initialization script is sourced by your shell (e.g., in .bashrc or .zshrc). This design minimizes overhead, making it exceptionally quick to switch between different Ruby installations. It seamlessly integrates with Rubies installed via <i>ruby-build</i>, <i>rbenv install</i>, or even custom-compiled versions, provided they adhere to expected directory structures. Its straightforward approach makes it an ideal choice for developers prioritizing speed and a clear, understandable environment.


title: CAVEATS
content:
<b>chruby</b> operates as a shell function and must be <B>sourced</B> into your shell environment (e.g., .bashrc, .zshrc) to function correctly. It does not persist Ruby versions across shell sessions without this setup. <b>chruby</b> does not provide native <B>gemset management</B>; users typically rely on companion tools like <B>chruby-gemset</B> or Bundler for this functionality. By design, it avoids shims, which means some commands might require <B>re-hashing</B> in your shell after a switch or may not be found if their location is not properly added to PATH by the Ruby installation.


title: INSTALLATION & SETUP
content:
<b>chruby</b> is typically installed by cloning its Git repository or via package managers like Homebrew on macOS. To make it functional, its main script (<B>chruby.sh</B>) must be sourced in your shell's configuration file (e.g., <B>echo "source /usr/local/share/chruby/chruby.sh" &gt;&gt; ~/.bashrc</B>). This makes the <B>chruby</B> function available in your shell.


title: RUBY DISCOVERY MECHANISM
content:
<b>chruby</b> automatically detects installed Ruby versions by scanning predefined directories such as <B>/opt/rubies/</B>, <B>~/.rubies/</B>, and <B>/usr/local/rubies/</B>. Each subdirectory within these paths is expected to contain a complete Ruby installation (e.g., <B>ruby-3.2.2</B>). This convention-over-configuration approach simplifies its setup and usage significantly.


title: HISTORY
content:
<b>chruby</b> was created by <B>Aaron Patterson (Postmodern)</B> with the primary goal of providing a simpler, faster, and less intrusive alternative to existing Ruby version managers like RVM and rbenv. Its development focused on a minimalistic design, avoiding shell "shims" and complex hooks, which often added overhead to shell operations. By relying purely on modifying environment variables upon explicit invocation, <b>chruby</b> offers significantly faster Ruby switching and a cleaner shell environment, quickly gaining traction within the Ruby community for its performance and ease of use.


title: SYNOPSIS
content:
<b>isort</b> <i>[OPTIONS] [FILES_OR_DIRECTORIES...]</i><br><b>isort</b> <i>[OPTIONS] -</i> (for stdin)


title: PARAMETERS
content:
<b><b>--check-only</b>, <b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Check if files are correctly sorted without modifying them. Exits with non-zero if issues are found.</i><br><br><b><b>--diff</b>, <b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a diff of the changes that would be made to files, without applying them.</i><br><br><b><b>--profile</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Apply a pre-defined configuration profile, e.g., 'black', 'django', 'google'.</i><br><br><b><b>--atomic</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Ensures that modifications are written to a temporary file before being moved, providing safer in-place updates.</i><br><br><b><b>--line-length</b> <i>&lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the maximum line length for wrapped imports. Defaults to 79.</i><br><br><b><b>--skip</b> <i>&lt;file_or_dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Skips specified files or directories from being sorted. Can be used multiple times.</i><br><br><b><b>--skip-glob</b> <i>&lt;glob_pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Skips files matching a given glob pattern. Can be used multiple times.</i><br><br><b><b>--known-first-party</b> <i>&lt;modules&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Comma-separated list of modules to consider as first-party.</i><br><br><b><b>--settings-path</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a custom path to a configuration file (e.g., `pyproject.toml`).</i><br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases output verbosity.</i><br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the `isort` version number and exits.</i><br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a comprehensive help message and exits.</i><br><br>


title: DESCRIPTION
content:
`isort` is a highly popular Python utility designed to automatically sort and organize import statements within Python codebases. It ensures that all imports are consistently ordered alphabetically, and intelligently grouped into distinct sections such as standard library, third-party libraries, first-party modules, and local imports. This automation helps maintain a clean, readable, and consistent code style across projects, significantly reducing the likelihood of merge conflicts related to import order. It is an invaluable tool for enforcing code standards, improving developer productivity, and simplifying code reviews. `isort` can be run directly from the command line, integrated into pre-commit hooks, or utilized within various build and continuous integration systems. Its extensive configuration options allow users to tailor its behavior to specific project needs, making it adaptable to diverse coding styles while promoting uniformity.


title: CAVEATS
content:
<i>While `isort` is highly beneficial, users should be aware of potential issues:</i><br><i>- It modifies files in place, so using it with version control is crucial.</i><br><i>- Can sometimes conflict with other code formatters (like Black) if their configurations regarding line length or wrapping aren't synchronized. `isort`'s `--profile black` often resolves this.</i><br><i>- Overly complex configuration can lead to unexpected sorting behaviors; simpler configurations are generally more robust.</i>


title: <B>CONFIGURATION FILES</B>
content:
<i>`isort` can be configured using various files in the project root, including `pyproject.toml` (recommended), `.isort.cfg`, `setup.cfg`, and `isort.ini`. These files allow for persistent and version-controlled configuration of sorting rules, sections, skips, and more.</i>


title: <B>INTEGRATION WITH CI/CD</B>
content:
<i>Many development workflows integrate `isort` into Continuous Integration (CI) and Continuous Delivery (CD) pipelines. By running `isort --check-only` as part of automated tests, teams can ensure that all committed code adheres to the defined import sorting standards, preventing improperly formatted code from reaching production.</i>


title: HISTORY
content:
`isort` was created by Timothy Crosley in 2013, driven by the need for a consistent and automated way to sort Python imports. Its initial development aimed to solve the common problem of inconsistent import ordering across different developers and projects, which often led to unnecessary merge conflicts and reduced readability. Over the years, `isort` has grown significantly, incorporating numerous features and improvements through active community contributions. It has become a standard tool in the Python ecosystem, widely adopted by individual developers, open-source projects, and large organizations to maintain high code quality and consistency. Its evolution reflects a strong commitment to being configurable yet opinionated, striking a balance between automation and user control.


title: SEE ALSO
content:
<b>black(1)</b>: <i>The uncompromising Python code formatter.</i>, <b>flake8(1)</b>: <i>A popular linter for Python code, often used alongside `isort`.</i>, <b>pylint(1)</b>: <i>Another widely used static code analyzer for Python.</i>, <b>git(1)</b>: <i>A distributed version control system, essential for tracking changes made by `isort`.</i>, <b>pre-commit(1)</b>: <i>A framework for managing and maintaining multi-language pre-commit hooks, where `isort` is often integrated.</i>


title: SYNOPSIS
content:
<b>fasd</b> [<i>OPTIONS</i>] [<i>FILES...</i>]<br><b>z</b> [<i>DIR_PATTERNS...</i>]<br><b>a</b> [<i>FILE_PATTERNS...</i>]<br><b>s</b> [<i>FILE_PATTERNS...</i>]<br><b>d</b> [<i>DIR_PATTERNS...</i>]<br><b>f</b> [<i>FILE_PATTERNS...</i>]


title: PARAMETERS
content:
<b>-s, --stat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists entries along with their calculated frecent scores.<br><br><b>-e, --exec PROGRAM</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified PROGRAM for each matched file.<br><br><b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all tracked files and directories in the database.<br><br><b>-d, --directories</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts fuzzy search and listing to directories only.<br><br><b>-f, --files</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts fuzzy search and listing to files only.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists entries non-interactively, typically sorted by score.<br><br><b>-r, --remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specified entries from the fasd database.<br><br><b>-i, --interactive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Presents results in an interactive menu for selection.<br><br><b>-I, --init=SHELL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the shell-specific initialization script for setup.<br><br>


title: DESCRIPTION
content:
<i>fasd</i> is a command-line productivity tool that integrates with your shell to provide quick access to frequently and recently used files and directories. It automatically learns your usage patterns by tracking every directory change (via <i>cd</i>) and file access (via commands like <i>ls</i>, <i>vim</i>, <i>less</i>, etc.). This data is then used to assign a "frecent" score (a combination of frequency and recency).<br><br>The core functionality revolves around fuzzy matching. Users can type a partial name or a pattern, and <i>fasd</i> will locate the most relevant file or directory based on its frecent score. This significantly reduces the need for long <i>cd</i> commands or extensive path typing, making navigation and file access much faster and more intuitive.


title: CAVEATS
content:
Requires shell integration (e.g., sourcing an init script in .bashrc or .zshrc) to function correctly. The database can grow large over time, though it's typically managed automatically. Fuzzy matching can sometimes lead to unexpected results if patterns are too broad.


title: SHELL INTEGRATION
content:
<i>fasd</i>'s primary power comes from its seamless integration with popular shells like Bash, Zsh, and Fish. This is achieved by sourcing a shell-specific initialization script (e.g., using <b>fasd --init bash &gt;&gt; ~/.bashrc</b>). This script sets up command aliases (like <b>z</b>, <b>a</b>, <b>s</b>, <b>d</b>, <b>f</b>) and a shell function that hooks into commands like <i>cd</i> to automatically update the frecent database, ensuring accurate tracking of your activity.


title: FRECENT SCORING ALGORITHM
content:
<i>fasd</i> uses a "frecent" (frequency + recency) scoring algorithm to rank files and directories. The score of an entry increases each time it's accessed and decays over time. This ensures that recently and frequently used items receive higher priority, making them more likely to be selected during fuzzy searches. Users can configure the decay rates and other scoring parameters to fine-tune its behavior.


title: HISTORY
content:
<i>fasd</i> was created by clvv (Chuan-Zhi Li) and first released around 2011. It was designed as a more comprehensive and flexible alternative to existing directory-jumping tools like the original 'z' script. The name 'fasd' is an acronym for "<b>F</b>iles <b>A</b>nd <b>S</b>irectories" or perhaps a mnemonic for its common aliases (f, a, s, d, z). Its development has focused on robust shell integration, configurable scoring algorithms, and a wide range of options for searching and interacting with tracked paths.


title: SYNOPSIS
content:
<i>icat</i> [<b>-b</b> <i>blk_size</i>] [<b>-f</b> <i>fstype</i>] [<b>-s</b> <i>sector_size</i>] [<b>-h</b>] [<b>-v</b>] <i>image</i> [<i>images</i>]... <i>inode_num</i>


title: PARAMETERS
content:
<b><b>-b</b> <i>blk_size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the block size of the file system in bytes. This option is rarely needed as <i>icat</i> can usually autodetect the correct block size from the file system metadata.<br><br><b><b>-f</b> <i>fstype</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the file system type. The default is <i>auto</i>, which attempts to autodetect the type. Alternatively, you can explicitly specify types like <i>ext2</i>, <i>ext3</i>, <i>ntfs</i>, <i>fat</i>, etc., especially if autodetection fails.<br><br><b><b>-s</b> <i>sector_size</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the sector size of the disk image in bytes. Similar to block size, this is often automatically detected and rarely needs to be set manually.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message with command usage and exits.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the processing, errors, and the progress of the file extraction.<br><br><b><i>image</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the disk image file (e.g., .dd, .raw, .E01) or raw block device from which to extract the file. Multiple image files can be specified if the forensic image is split into segments.<br><br><b><i>inode_num</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The inode number of the file whose content is to be extracted. This is a mandatory argument and must be obtained through prior analysis using other TSK tools like <i>fls</i> or <i>ils</i>.<br><br>


title: DESCRIPTION
content:
<i>icat</i> (Inode CAT) is a command-line utility that is a core component of <b>The Sleuth Kit (TSK)</b>, a leading collection of open-source digital forensics tools. Unlike the standard <i>cat</i> command, which displays file contents from an active filesystem, <i>icat</i> is designed specifically to extract the raw data stream of a file directly from a disk image, given its specific inode number.<br><br>This capability is indispensable in digital forensic investigations. It allows analysts to recover specific files from damaged, unmounted, or forensically acquired disk images without altering the original evidence. <i>icat</i> supports a wide range of file system types, including ext2, ext3, ext4, NTFS, and FAT. It enables examination of file contents even if metadata like file names or directory structures are corrupted, as long as the inode structure points to valid data blocks. To use <i>icat</i> effectively, a prior analysis (e.g., using <i>fls</i> or <i>ils</i> from TSK) is typically required to determine the target file's inode number.


title: CAVEATS
content:
<i>icat</i> is a specialized utility included with <b>The Sleuth Kit (TSK)</b> and is not installed by default on most Linux distributions. It must be installed separately (e.g., using your distribution's package manager like <i>apt install sleuthkit</i> or <i>yum install sleuthkit</i>).<br><br>It operates exclusively on disk images or raw block devices, not on live, mounted file systems. The inode number, which is crucial for its operation, must typically be obtained beforehand using other TSK tools such as <i>fls</i> (to list file names and their corresponding inode numbers) or <i>ils</i> (to inspect detailed inode information).


title: OUTPUT REDIRECTION
content:
The extracted file content is sent to standard output (stdout). To save the content to a file, it is essential to redirect the output using shell redirection operators, for example:<br><i>icat</i> image.dd 12345 > recovered_document.pdf


title: FORENSIC INDISPENSABILITY
content:
<i>icat</i> is highly valuable in digital forensics because it allows investigators to bypass common obstacles like file system corruption, deleted entries, or broken directory structures. By targeting the inode directly, it can retrieve the raw data associated with a file, often uncovering critical evidence that would otherwise be inaccessible through conventional file system navigation.


title: HISTORY
content:
<i>icat</i> is a foundational utility within <b>The Sleuth Kit (TSK)</b>, a comprehensive suite of open-source command-line tools for digital forensics. TSK was initially developed by Brian Carrier, beginning around 2001, as a successor to The Coroner's Toolkit (TCT). Since its inception, <i>icat</i> has been a vital component of TSK, providing the essential capability to extract file data directly from raw or forensic disk images based on inode references, a critical function for evidence recovery and detailed analysis in forensic investigations.


title: SYNOPSIS
content:
<I>HandBrakeCLI</I> [OPTIONS] <B>-i</B> <I>&lt;input_file&gt;</I> <B>-o</B> <I>&lt;output_file&gt;</I>


title: PARAMETERS
content:
<b><B>-i</B>, <B>--input</B> <I>&lt;file&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input video file or source (e.g., a path to a file or a device like <I>/dev/sr0</I> for DVD).<br><br><b><B>-o</B>, <B>--output</B> <I>&lt;file&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the path and filename for the output video file.<br><br><b><B>-Z</B>, <B>--preset</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a built-in or user-defined preset that pre-configures many encoding settings.<br><br><b><B>-f</B>, <B>--format</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output container format (e.g., <I>mp4</I>, <I>mkv</I>, <I>webm</I>).<br><br><b><B>-e</B>, <B>--encoder</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the video encoder to use (e.g., <I>x264</I>, <I>x265</I>, <I>vp8</I>, <I>vp9</I>).<br><br><b><B>-q</B>, <B>--quality</B> <I>&lt;float&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the average video quality for Constant Rate Factor (CRF) encoding. Lower values generally mean higher quality.<br><br><b><B>--vb</B>, <B>--video-bitrate</B> <I>&lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the average video bitrate in kilobits per second (kbps) for Average Bitrate (ABR) encoding.<br><br><b><B>-C</B>, <B>--crop</B> <I>&lt;T:B:L:R&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Crops the video frame by specifying pixels from Top, Bottom, Left, and Right edges.<br><br><b><B>-w</B>, <B>--width</B> <I>&lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired output video width. Height is adjusted proportionally by default.<br><br><b><B>-h</B>, <B>--height</B> <I>&lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired output video height. Width is adjusted proportionally by default.<br><br><b><B>-c</B>, <B>--chapters</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which chapters of the input to encode (e.g., <I>1-5</I> or <I>1,3,5</I>).<br><br><b><B>-a</B>, <B>--audio</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific audio tracks and their encoding settings (e.g., codec, bitrate).<br><br><b><B>-s</B>, <B>--subtitle</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects subtitle tracks to include and their rendering options.<br><br><b><B>-d</B>, <B>--deinterlace</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a deinterlace filter to remove interlacing artifacts (e.g., <I>yadif</I>).<br><br><b><B>--optimize</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optimizes the MP4 output file for web streaming (moves metadata to the beginning).<br><br><b><B>-v</B>, <B>--verbose</B> <I>&lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level for more detailed output during encoding.<br><br><b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the full help message for <I>HandBrakeCLI</I> and exits.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <I>HandBrakeCLI</I> version information and exits.<br><br>


title: DESCRIPTION
content:
HandBrakeCLI is the command-line interface for HandBrake, a powerful open-source video transcoder. It enables users to convert video from nearly any format, including DVD and Blu-ray sources, into a selection of modern, widely supported codecs like H.264, H.265, VP8, and VP9, along with various audio codecs. It's an indispensable tool for tasks such as ripping physical media to digital files, optimizing videos for web streaming, or ensuring compatibility across different devices. Beyond basic conversion, HandBrakeCLI offers advanced features including chapter selection, subtitle inclusion, audio track manipulation, and the application of video filters like deinterlacing and denoising. Its robust command-line nature makes it perfectly suited for scripting, batch processing, and integration into automated video workflows on Linux servers or workstations.


title: CAVEATS
content:
HandBrakeCLI can be computationally intensive, requiring significant CPU resources, especially for high-resolution or high-quality encodes.<br>DRM-protected media (e.g., commercial Blu-rays/DVDs) often require additional, third-party libraries (like <I>libdvdcss</I>) for decryption, which are not bundled with HandBrake.<br>Incorrect or suboptimal encoding settings can lead to disproportionately large file sizes, reduced video quality, or extended encoding times. It is recommended to experiment with settings on small clips first.


title: PRESETS
content:
<I>HandBrakeCLI</I> includes a wide array of built-in presets (e.g., <B>Fast 1080p30</B>, <B>HQ 720p30 Surround</B>) that streamline the encoding process by pre-configuring numerous complex options. Users also have the flexibility to create and save their own custom presets for specific needs or repeated tasks.


title: BATCH PROCESSING
content:
The command-line interface is a key advantage of <I>HandBrakeCLI</I> for scripting and automating the conversion of multiple video files. This is commonly achieved by using shell scripts with constructs like <B>for</B> loops to efficiently process entire directories of video content, making it ideal for large media libraries.


title: HISTORY
content:
HandBrake began its journey in 2003 as an open-source tool primarily designed for ripping DVDs to a G4 PowerBook. Over the years, it evolved significantly, growing into a versatile, cross-platform video transcoder available with both a graphical user interface (GUI) and a powerful command-line interface (CLI). Its development has been largely community-driven, continuously incorporating support for new video and audio codecs, container formats, and hardware acceleration capabilities. The <I>HandBrakeCLI</I> version has become a staple for server-side video processing, automated workflows, and large-scale batch conversions due to its efficiency and scriptability.


title: SYNOPSIS
content:
<i>apksigner</i> <B>command</B> [<B>options</B>] <I>apk_file(s)</I><br><br>Common commands:<br>  <B>sign</B> [<B>options</B>] <I>input_apk</I> [<B>--out</B> <I>output_apk</I>]<br>  <B>verify</B> [<B>options</B>] <I>apk_file</I><br>  <B>rotate</B> [<B>options</B>] <I>apk_file</I>


title: PARAMETERS
content:
<b>--ks <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the keystore file containing the signing key.<br><br><b>--ks-key-alias <alias></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Alias of the private key to be used for signing within the keystore.<br><br><b>--ks-pass <pass></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Password for the keystore. Can be 'pass:<password>' or 'env:<variable_name>'.<br><br><b>--key-pass <pass></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Password for the private key. Can be 'pass:<password>' or 'env:<variable_name>'.<br><br><b>--min-sdk-version <version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Minimum Android SDK version supported by the APK, relevant for signature scheme eligibility.<br><br><b>--v1-signing-enabled <true|false></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable traditional JAR signing (APK Signature Scheme v1).<br><br><b>--v2-signing-enabled <true|false></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable APK Signature Scheme v2 (Android 7.0+).<br><br><b>--v3-signing-enabled <true|false></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable APK Signature Scheme v3 (Android 9.0+), supporting signature rotation.<br><br><b>--v4-signing-enabled <true|false></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable APK Signature Scheme v4 (Android 11+), for streaming installations.<br><br><b>--in <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input APK file for signing or verification operations.<br><br><b>--out <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output APK file path after signing. If not provided, the input file may be overwritten.<br><br><b>--print-certs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For the 'verify' command, prints details about the certificates used to sign the APK.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints more detailed output for commands like 'verify', including signature verification results.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output for troubleshooting purposes.<br><br>


title: DESCRIPTION
content:
<i>apksigner</i> is a command-line tool, part of the Android SDK Build-Tools, essential for signing Android application packages (APKs). Proper signing ensures the integrity and authenticity of an app, allowing Android devices and the Google Play Store to verify its origin and detect any tampering. It supports the modern APK Signature Scheme v2, v3, and v4, which offer improved security, faster installation, and enhanced features like signature rotation and incremental installation, superseding the older <i>jarsigner</i> tool for Android app signing. Beyond signing, <i>apksigner</i> can also verify existing APK signatures, providing detailed information about the certificates and schemes used, making it an indispensable tool for Android developers and security analysts.


title: CAVEATS
content:
<i>apksigner</i> requires a Java Development Kit (JDK) to be installed and configured in your system's PATH. It is distributed as part of the Android SDK Build-Tools, meaning its exact location may vary depending on your SDK installation. For modern Android app distribution, it's the recommended tool, as APK Signature Schemes v2, v3, and v4 are crucial for integrity, performance, and compatibility on newer Android versions and with Google Play.


title: APK SIGNATURE SCHEMES
content:
<B>V1 (JAR Signing)</B>: The traditional scheme, compatible with all Android versions. It signs the entire APK's JAR entries. Does not protect against all modifications after signing.<br><br><B>V2 (APK Signature Scheme v2)</B>: Introduced in Android 7.0 (Nougat). This scheme signs the entire APK as a single blob. It offers stronger integrity guarantees and significantly faster verification/installation.<br><br><B>V3 (APK Signature Scheme v3)</B>: Introduced in Android 9.0 (Pie). Builds upon V2 by adding a new signature block that allows for signature rotation, enabling developers to change their app's signing key over time while maintaining update continuity.<br><br><B>V4 (APK Signature Scheme v4)</B>: Introduced in Android 11. Primarily designed to support streaming installations via ADB and Google Play, making installation of large APKs faster and more efficient by hashing the entire APK contents externally.


title: HISTORY
content:
<i>apksigner</i> was introduced with Android SDK Build-Tools 24.0.3 in mid-2016 to support the then-new APK Signature Scheme v2. This scheme offered significant improvements in app integrity verification and installation speed compared to the traditional JAR signing (v1). Subsequent versions of the Android SDK added support for v3 (Android 9.0, enabling key rotation) and v4 (Android 11, facilitating streaming installations). It quickly became the officially recommended tool for signing Android applications, effectively deprecating the use of <i>jarsigner</i> for APKs.


title: PARAMETERS
content:
<b>-c, --crash=PID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report a crash of the specified process ID (PID).<br><br><b>-p, --package=PACKAGE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report a bug associated with a specific installed package.<br><br><b>-f, --file=FILENAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report a problem related to a specific file, often a log or configuration file.<br><br><b>-i, --input=REPORT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the problem report from a previously generated report file.<br><br><b>-o, --output=FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the generated problem report to a specified file instead of submitting.<br><br><b>-U, --unattended</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <i>Apport</i> in unattended mode, suppressing interactive prompts. Use with caution.<br><br><b>-u, --url=URL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom URL for uploading the bug report, overriding default settings.<br><br><b>-s, --ssh</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upload the report using SSH, typically for restricted access scenarios.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform all actions except the final submission, useful for testing and verification.<br><br><b>--no-browser</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not automatically open a web browser after submitting the bug report.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information of the <i>Apport</i> utility.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message with available options and usage information.<br><br>


title: DESCRIPTION
content:
<i>Apport</i> is a software system primarily used in <b>Ubuntu</b> and its derivatives to automatically collect and report detailed information about program crashes and software bugs. When an application crashes, <i>Apport</i> intercepts the event, gathers diagnostic data such as stack traces, core dumps, system logs, and relevant configuration files. This data is then compiled into a comprehensive bug report package.<br><br>The system prompts the user to review and submit this report, often directly to a bug tracking system like <b>Launchpad</b>. This automation significantly streamlines the bug reporting process, making it easier for users to contribute to software improvement by providing developers with accurate and complete context without requiring complex manual data collection.


title: CAVEATS
content:
<i>Apport</i> is primarily designed for <b>Ubuntu</b> and its derivatives. It collects extensive system information, including potentially sensitive data; users should review reports before submission. Network connectivity is required for online submission of reports. Disabling <i>Apport</i> might prevent automatic crash reporting.


title: ARCHITECTURE AND COMPONENTS
content:
<i>Apport</i> is not a single command but a suite of tools. It includes a daemon (<b>apport-autoreport</b>) that passively monitors for system crashes, various command-line utilities (like <b>apport-cli</b>, <b>apport-bug</b>, <b>apport-collect</b>, and <b>apport-unpack</b>), and graphical interfaces for user interaction and report review.


title: PRIVACY CONSIDERATIONS
content:
When <i>Apport</i> collects data, it gathers a wide range of system information, which can include process lists, installed package details, kernel logs, and potentially snippets from memory or configuration files. Users are always prompted to review the contents of the report before submission, allowing them to redact any sensitive information they do not wish to share.


title: DISABLING APPORT
content:
For users who wish to prevent <i>Apport</i> from automatically collecting and prompting for bug reports, it can be disabled. This is typically done by modifying the configuration file located at <b>/etc/default/apport</b> or <b>/etc/apport/settings</b> and setting 'enabled=0' or similar options.


title: HISTORY
content:
<i>Apport</i> was developed by Martin Pitt for <b>Ubuntu</b>, first appearing around <b>Ubuntu 6.10 (Edgy Eft)</b> in 2006. Its creation aimed to significantly improve the quality and detail of bug reports submitted by users, thereby streamlining the development and bug-fixing process for <b>Ubuntu</b> developers. By automating the collection of complex diagnostic data like stack traces and system logs, <i>Apport</i> eliminated the need for users to manually gather such information, making bug reporting accessible to a wider audience. It has since become an integral part of <b>Ubuntu</b>'s quality assurance infrastructure, deeply integrated with services like <b>Launchpad</b> for efficient bug tracking and resolution.


title: SYNOPSIS
content:
<b>assetfinder</b> [<i>OPTIONS</i>] <i>&lt;TARGET&gt;</i><br>or<br><b>cat</b> <i>domains.txt</i> | <b>assetfinder</b> [<i>OPTIONS</i>]


title: PARAMETERS
content:
<b><b>--burp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the discovered assets in a format compatible with Burp Suite.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message, detailing available options and usage.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the results in JSON format, useful for programmatic parsing.<br><br><b><b>--output</b> <i>&lt;file&gt;</i>, <b>-o</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the discovered assets to the specified output file.<br><br><b><b>--relations</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes not only subdomains but also other related domains that <i>assetfinder</i> discovers for the target.<br><br><b><b>--subs-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A frequently used option; it restricts the output to only the discovered subdomains, excluding other related assets.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version number of <i>assetfinder</i>.<br><br><b><b>--wafs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to detect if the discovered domains are protected by Web Application Firewalls (WAFs).<br><br><b><b>--wapps</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs information about the web technologies (e.g., web servers, frameworks) running on the discovered domains.<br><br>


title: DESCRIPTION
content:
<i>assetfinder</i> is a command-line utility designed for rapidly discovering domains and subdomains associated with a given target organization or domain. Developed by TomNomNom and written in Go, it's a popular open-source tool primarily utilized by penetration testers, bug bounty hunters, and security researchers during the reconnaissance phase of security assessments.<br><br>It functions by querying various public data sources, including Certificate Transparency logs (like crt.sh), VirusTotal, and other publicly available information, to identify assets that might be overlooked by traditional DNS enumeration methods. Its strength lies in its ability to quickly gather a broad list of potential targets, which can then be fed into other tools for further analysis, such as port scanning, HTTP probing, or vulnerability scanning. <i>assetfinder</i> is highly valued for its speed and simplicity, making it an essential first step in many attack surface discovery workflows.


title: CAVEATS
content:
<i>assetfinder</i> relies on publicly available data sources, meaning it might not discover all internal or private assets of a target. It can generate a large volume of results, which often requires further filtering and processing using other command-line tools. An active internet connection is mandatory for its operation as it queries external services. The `--wafs` and `--wapps` options may increase the execution time.


title: PIPING WITH OTHER TOOLS
content:
One of <i>assetfinder</i>'s most powerful features is its ability to integrate with other command-line tools through piping. For example, to find all subdomains and then check their HTTP/S status, you can use: <b>assetfinder</b> <i>example.com</i> | <b>httpx</b> <b>-silent</b>


title: INPUT FROM STANDARD INPUT
content:
<i>assetfinder</i> can also read a list of domains from standard input, allowing you to process multiple targets efficiently. This is useful when you have a file containing a list of domains: <b>cat</b> <i>domains.txt</i> | <b>assetfinder</b> <b>--subs-only</b>


title: HISTORY
content:
<i>assetfinder</i> was created by TomNomNom (Tom Hudson), a well-known figure in the cybersecurity community recognized for developing efficient and straightforward command-line tools for penetration testing and bug bounty hunting. Written in Go, its development was motivated by the need for a fast, reliable, and passive subdomain discovery tool that aggregates data from various public sources. It quickly gained significant popularity within the bug bounty and red teaming communities due to its effectiveness and its seamless integration into automated reconnaissance workflows, often piped with other tools like <i>httpx</i> or <i>nuclei</i>.


title: SYNOPSIS
content:
<i>yamllint</i> [<i>options</i>] [<i>path</i>...]<br><i>yamllint</i> --version<br><i>yamllint</i> --help


title: PARAMETERS
content:
<b>-c FILE, --config-file=FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specific configuration file (e.g., <i>.yamllint.yaml</i>) instead of the default search path.<br><br><b>-d DATA, --config-data=DATA</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide configuration directly as a YAML string on the command line.<br><br><b>-f FORMAT, --format=FORMAT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format for linting results. Common formats include <b>standard</b>, <b>parsable</b>, <b>github</b>, <b>gitlab</b>, and <b>vs</b>.<br><br><b>-s, --strict</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Return a non-zero exit code (1) for warnings in addition to errors. By default, only errors cause a non-zero exit.<br><br><b>--no-warnings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all warning messages from being printed in the output.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the <i>yamllint</i> version number and exit.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br>


title: DESCRIPTION
content:
<i>yamllint</i> is a command-line utility designed to check YAML files for syntax validity and adherence to specified style guidelines. It helps developers and system administrators maintain consistent coding standards, prevent common errors, and ensure the readability of YAML configurations. Highly configurable, <i>yamllint</i> allows users to enable or disable specific rules, customize rule behavior, and define custom ignore paths. It's commonly integrated into CI/CD pipelines to automate code quality checks for configuration files, infrastructure-as-code definitions, and other YAML-based assets.


title: CAVEATS
content:
<i>yamllint</i> is a static analysis tool that reports issues but <b>does not automatically fix them</b>. It requires Python to be installed on the system. While highly configurable, setting up complex custom rule sets can sometimes be challenging.


title: CONFIGURATION
content:
<i>yamllint</i> can be configured via a file named <i>.yamllint</i> or <i>.yamllint.yaml</i> in the current directory, user's home directory, or a specified path. This configuration file defines which rules are enabled or disabled, their severity (error/warning), and various other settings like ignored paths, maximum line length, and indentation size.


title: EXIT STATUS
content:
The command's exit status provides information about the linting outcome:<br><b>0</b>: No errors or warnings were found (or only warnings if <i>--strict</i> is not used).<br><b>1</b>: Errors or warnings (if <i>--strict</i> is used) were found.<br><b>2</b>: A fatal error occurred (e.g., invalid configuration file, input file not found).


title: RULES
content:
<i>yamllint</i> ships with a comprehensive set of built-in rules that cover common YAML best practices. These include checks for indentation, trailing spaces, line length, key ordering, document start/end markers, and more. Users can selectively enable, disable, or customize the behavior of these rules within their configuration file.


title: HISTORY
content:
<i>yamllint</i> is an open-source project actively developed on GitHub. It emerged as a dedicated linter for YAML, addressing the growing need for quality control in configuration files, especially with the rise of Infrastructure as Code. Its development has focused on extensibility, robust rule sets, and ease of integration into continuous integration (CI) workflows.


title: SYNOPSIS
content:
The term <b>ppm</b> refers to the <i>Portable PixMap</i> image format, not a standalone command. To work with PPM files, users utilize various commands from the <i>Netpbm</i> suite. <br><br>Examples of common Netpbm commands that handle PPM files include: <br><b>ppmtogif</b> <i>[ppmfile]</i> > <i>[giffile]</i> <br><b>giftoppm</b> <i>[giffile]</i> > <i>[ppmfile]</i> <br><b>pnmscale</b> <i>[options]</i> <i>[pnmfile]</i> > <i>[scaled_pnmfile]</i> <br>These commands operate on PPM, PBM, or PGM files, converting between formats or applying transformations.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;There is no single 'ppm' command with universal parameters. Parameters are specific to individual utilities within the Netpbm suite, such as <i>ppmtogif</i>, <i>giftoppm</i>, <i>pnmscale</i>, etc. Each utility has its own set of options for image manipulation, conversion, or generation.<br><br>


title: DESCRIPTION
content:
<i>Portable Pixmap (PPM)</i> is a simple, uncompressed image file format, part of the Netpbm project's image formats (along with PBM for bitmaps and PGM for grayscale images). Unlike typical Linux commands like <i>ls</i> or <i>grep</i>, there is no single executable command named <b>ppm</b>. Instead, <b>ppm</b> refers to the image format itself, and its manipulation is performed by a comprehensive suite of utilities provided by the <i>Netpbm</i> toolkit. These utilities follow a consistent naming convention, often starting with <i>pnm</i> (Portable Anymap, for generic operations) or specific format prefixes like <i>ppm</i>, <i>pbm</i>, or <i>pgm</i> (e.g., <i>ppmtogif</i>, <i>giftoppm</i>, <i>pnmscale</i>). The Netpbm suite is designed for easy piping and scripting, allowing complex image processing tasks to be chained together using standard input/output.


title: CAVEATS
content:
It is a common misconception that <b>ppm</b> is a standalone command. Users new to image processing in Linux may search for a 'ppm command' and find no direct executable. Understanding that <b>ppm</b> denotes a file format and that operations are performed by the <i>Netpbm</i> toolkit's individual utilities is crucial. While <i>PPM</i> is simple and widely supported, its uncompressed nature can result in very large file sizes, making it less suitable for web or storage where space is a concern. It is primarily used as an intermediate format for conversions and manipulations.


title: PPM FILE FORMAT STRUCTURE
content:
A <i>PPM</i> file begins with a 'magic number' (P3 for ASCII, P6 for binary) followed by whitespace, then the width, height, and maximum color value (typically 255). The pixel data then follows, consisting of RGB triplets. For P3 (ASCII), each R, G, B component is represented as a number, while for P6 (binary), they are raw bytes. This simple structure makes it easy to read and write PPM files programmatically.


title: NETPBM PHILOSOPHY
content:
The <i>Netpbm</i> suite adheres to the Unix philosophy: 'Do one thing and do it well.' Each utility performs a specific task (e.g., converting from GIF to PPM, scaling an image, rotating). This modular design encourages piping outputs of one command to the inputs of another, creating powerful command chains for complex image processing without large, monolithic applications.


title: HISTORY
content:
The <i>PPM</i> (Portable PixMap), <i>PGM</i> (Portable GrayMap), and <i>PBM</i> (Portable BitMap) formats, collectively known as <i>PNM</i> (Portable Anymap), were designed in the late 1980s by Jef Poskanzer as part of the <i>Pbmplus</i> package. The primary goal was to create simple, ASCII-based, easily-parseable image formats that could serve as a "lowest common denominator" for image data, facilitating conversions between various proprietary or complex formats. This philosophy allowed for easy scripting and piping of image data between small, specialized utilities. <br><br><i>Pbmplus</i> evolved into the modern <i>Netpbm</i> suite, which continues to be actively maintained and is a staple in Unix-like environments for fundamental image manipulation tasks. The simplicity and robust nature of the PPM format, combined with the modularity of the Netpbm tools, have ensured its continued relevance, especially in scripting and command-line automation contexts.


title: SEE ALSO
content:
pnm(5), pbm(5), pgm(5), netpbm(1), ppmtogif(1), giftoppm(1), pnmscale(1), convert(1) (from ImageMagick)


title: SYNOPSIS
content:
Since there isn't a single "pbm" command, this synopsis illustrates a common PBM-related utility, <B>pbmtoascii</B>, which converts a PBM image into ASCII art.<br><br><b>pbmtoascii</b> [<i>-2x2</i>] [<i>-compact</i>] [<i>-rows N</i>] [<i>-cols N</i>] [<i>pbmfile</i>]


title: PARAMETERS
content:
<b>-2x2</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces 2x2 characters for each pixel, giving higher resolution ASCII art.<br><br><b>-compact</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a smaller character set for a more compact output.<br><br><b>-rows N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of rows for the output.<br><br><b>-cols N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of columns for the output.<br><br><b>pbmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The input PBM file. If not specified, reads from standard input.<br><br>


title: DESCRIPTION
content:
<B>pbm</B> primarily refers to the <I>Portable BitMap</I> image format, a very basic, monochrome (black & white) raster image format. It is also part of the larger <I>Netpbm</I> suite of graphics tools. The <I>Netpbm</I> project provides a collection of commands for converting, manipulating, and creating images in the PBM, PGM (Portable Graymap), and PPM (Portable Pixmap) formats. While there isn't a single "pbm" command that acts as a general utility, many specific commands within the Netpbm suite deal directly with PBM files (e.g., <B>pbmtoascii</B>, <B>pbmmake</B>, <B>pbmflip</B>). These tools are fundamental for basic image processing in a Unix-like environment, often used in scripts for simple graphical tasks, enabling pipelines where the output of one image tool becomes the input of another. They are designed for simplicity and interoperability.


title: CAVEATS
content:
It's important to understand that "<B>pbm</B>" in the context of Linux commands typically refers to the <I>Portable BitMap</I> image <I>format</I> and a family of specialized tools within the <I>Netpbm</I> suite, rather than a single general-purpose executable command named <B>pbm</B> itself. Each specific PBM operation (like creating, converting, or manipulating) is handled by its own dedicated command (e.g., <B>pbmmake</B>, <B>pbmtoascii</B>, <B>pbmflip</B>). Users looking for general PBM manipulation should consult the various commands beginning with "pbm" or the overarching <B>netpbm(1)</B> man page for a comprehensive overview of the entire suite.


title: THE PORTABLE BITMAP (PBM) FORMAT
content:
The PBM format (<B>pbm(5)</B>) is the simplest of the Netpbm formats. It represents a single-bit-per-pixel monochrome image, meaning each pixel is either black or white. It's stored as a plain text (ASCII) or raw binary file. The header specifies the "magic number" (P1 for ASCII, P4 for raw), width, and height. Following the header are the pixel values (0 for white, 1 for black in ASCII; packed bits in raw). Its simplicity makes it easy to generate and parse programmatically, making it ideal for command-line manipulation.


title: HISTORY
content:
The <I>Netpbm</I> suite, which includes tools for the PBM format, originates from the <I>pbmplus</I> package developed by Jef Poskanzer in the late 1980s. It was designed to be a "toolkit approach" to image manipulation, where many small, specialized programs could be chained together using Unix pipes, rather than a single monolithic program. The PBM (Portable BitMap), PGM (Portable Graymap), and PPM (Portable Pixmap) formats were created specifically to be simple, easily parseable, and suitable for piping between these tools, serving as a "lowest common denominator" for image data. This modular design has ensured its longevity and widespread use in scripting and command-line image processing on Unix-like systems.


title: SYNOPSIS
content:
<i>'pgm' is not a standalone command.</i><br>Instead, functionality related to the Portable Graymap (PGM) format is provided by various utilities within the Netpbm suite. These tools typically follow a pattern like:<br><br><b>[utility_name] [options] [input_file] > [output_file]</b><br><br>Examples include <b>anytopnm</b> (converts various formats to PGM/PPM/PBM), <b>pgmtoppm</b> (converts PGM to PPM), <b>ppmtogray</b> (converts PPM to PGM), and many others. Each utility has its own specific syntax and options.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As 'pgm' is not a standalone command, it does not have its own set of direct parameters. Parameters are specific to each individual utility within the Netpbm suite that operates on PGM files. Common options often relate to image dimensions, verbosity, or file handling modes, and vary widely per utility.<br><br>


title: DESCRIPTION
content:
The term 'pgm' in a Linux context primarily refers to the <i>Portable Graymap</i> image file format, not a single standalone command-line utility. PGM is a simple, grayscale image format that is part of the Netpbm suite of graphics utilities. It can store images in either ASCII (plain text) or binary format. Due to its simplicity, PGM is often used as an intermediary format by other image conversion tools. While there isn't a direct 'pgm' command, a collection of powerful utilities within the Netpbm package are specifically designed to create, convert, and manipulate PGM files, often alongside PPM (Portable Pixmap) and PBM (Portable Bitmap) formats. These utilities operate via standard input and output, making them highly scriptable and versatile for image processing tasks.


title: CAVEATS
content:
It is important to clarify that 'pgm' is <i>not a standalone executable command</i> in the typical Linux sense (like <b>ls</b> or <b>grep</b>). When people refer to 'pgm' functionality, they are almost universally referring to operations on the Portable Graymap image format, typically performed using tools from the Netpbm collection. Attempting to execute <b>pgm</b> directly on a standard system will likely result in a 'command not found' error. Users should look for specific Netpbm utilities like <b>pgmtoppm</b>, <b>anytopnm</b>, <b>ppmtogray</b>, etc., to perform PGM-related tasks.


title: KEY NETPBM UTILITIES FOR PGM
content:
The Netpbm suite provides numerous utilities relevant to PGM files. Some commonly used ones include:<br><br><b>anytopnm</b>: Converts many image formats (e.g., JPEG, PNG) into a Netpbm format (PBM, PGM, or PPM).<br><b>pgmtoppm</b>: Converts a PGM image to a PPM (Portable Pixmap) image, useful for adding color information or preparing for conversion to other color formats.<br><b>ppmtogray</b>: Converts a PPM (color) image to a PGM (grayscale) image.<br><b>pnmcrop</b>: Crops an image to its actual contents or a specified region.<br><b>pnmscale</b>: Scales (resizes) a Netpbm image.<br><b>pnminvert</b>: Inverts the colors in a Netpbm image.<br><b>pnmrotate</b>: Rotates a Netpbm image.<br><br>These tools often work by piping output from one to the input of another, e.g., <b>jpegtopnm image.jpg | pnmscale 0.5 | ppmtogray > image_small_gray.pgm</b>.<br>


title: HISTORY
content:
The Portable Graymap (PGM) format originated as part of the Portable Anymap (PNM) family within the Netpbm project. Netpbm was initially developed by Jef Poskanzer in the late 1980s and early 1990s as a suite of command-line tools for converting and manipulating various image formats. The design philosophy of PGM, along with PBM and PPM, was simplicity and ease of parsing, making them ideal as intermediary formats for complex image conversions. They are often used in shell scripts to chain multiple image operations. While newer, more complex formats like PNG and JPEG have become ubiquitous, PGM and the Netpbm tools remain highly valued for their robustness, scriptability, and role in fundamental image processing pipelines on Unix-like systems.


title: SEE ALSO
content:
netpbm(1), pnm(5), pbm(5), ppm(5), pam(5), anytopnm(1), pgmtoppm(1), ppmtogray(1), jpegtopnm(1), pngtopnm(1)


title: SYNOPSIS
content:
Netpbm is a collection of individual programs, not a single command with universal syntax. Its tools are typically used following this pattern:<br><b><i>program_name</i></b> [<i>options</i>] [<i>input_file</i>] > <i>output_file</i><br><br>Many Netpbm programs are designed to read image data from standard input (if no <i>input_file</i> is specified) and write the processed image to standard output. This facilitates piping one tool's output directly into another's input.<br><br><i>Example:</i> <b>jpegtopnm</b> <i>input.jpg</i> | <b>pnmscale</b> <i>0.5</i> | <b>pnmtopng</b> > <i>output.png</i>


title: PARAMETERS
content:
<b><i>(No universal parameters for the Netpbm suite itself)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <b>netpbm</b> utility is a suite of hundreds of distinct programs, each with its own set of specific command-line parameters and options. Therefore, there are no universal parameters that apply across the entire Netpbm suite.<br><br>However, common categories of parameters found across individual Netpbm tools include:<br><b>Input/Output options:</b> For specifying input files, output destinations, or indicating standard I/O usage.<br><b>Transformation options:</b> Such as dimensions for scaling (e.g., <i>-width</i>, <i>-height</i> for <b>pnmscale</b>), angles for rotation, or coordinates for cropping.<br><b>Color and Pixel manipulation:</b> Options related to color depths, grayscale conversion (e.g., <i>-greyscale</i> for <b>ppmtopgm</b>), or specific pixel values.<br><b>Format-specific options:</b> Parameters relevant to the particular image format being converted to or from (e.g., compression quality for <b>pnmtojpeg</b>).<br><b>Help/Version:</b> Most tools support standard options like <i>-help</i> or <i>-version</i>.<br><br>


title: DESCRIPTION
content:
Netpbm is a powerful and versatile suite of over 220 command-line utilities for manipulating graphic images. It serves as a foundational toolkit for image processing in Unix-like environments. Its primary function involves converting various image formats (such as JPEG, PNG, TIFF, GIF) into its own set of intermediate formats – <b>PBM</b> (Portable BitMap), <b>PGM</b> (Portable GrayMap), and <b>PPM</b> (Portable PixMap) – and back again. These intermediate formats are simple, uncompressed, and designed for easy processing.<br><br>The strength of Netpbm lies in its modularity, adhering to the Unix philosophy: small, single-purpose tools that perform one specific task well. Users typically chain these tools together using pipes to create complex image processing workflows, enabling operations like scaling, cropping, rotating, color adjustments, and much more. It's widely used in scripts, web servers, and automated image processing pipelines.


title: CAVEATS
content:
<b>Steep Learning Curve:</b> Effectively using Netpbm requires understanding its many individual tools and how to combine them via command-line pipes, which can be less intuitive for beginners.<br><b>Uncompressed Intermediate Files:</b> The Netpbm formats (PBM, PGM, PPM) are uncompressed. When not piped, intermediate files can be very large, consuming significant disk space.<br><b>Command-line Only:</b> Netpbm is entirely command-line driven, lacking a graphical user interface, which may be a limitation for some users.<br><b>Basic Functionality:</b> While powerful for pixel-level manipulation and format conversion, it does not offer advanced image editing features found in software like GIMP or Photoshop (e.g., layers, complex filters, drawing tools).


title: HISTORY
content:
The Netpbm project originated in the late 1980s, initially developed by Jef Poskanzer and known as <b>PBMPlus</b>. It quickly gained popularity due to its robust functionality and adherence to the Unix philosophy of small, single-purpose tools. In the mid-1990s, as the suite expanded beyond just PBM (Portable BitMap) utilities to include PGM and PPM, it was renamed <b>Netpbm</b>. The project has been continuously maintained and developed by various contributors, solidifying its place as a staple toolkit for image processing in Unix-like operating systems. Its design principles have influenced many subsequent command-line tools.


title: SEE ALSO
content:
pnm(5), anytopnm(1), pnmtojpeg(1), jpegtopnm(1), pnmscale(1), pnmcrop(1), convert(1) (ImageMagick), mogrify(1) (ImageMagick), identify(1) (ImageMagick)


title: PARAMETERS
content:
<b><b>-c</b> <I>cost</I>, <b>--cost</b> <I>cost</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the algorithmic cost factor (also known as 'work factor' or 'rounds'). This integer value determines the computational difficulty. A higher cost increases the time required to compute the hash, making brute-force attacks exponentially more difficult. The default value is typically between 10 and 12, depending on the implementation.<br><br><b><b>-s</b> <I>salt</I>, <b>--salt</b> <I>salt</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows specifying a custom 16-byte salt to use for hashing. If not provided, a cryptographically secure random salt is generated automatically. It is highly recommended to let the system generate a random salt for maximum security.<br><br><b><I>password</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The plaintext password string to be hashed. If not provided on the command line, some implementations may read the password interactively from standard input to prevent it from appearing in shell history.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits, showing usage instructions and available options.<br><br>


title: DESCRIPTION
content:
Bcrypt is a password-hashing function designed by Niels Provos and David Mazières in 1999. It is based on the Blowfish cipher and features an adaptive "cost factor" that makes it resilient against brute-force attacks by allowing the computational cost of hashing to be increased over time, keeping pace with improvements in hardware. Unlike simpler hashing algorithms like MD5 or SHA-1, bcrypt is specifically designed to be slow and resource-intensive, making it unsuitable for general data hashing but ideal for securing passwords. It also incorporates a unique salt for each hash to protect against rainbow table attacks and ensure that identical passwords produce different hashes, significantly enhancing security.


title: CAVEATS
content:
The <I>bcrypt</I> command, specifically for generating password hashes from the command line, is <B>not</B> a standard, universally available utility on most Linux distributions. Password hashing using the bcrypt algorithm is typically performed via:<br>1. <I>The mkpasswd command</I>: often available as <B>mkpasswd -m bcrypt</B> (part of the <I>whois</I> or <I>expect</I> packages).<br>2. <I>Programming language libraries</I>: Most languages (Python, Node.js, Ruby, PHP, Go, etc.) have robust bcrypt libraries used by applications.<br>3. <I>Web server tools</I>: For example, <B>htpasswd -B</B> for Apache to generate bcrypt-hashed passwords for <I>.htpasswd</I> files.<br>The OpenBSD <I>bcrypt</I> command (sometimes ported to Linux) is primarily used for file encryption, not password hashing for system accounts. The description above refers to the <I>conceptual</I> use of a <I>bcrypt</I> command for password hashing, reflecting how the algorithm is typically accessed through command-line interfaces or libraries.


title: COST FACTOR EXPLANATION
content:
The cost factor (often denoted as 'rounds' or 'work factor') determines the number of iterations bcrypt performs. A cost factor of <I>N</I> means the algorithm performs 2<SUP>N</SUP> iterations. Increasing the cost by 1 doubles the time it takes to compute the hash. This adaptive nature is crucial for future-proofing password storage against increasing computational power. Security recommendations for the cost factor evolve, but a common starting point for new applications is 10-12, adjusted based on hardware and latency requirements.


title: SALTING
content:
Bcrypt automatically incorporates a randomly generated salt into each hash, unless a custom salt is explicitly provided. This salt is unique for every password, even if two users choose the same plaintext password. It prevents attackers from pre-computing hashes in rainbow tables and from detecting duplicate passwords across a database. The salt is typically stored as part of the bcrypt hash string itself, alongside the cost factor and the resulting hash.


title: HISTORY
content:
Bcrypt was designed by Niels Provos and David Mazières in 1999 and presented at USENIX. It was initially integrated into OpenBSD's <I>adduser</I> utility. Its key innovation was the adaptive cost factor, allowing its computational difficulty to scale with increasing hardware power, a significant improvement over static hashing algorithms like MD5 and SHA-1 which quickly became vulnerable to brute-force attacks. Its design for password hashing made it a strong recommendation by security experts and it has since been widely adopted across various applications and frameworks for secure password storage.


title: SYNOPSIS
content:
<i><code>findomain [OPTIONS] &lt;TARGETS&gt;</code></i><br><br><b>Examples:</b><br><i><code>findomain -t example.com</code></i><br><i><code>findomain -f domains.txt -o results.txt --virustotal-api-key YOUR_KEY</code></i>


title: PARAMETERS
content:
<b>-t &lt;target&gt;, --target &lt;target&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <b>target domain</b> to enumerate.<br><br><b>-f &lt;file&gt;, --file &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a <b>file with target domains</b> (one per line).<br><br><b>-o &lt;file&gt;, --output &lt;file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the enumeration results to a <b>specified output file</b>.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses verbose output, showing <b>only subdomains</b>.<br><br><b>-u, --unique</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <b>only unique</b> subdomains found.<br><br><b>--no-http</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables HTTP checks for found subdomains, leading to <b>faster execution</b>.<br><br><b>--disable-sources &lt;sources&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of <b>sources to disable</b> (e.g., <code>crtsh,virustotal</code>).<br><br><b>--enable-sources &lt;sources&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of <b>sources to exclusively enable</b>.<br><br><b>--threads &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of <b>concurrent threads</b> for scanning.<br><br><b>--timeout &lt;seconds&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the <b>timeout</b> for network requests.<br><br><b>--dns-servers &lt;servers&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of custom <b>DNS resolvers</b> to use.<br><br><b>--max-retry &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <b>maximum number of retries</b> for failed requests.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs results in <b>JSON format</b>.<br><br><b>--system-resolver</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of the <b>system's DNS resolver</b>.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <code>findomain</code> <b>version information</b>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>command's help message</b>.<br><br><b>--virustotal-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>VirusTotal API key</b>.<br><br><b>--shodan-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Shodan API key</b>.<br><br><b>--binaryedge-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>BinaryEdge API key</b>.<br><br><b>--fofa-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Fofa API key</b>.<br><br><b>--fofa-email &lt;email&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Fofa account email</b>.<br><br><b>--fullhunt-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>FullHunt API key</b>.<br><br><b>--intelx-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>IntelX API key</b>.<br><br><b>--intelx-host &lt;host&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <b>IntelX host</b>.<br><br><b>--recondev-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Recon.dev API key</b>.<br><br><b>--securitytrails-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>SecurityTrails API key</b>.<br><br><b>--github-token &lt;token&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>GitHub API token</b>.<br><br><b>--censys-username &lt;username&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Censys username</b>.<br><br><b>--censys-password &lt;password&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Censys password</b>.<br><br><b>--rapiddns-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>RapidDNS API key</b>.<br><br><b>--cloudflare-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>Cloudflare API key</b>.<br><br><b>--passivedns-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>PassiveDNS API key</b>.<br><br><b>--whoisxmlapi-api-key &lt;key&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <b>WhoisXMLAPI key</b>.<br><br>


title: DESCRIPTION
content:
<code>findomain</code> is a high-performance subdomain discovery tool written in Rust, designed for penetration testers and security professionals. It rapidly identifies subdomains by leveraging a multitude of passive sources, including <b>certificate transparency logs</b>, <b>DNS databases</b>, <b>web archives</b>, <b>search engines</b>, and <b>third-party APIs</b> (like VirusTotal and Shodan). Its speed and comprehensive approach make it an essential utility for expanding the attack surface during reconnaissance phases. <code>findomain</code> can output results to standard output or a file, and supports various options for customization, such as specifying API keys, limiting concurrent threads, or filtering data sources.


title: CAVEATS
content:
Many advanced features of <code>findomain</code> heavily rely on <b>API keys</b> from third-party services (e.g., VirusTotal, Shodan, BinaryEdge). Without these keys, the tool's effectiveness in finding subdomains might be reduced as it cannot access all its integrated data sources. Users should obtain and provide these keys for comprehensive results.<br>Additionally, aggressive usage with <b>high thread counts</b> or against numerous targets can lead to IP blocking by some services or DNS resolvers.


title: API KEY MANAGEMENT AND ENVIRONMENT VARIABLES
content:
For optimal results, it is highly recommended to configure API keys for services like VirusTotal, Shodan, and BinaryEdge. These keys can be passed directly via command-line arguments or, for persistent use, set as <b>environment variables</b>. For example: <code>export VIRUSTOTAL_API_KEY="YOUR_KEY"</code>.


title: PASSIVE RECONNAISSANCE APPROACH
content:
<code>findomain</code> primarily performs <b>passive subdomain enumeration</b>. This means it largely gathers information from publicly available sources without directly querying the target domain's servers (unless explicit HTTP checks are enabled). This approach makes it a stealthier option for initial reconnaissance, minimizing the risk of detection by target systems.


title: HISTORY
content:
<code>findomain</code> emerged as a modern, efficient, and <b>open-source</b> alternative for subdomain enumeration, gaining rapid popularity within the cybersecurity community. Written in <b>Rust</b>, it capitalized on the language's performance benefits, offering faster execution compared to some older tools. Its design goal was to consolidate multiple subdomain discovery techniques into a single, high-performance utility, making it a go-to tool for initial reconnaissance in penetration testing and bug bounty hunting.


title: PARAMETERS
content:
<b><b>--enum</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs all default enumeration techniques, including zone transfer attempts, reverse lookups, and subdomain brute-forcing. This is often the default behavior.<br><br><b><b>-f</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a dictionary <i>&lt;file&gt;</i> to use for subdomain brute-forcing. This file should contain one subdomain per line.<br><br><b><b>--noreverse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables reverse IP lookups, which can reduce scan time and network noise.<br><br><b><b>--nocolor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables colored output, useful when redirecting output to a file or for terminals that don't support color.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the performance of reverse lookups for IP ranges associated with the target domain.<br><br><b><b>-s</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the raw output of the scan to the specified <i>&lt;file&gt;</i>.<br><br><b><b>-o</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the output in XML format to the specified <i>&lt;file&gt;</i>, useful for parsing results with other tools.<br><br><b><b>-p</b> <i>&lt;threads&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of concurrent <i>&lt;threads&gt;</i> to use for subdomain brute-forcing. Increasing this can speed up the scan but may also increase network load and detection risk (default: 10).<br><br><b><b>--delay</b> <i>&lt;seconds&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Introduces a <i>&lt;seconds&gt;</i> delay between DNS requests, which can help avoid rate-limiting or detection.<br><br><b><b>--whois</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs WHOIS queries for the target domain to gather registration information.<br><br><b><b>--recursion</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables recursion for DNS queries, allowing the tool to follow CNAME records and resolve further.<br><br><b><b>--zonetransfer</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly attempts a DNS zone transfer for the target domain. Zone transfers are often blocked on modern DNS servers but can reveal extensive information if successful.<br><br><b><b>--srv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enumerate SRV (Service) records for the domain, which specify hostnames and port numbers for specific services.<br><br><b><b>--noclean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>dnsenum</i> from cleaning up temporary files generated during its operation, useful for debugging.<br><br><b><b>--silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the banner and verbose output, showing only critical information or errors.<br><br><b><b>--subfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the discovered subdomains to the specified <i>&lt;file&gt;</i>, useful for creating subdomain lists.<br><br><b><b>--private</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes private (RFC1918) IP addresses in reverse lookup results, which are typically filtered by default.<br><br><b><b>--servers</b> <i>&lt;list&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated <i>&lt;list&gt;</i> of DNS servers to use for queries instead of the system's default resolvers.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br>


title: DESCRIPTION
content:
<i>dnsenum</i> is a powerful command-line tool designed to automate the process of DNS enumeration, a critical step in the reconnaissance phase of penetration testing and security assessments. It gathers a wide array of DNS-related information about a target domain, helping security professionals map out an organization's network infrastructure based on publicly available DNS data.<br><br>Its functionalities include retrieving Name Server (NS) and Mail Exchanger (MX) records, attempting Zone Transfers, brute-forcing subdomains and hostnames from a dictionary, performing reverse lookups of IP ranges, and even querying search engines for additional subdomains. By consolidating various enumeration techniques, <i>dnsenum</i> provides a comprehensive overview of a domain's DNS footprint, which can reveal potential vulnerabilities or misconfigurations.


title: CAVEATS
content:
<ul><li><b>Zone Transfers</b>: While a core feature, successful zone transfers are rare on properly configured modern DNS servers, as they represent a significant information leak.</li><li><b>Noisy Tool</b>: <i>dnsenum</i> can generate a large number of DNS queries, especially with large wordlists for subdomain brute-forcing, making it potentially noisy and detectable by network monitoring systems.</li><li><b>Wordlist Quality</b>: The effectiveness of subdomain brute-forcing heavily depends on the quality and comprehensiveness of the provided wordlist.</li><li><b>Legal and Ethical Use</b>: Always ensure you have explicit permission to perform DNS enumeration on a target domain, as unauthorized scanning may be illegal or considered hostile.</li><li><b>Rate Limiting</b>: DNS servers may implement rate limiting, which can cause queries to fail or slow down the enumeration process. Using the <b>--delay</b> option can help mitigate this.</li></ul>


title: COMMON USAGE SCENARIOS
content:
<i>dnsenum</i> is primarily used during the reconnaissance phase of a security assessment to:<br><ul><li>Discover subdomains and hostnames associated with a target organization.</li><li>Identify mail servers (MX records) and their associated IP addresses.</li><li>Map out network segments and potential internal IPs through reverse DNS lookups.</li><li>Uncover potential misconfigurations, such as open DNS zone transfers, that could lead to information disclosure.</li><li>Gather publicly available DNS data to build a comprehensive picture of an organization's digital footprint.</li></ul>


title: ETHICAL HACKING CONTEXT
content:
In ethical hacking, <i>dnsenum</i> provides valuable passive intelligence before active scanning or exploitation. It helps in understanding the target's infrastructure without directly interacting with their services beyond DNS queries. Always ensure you have proper authorization and adhere to ethical guidelines and legal frameworks when using <i>dnsenum</i> or any other reconnaissance tool.


title: HISTORY
content:
<i>dnsenum</i> has been a staple in the penetration testing and security auditing toolkit for many years, often included in security-focused Linux distributions like Kali Linux. Developed as a Perl script, its longevity is attributed to its portability and the comprehensive consolidation of various DNS enumeration techniques into a single, automated workflow. Its development has consistently focused on providing security professionals with a robust and versatile tool for gathering critical DNS intelligence during the reconnaissance phase.


title: SYNOPSIS
content:
To use <i>istat</i>, you must first invoke <i>debugfs</i> on the target filesystem device.<br><br><b><i>debugfs</i></b> <<i>filesystem_device</i>><br><i>debugfs</i><b>:</b> <b><i>istat</i></b> <<i>inode_number</i>>


title: PARAMETERS
content:
<b><<i>inode_number</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The numerical identifier of the inode whose detailed information is to be displayed. This number can often be obtained using commands like <b>ls -i</b> or <b>ncheck</b> within <i>debugfs</i>.<br><br>


title: DESCRIPTION
content:
<i>istat</i> is an interactive command within the <i>debugfs</i> utility, which is part of the <i>e2fsprogs</i> suite. It is designed to examine and modify the state of Ext2, Ext3, and Ext4 filesystems. The primary function of the <i>istat</i> command is to display comprehensive, low-level details about a specific inode. This includes crucial metadata such as the inode number, file mode (type and permissions), user and group IDs, file size, link count, block count, creation time (ctime), access time (atime), modification time (mtime), deletion time (dtime), and direct/indirect block pointers. It is an indispensable tool for filesystem debugging, data recovery, and forensic analysis, offering insights into the on-disk structure of files and directories that are not typically accessible through standard utilities like <b>ls -i</b> or <b>stat</b>.


title: CAVEATS
content:
<i>istat</i> requires <b>root</b> privileges to run <i>debugfs</i> on a device.<br>It is highly recommended to use <i>debugfs</i>, and consequently <i>istat</i>, on an unmounted filesystem or one mounted read-only to prevent filesystem corruption.<br>The command is specifically designed for <b>Ext2</b>, <b>Ext3</b>, and <b>Ext4</b> filesystems.<br><i>istat</i> is an <i>interactive</i> command executed within the <i>debugfs</i> prompt, not a standalone shell command.


title: INODE STRUCTURE EXAMINATION
content:
<i>istat</i> provides a direct dump of the inode's on-disk structure, including the crucial block pointers that map logical file blocks to physical disk blocks. This is invaluable for tracing where file data resides, particularly in cases of fragmented files or direct block access for recovery.


title: FILESYSTEM DEBUGGING AND FORENSICS
content:
By exposing raw inode metadata, <i>istat</i> is an essential tool for advanced filesystem debugging, forensic analysis, and data recovery efforts. It helps in understanding the root cause of filesystem corruption, identifying orphaned inodes, or recovering data from damaged files.


title: HISTORY
content:
<i>debugfs</i>, and by extension its <i>istat</i> command, is a foundational component of the <i>e2fsprogs</i> package, a suite of utilities for the Ext2/3/4 filesystems. Developed primarily by Theodore Ts'o, <i>e2fsprogs</i> has been central to Linux filesystem management since the early 1990s. <i>istat</i> has been a core interactive command within <i>debugfs</i> from its inception, providing fundamental capabilities for low-level inode inspection. Its design and purpose have remained remarkably consistent over the years, serving as a critical diagnostic and recovery tool for filesystem developers and administrators.


title: PARAMETERS
content:
<b><b>-o</b> <i>&lt;output_filename&gt;</i> or <i>&lt;output-file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output filename. The output format is typically inferred from the file extension.<br><br><b><b>-q</b> <i>&lt;quality&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output quality for lossy formats (e.g., JPEG), ranging from 0 (lowest) to 100 (highest).<br><br><b><b>-d</b> <i>&lt;depth&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output bit depth (e.g., 8, 10, 12).<br><br><b><b>-c</b> <i>&lt;color_profile&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output color profile (e.g., <i>srgb</i>, <i>hdr</i>, <i>p3</i>).<br><br><b><b>-f</b> <i>&lt;frame_index&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decodes a specific frame from an animated <i>AVIF</i> image (0-indexed).<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decodes all frames of an animated <i>AVIF</i> into separate, sequentially numbered files.<br><br><b><b>--codec</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>AV1</i> decoder backend to use (e.g., <i>aom</i>, <i>rav1e</i>), if multiple are available.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing decoding progress and details.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the command's help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br>


title: DESCRIPTION
content:
<b>avifdec</b> is a command-line utility from the <i>libavif</i> library designed to decode <i>AVIF</i> (AV1 Image File Format) images. It takes an <i>AVIF</i> input file and converts it into a specified output image format, such as <i>PNG</i>, <i>JPG</i>, <i>BMP</i>, <i>PPM</i>, or a <i>Y4M</i> video stream for animated <i>AVIFs</i>.<br><br>The tool offers various options to control the decoding process, including output quality, bit depth, color profile, and selection of specific frames for animated sequences. It's an essential utility for developers and users working with <i>AVIF</i> files, providing flexibility for scripting, batch processing, and integration into image workflows.


title: CAVEATS
content:
Decoding performance can vary significantly based on the complexity of the <i>AVIF</i> image, the chosen <i>AV1</i> decoder backend, and system resources. Animated <i>AVIFs</i> require specific output handling (e.g., <i>Y4M</i> for video stream or <b>-f</b>/<b>-N</b> for individual frames). Compatibility with all <i>AVIF</i> features may depend on the <i>libavif</i> library version.


title: OUTPUT FORMATS
content:
<b>avifdec</b> supports various common output image formats, including <i>PNG</i>, <i>JPG</i>, <i>BMP</i>, and <i>PPM</i>. For animated <i>AVIFs</i>, it can output a <i>Y4M</i> video stream. The desired output format is typically determined by the file extension of the specified <i>&lt;output-file&gt;</i>.


title: ANIMATED AVIF HANDLING
content:
For animated <i>AVIF</i> images, <b>avifdec</b> provides specific options. Users can decode a single frame using the <b>-f</b> <i>&lt;frame_index&gt;</i> option, or decode all frames into separate, sequentially named image files using the <b>-N</b> option. This flexibility is key for processing motion graphics or image sequences.


title: HISTORY
content:
The <b>avifdec</b> utility is an integral part of the <i>libavif</i> library, which emerged alongside the development and standardization of the <i>AVIF</i> image format. <i>AVIF</i> leverages the highly efficient <i>AV1</i> video codec for superior image compression, HDR support, and wide color gamut. Developed by <i>AOMedia</i>, <i>libavif</i> and its tools became crucial for adopting and working with this modern image format as it gained traction for its performance advantages over older formats like <i>JPEG</i>.


title: SYNOPSIS
content:
<i>rhythmbox [OPTION...] [FILE...]</i><br><i>Launches the Rhythmbox music player application, optionally opening specific files or performing immediate actions.</i>


title: PARAMETERS
content:
<b><i>--help, -h</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the command's help message, listing available options.</i><br><br><b><i>--help-all</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows all help options, including GTK+ specific ones.</i><br><br><b><i>--help-gtk</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows GTK+ Toolkit options specific to graphical applications.</i><br><br><b><i>--debug, -d</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables detailed debugging output in the terminal, useful for troubleshooting.</i><br><br><b><i>--no-daemon</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents Rhythmbox from running in daemon mode (background service), causing it to exit when the window is closed.</i><br><br><b><i>--no-present</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents the Rhythmbox window from automatically being raised to the front upon launch or action.</i><br><br><b><i>--play</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Starts playback of the current song or resumes paused playback. If Rhythmbox is not running, it will launch and then play.</i><br><br><b><i>--pause</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Pauses the currently playing song. If Rhythmbox is not running, it will launch paused.</i><br><br><b><i>--next</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Skips to the next song in the current playlist or queue.</i><br><br><b><i>--previous</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Skips to the previous song in the current playlist or queue.</i><br><br><b><i>--stop</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Stops the current playback.</i><br><br><b><i>--toggle-play</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Toggles between play and pause states.</i><br><br><b><i>--volume-up</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the playback volume.</i><br><br><b><i>--volume-down</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Decreases the playback volume.</i><br><br><b><i>--set-volume=VOLUME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the playback volume to a specific level, where VOLUME is a value between 0 and 10.</i><br><br><b><i>--quit</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Quits the running Rhythmbox application.</i><br><br><b><i>--minimize</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Minimizes the Rhythmbox application window to the taskbar or dock.</i><br><br><b><i>--hide</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Hides the Rhythmbox application window, making it invisible but still running.</i><br><br><b><i>--show</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a hidden or minimized Rhythmbox application window.</i><br><br><b><i>--open-location=LOCATION</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Opens and plays media from a specified URI (e.g., a web radio stream or local file path).</i><br><br><b><i>--enqueue=FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Adds a specified media FILE to the current play queue without immediately starting playback.</i><br><br><b><i>--clear-queue</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Clears all songs from the current play queue.</i><br><br><b><i>--version, -v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the installed version of Rhythmbox.</i><br><br><b><i>--display=DISPLAY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the X display to use for the application, useful in multi-display or remote X environments.</i><br><br><b><i>[FILE...]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>One or more media files specified by their paths. Rhythmbox will open and enqueue these files upon launch.</i><br><br>


title: DESCRIPTION
content:
<i>Rhythmbox is a free and open-source audio player designed for the GNOME desktop environment. Modeled after Apple's iTunes, it aims to provide an easy-to-use application for managing and playing digital music. It supports a wide array of audio formats through GStreamer, including MP3, Ogg Vorbis, FLAC, and WAV. Rhythmbox excels at managing large music libraries, allowing users to organize music by artist, album, genre, and more. Key features include playlist creation, internet radio streaming, podcast subscriptions, and audio CD playback/ripping. It also supports integration with various portable music devices and comes with a robust plugin architecture, extending its functionality to include features like Last.fm scrobbling, MPRIS D-Bus integration, and web remote control.</i>


title: CAVEATS
content:
<i>While the <b>rhythmbox</b> command itself accepts playback control options (--play, --next, --quit, etc.), using <b>rhythmbox-client</b> is generally recommended for controlling an already running instance of Rhythmbox, as it directly communicates with the running daemon without launching a new GUI instance.</i>


title: <I>CLIENT-SERVER MODEL AND D-BUS INTEGRATION</I>
content:
<i>Rhythmbox operates primarily as a daemon (background service) that can be controlled via its graphical interface or command-line tools. This is facilitated by D-Bus, an inter-process communication system, which allows <b>rhythmbox-client</b> and other applications to interact with a running Rhythmbox instance. This client-server model ensures efficient control and integration within the desktop environment.</i>


title: <I>PLUGIN ARCHITECTURE</I>
content:
<i>A significant strength of Rhythmbox is its extensive plugin system. This allows third-party developers to extend its functionality, adding support for new features like lyrics display, remote control via a web browser, MPRIS support for media keys, integration with online music services, and more.</i>


title: HISTORY
content:
<i>Rhythmbox was first released in 2003, making it a long-standing component of the GNOME desktop. It was developed to integrate deeply with the GNOME environment and its multimedia frameworks like GStreamer. Over the years, it has evolved significantly, adding support for various online services, portable devices, and extensive plugin capabilities, becoming a staple music player for many Linux distributions.</i>


title: SYNOPSIS
content:
<b>repo</b> <i><command></i> [<i><options></i>] [<i><arguments></i>]<br><br>Common <i><command></i>s include:<br><b>init</b>: Initializes <b>repo</b> in the current directory.<br><b>sync</b>: Downloads new changes and updates working files.<br><b>forall</b> (or <b>for-all</b>): Runs a shell command on each project.<br><b>upload</b>: Uploads changes for code review.<br><b>status</b>: Shows the working tree status.<br><b>diff</b>: Shows changes between the working tree and the staging area.<br><b>start</b>: Starts a new branch for development.


title: PARAMETERS
content:
<b><i><command></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific <b>repo</b> operation to perform (e.g., <b>init</b>, <b>sync</b>, <b>forall</b>).<br><br><b>-u <i><URL></i> (for init)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the URL of the manifest repository.<br><br><b>-b <i><BRANCH></i> (for init)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific manifest branch.<br><br><b>--depth=<i><NUM></i> (for init or sync)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a shallow clone with a specified commit depth.<br><br><b>-j<i><NUM></i> (for sync)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <b>sync</b> jobs in parallel (number of jobs).<br><br><b>--force-sync (for sync)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrites local changes if a project requires an update.<br><br><b>--current-branch (for sync)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only syncs the current branch of projects.<br><br><b>-c (for sync)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Alias for <b>--current-branch</b>.<br><br><b>-P <i><PROJECT></i> (for forall)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the command to projects matching the specified path (glob pattern).<br><br><b>-c <i><COMMAND></i> (for forall)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The shell command to execute for each project.<br><br><b>--no-verify (for upload)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the hook verification step during upload.<br><br><b>--republish (for upload)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Republishes the last change (used for re-uploading).<br><br>


title: DESCRIPTION
content:
The <b>repo</b> command is a tool built on top of Git that helps manage multiple Git repositories simultaneously. Primarily used in large-scale software projects like the Android Open Source Project (AOSP), it simplifies the process of cloning, updating, and interacting with many independent Git repositories that form a single cohesive project. Rather than manually cloning and managing dozens or hundreds of individual Git repos, <b>repo</b> uses a 'manifest' file (typically `default.xml` within the <i>.repo/manifests</i> directory) to define the set of repositories, their locations, and their branch configurations. It provides a unified interface to perform operations across all or a subset of these repositories, such as syncing them to a specific state, executing commands in each, or uploading changes for review. <b>repo</b> acts as an orchestrator, automating repetitive Git tasks for complex multi-repository environments.


title: CAVEATS
content:
The <b>repo</b> command is not a standard Linux system utility and must be installed separately, typically by downloading the script and adding it to your PATH. It is specifically designed for orchestrating large numbers of Git repositories and might be an overkill for simpler projects managed by a single Git repository. Its behavior is heavily dependent on the 'manifest' file, which defines the project structure and repository relationships. Misconfiguration of the manifest can lead to unexpected behavior during synchronization or other operations.


title: MANIFEST FILES
content:
At the core of <b>repo</b>'s functionality are 'manifest files', which are XML files that define the structure of the multi-repository project. These files specify which Git repositories to clone, their remote URLs, their local paths within the working directory, and which branches or revisions to track. <b>repo</b> uses this manifest to orchestrate all its operations, ensuring consistency across all managed repositories.


title: INSTALLATION
content:
<b>repo</b> is typically installed by downloading a small Python script (named 'repo') from its official repository (e.g., AOSP Git) and placing it in a directory included in the system's PATH environment variable, such as <code>~/bin/</code>. It requires a Python interpreter to run.


title: HISTORY
content:
The <b>repo</b> tool was originally developed by Google to manage the source code for the Android Open Source Project (AOSP), which consists of a vast number of Git repositories. It was created to simplify the process for developers to download, update, and contribute to the Android codebase, addressing the challenges of coordinating changes across numerous interdependent components. Released as an open-source tool, it has since been adopted by other large projects facing similar multi-repository management complexities, providing a robust solution for large-scale distributed development.


title: SYNOPSIS
content:
The primary command-line interface for Metasploit is <i>msfconsole</i>.<br><br><b>msfconsole</b> [<i>options</i>]


title: PARAMETERS
content:
<b>-q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <i>msfconsole</i> in quiet mode, suppressing the startup banner and any introductory messages.<br><br><b>-r <resource_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes commands from a specified resource file upon startup. This is useful for automating common tasks or setting up specific environments.<br><br><b>-x <command1;command2;...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes one or more Metasploit commands specified as a string upon startup. Commands are separated by semicolons.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <i>msfconsole</i> without connecting to the database. Useful if the database is not configured or not needed.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the Metasploit Framework and then exits.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the help message for <i>msfconsole</i>, listing available options and their descriptions.<br><br>


title: DESCRIPTION
content:
The <b>Metasploit Framework</b> is a widely used open-source penetration testing tool that helps security professionals identify, exploit, and validate vulnerabilities. It is not a single Linux command but a comprehensive platform comprising a suite of tools and a powerful console interface. Its primary interface is <i>msfconsole</i>, which allows users to interact with the framework's various components.<br><br>Metasploit provides a vast collection of modules, including <i>exploits</i> (code that targets a specific vulnerability), <i>payloads</i> (code executed on a target after successful exploitation), <i>auxiliary modules</i> (scanners, fuzzers, denial-of-service tools), and <i>post-exploitation modules</i> (tools for gaining further access or information after initial compromise). It streamlines the process of vulnerability research, exploit development, and security assessment, making it an indispensable tool for ethical hackers, red teams, and security researchers.


title: CAVEATS
content:
Metasploit is an extremely powerful tool that, if misused, can cause significant damage. It is crucial to use it only in authorized and ethical contexts, such as penetration testing with explicit permission from the target's owner. Misuse can lead to legal consequences. Users should have a strong understanding of networking, operating systems, and security concepts to wield Metasploit effectively and responsibly.


title: METASPLOIT MODULES
content:
The strength of Metasploit lies in its modular architecture. Key module types include:<br><b>Exploits:</b> Code that targets a specific vulnerability on a system.<br><b>Payloads:</b> Code that is executed on the target system after a successful exploit (e.g., a reverse shell, VNC session).<br><b>Auxiliary:</b> Tools for scanning, discovery, fuzzing, and other non-exploitative tasks.<br><b>Post:</b> Modules used after initial access to gather more information, escalate privileges, or pivot to other systems.


title: DATABASE INTEGRATION (MSFDB)
content:
Metasploit can integrate with a PostgreSQL database to store results from scans, exploits, and other operations, making it easier to manage large engagements. The <i>msfdb</i> command-line utility is used to initialize, start, stop, and manage the database service for Metasploit, for example, <i>msfdb init</i> to set up the database for the first time.


title: HISTORY
content:
The Metasploit Project was created by H. D. Moore in 2003 as a portable network security tool. It quickly gained popularity as an open-source project written in Perl. In 2007, it was entirely rewritten in Ruby. In 2009, Rapid7, a leading cybersecurity company, acquired the Metasploit Project, further investing in its development and integrating it into their commercial products while maintaining the open-source Metasploit Framework.


title: PARAMETERS
content:
<b><b>-I</b> <I>directory</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds <I>directory</I> to the list of directories to be searched for include files.<br><br><b><b>-D</b> <I>macro[=value]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a preprocessor <I>macro</I>, optionally with a specific <I>value</I>.<br><br><b><b>-U</b> <I>macro</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Undefines a preprocessor <I>macro</I>.<br><br><b><b>-config</b> <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads configuration settings from the specified <I>file</I>.<br><br><b><b>-strict</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a stricter set of checks, suitable for high-assurance code, covering many common vulnerabilities.<br><br><b><b>-weak</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables many checks, useful for quickly analyzing less critical or legacy code.<br><br><b><b>-nullwarn</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports potential null pointer dereferences.<br><br><b><b>-uninit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detects uses of uninitialized storage locations.<br><br><b><b>-retvalother</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Warns if a non-void function's return value is ignored.<br><br><b><b>-paramuse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports function parameters that are declared but never used.<br><br><b><b>-unreachable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies and reports unreachable code segments.<br><br><b><b>-fullprint</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes error messages to print full pathnames of files.<br><br><b><b>-stats</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints statistics about the analysis run, including the number of warnings and lines analyzed.<br><br><b><b>-warn</b> <I>option</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls specific warning classes (e.g., <B>-warn -null</B> to disable null warnings). Can be used multiple times.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of command-line options and configuration flags.<br><br>


title: DESCRIPTION
content:
<b>Splint</b>, short for <I>Secure Programming Lint</I> and formerly known as <I>LCLint</I>, is a robust static analysis tool designed to help developers identify a wide range of potential errors and security vulnerabilities in C programs. It works by analyzing source code without actually executing it, checking for common programming mistakes such as type inconsistencies, memory management errors (e.g., null pointer dereferences, memory leaks), uninitialized variables, dangerous use of library functions, and format string vulnerabilities.<br><br>Splint's effectiveness is significantly enhanced by the use of annotations embedded within the C code, which provide additional information about function contracts, data properties, and variable constraints, allowing for more precise and powerful checks. It offers extensive configurability through command-line options, enabling users to tailor the level of detail and types of checks performed, making it a valuable tool for improving code quality, reliability, and security during the development process.


title: CAVEATS
content:
While powerful, <B>Splint</B> can sometimes produce <I>false positives</I>, requiring manual review of reported issues. Its maximum effectiveness is achieved when source code is properly <I>annotated</I>, which can add an initial development overhead, especially for legacy projects. <B>Splint</B> is primarily designed for C programs and does not fully support C++. It's also important to note that its development and maintenance have been less active in recent years compared to some other modern static analysis tools.


title: ANNOTATION SYSTEM
content:
A key feature of <B>Splint</B> is its extensive <I>annotation system</I>. Developers can add special comments or types to their C code to provide <B>Splint</B> with more detailed information about function behaviors, variable properties, memory ownership, and other constraints. These annotations, such as <B>/*@null@*/</B> or <B>/*@owned@*/</B>, allow <B>Splint</B> to perform much more sophisticated and precise checks, reducing false positives and identifying more subtle bugs that would otherwise be missed.


title: CONFIGURATION FILES
content:
<B>Splint</B>'s behavior is highly configurable, not only via command-line options but also through <I>configuration files</I>. Users can create <B>.splintrc</B> files in their home directory, project directories, or system-wide, to define default options, suppress specific warnings, or set up custom checking rules. This allows for consistent analysis settings across a project or organization without needing to specify all options on the command line every time.


title: HISTORY
content:
<B>Splint</B> was originally developed by <I>David Evans</I> at the University of Virginia, first released as <B>LCLint</B> (Lint for Checking Properties of C Programs) in 1999. It was later renamed to <I>Secure Programming Lint</I>, or <B>Splint</B>, around 2000, reflecting its strong focus on identifying security vulnerabilities in C code. As an open-source project, it gained popularity in academic research and certain industry sectors for its rigorous static analysis capabilities. While foundational in its approach, the project's active development has significantly slowed in recent years, though it continues to be available and used.


title: PARAMETERS
content:
<b><b>-b</b>, <b>--boot</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute commands in boot mode. This typically processes commands that set up the initial configuration from a boot-time script.<br><br><b><b>-c</b>, <b>--command</b> <i>&lt;command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a single command string and then exits. Useful for scripting automated configuration or status checks.<br><br><b><b>-d</b>, <b>--daemon</b> <i>&lt;daemon_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to a specific routing daemon (e.g., <i>zebra</i>, <i>bgpd</i>, <i>ospfd</i>) instead of the default <i>zebra</i>.<br><br><b><b>-e</b>, <b>--enable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enters privileged EXEC mode directly upon startup, bypassing the need to type `enable`.<br><br><b><b>-f</b>, <b>--file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes commands from the specified file. This is commonly used for loading configuration files or running batches of commands.<br><br><b><b>-M</b>, <b>--no-pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the pager for output. By default, long outputs are paginated (like `more` or `less`).<br><br><b><b>-u</b>, <b>--user</b> <i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authenticates as the specified username. This is relevant when <b>vtysh</b> is configured to use system user accounts for authentication.<br><br><b><b>--show-vtysh-config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the path to the <b>vtysh</b> configuration file.<br><br><b><b>-?</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>vtysh</b> version information and exits.<br><br>


title: DESCRIPTION
content:
<b>vtysh</b> (pronounced "vee-tish") is a command-line interface (CLI) shell designed to provide a unified configuration and operational interface for the FRRouting (FRR) suite of routing protocols. It originated with the Quagga routing software and was later adopted and further developed by the FRR project.<br><br>Rather than configuring each routing daemon (like Zebra, OSPF, BGP, RIP, ISIS) separately, <b>vtysh</b> allows administrators to manage all aspects of the router's configuration from a single, consistent interface. Its command structure is heavily inspired by Cisco IOS and Juniper JUNOS, making it familiar to network engineers.<br><br>It supports various modes, including user EXEC mode for basic commands, privileged EXEC mode for show commands and configuration entry, and various configuration modes for specific features (e.g., global configuration, interface configuration, router configuration for protocols). <b>vtysh</b> simplifies the management of complex routing setups by abstracting the underlying daemon interactions into a single, intuitive CLI.


title: CAVEATS
content:
<ul><li><b>vtysh</b> relies on the FRR routing daemons (e.g., <i>zebra</i>, <i>ospfd</i>, <i>bgpd</i>) being actively running in the background. Without them, <b>vtysh</b> cannot communicate or apply configurations.</li><li>Configuration changes made through <b>vtysh</b> are often kept in running memory by the daemons. To make them persistent across reboots, an explicit save command (e.g., `write memory` or `copy running-config startup-config`) must be executed.</li><li>Proper permissions are required. <b>vtysh</b> usually needs to be run as root or by a user belonging to a specific group (e.g., <i>frr</i> or <i>quagga</i>) to interact with the daemons' control sockets.</li></ul>


title: CLI MODES
content:
<i>vtysh</i> operates in several hierarchical modes similar to commercial router CLIs:<br><ul><li><i>User EXEC Mode</i> (e.g., `&gt;` prompt): For basic commands like `show version`.</li><li><i>Privileged EXEC Mode</i> (e.g., `#` prompt): Accessed via `enable`, for more powerful `show` commands and entry into configuration mode.</li><li><i>Global Configuration Mode</i> (e.g., `(config)#` prompt): Entered via `configure terminal`, for global settings.</li><li><i>Specific Configuration Modes</i> (e.g., `(config-if)#`, `(config-router)#`): For configuring interfaces, routing protocols, etc.</li></ul>


title: CONFIGURATION PERSISTENCE
content:
Unlike some systems where changes are automatically saved, <b>vtysh</b> and FRR daemons typically require an explicit command to save the running configuration to a startup configuration file. Common commands include `write memory` or `copy running-config startup-config` within the privileged EXEC mode to ensure configurations persist after a system reboot.


title: HISTORY
content:
<b>vtysh</b> originated as part of the Quagga routing suite, providing a Cisco-like CLI experience for open-source routing daemons. When the development of Quagga slowed, the project was forked and continued as FRRouting (FRR). <b>vtysh</b> was consequently inherited by FRR and remains its primary command-line interface, undergoing continuous development and enhancements to support new features and protocols within the FRR ecosystem. Its design was driven by the need for a unified, user-friendly interface that could manage complex routing configurations across multiple daemons from a single point.


title: PARAMETERS
content:
<b>AUX_FILE_BASENAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The base name of the <I>.aux</I> file generated by <I>LaTeX</I>, without the <I>.aux</I> extension. <br>Example: For <I>mydoc.aux</I>, use <I>mydoc</I>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br>


title: DESCRIPTION
content:
The <b>bibtex</b> command is a bibliography processing tool used primarily with <I>LaTeX</I> documents. It automates the creation of bibliographies and citation lists, extracting citation information from a <I>.aux</I> file (generated by <I>LaTeX</I>), looking up the corresponding entries in <I>.bib</I> database files, and formatting them according to a specified <I>.bst</I> bibliography style file. The result is a <I>.bbl</I> file containing the formatted bibliography, which is then included in the <I>LaTeX</I> document during subsequent compilations. This process ensures consistent and automated bibliography management, freeing authors from manual formatting.


title: CAVEATS
content:
Requires multiple <I>LaTeX</I> and <I>bibtex</I> runs for a fully typeset bibliography. <br>Limited direct support for modern Unicode and advanced sorting (often handled by <I>biber</I> for <I>biblatex</I>). <br>Syntax errors in <I>.bib</I> files can be obscurely reported, leading to debugging challenges.


title: TYPICAL WORKFLOW
content:
To generate a bibliography, the document typically requires several compilation steps: <br>1. Run <I>latex</I> (or <I>pdflatex</I>) once to generate the <I>.aux</I> file with citation information. <br>2. Run <I>bibtex</I> on the <I>.aux</I> file to process the bibliography data and create the <I>.bbl</I> file. <br>3. Run <I>latex</I> (or <I>pdflatex</I>) one or two more times to incorporate the <I>.bbl</I> file and resolve all citations and page references.


title: KEY FILE TYPES
content:
<I>.aux</I>: Auxiliary file generated by <I>LaTeX</I>, containing citation keys and information. <br><I>.bib</I>: The bibliography database file, storing citation entries (e.g., articles, books) in BibTeX format. <br><I>.bst</I>: Bibliography style file, defining the formatting rules for citations and the final bibliography list. <br><I>.bbl</I>: The generated bibliography file, containing the formatted bibliography, which <I>LaTeX</I> includes directly. <br><I>.blg</I>: Log file from <I>bibtex</I>, useful for debugging issues with bibliography processing.


title: HISTORY
content:
Developed by <I>Oren Patashnik</I> in 1985 as a companion to <I>LaTeX</I>, <b>bibtex</b> quickly became an essential tool for academic writing. It revolutionized bibliography management by separating content (<I>.bib</I>) from style (<I>.bst</I>), making it easier to maintain consistent citation formats across documents. While newer tools like <I>biber</I> have emerged to address modern requirements, <I>bibtex</I> remains widely used and is an enduring part of the <I>LaTeX</I> ecosystem.


title: SYNOPSIS
content:
<I>makeblastdb</I> <B>-in</B> <I>&lt;input_file&gt;</I> <B>-out</B> <I>&lt;database_name&gt;</I> <B>-dbtype</B> <I>&lt;nucl|prot&gt;</I> [options]


title: PARAMETERS
content:
<b>-in <input_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input sequence file(s) to be formatted into a database. This file typically contains sequences in FASTA format.<br><br><b>-out <database_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the base name for the output database files. Multiple files with this prefix and different extensions will be created.<br><br><b>-dbtype <nucl|prot></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of sequences in the input file: 'nucl' for nucleotide sequences or 'prot' for protein sequences. This is a crucial parameter.<br><br><b>-title <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a descriptive title to the database, which is displayed by BLAST programs when searching.<br><br><b>-parse_seqids</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs makeblastdb to parse sequence IDs to allow for easier retrieval of sequences and associated information later.<br><br><b>-hash_index</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a hash index for the database, which can speed up certain types of searches, especially those involving exact ID lookups.<br><br><b>-long_seqids</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows sequence IDs longer than the default 32 characters to be used. Useful for databases with very descriptive sequence identifiers.<br><br><b>-taxid_map <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a mapping file between sequence IDs and NCBI taxonomy IDs, enabling taxonomic filtering in subsequent BLAST searches.<br><br><b>-logfile <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs the command's output and error messages to a specified log file.<br><br><b>-max_file_size <bytes></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum size for individual database files. Useful for very large databases that might exceed file system limits, resulting in multiple database parts.<br><br>


title: DESCRIPTION
content:
makeblastdb is an essential utility within the NCBI BLAST (Basic Local Alignment Search Tool) suite. Its primary function is to transform raw sequence data, typically in FASTA format, into specially indexed and formatted databases. These databases are highly optimized for rapid searching by various BLAST programs (like <b>blastn</b>, <b>blastp</b>, <b>tblastn</b>, etc.). <br><br>Without a database created by <b>makeblastdb</b>, BLAST programs cannot efficiently search against large collections of sequences. It pre-processes the sequences, creating index files (e.g., <i>.nhr</i>, <i>.nin</i>, <i>.nsq</i> for nucleotide databases, or <i>.phr</i>, <i>.pin</i>, <i>.psq</i> for protein databases) that allow for quick retrieval and comparison of sequences. This pre-computation significantly reduces the time required for subsequent sequence similarity searches, making BLAST an incredibly powerful tool for bioinformatics.


title: CAVEATS
content:
<B>Input Format:</B> The input file must be in a format supported by BLAST, primarily FASTA. Incorrectly formatted files can lead to errors or incomplete databases.<br><B>Disk Space:</B> Creating databases, especially from large genomic or proteomic datasets, requires substantial disk space, often several times the size of the input FASTA file due to indexing.<br><B>Memory Usage:</B> For very large input files, <b>makeblastdb</b> can consume significant RAM during the indexing process.<br><B>dbtype is Critical:</B> Mismatching the <b>-dbtype</b> (nucleotide vs. protein) with the actual sequence content will result in an unusable database and incorrect BLAST search results.


title: DATABASE FILES CREATED
content:
When you run <I>makeblastdb</I>, it generates several files with specific extensions based on the chosen <I>-out</I> name and <I>-dbtype</I>. For nucleotide databases, you'll typically see <I>.nhr</I> (header), <I>.nin</I> (index), and <I>.nsq</I> (sequence) files. For protein databases, these are <I>.phr</I>, <I>.pin</I>, and <I>.psq</I> respectively. These files collectively form the searchable BLAST database.


title: PERFORMANCE CONSIDERATIONS
content:
The time taken to create a database can vary significantly based on the input file size, system hardware (CPU, RAM, I/O speed), and the number of sequence IDs. For very large datasets, using fast storage (like SSDs) can significantly improve the database creation time.


title: HISTORY
content:
The <I>makeblastdb</I> utility is an integral part of the NCBI BLAST suite, which has been a cornerstone of bioinformatics since its initial publication in 1990. Prior to <I>makeblastdb</I>, a similar utility called <I>formatdb</I> was used for creating BLAST databases. <I>makeblastdb</I> was introduced as an improved, more robust, and feature-rich replacement for <I>formatdb</I>, offering better handling of large datasets, improved indexing, and support for newer database versions. Its continuous development reflects the ongoing need for efficient sequence comparison in the rapidly expanding world of biological data.


title: SEE ALSO
content:
<I>blastn</I>(1), <I>blastp</I>(1), <I>tblastn</I>(1), <I>blastx</I>(1), <I>formatdb</I>(1), <I>fasta</I>(1)


title: SYNOPSIS
content:
<b>blastx</b> <br>&nbsp;&nbsp;&nbsp;&nbsp;<b>-query</b> <i>&lt;file&gt;</i> <br>&nbsp;&nbsp;&nbsp;&nbsp;<b>-db</b> <i>&lt;database&gt;</i> <br>&nbsp;&nbsp;&nbsp;&nbsp;[<b>-out</b> <i>&lt;file&gt;</i>] <br>&nbsp;&nbsp;&nbsp;&nbsp;[<b>-evalue</b> <i>&lt;value&gt;</i>] <br>&nbsp;&nbsp;&nbsp;&nbsp;[<b>-outfmt</b> <i>&lt;format_spec&gt;</i>] <br>&nbsp;&nbsp;&nbsp;&nbsp;[<i>options...</i>]


title: PARAMETERS
content:
<b><b>-query</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specifies the input file containing the nucleotide query sequence(s) in FASTA or other supported formats.<br><br><b><b>-db</b> <i>&lt;database&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Defines the target protein sequence database against which the query will be searched. This database must be pre-formatted using <i>makeblastdb</i>.<br><br><b><b>-out</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specifies the file name for saving the BLAST results. If not provided, results are printed to standard output (stdout).<br><br><b><b>-evalue</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Sets the statistical significance threshold for reporting matches. Hits with an E-value greater than this threshold are not reported. A smaller E-value indicates a more significant match.<br><br><b><b>-outfmt</b> <i>&lt;format_spec&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Determines the format of the output. Common values include 0 (pairwise), 5 (XML), 6 (tabular), 7 (tabular with comments), and 11 (BLAST archive format). Custom formats can be specified using a list of field identifiers.<br><br><b><b>-num_threads</b> <i>&lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specifies the number of CPU threads to use for the search, allowing for parallel execution and faster results on multi-core systems.<br><br><b><b>-max_target_seqs</b> <i>&lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Limits the maximum number of aligned sequences (hits) to be reported per query sequence. Only the best hits, based on E-value, are kept.<br><br><b><b>-html</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Produces BLAST results in an HTML format, suitable for viewing in a web browser.<br><br>


title: DESCRIPTION
content:
<i>blastx</i> is a fundamental program within the NCBI BLAST+ (Basic Local Alignment Search Tool) suite. Its primary function is to compare a nucleotide query sequence (e.g., DNA or RNA) against a protein sequence database. The core mechanism involves conceptually translating the nucleotide query into all six possible reading frames (three in the forward direction and three on the reverse complementary strand). Each of these translated protein sequences is then used as a query to perform a protein-protein alignment search against the specified protein database.<br><br>This approach is invaluable for tasks such as identifying potential protein-coding regions within a novel nucleotide sequence, finding homologous proteins when only genomic or transcriptomic DNA/RNA data is available, and performing gene prediction. The output typically provides detailed alignment information, including statistical significance (E-value), bit scores, and sequence identity, allowing users to infer the function and evolutionary relationships of their query sequence based on similarities to known proteins in the database.


title: CAVEATS
content:
<ul><li><i>blastx</i> requires a pre-indexed protein database, which must be created using the <i>makeblastdb</i> command.</li><li>The translation of all six reading frames can be computationally intensive, especially for very long nucleotide queries, potentially leading to longer execution times.</li><li>The accuracy of the search results is highly dependent on the quality of the query sequence and the comprehensiveness and quality of the protein database being searched.</li><li>Frameshifts or sequencing errors within the query DNA can lead to incorrect or truncated amino acid translations, potentially causing true protein homologs to be missed or incorrectly identified.</li></ul>


title: OUTPUT INTERPRETATION
content:
Understanding the output of <i>blastx</i> is crucial for deriving biological insights. Key metrics to pay attention to include: <br><ul><li><b>E-value (Expectation Value)</b>: Represents the number of hits one would <i>expect</i> to see by chance when searching a database of a particular size. A lower E-value indicates a more statistically significant match.</li><li><b>Bit Score</b>: A normalized score that is independent of database size and provides a measure of alignment quality. Higher bit scores indicate better alignments.</li><li><b>Percent Identity</b>: Indicates the percentage of identical amino acids (or nucleotides, depending on the BLAST program) in the aligned regions of the query and subject sequences.</li></ul>The output also typically shows the specific reading frames of the nucleotide query that resulted in the best alignments, which can be important for gene prediction.


title: DATABASE CREATION
content:
Before running <i>blastx</i>, a protein database must be prepared and formatted using the <i><b>makeblastdb</b></i> command from the NCBI BLAST+ suite. This command indexes the sequences, making them searchable by BLAST programs. For example, to create a searchable protein database from a FASTA file named <code>uniprot_sprot.fasta</code>, you would use the following command:<br><code><b>makeblastdb</b> -in uniprot_sprot.fasta -dbtype prot -out uniprot_sprot_db</code><br>Once created, 'uniprot_sprot_db' can then be specified with the <i><b>-db</b></i> option when running <i>blastx</i>.


title: HISTORY
content:
The Basic Local Alignment Search Tool (BLAST) was first introduced in 1990 by Stephen Altschul, Warren Gish, Webb Miller, Eugene Myers, and David Lipman. It revolutionized sequence similarity searching by providing a heuristic algorithm that significantly sped up the search process compared to earlier exact alignment algorithms like Smith-Waterman, while maintaining high sensitivity.<br><br><i>blastx</i> is one of the original and core programs in the BLAST suite, specifically designed to address the common challenge of identifying protein homologs and coding regions directly from nucleotide sequences. This was particularly crucial for the early days of genomics and transcriptomics. The original C-based toolkit evolved into the modern NCBI BLAST+ suite (often referred to as BLAST rewritten in C++), which offers improved performance, modularity, and enhanced features, including better support for multi-threading. <i>blastx</i> remains a fundamental and widely used tool for gene prediction and functional annotation of newly sequenced genomes and transcripts.


title: PARAMETERS
content:
<b>-query</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file containing the protein query sequence(s) in FASTA format.<br><br><b>-db</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the nucleotide BLAST database against which the query will be searched. This database must be pre-formatted using <i>makeblastdb</i>.<br><br><b>-out</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file where the search results will be written. If not specified, results are printed to standard output.<br><br><b>-outfmt <format_spec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format for the results. Common formats include <b>0</b> (pairwise), <b>6</b> (tabular), <b>7</b> (tabular with comments), and <b>5</b> (XML).<br><br><b>-evalue <threshold></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum Expectation value (E-value) threshold for reported alignments. Alignments with E-values higher than this threshold are not reported. Lower values indicate higher significance.<br><br><b>-max_target_seqs <number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the maximum number of aligned sequences to keep per query.<br><br><b>-num_threads <number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of CPU threads to use for the search, enabling parallel processing for faster execution.<br><br><b>-matrix <matrix_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the scoring matrix for protein alignments (e.g., <b>BLOSUM62</b> (default), <b>PAM30</b>, <b>PAM70</b>).<br><br><b>-word_size <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the length of the initial word (seed) for the search algorithm. Larger values increase speed but decrease sensitivity.<br><br><b>-gapopen <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the penalty for opening a gap in an alignment.<br><br><b>-gapextend <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the penalty for extending an existing gap in an alignment.<br><br><b>-seg <yes/no/mask></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables filtering of low-complexity regions in the query sequence (e.g., <b>seg yes</b> or <b>seg no</b>).<br><br><b>-qcov_hsp_perc <percentage></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a threshold for the minimum query coverage percentage for high-scoring pairs (HSPs) to be reported.<br><br><b>-max_hsps <number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the maximum number of HSPs to keep per subject sequence.<br><br><b>-remote</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>tblastn</i> to run the search on the NCBI remote server instead of locally. Requires an active internet connection.<br><br>


title: DESCRIPTION
content:
<i>tblastn</i> is a powerful command-line tool within the NCBI BLAST+ suite, designed for comparing a <b>protein</b> query sequence against a dynamically <b>translated nucleotide</b> sequence database. Unlike <i>blastn</i> (nucleotide vs. nucleotide) or <i>blastp</i> (protein vs. protein), <i>tblastn</i> bridges the gap by translating the subject nucleotide sequences in all six possible reading frames before performing a protein-protein alignment. This unique functionality allows researchers to identify potential homologous protein-coding regions within raw genomic or transcriptomic DNA sequences, even when the exact gene structure or open reading frame is unknown.<br><br>The primary purpose of <i>tblastn</i> is to detect distant evolutionary relationships between a known protein and potential coding sequences in a nucleotide database. It's particularly useful in gene prediction, annotation of novel genomes, and comparative genomics studies where protein sequences from one organism are used to find corresponding protein-coding genes in the untranslated genome of another. By working at the protein level, <i>tblastn</i> is more sensitive in detecting remote similarities than nucleotide-level searches, as protein sequences conserve functional residues better over evolutionary time and are less affected by synonymous substitutions.


title: CAVEATS
content:
<b>Computational Intensity</b>: <i>tblastn</i> can be resource-intensive, especially when searching large protein queries against massive nucleotide databases, due to the on-the-fly translation of the database in six frames.<br><br><b>Translational Ambiguity and Frameshifts</b>: Since the nucleotide database is translated in all six frames, results might include hits from non-coding regions or sequences containing frameshifts or premature stop codons, requiring careful biological interpretation.<br><br><b>Database Preparation</b>: The nucleotide database must be pre-formatted using the <i>makeblastdb</i> command. An unformatted FASTA file cannot be directly used as a database.<br><br><b>Intron/Exon Structure</b>: When searching against genomic DNA, <i>tblastn</i> does not account for introns. An alignment might span across an intron, or a single coding region could be split across multiple HSPs if introns are present.


title: <I>CHOOSING THE RIGHT SCORING MATRIX</I>
content:
For protein-protein alignments, the choice of scoring matrix (e.g., <b>BLOSUM62</b>, <b>PAM30</b>, <b>PAM70</b>) is crucial. <b>BLOSUM62</b> is generally recommended for detecting moderately distant relationships, while <b>PAM</b> matrices are better suited for very close (<b>PAM30</b>) or very distant (<b>PAM250</b>) relationships. The <b>-matrix</b> option allows this specification.


title: <I>UNDERSTANDING OUTPUT FORMATS</I>
content:
The <b>-outfmt</b> option is vital for downstream analysis. Format <b>0</b> (pairwise) is human-readable, <b>6</b> (tabular) is commonly used for parsing results in scripts or spreadsheets, and <b>7</b> (tabular with comments) provides additional header information. Selecting the appropriate format streamlines data interpretation and integration into bioinformatics pipelines.


title: <I>LOCAL VS. REMOTE SEARCHES</I>
content:
While <i>tblastn</i> is typically run locally against a pre-built database, the <b>-remote</b> option allows queries against NCBI's continuously updated databases without local database management. This is convenient for small-scale queries but may have limitations on query size and speed depending on network conditions and NCBI server load.


title: HISTORY
content:
<i>tblastn</i> is an integral component of the Basic Local Alignment Search Tool (BLAST) suite, which was first introduced by Stephen Altschul and colleagues at the National Center for Biotechnology Information (NCBI) in 1990. The concept of translating a nucleotide database on the fly and searching it with a protein query was a significant innovation, allowing for powerful cross-type sequence comparisons. The original BLAST programs were re-engineered into the "BLAST+" suite, which was released around 2009. This rewrite aimed to improve performance, modularity, and maintainability, providing a more robust and flexible toolkit for bioinformatics research. <i>tblastn</i> continues to be a cornerstone in gene discovery, functional annotation, and comparative genomics, evolving with advancements in sequence data volume and computational capabilities.


title: SYNOPSIS
content:
<b>tblastx</b> -query <i>&lt;query_file&gt;</i> -db <i>&lt;database_name&gt;</i> [options]<br><br><i>Example:</i><br><b>tblastx</b> -query my_gene.fna -db nr_nucl -out blastx_results.txt -outfmt 7 -evalue 1e-6 -num_threads 8


title: PARAMETERS
content:
<b>-query <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the FASTA file containing the query nucleotide sequence(s).<br><br><b>-db <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the name of the BLAST nucleotide database to search against. This database must be pre-formatted using <b>makeblastdb</b>.<br><br><b>-out <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects the output of the BLAST search to the specified file instead of standard output.<br><br><b>-outfmt <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the output format. Common values include 0 (Pairwise), 6 (Tabular), 7 (Tabular with comments), 11 (ASN.1).<br><br><b>-evalue <i>&lt;real&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the expectation value (E-value) threshold for reporting matches. Lower values mean more stringent results.<br><br><b>-max_target_seqs <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of aligned sequences to keep and display in the output.<br><br><b>-num_threads <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables multi-threading, specifying the number of CPU threads to use for the search, speeding up execution.<br><br><b>-matrix <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the amino acid scoring matrix to use (e.g., BLOSUM62, PAM30). Default is BLOSUM62.<br><br><b>-gapopen <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Penalty for opening a gap in an alignment.<br><br><b>-gapextend <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Penalty for extending an existing gap in an alignment.<br><br><b>-word_size <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The size of the initial exact match needed to start an alignment.<br><br><b>-remote</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs the search on NCBI's public BLAST servers instead of a local database.<br><br><b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the full help message and available options for the command.<br><br>


title: DESCRIPTION
content:
The <b>tblastx</b> command, part of the NCBI BLAST+ suite, performs a sequence similarity search where both the query nucleotide sequence and the subject nucleotide database are dynamically translated in all six possible reading frames (three forward and three reverse complementary). This comprehensive translation allows for the detection of very distant evolutionary relationships or conserved protein domains, even when direct nucleotide sequence similarity is low due to mutations, insertions, or deletions that might cause frameshifts. It is particularly powerful for cross-species comparisons or when analyzing genomic regions that may contain coding sequences with unknown protein products, providing insights into potential protein function based on homology to translated sequences. The output includes alignments, statistical scores (like E-value), and other relevant information about the detected similarities.


title: CAVEATS
content:
<b>tblastx</b> searches are computationally intensive due to the six-frame translation of both query and database. This can lead to longer execution times and higher memory consumption compared to other BLAST programs, especially with large query files or databases. Ensure sufficient system resources are available. Proper database formatting using <b>makeblastdb</b> is crucial; <b>tblastx</b> cannot search unindexed FASTA files directly.


title: USAGE CONTEXT
content:
<b>tblastx</b> is ideal for finding highly divergent protein sequences or identifying coding regions in newly sequenced genomes where protein products are unknown. Its six-frame translation approach makes it robust against frameshift mutations that might obscure similarity in other BLAST variants. It's often used in comparative genomics and evolutionary biology studies.


title: DATABASE REQUIREMENTS
content:
Before running <b>tblastx</b>, the target nucleotide sequence database must be formatted using the <b>makeblastdb</b> command. This process creates necessary index files that allow <b>tblastx</b> to efficiently search and translate the database sequences. Without a properly formatted database, <b>tblastx</b> will not be able to perform a search.


title: HISTORY
content:
<b>tblastx</b> is a fundamental component of the original BLAST suite, developed by Stephen Altschul, Warren Gish, Webb Miller, Eugene Myers, and David Lipman at the National Center for Biotechnology Information (NCBI). It was designed to address the challenge of finding protein homology from nucleotide sequences, particularly when direct nucleotide similarity is low. With the introduction of the BLAST+ suite (a complete rewrite in C++), <b>tblastx</b>, along with other BLAST programs, gained significant performance improvements, better multi-threading capabilities, and enhanced modularity, while retaining its core functionality and utility in bioinformatics.


title: SYNOPSIS
content:
<b>blkparse</b> [<i>options</i>] [<i>&lt;device&gt;</i> ...]<br><b>blkparse</b> <b>-i</b> <i>&lt;file&gt;</i>


title: PARAMETERS
content:
<b><b>-a</b> <i>&lt;action&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies filters to display only trace points with the specified <i>action</i> type (e.g., 'Q' for queue, 'C' for completion).<br><br><b><b>-A</b> <i>&lt;action&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses (ignores) trace points with the specified <i>action</i> type.<br><br><b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays block numbers in hexadecimal format.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts the output by CPU number.<br><br><b><b>-C</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables merging of concurrent events; outputs events strictly in their captured order.<br><br><b><b>-d</b> <i>&lt;mask&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debugging output based on the specified <i>mask</i> value.<br><br><b><b>-D</b> <i>&lt;directory&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory for outputting separate files per-device. Only valid when reading from standard input.<br><br><b><b>-e</b> <i>&lt;event&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more event types to display. Can be specified multiple times.<br><br><b><b>-F</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the output format string from the specified <i>file</i> instead of an argument.<br><br><b><b>-f</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format string for trace events. See man page for format specifiers.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>-i</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads input trace data from the specified <i>file</i> instead of standard input.<br><br><b><b>-l</b> <i>&lt;lines&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the output to a specific number of <i>lines</i>.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints latency values in microseconds for applicable events (e.g., completions).<br><br><b><b>-m</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes the minor number in the device name output.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the device name output column.<br><br><b><b>-O</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the old timestamp output format (seconds since boot).<br><br><b><b>-o</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the parsed output to the specified <i>file</i> instead of standard output.<br><br><b><b>-p</b> <i>&lt;plugin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads and uses a specified output <i>plugin</i> for custom processing. Can be specified multiple times.<br><br><b><b>-P</b> <i>&lt;plugin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints information about the specified <i>plugin</i> and exits.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables quiet mode, suppressing informative messages.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables raw data output format (implies <b>-q</b>).<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes the sequence number in the output.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes syscall information in the output, if available in the trace data.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays timestamps for each event.<br><br><b><b>-T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays timestamps relative to the first event in the trace.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases verbosity of output messages.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information and exits.<br><br><b><b>-w</b> <i>&lt;time&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits for a specified <i>time</i> (in seconds) for <i>blktrace</i> to terminate, useful when piping from a live trace.<br><br><b><b>-x</b> <i>&lt;plugin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an output format <i>plugin</i> to use for parsing raw trace data.<br><br>


title: DESCRIPTION
content:
<i>blkparse</i> is a command-line utility used to convert the binary trace data generated by the <i>blktrace</i> utility into a human-readable format. It is an essential tool for in-depth analysis of disk I/O activity, debugging storage performance issues, and understanding how applications interact with the block layer of the Linux kernel. <i>blkparse</i> can read trace data from a specified file (captured previously by <i>blktrace</i>) or directly from standard input, typically piped from a live <i>blktrace</i> capture. <br><br>It offers extensive filtering and formatting options, allowing users to select specific event types, devices, or processes, and customize the output layout. This flexibility makes it invaluable for detailed I/O pattern analysis, helping administrators and developers pinpoint bottlenecks, optimize file system layouts, and improve overall system performance related to storage operations.


title: CAVEATS
content:
<i>blkparse</i> relies on binary data generated by <i>blktrace</i>. The output format and available information can vary depending on the kernel version and specific trace points enabled during the <i>blktrace</i> capture. Understanding the output often requires familiarity with block I/O concepts and <i>blktrace</i> event types. Using the default format or a custom format string (with <b>-f</b> or <b>-F</b>) is crucial for effective analysis, as raw output can be overwhelming.


title: DEFAULT OUTPUT FORMAT
content:
By default, <i>blkparse</i> provides a human-readable summary that typically includes columns for timestamp, CPU, process ID, command, action (e.g., 'Q' for queued, 'C' for completed), device, block number, and size. The exact columns and their content depend on the captured events.


title: CUSTOM FORMAT STRINGS
content:
The <b>-f</b> option allows users to define a custom output format using a rich set of format specifiers (e.g., <i>%a</i> for action, <i>%d</i> for device, <i>%T</i> for timestamp, <i>%S</i> for sector). This enables highly tailored analysis views to focus on specific data points relevant to the investigation.


title: INTEGRATION WITH BLKTRACE
content:
<i>blkparse</i> is often used in conjunction with <i>blktrace</i> in a pipeline for real-time I/O analysis, such as <code>blktrace -o - &lt;device&gt; | blkparse -i -</code>. The <b>-w</b> option is particularly useful in such scenarios, allowing <i>blkparse</i> to wait for <i>blktrace</i> to finish.


title: HISTORY
content:
<i>blkparse</i> is an integral part of the <i>blktrace</i> suite, which was introduced into the Linux kernel around 2006. This project aimed to provide a robust and detailed mechanism for tracing block I/O operations, addressing the limitations of existing tools like <i>iostat</i> in providing granular I/O visibility. <i>blkparse</i> evolved alongside <i>blktrace</i> to serve as the essential user-space component for interpreting the raw binary trace data, making it accessible for system administrators and developers to diagnose and optimize storage performance.


title: PARAMETERS
content:
<b><i>-i &lt;adapter_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Bluetooth adapter to use, e.g., <i>hci0</i>. If not specified, the default adapter is used.<br><br><b><i>-s</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show adapter settings for the specified or default adapter.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the controller version information.<br><br><b><i>-h</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message with command usage and options.<br><br><b><i>info</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display general information and current settings about the selected adapter.<br><br><b><i>power &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turn the Bluetooth adapter's power <i>on</i> or <i>off</i>.<br><br><b><i>discov &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the adapter's discoverability to <i>on</i> (discoverable by others) or <i>off</i>.<br><br><b><i>connectable &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the adapter's connectability to <i>on</i> (allow incoming connections) or <i>off</i>.<br><br><b><i>pairable &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the adapter's pairability to <i>on</i> (allow pairing requests) or <i>off</i>.<br><br><b><i>bondable &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the adapter's bondability to <i>on</i> (store bond information after pairing) or <i>off</i>.<br><br><b><i>le &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable Bluetooth Low Energy (LE) functionality.<br><br><b><i>bredr &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) functionality.<br><br><b><i>scan &lt;on/off&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start or stop continuous device discovery scans.<br><br><b><i>find</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a single, brief device discovery scan and list found devices.<br><br><b><i>addalias &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a local alias (friendly name) for the adapter.<br><br><b><i>delalias &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete an existing local alias for the adapter.<br><br><b><i>adduuid &lt;uuid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a service UUID to the adapter's advertised capabilities.<br><br><b><i>deluuid &lt;uuid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete a service UUID from the adapter's advertised capabilities.<br><br>


title: DESCRIPTION
content:
<b>btmgmt</b> is a command-line utility from the BlueZ stack that provides a powerful and flexible interface for managing Bluetooth adapters on Linux systems. It allows users to control various aspects of a Bluetooth device, including its power state, discoverability, connectability, pairing capabilities, local name, and supported features like Low Energy (LE) and BR/EDR.<br><br>It's often used for scripting and advanced diagnostics, offering more granular control over adapter settings compared to higher-level tools like <b>bluetoothctl</b> for certain operations. It is an essential tool for developers and system administrators working with Bluetooth.


title: CAVEATS
content:
<ul><li>Most <b>btmgmt</b> commands require root privileges or appropriate capabilities (e.g., <i>CAP_NET_ADMIN</i>) to modify adapter settings.</li><li>It primarily manages the Bluetooth adapter itself, not individual paired devices. For device-centric operations like connecting to specific devices or managing trusted devices, <b>bluetoothctl</b> is generally more suitable.</li><li>Some commands might require the Bluetooth adapter to be powered on (e.g., <b>power on</b>) before they can be executed successfully.</li></ul>


title: COMMON WORKFLOWS
content:
Here are some common ways <b>btmgmt</b> is used:<br><ul><li><i><b>btmgmt info</b></i>: Get a quick overview of the current adapter status and capabilities.</li><li><i><b>btmgmt power on</b></i>: Enable the Bluetooth adapter.</li><li><i><b>btmgmt discov on</b></i>: Make the adapter discoverable by other devices.</li><li><i><b>btmgmt scan on</b></i>: Start scanning for nearby Bluetooth devices continuously.</li><li><i><b>btmgmt find</b></i>: Perform a one-time scan and list found devices.</li><li><i><b>btmgmt -i hci1 power off</b></i>: Turn off a specific adapter if multiple are present (e.g., <i>hci1</i>).</li></ul>


title: BLUEZ MANAGEMENT API
content:
<b>btmgmt</b> directly leverages the BlueZ Management API. This is a D-Bus interface that provides a clean, standardized way for applications to interact with Bluetooth adapters and their settings at a lower level than the GATT/Profile APIs. This makes <b>btmgmt</b> a powerful tool for developers and system integrators who need precise control over Bluetooth hardware.


title: HISTORY
content:
<b>btmgmt</b> was introduced as part of the BlueZ stack to provide a more consistent and modern interface for Bluetooth adapter management, gradually replacing older, less maintained tools like <i>hciconfig</i> and <i>hcitool</i>. Its development is closely tied to the evolution of the BlueZ project, which is the official Linux Bluetooth protocol stack. It aims to offer direct control over the kernel's Bluetooth subsystem through the management interface, aligning with contemporary D-Bus-based service architectures.


title: SYNOPSIS
content:
As a standalone command, <I>pnm</I> does not exist. It's an umbrella term referring to the family of Netpbm utilities that operate on PNM and other image formats.<br><br>Most Netpbm commands follow a general structure:<br><B>command_name</B> [<I>options</I>] [<I>input_file</I>] &gt; [<I>output_file</I>]<br><br>For example, to convert a PNG to PNM format and then scale it:<br><B>pngtopnm</B> <I>input.png</I> | <B>pnmscale</B> <I>-xsize 100</I> &gt; <I>output.pnm</I>


title: PARAMETERS
content:
<b><I>General Netpbm Parameters (varies per utility)</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parameters are highly specific to each individual Netpbm utility. There is no universal set of parameters for 'pnm'. However, common types of parameters found across the suite include:<br><br><b><I>-xsize</I>, <I>-ysize</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used by scaling utilities like <B>pnmscale</B> to specify output dimensions.<br><br><b><I>-width</I>, <I>-height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to x/ysize, for specifying exact output dimensions.<br><br><b><I>-verbose</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints informational messages during processing (common in many commands, e.g., <B>anytopnm</B> converters).<br><br><b><I>-plain</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the 'plain' (ASCII) version of the PNM format, rather than the default raw (binary) version, for utilities that generate PNM.<br><br><b><I>input_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input image file. If omitted, input is read from standard input (<B>stdin</B>), which is crucial for piping.<br><br><b><I>output_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path for the output image file. If omitted, output is written to standard output (<B>stdout</B>), allowing for chaining commands.<br><br>


title: DESCRIPTION
content:
The term <I>pnm</I> most commonly refers to the <B>Portable Anymap format</B> family, which includes <B>PBM</B> (Portable BitMap for black and white images), <B>PGM</B> (Portable GrayMap for grayscale images), and <B>PPM</B> (Portable PixMap for color images).<br><br>More broadly, it often denotes the <B>Netpbm</B> project, an extensive suite of command-line utilities designed for manipulating these and other image formats. Netpbm tools are known for their simplicity, flexibility, and ability to be chained together using pipes, making them powerful for scripting complex image processing tasks. Each utility typically performs a single, well-defined operation, such as scaling, cropping, converting formats, or applying filters.


title: CAVEATS
content:
The primary caveat is that <B>pnm</B> is not a single executable command in Linux. It is an umbrella term referring to the <B>Portable Anymap</B> image formats (<B>PBM</B>, <B>PGM</B>, <B>PPM</B>) and the vast collection of <B>Netpbm</B> command-line utilities that operate on these formats. Users should refer to specific Netpbm utility man pages (e.g., <B>man pnmscale</B>, <B>man jpegtopnm</B>) for detailed usage and options, as parameters are highly command-specific.


title: PNM FILE FORMATS
content:
The <B>PNM</B> family of formats includes <B>PBM</B> (Portable BitMap, monochrome), <B>PGM</B> (Portable GrayMap, grayscale), and <B>PPM</B> (Portable PixMap, color). These are exceedingly simple, raw image formats often used as an intermediary for conversion between other image types due to their ease of parsing and generation. Both 'raw' (binary) and 'plain' (ASCII) versions exist, with binary being more efficient for storage and ASCII useful for debugging or simple text manipulation.


title: UNIX PHILOSOPHY
content:
The <B>Netpbm</B> suite perfectly embodies the Unix philosophy: 'Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.' This design allows users to combine multiple Netpbm tools using pipes (`|`) to create complex image processing pipelines, rather than relying on a single monolithic application.


title: HISTORY
content:
The <B>Netpbm</B> suite, which defines and operates on the <B>PNM</B> formats, originated from the <B>Pbmplus</B> package, developed by Jef Poskanzer in the late 1980s. Pbmplus was designed to be a simple, modular set of tools for converting and manipulating images, emphasizing the Unix philosophy of small tools doing one thing well and connecting via pipes. Over time, it evolved into Netpbm, incorporating a wider range of image formats and utilities, while retaining its core principles of simplicity and modularity. Its development continues to be community-driven, making it a robust and widely used toolkit in scripting and command-line image processing.


title: SEE ALSO
content:
netpbm(1), pbm(5), pgm(5), ppm(5), pnmgamma(1), pnmscale(1), pnmcrop(1), jpegtopnm(1), pngtopnm(1), convert(1) (ImageMagick), gm(1) (GraphicsMagick)


title: SYNOPSIS
content:
<b>trace-cmd list</b> [<I>options</I>]<br><b>trace-cmd list</b><br><b>trace-cmd list -e</b> [<I>system</I>][:<I>event</I>]<br><b>trace-cmd list -f</b><br><b>trace-cmd list -s</b>


title: PARAMETERS
content:
<b>-e, --events</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available <i>ftrace</i> event systems and their individual events. If a <I>system</I> is specified (e.g., <b>-e syscalls</b>), it lists events only for that system. If an <I>event</I> is also specified (e.g., <b>-e syscalls:sys_enter_open</b>), it checks if that specific event exists.<br><br><b>-f, --functions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available <i>ftrace</i> filter functions that can be applied to trace events.<br><br><b>-s, --stats</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available <i>ftrace</i> statistics that can be monitored.<br><br>


title: DESCRIPTION
content:
The <b>trace-cmd list</b> command is a fundamental subcommand of the <b>trace-cmd</b> utility, designed for interacting with the Linux kernel's powerful <i>ftrace</i> tracing framework. Its primary purpose is to provide an exhaustive enumeration of the various tracing capabilities and points available on a given system. This command is crucial for users to understand what kernel tracing options are at their disposal before initiating a trace.<br><br>Specifically, <b>trace-cmd list</b> can display:<br><ul><li><b>Available Tracers</b>: Without any options, it lists the different tracing mechanisms (e.g., <i>function</i>, <i>nop</i>, <i>irqsoff</i>, <i>wakeup</i>) that <i>ftrace</i> can utilize to capture data. The output clearly indicates which tracers are currently active or compiled into the running kernel.</li><li><b>Available Event Systems and Events</b>: Using the <b>-e</b> option, it shows a hierarchical view of kernel event systems (such as <i>syscalls</i>, <i>sched</i>, <i>block</i>, <i>net</i>) and the specific tracepoints (events) defined within each system. This allows users to pinpoint precise kernel activities they wish to monitor.</li><li><b>Available Filter Functions</b>: With the <b>-f</b> option, it lists functions that can be used for advanced filtering of trace data.</li><li><b>Available Statistics</b>: The <b>-s</b> option displays various statistics counters provided by <i>ftrace</i>.</li></ul>This command is an essential first step for anyone planning to use <b>trace-cmd record</b> or <b>trace-cmd report</b>, as it clarifies the exact names and formats required for specifying tracing targets.


title: CAVEATS
content:
The output of <b>trace-cmd list</b> is entirely dependent on your Linux kernel's configuration and compiled-in <i>ftrace</i> capabilities. If certain tracers, event systems, or features are not enabled or built into your kernel, they will not appear in the list or might be shown as unavailable. Listing all events with <b>trace-cmd list -e</b> (without specifying a system) can produce extremely long output, potentially making it difficult to parse manually. It's often more efficient to pipe the output to a pager like <b>less</b> or <b>grep</b> for specific entries.


title: INTERPRETING TRACER OUTPUT
content:
When <b>trace-cmd list</b> is executed without any options, it displays a list of kernel tracers. A tracer name enclosed in square brackets, such as <b>[function]</b>, signifies that this particular tracer is currently available and enabled within your running kernel. If a tracer name is shown without brackets (e.g., <i>nop</i>), it means the tracer is recognized by <i>trace-cmd</i> but is not presently available or compiled into your kernel's configuration.


title: INTERPRETING EVENT OUTPUT
content:
When using <b>trace-cmd list -e</b>, the output presents event systems and their corresponding events. Each event is typically formatted as <b><I>system</I>:<I>event_name</I></b> (e.g., <b>syscalls:sys_enter_open</b>). This precise format is crucial for enabling specific events during trace recording, for instance, when using commands like <b>trace-cmd record -e syscalls:sys_enter_open</b>.


title: HISTORY
content:
The <b>trace-cmd</b> utility, including its crucial <b>list</b> subcommand, was primarily developed by Steven Rostedt, a key maintainer of the Linux kernel's <i>ftrace</i> framework. Its inception aimed to provide a more user-friendly and robust interface to <i>ftrace</i>, simplifying complex kernel tracing operations that previously required direct, intricate interactions with debugfs files. The <b>list</b> subcommand has been a fundamental component since the early stages of <b>trace-cmd</b>'s development, as it is essential for users to discover and verify available tracing points on their system before initiating any trace analysis.


title: TLDR
content:
<b>List available tracers</b>`sudo trace-cmd list -t`<br><b>List available plugins</b>`sudo trace-cmd list -p`<br><b>List available events</b>`sudo trace-cmd list -e`<br><b>List available functions</b>`sudo trace-cmd list -f`


title: PARAMETERS
content:
<b>-o <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file path for the recorded trace. Default is <I>trace.dat</I>.<br><br><b>-e <event></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables specific kernel trace events or event groups (e.g., <I>sched:sched_switch</I>, <I>syscalls</I>). Can be used multiple times.<br><br><b>-p <plugin></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates a kernel ftrace plugin for tracing (e.g., <I>function</I>, <I>irq</I>, <I>syscalls</I>).<br><br><b>-s <size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the global ftrace buffer size in kilobytes (KB).<br><br><b>-b <size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the ftrace buffer size per CPU in kilobytes (KB).<br><br><b>-F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Records events for forked child processes, not just the parent process.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detaches the tracing process, allowing it to run in the background. Requires <B>trace-cmd stop</B> to terminate recording.<br><br><b>-P <pid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits tracing to a specific process ID.<br><br><b>-c <cpu></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Records events only from the specified CPU or range of CPUs (e.g., <I>0</I>, <I>0-3</I>, <I>1,5</I>).<br><br><b>-t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables tracing of all currently running tasks.<br><br>


title: DESCRIPTION
content:
<b>trace-cmd record</b> is a crucial utility within the <b>trace-cmd</b> suite, designed for capturing kernel trace events using the Linux ftrace infrastructure. It allows users to record a wide array of system activities, including function calls, scheduler events, I/O operations, and more, into a binary trace file (by default, <I>trace.dat</I>).<br><br>This generated trace file is invaluable for performance analysis, debugging kernel issues, and understanding detailed system behavior. Users can precisely control what to record by specifying events, filtering by process ID, setting buffer sizes, and configuring other tracing parameters, enabling them to focus on the most relevant data for their analysis. When a command is provided, <b>trace-cmd record</b> traces only for the duration of that command's execution; otherwise, it records until manually stopped.


title: CAVEATS
content:
<ul><li>Requires root privileges or appropriate capabilities to interact with the ftrace subsystem.</li><li>Can generate very large trace files quickly, potentially consuming significant disk space.</li><li>Tracing can introduce a performance overhead on the system being monitored, especially with high event rates or large buffer sizes.</li><li>Not all advanced ftrace capabilities are directly exposed via <B>trace-cmd record</B>'s command-line options.</li></ul>


title: TRACE FILE FORMAT
content:
The default output file, <I>trace.dat</I>, is a compact binary format specific to <B>trace-cmd</B>. It is designed for efficient storage and fast parsing by other <B>trace-cmd</B> utilities like <B>trace-cmd report</B>.


title: STOPPING RECORDING
content:
If <B>trace-cmd record</B> is run without a specified <I>command</I> to trace, it will continue recording until manually stopped. This can be done by pressing <I>Ctrl+C</I> in the terminal or, if detached with <I>-D</I>, by executing <B>trace-cmd stop</B>.


title: HISTORY
content:
<B>trace-cmd</B> was primarily developed by Steven Rostedt, a leading Linux kernel developer. Its creation aimed to provide a more user-friendly and accessible interface to the complex ftrace kernel tracing infrastructure, simplifying the process of kernel event recording and analysis for developers, system administrators, and performance engineers.


title: TLDR
content:
<b>Record a trace with a specific plugin</b>`sudo trace-cmd record -p [plugin]`<br><b>Record a trace of a specific executable</b>`sudo trace-cmd record -F [executable]`<br><b>Record a trace of a specific function</b>`sudo trace-cmd record -g [function]`<br><b>Exclude a specific function from the trace</b>`sudo trace-cmd record -n [function]`<br><b>Limit the function call graph depth</b>`sudo trace-cmd record --max-graph-depth [depth]`<br><b>Record a trace from a specific process ID</b>`sudo trace-cmd record -P [pid]`


title: TLDR
content:
<b>Listen to any ACPI event while the daemon is running</b>`acpi_listen`<br><b>Display help</b>`acpi_listen [[-h|--help]]`


title: PARAMETERS
content:
<b><b>-i</b>, <b>--input</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input trace file to read. Defaults to <i>trace.dat</i> in the current directory.<br><br><b><b>-o</b>, <b>--output</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the report output to the specified file instead of standard output.<br><br><b><b>-p</b>, <b>--plugin</b> <i>&lt;plugin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads and uses a specific plugin to process and display the trace events. Plugins offer specialized analysis.<br><br><b><b>-P</b>, <b>--plugin-options</b> <i>&lt;options&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes specific options or arguments to the loaded plugin.<br><br><b><b>--cpu</b> <i>&lt;cpu&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters events to show only those occurring on the specified CPU number.<br><br><b><b>--comm</b> <i>&lt;comm&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters events to show only those originating from processes with the specified command name.<br><br><b><b>--pid</b> <i>&lt;pid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters events to show only those originating from the specified process ID.<br><br><b><b>--tid</b> <i>&lt;tid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters events to show only those originating from the specified thread ID.<br><br><b><b>--event</b> <i>&lt;event&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters events to show only a specific event type (e.g., <i>sched_switch</i>, <i>syscalls:sys_enter_open</i>).<br><br><b><b>--start</b> <i>&lt;time&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the start time (in seconds) from which to report events. Can be relative or absolute based on trace.<br><br><b><b>--end</b> <i>&lt;time&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the end time (in seconds) until which to report events.<br><br><b><b>--format</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output format (<i>pretty</i> for human-readable, <i>raw</i> for raw event data, <i>json</i> for JSON output).<br><br><b><b>--no-header</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the trace header information at the beginning of the report.<br><br><b><b>--no-timestamp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of timestamps for each event in the report.<br><br><b><b>--pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the output to be piped through a pager (e.g., <i>less</i>), even if not automatically detected.<br><br><b><b>--no-pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables piping the output through a pager, even if it would normally be used.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing more verbose information for troubleshooting.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases verbosity of the output, showing more details about the processing.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>trace-cmd</b> utility.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message with available options and usage.<br><br>


title: DESCRIPTION
content:
The <b>trace-cmd-report</b> command is used to read and display the trace data collected by <b>trace-cmd-record</b>, typically from a <i>trace.dat</i> file. It allows users to view kernel events, filter them by CPU, process ID, command name, event type, and time ranges. The output can be customized in various formats, including a human-readable 'pretty' format, raw event data, or JSON. It also supports plugins for advanced analysis and visualization of specific event types, making it a powerful tool for kernel tracing and debugging.<br><br>This command is essential for anyone analyzing system behavior, performance issues, or debugging kernel modules by providing a structured view of the underlying kernel events.


title: CAVEATS
content:
<b>trace-cmd-report</b> can consume significant memory and CPU when processing very large trace files, especially without effective filtering. Ensure sufficient disk space for output files if redirecting. The accuracy of time filtering (<b>--start</b>, <b>--end</b>) depends on the precision of timestamps recorded in the trace. Some plugins may have specific dependencies or limitations.


title: DEFAULT INPUT FILE
content:
By default, <b>trace-cmd-report</b> expects the trace data to be in a file named <i>trace.dat</i> in the current working directory. If your trace file has a different name or is located elsewhere, you must specify it using the <b>-i</b> or <b>--input</b> option, or provide it as the final argument to the command.


title: TYPICAL WORKFLOW
content:
A common workflow involves first recording trace data using <b>trace-cmd record</b> (e.g., <i>trace-cmd record -e sched_switch ls</i>). Then, <b>trace-cmd-report</b> is used to examine the collected data (e.g., <i>trace-cmd report</i> for a summary, or <i>trace-cmd report --event sched_switch</i> for filtered output). For detailed analysis, users might combine filtering with output to a file (<i>trace-cmd report -o output.txt</i>) or pipe it to other tools.


title: HISTORY
content:
The <b>trace-cmd</b> utility, including <b>trace-cmd-report</b>, is part of the <i>ftrace</i> ecosystem, a powerful tracing framework built into the Linux kernel. Developed primarily by Steven Rostedt, <b>trace-cmd</b> was created to provide a user-friendly frontend to <i>ftrace</i>'s extensive capabilities. <b>trace-cmd-report</b>'s functionality has evolved alongside <i>ftrace</i>, gaining more filtering options, output formats (like JSON), and plugin support to meet the increasing demands of kernel developers and system administrators for detailed, flexible trace analysis.


title: SEE ALSO
content:
trace-cmd(1), trace-cmd-record(1), trace-cmd-extract(1), trace-cmd-list(1), trace-cmd-reset(1), perf(1), ftrace(4)


title: TLDR
content:
<b>Display the recorded trace</b>`sudo trace-cmd report`<br><b>Display the recorded trace for a specific CPU</b>`sudo trace-cmd report --cpu [cpu_number]`


title: PARAMETERS
content:
<b><i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the text file to be opened or created for editing.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays basic usage information and exits.<br><br>


title: DESCRIPTION
content:
<i>zeditor</i> is conceptually a very simple, command-line based text editor, primarily designed for basic text manipulation and quick file edits within a terminal environment. Unlike more feature-rich editors such as <i>ViM</i> or <i>GNU Nano</i>, <i>zeditor</i> would likely offer a minimalistic interface, focusing on core functionalities like opening, editing, and saving text files. It typically lacks advanced features like syntax highlighting, multiple buffers, or complex search-and-replace capabilities. Its simplicity might make it suitable for environments with limited resources or for users seeking an extremely straightforward editing tool without the steep learning curve associated with more powerful editors. It is important to note that <i>zeditor</i> is not a standard utility distributed with most popular Linux distributions, and its existence and specific features would depend on custom installation or specific niche environments.


title: CAVEATS
content:
The <i>zeditor</i> command is <b>not a standard utility</b> found in most mainstream Linux distributions (e.g., Debian, Ubuntu, Fedora, CentOS, Arch). Consequently, comprehensive official documentation, man pages, or widespread community support are unavailable. The information provided here is based on a hypothetical interpretation of a simple command-line text editor and general Linux command conventions. Users should verify the presence and specific functionalities of <i>zeditor</i> on their particular system, as its behavior, if it exists, may vary significantly from this general description.


title: TYPICAL INTERACTION
content:
Upon opening a file with <i>zeditor filename</i>, a user would likely see the file's content displayed on the screen. Editing would involve direct keyboard input, possibly with simple navigation keys (like arrow keys, if implemented). Saving changes and exiting the editor would typically be achieved through a specific key combination (e.g., Ctrl+S to save, Ctrl+X to exit), although these commands are purely speculative without an actual implementation.


title: HISTORY
content:
Due to its non-standard nature and lack of widespread distribution, the specific development history, origin, or evolution of a universally recognized <i>zeditor</i> command are <b>not documented</b>. It is plausible that "zeditor" might refer to a custom-developed script, a pedagogical example, or a component of a highly specialized or legacy system, rather than a publicly maintained or commonly available software package in the Linux ecosystem.


title: SYNOPSIS
content:
<i>Zinit</i> is primarily configured within the <i>.zshrc</i> file. Its core syntax involves declarative statements for loading packages, along with various interactive commands for maintenance:<br><br><b>Declaration Syntax:</b><br><i>zinit [ice-modifiers] {load|light|snippet|cd} &lt;repository_or_path&gt;</i><br><br><b>Maintenance Commands:</b><br><i>zinit {update|clean|cd|status|self-update|help} [arguments]</i><br><br>Examples:<br><i>zinit load zsh-users/zsh-syntax-highlighting</i><br><i>zinit ice lucid; zinit light romkatv/powerlevel10k</i><br><i>zinit update</i>


title: PARAMETERS
content:
<b><i>ice</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Begins a block of global modifiers that apply to subsequent <i>load</i>, <i>light</i>, or <i>snippet</i> calls until another <i>ice</i> or <i>zinit</i> command is encountered.<br><br><b><i>as'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of package: <i>plugin</i> (default), <i>theme</i>, <i>completion</i>, <i>snippet</i>, <i>command</i>, <i>null</i>, etc.<br><br><b><i>pick'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sources specific files or directories after the plugin is loaded, useful when not all files in a repo should be sourced.<br><br><b><i>src'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sources a specific file, similar to <i>pick</i> but for a single file.<br><br><b><i>make'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes commands (e.g., <i>make install</i>) after cloning or updating a repository.<br><br><b><i>wait</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads the package asynchronously after a short delay, speeding up shell startup.<br><br><b><i>lucid</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads the package immediately without lazy-loading or Turbo mode, suitable for essential or small plugins.<br><br><b><i>atclone'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes commands immediately after cloning a repository.<br><br><b><i>atpull'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes commands immediately after pulling updates to a repository.<br><br><b><i>fpath'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a directory to the <i>fpath</i>, making functions within it available for auto-loading.<br><br><b><i>path'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a directory to the <i>PATH</i> environment variable.<br><br><b><i>badd'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a binary executable from the package to the <i>PATH</i>.<br><br><b><i>completion</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <i>Zinit</i> to load completions for the package, even if not auto-detected.<br><br><b><i>nocompletions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>Zinit</i> from loading completions for the package.<br><br><b><i>bindkey'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers keybindings, often used with lazy-loaded packages.<br><br><b><i>multisrc</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sources multiple files matching a pattern within the package.<br><br><b><i>clone-depth'...'</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a shallow Git clone with a specified depth, reducing download size.<br><br>


title: DESCRIPTION
content:
<i>Zinit</i> is a powerful and highly configurable plugin manager for the <i>Zsh</i> shell. It excels in optimizing shell startup times through its innovative 'Turbo' mode and asynchronous loading capabilities, allowing plugins, themes, snippets, and completions to be loaded in the background or on demand. Beyond basic package management, <i>Zinit</i> offers fine-grained control over how packages are handled using 'ice' modifiers. These modifiers allow users to specify actions like sourcing specific files, adding paths, compiling programs, defining keybindings, or even loading binary executables. It supports fetching packages from GitHub, GitLab, Bitbucket, local paths, and arbitrary URLs, making it a versatile tool for enhancing the <i>Zsh</i> environment with speed and precision.


title: CAVEATS
content:
<i>Zinit</i> is exclusively designed for the <i>Zsh</i> shell and will not function with <i>Bash</i> or other shell environments. While its 'ice' modifiers offer immense flexibility, they can introduce a steeper learning curve for new users. Overly complex configurations with numerous specific 'ice' declarations might become challenging to debug without a clear understanding of <i>Zinit</i>'s loading mechanisms. Its primary reliance on <i>Git</i> for fetching repositories means that network connectivity and <i>Git</i> setup are prerequisites for managing packages.


title: CORE CONCEPTS
content:
<b>Ice Modifiers:</b> These are special keywords preceding a <i>load</i>, <i>light</i>, or <i>snippet</i> command that modify how <i>Zinit</i> handles the package. They provide extensive control over sourcing, path management, compilation, and more.<br><b>Turbo Mode:</b> <i>Zinit</i>'s default lazy-loading mechanism. Plugins are sourced only when a command they provide is first invoked, or after a specified delay, significantly reducing shell startup time.<br><b>Snippets:</b> Allows loading of single files or small code blocks directly from URLs (e.g., Gist) without requiring a full Git repository clone.<br><b>Completions:</b> <i>Zinit</i> has robust support for <i>Zsh</i> completion systems, often automatically detecting and loading completions provided by packages.


title: ZINIT COMMANDS
content:
While <i>Zinit</i> is primarily configured via <i>.zshrc</i>, it provides several interactive commands for managing packages:<br><b><i>zinit update</i>:</b> Updates all installed packages or specified ones to their latest versions.<br><b><i>zinit clean</i>:</b> Removes unused or orphaned packages from the installation directory.<br><b><i>zinit cd &lt;package&gt;</i>:</b> Changes the current directory to the installation location of a specified package.<br><b><i>zinit status</i>:</b> Displays information about loaded packages, their status, and any errors.<br><b><i>zinit self-update</i>:</b> Updates <i>Zinit</i> itself to the latest version.<br><b><i>zinit help</i>:</b> Shows help messages for <i>Zinit</i> commands and ice modifiers.


title: ZINIT ANNEXES
content:
<i>Zinit Annexes</i> are optional extensions that provide additional functionality, such as enhanced completion management, specialized build systems, or support for unique package types. They extend <i>Zinit</i>'s core capabilities without bloating the main codebase, allowing users to customize their setup with only the features they need.


title: HISTORY
content:
<i>Zinit</i> (originally known as <i>zplugin</i>) was created by the developer known as 'zdharma' (now under the 'zdharma-continuum' organization) to address the performance shortcomings and lack of fine-grained control prevalent in earlier <i>Zsh</i> plugin managers like <i>oh-my-zsh</i>. Its development focused heavily on optimizing shell startup times through asynchronous loading, a feature it pioneered among <i>Zsh</i> managers. The introduction of 'Turbo' mode and a comprehensive set of 'ice' modifiers allowed users unprecedented control over how and when plugins were loaded, setting a new standard for flexibility and efficiency in <i>Zsh</i> environments. It has continuously evolved, introducing 'annexes' for extended functionality, solidifying its position as a leading-edge tool for <i>Zsh</i> power users.


title: TLDR
content:
<b>Show all installed plugins</b>`zinit plugins`<br><b>Go to the directory of a plugin</b>`zinit cd [repository_owner]/[repository_name]`<br><b>Fetch the newest version of zinit from GitHub</b>`zinit self-update`<br><b>List status of all installed completions</b>`zinit completions`<br><b>Install completions for a plugin</b>`zinit creinstall [repository_owner]/[repository_name]`<br><b>Delete completion for a plugin</b>`zinit cuninstall [repository_owner]/[repository_name]`


title: SYNOPSIS
content:
<b>rabbitmqctl</b> <i>&lt;subcommand&gt;</i> [<i>&lt;options&gt;</i>]<br><br>Examples of user-related subcommands:<br><b>rabbitmqctl list_users</b> [--formatter <i>&lt;format&gt;</i>] [-n <i>&lt;node&gt;</i>]<br><b>rabbitmqctl add_user</b> <i>&lt;username&gt;</i> <i>&lt;password&gt;</i><br><b>rabbitmqctl delete_user</b> <i>&lt;username&gt;</i><br><b>rabbitmqctl change_password</b> <i>&lt;username&gt;</i> <i>&lt;new_password&gt;</i><br><b>rabbitmqctl set_user_tags</b> <i>&lt;username&gt;</i> <i>&lt;tag1&gt;</i> [<i>&lt;tag2&gt;</i> ...]<br><b>rabbitmqctl clear_user_tags</b> <i>&lt;username&gt;</i>


title: PARAMETERS
content:
<b><i>&lt;username&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the user account for the operation.<br><br><b><i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The password for a new user account.<br><br><b><i>&lt;new_password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new password to set for an existing user.<br><br><b><i>&lt;tag&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A specific tag to assign to or clear from a user (e.g., <b>administrator</b>, <b>monitoring</b>, <b>management</b>, <b>policymaker</b>).<br><br><b>-n <i>&lt;node&gt;</i><br>--node <i>&lt;node&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target RabbitMQ node (e.g., <b>rabbit@localhost</b>) if not the default.<br><br><b>--formatter <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>list_users</b> to specify the output format (e.g., <b>text</b>, <b>json</b>, <b>json_pretty</b>, <b>raw</b>).<br><br><b>-q<br>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informational messages, showing only errors.<br><br><b>-s<br>--silent</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Even quieter than <b>--quiet</b>, prints only errors.<br><br>


title: DESCRIPTION
content:
The <i>rabbitmqctl-users</i> analysis refers to the suite of commands within the <b>rabbitmqctl</b> utility dedicated to managing user accounts in a RabbitMQ broker. This includes operations like creating new users with <b>add_user</b>, deleting existing ones with <b>delete_user</b>, changing user passwords using <b>change_password</b>, assigning or clearing user tags with <b>set_user_tags</b> and <b>clear_user_tags</b>, and importantly, listing all configured users and their associated tags using <b>list_users</b>. User tags (such as <i>administrator</i>, <i>monitoring</i>, <i>management</i>, or <i>policymaker</i>) control access to the RabbitMQ management plugin and dictate specific permissions within the broker. These commands are fundamental for security administration, ensuring proper access control, auditing user permissions, and maintaining the integrity of the RabbitMQ environment. Execution typically requires administrative privileges on the server where the RabbitMQ node is running. The <b>rabbitmqctl</b> utility interacts directly with the running Erlang VM to perform these user management operations.


title: CAVEATS
content:
Using <b>add_user</b> or <b>change_password</b> directly on the command line means the password might be visible in process lists (e.g., via <b>ps aux</b>) on the system. For enhanced security, consider using methods that allow reading passwords from standard input where available, or leveraging configuration management tools for sensitive operations. All user management operations require appropriate administrative privileges on the host system where <b>rabbitmqctl</b> is executed.


title: USER TAGS EXPLAINED
content:
<i>User tags</i> are special attributes assigned to RabbitMQ users that define their capabilities and roles within the broker and its management interface. The most common tags include:<br><b>administrator</b>: Grants full access to all virtual hosts and the management UI.<br><b>monitoring</b>: Allows read-only access to monitoring data in the management UI.<br><b>management</b>: Provides full access to the management UI for resources within assigned virtual hosts.<br><b>policymaker</b>: Enables creation and management of policies and runtime parameters.<br>Users without any tags cannot access the RabbitMQ management UI.


title: PASSWORD HASHING
content:
RabbitMQ does not store user passwords in plain text. When a password is provided via <b>add_user</b> or <b>change_password</b>, it is automatically hashed using a strong, salted hashing algorithm before being stored. This enhances security by preventing direct exposure of passwords even if the database is compromised.


title: HISTORY
content:
The <b>rabbitmqctl</b> command-line utility has been the cornerstone of RabbitMQ administration since its inception. User management capabilities, including adding, deleting, listing, and modifying users, have been integral features from early versions. The introduction of user tags provided more granular control over access to the management UI and API, reflecting the evolving needs for security and role-based access control within the RabbitMQ ecosystem. The commands for user management have largely maintained consistent syntax, highlighting the stability and maturity of this administrative interface.


title: TLDR
content:
<b>List all users</b>`rabbitmqctl list_users`<br><b>Add a new user with a password</b>`rabbitmqctl add_user [username] [password]`<br><b>Delete an existing user</b>`rabbitmqctl delete_user [username]`<br><b>Change the password for a user</b>`rabbitmqctl change_password [username] [new_password]`<br><b>Set permissions for a user on a specific virtual host</b>`rabbitmqctl set_permissions [[-p|--vhost]] [vhost] [username] [read] [write] [configure]`<br><b>Clear all permissions for a user on a specific virtual host</b>`rabbitmqctl clear_permissions [[-p|--vhost]] [vhost] [username]`<br><b>Assign one or more tags (e.g., administrator) to a user</b>`rabbitmqctl set_user_tags [username] [tag1] [[tag2]]`


title: SYNOPSIS
content:
<I>rabbitmqctl</I> [<B>--node</B> <I>node</I>] [<B>--longnames</B> | <B>--shortnames</B>] [<B>--quiet</B>] [<B>--timeout</B> <I>timeout</I>] [<B>--detached</B>] <B>vhosts</B>


title: PARAMETERS
content:
<b><B>--node <I>node</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Erlang node name of the RabbitMQ broker to connect to. Defaults to <I>rabbit@</I> followed by the hostname.<br><br><b><B>--longnames</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of long node names (e.g., <I>rabbit@hostname.domain</I>) for connection.<br><br><b><B>--shortnames</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of short node names (e.g., <I>rabbit@hostname</I>) for connection.<br><br><b><B>--quiet</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informative messages, displaying only errors or the requested output.<br><br><b><B>--timeout <I>timeout</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout in seconds for the command execution. If the command does not complete within this time, it will abort.<br><br><b><B>--detached</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the command in a detached mode, allowing the client to exit while the command continues execution on the server. Less common for this listing command.<br><br>


title: DESCRIPTION
content:
The <I>rabbitmqctl vhosts</I> command is a fundamental part of the RabbitMQ command-line management tool, <I>rabbitmqctl</I>. Its primary function is to list all existing virtual hosts (vhosts) configured on a RabbitMQ broker or cluster. Virtual hosts are essential for providing logical separation and isolation within a single RabbitMQ instance. Each vhost acts as an independent mini-RabbitMQ broker, possessing its own set of users, permissions, exchanges, queues, and bindings. This segregation prevents name clashes and enhances security and multi-tenancy.<br><br>While <I>rabbitmqctl vhosts</I> specifically provides a simple list of vhost names, the broader <I>rabbitmqctl</I> utility offers extensive capabilities for managing them, including creating (<I>add_vhost</I>), deleting (<I>delete_vhost</I>), and managing user permissions (<I>set_permissions</I>). Utilizing virtual hosts effectively is crucial for organizing resources, ensuring security, and implementing multi-application or multi-tenant architectures in RabbitMQ deployments. This command serves as a quick inspection tool for administrators to see which vhosts are currently active.


title: CAVEATS
content:
<ul><li><B>Permissions</B>: The user running <I>rabbitmqctl</I> must have appropriate operating system permissions to connect to the RabbitMQ Erlang node. This often means running as the <I>rabbitmq</I> user or with <I>sudo</I> privileges.</li><li><B>Node Name Resolution</B>: Ensure that the hostname used in the node name (e.g., <I>rabbit@hostname</I>) is correctly resolvable from where <I>rabbitmqctl</I> is executed. Incorrect hostnames or DNS issues can prevent successful connection.</li><li><B>Cluster State</B>: In a clustered RabbitMQ environment, this command connects to a single node. While virtual hosts are globally synchronized across the cluster, local node issues could affect connectivity or the perceived state.</li><li><B>Output Limitations</B>: <I>rabbitmqctl vhosts</I> only lists names. For more detailed information about virtual hosts, such as description or runtime properties, consider using <I>rabbitmqctl list_vhosts</I> with specific columns.</li></ul>


title: VIRTUAL HOST IMPORTANCE
content:
Virtual hosts are critical for achieving multi-tenancy, enhancing security, and isolating resources within a RabbitMQ cluster. They allow different applications or departments to share the same broker without their messaging entities (queues, exchanges) interfering with each other.


title: DEFAULT VIRTUAL HOST
content:
RabbitMQ automatically creates a default virtual host named <I>/</I> (slash) upon installation. While convenient for initial setup and testing, it is strongly recommended to create dedicated virtual hosts for production applications to ensure proper isolation and management.


title: COMPARISON WITH <I>LIST_VHOSTS</I>
content:
While <I>rabbitmqctl vhosts</I> provides a simple list of names, <I>rabbitmqctl list_vhosts</I> offers more granular control. It allows administrators to specify which columns of information to display (e.g., <I>name</I>, <I>description</I>, <I>policy</I>), making it more suitable for detailed reporting or scripting purposes.


title: HISTORY
content:
The <I>rabbitmqctl</I> command-line tool, including its <I>vhosts</I> subcommand, has been a core component of RabbitMQ since its early versions. RabbitMQ, initially released in 2007 by Rabbit Technologies (later acquired by VMware, Pivotal, and now part of Broadcom), was designed with a focus on robust message brokering and flexible management. The <I>rabbitmqctl</I> utility emerged as the primary interface for managing cluster operations, user and permission configurations, and virtual host settings. The concept of virtual hosts has been fundamental to RabbitMQ's architecture, enabling logical separation of messaging environments. As RabbitMQ evolved, <I>rabbitmqctl</I> has seen continuous enhancements in its functionality and usability, though its essential role in virtual host management has remained consistent.


title: SEE ALSO
content:
<I>rabbitmqctl</I>(8), <I>rabbitmqctl add_vhost</I>(8), <I>rabbitmqctl delete_vhost</I>(8), <I>rabbitmqctl set_permissions</I>(8), <I>rabbitmqctl list_vhosts</I>(8)


title: TLDR
content:
<b>List all virtual hosts</b>`rabbitmqctl list_vhosts`<br><b>Add a new virtual host</b>`rabbitmqctl add_vhost [vhost_name]`<br><b>Delete a virtual host</b>`rabbitmqctl delete_vhost [vhost_name]`<br><b>Set permissions for a user on a specific virtual host</b>`rabbitmqctl set_permissions [[-p|--vhost]] [vhost_name] [username] [read] [write] [configure]`<br><b>Clear permissions for a user on a specific virtual host</b>`rabbitmqctl clear_permissions [[-p|--vhost]] [vhost_name] [username]`


title: PARAMETERS
content:
<b><i>stack-name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. The name of the stack for which to open the console. If not specified, the command used the currently selected stack.<br><br>


title: DESCRIPTION
content:
The <i>pulumi-console</i> command was a utility within the Pulumi CLI designed to quickly launch a web browser and navigate to the Pulumi Cloud Console for the currently selected stack. It provided a graphical interface to view stack details, update history, resource states, logs, and more, offering a convenient way to manage Pulumi deployments without leaving the terminal. This command served as a bridge between the command-line workflow and the more visual web-based management interface of the Pulumi service.


title: CAVEATS
content:
<b>Deprecation:</b> The <i>pulumi-console</i> command is deprecated and has been removed from recent versions of the Pulumi CLI. Users should now use <br><b>pulumi stack open</b><br> to achieve similar functionality, or directly access the Pulumi Cloud Console in their web browser (e.g., app.pulumi.com).<br><br><b>Internet Connection:</b> Requires an active internet connection to access the Pulumi Cloud Console.<br><br><b>Pulumi Account:</b> Requires authentication with a Pulumi account that has access to the specified stack and organization.


title: REPLACEMENT COMMAND
content:
Users are strongly advised to use <b>pulumi stack open</b> instead. For example, <b>pulumi stack open --console</b> will directly open the console for the current stack.


title: WEB INTERFACE
content:
The Pulumi Cloud Console (accessible via <br><i>app.pulumi.com</i><br>) provides comprehensive features for monitoring, managing, and collaborating on Pulumi deployments, including detailed resource views, activity logs, policy enforcement, and more.


title: HISTORY
content:
The <i>pulumi-console</i> command was part of the early Pulumi CLI toolset, designed to provide seamless integration with the Pulumi Cloud Console, which is a web-based dashboard for managing cloud infrastructure. As the Pulumi CLI evolved, many commands were consolidated or renamed for clarity and consistency. <i>pulumi-console</i> was eventually deprecated and its functionality absorbed into the more general <b>pulumi stack open</b> command, which provides a broader ability to open various stack-related URLs, not just the main console. This change streamlined the CLI and made it more intuitive for users to navigate between command-line operations and the web-based console.


title: TLDR
content:
<b>Open the current stack</b>`pulumi console`<br><b>Open the console for a specific stack</b>`pulumi console [[-s|--stack]] [stack_name]`<br><b>Display help</b>`pulumi console [[-h|--help]]`


title: SYNOPSIS
content:
<I>pulumi schema</I> &lt;command&gt; [options]<br><br>Common commands:<br><I>pulumi schema</I> <B>build</B> [options]<br><I>pulumi schema</I> <B>check</B> [options]<br><I>pulumi schema</I> <B>gen-nodejs</B> [options]<br><I>pulumi schema</I> <B>print</B> [options]<br><I>pulumi schema</I> <B>validate</B> [options]


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help for the <I>schema</I> command or its subcommands.<br><br><b>--emoji</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable emojis in the output.<br><br><b>--logflow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable resource property flow logging (debug).<br><br><b>--logtostderr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log to stderr instead of to files.<br><br><b>--tracing <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable tracing to the Zipkin collector at the given address. The default is disabled.<br><br><b>--verbose <int></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose logging (e.g., <I>--verbose=3</I>, or <I>--v=3</I>).<br><br>Note: Many <I>pulumi schema</I> subcommands have their own specific parameters not listed here. Use <I>pulumi schema &lt;subcommand&I> <I>--help</I> for details.<br><br>


title: DESCRIPTION
content:
<I>pulumi-schema</I> is a sub-command of the Pulumi CLI that provides utilities for working with Pulumi package schemas. A Pulumi schema is a machine-readable definition that describes the resources, functions, and types exposed by a Pulumi provider. These schemas are crucial for enabling cross-language support, IDE features (like autocompletion and type checking), and policy enforcement. <br><br>The <I>pulumi-schema</I> command allows developers to perform various operations related to these schemas, including: building a schema from a Pulumi program, checking a schema for correctness, comparing schema versions, and most importantly, generating language-specific SDKs (Software Development Kits) for popular languages like TypeScript/JavaScript, Python, Go, .NET, and Java. It also supports printing, linting, and validating schema definitions, making it an essential tool for provider developers and users interested in deep introspection of their infrastructure as code definitions.


title: CAVEATS
content:
Some <I>pulumi schema</I> operations, particularly <I>pulumi schema build</I>, require a Pulumi program or project context to function correctly. The generated language SDKs depend on the stability of the underlying schema; changes to schemas can potentially introduce breaking changes in generated code if not managed properly. Ensure you are using a compatible Pulumi CLI version with your provider and schema versions.


title: WHAT IS A PULUMI SCHEMA?
content:
A Pulumi schema is a JSON-formatted file (typically named <I>schema.json</I>) that formally describes the interface of a Pulumi provider or package. It defines the types of resources, input and output properties, functions, and enums that the provider exposes. This standardized definition allows Pulumi to automatically generate type-safe SDKs in various programming languages, provide rich IDE experiences (intellisense, type checking), and enable powerful policy as code capabilities without requiring manual mapping or boilerplate code for each language.


title: COMMON USE CASES
content:
The <I>pulumi schema</I> command is primarily used by:<br><B>Provider Developers:</B> To build, validate, and lint their provider's schema, ensuring it's correct and complete before distribution.<br><B>Language SDK Generation:</B> To generate the language-specific SDKs (e.g., TypeScript, Python, Go) from a provider's schema, making the provider consumable in different programming languages.<br><B>Tooling Developers:</B> To programmatically understand the capabilities of a Pulumi provider for building custom tools or integrations.


title: HISTORY
content:
Pulumi was first released in 2018, aiming to bring familiar programming languages to infrastructure as code. The concept of a strongly typed, machine-readable schema for providers was fundamental to Pulumi's multi-language support from its early days. The <I>pulumi schema</I> command and its various subcommands evolved as Pulumi matured, adding support for new languages (like Java, Go, .NET) and refining the schema definition (like adding more type system capabilities) to improve the developer experience and enable more robust tooling.


title: TLDR
content:
<b>Check a package schema</b>`pulumi schema check [path/to/file]`<br><b>Check a package schema without failing if the reference to a type is missing</b>`pulumi schema check --allow-dangling-references [path/to/file]`<br><b>Display help</b>`pulumi schema check [[-h|--help]]`


title: SYNOPSIS
content:
<b>cava</b> [options]<br><b>cava</b> <b>-p</b> <i>&lt;path&gt;</i> | <b>--config=</b><i>&lt;path&gt;</i><br><b>cava</b> <b>-v</b> | <b>--version</b><br><b>cava</b> <b>-h</b> | <b>--help</b><br><br><i>Note: Most of <b>cava</b>'s extensive customization is done via a configuration file, not command-line options.</i>


title: PARAMETERS
content:
<b><b>-p</b> <i>&lt;path&gt;</i>, <b>--config=</b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies an alternative configuration file path instead of the default (~/.config/cava/config).</i><br><br><b><b>-f</b>, <b>--fifo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces CAVA to use FIFO (named pipe) input mode, overriding the configuration file setting.</i><br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current version information of CAVA.</i><br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a brief help message with available command-line options.</i><br><br>


title: DESCRIPTION
content:
<i><b>cava</b> is a highly configurable, console-based audio spectrum analyzer designed for Linux. It visualizes real-time audio output directly in your terminal, providing a dynamic and aesthetically pleasing representation of sound frequencies. It supports various audio inputs, including <b>PulseAudio</b>, <b>ALSA</b>, <b>JACK</b>, <b>sndio</b>, and even a <b>FIFO</b> (named pipe) for more advanced setups. Users can customize nearly every aspect of its appearance, from the number of bars and their colors to the visualizer type (e.g., ASCII, blocks, or Unicode characters), resolution, and sensitivity. Its lightweight design makes it suitable for running in the background while playing music, providing a unique visual experience for audiophiles and terminal enthusiasts alike. <b>cava</b> stands out for its extensive configurability, primarily managed through a dedicated configuration file, allowing for deep personalization of the visualization.</i>


title: CAVEATS
content:
<i><b>cava</b>'s performance and appearance can vary significantly depending on the terminal emulator used; some terminals may offer better rendering and lower latency. Proper configuration of audio input sources (e.g., <b>PulseAudio</b> loopback module or <b>ALSA</b> monitor) is essential for <b>cava</b> to receive audio data, which can sometimes be a hurdle for new users. While highly customizable, the sheer number of configuration options in its config file can be overwhelming initially. It's primarily a visualizer and not intended for precise audio analysis or recording.</i>


title: CONFIGURATION FILE
content:
<i><b>cava</b> is primarily configured through a text-based configuration file, typically located at <b>~/.config/cava/config</b> or <b>/etc/cava/config</b>. This file allows users to define parameters such as input source, output method, color schemes, bar dimensions, frequency range, and responsiveness. Extensive documentation on available options is usually provided within the default configuration file or the project's GitHub page.</i>


title: AUDIO INPUT SOURCES
content:
<i><b>cava</b> supports a variety of audio input methods to capture sound for visualization. These include: <b>PulseAudio</b> (via a loopback module), <b>ALSA</b> (monitoring a sound card's output), <b>JACK</b> (a professional audio server), <b>sndio</b> (OpenBSD's audio system), and <b>FIFO</b> (a named pipe, allowing audio data from any source to be streamed into <b>cava</b>). Users must select and properly configure the appropriate input source based on their system's audio setup.</i>


title: OUTPUT VISUALIZERS
content:
<i><b>cava</b> offers different visualizer types to render the spectrum in the terminal. The primary modes include <b>ASCII</b> characters (using simple characters like #), block characters (filling terminal cells), and <b>Unicode</b> characters (using block elements for smoother rendering). The choice of visualizer, combined with customizable colors and bar styles, allows for a wide range of aesthetic outcomes.</i>


title: HISTORY
content:
<i><b>cava</b> was initiated by <i>Karl Stav</i>, with its first commits appearing on GitHub around <i>2016</i>. It emerged as a response to the need for a modern, highly customizable, and resource-efficient audio spectrum analyzer that could run directly in the Linux terminal. Over the years, it has gained significant popularity within the Linux community due to its flexibility with various audio backends (<b>PulseAudio</b>, <b>ALSA</b>, <b>JACK</b>) and its extensive visual customization options. Its development has been community-driven, with contributions enhancing its features, stability, and compatibility across diverse system setups, solidifying its position as a go-to tool for real-time audio visualization in the console.</i>


title: TLDR
content:
<b>Start the visualizer</b>`cava`<br><b>Use the specified configuration file</b>`cava -p [path/to/file]`<br><b>Increase/Decrease sensitivity</b>`[<ArrowUp>|<ArrowDown>]`<br><b>Increase/Decrease the number of bars</b>`[<ArrowRight>|<ArrowLeft>]`<br><b>Reload the configuration file (this resets the number of bars and sensitivity)</b>`<r>`<br><b>Reload colors from the configuration file</b>`<c>`<br><b>Cycle the foreground/background color</b>`[<f>|<b>]`<br><b>Quit</b>`<q>`


title: SYNOPSIS
content:
The `rabbitmqctl-cluster` is not a direct executable command but a conceptual grouping of cluster-related subcommands of `rabbitmqctl`. Below are synopses for common cluster management operations:<br><br><b>rabbitmqctl</b> <i>cluster_status</i><br><b>rabbitmqctl</b> <i>join_cluster &lt;cluster_node&gt;</i><br><b>rabbitmqctl</b> <i>change_cluster_node_type disc | ram</i><br><b>rabbitmqctl</b> <i>forget_cluster_node [--offline] &lt;node&gt;</i><br><b>rabbitmqctl</b> <i>leave_cluster</i>


title: PARAMETERS
content:
<b>cluster_node</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For <i>join_cluster</i>, specifies the name of an existing node in the target cluster (e.g., 'rabbit@hostname'). The joining node must be stopped before executing this command.<br><br><b>disc | ram</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For <i>change_cluster_node_type</i>, specifies the new type for the node. 'disc' nodes store all definitions (queues, exchanges, bindings, users, etc.) on disk. 'ram' nodes store definitions in memory, requiring at least one disc node in the cluster to persist them.<br><br><b>--offline</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional flag for <i>forget_cluster_node</i>. When used, the command attempts to forget a node even if it is currently offline. Requires careful use to avoid cluster partitioning issues.<br><br><b>node</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For <i>forget_cluster_node</i>, specifies the name of the node to be removed from the cluster. This node is typically offline or will be permanently decommissioned. For <i>leave_cluster</i>, the command implicitly applies to the node on which it is executed.<br><br>


title: DESCRIPTION
content:
The term <b>rabbitmqctl-cluster</b> generally refers to the suite of cluster management commands available within the primary RabbitMQ command-line tool, <b>rabbitmqctl</b>. Unlike a standalone executable, cluster operations in RabbitMQ are performed by invoking <b>rabbitmqctl</b> with specific subcommands such as <i>join_cluster</i>, <i>cluster_status</i>, <i>forget_cluster_node</i>, and <i>change_cluster_node_type</i>. These commands enable administrators to form new clusters, add or remove nodes from existing clusters, inspect cluster state, and modify node characteristics within the cluster. They are fundamental for maintaining the high availability and scalability of RabbitMQ deployments, ensuring that messaging services can seamlessly operate across multiple distributed nodes.


title: CAVEATS
content:
<ul><li><b>Erlang Cookie Mismatch:</b> All nodes in a RabbitMQ cluster must share the same Erlang cookie. A mismatch will prevent nodes from communicating and forming a cluster.</li><li><b>Network Connectivity:</b> Proper network connectivity and hostname resolution between all cluster nodes are essential for reliable operation.</li><li><b>Node Status:</b> Commands like <i>join_cluster</i> require the joining node to be stopped, while <i>cluster_status</i> and <i>forget_cluster_node</i> (without <i>--offline</i>) require the target node to be running.</li><li><b>Data Loss and Partitioning:</b> Misuse of commands like <i>forget_cluster_node</i> can lead to data loss or cluster partitioning if not carefully managed, especially with unsynchronised queues.</li><li><b>Disc Node Requirement:</b> A RabbitMQ cluster must always have at least one disc node to persist its configuration and metadata. Removing the last disc node is not permitted without converting another node to disc type first.</li></ul>


title: ERLANG COOKIE
content:
The Erlang cookie is a secret string that acts as a shared password for Erlang nodes to authenticate with each other. For RabbitMQ nodes to form a cluster, they must have identical Erlang cookies. This cookie is typically stored in a file (e.g., <i>/var/lib/rabbitmq/.erlang.cookie</i> or <i>$HOME/.erlang.cookie</i>) and must be consistent across all cluster members.


title: NODE TYPES (DISC VS. RAM)
content:
RabbitMQ nodes can be of two types: <b>disc</b> or <b>ram</b>. Disc nodes store queue and exchange definitions, user data, virtual hosts, and other persistent metadata on disk. RAM nodes store these definitions only in memory. While RAM nodes generally perform better for certain operations due to less disk I/O, a cluster must always have at least one disc node to ensure persistence of the cluster's state. If all disc nodes are lost, the cluster's configuration would be lost. Changes to definitions on a RAM node are replicated to all other nodes, ensuring they are ultimately persisted by a disc node.


title: CLUSTER FORMATION BASICS
content:
To form a RabbitMQ cluster: 1. Ensure all nodes have identical Erlang cookies. 2. Start the first node (which becomes a disc node by default). 3. For subsequent nodes, stop the RabbitMQ application (<i>rabbitmqctl stop_app</i>), then use <i>rabbitmqctl join_cluster &lt;existing_node&gt;</i>, and finally start the application (<i>rabbitmqctl start_app</i>). It's recommended to join nodes to an already running disc node. After joining, nodes will share definitions and messages can be routed across them.


title: HISTORY
content:
RabbitMQ has supported clustering since its early versions, with the core clustering logic built upon Erlang's distributed capabilities. The `rabbitmqctl` utility, which provides all cluster management commands, has been an integral part of the RabbitMQ server distribution from the start. Over time, commands have been refined and new ones introduced (e.g., more robust handling of node types, improved `forget_cluster_node` functionality) to enhance cluster resilience, manageability, and provide better diagnostics. The fundamental approach of using `rabbitmqctl` to interact with the running Erlang VM and RabbitMQ application remains consistent.


title: TLDR
content:
<b>Display the status of the cluster</b>`rabbitmqctl cluster_status`<br><b>Display the status of the current node</b>`rabbitmqctl status`<br><b>Start the RabbitMQ application on a specific node</b>`rabbitmqctl [[-n|--node]] [nodename] start_app`<br><b>Stop the RabbitMQ application on a specific node</b>`rabbitmqctl [[-n|--node]] [nodename] stop_app`<br><b>Stop a specific RabbitMQ node</b>`rabbitmqctl [[-n|--node]] [nodename] stop`<br><b>Reset a specific RabbitMQ node to a clean state</b>`rabbitmqctl [[-n|--node]] [nodename] reset`<br><b>Make the current node join an existing cluster</b>`rabbitmqctl join_cluster [nodename]`


title: SYNOPSIS
content:
<i><br>The term "wlc" primarily refers to the <b>Wayland Compositor Library (libwlc)</b>, a development library, and not a direct, executable Linux command. Therefore, a standard command synopsis in the form of `command [options] [arguments]` does not apply.<br><br>Functionality derived from libwlc is typically integrated into other Wayland compositors or specialized debugging/development utilities that might use "wlc" in their name, but `wlc` itself is not a command.</i>


title: PARAMETERS
content:
<b><i>(Not applicable)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>As "wlc" is a library and not a standalone command, it does not accept command-line parameters in the traditional sense. Its functionalities are invoked programmatically by applications built upon it. Any tools that might have 'wlc' in their name (e.g., `wlc-backend-info`) would have their own specific set of options and arguments.</i><br><br>


title: DESCRIPTION
content:
<i>"wlc"</i> primarily refers to the <b>Wayland Compositor Library (libwlc)</b>, an integral C library designed for creating Wayland compositors. Wayland is a modern display server protocol, aiming to replace the older X Window System. Unlike traditional Linux commands such as `ls` or `grep`, `wlc` is not an executable program that a user would run directly from the terminal.<br><br>Instead, it serves as a foundational building block, providing a robust and extensible framework for developers to implement their own Wayland compositors. These compositors manage windows, drawing, input, and other graphical elements on a user's screen. While `libwlc` significantly simplified the development of Wayland environments, it has since been largely superseded by newer projects like `wlroots`, which offers a more modular and feature-rich approach to Wayland compositor development.


title: CAVEATS
content:
<i>`wlc` itself is not a direct command-line utility. It is a library used by developers to build Wayland compositors. Users typically interact with the compositors built using `wlc` (or similar libraries like `wlroots`), rather than `wlc` directly. It's crucial to understand this distinction to avoid confusion.<br><br>Furthermore, `libwlc` has largely been deprecated in favor of `wlroots` for new Wayland compositor development, offering more flexibility and features. While existing compositors might still rely on `libwlc`, new projects are encouraged to use `wlroots`.</i>


title: USAGE CONTEXT
content:
<i>While `wlc` is not a command, its influence is seen in Wayland-based desktop environments and window managers. If you are using a compositor built with `libwlc` (e.g., some older versions of `sway` or other custom compositors), you are indirectly utilizing `wlc`'s capabilities. Debugging and development tools related to Wayland might occasionally expose information or settings that reference the underlying `libwlc`.</i>


title: DISTINGUISHING FROM `WC`
content:
<i>It's important not to confuse `wlc` with `wc` (Word Count), which is a standard Linux command used to count lines, words, and characters in files. They are completely unrelated in functionality and purpose.</i>


title: HISTORY
content:
<i>The `libwlc` project was initiated with the goal of providing a stable, performant, and easy-to-use library for developing Wayland compositors. It aimed to abstract away much of the complexity of the Wayland protocol, allowing developers to focus on the unique features of their compositors. It gained traction as an alternative to building compositors from scratch using low-level Wayland protocols.<br><br>However, over time, `libwlc`'s architecture proved less flexible for certain advanced use cases and its maintenance slowed. This led to the creation and rise of `wlroots`, which adopted a more modular approach, allowing compositors to pick and choose components as needed. Consequently, `libwlc` is now largely considered deprecated, with `wlroots` being the de facto standard for new Wayland compositor development.</i>


title: TLDR
content:
<b>List projects using a configuration file</b>`wlc [[-c|--config]] [path/to/file] list-projects`<br><b>List components in a project, and override API URL and API key</b>`wlc [[-u|--url]] [URL] [[-k|--key]] [key] ls [project]`<br><b>List translations from a component in a specific format</b>`wlc [[-f|--format]] [text|csv|json|html] ls [project]/[component]`<br><b>Print statistics for a project</b>`wlc stats [project]`<br><b>Display help</b>`wlc [[-h|--help]]`


title: SYNOPSIS
content:
Due to its extreme obscurity and lack of official documentation, a precise synopsis for <b>kdash</b> cannot be provided. It is speculated that if it accepted arguments, they would likely be related to the specific KDE action or application to be launched, possibly in the form: <br><code><b>kdash</b> <i>[action_name] [arguments...]</i></code>


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As <b>kdash</b> is not a standard or documented command, there are no known or verifiable command-line options or parameters. Any functionality it might have possessed would have been internal or highly specific to its intended (and undocumented) use case.<br><br>


title: DESCRIPTION
content:
The <b>kdash</b> command is an exceedingly rare and largely undocumented utility, purportedly associated with older KDE desktop environments. Its exact purpose and command-line interface are not widely known, and it is not a standard component of most modern Linux distributions. <br><br>Based on very limited historical references, <b>kdash</b> was conceptualized as a 'KDE Desktop Actions Shell,' suggesting it might have been used to execute predefined KDE desktop actions or launch applications directly from the command line. However, comprehensive documentation detailing its syntax, options, or typical usage patterns is virtually nonexistent. <br><br>Users seeking similar functionality in contemporary KDE Plasma environments typically rely on tools like KRunner (Alt+Space) or <b>qdbus</b> for programmatic interaction with KDE services. Consequently, <b>kdash</b> is considered an obscure or potentially deprecated command with very limited practical relevance today.


title: CAVEATS
content:
The <b>kdash</b> command is <b>not a standard Linux utility</b> and is <b>not available</b> on most modern distributions. <br>Information about its functionality, syntax, and options is <b>extremely limited or non-existent</b> in official documentation or man pages. <br>It is likely a deprecated or highly specific tool from older KDE environments, and its functionality has been superseded by more robust and documented methods like KRunner or <b>qdbus</b> for interacting with KDE.


title: MODERN ALTERNATIVES
content:
Users looking for functionality akin to what <b>kdash</b> was speculated to provide in older KDE environments should consider using <b>KRunner</b> (typically invoked with Alt+Space), which provides a powerful, searchable interface for launching applications, running commands, and performing various desktop actions. For scripting and programmatic interaction with KDE services, the <b>qdbus</b> command-line tool offers extensive capabilities.


title: HISTORY
content:
Detailed historical information regarding <b>kdash</b> is scarce. It appears to have emerged within older KDE desktop environments, potentially as a developer or power-user tool for rapid invocation of desktop actions. Its limited public documentation suggests it never achieved widespread adoption or was formally integrated as a user-facing command-line utility. Its decline in usage and documentation likely coincides with the evolution of KDE's architecture and the introduction of more user-friendly and robust desktop interaction mechanisms.


title: TLDR
content:
<b>Show dashboard</b>`kdash`<br><b>Show dashboard in debug mode and write logs to a file in the current directory</b>`kdash [[-d|--debug]]`<br><b>Set the tick rate</b>`kdash [[-t|--tick-rate]] [100]`<br><b>Set the polling rate (must be a multiple of the tick rate)</b>`kdash [[-t|--tick-rate]] [200] [[-p|--poll-rate]] [400]`


title: TLDR
content:
<b>Open specific paths in Zed</b>`zed [path/to/file_or_directory1 path/to/file_or_directory2 ...]`<br><b>Open a path in foreground and display logs</b>`zed [path/to/project] --foreground`<br><b>Open a path in new window</b>`zed [path/to/project] [[-n|--new]]`<br><b>Open a file at the given line number and column</b>`zed [path/to/file]:[line_number]:[column_number]`<br><b>Open a diff tab in Zed for two versions of a file</b>`zed --diff [path/to/old_file] [path/to/new_file]`


title: SYNOPSIS
content:
<b>pulumi plugin</b> <i>&lt;command&gt;</i> [<i>&lt;arguments&gt;</i>...] [<i>&lt;options&gt;</i>]<br><br>Common Commands:<br> &nbsp;&nbsp;<b>pulumi plugin install</b> <i>&lt;type&gt; &lt;name&gt;</i> [<i>&lt;version&gt;</i>] [--file <i>&lt;path&gt;</i> | --server <i>&lt;url&gt;</i>]<br> &nbsp;&nbsp;<b>pulumi plugin ls</b> [<i>&lt;options&gt;</i>]<br> &nbsp;&nbsp;<b>pulumi plugin rm</b> <i>&lt;name&gt;</i> [<i>&lt;options&gt;</i>]<br> &nbsp;&nbsp;<b>pulumi plugin inspect</b> <i>&lt;type&gt; &lt;name&gt;</i> [<i>&lt;version&gt;</i>]


title: PARAMETERS
content:
<b><b>install</b> <i>&lt;type&gt; &lt;name&gt;</i> [<i>&lt;version&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a Pulumi plugin. <i>&lt;type&gt;</i> can be 'resource' or 'language', and <i>&lt;name&gt;</i> is the plugin identifier (e.g., 'aws', 'python'). An optional <i>&lt;version&gt;</i> can be specified.<br><br><b><b>--file</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a local file path to install the plugin from, rather than downloading from a registry.<br><br><b><b>--server</b> <i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom plugin server URL to download the plugin from.<br><br><b><b>--reinstall</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces reinstallation of a plugin, even if it's already installed.<br><br><b><b>ls</b> / <b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all currently installed Pulumi plugins, showing their type, name, and version.<br><br><b><b>rm</b> / <b>uninstall</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified plugin by its name. Use <i>--all</i> to remove all plugins.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>rm</b> to remove all installed plugins.<br><br><b><b>inspect</b> <i>&lt;type&gt; &lt;name&gt;</i> [<i>&lt;version&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inspects and displays detailed information about a specific installed plugin.<br><br><b><b>--logtostderr</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log to stderr instead of to files.<br><br><b><b>--non-interactive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable interactive prompts (e.g., for confirmations).<br><br>


title: DESCRIPTION
content:
The <b>pulumi-plugin</b> command is a crucial utility within the Pulumi Command Line Interface (CLI) that enables users to manage external components necessary for infrastructure provisioning: plugins. These plugins come in various types, primarily <i>resource providers</i> (which interact with cloud services like AWS, Azure, GCP, or Kubernetes) and <i>language hosts</i> (which allow Pulumi to execute code written in languages such as TypeScript, Python, Go, and C#).<br><br>The command facilitates operations like installing new plugins from official registries or specified sources, listing currently installed plugins, and removing no-longer-needed plugins. By abstracting the complexity of plugin management, <b>pulumi-plugin</b> ensures that developers can easily extend Pulumi's capabilities to interact with a vast array of services and write infrastructure as code in their preferred programming languages. It plays a vital role in maintaining the integrity and functionality of Pulumi environments, allowing for seamless execution of Pulumi programs across different cloud providers and programming paradigms.


title: CAVEATS
content:
Using the correct plugin version is crucial; mismatches between your Pulumi program's dependency and the installed plugin can lead to errors.<br>Plugins downloaded from non-official sources should be used with caution, as they could pose security risks.<br>The <b>pulumi plugin</b> command requires an active internet connection for installing plugins from remote servers unless using the <i>--file</i> option.


title: PLUGIN TYPES
content:
Pulumi primarily utilizes two main types of plugins:<br><i>Resource Providers</i>: These plugins encapsulate the logic for interacting with cloud APIs (e.g., AWS, Azure, GCP, Kubernetes) to provision and manage resources.<br><i>Language Hosts</i>: These plugins enable Pulumi to understand and execute infrastructure code written in various programming languages (e.g., TypeScript, Python, Go, C#, Java, YAML, F#).


title: AUTOMATIC VS. MANUAL PLUGIN MANAGEMENT
content:
While <b>pulumi plugin</b> allows manual management, Pulumi often automatically installs required plugins when you run commands like <b>pulumi up</b> or <b>pulumi refresh</b>, based on your <i>Pulumi.yaml</i> and language-specific dependency files (e.g., <i>package.json</i>, <i>requirements.txt</i>). Manual management is useful for specific versions, offline scenarios, or custom plugin sources.


title: HISTORY
content:
Pulumi, launched in 2018, was designed from the ground up to allow developers to use general-purpose programming languages for infrastructure as code. This core philosophy necessitated a robust plugin architecture to enable interaction with various cloud providers and support multiple programming languages. The <b>pulumi-plugin</b> command has been an integral part of the Pulumi CLI since its early days, continuously evolving to support new plugin types, mirror capabilities, and improve the overall developer experience in managing these essential components. Its development closely tracks the expansion of the Pulumi ecosystem and the growing number of supported providers and languages.


title: TLDR
content:
<b>List all plugins on the downloaded cache</b>`pulumi plugin ls`<br><b>List plugins being used by the current project in JSON format</b>`pulumi plugin [[-p|--project]] [[-j|--json]]`<br><b>Install a plugin kind (e.g resource) with the latest version or a specific one</b>`pulumi plugin install [kind] [name] [version]`<br><b>Remove a plugin kind (e.g. resource) and interactively pick a version or provide a specific one</b>`pulumi plugin rm [kind] [name] [version]`<br><b>Display help</b>`pulumi plugin [[-h|--help]]`


title: SYNOPSIS
content:
<b>rabbitmqctl</b> [<i>GLOBAL_OPTIONS</i>] <<i>COMMAND</i>> [<i>COMMAND_OPTIONS/ARGUMENTS</i>]<br><br><i>GLOBAL_OPTIONS</i>: Options affecting <b>rabbitmqctl</b> itself, like target node, output format, or timeout.<br><i>COMMAND</i>: The specific administrative action to perform (e.g., <b>status</b>, <b>add_user</b>, <b>list_queues</b>).<br><i>COMMAND_OPTIONS/ARGUMENTS</i>: Arguments specific to the chosen command.


title: PARAMETERS
content:
<b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the status of the RabbitMQ node and application, including running applications, ports, and memory usage.<br><br><b>stop_app</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops the RabbitMQ application on the target node, but leaves the Erlang VM running. Essential before operations like <b>reset</b>.<br><br><b>start_app</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the RabbitMQ application on a node where the Erlang VM is already running (e.g., after <b>stop_app</b>).<br><br><b>reset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resets a node to its virgin state, deleting all persistent data (queues, exchanges, bindings, users, vhosts). Requires the RabbitMQ application to be stopped first.<br><br><b>force_reset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a node to reset its state without requiring the application to be stopped, potentially leading to data loss if not used carefully.<br><br><b>add_user <username> <password></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new user with the specified username and password.<br><br><b>delete_user <username></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an existing user from the broker.<br><br><b>list_users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configured users and their tags (e.g., administrator, management).<br><br><b>add_vhost <vhost_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new virtual host, which acts as a logical grouping for queues, exchanges, and bindings.<br><br><b>delete_vhost <vhost_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an existing virtual host and all its contents (queues, exchanges, messages).<br><br><b>list_vhosts</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configured virtual hosts.<br><br><b>set_permissions <username> <vhost> <conf_perm> <write_perm> <read_perm></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets permissions for a user on a specific virtual host, defining their access rights for configuration, writing, and reading.<br><br><b>list_permissions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all permissions for all users on all virtual hosts.<br><br><b>set_policy <vhost> <name> <pattern> <definition> [priority] [apply-to]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a policy to apply specific configurations (e.g., high availability, message TTL) to queues or exchanges matching a given pattern within a vhost.<br><br><b>list_policies</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configured policies across all virtual hosts.<br><br><b>join_cluster <cluster_node></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes the current node join an existing cluster by connecting to an already running cluster node.<br><br><b>cluster_status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the status of the entire RabbitMQ cluster, including all participating nodes and their types (disk/RAM).<br><br><b>import_definitions <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports RabbitMQ definitions (users, vhosts, queues, exchanges, policies, etc.) from a JSON file, typically generated by <b>export_definitions</b>.<br><br><b>export_definitions <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports all RabbitMQ definitions from the broker into a JSON file, useful for backup or migration.<br><br><b>await_startup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits until the RabbitMQ application has started successfully on the target node before exiting. Useful in scripting.<br><br><b>report</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a comprehensive diagnostic report containing system information, logs, and RabbitMQ specifics, useful for troubleshooting.<br><br>


title: DESCRIPTION
content:
<i>rabbitmqctl</i> is the primary command-line tool for administrating RabbitMQ, the popular open-source message broker. It provides a wide range of functionalities to interact with and control RabbitMQ nodes and clusters, including managing users, virtual hosts, permissions, policies, and node-level operations like starting, stopping, and resetting.<br><br>It communicates directly with the Erlang VM running the RabbitMQ application, allowing for real-time control and monitoring of the broker's state. This utility is essential for system administrators and developers alike to maintain, scale, and troubleshoot RabbitMQ deployments. Its commands cover everything from checking the health of a node or cluster to defining how messages are routed and consumed. Whether you're adding a new user, setting up a highly available queue, or debugging connection issues, <i>rabbitmqctl</i> is the primary interface for managing your RabbitMQ environment.


title: CAVEATS
content:
Most <i>rabbitmqctl</i> commands require the RabbitMQ Erlang node to be running for execution.<br><br>Many commands require administrative privileges on the host system or the RabbitMQ broker itself (e.g., a user with the <b>administrator</b> tag).<br><br>Improper use of destructive commands like <b>reset</b>, <b>force_reset</b>, <b>delete_user</b>, or <b>delete_vhost</b> can lead to permanent data loss or significant service disruption. Always back up definitions before major changes.<br><br>For successful clustering and inter-node communication, all RabbitMQ nodes and the <i>rabbitmqctl</i> command must share the same Erlang magic cookie.


title: NODE NAMING AND CONNECTIVITY
content:
RabbitMQ nodes are identified by Erlang node names (e.g., <i>rabbit@hostname</i>). <i>rabbitmqctl</i> by default attempts to connect to <i>rabbit@</i> followed by the local hostname. This target node can be explicitly overridden using the <b>-n &lt;node&gt;</b> global option. Connectivity also relies on the Erlang Port Mapper Daemon (<i>epmd</i>) and correctly configured network ports.


title: ERLANG COOKIE
content:
For <i>rabbitmqctl</i> to communicate securely with a RabbitMQ node, both must share the same Erlang magic cookie (a secret string). This cookie is typically found in <i>/var/lib/rabbitmq/.erlang.cookie</i> or <i>~/.erlang.cookie</i>. If the cookies differ, commands will fail with connection errors like 'could not connect to node <i>'rabbit@hostname'</i>'. Ensure consistent cookie files across all cluster nodes and for any administrative tools.


title: SECURITY CONTEXT
content:
<i>rabbitmqctl</i> commands often need to be run as the <b>rabbitmq</b> user or <b>root</b> with appropriate permissions to access configuration files, logs, and interact with the running Erlang process. Incorrect permissions can prevent the tool from functioning correctly or connecting to the node.


title: HISTORY
content:
RabbitMQ was first released in 2007 by Rabbit Technologies Ltd. <i>rabbitmqctl</i> has been an integral part of its administrative toolkit from early versions, evolving significantly with the broker to support new features, protocols (like AMQP 0-9-1, 1.0), and advanced clustering capabilities. Its reliance on Erlang's distributed capabilities means it interacts directly with the Erlang runtime on the RabbitMQ node, leveraging the language's strengths for robust distributed systems.


title: TLDR
content:
<b>Display the status of the current node</b>`rabbitmqctl status`<br><b>View documentation for RabbitMQ cluster commands</b>`tldr rabbitmqctl cluster`<br><b>View documentation for RabbitMQ user commands</b>`tldr rabbitmqctl users`<br><b>View documentation for RabbitMQ vhosts commands</b>`tldr rabbitmqctl vhosts`<br><b>Learn more about a specific command</b>`rabbitmqctl help [command]`


title: PARAMETERS
content:
<b><i>start</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches the interactive <b>TUI</b> (Text User Interface) for browsing your <i>Spotify</i> library, searching, and controlling playback. This is the primary way to use <i>spotify_player</i> interactively.<br><br><b><i>play</i> [<i>CONTEXT_URI</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts playback of a specified <i>Spotify</i> item. <i>CONTEXT_URI</i> can be a track, album, artist, playlist, or podcast <b>URI</b> (e.g., <i>spotify:track:XXXXXXXXXXXXX</i>).<br><br><b><i>pause</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pauses the currently playing track.<br><br><b><i>toggle-playback</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles the current playback state between playing and paused.<br><br><b><i>next</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips to the next track in the current queue or context.<br><br><b><i>previous</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips to the previous track in the current queue or context.<br><br><b><i>shuffle</i> [<i>on|off</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles the shuffle mode. Optionally specify <i>on</i> or <i>off</i> to explicitly set the shuffle state.<br><br><b><i>volume</i> [<i>VOLUME</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the playback volume to a specific level (0-100). If <i>VOLUME</i> is omitted, displays the current volume.<br><br><b><i>connect</i> <<i>DEVICE_ID</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to a specific <i>Spotify</i> Connect device using its unique <i>DEVICE_ID</i>.<br><br><b><i>login</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates the authentication process to link <i>spotify_player</i> with your <i>Spotify</i> account. Requires a web browser for authorization.<br><br><b><i>logout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs out from the current <i>Spotify</i> account, clearing stored credentials.<br><br><b><i>--config</i> <<i>PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the configuration file (default: <i>~/.config/spotify-player/config.toml</i>).<br><br><b><i>--theme</i> <<i>NAME</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a specific theme by name to the <b>TUI</b>. Themes are defined in the configuration file.<br><br><b><i>--log</i> <<i>LEVEL</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level (e.g., <i>debug</i>, <i>info</i>, <i>warn</i>, <i>error</i>).<br><br>


title: DESCRIPTION
content:
<i>spotify_player</i> is a powerful and lightweight command-line interface (CLI) application designed to bring the <i>Spotify</i> music experience directly into your terminal. Written in <b>Rust</b>, it provides a <b>TUI</b> (Text User Interface) for interactive browsing, searching, and managing your <i>Spotify</i> library.<br><br>Users can control playback (play, pause, skip, shuffle, volume), browse playlists, albums, artists, and tracks, manage their queue, and even connect to different <i>Spotify</i> Connect devices. Its keyboard-driven interface offers a fast and efficient way to interact with <i>Spotify</i> without leaving the terminal, making it ideal for developers and power users who prefer a command-line workflow.<br><br>Beyond the interactive TUI, <i>spotify_player</i> also offers a rich set of subcommands for direct control, allowing for scripting and integration into custom workflows.


title: CAVEATS
content:
Using <i>spotify_player</i> requires a <b>Spotify Premium</b> account for full functionality. Additionally, you must register a <b>Spotify Developer Application</b> to obtain a <i>Client ID</i> and <i>Client Secret</i>, which are essential for authentication with the <i>Spotify API</i>. The command is a third-party application and not part of standard Linux distributions; it needs to be installed separately, typically from source or via package managers like <i>Cargo</i> or community repositories.


title: CONFIGURATION
content:
The command's behavior, including themes, keybindings, and <i>Spotify API</i> credentials, is extensively customizable via a <b>TOML</b> configuration file, typically located at <i>~/.config/spotify-player/config.toml</i>. Users are encouraged to modify this file to tailor the experience to their preferences.


title: KEYBOARD SHORTCUTS AND MOUSE SUPPORT
content:
The <b>TUI</b> is primarily navigated using keyboard shortcuts, offering a highly efficient workflow. Many actions, such as browsing, playing, and queue management, are bound to intuitive keys. Additionally, <i>spotify_player</i> provides optional mouse support, allowing for clicks to interact with UI elements.


title: HISTORY
content:
<i>spotify_player</i> is a relatively modern open-source project, primarily developed by <b>Rigellian</b> and the community. It emerged from the desire to have a powerful and ergonomic <i>Spotify</i> client within the terminal, leveraging the performance and safety features of the <b>Rust</b> programming language. Its development focuses on providing a feature-rich <b>TUI</b> experience, robust playback control, and continuous integration of <i>Spotify API</i> enhancements.


title: TLDR
content:
<b>Start a daemon that plays music in the background</b>`spotify_player [[-d|--daemon]]`<br><b>Start the TUI (controls the daemon if available, otherwise starts its own client)</b>`spotify_player`<br><b>Use the specified theme</b>`spotify_player [[-t|--theme]] [theme_name]`<br><b>Use configuration files (app.toml, keymap.toml and theme.toml) in the specified directory</b>`spotify_player [[-c|--config-folder]] [path/to/directory]`<br><b>Like the currently playing track</b>`spotify_player like`<br><b>Display a list of keybindings</b>`<?>`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the main command or a specified subcommand.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <B>wezterm-cli</B> version information.<br><br><b>--config <FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to load for the WezTerm instance being interacted with.<br><br><b>--skip-config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents loading the user's default configuration file.<br><br><b><SUBCOMMAND></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform. Each subcommand has its own specific arguments and options (e.g., <B>list</B>, <B>spawn</B>, <B>send-text</B>, <B>split-pane</B>, <B>reload-configuration</B>).<br><br>


title: DESCRIPTION
content:
wezterm-cli is the command-line interface for the <B>WezTerm</B> GPU-accelerated terminal emulator. It provides a powerful way to interact with running WezTerm instances, enabling users to script, automate, and manage their terminal sessions programmatically.<br><br>With <B>wezterm-cli</B>, you can perform various actions such as listing active windows and panes, creating new tabs or split panes, sending text to specific panes, reloading configuration, activating windows, and much more. It's an essential tool for integrating WezTerm into shell scripts, CI/CD pipelines, or personal workflows that require programmatic control over the terminal environment. Its capabilities extend beyond simple interaction, allowing for complex session management and introspection of the terminal state.


title: CAVEATS
content:
Requires a running WezTerm GUI instance for most commands to operate on.<br>Some commands may behave differently based on the active pane or window context.<br>The exact set of subcommands and their options can vary between WezTerm versions. Always consult <I>wezterm-cli --help</I> for the most accurate and up-to-date information for your installed version.


title: SUBCOMMANDS OVERVIEW
content:
The <B>wezterm-cli</B> operates primarily through a rich set of subcommands, each designed for a specific task. Key subcommands include:<br><B>list</B>: Displays active windows, tabs, and panes.<br><B>spawn</B>: Creates new windows, tabs, or panes.<br><B>split-pane</B>: Divides the current pane into multiple panes.<br><B>send-text</B>: Injects text input into a specific pane.<br><B>activate</B>: Brings a specific window or pane to the foreground.<br><B>reload-configuration</B>: Forces all running WezTerm instances to reload their configuration.<br>This modular design allows for fine-grained control and powerful scripting.


title: HISTORY
content:
<B>wezterm-cli</B> evolved alongside the <B>WezTerm</B> terminal emulator, which was first released in 2019 by <I>Wez Furlong</I>. As WezTerm aimed to be a highly customizable and scriptable terminal, the need for a programmatic interface became apparent. The <B>wezterm-cli</B> was developed to provide this capability, allowing users to automate common tasks, integrate WezTerm into their development workflows, and manage sessions in a way similar to traditional terminal multiplexers but with WezTerm's unique features. Its design reflects WezTerm's philosophy of powerful configuration and extensibility.


title: TLDR
content:
<b>List windows, tabs, and panes</b>`wezterm cli list`<br><b>Split the current pane and print the new pane's ID to stdout</b>`wezterm cli split-pane --[left|right|top|bottom] --[cells|percent] [n]`<br><b>Activate (focus) a pane</b>`wezterm cli activate-pane --pane-id [id]`<br><b>Kill a pane</b>`wezterm cli kill-pane --pane-id [id]`


title: SYNOPSIS
content:
<b>kubectl auth &lt;command&gt; [options]</b><br><br>Examples of common commands:<br><b>kubectl auth login --provider oidc --cluster my-cluster --user my-user</b><br><b>kubectl auth configure --server https://my-k8s-api.com --ca-cert /path/to/ca.crt</b><br><b>kubectl auth token --cluster my-cluster --print</b>


title: PARAMETERS
content:
<b><b>login</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Establishes a new authentication context, typically guiding the user through a login flow for a specified provider.<br><br><b><b>configure</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures a specific cluster or user authentication detail within the <i>kubeconfig</i>, such as server endpoint or CA certificates.<br><br><b><b>token</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves or generates an authentication token for a specified cluster or user.<br><br><b><b>refresh</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Refreshes expired authentication tokens or credentials for a specified cluster context.<br><br><b><b>--provider &lt;name&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the authentication provider (e.g., <i>oidc</i>, <i>aws</i>, <i>azure</i>, <i>gcp</i>).<br><br><b><b>--cluster &lt;name&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies the target Kubernetes cluster context to configure or operate on.<br><br><b><b>--user &lt;name&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the user context name to create or update in the <i>kubeconfig</i>.<br><br><b><b>--kubeconfig &lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the <i>kubeconfig</i> file to modify (defaults to <i>~/.kube/config</i>).<br><br><b><b>--server &lt;url&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Kubernetes API server URL for a cluster configuration.<br><br><b><b>--ca-cert &lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the cluster's Certificate Authority (CA) certificate file.<br><br><b><b>--insecure-skip-tls-verify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set, skips TLS certificate verification for the API server (use with caution).<br><br><b><b>--overwrite</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If specified, allows overwriting existing <i>kubeconfig</i> entries (context, user, cluster).<br><br><b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the command or subcommand.<br><br>


title: DESCRIPTION
content:
<i>kubectl-auth</i> (often implemented as a <i>kubectl</i> plugin or a helper script) provides a simplified interface for configuring and managing authentication to Kubernetes clusters. It aims to abstract away the complexities of various authentication mechanisms, such as OIDC, cloud provider IAM (e.g., AWS EKS, Azure AKS, GCP GKE), client certificates, or static tokens. Its primary function is to generate or update <i>kubeconfig</i> entries, allowing users to seamlessly switch between clusters and authentication methods without manual <i>kubeconfig</i> editing.<br><br>This tool is particularly useful in environments where users interact with multiple clusters, each potentially requiring a different authentication flow. It enhances security by automating token refreshing and ensures correct <i>kubeconfig</i> setup, reducing common configuration errors and improving the overall user experience.


title: CAVEATS
content:
<i>kubectl-auth</i> is <i>not</i> a standard built-in <i>kubectl</i> command. Implementations vary widely (often as community-contributed plugins or scripts), leading to different command structures, options, and behaviors.<br><br>Users should exercise caution and verify the source when using third-party <i>kubectl-auth</i> tools, as they handle sensitive authentication credentials. Ensure the tool comes from a trusted and well-vetted source to mitigate security risks.<br><br>Some <i>kubectl-auth</i> implementations may have external dependencies on other command-line tools like <b>curl</b>, <b>jq</b>, <b>openssl</b>, or specific cloud provider CLIs (e.g., <b>aws</b>, <b>gcloud</b>, <b>az</b>) for their functionality.


title: HISTORY
content:
The need for <i>kubectl-auth</i> tools arose as Kubernetes adoption grew and clusters became hosted across various cloud providers or on-premises environments, each with diverse identity management systems. Early <i>kubectl</i> authentication was often manual, involving copying client certificates or static tokens.<br><br>As OIDC (OpenID Connect) and cloud provider IAM mechanisms became prevalent, helper tools emerged to automate the complex <i>kubeconfig</i> setup and token refreshing processes. These tools significantly improved user experience and security by streamlining the authentication workflow. While no single <i>kubectl-auth</i> implementation has become universally standardized, the concept is widely adopted and implemented across the Kubernetes ecosystem to simplify credential management.


title: SEE ALSO
content:
kubectl(1): The primary Kubernetes command-line tool., kubeconfig(5): Documentation for the Kubernetes configuration file format., aws-iam-authenticator(1): A common tool used for authenticating with AWS EKS clusters., gcloud(1): Google Cloud SDK command-line tool, often used for GKE authentication., az(1): Azure CLI command-line tool, often used for AKS authentication.


title: TLDR
content:
<b>Check if the current user can perform all actions on all resources in a specific namespace</b>`kubectl auth can-i '*' '*' [[-n|--namespace]] [namespace]`<br><b>Check if the current user can perform a specific verb on a specific resource</b>`kubectl auth can-i [verb] [resource] [[-n|--namespace]] [namespace]`<br><b>Check if a specific user or service account can perform an action on a resource</b>`kubectl auth can-i [verb] [resource] [[-n|--namespace]] [namespace] --as [user_or_sa]`<br><b>List all actions the current user is allowed to perform in a namespace</b>`kubectl auth can-i --list [[-n|--namespace]] [namespace]`


title: SYNOPSIS
content:
<b>pulumi policy</b> <I>subcommand</I> [options] [arguments]<br><br>Common subcommands include:<br><b>pulumi policy new</b> <I>[template]</I> <I>[--dir <path>]</I><br><b>pulumi policy ls</b> <I>[--json]</I><br><b>pulumi policy enable</b> <I><policy-pack-name></I> <I>--organization <org-name></I> <I>[--version <version>]</I> <I>[--config <key=value>]</I><br><b>pulumi policy disable</b> <I><policy-pack-name></I> <I>--organization <org-name></I><br><b>pulumi policy publish</b> <I>[<directory>]</I> <I>[--organization <org-name>]</I>


title: PARAMETERS
content:
<b>help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help for a command or subcommand.<br><br><b>--organization <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the organization name. Required for operations like enabling, disabling, or publishing policy packs to an organization.<br><br><b>--policy-pack <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the policy pack.<br><br><b>--version <version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a particular version of a policy pack. Relevant for publishing and enabling specific versions.<br><br><b>--config <key=value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set configuration values for a policy pack when enabling it. Can be specified multiple times.<br><br><b>--dir <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the directory where the policy pack is located or should be created. Defaults to the current working directory.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Emit output as JSON. Available for commands like 'pulumi policy ls'.<br><br><b>--non-interactive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable interactive prompts (e.g., for automation).<br><br><b>--logtostderr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log to stderr instead of to files.<br><br>


title: DESCRIPTION
content:
The <i>pulumi policy</i> command enables organizations to define and enforce governance policies on their infrastructure as code deployments. It provides functionalities to manage policy packs, which are collections of rules written in familiar programming languages like TypeScript, Python, or Go. These policies are applied to Pulumi stacks to ensure compliance with organizational standards, security best practices, and regulatory requirements. Policy packs can prevent unapproved resource types, enforce naming conventions, validate configurations, or ensure adherence to cost management guidelines before resources are provisioned in cloud environments. The command offers subcommands for creating new policy packs, listing existing ones, enabling or disabling them for specific organizations, and publishing them to the Pulumi Cloud for centralized management and enforcement across an organization's deployments.


title: CAVEATS
content:
Policy enforcement requires a Pulumi Cloud account or a self-managed backend. Policy packs are written in supported programming languages (TypeScript, Python, Go) and require the respective language runtime installed. Enforcement happens during <i>pulumi preview</i> and <i>pulumi up</i> operations, providing feedback or blocking deployments based on policy rules.


title: POLICY PACK STRUCTURE
content:
A Pulumi Policy Pack is a standard Pulumi project containing policy code (e.g., TypeScript, Python, Go) and a <i>PulumiPolicy.yaml</i> file. The policy code defines the rules and logic, while the YAML file specifies metadata about the policy pack. When published, it becomes available for enablement across an organization's stacks.


title: ENFORCEMENT WORKFLOW
content:
Policies are enforced during the <i>pulumi preview</i> and <i>pulumi up</i> commands. During a preview, policies are evaluated against the planned infrastructure changes, providing warnings or errors. During an update, if a policy violation occurs, the deployment can be blocked entirely or allowed with a warning, depending on the policy's severity and configuration. This ensures that only compliant infrastructure is provisioned.


title: HISTORY
content:
Pulumi Policy was introduced to extend Pulumi's core infrastructure as code capabilities with robust governance and compliance features. It addresses the critical need for organizations to enforce standards and security policies directly within their cloud infrastructure provisioning workflows. By enabling policies to be written as code, Pulumi Policy allows for version control, testing, and automated enforcement, integrating guardrails directly into the CI/CD pipeline and deployment lifecycle. This capability significantly enhances control and auditability over cloud resources, ensuring that infrastructure remains compliant with organizational and regulatory requirements.


title: TLDR
content:
<b>Create a new Pulumi Policy Pack from a template or URL</b>`pulumi policy new --dir [path/to/directory] [template|url]`<br><b>Validate syntax of a policy. To check a policy against a project use pulumi preview</b>`pulumi policy validate-config [organization_name]/[policy_pack_name] [version]`<br><b>List all policies for an organization</b>`pulumi policy ls [[-j|--json]] [organization_name]`<br><b>Publish a policy to the Pulumi Cloud</b>`pulumi policy publish [organization_name]`<br><b>Enable a policy with a specific version</b>`pulumi policy enable [organization_name]/[policy_pack_name] [latest|version]`<br><b>Disable a policy with a specific version (defaults to all versions)</b>`pulumi policy disable [organization_name]/[policy_pack_name] --version [version]`<br><b>Display help</b>`pulumi policy [[-h|--help]]`


title: TLDR
content:
<b>Attach OpenOCD session to a board with a configuration file</b>`openocd [[-f|--file]] [config_file.cfg]`<br><b>Attach OpenOCD session to a board with multiple configuration files</b>`openocd [[-f|--file]] [config_file1.cfg] [[-f|--file]] [config_file2.cfg]`<br><b>Attach OpenOCD session to a board with configuration files and a list of commands to be executed on server startup</b>`openocd [[-f|--file]] [config_file.cfg] [[-c|--command]] "[command]"`<br><b>Use configuration files in the specified path</b>`openocd [[-s|--search]] [path/to/search] [[-f|--file]] [config_file.cfg]`<br><b>After OpenOCD startup, connect GDB to OpenOCD default port 3333</b>`target extended-remote localhost`<br><b>List site-wide script library</b>`ls /usr/local/share/openocd/scripts`


title: PARAMETERS
content:
<b><i>source_files</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more C++ source files (e.g., .cpp, .cc) or object files (.o) to be compiled and/or linked. These are passed directly to the underlying compiler.<br><br><b>-o <i>output_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the executable <i>output_file</i> generated after successful compilation and linking.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile or assemble the source files, but do not link. This creates object files (.o) from source files.<br><br><b>-I<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>directory</i> to the list of directories to be searched for header files. While <i>mpicxx</i> automatically adds MPI headers, this is used for user-defined or third-party headers.<br><br><b>-L<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>directory</i> to the list of directories to be searched for library files. Similar to -I, <i>mpicxx</i> handles MPI libraries, but this is for additional libraries.<br><br><b>-l<i>library</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Link with the specified <i>library</i>. The <i>mpicxx</i> wrapper automatically links necessary MPI libraries, but this is used for other system or user libraries (e.g., -lm for math library).<br><br><b>-D<i>macro</i>[=<i>value</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define a preprocessor <i>macro</i>. Can be used to conditionally compile code or define constants.<br><br><b>-g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce debugging information in the output file, enabling debugging tools like GDB.<br><br><b>-O[<i>level</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optimize the compiled code. <i>level</i> specifies the optimization level (e.g., -O, -O2, -O3, -Os).<br><br><b>-std=<i>standard</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the C++ language <i>standard</i> to be used (e.g., c++11, c++14, c++17, c++20).<br><br><b>--showme</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>(Open MPI specific)</b> Display the full command line that <i>mpicxx</i> would execute, without actually running it. Useful for debugging build issues or integrating with other build systems.<br><br><b>--showme:compile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>(Open MPI specific)</b> Display the compilation flags that <i>mpicxx</i> uses, without the linking flags.<br><br><b>--showme:link</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>(Open MPI specific)</b> Display the linking flags that <i>mpicxx</i> uses, without the compilation flags.<br><br>


title: DESCRIPTION
content:
<i>mpicxx</i> is a convenient wrapper script provided by Message Passing Interface (MPI) implementations, such as Open MPI or MPICH. It is not a compiler itself, but rather a front-end that simplifies the compilation and linking of C++ programs utilizing the MPI library. When invoked, <i>mpicxx</i> automatically determines and passes the correct compiler flags, include paths, and library paths to an underlying C++ compiler (like g++ or clang++). This automates the complex process of setting up the build environment for MPI applications, ensuring that the necessary MPI header files are found and the MPI libraries are correctly linked. Its primary purpose is to abstract away the platform-specific details of MPI installation, allowing developers to compile MPI C++ code using a standardized command across various systems.


title: CAVEATS
content:
<i>mpicxx</i> is a wrapper script, not a compiler itself. It relies on an underlying C++ compiler (like g++ or clang++) and a correctly installed MPI implementation. Its behavior and specific options (especially wrapper-specific ones like --showme) can vary slightly depending on the MPI distribution (e.g., Open MPI, MPICH, Intel MPI) and its configuration.


title: PURPOSE OF THE WRAPPER
content:
The primary benefit of using <i>mpicxx</i> over directly invoking the C++ compiler (e.g., g++) is convenience and portability. It ensures that your MPI program is compiled and linked against the correct MPI libraries and headers without requiring manual specification of complex command-line arguments. This makes your build scripts more portable across different systems, as long as an MPI implementation is installed and <i>mpicxx</i> is in the PATH.


title: UNDERLYING COMPILER SELECTION
content:
The specific C++ compiler that <i>mpicxx</i> uses (e.g., g++, clang++) is determined during the MPI library's configuration and installation process. Users can sometimes override this default by setting environment variables (e.g., MPICXX_CC for some implementations) or by reconfiguring their MPI installation. To find out which underlying compiler is used, you can often run <i>mpicxx --showme</i>.


title: HISTORY
content:
The concept of MPI compiler wrappers like <i>mpicxx</i> emerged alongside the development and widespread adoption of the MPI standard in the mid-1990s. As MPI gained prominence for parallel computing, the need to simplify the compilation process for MPI applications became evident. These wrappers were created as part of major MPI implementations (like MPICH and later Open MPI) to abstract away the complexity of managing compiler flags, include paths, and library dependencies specific to each MPI installation. This greatly streamlined the development workflow for parallel C++ programs, making MPI more accessible to a wider range of developers.


title: SYNOPSIS
content:
<b>pulumi import</b> &lt;<i>resource_type_token</i>&gt; &lt;<i>resource_id</i>&gt; [--file &lt;<i>path</i>&gt;] [--parent &lt;<i>urn</i>&gt;] [--stack &lt;<i>stack_name</i>&gt;] [--yes] [<i>options</i>]


title: PARAMETERS
content:
<b>&lt;<i>resource_type_token</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The type token or URN of the resource to import (e.g., <i>aws:s3/bucket:Bucket</i> for an S3 bucket, or a full URN).<br><br><b>&lt;<i>resource_id</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique identifier of the existing resource in the cloud provider (e.g., '<i>my-unique-bucket-name</i>' for an S3 bucket).<br><br><b><b>--file</b> &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to the Pulumi program file where the generated resource code will be inserted. If omitted, the command typically prints the generated code to stdout.<br><br><b><b>--parent</b> &lt;<i>urn</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The URN of an existing parent resource to associate the imported resource with, helping to organize the resource hierarchy.<br><br><b><b>--stack</b> &lt;<i>stack_name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Pulumi stack to perform the import operation in. Defaults to the currently selected stack.<br><br><b><b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip confirmation prompts and proceed directly with the import operation.<br><br><b><b>--protect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mark the imported resource as protected, preventing accidental deletion via subsequent Pulumi updates.<br><br><b><b>--message</b> &lt;<i>message</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional message to associate with the import operation, visible in the Pulumi history.<br><br>


title: DESCRIPTION
content:
<i>pulumi-import</i> is a crucial subcommand within the Pulumi CLI that enables users to bring existing infrastructure resources, provisioned outside of Pulumi, under Pulumi's management. This is invaluable for adopting Pulumi in brownfield environments where infrastructure already exists. The command connects to a cloud provider (e.g., AWS, Azure, GCP, Kubernetes) and retrieves the details of a specified resource using its type token and ID. It then attempts to generate the corresponding Pulumi code (in the chosen language of the project, such as TypeScript, Python, Go, or C#) and records the resource's state in the current Pulumi stack's state file. The generated code typically represents a basic definition of the resource. After running <i>pulumi-import</i>, users must review the generated code, make any necessary adjustments or additions (e.g., adding outputs, properties, or child resources), and then run <i>pulumi up</i>. The <i>pulumi up</i> command reconciles the newly imported resource in the state with the actual cloud resource, ensuring that Pulumi now has full control and understanding of its configuration and lifecycle.


title: CAVEATS
content:
Importing resources is a multi-step process that requires careful attention. Not all resource types may be fully supported for import, or may require manual adjustments to the generated code. The <i>pulumi import</i> command only generates the code and updates the state; a subsequent <i>pulumi up</i> is required to reconcile the state with the actual cloud resource and confirm its successful import. Always review the generated code and the plan presented by <i>pulumi up</i> before confirming changes. It is advisable to back up your state file or work in a controlled environment before performing complex imports.


title: THE IMPORT PROCESS
content:
The typical import workflow involves:<br>1. <b>Identify the resource:</b> Determine the exact type token (e.g., <i>aws:ec2/instance:Instance</i>) and the ID of the resource you wish to import.<br>2. <b>Run <i>pulumi import</i>:</b> Execute the command with the resource type and ID, optionally specifying a file to write the code to.<br>3. <b>Review generated code:</b> Examine the code output by <i>pulumi import</i>. It's often a basic representation. You may need to add more properties, outputs, or structure.<br>4. <b>Run <i>pulumi up</i>:</b> After adjusting the code, run <i>pulumi up</i> to reconcile the state. Pulumi will compare the imported state with your code and perform any necessary updates to align them (often a no-op if the code matches the imported state perfectly, or a refresh of properties).


title: FINDING RESOURCE TYPE TOKENS AND IDS
content:
To import a resource, you need its Pulumi resource type token and its unique cloud provider ID. <br><b>Type Tokens:</b> These can be found in the Pulumi documentation for the specific provider (e.g., Pulumi AWS documentation for <i>aws:s3/bucket:Bucket</i>).<br><b>Resource IDs:</b> These are the native IDs assigned by the cloud provider. For example, an AWS S3 bucket's ID is its name; an EC2 instance's ID is its instance ID (<i>i-xxxxxxxxxxxxxxxxx</i>); an Azure Storage Account's ID is its name. These are typically visible in the cloud provider's console or via their CLI.


title: HISTORY
content:
The <i>pulumi-import</i> command was introduced as a pivotal feature to address the challenges of managing existing infrastructure with Pulumi. In earlier stages of Pulumi's development, bringing existing resources under management often involved manual state manipulation or writing code from scratch and then performing a refresh. The introduction of <i>pulumi-import</i> significantly streamlined this 'brownfield' adoption scenario, making it easier for organizations with pre-existing cloud deployments to transition to Infrastructure as Code with Pulumi. It has undergone continuous improvements to support a wider range of resources and improve the accuracy of generated code.


title: TLDR
content:
<b>Generate the resource definition with a given name for an existing provider resource</b>`pulumi import [type_token] [name] [id]`<br><b>Import an existing AWS user as a pulumi resource</b>`pulumi import aws:iam/user:User [my_user_resource] [id]`<br><b>Import an existing Cloudflare worker</b>`pulumi import cloudflare:index/workersScript:WorkersScript [my_worker_script] [account_id/script_name]`<br><b>Import from a JSON file for bulk import operations and output to a file instead of stdout</b>`pulumi import --file [path/to/file.json] --out [path/to/file]`


title: PARAMETERS
content:
<b>update releases</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Fetches and updates the list of available Erlang/OTP release versions from the official repositories.<br><br><b>build <I>release_name</I> <I>build_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles a specified Erlang/OTP release (e.g., <I>24.3</I>) and assigns it a unique build name. Environment variables like <I>KERL_CONFIGURE_OPTIONS</I> can be set for custom build configurations.<br><br><b>install <I>build_name</I> <I>install_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a previously built Erlang/OTP version into the specified <I>install_path</I>, making it ready for use.<br><br><b>list builds</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all Erlang/OTP versions that have been successfully built and are available for installation.<br><br><b>list releases</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows all available Erlang/OTP release versions that <I>kerl</I> can fetch and build.<br><br><b>active</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports the currently active Erlang/OTP installation path within the shell session.<br><br><b>use <I>install_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates a specific Erlang/OTP installation by setting environment variables (<I>PATH</I>, <I>ERL_LIBS</I>) in the current shell session.<br><br><b>shell</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts an Erlang shell (<I>erl</I>) using the currently active Erlang/OTP installation.<br><br><b>cleanup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes old build directories and source archives to free up disk space, while keeping installed versions intact.<br><br>


title: DESCRIPTION
content:
<I>kerl</I> is a powerful shell script designed to simplify the process of building and managing multiple Erlang/OTP installations on a single system. It automates fetching Erlang/OTP source code from official repositories, configuring, compiling, and installing various Erlang versions in isolated environments. This allows developers to easily switch between different Erlang releases for project-specific needs without conflicts, ensuring that each project can run with its required Erlang version. Beyond simple installation, <I>kerl</I> handles common dependencies like `autoconf`, `make`, and `gcc`, providing a streamlined workflow for Erlang development. It's particularly useful for maintaining environments where different applications require specific Erlang/OTP versions, ensuring compatibility and reproducibility across diverse development and production setups. The tool promotes a clean and organized approach to Erlang version management, preventing global `PATH` pollution and facilitating testing across versions.


title: CAVEATS
content:
<I>kerl</I> requires standard build tools such as `gcc`, `make`, `autoconf`, and `m4` to be installed on the system. Network access is essential to download Erlang/OTP source code. Custom build options (e.g., enabling `wx`, `odbc`, `ssl` applications) often necessitate additional system libraries and their development headers to be present before compilation. It primarily manages Erlang/OTP itself and does not handle individual Erlang application dependencies, for which tools like `rebar3` or `mix` are typically used.


title: ENVIRONMENT VARIABLES
content:
<I>kerl</I> leverages several environment variables to customize its behavior and the Erlang build process. For instance, setting <I>KERL_BUILD_DOCS=yes</I> before a `build` command will include documentation in the installation. Similarly, <I>KERL_CONFIGURE_OPTIONS="--enable-threads --enable-smp-support --without-javac"</I> allows passing specific flags directly to the Erlang configure script, providing fine-grained control over the compilation and included features.


title: INTEGRATION WITH SHELL
content:
To permanently activate a specific Erlang installation or make <I>kerl</I> commands available across shell sessions, users commonly source the `kerl_builds/kerlrc` file or add the <I>kerl</I> executable's directory to their <I>PATH</I> in their shell's startup file (e.g., <I>.bashrc</I>, <I>.zshrc</I>). The `use` command, on the other hand, dynamically sets up the necessary <I>PATH</I> and <I>ERL_LIBS</I> variables for the current shell session only, allowing temporary switching between Erlang versions.


title: HISTORY
content:
<I>kerl</I> was originally created by <I>José Valim</I> to simplify the often-cumbersome process of building and switching between Erlang versions, addressing common frustrations with manual compilation and path management. Its development aimed to provide a reliable and easy-to-use tool for Erlang developers. It rapidly gained popularity within the Erlang and Elixir communities, establishing itself as a de-facto standard for managing Erlang environments, particularly for development setups and CI/CD pipelines. Its design as a lightweight, highly portable shell script has contributed significantly to its widespread adoption and ease of integration into various workflows.


title: TLDR
content:
<b>Build and install an Erlang/OTP version in a directory</b>`kerl build-install [28.0] [28.0] [path/to/installation_directory]/[28.0]`<br><b>Activate an Erlang/OTP installation</b>`. [path/to/installation]/activate`<br><b>Deactivate the current Erlang/OTP installation</b>`kerl_deactivate`<br><b>List all available Erlang/OTP releases</b>`kerl list releases`<br><b>List installed Erlang/OTP builds</b>`kerl list installations`


title: SYNOPSIS
content:
<i><b>chainctl</b> <b>[command]</b> <b>[flags]</b><br><b>chainctl</b> <b>[command]</b> <b>[subcommand]</b> <b>[flags]</b><br><br>Common top-level commands include:<br><b>chainctl auth</b> - Manage authentication and contexts<br><b>chainctl project</b> - Manage Chainloop projects<br><b>chainctl build</b> - Manage build runs and attestations<br><b>chainctl artifact</b> - View and manage artifacts<br><b>chainctl attestation</b> - Verify attestations<br><b>chainctl context</b> - Manage Chainloop environments</i>


title: PARAMETERS
content:
<b><i><b>--help</b>, <b>-h</b></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows help message for the command or subcommand.</i><br><br><b><i><b>--version</b></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prints the <b>chainctl</b> version information.</i><br><br><b><i><b>--output</b> &lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the output format (e.g., <b>table</b>, <b>json</b>). Defaults to <b>table</b>.</i><br><br><b><i><b>--context</b> &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Selects the named Chainloop context to use for the command, managing connections to different Chainloop instances.</i><br><br><b><i><b>--debug</b></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables debug logging for more detailed output.</i><br><br><b><i><b>--log-level</b> &lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the logging verbosity (e.g., <b>info</b>, <b>warn</b>, <b>error</b>).</i><br><br><b><i><b>--dry-run</b></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Performs a trial run without making actual changes (available for certain commands).</i><br><br><b><i><b>--file</b> &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies a file path for input data (common for create/update operations).</i><br><br>


title: DESCRIPTION
content:
<i><b>chainctl</b> is the official command-line interface (CLI) for Chainloop, a platform designed to ensure the integrity, provenance, and tamper-resistance of software artifacts throughout the supply chain. It acts as the primary tool for interacting with Chainloop services, allowing users to manage various aspects of their software delivery.<br><br>The Chainloop platform focuses on generating cryptographically signed attestations that capture critical metadata about build processes, software components (SBOMs), and security compliance (SLSA). <b>chainctl</b> facilitates the publishing of these artifacts and their associated attestations, as well as the verification of their authenticity and integrity against defined policies.<br><br>Typical use cases include authenticating with Chainloop, managing projects, defining build workflows, publishing software artifacts along with their provenance data, and later verifying these artifacts to ensure they originated from trusted sources and have not been tampered with. It plays a crucial role in implementing supply chain security best practices, enabling compliance with industry standards, and fostering trust in delivered software.</i>


title: CAVEATS
content:
<i><b>chainctl</b> is a client-side tool that requires an active Chainloop deployment (either cloud-managed or self-hosted) to function. It cannot operate in a standalone manner without connecting to a Chainloop service. Users must also authenticate to the Chainloop platform using <b>chainctl auth login</b> before performing most operations. Familiarity with software supply chain security concepts such as SBOMs (Software Bill of Materials), SLSA (Supply-chain Levels for Software Artifacts), and cryptographic attestations is beneficial for effective use.</i>


title: <I>CONTEXT MANAGEMENT</I>
content:
<i>Similar to <b>kubectl</b> for Kubernetes, <b>chainctl</b> utilizes contexts to manage connections to different Chainloop environments (e.g., development, staging, production, or different cloud tenants/instances). This allows users to easily switch between configured Chainloop endpoints using commands like <b>chainctl context use</b>, making it convenient to operate across multiple deployments without reconfiguring credentials for each interaction.</i>


title: <I>INTEGRATION WITH CI/CD PIPELINES</I>
content:
<i><b>chainctl</b> is designed for seamless integration into Continuous Integration/Continuous Delivery (CI/CD) pipelines. Commands such as <b>chainctl build start</b>, <b>chainctl build attest</b>, and <b>chainctl build complete</b> facilitate the automated capture of build-time metadata and artifact provenance. This ensures that every release is securely attested, providing cryptographic proof of its origin and build process, thereby enabling end-to-end verifiability within automated workflows.</i>


title: HISTORY
content:
<i>The <b>chainctl</b> command-line tool has been the primary interface for the Chainloop platform since its inception. Developed by the Chainloop team, its evolution is closely tied to the growing demand for robust software supply chain security. It aims to simplify the adoption of best practices, such as generating SLSA-compatible provenance and managing SBOMs, by providing a unified and automated way to interact with the Chainloop integrity service. Its development continues to align with emerging supply chain security standards and community feedback, with regular updates enhancing functionality and security features.</i>


title: TLDR
content:
<b>Authenticate to the Chainguard Platform</b>`chainctl auth login`<br><b>Logout from the Chainguard Platform</b>`chainctl auth logout`<br><b>Update to the latest version</b>`chainctl update`<br><b>List images available to your account</b>`chainctl images list`<br><b>List image repositories available to your account</b>`chainctl images repos list`<br><b>Examine the history of an image tag in chainctl (e.g., image=python tag=3)</b>`chainctl images history [image]:[tag]`<br><b>List package version data from repositories available to your account (e.g., package_name=go)</b>`chainctl packages versions list [package_name]`<br><b>Display version</b>`chainctl version`


title: PARAMETERS
content:
<b><b>-i</b>, <b>--input</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the AVC denial message from the specified <i>FILE</i> instead of standard input. This is useful when you have saved an AVC log entry to a file.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message summarizing command usage and options, then exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <i><b>audit2why</b></i> command and then exits.<br><br><b><b>-r</b>, <b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes the input as a raw AVC denial string, bypassing audit log parsing. Useful when feeding just the AVC= string directly.<br><br>


title: DESCRIPTION
content:
<i><b>audit2why</b></i> is a crucial utility designed to simplify the often complex Access Vector Cache (AVC) denial messages generated by SELinux. When SELinux blocks an operation due to a policy violation, it logs a detailed AVC denial message in the system's audit logs (e.g., <i>/var/log/audit/audit.log</i>). These messages can be cryptic, containing intricate details about security contexts, object classes, and permissions, making them challenging for administrators to decipher.<br><br><i><b>audit2why</b></i> parses these raw AVC denial entries and translates them into human-readable explanations. It attempts to identify the specific policy rule that was violated or is missing, often suggesting practical solutions such as a <i><b>semanage</b></i> command to add a missing boolean, port, or file context mapping, or a <i><b>restorecon</b></i> command to fix incorrect file contexts. This tool significantly reduces the time and effort required to diagnose and resolve SELinux-related access issues, making SELinux administration more accessible.


title: CAVEATS
content:
<ul><li>Requires SELinux to be enabled and enforcing on the system for its explanations to be relevant.</li><li>The explanations provided are based on the currently loaded SELinux policy. If the policy is outdated or significantly customized, the suggestions might not be perfectly accurate or exhaustive.</li><li>It may not always provide a definitive solution, especially for highly complex policy interactions or nuanced misconfigurations; sometimes, it highlights the missing rule without a specific <i><b>semanage</b></i> command.</li><li><i><b>audit2why</b></i> is a diagnostic tool; it does not implement any fixes itself but rather provides guidance for manual intervention.</li></ul>


title: POLICY DEVELOPMENT AID
content:
Beyond its utility in troubleshooting, <i><b>audit2why</b></i> is an invaluable asset during the SELinux policy development lifecycle. Developers crafting new SELinux policies for applications or services can leverage it to quickly identify and understand why specific accesses are being denied. This accelerates the iterative process of writing, testing, and refining policy rules, ensuring that applications run with the least necessary privileges while maintaining system security. It helps pinpoint precisely which access was denied, guiding the creation of targeted and effective policy rules.


title: HISTORY
content:
<i><b>audit2why</b></i> is an integral part of the <i>setools</i> (SELinux Tools) project, a suite of utilities developed to aid in the analysis, modification, and debugging of SELinux policies. It emerged as a response to the growing need for a more user-friendly way to interpret the often cryptic AVC denial messages. Its development aimed to simplify SELinux administration and troubleshooting, making the robust security framework more accessible to system administrators and developers by translating complex low-level kernel denials into actionable insights. Its inclusion in common Linux distributions highlights its importance in the SELinux ecosystem.


title: SYNOPSIS
content:
<b>blastdbcmd</b> <i>-db database_name</i> <i>[-options]</i> <i>[-entry entry_identifier | -entry_batch filename]</i> <br><b>blastdbcmd</b> <i>-db database_name</i> <b>-info</b>


title: PARAMETERS
content:
<b><b>-db</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the BLAST database to query, e.g., <i>nr</i> or <i>nt</i>.<br><br><b><b>-entry</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves one or more sequence identifiers (accessions, GIs, etc.). Multiple identifiers can be separated by commas.<br><br><b><b>-entry_batch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file containing a list of sequence identifiers (one per line) to retrieve.<br><br><b><b>-out</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the output to a specified file instead of standard output.<br><br><b><b>-outfmt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Common values include <b>fasta</b> (default), <b>seqid</b>, <b>acc</b>, <b>def</b>, <b>asn</b>, <b>taxids</b>. Can also be a custom format string.<br><br><b><b>-target_only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves only the target (non-masking) portion of the sequence, if masking information is available.<br><br><b><b>-range</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a subsequence to retrieve, defined by a 1-based <i>start:end</i> position.<br><br><b><b>-strand</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For nucleotide sequences, specifies 'plus' (default) or 'minus' strand.<br><br><b><b>-lcase_masking</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays masked regions in lowercase letters if masking information is available in the database.<br><br><b><b>-dbtype</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the database type: 'prot' for protein or 'nucl' for nucleotide. Usually inferred from the database files.<br><br><b><b>-parse_seqids</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces parsing of sequence IDs in the input (e.g., with <b>-entry_batch</b>) to handle various ID formats.<br><br><b><b>-info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about the specified BLAST database, including statistics like number of sequences, total length, and creation date.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>blastdbcmd</b> version information.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message for <b>blastdbcmd</b>.<br><br><b><b>-logfile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes program log information to the specified file.<br><br><b><b>-warning_logfile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes program warnings to the specified file.<br><br><b><b>-taxids</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts sequence retrieval to sequences associated with the specified NCBI Taxonomy IDs (comma-separated).<br><br><b><b>-taxidlist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts sequence retrieval to sequences associated with NCBI Taxonomy IDs listed in the specified file (one per line).<br><br><b><b>-as_annotated</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves sequences as they are annotated in the database, including any associated masked regions.<br><br><b><b>-get_dups</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves all duplicate entries for the specified entry identifier.<br><br><b><b>-gilist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts sequence retrieval to GIs listed in the specified file.<br><br><b><b>-seqidlist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts sequence retrieval to sequence IDs listed in the specified file.<br><br>


title: DESCRIPTION
content:
<b>blastdbcmd</b> is a versatile command-line utility within the NCBI BLAST+ applications suite. It allows users to extract sequence data, definitions, accession numbers, and other associated information directly from BLAST databases (composed of .nhr, .nin, .nsq for nucleotide; .phr, .pin, .psq for protein). It's an essential tool for examining database contents, preparing subsets of sequences, or verifying database integrity without needing to run a full BLAST search. Users can specify entries by accession, GI, or other identifiers, apply filters, and format the output according to their needs.


title: CAVEATS
content:
<b>blastdbcmd</b> requires pre-built BLAST databases created with <b>makeblastdb</b>; it cannot directly query raw FASTA files. Performance can be impacted when retrieving a very large number of individual entries. Ensure the correct database type (<b>nucl</b> or <b>prot</b>) is used or inferrable. For very large retrieval tasks, <b>-entry_batch</b> is highly recommended over multiple individual <b>-entry</b> calls due to overhead.


title: DATABASE TYPES
content:
BLAST databases are created as either 'nucl' (nucleotide) or 'prot' (protein). <b>blastdbcmd</b> usually infers this from the database files, but explicitly specifying <b>-dbtype</b> can sometimes resolve ambiguities or errors.


title: IDENTIFIER HANDLING
content:
<b>blastdbcmd</b> is capable of handling various sequence identifiers including NCBI GIs, accession numbers, and local IDs. The <b>-parse_seqids</b> option is crucial when dealing with identifiers that have special characters or complex formats, ensuring proper matching within the database.


title: HISTORY
content:
<b>blastdbcmd</b> is a core component of the NCBI BLAST+ applications suite, which was developed to modernize and replace the legacy BLAST standalone utilities (like <b>formatdb</b> and <b>blastall</b>). The BLAST+ suite introduced a more modular command-line interface, improved performance, and added new features. <b>blastdbcmd</b> specifically took over the functionality of retrieving sequences from BLAST databases, which was previously less streamlined. Its development reflects the ongoing effort to provide robust and efficient tools for sequence similarity searching and database management.


title: SEE ALSO
content:
<b>makeblastdb</b>(1), <b>blastn</b>(1), <b>blastp</b>(1), <b>blastx</b>(1), <b>tblastn</b>(1), <b>tblastx</b>(1)


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the standard help options for xfburn.<br><br><b><b>--help-all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows all available help options, including GTK+ specific ones.<br><br><b><b>--help-gtk</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays options related to the GTK+ graphical toolkit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the version information of the xfburn application.<br><br><b><b>-d</b>, <b>--data</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts xfburn with a new data project, ready to add files and folders.<br><br><b><b>-a</b>, <b>--audio</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts xfburn with a new audio CD project, allowing the addition of audio files.<br><br><b><b>-c</b>, <b>--copy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts xfburn with the disc copy project interface.<br><br><b><b>-e</b>, <b>--erase</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts xfburn with the disc erase interface for rewritable media.<br><br><b><b>-i</b>, <b>--image</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts xfburn with an image burning project, pre-selecting the specified <i>FILE</i> (e.g., an ISO image).<br><br><b><b>--display</b>=<i>DISPLAY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to use for the graphical application.<br><br><b><i>FILE...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional: One or more files or directories to pre-load into the burning project (e.g., for data or audio projects).<br><br>


