# CommandSection

title: DESCRIPTION
content:
Anbox (Android in a Box) is a compatibility layer that allows running Android applications on GNU/Linux distributions. It achieves this by putting a complete Android operating system into a Linux container, leveraging kernel namespaces and technologies like LXC. Unlike traditional emulators, Anbox directly utilizes the host system's kernel, which aims to reduce resource consumption and improve performance, providing a more native-like experience. Android applications run in a sandboxed environment but integrate with the host desktop, appearing in application launchers and behaving similarly to native Linux applications.<br><br>While Anbox provides a robust framework for Android integration, its development pace has fluctuated. It requires specific kernel modules (`ashmem` and `binder`) to be loaded on the host system to function correctly. Anbox does not include Google Play Services by default, which often needs to be installed manually for applications relying on them. It represents a significant effort to bridge the gap between Android's vast app ecosystem and the Linux desktop.


title: CAVEATS
content:
Anbox's development has seen periods of reduced activity; users seeking a more actively maintained alternative might consider <I>Waydroid</I>.<br>It strictly requires the `ashmem` and `binder` kernel modules to be present and loaded, which might necessitate specific kernel builds or configurations on some systems.<br>Performance can vary significantly depending on the host system's hardware and graphics drivers.<br>Not all Android applications are guaranteed to function correctly or seamlessly, especially those relying on Google Play Services (which often need manual installation via third-party scripts).<br>Setting up Anbox can be complex, involving LXC configuration, kernel module loading, and proper graphics driver setup.


title: INSTALLATION REQUIREMENTS
content:
Anbox requires specific kernel modules, <b>ashmem</b> and <b>binder</b>, to be loaded on the host system. These modules provide the necessary memory and inter-process communication mechanisms for the Android container. Some Linux distributions or custom kernels might not have these enabled by default.


title: GOOGLE PLAY SERVICES
content:
By default, Anbox does not ship with Google Play Services (GMS) or the Google Play Store. Users typically need to install these manually using third-party scripts if they wish to use applications dependent on GMS.


title: SNAP PACKAGING
content:
Anbox is commonly distributed as a Snap package, simplifying its installation and updates on Snap-enabled Linux distributions. This packaging method helps in isolating the Anbox environment from the rest of the system.


title: HISTORY
content:
Anbox was primarily developed by Canonical (the company behind Ubuntu) and the broader open-source community, with its initial public release around 2017. It emerged from the vision of enabling Android applications to run natively on Linux, particularly for Ubuntu's convergence efforts (allowing the same OS to run on phones and desktops). While it gained significant interest for its innovative container-based approach, its development pace has fluctuated over the years, leading to the rise of alternative solutions like Waydroid, which build upon similar principles but often offer more recent updates and broader device support.


title: SYNOPSIS
content:
<b>androguard</b> [<I>GLOBAL_OPTIONS</I>] <I>SUBCOMMAND</I> [<I>SUBCOMMAND_OPTIONS</I>] [<I>ARGUMENTS</I>]<br><b>androguard</b> --version<br><b>androguard</b> --help<br><b>androguard</b> <I>SUBCOMMAND</I> --help


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message for the main <b>androguard</b> command or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <b>androguard</b>'s version information and exit.<br><br>


title: DESCRIPTION
content:
<b>androguard</b> is a comprehensive open-source Python framework designed for Android application analysis and reverse engineering. It provides a suite of tools to analyze various Android file formats, including <i>APK</i> (Android Package), <i>DEX</i> (Dalvik Executable), <i>ODEX</i> (Optimized Dalvik Executable), <i>AXML</i> (Android XML), and <i>JAR</i> (Java Archive) files.<br>Primarily used by security researchers, malware analysts, and developers, <b>androguard</b> offers capabilities for static analysis (disassembly, control flow graphs, call graphs, taint analysis) and can interact with Android devices for dynamic analysis. Its modular architecture allows for extensibility, making it a powerful platform for automated analysis, vulnerability detection, and understanding the behavior of Android applications, particularly in the context of security and malware.


title: CAVEATS
content:
<ul><li><b>Performance:</b> Can be resource-intensive, especially for large APKs or extensive analysis, requiring significant RAM and CPU.</li><li><b>Python Dependencies:</b> Relies heavily on various Python libraries; ensuring all dependencies are correctly installed and compatible can sometimes be challenging.</li><li><b>Learning Curve:</b> While powerful, its comprehensive nature means a steeper learning curve for new users, especially for advanced features or scripting.</li><li><b>Android Version Compatibility:</b> Analysis results can sometimes vary or be less accurate with newer Android versions due to changes in Dalvik/ART runtime and bytecode.</li></ul>


title: SUBCOMMANDS OVERVIEW
content:
<b>androguard</b> operates through a system of subcommands, each designed for a specific analytical task. To see options for a specific subcommand, use <i>androguard &lt;SUBCOMMAND&gt; --help</i>.<br><ul><li><b>analyze</b>: Performs static analysis on given files (APKs, DEXs). It provides detailed information on classes, methods, permissions, and more.</li><li><b>decompile</b>: Converts DEX bytecode back into a more readable format, often Smali or a pseudo-Java representation.</li><li><b>apk</b>: Offers utilities specifically for <i>APK</i> files, such as listing package information, permissions, or extracting components.</li><li><b>dex</b>: Provides tools for detailed analysis and manipulation of <i>DEX</i> files.</li><li><b>smali</b>: For working with Smali assembly code, which is the human-readable form of Dalvik bytecode.</li><li><b>scan</b>: Often used for searching for specific patterns or vulnerabilities.</li><li><b>interactive</b>: Launches an IPython shell pre-loaded with <b>androguard</b> analysis objects, enabling interactive exploration.</li><li><b>db</b>: Manages a database for storing and querying analysis results.</li></ul>


title: CORE FUNCTIONALITY
content:
<b>androguard</b> parses the internal structure of Android binaries, extracting information like AndroidManifest.xml, resources, bytecode, and certificate details. It builds control flow graphs (CFG) and call graphs, enabling deep understanding of application logic and potential execution paths. It also supports taint analysis for tracking data flow within an app.


title: EXTENSIBILITY
content:
Being a Python library, <b>androguard</b> is highly extensible. Users can write custom scripts to automate analysis tasks, integrate with other tools, or implement novel analysis techniques tailored to specific research needs.


title: HISTORY
content:
<b>androguard</b> was initially developed by Anthony Desnos around 2011-2012, aiming to provide a robust framework for static analysis of Android applications. Over the years, it has evolved significantly with contributions from a vibrant open-source community. Its development has mirrored the growth of Android security research, incorporating features for analyzing new Android versions, bytecode changes, and increasingly sophisticated malware techniques. It has become a <i>de facto</i> standard tool in the Android reverse engineering and malware analysis community, frequently used in academic research, cybersecurity firms, and penetration testing. Its strength lies in its programmatic interface, allowing researchers to build custom analysis scripts and tools on top of the framework.


title: PARAMETERS
content:
<b>-f <I>file</I>, --file=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the state bundle file (e.g., YAML or JSON) to be processed.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulate the execution of the bundle without making any actual changes to the system. Shows what would be done.<br><br><b>-y, --assume-yes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically answer 'yes' to any prompts for confirmation, allowing for non-interactive execution.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase the verbosity of the output, providing more detailed information about the actions being performed.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output, showing only critical errors or warnings.<br><br><b>--strict</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit immediately upon encountering the first error during bundle processing, rather than attempting to continue.<br><br><b>--repository-dir=<I>dir</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory containing additional repository definitions that should be temporarily enabled during bundle application.<br><br><b>--check-syntax</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses the specified bundle file for syntax errors without attempting to apply its state.<br><br>


title: DESCRIPTION
content:
<br>The <b>aptitude-run-state-bundle</b> command is a powerful tool designed to automate and manage the desired state of a Debian-based Linux system's packages and related configurations. Leveraging the robust capabilities of the <i>aptitude</i> package manager, it allows administrators to define a "state bundle" – typically a structured file like YAML or JSON – that declares the desired presence, absence, or specific versions of packages, along with potential repository configurations or simple file content. <br><br>Instead of imperative step-by-step commands, this utility enables a declarative approach: you describe <i>what</i> you want the system to look like, and <b>aptitude-run-state-bundle</b> intelligently determines the necessary actions (installations, removals, upgrades) to achieve that state. This is particularly useful for provisioning new machines, ensuring consistency across multiple systems, or recovering from configuration drift. It harnesses <i>aptitude</i>'s advanced dependency resolution and interactive features (though typically run in a non-interactive mode for automation) to perform operations reliably and efficiently.


title: CAVEATS
content:
<br>Running <b>aptitude-run-state-bundle</b> requires root privileges as it modifies system-wide package installations and configurations. While designed for idempotency (running the same bundle multiple times yields the same result without unintended side effects), poorly constructed bundles can still lead to unexpected system states. Ensure bundles are thoroughly tested in non-production environments first. Network connectivity is essential for downloading packages from repositories.


title: BUNDLE FILE STRUCTURE
content:
<br>A state bundle file is typically a YAML or JSON document. It defines desired package states and other system configurations. A common structure might include sections for:<br><br><i>packages</i>: A list of package names with their desired states (e.g., 'installed', 'removed', 'latest', 'version: 1.2.3').<br><i>repositories</i>: A list of custom APT repository entries to add.<br><i>files</i>: Simple declarations for file content or permissions.<br><i>services</i>: Desired states for systemd services (e.g., 'started', 'stopped', 'enabled').<br><br>Example (YAML snippet):<br>packages:<br>  - name: nginx<br>    state: installed<br>  - name: ufw<br>    state: latest<br>  - name: apache2<br>    state: removed<br>repositories:<br>  - type: deb<br>    uri: https://packages.example.com/debian<br>    suite: stable main<br>files:<br>  - path: /etc/motd<br>    content: 'Welcome to configured system!'<br>


title: IDEMPOTENCY AND BEST PRACTICES
content:
<br>Designing bundles for idempotency is crucial; running the same bundle multiple times should not cause unintended side effects. Always test bundles in a controlled environment before applying them to production systems. Use version control for your bundle files to track changes and facilitate rollbacks if necessary. Keep bundles modular and readable, breaking down complex configurations into smaller, manageable files if supported (e.g., by including other bundles).


title: HISTORY
content:
<br>While <b>aptitude-run-state-bundle</b> is a hypothetical command, its conceptual lineage stems from the increasing demand for declarative system configuration and automation in Linux environments. It represents a theoretical evolution of package management, moving beyond simple install/remove operations to a state-driven paradigm. Its design is inspired by the capabilities of configuration management tools like <i>Ansible</i>, <i>Puppet</i>, and <i>Chef</i>, which provide similar declarative functionalities, but integrated more tightly with the Debian package management ecosystem. The command envisions extending <i>aptitude</i>'s robust dependency resolution and state tracking to manage entire system configurations from a single, version-controllable source, addressing challenges of reproducibility, consistency, and automated deployments prevalent in modern infrastructure management.


title: SYNOPSIS
content:
<b>apx</b> [<i>GLOBAL_OPTIONS</i>] <i>COMMAND</i> [<i>COMMAND_OPTIONS</i>] [<i>ARGUMENTS</i>...]<br><br>Common Commands:<br><b>apx</b> <b>install</b> &lt;<i>package_name</i>&gt; [<i>DISTRO</i>] [<i>VERSION</i>]<br><b>apx</b> <b>remove</b> &lt;<i>package_name</i>&gt;<br><b>apx</b> <b>enter</b> &lt;<i>application_name</i>&gt;<br><b>apx</b> <b>list</b><br><b>apx</b> <b>search</b> &lt;<i>package_name</i>&gt;<br><b>apx</b> <b>init</b><br><b>apx</b> <b>shell</b> [<i>DISTRO</i>] [<i>VERSION</i>]<br><b>apx</b> <b>update</b><br><b>apx</b> <b>cleanup</b><br><b>apx</b> <b>create</b> &lt;<i>container_name</i>&gt; [<i>DISTRO</i>] [<i>VERSION</i>]


title: PARAMETERS
content:
<b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a specified package inside an <b>apx</b> container. Optionally, you can specify a <i>DISTRO</i> and <i>VERSION</i> for the container.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uninstalls an application and its associated container.<br><br><b>enter</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides an interactive shell session within the container of a specific installed application.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all applications currently managed by <b>apx</b>, along with their container details.<br><br><b>search</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for available packages within the configured <b>apx</b> repositories.<br><br><b>init</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes the <b>apx</b> environment, creating necessary configurations and base containers.<br><br><b>shell</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a temporary shell session within a new or existing <b>apx</b> container, useful for quick tasks or debugging.<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates packages within all <b>apx</b> containers to their latest versions.<br><br><b>cleanup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes unused container layers, images, and other temporary files to free up disk space.<br><br><b>create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows creating a new, custom <b>apx</b> container with a specified distribution and version, useful for specialized development environments.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message outlining available commands and options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>apx</b> command version.<br><br>


title: DESCRIPTION
content:
<b>apx</b> is a command-line utility designed primarily for <i>immutable</i> Fedora operating systems like <i>Fedora Silverblue</i>, <i>Kinoite</i>, and <i>Onyx</i>. It enables users to install and manage applications within isolated <i>OCI containers</i>, leveraging technologies like <i>Podman</i>. Unlike traditional package managers that layer software directly onto the root filesystem, <b>apx</b> encapsulates applications and their dependencies within separate containerized environments. This approach maintains the immutability of the base system, reducing the risk of system corruption and simplifying rollbacks. <b>apx</b> aims to provide a seamless user experience, making containerized applications behave as if they were natively installed. It addresses the challenge of running software not available as <i>Flatpaks</i> or those requiring specific system libraries, by providing a declarative way to manage these applications, allowing users to define their desired software setup.


title: CAVEATS
content:
<b>apx</b> primarily relies on <i>Podman</i> for containerization, meaning <i>Podman</i> must be installed and properly configured. While it offers excellent application isolation, each application or group of applications within a shared container adds to disk space usage. It is designed for immutable systems; on traditional Linux distributions, its benefits might be less pronounced compared to native package managers. Managing many isolated application containers can sometimes increase complexity for system administrators, although <b>apx</b> strives to simplify this for end-users. Unlike <i>distrobox</i>, <b>apx</b> is more focused on application management rather than full development environments, though it can be used for that purpose.


title: DECLARATIVE CONFIGURATION
content:
<b>apx</b> emphasizes a declarative approach to application management. Users can define their desired application set, and <b>apx</b> ensures the system state matches this declaration, making setups reproducible and easier to manage across different machines or after system re-installations.


title: INTEGRATION WITH HOST SYSTEM
content:
Applications installed via <b>apx</b> are typically integrated with the host desktop environment. This means they appear in application launchers, can open host files, and often share X11 or Wayland display sockets, providing a near-native user experience despite running within a container.


title: HISTORY
content:
<b>apx</b> emerged from the needs of the <i>Fedora Project's immutable desktop initiatives</i>, specifically <i>Fedora Silverblue</i> and <i>Kinoite</i>. These distributions utilize <i>OSTree</i> for atomic updates, making direct layering of RPM packages undesirable. While <i>Flatpak</i> addresses many application needs, some software requires specific dependencies or deeper system integration that <i>Flatpak</i> cannot provide. <b>apx</b> was developed to fill this gap, offering a declarative, containerized solution for managing such applications without compromising the host system's immutability. Its development focuses on providing a user-friendly experience similar to traditional package managers, abstracting away the underlying container complexities.


title: SYNOPSIS
content:
<b>apx-pkgmanagers</b> [internal_options] [package_manager_subcommand] [arguments...]<br><i>Note: This command is primarily an internal utility of the <b>apx</b> tool and is not typically invoked directly by users. Its interface is designed for use by the <b>apx</b> wrapper.</i>


title: PARAMETERS
content:
<b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>apx-pkgmanagers</i> to perform a package installation using the detected package manager. Followed by package names.<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>apx-pkgmanagers</i> to update all installed packages using the detected package manager.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>apx-pkgmanagers</i> to remove specified packages using the detected package manager. Followed by package names.<br><br><b>search</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>apx-pkgmanagers</i> to search for packages using the detected package manager. Followed by search terms.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>apx-pkgmanagers</i> to list installed packages using the detected package manager.<br><br><b>--detect</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An internal flag to simply output the name of the detected package manager (e.g., "dnf", "apt", "pacman") to standard output.<br><br>


title: DESCRIPTION
content:
<i>apx-pkgmanagers</i> is an internal helper script used by the <b>apx</b> command-line tool. Its primary function is to intelligently detect and interact with the appropriate package manager (such as dnf, apt, pacman, zypper) within a <b>distrobox</b> container. When a user runs an <b>apx</b> command that requires package management operations (e.g., <b>apx install</b>, <b>apx update</b>, <b>apx remove</b>), <b>apx</b> delegates the specific package manager interaction to <i>apx-pkgmanagers</i>. This abstraction allows <b>apx</b> to provide a consistent interface for managing software across various containerized distributions without the user needing to know the underlying package manager details of each container. It typically resides in <b>/usr/libexec/apx/</b>.


title: CAVEATS
content:
<i>apx-pkgmanagers</i> is an internal utility and not intended for direct user invocation. Its behavior and arguments are subject to change without notice, as it's part of the <b>apx</b> project's internal implementation details. Users should primarily interact with the higher-level <b>apx(1)</b> command.


title: INTERNAL PURPOSE
content:
The primary purpose of <i>apx-pkgmanagers</i> is to act as a crucial backend component for the <b>apx</b> command. It encapsulates the logic for identifying the native package manager within a given container and executing the corresponding commands (install, update, remove, search, etc.) on behalf of the <b>apx</b> frontend. This allows <b>apx</b> to present a unified interface regardless of the underlying container's distribution.


title: TYPICAL LOCATION
content:
On systems where <b>apx</b> is installed, <i>apx-pkgmanagers</i> is commonly found in the system's private executable directory, such as <b>/usr/libexec/apx/apx-pkgmanagers</b>. This location reinforces its role as an internal system utility rather than a directly user-accessible command.


title: HISTORY
content:
<i>apx-pkgmanagers</i> was developed as an integral part of the <b>apx</b> project, which emerged to provide a more streamlined and integrated way to manage software in <b>distrobox</b> containers, especially on immutable Linux distributions like Fedora Silverblue and Kinoite. Its design addresses the need for <b>apx</b> to automatically adapt to the specific package manager of any given container, enhancing the user experience by abstracting away distribution-specific package management commands.


title: SYNOPSIS
content:
<br><b>apx stacks</b> <I>[SUBCOMMAND]</I> <I>[OPTIONS]</I><br><br><b>Subcommands:</b><br>&nbsp;&nbsp;<b>apx stacks list</b> <I>[OPTIONS]</I><br>&nbsp;&nbsp;<b>apx stacks delete</b> <I>STACK_ID</I> <I>[OPTIONS]</I><br>&nbsp;&nbsp;<b>apx stacks prune</b> <I>[OPTIONS]</I>


title: PARAMETERS
content:
<b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all currently available `<b>apx</b>` stacks, including their IDs, sizes, and creation dates.<br><br><b>delete <I>STACK_ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the specified `<b>apx</b>` stack. The `<i>STACK_ID</i>` can be the full unique identifier or a unique prefix of the stack ID.<br><br><b>prune</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all unused, dangling, or unreferenced `<b>apx</b>` stacks, freeing up disk space.<br><br><b>--all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `<b>list</b>` to show all stack layers and details. Used with `<b>prune</b>` to process all relevant stacks.<br><br><b>--force</b> or <b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a stack deletion or pruning operation without prompting for confirmation.<br><br><b>--verbose</b> or <b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, providing more detailed information about the operations being performed.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the `<b>apx stacks</b>` command or its specific subcommand.<br><br>


title: DESCRIPTION
content:
The `<b>apx stacks</b>` command is a subcommand of the experimental `<b>apx</b>` utility, developed by Canonical for running applications within isolated environments. While `<b>apx</b>` focuses on creating and managing these ephemeral environments, `<b>apx stacks</b>` is specifically designed to manage the underlying 'stacks' or images upon which these environments are built.<br><br>These stacks are read-only filesystem layers that serve as the base for isolated `<b>apx</b>` sessions. `<b>apx stacks</b>` allows users to list all available image stacks, delete specific ones that are no longer needed, and prune unused or dangling stacks to reclaim valuable disk space. It's an essential tool for maintaining `<b>apx</b>` environments, especially in development or testing workflows where many temporary environments and their associated images might accumulate.


title: CAVEATS
content:
The `<b>apx</b>` utility, including `<b>apx stacks</b>`, is an experimental project and is under active development. Its features, options, and behavior might change in future versions. It relies on `<b>systemd-nspawn</b>` for containerization, which may not be available or fully supported on all Linux distributions.


title: UNDERSTANDING STACKS
content:
In the context of `<b>apx</b>`, a 'stack' refers to a layered, read-only filesystem image from which ephemeral isolated environments are created. These are similar in concept to Docker images, providing a consistent and reproducible base for running applications.


title: DISK SPACE MANAGEMENT
content:
Regular use of `<b>apx stacks prune</b>` is highly recommended to manage disk space effectively. As `<b>apx</b>` environments are frequently created and destroyed, unused image layers can accumulate rapidly, consuming significant storage.


title: HISTORY
content:
`<b>apx</b>` was developed by Canonical, the creators of Ubuntu, as a modern command-line tool to simplify the management of isolated environments, particularly for development and testing related to snap packages and Debian packages. `<b>apx stacks</b>` emerged as a core component of `<b>apx</b>` to manage the underlying immutable images that make these isolated environments possible, reflecting a common pattern in container technology for efficient resource management.


title: SYNOPSIS
content:
<b>apx-subsystems</b> [<I>options</I>] <I>command</I> [<I>arguments</I>]<br><br>Common commands:<br><b>apx-subsystems</b> <I>list</I><br><b>apx-subsystems</b> <I>register</I> <I>name</I> <I>path</I><br><b>apx-subsystems</b> <I>deregister</I> <I>name</I><br><b>apx-subsystems</b> <I>enable</I> <I>name</I><br><b>apx-subsystems</b> <I>disable</I> <I>name</I>


title: PARAMETERS
content:
<b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all currently registered application integration subsystems.<br><br><b>register <I>name</I> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers a new subsystem with a given <I>name</I> and an executable <I>path</I> that implements the subsystem's logic.<br><br><b>deregister <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deregisters an existing subsystem identified by <I>name</I>, removing its integration capabilities.<br><br><b>enable <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a previously registered subsystem identified by <I>name</I>, allowing apx to utilize its integration features.<br><br><b>disable <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables an active subsystem identified by <I>name</I>, preventing apx from using its integration features.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Same as --help.<br><br>


title: DESCRIPTION
content:
The <b>apx-subsystems</b> command is a utility within the Application eXperience (apx) framework, designed by Canonical to manage how applications launched via apx integrate with the host system. <br><br>Rather than installing applications directly onto the host, apx leverages ephemeral OCI container environments, allowing users to run software from various sources (e.g., .deb packages, container images) without polluting the base system. <br><br><b>apx-subsystems</b> plays a crucial role in ensuring these containerized applications behave like native ones. It allows administrators and advanced users to control various integration points, such as desktop entry creation, MIME type association, font integration, sound system configuration, and more. By managing these "subsystems", apx can provide a seamless user experience, making containerized applications feel indistinguishable from those installed directly on the host, while maintaining the isolation benefits of containers.


title: CAVEATS
content:
The <b>apx-subsystems</b> command often requires root privileges (or use of <I>sudo</I>) to modify system-wide integration settings. <br><br>As the <I>apx</I> project is relatively new and under active development by Canonical, the command's exact behavior, available options, and subsystem APIs may evolve. Users should consult the latest <I>apx</I> documentation for the most up-to-date information. <br><br>This command is typically used by system administrators or advanced users to fine-tune <I>apx</I>'s integration capabilities, rather than by end-users for daily application management.


title: APX SUBSYSTEM DEFINITION
content:
An <I>apx</I> subsystem is essentially a script or executable that <I>apx</I> can call to perform specific integration tasks on the host system. For example, a "desktop-integration" subsystem might handle the creation and updating of <I>.desktop</I> files for applications, while a "mime-type" subsystem might manage file associations. These subsystems allow <I>apx</I> to externalize and standardize how different types of application integration are managed, making the framework flexible and extensible.


title: HISTORY
content:
The <I>apx</I> project, including the <I>apx-subsystems</I> utility, is a relatively recent initiative by Canonical. It emerged from the need to provide a universal, isolated, and seamlessly integrated application experience on Linux, transcending traditional package formats like <I>.deb</I> or <I>snap</I> packages. <br><br>The development of <I>apx</I> aims to address challenges such as dependency conflicts, system pollution, and ensuring application portability. <I>apx-subsystems</I> specifically evolved as a critical component to bridge the gap between isolated containerized applications and the host system's desktop environment, ensuring elements like desktop launchers, file associations, and system themes are correctly handled. Its introduction marks a step towards a more unified application management approach on Ubuntu and potentially other Linux distributions.


title: SYNOPSIS
content:
<b>ar</b> [<i>options</i>] <i>archive_file</i> [<i>member_files...</i>]<br>The <i>options</i> typically include one primary action option and zero or more modifier options.<br>Common primary actions include: <b>d</b> (delete), <b>m</b> (move), <b>p</b> (print), <b>q</b> (quick append), <b>r</b> (replace/insert), <b>t</b> (list), <b>x</b> (extract).


title: PARAMETERS
content:
<b>d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes specified members from the archive.<br><br><b>m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Moves specified members within the archive.<br><br><b>p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the contents of specified members to standard output.<br><br><b>q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quickly appends files to the end of the archive without checking for duplicates.<br><br><b>r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replaces or adds files to the archive. Existing members are replaced; new files are added.<br><br><b>s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes an object-file index (symbol table) into the archive. Usually default for object file archives.<br><br><b>t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a table of contents of the archive, listing its members.<br><br><b>x</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts members from the archive.<br><br><b>a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Place new files after an existing member (requires a position argument).<br><br><b>b</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Place new files before an existing member (requires a position argument).<br><br><b>c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Create the archive if it does not already exist.<br><br><b>i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Synonym for 'b'.<br><br><b>u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Only replace files in the archive if they are newer than the existing members.<br><br><b>v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Verbose mode; shows detailed output for each operation.<br><br><b>N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Uses the 'N'th matching member (for archives with multiple members of the same name).<br><br><b>P</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Use the full path name to match files (instead of just the filename).<br><br><b>T</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Creates a 'thin' archive. Members are symbolic links to their original locations.<br><br><b>S</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Do not generate an archive symbol table. Useful for non-object file archives.<br><br><b>V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifier: Display the version number of ar.<br><br>


title: DESCRIPTION
content:
<i>ar</i> is a utility program that creates, modifies, and extracts from archives. An archive is a single file containing a collection of other files, often object files or static libraries, along with metadata about them. Unlike other archiving tools like <i>tar</i>, <i>ar</i> does not provide compression capabilities. It is primarily used in software development to manage static libraries (files ending with <i>.a</i>), which are collections of object files that a linker can search to resolve symbol references. <i>ar</i> allows users to add, delete, extract, list, and move members within an archive without needing to unpack and repack the entire archive. Its efficient in-place modification capabilities make it suitable for its niche.


title: CAVEATS
content:
<i>ar</i> does not provide compression functionality. Its primary role is managing collections of object files for static linking, rather than general-purpose file archiving like <i>tar</i> or <i>zip</i>. While modern GNU <i>ar</i> handles long filenames, older versions or systems might have limitations. It's often used indirectly by build systems rather than directly by end-users.


title: STATIC LIBRARIES AND BUILD SYSTEMS
content:
<i>ar</i> is crucial for creating static libraries (files ending with <i>.a</i> on Unix-like systems). These libraries bundle together multiple object files (<i>.o</i>) into a single archive. During the linking phase of compilation, the linker (<i>ld</i>) searches these static libraries to resolve external symbol references. This allows developers to reuse code efficiently without recompiling individual source files each time. Modern build systems like Make, CMake, and Autotools often invoke <i>ar</i> automatically as part of the library compilation process, making direct user interaction less common.


title: HISTORY
content:
The <i>ar</i> utility is one of the oldest standard Unix commands, dating back to the earliest versions of Unix. It was fundamental to the development of C programs, enabling the creation of static libraries which could be linked against multiple programs. Its design reflects the computing environment of the 1970s, where disk space and memory were scarce, making in-place modification of archives desirable. The GNU Binutils project provides its own implementation of <i>ar</i>, which is widely used on Linux systems and is typically more feature-rich than its historical counterparts, supporting features like thin archives and long filenames.


title: SYNOPSIS
content:
<b>arc</b> [<i>command</i>] [<i>options</i>] <i>&lt;archive_file&gt;</i> [<i>files...</i>]<br><i>command</i>: typically <b>l</b> (list), <b>x</b> (extract), <b>a</b> (add/create), <b>d</b> (delete).<br><i>archive_file</i>: the .ARC archive to operate on.<br><i>files...</i>: optional list of specific files within the archive.


title: PARAMETERS
content:
<b><b>l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>List</i> the contents of the archive.<br><br><b><b>x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Extract</i> files from the archive.<br><br><b><b>a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Add</i> or <i>create</i> an archive. Note: often not fully supported by modern Linux <b>arc</b> variants for new archive creation.<br><br><b><b>d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Delete</i> files from the archive. Note: often not fully supported by modern Linux <b>arc</b> variants.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Verbose</i> output, showing detailed information during operation.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Overwrite</i> existing files without prompting during extraction.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not overwrite</i> existing files during extraction, skipping files that already exist.<br><br><b><b>-P <i>&lt;password&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a <i>password</i> for encrypted archives.<br><br>


title: DESCRIPTION
content:
The <b>arc</b> command on Linux refers to a utility designed to interact with files compressed and concatenated in the <b>.ARC</b> format. This format, developed by System Enhancement Associates (SEA) in the early 1980s, was highly prevalent during the MS-DOS era, particularly for distributing software and files via bulletin board systems (BBSs). Unlike modern Linux archiving utilities such as <b>tar</b> or <b>zip</b>, <b>arc</b> is not a general-purpose archiver for contemporary data. Instead, its primary function on Linux systems is to provide compatibility with these legacy <b>.ARC</b> archives.<br><br>While historically the original <b>ARC</b> tools on DOS could create, modify, and extract archives, Linux implementations (often provided by packages like <b>unarc</b> or <b>nomarch</b>) typically focus on extraction and listing the contents of existing <b>.ARC</b> files. This makes <b>arc</b> an essential tool for accessing historical data or software preserved in this older format. It encapsulates multiple files into a single archive, usually applying a form of data compression to save space. Despite its diminished contemporary usage for new archive creation, the <b>arc</b> command remains a valuable component for digital archaeology on Linux, ensuring continued access to a significant part of computing history.


title: CAVEATS
content:
The <b>arc</b> command, as a standalone general-purpose archiving tool, is <i>not</i> a standard utility on modern Linux distributions like <b>tar</b> or <b>zip</b>. Its primary purpose on Linux is to interact with <i>legacy .ARC</i> archive files, which were popular in the MS-DOS era. Functionality like creating or modifying .ARC archives is often limited or absent in Linux implementations (e.g., <b>unarc</b>, <b>nomarch</b>), which primarily focus on extraction and listing. Users requiring general archiving should use standard Linux tools.


title: LEGACY FILE FORMAT
content:
The <b>.ARC</b> file format was innovative for its time, combining multiple files into a single archive and applying compression. While superseded by formats like <b>ZIP</b>, its historical importance in early computing, especially for software distribution and data storage on platforms like MS-DOS, is significant. The <b>arc</b> command on Linux primarily acts as a gateway to this historical data.


title: HISTORY
content:
The <b>ARC</b> file format was developed by System Enhancement Associates (SEA) in the early 1980s, becoming one of the most popular archiving formats in the MS-DOS era, particularly for bulletin board systems (BBSs). It introduced concepts like concatenation and compression. Its widespread use diminished with the advent of newer, more efficient formats like <b>ZIP</b>. On Linux, <b>arc</b> utilities typically serve as compatibility tools to extract or list contents of these older archives, reflecting the format's historical significance rather than its contemporary use for new archive creation.


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


title: DESCRIPTION
content:
The <b>arch</b> command is a straightforward utility used to display the machine architecture (CPU type) of the current system. It typically outputs a string identifying the hardware platform, such as <i>x86_64</i> for modern 64-bit Intel/AMD systems, <i>aarch64</i> for ARM 64-bit, or <i>i686</i> for older 32-bit systems. This command is often employed in shell scripts to conditionally execute code based on the underlying architecture, ensuring compatibility or optimizing performance for specific platforms. It provides a quick and concise way to query this fundamental system attribute, acting as a convenient shorthand for <i>uname -m</i>. Part of the GNU Core Utilities, <b>arch</b> is a widely available and stable command across most Linux distributions.<br>


title: CAVEATS
content:
The <b>arch</b> command primarily reports the architecture of the <i>kernel</i> rather than the specific user-space environment, which might be relevant in chroot or containerized setups.<br>Its output can be less specific than <i>uname -m</i> in some cases, providing a generic identifier (e.g., <i>i686</i>) even for systems capable of more advanced instruction sets.<br>It's essentially a symbolic link or a simple wrapper for <i>uname -m</i> on many modern systems, so direct use of <i>uname -m</i> offers more control and consistency.<br>


title: RETURN VALUE
content:
<b>arch</b> returns 0 upon successful execution and a non-zero value if an error occurs (e.g., invalid option).<br>


title: HISTORY
content:
The <b>arch</b> command is a legacy utility that has been a part of Unix-like systems for a long time, now included in the GNU Core Utilities. Its functionality is minimal and highly stable, having served its purpose of providing a quick architecture string since early Linux development. It predates many modern system information tools but remains a widely used, simple command due to its universal availability and straightforward output.<br>


title: PARAMETERS
content:
<b>newroot</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The absolute path to the directory that will serve as the new root environment (e.g., <i>/mnt</i>).<br><br><b>command...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. A command to execute within the chroot environment. If omitted, <b>arch-chroot</b> will launch the default shell (usually Bash) in the new root.<br><br>


title: DESCRIPTION
content:
arch-chroot is a utility script provided by Arch Linux to simplify the process of chrooting into an Arch Linux installation. Unlike the standard <b>chroot</b> command, <b>arch-chroot</b> automates several critical steps required for a functional chroot environment, particularly useful during system installation, maintenance, or recovery. It automatically mounts essential pseudo-filesystems such as <i>/proc</i>, <i>/sys</i>, and <i>/dev</i> (including <i>/dev/pts</i> and <i>/dev/shm</i>) within the target root directory. Furthermore, it handles network connectivity by copying <i>/etc/resolv.conf</i> from the host system into the chroot, ensuring that package managers like <b>pacman</b> can access repositories. This automation significantly reduces common pitfalls and manual steps, making it much more robust and user-friendly for Arch Linux users. When invoked, it changes the root directory to the specified <i>newroot</i> and either drops the user into a shell or executes a given command. It attempts to clean up the bind mounts upon exiting the chroot.


title: CAVEATS
content:
Requires root privileges to execute.<br>The main root directory (e.g., <i>/mnt</i>) must be mounted before running <b>arch-chroot</b>.<br>The host system's kernel is always used within the chroot environment, not the kernel installed in the <i>newroot</i>.<br>While <b>arch-chroot</b> attempts to unmount pseudo-filesystems on exit, the main <i>newroot</i> partition must be manually unmounted (e.g., using <b>umount /mnt</b>) after exiting the chroot.


title: AUTOMATED MOUNT POINTS
content:
Automatically bind-mounts essential directories like <i>/proc</i>, <i>/sys</i>, <i>/dev</i>, <i>/dev/pts</i>, and <i>/dev/shm</i> from the host into the new root environment, ensuring a functional chroot.


title: NETWORK CONNECTIVITY
content:
Copies the host system's <i>/etc/resolv.conf</i> into the chroot's <i>/etc/resolv.conf</i>, allowing applications within the chroot (like <b>pacman</b>) to resolve domain names and access network resources.


title: CLEAN EXIT
content:
Upon exiting the chroot, the script attempts to automatically unmount the bind-mounted pseudo-filesystems, reducing the risk of busy mount points.


title: HISTORY
content:
<b>arch-chroot</b> is a specific utility developed for Arch Linux as part of the <i>arch-install-scripts</i> package. Its development aimed to streamline and simplify the traditional <b>chroot</b> process, which, for a complete system, requires multiple bind mounts and configuration file adjustments (like <i>resolv.conf</i>). It abstracts these complexities, providing a more robust and user-friendly experience for Arch Linux users during initial installation, system recovery, or maintenance tasks, such as updating bootloaders or fixing broken packages. Its origins lie in addressing common challenges faced by users trying to set up a functional chroot manually.


title: PARAMETERS
content:
<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 the program version information and exits.<br><br>


title: DESCRIPTION
content:
<i>archdetect</i> is a command-line utility primarily used within installer environments, such as the Debian or Ubuntu installer (<i>debian-installer</i>), to automatically detect the system's hardware architecture. Its main purpose is to determine the correct architecture string (e.g., "amd64", "i386", "armhf", "arm64", "powerpc") for the system it's running on. This information is crucial for selecting the appropriate kernel, packages, and system components during the installation process. The command gathers architecture details from various sources, including the running kernel's information (like <i>/proc/cpuinfo</i>), BIOS data, and other system-specific heuristics, to provide a reliable architecture identification. It typically outputs the detected architecture string to standard output, making it easy for scripts within the installer to consume this information and proceed with architecture-specific tasks. While not commonly used by end-users post-installation, it plays a vital role in ensuring a smooth and correct operating system deployment.


title: CAVEATS
content:
<i>archdetect</i> is not a general-purpose system information tool for end-users; its primary design and usage are within operating system installer environments (e.g., Debian/Ubuntu's <i>debian-installer</i>). It relies on kernel and BIOS information, and its output is specifically formatted for consumption by installer scripts, typically just outputting the architecture string. For post-installation architecture queries, commands like <i>uname -m</i> or <i>dpkg-architecture -qDEB_HOST_ARCH</i> are more appropriate and versatile. Its behavior and available "options" are heavily tied to its role in the installation process and may vary slightly across different installer versions or distributions.


title: USAGE CONTEXT
content:
In installer scripts, <i>archdetect</i> is often called, and its output is captured into a variable, which then dictates subsequent actions like which kernel image to load or which package repositories to use. A common invocation is <b>archdetect auto</b>, which attempts to automatically determine the architecture.<br><br>Example:<br>ARCH=$(archdetect auto)<br>This command would set the ARCH shell variable to the detected architecture string (e.g., "amd64").


title: OUTPUT FORMAT
content:
When successful, <i>archdetect</i> typically prints a single line to standard output containing the detected Debian architecture string (e.g., "amd64", "i386", "arm64"). No other output is usually provided on standard output unless an error occurs or a help/version flag is used.


title: HISTORY
content:
<i>archdetect</i> has been a fundamental component of the Debian Installer (<i>debian-installer</i>) since its early development. It was designed to provide a robust and automated way for the installer to identify the target system's architecture, thereby simplifying the multi-architecture support crucial for Debian. Its evolution has been closely tied to the <i>debian-installer</i> project, adapting to new hardware platforms and kernel changes to ensure accurate detection across a wide range of systems. Before <i>archdetect</i>, manual architecture selection or less sophisticated detection methods were often used, making the installation process more prone to errors or requiring more user intervention.


title: PARAMETERS
content:
<b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug mode, displaying additional diagnostic information for troubleshooting.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-d</b>, enable debug mode.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress non-critical errors, running in quiet mode without displaying warnings.<br><br><b><b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-q</b>, suppress non-critical errors.<br><br>


title: DESCRIPTION
content:
Archey is a command-line utility designed to display various system details in a compact and visually appealing format, often incorporating the distribution's ASCII art logo. It typically outputs information such as the operating system and kernel version, system uptime, package count, desktop environment or window manager, CPU and GPU specifics, and RAM usage. Its primary appeal lies in its clean, structured output, making it a popular choice among Linux enthusiasts for showcasing their system configurations in terminal screenshots or streams. While there have been different implementations (e.g., original shell script, Python-based <b>archey3</b>), the core functionality of presenting system information in an aesthetic ASCII art manner remains consistent.


title: CAVEATS
content:
The accuracy and comprehensiveness of <b>archey</b>'s output depend on the underlying system tools and configuration (e.g., <i>procfs</i>, <i>lsb_release</i>, package managers like <i>apt</i> or <i>pacman</i>). <br>It is not always pre-installed on all Linux distributions and often requires manual installation. <br>Various forks and versions exist, which may lead to slight differences in features or output compared to the most common <b>archey3</b> implementation. <br>The command is primarily for aesthetic display and not for in-depth system monitoring or troubleshooting.


title: INSTALLATION
content:
The most common version, <b>archey3</b>, is typically installed via <i>pip</i> (Python's package installer) by running <b>pip install archey3</b> in the terminal. Some Linux distributions or community repositories (like AUR for Arch Linux) might offer a pre-packaged version. Ensure Python and <i>pip</i> are installed on your system before attempting installation.


title: TYPICAL USAGE
content:
Users frequently add the <b>archey</b> command to their shell's startup file (e.g., <i>.bashrc</i> for Bash, <i>.zshrc</i> for Zsh) so that it runs automatically every time a new terminal session is opened. This provides an instant, visually appealing summary of the system upon launching a terminal. For example, simply adding the line <b>archey</b> to the end of your <i>~/.bashrc</i> file will execute it upon terminal launch.


title: HISTORY
content:
<b>archey</b> originated as a simple shell script by Tyler Miller, pioneering the visually distinct 'fetch' style of system information display in the terminal. Its innovative approach quickly gained popularity, especially within the Linux 'ricing' community, where users customize their desktop environments for aesthetic appeal. Over time, numerous forks and reimplementations emerged, with <b>archey3</b> (a Python-based version) becoming widely adopted due to its improved portability and maintainability across various distributions. Although later tools like <b>neofetch</b> expanded upon its features and gained more widespread popularity, <b>archey</b> remains a significant historical precursor, establishing a trend for elegant and concise system information displays.


title: SYNOPSIS
content:
<b><i>archinstall</i></b> <i>[--config &lt;path&gt;] [--dry-run] [--script &lt;path&gt;] [--profile &lt;name&gt;] [OPTIONS...]</i><br><b><i>archinstall</i></b> <i>[--help | --version]</i><br><br>The command is typically run without arguments for an interactive, guided installation, or with specific options to automate or customize the process.


title: PARAMETERS
content:
<b><i>--config &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a JSON configuration file for an automated installation. This file can be generated from a previous interactive session.<br><br><b><i>--dry-run</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates the installation process without making any actual changes to the system. Useful for testing configurations.<br><br><b><i>--script &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a custom Python script for advanced and highly specific installation routines.<br><br><b><i>--profile &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a predefined system profile, such as 'desktop', 'server', or 'minimal', which includes specific package groups and configurations.<br><br><b><i>--harddrive &lt;device&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly specifies the target hard drive for installation (e.g., /dev/sda), bypassing interactive disk selection.<br><br><b><i>--disk_encryption</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables disk encryption for the installation, typically using LUKS.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current version of the archinstall script.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's help message and available options.<br><br>


title: DESCRIPTION
content:
<i>archinstall</i> is an <b>official Arch Linux installer script</b> designed to simplify the traditionally complex installation process. Written in Python, it provides a <b>user-friendly, guided, and interactive experience</b>, making Arch Linux more accessible to new users while retaining its core philosophy of user control.<br><br>The script automates many manual steps, including disk partitioning, filesystem creation, locale configuration, user account setup, bootloader installation, and even optional desktop environment and display manager installation. It can be run interactively with prompts or fully automated using a configuration file or a custom script. Its flexibility allows users to quickly deploy a basic Arch system or a fully configured desktop environment, significantly reducing the time and effort required for a fresh installation.


title: CAVEATS
content:
While <i>archinstall</i> significantly simplifies the process, it's still an evolving project. Users should be aware that it might occasionally encounter bugs or edge cases. A basic understanding of Arch Linux concepts and the ability to troubleshoot (e.g., via the ArchWiki) is still beneficial. It requires an active internet connection during installation to download packages.


title: <B>INSTALLATION PROFILES</B>
content:
<i>archinstall</i> offers a selection of pre-defined profiles (e.g., <i>desktop</i>, <i>server</i>, <i>minimal</i>, <i>xorg</i>, <i>plasma</i>, <i>gnome</i>) that streamline the setup of common system configurations. Choosing a profile automates the installation of relevant package groups, desktop environments, display managers, and basic utilities, providing a ready-to-use system faster.


title: <B>AUTOMATION CAPABILITIES</B>
content:
Beyond interactive mode, <i>archinstall</i> supports full automation. Users can save the configuration from an interactive session into a <i>config.json</i> file and reuse it for subsequent installations. This feature is invaluable for deploying Arch Linux consistently across multiple machines, virtual environments, or for rapid re-installations without manual intervention.


title: HISTORY
content:
<i>archinstall</i> was developed by the Arch Linux team as an official effort to provide a more accessible entry point to the Arch Linux ecosystem. It was first introduced to the Arch ISO images in 2021, addressing long-standing community requests for a guided installer. Its development is ongoing, with continuous improvements and feature additions released alongside new Arch ISO versions, aiming to strike a balance between user-friendliness and adherence to the Arch philosophy.


title: PARAMETERS
content:
<b><I>ARCHIVE_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the archive file to be mounted.<br><br><b><I>MOUNT_POINT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the directory where the archive will be mounted. This directory must exist.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display program version information and exit.<br><br><b><b>-o</b> <I>OPTIONS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass FUSE mount options (e.g., <b>ro</b> for read-only, <b>allow_other</b> to allow other users to access, <b>default_permissions</b> to enable default FUSE permissions, <b>uid=N</b>, <b>gid=N</b>).<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output, printing additional information to stderr.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run in foreground, do not daemonize.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable multi-threaded operation.<br><br>


title: DESCRIPTION
content:
<b>archivemount</b> is a <I>FUSE</I> (Filesystem in Userspace) program that allows you to mount a compressed or uncompressed archive file (e.g., <I>tar</I>, <I>zip</I>, <I>iso</I>, <I>rar</I>, <I>7z</I>) as a regular filesystem directory. Once mounted, you can navigate into the directory, list its contents, and access individual files within the archive as if they were on a regular disk, without explicitly extracting the entire archive.<br><br>This provides a convenient way to inspect or retrieve specific files from large archives without consuming significant disk space or time for full extraction. It leverages the <I>libarchive</I> library for robust archive parsing, making it compatible with a wide array of archive formats.


title: CAVEATS
content:
<b>archivemount</b> provides <B>read-only</B> access to archive contents; you cannot modify, delete, or create files within the mounted archive.<br><br>Accessing files within a large or complex archive might be slower than accessing regular files, as data needs to be extracted on-the-fly.<br><br>It requires the FUSE kernel module and user-space libraries to be installed and loaded on the system. The archive must be unmounted using <B>fusermount -u <I>MOUNT_POINT</I></B> or <B>umount <I>MOUNT_POINT</I></B> when no longer needed.


title: SUPPORTED ARCHIVE FORMATS
content:
<b>archivemount</b> leverages the <I>libarchive</I> library, which supports a vast range of archive formats including but not limited to: <I>tar</I> (and its compressed variants like <I>tar.gz</I>, <I>tar.bz2</I>, <I>tar.xz</I>), <I>zip</I>, <I>iso</I> (ISO 9660 CD images), <I>rar</I>, <I>7z</I>, <I>cpio</I>, <I>ar</I>, <I>deb</I>, <I>rpm</I>, and many more. The specific formats supported depend on the version and compilation options of <I>libarchive</I> installed on the system.


title: USAGE EXAMPLE
content:
To mount an archive named <B>my_archive.tar.gz</B> to a newly created directory <B>~/my_mount</B>:<br><br>1. Create the mount point directory (if it doesn't exist):<br><B>mkdir -p ~/my_mount</B><br><br>2. Mount the archive:<br><B>archivemount my_archive.tar.gz ~/my_mount</B><br><br>3. Browse the archive contents:<br><B>ls ~/my_mount</B><br><br>4. After use, unmount the archive:<br><B>fusermount -u ~/my_mount</B><br>or, for root or via sudo:<br><B>sudo umount ~/my_mount</B>


title: HISTORY
content:
<b>archivemount</b> was developed to provide a convenient FUSE interface for the <I>libarchive</I> library, enabling users to interact with a wide array of archive formats as if they were standard directories. Its development aimed to simplify archive content browsing without the overhead of full extraction, integrating seamlessly into the Linux filesystem environment as part of the broader FUSE ecosystem.


title: PARAMETERS
content:
<b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the currently active Java environment and lists all installed Java versions found on the system.<br><br><b>set <i>&lt;java_version_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the specified <i>&lt;java_version_name&gt;</i> as the default system-wide Java environment. The <i>&lt;java_version_name&gt;</i> must be one of the versions listed by <b>archlinux-java status</b> (e.g., <i>java-17-jdk</i>).<br><br><b>unset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the system-wide default Java environment by deleting the <b>/usr/lib/jvm/default</b> symlink. Applications might then rely on explicitly configured <b>JAVA_HOME</b> or system defaults from other sources.<br><br><b>fix</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to fix issues with the Java environment, primarily by recreating necessary symbolic links if they are broken or missing. This can be useful after system updates or package changes.<br><br>


title: DESCRIPTION
content:
<i>archlinux-java</i> is a utility exclusive to Arch Linux that provides a convenient way to manage multiple installed Java Development Kit (JDK) and Java Runtime Environment (JRE) versions. On Arch Linux, various Java packages (like <b>jdk8</b>, <b>jdk11</b>, <b>jdk17</b>, <b>jre</b>) can be installed simultaneously using <b>pacman</b>.<br><br>However, only one Java environment can be active system-wide at a time for commands like <b>java</b>, <b>javac</b>, and <b>jar</b> to resolve correctly. <i>archlinux-java</i> simplifies the process of switching between these installed versions. It primarily works by manipulating symlinks in <b>/usr/lib/jvm/default</b>, which then points to the desired Java installation. This allows developers and users to easily switch between different Java versions required by various applications or projects without manually altering PATH variables or symbolic links.


title: CAVEATS
content:
<i>archlinux-java</i> only manages Java versions <b>installed via pacman</b> into the <b>/usr/lib/jvm/</b> directory structure. It does not manage manual Java installations or those installed via other means (e.g., SDKMAN, direct tarball extractions into user directories).<br><br>Changes made by <i>archlinux-java</i> are system-wide. For per-user or per-project Java version management, tools like <b>SDKMAN!</b> or explicit <b>JAVA_HOME</b> environment variable settings are often preferred or used in conjunction with <i>archlinux-java</i>.<br><br>After changing the Java version, some applications or shell sessions might require a restart to pick up the new default.


title: JAVA PACKAGE NAMING
content:
Arch Linux Java packages are typically named to indicate their major version (e.g., <b>jdk8</b>, <b>jdk11</b>, <b>jdk17</b>, <b>jre</b>). When using <b>archlinux-java set</b>, you provide the directory name (e.g., <i>java-8-jdk</i>, <i>java-11-jdk</i>, <i>java-17-jdk</i>, <i>java-8-jre</i>) which corresponds to the paths under <b>/usr/lib/jvm/</b>.


title: HOW IT WORKS
content:
The script primarily manages the symlink at <b>/usr/lib/jvm/default</b>, which then points to the selected Java environment. Other system symlinks (e.g., <b>/usr/bin/java</b>, <b>/usr/bin/javac</b>) then point to components within <b>/usr/lib/jvm/default/bin/</b>, effectively making the selected Java version the system default.


title: HISTORY
content:
<i>archlinux-java</i> is an essential part of the Arch Linux Java package ecosystem. Historically, managing multiple Java versions on Linux could be cumbersome, often involving manual symlink manipulation or complex environment variable setups. <i>archlinux-java</i> was introduced as a dedicated script to streamline this process specifically for Arch Linux users, providing a consistent and easy-to-use interface for switching between various JDK/JRE versions installed via <b>pacman</b>. It reflects Arch Linux's philosophy of providing simple yet powerful tools for system management.


title: PARAMETERS
content:
<b><I>QUERY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The search query string to be used when looking for articles on the Arch Linux Wiki.<br><br><b><B>-h, --help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the command, detailing its usage and available options.<br><br><b><B>-o, --open</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the best matching search result directly in your default web browser. This option is useful for quick navigation to the most relevant wiki page.<br><br><b><B>-s, --search</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly performs a search for the provided query. This is the default behavior if no other action-oriented option (like <B>--open</B> or <B>--print</B>) is specified.<br><br><b><B>-v, --version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of the <B>archwiki-rs</B> tool, useful for checking compatibility or reporting bugs.<br><br><b><B>-i, --interactive</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Presents a list of search results, allowing the user to interactively select which article to open or further act upon. This is ideal when the initial search yields multiple relevant pages.<br><br><b><B>-p, --print</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and prints the raw content of the best matching article directly to your terminal's standard output, enabling quick viewing without leaving the command line.<br><br>


title: DESCRIPTION
content:
<B>archwiki-rs</B> is a lightweight, <I>Rust</I>-based command-line utility designed to provide quick and efficient access to the <I>Arch Linux Wiki</I> directly from your terminal. It streamlines the process of information retrieval by eliminating the need to open a graphical web browser for common wiki queries. Users can easily search for articles by providing a <I>QUERY</I>, view a list of potential search results, and then either automatically open the most relevant page in their default web browser using the <B>--open</B> option, or interactively select from multiple options with <B>--interactive</B>. Furthermore, for those who prefer to stay entirely within the terminal, the <B>--print</B> option allows for the display of an article's raw content. This tool is invaluable for system administrators, developers, and any Arch Linux user who frequently consults the wiki and values a fast, integrated command-line workflow.


title: CAVEATS
content:
The command requires an active internet connection to function as it queries the live <I>Arch Linux Wiki</I>.<br>When using the <B>-p</B> or <B>--print</B> option, the article content is displayed in its raw wiki markup format, which may not be easily readable without a dedicated renderer.<br>The 'best result' determined by the command for options like <B>-o</B> may not always be the exact page a user expects, making the <B>-i</B> or <B>--interactive</B> option useful for precise selection.


title: HISTORY
content:
<I>archwiki-rs</I> is a relatively modern utility, written in <I>Rust</I>, a language known for its performance, safety, and concurrency. Its development is community-driven, typical for specialized open-source tools within the Linux ecosystem. It emerged as a response to the need for faster, more integrated access to the <I>Arch Linux Wiki</I> for command-line aficionados, providing a native, lightweight alternative to web browser-based access.


title: PARAMETERS
content:
<b><b>--board</b> <I>fqbn</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Fully Qualified Board Name (e.g., <I>arduino:avr:uno</I>) for compilation or upload.<br><br><b><b>--port</b> <I>serial_port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Designates the serial port (e.g., <I>/dev/ttyUSB0</I> or <I>COM3</I>) for uploading sketches.<br><br><b><b>--upload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and uploads the specified sketch to the microcontroller. Requires <I>--board</I> and usually <I>--port</I>.<br><br><b><b>--verify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles (verifies) the specified sketch without uploading it. Useful for checking code syntax and compilation errors.<br><br><b><b>--build-path</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a custom directory for storing build artifacts like compiled binaries (.hex files).<br><br><b><b>--save-prefs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves all currently active preferences to the preferences file. Usually used after <I>--set-pref</I>.<br><br><b><b>--get-pref</b> <I>preference_key</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and prints the value of a specific IDE preference (e.g., <I>editor.font.size</I>).<br><br><b><b>--set-pref</b> <I>preference_key</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific IDE preference to a new value. The change is temporary unless <I>--save-prefs</I> is also used.<br><br><b><b>--pref</b> <I>preference_key</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a temporary preference for the current command invocation only; does not persist.<br><br><b><b>--verbose-build</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays highly verbose output during the compilation process, showing compiler commands and flags.<br><br><b><b>--verbose-upload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays highly verbose output during the upload process, useful for debugging upload issues.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the Arduino IDE.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of command-line options.<br><br>


title: DESCRIPTION
content:
The <b>arduino</b> command is the primary executable for the Arduino Integrated Development Environment (IDE). It allows users to launch the graphical IDE for writing, compiling, and uploading code (sketches) to Arduino-compatible microcontrollers.<br><br>Beyond its graphical interface, the command also provides a powerful command-line interface (CLI) for performing automated tasks such as compiling (<I>verifying</I>) and uploading sketches without launching the GUI. This headless operation is particularly useful for continuous integration (CI) environments, automated testing, or scripting build processes for Arduino projects. It provides options to specify the target board, serial port, manage preferences, and control output verbosity.


title: CAVEATS
content:
The <b>arduino</b> command requires the Arduino IDE to be installed on the system, as it is the executable for the IDE itself. Its command-line options are primarily intended for automation and headless operations, not for routine interactive use. It relies on a Java runtime environment. The specific options and their behavior might vary slightly between different versions of the Arduino IDE.


title: HEADLESS OPERATIONS
content:
The command's strength lies in its ability to perform <I>headless</I> operations, meaning it can compile or upload sketches without launching the full graphical user interface. This is crucial for scripting, continuous integration (CI/CD) pipelines, and automated build systems. By using <I>--verify</I> and <I>--upload</I> with appropriate <I>--board</I> and <I>--port</I> arguments, developers can integrate Arduino sketch compilation and deployment into their automated workflows.


title: PREFERENCE MANAGEMENT
content:
The <b>arduino</b> command offers fine-grained control over IDE preferences directly from the command line. Options like <I>--get-pref</I> allow querying current settings, while <I>--set-pref</I> can modify them. The <I>--pref</I> option provides a way to set temporary preferences for a single command invocation, which is useful for testing different compilation settings without altering the global IDE configuration. <I>--save-prefs</I> is necessary to make <I>--set-pref</I> changes permanent.


title: HISTORY
content:
The Arduino project was launched in 2005, providing an accessible platform for electronics prototyping. The Arduino IDE, an open-source development environment, was central to its ease of use. Initially, the <b>arduino</b> command primarily launched the graphical interface. Over time, as the need for automation in embedded development grew, robust command-line options were integrated. This evolution allowed for compiling and uploading sketches from scripts, enabling continuous integration, automated testing, and batch processing, making the Arduino ecosystem more suitable for professional and complex projects beyond simple interactive development.


title: SYNOPSIS
content:
<i>arduino-builder</i> [options] &lt;sketch_path&gt;<br>Example: <i>arduino-builder -fqbn arduino:avr:uno -hardware /opt/arduino/hardware -tools /opt/arduino/tools -libraries /opt/arduino/libraries -build-path /tmp/build_dir /path/to/your/sketch.ino</i>


title: PARAMETERS
content:
<b><b>-fqbn</b> <i>&lt;fqbn&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <b>F</b>ully <b>Q</b>ualified <b>B</b>oard <b>N</b>ame (e.g., <i>arduino:avr:uno</i>) for compilation. This is a critical parameter.<br><br><b><b>-build-path</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the directory where all intermediate and final build artifacts (<i>.o</i> files, <i>.hex</i> file, etc.) will be stored.<br><br><b><b>-hardware</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a path to search for hardware definitions (boards, platforms, cores). Can be specified multiple times for various locations.<br><br><b><b>-tools</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a path to search for build tools (compilers, uploaders, etc.). Can be specified multiple times.<br><br><b><b>-libraries</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a path to search for Arduino libraries. Can be specified multiple times for custom library locations.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output during the compilation process, showing detailed compiler commands and progress.<br><br><b><b>-warnings</b> <i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the compiler warning level. Possible values include <i>none</i>, <i>default</i>, <i>more</i>, and <i>all</i>.<br><br><b><b>-debug-level</b> <i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the internal debug level for <i>arduino-builder</i> itself.<br><br><b><b>-build-properties</b> <i>&lt;prop=value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes custom build properties directly to the underlying build system, overriding default values from <i>platform.txt</i>.<br><br><b><b>-vid</b> <i>&lt;vid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the USB Vendor ID read from <i>boards.txt</i> for specific board configurations.<br><br><b><b>-pid</b> <i>&lt;pid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the USB Product ID read from <i>boards.txt</i>.<br><br><b><b>-only-verify-preprocessor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs only the preprocessor phase, useful for checking syntax and include paths without full compilation.<br><br><b><b>-compile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Default) Compiles the sketch. This option is implicitly enabled if no other action is specified.<br><br><b><b>-upload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uploads the compiled sketch to the board after successful compilation. Requires a configured uploader tool.<br><br><b><b>-port</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the serial port (e.g., <i>/dev/ttyUSB0</i> or <i>COM3</i>) to use for uploading the sketch.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of <i>arduino-builder</i> and exits.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message detailing available command-line options.<br><br>


title: DESCRIPTION
content:
<i>arduino-builder</i> is a fundamental command-line tool that serves as the core build system for Arduino sketches and libraries. It parses sketch code, resolves dependencies, locates necessary hardware definitions (boards, platforms), compiles C/C++ files using the appropriate toolchain (like <i>avr-gcc</i>), links object files, and generates the final executable (e.g., <i>.hex</i> file for AVR boards). This separation of the build logic from the Arduino IDE allows for headless compilation, automated testing, and integration into continuous integration/delivery (CI/CD) pipelines, providing a consistent and robust build process across various environments. It is often invoked by higher-level tools like <i>arduino-cli</i> or directly within custom build scripts.


title: CAVEATS
content:
Using <i>arduino-builder</i> effectively often requires a good understanding of the Arduino project structure and how <i>boards.txt</i> and <i>platform.txt</i> files define the build process.<br>It relies on a well-configured Arduino environment (correct paths for hardware, tools, libraries).<br>Error messages, especially from underlying compilers, can sometimes be cryptic.<br>While it can compile and upload, it does not provide the full development experience of the Arduino IDE or <i>arduino-cli</i> (e.g., board manager, library manager).


title: CORE BUILD PHASES
content:
The <i>arduino-builder</i> orchestrates several key phases during compilation:<br><b>1. Pre-processing</b>: Handles <i>.ino</i> file conversion, resolves includes, and prepares the sketch.<br><b>2. Core & Library Compilation</b>: Compiles the Arduino core library and any included user/third-party libraries.<br><b>3. Sketch Compilation</b>: Compiles the user's specific sketch files (<i>.ino</i>, <i>.c</i>, <i>.cpp</i>).<br><b>4. Linking</b>: Combines all compiled object files with necessary toolchain libraries to create the final executable.<br><b>5. Hex File Generation</b>: Converts the executable into a platform-specific uploadable format (e.g., an <i>.hex</i> file for AVR microcontrollers).<br><b>6. (Optional) Upload</b>: If specified, invokes the appropriate programmer tool (e.g., <i>avrdude</i>) to flash the compiled code onto the board.


title: HISTORY
content:
<i>arduino-builder</i> was introduced to modularize the Arduino IDE's build process, separating the core compilation logic from the graphical user interface. Prior to its existence, the IDE directly handled all build steps, making headless compilation and automated testing challenging. Its development marked a significant step towards enabling command-line automation and integration of Arduino projects into modern software development workflows, ultimately leading to the creation and widespread adoption of <i>arduino-cli</i> as the official command-line tool.


title: SYNOPSIS
content:
<i><b><code>arecord</code></b> [<i>OPTIONS</i>] [<i>FILE</i>]</i><br><i><b><code>arecord</code></b> [<i>-L</i> | <i>-l</i>]</i>


title: PARAMETERS
content:
<b><i>-h</i>, <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows help message and exits.</i><br><br><b><i>-v</i>, <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the program version and exits.</i><br><br><b><i>-D</i> <i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the <b><i>PCM</i></b> device name to use for recording (e.g., <b><i>hw:0,0</i></b>, <b><i>default</i></b>).</i><br><br><b><i>-f</i> <i>format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the sample format (e.g., <b><i>S16_LE</i></b> for 16-bit signed little-endian, <b><i>U8</i></b> for 8-bit unsigned).</i><br><br><b><i>-r</i> <i>rate</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the sample rate in <b><i>Hz</i></b> (e.g., <b><i>44100</i></b>, <b><i>48000</i></b>).</i><br><br><b><i>-c</i> <i>channels</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the number of channels (e.g., <b><i>1</i></b> for mono, <b><i>2</i></b> for stereo).</i><br><br><b><i>-d</i> <i>duration</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Records for a specified <i>duration</i> in seconds.</i><br><br><b><i>-t</i> <i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the file type (e.g., <b><i>wav</i></b>, <b><i>raw</i></b>, <b><i>voc</i></b>). Default is <b><i>wav</i></b>.</i><br><br><b><i>-N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Don't touch existing file. If the output file already exists, <b><i>arecord</i></b> will not overwrite it.</i><br><br><b><i>-M</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Use <b><i>mmap</i></b> stream. Enables memory-mapped <b><i>I/O</i></b> for audio data transfer, which can be more efficient.</i><br><br><b><i>-q</i>, <i>--quiet</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppresses messages during recording.</i><br><br><b><i>-L</i>, <i>--list-devices</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all sound cards and digital audio devices found on the system.</i><br><br><b><i>-l</i>, <i>--list-pcms</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all available <b><i>PCM</i></b> devices.</i><br><br><b><i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The name of the output file where audio will be saved. Use <b><i>-</i></b> for standard output.</i><br><br>


title: DESCRIPTION
content:
<i><b><i>arecord</i></b> is a command-line utility provided by the <b><i>ALSA</i></b> (Advanced Linux Sound Architecture) project for recording audio from a sound card or other audio input devices. It allows users to capture audio streams directly from a <b><i>PCM</i></b> device, such as a microphone or line-in, and save them to a file in various formats (e.g., <b><i>WAV</i></b>, raw). It provides extensive control over recording parameters like sample rate, number of channels, sample format, and recording duration. <b><i>arecord</i></b> is commonly used in shell scripts for automated audio capture, for troubleshooting audio input, or for simple, quick recordings without a <b><i>GUI</i></b>. Being part of the <b><i>ALSA</i></b> utilities, it interacts directly with the kernel's sound drivers, offering low-level access to audio hardware.</i>


title: CAVEATS
content:
<i><b><i>arecord</i></b> interacts directly with <b><i>ALSA</i></b>. On systems primarily using <b><i>PulseAudio</i></b> or <b><i>JACK</i></b>, you might need to ensure <b><i>ALSA</i></b> plugins are configured correctly, or <b><i>PulseAudio</i></b>/<b><i>JACK</i></b> is set up to expose <b><i>ALSA</i></b> devices, otherwise, <b><i>arecord</i></b> might not find or use the expected devices.<br><br>Permissions issues: Users must typically be part of the '<b><i>audio</i></b>' group to access sound devices directly.<br><br>Device availability: If another application is already using the desired audio input device, <b><i>arecord</i></b> might report an error like "<b><i>Device or resource busy</i></b>."</i>


title: <I>DEVICE NAMING CONVENTIONS</I>
content:
<i><b><i>ALSA</i></b> devices can be specified using a few conventions with the <b><i>-D</i></b> option. <b><i>default</i></b> usually refers to the system's default audio device, which might be configured by <b><i>PulseAudio</i></b>. For direct hardware access, <b><i>hw:X,Y</i></b> is used, where <b><i>X</i></b> is the card number (e.g., <b><i>0</i></b> for the first sound card) and <b><i>Y</i></b> is the device number on that card (e.g., <b><i>0</i></b> for the first digital audio device). You can list available devices using <b><i>arecord -L</i></b> or <b><i>arecord -l</i></b>.</i>


title: <I>COMMON SAMPLE FORMATS</I>
content:
<i>The <b><i>-f</i></b> option specifies the sample format. Common formats include:<br><b><i>S16_LE</i></b><i>: 16-bit signed, little-endian (<b><i>CD</i></b> quality standard)</i><br><b><i>S24_LE</i></b><i>: 24-bit signed, little-endian</i><br><b><i>S32_LE</i></b><i>: 32-bit signed, little-endian</i><br><b><i>U8</i></b><i>: 8-bit unsigned (lowest quality, raw byte stream)</i><br><i>Choosing the correct format is important for audio quality and compatibility with playback software.</i>


title: HISTORY
content:
<i><b><i>arecord</i></b> is an integral part of the <b><i>ALSA</i></b> (Advanced Linux Sound Architecture) utilities, which were developed to replace the older <b><i>OSS</i></b> (Open Sound System) as the standard sound framework in <b><i>Linux</i></b>. <b><i>ALSA</i></b> aimed to provide better hardware support, more robust <b><i>APIs</i></b>, and improved performance compared to <b><i>OSS</i></b>. <b><i>arecord</i></b> was introduced as the command-line interface for capturing audio streams using the <b><i>ALSA PCM</i></b> (Pulse Code Modulation) interface. Its development has mirrored the evolution of <b><i>ALSA</i></b> itself, continually adapting to new audio hardware and software requirements within the <b><i>Linux</i></b> ecosystem.</i>


title: SEE ALSO
content:
<i>aplay(1)</i>, <i>amixer(1)</i>, <i>alsamixer(1)</i>, <i>pactl(1)</i>, <i>sox(1)</i>, <i>ffmpeg(1)</i>


title: SYNOPSIS
content:
<i>arecordmidi</i>: This command does not have a standard synopsis as it is <b>not a recognized utility</b>.<br><br><b>Instead, consider how MIDI recording is typically done with ALSA utilities:</b><br>To record raw MIDI events from a source (e.g., a MIDI keyboard connected to an ALSA port), you would commonly use:<br><br><b>aconnect -l</b> <i>(to list available MIDI ports)</i><br><b>aseqdump -p <i>source_port_id</i> > <i>output_file.mid</i></b> <i>(to dump MIDI events from a specified port to a file)</i><br><br>For example, if your MIDI keyboard is on port '20:0':<br><b>aseqdump -p 20:0 > my_midi_recording.mid</b><br><br>Note that <i>aseqdump</i> provides raw event streams, which might require further processing to become a proper Standard MIDI File (SMF). For more structured MIDI file creation, a dedicated sequencer application is usually preferred.


title: DESCRIPTION
content:
<i>arecordmidi</i> is <b>not a standard, recognized command</b> in mainstream Linux distributions or part of the official ALSA (Advanced Linux Sound Architecture) utilities. The name suggests a tool for recording MIDI (Musical Instrument Digital Interface) data, likely mirroring the functionality of <i>arecord</i> for audio.<br><br>While <i>arecordmidi</i> itself doesn't exist as a standalone command, users can record MIDI data on Linux using other ALSA sequencer tools. The typical approach involves utilizing commands like <b>aconnect</b> to manage MIDI port connections and <b>aseqdump</b> (or similar sequencer applications) to capture MIDI events to a file. Advanced MIDI recording often uses dedicated Digital Audio Workstations (DAWs) or MIDI sequencers that leverage ALSA's MIDI capabilities.


title: CAVEATS
content:
<b><i>arecordmidi</i> is not a standard Linux command.</b><br>Any script or binary found on a system named 'arecordmidi' would be a custom creation, not part of the official ALSA or core Linux utilities. Therefore, its behavior, options, and reliability are entirely dependent on its creator. Users looking to record MIDI on Linux should instead rely on established ALSA tools like <b>aconnect</b> and <b>aseqdump</b>, or dedicated MIDI sequencing software.


title: TYPICAL MIDI RECORDING WORKFLOW ON LINUX
content:
To record MIDI data on a Linux system, especially from an external MIDI device connected via USB or MIDI interface, the general steps involve:<br><br>1.  <b>Identify MIDI Ports:</b> Use <b>aconnect -l</b> to list all available ALSA MIDI input and output ports. Find the port corresponding to your MIDI input device (e.g., a keyboard or controller).<br><br>2.  <b>Record Raw MIDI Events:</b> For simple event capture, <b>aseqdump -p <i>input_port_id</i> > <i>output.mid</i></b> will dump all MIDI events from the specified input port into the <i>output.mid</i> file. Press <b>Ctrl+C</b> to stop recording. Be aware that <i>aseqdump</i> records raw events, which might require further processing to conform to a proper Standard MIDI File (SMF).<br><br>3.  <b>Use MIDI Sequencer Software:</b> For professional or more structured MIDI recording (e.g., multitrack, quantization, editing), it is highly recommended to use dedicated MIDI sequencer software or Digital Audio Workstations (DAWs) that support ALSA MIDI. Examples include Rosegarden, Qtractor, LMMS, or Ardour. These applications provide comprehensive recording, editing, and playback capabilities and typically save in Standard MIDI File (SMF) format.


title: HISTORY
content:
There is no official history for a command named <i>arecordmidi</i>, as it does not exist as a standard ALSA or Linux utility. The ALSA project itself (Advanced Linux Sound Architecture) was developed to replace the older OSS (Open Sound System) and has been the standard sound architecture in Linux since kernel 2.6. ALSA provides a robust MIDI sequencer API, allowing applications and utilities like <i>aconnect</i>, <i>aseqdump</i>, and <i>aplaymidi</i> to manage and interact with MIDI devices and data streams.


title: SYNOPSIS
content:
<b>argon2</b> [-d|-i|-id] [-t <i>iterations</i>] [-m <i>memory_kb</i>] [-p <i>parallelism</i>] [-k <i>key</i>] [-s <i>salt</i>] [-r|-e] [-v|-h] [<i>password</i>]


title: PARAMETERS
content:
<b>-t <i>iterations</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>time cost</i>, increasing the number of iterations for the hash calculation.<br><br><b>-m <i>memory_kb</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>memory cost</i> in kilobytes, controlling the memory footprint of the hash.<br><br><b>-p <i>parallelism</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>parallelism factor</i> (number of lanes/threads) for the hash computation.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the <b>Argon2d</b> variant, optimized for maximum resistance against GPU cracking attacks.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the <b>Argon2i</b> variant, optimized for resistance against side-channel timing attacks.<br><br><b>-id</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the <b>Argon2id</b> variant, a hybrid offering strong resistance against both GPU and side-channel attacks. This is generally the recommended variant.<br><br><b>-k <i>key</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a secret <i>key</i> for Key Derivation Function (KDF) mode, instead of a password.<br><br><b>-s <i>salt</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>salt</i> to be used. If omitted, a cryptographically secure random salt is generated.<br><br><b>-r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the raw bytes of the generated hash, instead of the encoded string.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the standard <b>Argon2</b> encoded hash string (this is the default behavior).<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>argon2</b> utility and exits.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message with command usage and options, then exits.<br><br><b><i>password</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The password string to be hashed. If this argument is omitted, the utility will read the password from standard input, which is the more secure method.<br><br>


title: DESCRIPTION
content:
The `argon2` command-line utility implements the <b>Argon2</b> key derivation function, an algorithm selected as the winner of the Password Hashing Competition (PHC). Designed for robust security, Argon2 provides strong resistance against both GPU-based brute-force attacks and side-channel attacks, making it ideal for securely storing user passwords or deriving cryptographic keys. Users can specify parameters such as memory cost, time cost (iterations), and parallelism to tune the hash generation process for their specific security and performance requirements. It supports three main variants: <i>Argon2d</i> for maximum GPU resistance, <i>Argon2i</i> for side-channel resistance, and the recommended <i>Argon2id</i>, which offers a balanced approach. This tool is an essential component for any system requiring state-of-the-art password security.


title: CAVEATS
content:
Choosing appropriate parameters (<i>-t</i>, <i>-m</i>, <i>-p</i>) is absolutely crucial for the security of your hashes. Too low values will significantly weaken the security against brute-force attacks, while excessively high values might make the hashing process impractically slow. Always adjust these parameters based on the specific hardware capabilities and security requirements of your system.<br>It is strongly recommended to avoid providing passwords directly as command-line arguments (e.g., `argon2 "mypassword"`) as this can expose the password in system process lists (like `ps`). Instead, allow the `argon2` command to prompt for the password or pipe it through standard input.


title: UNDERSTANDING ARGON2 VARIANTS
content:
The <b>argon2</b> command supports three main variants of the Argon2 algorithm, each with specific optimizations:<br><b>Argon2d</b>: Maximizes resistance against GPU cracking by employing data-dependent memory access. While very strong against brute-force, it can be potentially vulnerable to side-channel attacks.<br><b>Argon2i</b>: Designed for maximum resistance against side-channel timing attacks by using data-independent memory access. It is slower for GPU cracking than Argon2d.<br><b>Argon2id</b>: A hybrid approach that combines the strengths of both Argon2i and Argon2d. It uses data-independent memory access for the first pass and data-dependent memory access for subsequent passes. This variant is generally recommended for most applications as it offers a robust balance against both GPU and side-channel attacks.


title: GUIDANCE ON PARAMETER SELECTION
content:
The security and performance of <b>Argon2</b> hashes depend critically on the chosen cost parameters (<i>-t</i>, <i>-m</i>, <i>-p</i>). The goal is to make a single hash computation sufficiently expensive for an attacker without hindering legitimate usage. A common recommendation is to select values that cause the hashing process to take hundreds of milliseconds (e.g., 500ms-1s) on the server where hashes are generated. The memory cost (<i>-m</i>) should utilize a significant portion of available RAM, typically tens or hundreds of megabytes. Parallelism (<i>-p</i>) can be set to the number of available CPU cores or threads to fully utilize system resources during hashing. Regular evaluation and adjustment of these parameters are advised as hardware capabilities and attack methodologies evolve.


title: HISTORY
content:
<b>Argon2</b> was conceived by Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich, and it emerged as the definitive winner of the <I>Password Hashing Competition (PHC)</I> in July 2015. This competition was established to find a robust, modern, and secure password hashing algorithm that could effectively counter the evolving threats, particularly against <I>GPU-based brute-force attacks</I> and <I>side-channel attacks</I>, which older hashing functions struggled to resist. Its design principles emphasize high memory consumption and adjustable parallelism to deter specialized attack hardware.


title: SYNOPSIS
content:
<b>argos-translate</b> [<i>OPTIONS</i>] [<i>TEXT</i>]<br><b>argos-translate</b> [<i>OPTIONS</i>] <b>--file</b> <i>&lt;FILE&gt;</i><br><b>argos-translate</b> <b>--list-models</b><br><b>argos-translate</b> <b>--install-model</b> <i>&lt;MODEL&gt;</i> [<i>OPTIONS</i>]<br><b>argos-translate</b> <b>--remove-model</b> <i>&lt;MODEL&gt;</i><br><b>argos-translate</b> <b>--update-model</b> [<i>OPTIONS</i>]


title: PARAMETERS
content:
<b><b>-s</b>, <b>--from-lang</b> <i>&lt;LANGUAGE_CODE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the source language (e.g., 'en' for English). Required for translation if not auto-detected.<br><br><b><b>-t</b>, <b>--to-lang</b> <i>&lt;LANGUAGE_CODE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target language (e.g., 'es' for Spanish). Required for translation.<br><br><b><b>--model</b> <i>&lt;MODEL_ID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a particular model to use for translation, overriding auto-selection.<br><br><b><b>--file</b> <i>&lt;INPUT_FILE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read input text for translation from the specified file instead of standard input or command arguments.<br><br><b><b>--output-file</b> <i>&lt;OUTPUT_FILE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write translated output to the specified file instead of standard output.<br><br><b><b>--list-models</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all currently installed language models and available models for installation.<br><br><b><b>--install-model</b> <i>&lt;MODEL_ID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download and install a language model. <i>&lt;MODEL_ID&gt;</i> can be 'all' or a specific model identifier (e.g., 'en-es').<br><br><b><b>--remove-model</b> <i>&lt;MODEL_ID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove an installed language model from your system.<br><br><b><b>--update-model</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check for and update all installed language models to their latest versions.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the translation result in JSON format, useful for scripting.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the translation process.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress most output, showing only the translated text.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the <i>argos-translate</i> version information.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the help message and exit.<br><br>


title: DESCRIPTION
content:
<i>argos-translate</i> is a free, open-source command-line interface (CLI) tool for performing neural machine translation entirely offline. It allows users to translate text between various languages without an internet connection, ensuring data privacy as no information leaves your local machine. The tool utilizes pre-trained language models, which can be easily managed directly from the command line, including listing available models, installing new ones, updating, or removing existing ones. Text can be provided via standard input, specified files, or as a direct argument. <i>argos-translate</i> is built on the <i>Argos Translate</i> library, providing a robust, fast, and private solution for developers and users needing local, on-demand translation capabilities.


title: CAVEATS
content:
<b>Model Installation Required:</b> Before performing any translation, the relevant language models must be downloaded and installed using the <b>--install-model</b> option. These models can be substantial in size.<br><b>Performance:</b> Translation speed can vary significantly based on your system's hardware (CPU/GPU) and the complexity/size of the models.<br><b>Translation Quality:</b> While generally good, the quality of translation can differ across language pairs and may not always match the fluency of human translation or proprietary cloud services.


title: OFFLINE OPERATION & PRIVACY
content:
One of the primary advantages of <i>argos-translate</i> is its ability to perform translations entirely offline. Once models are installed, no internet connection is required, ensuring that sensitive text data never leaves your local machine. This makes it an excellent choice for privacy-conscious users or environments with limited internet access.


title: MODEL MANAGEMENT
content:
<i>argos-translate</i> provides robust features for managing language models. Users can easily list available models (<b>--list-models</b>), install specific models or all available models (<b>--install-model &lt;MODEL_ID&gt;</b> or <b>--install-model all</b>), remove unwanted models (<b>--remove-model &lt;MODEL_ID&gt;</b>), and keep their installed models up-to-date (<b>--update-model</b>). Models are typically stored in a user-specific data directory.


title: HISTORY
content:
<i>Argos Translate</i>, the underlying library, was developed by P. J. Sanson and is based on principles from the <i>OpenNMT</i> project. Its creation was driven by a need for a free, open-source, and privacy-respecting offline neural machine translation solution. The <i>argos-translate</i> command-line tool serves as the primary user interface to this library, providing easy access to its powerful translation capabilities for Linux users and developers since its initial releases.


title: SYNOPSIS
content:
<b>aria2c</b> [<i>OPTIONS</i>] [<i>URI</i> | <i>FILE</i>...]<br>Example: <b>aria2c</b> <i>http://example.com/file.zip</i><br>Example: <b>aria2c</b> <i>-s 10 -x 5 http://example.com/large.iso</i><br>Example: <b>aria2c</b> <i>--input-file=downloads.txt</i>


title: PARAMETERS
content:
<b><b>-s</b> &lt;<i>NUM</i>&gt;, <b>--split=</b>&lt;<i>NUM</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of connections to use for a download. A higher number can increase download speed from a single source. Default is 5.<br><br><b><b>-x</b> &lt;<i>NUM</i>&gt;, <b>--max-concurrent-downloads=</b>&lt;<i>NUM</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of files to download concurrently. This limits the overall number of active downloads at any given time. Default is 1.<br><br><b><b>-c</b>, <b>--continue</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continues a partially downloaded file. <i>aria2c</i> will check the local file and resume from where it left off, if supported by the server.<br><br><b><b>-i</b> &lt;<i>FILE</i>&gt;, <b>--input-file=</b>&lt;<i>FILE</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads URIs from the specified file. Each line in the file is treated as a separate download URI. Useful for batch downloads.<br><br><b><b>-d</b> &lt;<i>DIR</i>&gt;, <b>--dir=</b>&lt;<i>DIR</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the directory where downloaded files will be saved. If not specified, files are saved in the current working directory.<br><br><b><b>-o</b> &lt;<i>FILE</i>&gt;, <b>--out=</b>&lt;<i>FILE</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output filename for the download. This option overrides the default filename derived from the URI.<br><br><b><b>--enable-rpc</b>[=<i>true</i>|<i>false</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the RPC interface, allowing <i>aria2c</i> to be controlled remotely via JSON-RPC or XML-RPC. Default is <i>false</i>.<br><br><b><b>--torrent-file=</b>&lt;<i>FILE</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a local BitTorrent file to download. <i>aria2c</i> will act as a BitTorrent client for the given torrent.<br><br><b><b>--user-agent=</b>&lt;<i>UA</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the User-Agent header for HTTP/HTTPS requests. Useful for bypassing certain server restrictions.<br><br><b><b>--retry-wait=</b>&lt;<i>SEC</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the time in seconds to wait before retrying a failed download. Default is 0.<br><br><b><b>--log=</b>&lt;<i>LEVEL</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level (<i>debug</i>, <i>info</i>, <i>warn</i>, <i>error</i>). Output is usually sent to stderr or a log file if <b>--log-level</b> is set.<br><br>


title: DESCRIPTION
content:
<i>aria2c</i> is a lightweight command-line download utility that supports various protocols including HTTP/HTTPS, FTP, SFTP, BitTorrent, and Metalink. It excels at accelerating downloads by simultaneously downloading a file from multiple sources or URIs and by splitting a file into multiple segments and downloading them concurrently from a single source. <i>aria2c</i> is highly resumable, resource-efficient, and can be run as a daemon with its built-in RPC interface for remote control. Its versatility makes it suitable for a wide range of downloading tasks, from simple file fetches to complex BitTorrent operations.


title: CAVEATS
content:
When downloading large files with a high number of splits (<b>--split</b>), <i>aria2c</i> can consume significant network bandwidth and open many connections, which might impact other network activities or trigger network security alerts. For BitTorrent, proper firewall configuration is necessary for optimal peer connectivity. The RPC interface, if enabled, should be secured if exposed to untrusted networks.


title: RPC INTERFACE FOR AUTOMATION
content:
One of <i>aria2c</i>'s powerful features is its built-in RPC (Remote Procedure Call) interface. This allows external applications or web-based user interfaces (like <i>aria2-webui</i>) to control and monitor downloads programmatically, making it ideal for integration into scripts, servers, or custom download managers.


title: BITTORRENT AND METALINK SUPPORT
content:
Beyond traditional HTTP/FTP downloads, <i>aria2c</i> functions as a full-featured BitTorrent client, supporting magnet links, DHT, PEX, and encryption. It also supports Metalink, an XML format for specifying multiple download locations and checksums, enhancing reliability and integrity of downloads.


title: HISTORY
content:
<i>aria2c</i> was initially developed by Tatsuhiro Tsujikawa and first released in 2006. It was designed to be a fast, versatile, and resource-efficient command-line downloader. Its core strengths, such as multi-source and multi-segment downloads, along with its support for various protocols including BitTorrent and Metalink, quickly made it a popular choice for advanced users and scripts requiring robust download capabilities.


title: SYNOPSIS
content:
<b>aria2c</b> [<I>OPTIONS</I>] [<I>URI</I> | <I>FILE</I>]...<br><b>aria2c</b> [<I>OPTIONS</I>] <I>--input-file=FILE</I><br><b>aria2c</b> [<I>OPTIONS</I>] <I>--torrent=FILE</I><br><b>aria2c</b> [<I>OPTIONS</I>] <I>--metalink=FILE</I>


title: PARAMETERS
content:
<b><b>-s</b>, <b>--split</b>=<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of connections to download a file. Default is 1.<br><br><b><b>-x</b>, <b>--max-concurrent-downloads</b>=<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximum number of active parallel downloads. Default is 5.<br><br><b><b>-c</b>, <b>--continue</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continue downloading a partially downloaded file.<br><br><b><b>-o</b>, <b>--out</b>=<I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output filename.<br><br><b><b>-d</b>, <b>--dir</b>=<I>DIR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the directory to save the downloaded file(s).<br><br><b><b>-i</b>, <b>--input-file</b>=<I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read URIs from a text file, one per line.<br><br><b><b>--torrent</b>=<I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download file(s) specified in a BitTorrent .torrent file.<br><br><b><b>--metalink</b>=<I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download file(s) specified in a Metalink XML file.<br><br><b><b>--enable-rpc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable JSON-RPC/XML-RPC server.<br><br><b><b>--rpc-listen-port</b>=<I>PORT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the port for the RPC server (default 6800).<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run without actually downloading.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the version number and exit.<br><br><b><b>-h</b>, <b>--help</b>[=<I>CATEGORY</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message.<br><br>


title: DESCRIPTION
content:
<b>aria2c</b> is a powerful, lightweight, multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent, and Metalink. A key feature of aria2c is its ability to download a file from multiple sources/protocols simultaneously, maximizing download speed by utilizing all available bandwidth. It automatically resumes downloads if interrupted, handles recursive downloads for FTP and HTTP, and supports segmented downloading for individual files. With its low resource consumption and an optional built-in JSON-RPC and XML-RPC interface, aria2c is an excellent choice for scripting, server environments, and integrating with web-based download managers.


title: CAVEATS
content:
While powerful, <b>aria2c</b> is a command-line tool, lacking a native GUI. Managing numerous downloads or complex configurations can sometimes be challenging without external tools or a good understanding of its extensive options. It consumes resources proportional to the number of active connections and downloads, which can be significant on low-end systems if not configured carefully. Downloading from untrusted sources, as with any download utility, carries inherent security risks.


title: RPC INTERFACE FOR AUTOMATION
content:
<b>aria2c</b>'s built-in JSON-RPC and XML-RPC server is a standout feature. It allows external applications or scripts to control <b>aria2c</b>, add new downloads, query status, and manage active tasks. This enables the creation of web-based UIs (like webui-aria2), desktop clients, or seamless integration into complex download workflows.


title: MULTI-SOURCE & SEGMENTED DOWNLOADING
content:
Beyond basic multi-connection downloading, <b>aria2c</b> can intelligently download segments of a single file from multiple different HTTP/FTP/SFTP sources simultaneously, if multiple URIs for the same file are provided. This, combined with its ability to split files into chunks and download them concurrently, significantly boosts download throughput, especially for large files or when connections to individual sources are slow.


title: HISTORY
content:
<b>aria2c</b> was created by Tatsuhiro Tsujikawa. Its development began with a focus on delivering a high-performance, multi-protocol download utility for Linux and Unix-like systems. Over time, it expanded its capabilities to include support for BitTorrent and Metalink, making it a versatile tool for various downloading needs. It gained popularity for its ability to maximize download speeds by splitting files into segments and downloading them concurrently from multiple sources, as well as its efficient resource usage.


title: PARAMETERS
content:
<b><i>max_number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the upper limit for the numbers used in the arithmetic problems. For example, if <i>max_number</i> is 10, problems will involve numbers up to 10 (e.g., 5 + 7). If omitted, defaults to 10.<br><br><b><i>operator</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the arithmetic operation to drill. Accepted values are <b>+</b> (addition), <b>-</b> (subtraction), <b>*</b> (multiplication), or <b>/</b> (division). If omitted, the default operation is addition (<b>+</b>). When division (<b>/</b>) is selected, <b>arithmetic</b> ensures that only problems with integral results are generated.<br><br>


title: DESCRIPTION
content:
<p>The <b>arithmetic</b> command provides a straightforward, interactive drill for practicing basic arithmetic operations. It's designed to help users, especially students, improve their mental math skills in a command-line environment.</p><br><p>Upon execution, <b>arithmetic</b> presents a series of randomly generated math problems based on the specified maximum number and operator. The user types their answer, and the command immediately provides feedback: <i>"Right!"</i> for a correct answer or <i>"What?"</i> for an incorrect one. If the answer is wrong, it prompts the user to try again until the correct answer is entered, at which point it confirms with <i>"Correct!"</i>.</p><br><p>It keeps track of the number of questions asked and the number of correct first attempts. At the end of the session, typically when the user interrupts the program, it displays a summary indicating <i>"You got X right out of Y tries."</i> This simple feedback loop makes it an effective tool for quick, no-frills math practice.</p>


title: CAVEATS
content:
This command is a very basic, text-based utility. It lacks advanced features such as customizable difficulty levels (beyond `max_number`), options for varying problem types within a single session, or persistent scorekeeping. It also does not handle floating-point arithmetic; division problems are specifically designed to yield whole numbers. Its simplicity might be a limitation for users seeking more sophisticated educational tools.


title: INTERACTIVE GAMEPLAY AND SCORING
content:
The command provides immediate feedback. If an answer is correct, it prints <i>"Right!"</i>. If incorrect, it prints <i>"What?"</i> and prompts for another attempt. Once a question is answered correctly (even after multiple tries), it confirms with <i>"Correct!"</i>. At the end of the session, it summarizes the user's performance with a line like <i>"You got X right out of Y tries."</i>, where X is the number of problems correctly answered on the first attempt, and Y is the total number of problems presented.


title: EXITING THE GAME
content:
To quit the <b>arithmetic</b> drill at any point, the user can typically type an interrupt character, which is commonly <b>Control-C</b> (<i>^C</i>) or an end-of-file character, often <b>Control-D</b> (<i>^D</i>).


title: HISTORY
content:
The <b>arithmetic</b> command is a traditional Unix utility, typically found as part of the <b>bsdgames</b> package on modern Linux distributions. Its origins trace back to early Unix systems, serving as a simple educational game or drill. It exemplifies the early philosophy of providing small, single-purpose tools that are easy to use directly from the command line.


title: SYNOPSIS
content:
<b>ark</b> <i>[options] [files...]</i><br>or<br><b>ark</b> <i>--add-files-to-archive <archive> <file>...</i><br>or<br><b>ark</b> <i>--list-files-in-archive <archive></i><br>or<br><b>ark</b> <i>--extract-files-from-archive <archive></i>


title: PARAMETERS
content:
<b>--add <file>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens Ark with a new archive creation dialog, pre-populating with specified files.<br><br><b>--add-files-to-archive <archive> <file>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds specified files to an existing archive.<br><br><b>--autoclose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Closes Ark automatically after the initiated operation completes.<br><br><b>--batch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the operation in a non-interactive batch mode.<br><br><b>--destination <directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target directory for extraction operations.<br><br><b>--extract-files-from-archive <archive></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts all files from the specified archive to the current directory or a specified destination.<br><br><b>--format <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the archive format (e.g., zip, tar.gz) when creating a new archive.<br><br><b>--list-files-in-archive <archive></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the contents of the specified archive to standard output.<br><br><b>--opendialog</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the 'Open Archive' file dialog upon launch.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Ark version information and exits.<br><br>


title: DESCRIPTION
content:
<b>ark</b> is the official archive management utility for the KDE Plasma desktop environment. It provides a user-friendly graphical interface to handle various archive formats, including popular ones like <i>tar</i>, <i>gzip</i>, <i>bzip2</i>, <i>zip</i>, <i>rar</i>, and <i>7z</i>. Users can create new archives, extract files from existing ones, add or delete files within archives, and view their contents.<br><br>While primarily a GUI application, <b>ark</b> also supports basic command-line operations for tasks such as listing or extracting files, making it versatile for both interactive desktop use and simple scripting needs. It acts as a frontend to various command-line archiving tools installed on the system, providing a consistent and integrated experience within KDE.


title: CAVEATS
content:
<b>ark</b> is primarily a graphical user interface (GUI) application designed for interactive desktop use within the KDE Plasma environment. While it offers some command-line options for basic operations, it is not intended as a replacement for dedicated command-line archivers like <i>tar</i> or <i>zip</i> for complex scripting or automated batch processing. Its functionality heavily relies on the presence of various backend command-line tools (e.g., <i>tar</i>, <i>gzip</i>, <i>unzip</i>, <i>rar</i>, <i>7z</i>) being installed on the system, as <b>ark</b> itself does not implement the archiving algorithms.


title: SUPPORTED ARCHIVE FORMATS
content:
<b>ark</b> supports a wide array of archive formats by acting as a frontend to respective command-line tools. Common formats include <i>tar</i>, <i>tar.gz</i> (gzip), <i>tar.bz2</i> (bzip2), <i>tar.xz</i> (xz), <i>zip</i>, <i>7z</i> (7-Zip), <i>rar</i> (WinRAR archives), <i>arj</i>, <i>lha</i>, <i>iso</i> (ISO disk images), and many more, depending on the installed backend utilities.


title: DESKTOP INTEGRATION
content:
As a native KDE application, <b>ark</b> offers seamless integration with the KDE Plasma desktop. This includes drag-and-drop functionality, context menu options for archive operations directly from file managers like Dolphin, and robust KIO integration allowing users to open and manage archives from remote locations (e.g., FTP, SSH) without explicitly downloading them.


title: HISTORY
content:
<b>ark</b> has been a core utility of the KDE desktop environment since its early versions, providing a unified graphical interface for archive management. It has evolved alongside KDE, integrating deeply with the desktop's look and feel, and leveraging KDE's KIO (KDE Input/Output) slaves for handling remote archives and various protocols. It is now part of KDE Gear (formerly KDE Applications), a collection of applications released by the KDE community, ensuring its continued development and maintenance as an essential component of the KDE user experience.


title: SYNOPSIS
content:
<B>arm2hpdl</B> [options] [input] [output]<br><br><I>Note:</I> Specific options, argument handling, and input/output formats are not publicly documented and may vary significantly based on implementation or specific project builds. It might also function as a filter, processing standard input (<I>stdin</I>) to standard output (<I>stdout</I>).


title: PARAMETERS
content:
<b>No standard parameters publicly documented.</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Due to the highly specialized and often internal nature of <B>arm2hpdl</B>, there are no widely published standard command-line parameters. If it functions as a simple filter, it might process data from standard input (<I>stdin</I>) and write to standard output (<I>stdout</I>). Alternatively, it might accept input and output file paths as positional arguments without explicit flags (e.g., <B>arm2hpdl</B> <I>input_file</I> <I>output_file</I>).<br><br>


title: DESCRIPTION
content:
The <B>arm2hpdl</B> command is a highly specialized utility, not typically found as a standard component of general-purpose Linux distributions. Its name suggests its core function: converting data originating from or intended for <I>ARM</I> architecture systems into <I>HPDL</I> (HP Printer Description Language) format.<br><br>HPDL is a proprietary page description language primarily used by various HP (Hewlett-Packard) DeskJet printers, especially older models. Therefore, <B>arm2hpdl</B> likely serves as a bridge, enabling ARM-based embedded systems or specific applications to generate printer commands directly compatible with HP DeskJet printers without requiring a full printing subsystem or complex drivers on the ARM device itself.<br><br>Typical use cases might include industrial embedded systems, specialized testing rigs, or custom applications where an ARM processor needs to output raw printer data for specific HP models. Due to its niche nature, detailed public documentation or common command-line options are scarce.


title: CAVEATS
content:
The <B>arm2hpdl</B> command is extremely niche and not part of the standard Linux utility set.<br><ul><li>It is unlikely to be pre-installed on most systems.</li><li>Detailed public documentation (like man pages) is generally unavailable.</li><li>Its existence and exact functionality are often tied to specific projects, embedded systems development, or internal HP toolchains.</li><li>Its behavior, parameters, and input/output formats may vary significantly across different specific builds or versions, if any exist beyond a single project.</li><li>Users typically encounter this command only within a very specific development or deployment context.</li></ul>


title: TYPICAL USAGE CONTEXT
content:
Given its name, <B>arm2hpdl</B> would typically be used in an environment where an ARM processor needs to generate print data for an HP DeskJet printer. This could involve an embedded device creating status reports, labels, or simple graphics directly in HPDL format and then sending this data over a serial port, network, or USB to a compatible HP printer. It acts as a converter from a format understood by an ARM-based system to the proprietary HPDL.


title: AVAILABILITY
content:
Unless you are working on a very specific embedded project or with legacy HP-related development tools, it is highly improbable that you will find <B>arm2hpdl</B> installed or readily available on your system. It would need to be specifically compiled from source or provided as part of a specialized SDK or toolchain designed for specific hardware.


title: HISTORY
content:
The precise history of <B>arm2hpdl</B> is obscure due to its specialized nature. It is likely an internal or project-specific utility developed either by HP itself or by a third party involved in developing embedded systems that needed to interface directly with HP DeskJet printers. Its development probably coincided with the rise of ARM-based embedded solutions that required lightweight printing capabilities, avoiding the overhead of full printer drivers. It is not a command that has evolved through public open-source contributions in the same way as standard Linux utilities.


title: SYNOPSIS
content:
<b>arp</b> [<i>-vn</i>] [<i>-H type</i>] [<i>-i if</i>] [<i>-a</i>] [<i>hostname</i>]<br><b>arp</b> [<i>-v</i>] [<i>-i if</i>] <i>-d</i> <i>hostname</i> [<i>pub</i>]<br><b>arp</b> [<i>-v</i>] [<i>-H type</i>] [<i>-i if</i>] <i>-s</i> <i>hostname</i> <i>hw_addr</i> [<i>netmask nm</i>] [<i>pub</i>] [<i>temp</i>]


title: PARAMETERS
content:
<b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the command's actions.<br><br><b><i>-n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays IP addresses numerically instead of resolving them to hostnames, which can speed up output.<br><br><b><i>-a</i> or <i>--display</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all current entries in the ARP cache. This is the default behavior if no other options or a hostname are specified.<br><br><b><i>-d</i> or <i>--delete</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an entry from the ARP cache. Requires root privileges.<br><br><b><i>-s</i> or <i>--set</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a static entry in the ARP cache. Requires root privileges. This entry will not expire naturally.<br><br><b><i>-f</i> or <i>--file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads entries from a specified file and adds or deletes them. The file should contain entries in the format 'hostname hw_addr'.<br><br><b><i>-H type</i> or <i>--hw-type type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the hardware address type. Common types include <i>ether</i> (Ethernet), <i>arcnet</i>, <i>fddi</i>, etc.<br><br><b><i>-i if</i> or <i>--device if</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network interface to which the ARP entry is bound (e.g., <i>eth0</i>, <i>wlan0</i>).<br><br><b><i>hostname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target hostname or IP address for which to display, delete, or set an ARP entry.<br><br><b><i>hw_addr</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The hardware address (MAC address) to associate with the hostname (e.g., 00:11:22:AA:BB:CC).<br><br><b><i>netmask nm</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <i>-s</i> and <i>pub</i> to specify a netmask for proxy ARP entries, allowing the system to respond to ARP requests for a range of addresses.<br><br><b><i>pub</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <i>-s</i>, it makes the system publish this ARP entry, acting as a proxy ARP for the specified host or network. This is useful for routing traffic through a specific machine.<br><br><b><i>temp</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <i>-s</i>, it makes the added entry temporary, meaning it can be aged out by the kernel over time, unlike truly static entries.<br><br>


title: DESCRIPTION
content:
The <b>arp</b> command is a utility for managing the kernel's Address Resolution Protocol (ARP) cache. ARP is a crucial protocol that translates IP addresses to physical MAC addresses on a local network segment. When a system needs to communicate with another device on the same local network, it uses ARP to discover the destination's MAC address given its IP address. <br><br>The <b>arp</b> command allows administrators to view the current contents of the ARP cache, add static entries (e.g., for troubleshooting or security), and delete existing entries. This is particularly useful for diagnosing network connectivity issues, such as when a device is unreachable despite having a valid IP address. While <b>arp</b> is a traditional command, its functionality has largely been superseded by the more comprehensive <b>ip neighbor</b> command from the <b>iproute2</b> suite on modern Linux distributions, but it remains widely available and used due to its simplicity.


title: CAVEATS
content:
<b>Root Privileges</b>: Modifying (adding or deleting) ARP cache entries using <b>-s</b> or <b>-d</b> options requires superuser (root) privileges.<br><b>Dynamic Cache</b>: The ARP cache is dynamic; most entries are learned and aged out automatically. Static entries added with <b>-s</b> (without <b>temp</b>) do not expire.<br><b>Proxy ARP</b>: Improper use of the <b>pub</b> option (Proxy ARP) can lead to network misconfigurations or security issues if not understood properly.


title: PROXY ARP
content:
Proxy ARP is a technique where a device (usually a router) responds to ARP requests for IP addresses that are not its own, but for which it knows how to route traffic. This allows the device to act as an intermediary, enabling devices on one subnet to reach devices on another subnet without needing a default gateway configured on the end devices. The <b>arp -s ... pub</b> command can be used to manually configure a system to perform proxy ARP for a specific host or network.


title: ARP CACHE TIMEOUT
content:
Entries in the dynamic ARP cache are not permanent. They have a timeout period after which they are removed if not refreshed. This prevents stale or incorrect mappings from persisting indefinitely. The specific timeout values are kernel tunable parameters and can vary, but typically range from tens of seconds to a few minutes. Stale entries can lead to communication failures.


title: HISTORY
content:
The <b>arp</b> command is part of the traditional <b>net-tools</b> package, which has been a staple of Unix-like operating systems for many years. Its development is intertwined with the early days of TCP/IP networking on Linux. While still widely available and used, it has largely been considered a legacy tool. Modern Linux distributions primarily use the <b>iproute2</b> suite, with the <b>ip neighbor</b> command serving as the successor to <b>arp</b>, offering more advanced and integrated network management capabilities. Despite this, <b>arp</b> persists due to its simplicity for basic ARP cache management tasks.


title: SYNOPSIS
content:
<b>arp-scan</b> [<i>options</i>] [<i>hosts...</i>]<br><br>Common usage examples:<br><b>arp-scan</b> -I <i>&lt;interface&gt;</i> --localnet<br><b>arp-scan</b> --interface=<i>&lt;interface&gt;</i> <i>&lt;IP_range&gt;</i><br><b>arp-scan</b> -f <i>&lt;filename&gt;</i>


title: PARAMETERS
content:
<b>-I <i>&lt;interface&gt;</i> or --interface=<i>&lt;interface&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the network interface to use for scanning, e.g., eth0 or wlan0.</i><br><br><b>-l or --localnet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Scan all hosts on the local network subnet, derived from the interface IP address and netmask.</i><br><br><b>-r <i>&lt;count&gt;</i> or --retry=<i>&lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Set the number of times to re-send each ARP request to improve reliability.</i><br><br><b>-t <i>&lt;milliseconds&gt;</i> or --timeout=<i>&lt;milliseconds&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Define the timeout in milliseconds for each ARP request before considering it failed.</i><br><br><b>-N or --numeric</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not display vendor names for MAC addresses; show only the numeric MAC address.</i><br><br><b>-v or --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increase verbosity, showing progress and additional information during the scan.</i><br><br><b>-q or --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppress non-essential output, showing only discovered IP and MAC addresses.</i><br><br><b>-f <i>&lt;filename&gt;</i> or --file=<i>&lt;filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Read a list of hosts or netmasks to scan from the specified file.</i><br><br><b>-P or --plain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output results in a plain format without header, footer, or summary lines.</i><br><br><b>-S <i>&lt;hardware_address&gt;</i> or --srcaddr=<i>&lt;hardware_address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the source hardware (MAC) address to use for outgoing ARP requests.</i><br><br><b>-s <i>&lt;ip_address&gt;</i> or --srcip=<i>&lt;ip_address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Set the source IP address for outgoing ARP requests.</i><br><br>


title: DESCRIPTION
content:
The <b>arp-scan</b> command is a powerful and efficient tool used for discovering active devices on a local Ethernet or Wi-Fi network segment. Unlike traditional network scanners that operate at Layer 3 (IP), <b>arp-scan</b> works directly at Layer 2 (data link layer) by sending ARP (Address Resolution Protocol) requests.<br><br>This allows it to identify hosts even if they are configured to block ICMP (ping) requests, or if they haven't fully initialized their IP stack. It maps IP addresses to MAC addresses, often including vendor identification if a MAC address vendor database is available. Its direct interaction with the network interface makes it highly effective for network inventory, security auditing, and troubleshooting.<br><br><b>arp-scan</b> requires root privileges due to its use of raw sockets for crafting and sending ARP packets. It is particularly useful for quickly enumerating all devices on a broadcast domain, such as identifying rogue devices or ensuring all expected devices are online.


title: CAVEATS
content:
<i><b>Root Privileges Required:</b></i> <b>arp-scan</b> needs root or sudo privileges to access raw sockets for crafting and sending ARP packets.<br><br><i><b>Local Segment Only:</b></i> It operates at Layer 2, meaning it can only discover devices within the same broadcast domain (local network segment). It cannot scan across routers.<br><br><i><b>Security Software Detection:</b></i> Due to its nature of sending numerous ARP requests, <b>arp-scan</b> can be detected by Intrusion Detection Systems (IDS) or network monitoring tools as suspicious activity, potentially flagging it as an ARP flood.<br><br><i><b>Non-Responding Devices:</b></i> Devices that do not respond to ARP requests (e.g., some firewalls, devices in sleep mode, or those configured for specific network modes) will not be detected.


title: <I>KEY USAGE SCENARIOS</I>
content:
<b>arp-scan</b> is invaluable for:<br><i>Network Inventory:</i> Quickly identifying all active devices on a local network segment.<br><i>Security Auditing:</i> Detecting unauthorized or rogue devices connected to the network.<br><i>Troubleshooting:</i> Pinpointing devices that might not respond to higher-level protocols like ICMP but are physically present and online.<br><i>MAC-to-IP Mapping:</i> Building a comprehensive map of MAC addresses and their corresponding IP addresses within a subnet.


title: <I>UNDERSTANDING OUTPUT</I>
content:
The default output of <b>arp-scan</b> typically provides three columns per discovered host: the <i>IP address</i>, the <i>MAC address</i>, and the <i>vendor name</i> derived from the MAC address's OUI (Organizationally Unique Identifier). For example: <i>192.168.1.1 00:11:22:33:44:55 (Router Vendor)</i>.


title: HISTORY
content:
<b>arp-scan</b> was originally developed by <i>Roy Hills</i> and first released in 2002. It quickly gained popularity in the cybersecurity and network administration communities due to its unique ability to discover hosts directly at the data link layer, bypassing many common Layer 3 defenses. Its development has focused on speed and efficiency for large-scale local network scans, making it a staple tool in network auditing, penetration testing, and basic network troubleshooting scenarios.


title: SEE ALSO
content:
nmap(1): <i>A comprehensive network scanner for host discovery, port scanning, and OS detection across various protocols.</i>, ip(8): <i>A versatile command-line utility for configuring and displaying network interfaces, routing tables, and ARP cache.</i>, arp(8): <i>Used to view, add, or delete entries in the system's ARP cache.</i>, ping(8): <i>A basic network utility to test connectivity to a host using ICMP echo requests.</i>, netstat(8): <i>Displays network connections, routing tables, interface statistics, and multicast memberships.</i>


title: PARAMETERS
content:
<b><i>&lt;hostname_or_ip&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The input string to resolve. Can be either a hostname (e.g., "localhost") or an IPv4 address (e.g., "127.0.0.1"). The command automatically detects the type of input.<br><br>


title: DESCRIPTION
content:
<b>arpaname</b> is a lightweight command-line utility, historically part of the <i>net-tools</i> suite, designed for basic hostname-to-IP address or IP address-to-hostname resolution. It takes a single argument:<br><br>If the argument is a numeric IPv4 address (e.g., "127.0.0.1"), it attempts to perform a reverse DNS lookup and prints the canonical hostname. If the argument is a hostname (e.g., "localhost"), it performs a forward DNS lookup and prints the corresponding IPv4 address.<br><br>The command's name, "arpaname," reflects its original context within ARPANET-era systems, where it was intended to help services like <i>ftp</i> and <i>telnet</i> obtain host identifiers for logging purposes, although the command itself only provides standard resolution. It relies on standard system library functions like <i>gethostbyname()</i> and <i>gethostbyaddr()</i> for its resolution logic, which in turn might consult <i>/etc/hosts</i> or DNS. Due to its simplicity and the availability of more robust tools, <b>arpaname</b> is largely considered deprecated in modern Linux environments.


title: CAVEATS
content:
<ul><li><b>arpaname</b> is part of the <i>net-tools</i> package, which is largely deprecated in favor of the <i>iproute2</i> suite (e.g., <b>ip</b>, <b>ss</b>).</li><li>It only supports IPv4 addresses and hostnames; it does not handle IPv6.</li><li>It provides very basic resolution functionality, lacking the advanced features and options found in modern DNS utilities like <b>dig</b> or <b>host</b>.</li><li>Error messages are basic (e.g., "host not found").</li></ul>


title: PURPOSE OF THE NAME
content:
Despite its name, <b>arpaname</b> as a command does not output ARPANET-specific string formats (like <i>H.L.M.N</i> or <i>in-addr.arpa</i> DNS records) directly. Instead, it provides the standard hostname or IP address, which older services would then use to construct their internal ARPANET-style log entries.


title: DEPRECATION
content:
This command, being part of the <i>net-tools</i> suite, is largely deprecated in favor of more modern and robust utilities provided by the <i>iproute2</i> package (e.g., <b>ip</b> and <b>ss</b>). Users are generally advised to use <b>host</b> or <b>dig</b> for DNS lookups.


title: HISTORY
content:
The <b>arpaname</b> utility originates from the early days of TCP/IP networking, specifically during the ARPANET era. It was developed as part of the <i>net-tools</i> package, which provided essential networking utilities for Unix-like systems. Its name reflects its purpose in generating or interpreting identifiers in a format relevant to the ARPANET.<br><br>For instance, services like the <i>ftp</i> daemon would use such resolutions to log remote host identities. With the evolution of networking and the advent of more sophisticated DNS resolution tools and the <i>iproute2</i> suite, <b>arpaname</b> has become largely obsolete and is often not included by default in modern Linux distributions or is considered a legacy command.


title: PARAMETERS
content:
<b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <i>arpd</i> as a daemon in the background.<br><br><b><b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log messages to syslog instead of standard output.<br><br><b><b>-f</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file for <i>arpd</i>.<br><br><b><b>-i</b> <i>&lt;interface&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Listen for ARP traffic on the specified network interface. Can be specified multiple times.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate in promiscuous mode, capturing all ARP traffic on the specified interface(s), not just for this host.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update the kernel's neighbor table with learned entries from <i>arpd</i>'s cache, synchronizing states.<br><br><b><b>-p</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a path for the PID (Process ID) file, which stores the daemon's process ID.<br><br>


title: DESCRIPTION
content:
<i>arpd</i> is a user-space daemon designed to manage the Address Resolution Protocol (ARP) cache on a Linux system. It provides a more flexible and potentially faster mechanism for handling ARP entries compared to the kernel's built-in cache, especially in scenarios involving a large number of entries or frequent updates.<br><br><i>arpd</i> can collect ARP information via gratuitous ARP messages, ARP requests/replies, or by sniffing network traffic. It can also be configured to answer ARP requests on behalf of other hosts (proxy ARP) or announce host presence via gratuitous ARP. Its primary use case is to offload ARP management from the kernel or to provide advanced ARP functionalities required by routing daemons (like <i>FRR</i>) that manage many IP addresses and need to keep their ARP caches up-to-date. <i>arpd</i> interacts with the kernel's neighbor table (which includes ARP entries) primarily through netlink sockets, allowing for efficient synchronization and manipulation of ARP states.


title: CAVEATS
content:
<b>Complexity:</b> <i>arpd</i> introduces an additional layer of complexity to network configuration. For simple network setups, the kernel's native ARP handling is generally sufficient, making <i>arpd</i> potentially an unnecessary overhead.<br><b>Performance:</b> While designed for high-performance ARP management in specific scenarios (e.g., large-scale routing), misconfiguration or inappropriate deployment can inadvertently introduce overhead or stability issues.<br><b>Security:</b> Operating <i>arpd</i> in promiscuous mode (via <b>-P</b>) allows it to capture all ARP-related traffic on the specified interfaces, which has security implications. Careful consideration of network segmentation and access control policies is crucial.


title: INTERACTION WITH KERNEL
content:
<i>arpd</i> primarily communicates with the Linux kernel's neighbor table (which manages ARP entries) through <i>Netlink</i> sockets. This modern kernel interface allows <i>arpd</i> to dynamically inject, update, and receive notifications about ARP entries, providing a significantly more efficient and responsive ARP management system compared to older methods that relied on less flexible interfaces.


title: PRIMARY USE CASES
content:
The main applications for <i>arpd</i> are in complex network environments where a single host or router needs to handle a very large number of IP addresses (e.g., serving as a BGP router advertising numerous prefixes), or when advanced ARP functions such as large-scale proxy ARP, dynamic gratuitous ARP announcements for high availability, or load balancing are required beyond the kernel's default capabilities.


title: HISTORY
content:
<i>arpd</i> is a component of the <i>iproute2</i> suite of networking utilities, which emerged as a modern replacement for older network management tools (like those from the <i>net-tools</i> package, e.g., <i>ifconfig</i> and <i>route</i>). Its development reflects the evolution of Linux networking towards more dynamic and programmable infrastructure management. It was specifically designed to address the needs of complex network environments and routing daemons (such as <i>Quagga</i> or <i>FRR</i>) that manage a vast number of IP addresses and require robust, scalable, and efficient ARP cache synchronization.


title: SYNOPSIS
content:
<b>arping</b> [<i>-0aAbBdDfgNqQRrUv</i>] [<i>-c count</i>] [<i>-i interface</i>] [<i>-I IP_address</i>] [<i>-s source_IP_address</i>] [<i>-t timeout</i>] <i>destination</i>


title: PARAMETERS
content:
<b><b>destination</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IP address or MAC address to target for ARP requests.<br><br><b><b>-c count</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop after sending <i>count</i> ARP requests.<br><br><b><b>-i interface</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the network <i>interface</i> to use for sending packets (e.g., eth0).<br><br><b><b>-I IP_address</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the source IP address for ARP requests. Useful for duplicate IP address detection or spoofing.<br><br><b><b>-s source_IP_address</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <i>-I</i>. Specify the source IP address to use.<br><br><b><b>-t timeout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a <i>timeout</i> in seconds. The command will exit after this duration.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet output. Display only summary information.<br><br><b><b>-U</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unsolicited ARP mode (Gratuitous ARP). Send an ARP probe to check for duplicate IP addresses or to update ARP caches on other devices.<br><br><b><b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Duplicate Address Detection (DAD) mode. Check if the <i>destination</i> IP address is already in use on the network.<br><br><b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Broadcast mode. Send ARP requests to the broadcast MAC address (FF:FF:FF:FF:FF:FF) rather than the unicast MAC address (if known).<br><br><b><b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;ARP answer mode. Listen for ARP requests and reply to them. Can be used for testing or to impersonate a host.<br><br>


title: DESCRIPTION
content:
<i>arping</i> is a utility for sending ARP (Address Resolution Protocol) requests to hosts on a local network segment. Unlike <i>ping</i> which uses ICMP at Layer 3, <i>arping</i> operates at Layer 2, making it useful for discovering devices directly connected to the local broadcast domain.<br><br>It can be used to determine if a specific IP address is in use, resolve an IP to a MAC address, or detect duplicate IP addresses on a network. Since ARP requests are broadcast, <i>arping</i> can find hosts even if they are configured to block ICMP echo requests. It's often employed for network troubleshooting, security auditing, and quickly mapping IP addresses to their corresponding MAC addresses without relying on a routing table. Due to its low-level operation, <i>arping</i> typically requires root privileges.


title: CAVEATS
content:
<i>arping</i> typically requires root or sudo privileges to send and receive raw ARP packets.<br>It operates at Layer 2 (Data Link Layer) and thus can only communicate within the local broadcast domain. It cannot traverse routers.<br>Some network security devices or firewalls might rate-limit or drop ARP requests, impacting its effectiveness.


title: DUPLICATE ADDRESS DETECTION (DAD)
content:
The <i>-D</i> option is specifically designed for Duplicate Address Detection. When used with an IP address (e.g., <i>arping -D 192.168.1.100</i>), it sends ARP probes to verify if that IP address is already active on the local network, helping to prevent IP conflicts before assigning an address.


title: GRATUITOUS ARP (UNSOLICITED ARP)
content:
The <i>-U</i> option allows sending Gratuitous ARP packets. These packets are not responses to a request but are sent proactively by a device to announce its IP-to-MAC mapping to all devices on the network. This is useful for updating ARP caches on switches and hosts when an IP address changes, during failover events, or when a device first comes online.


title: HISTORY
content:
The <i>arping</i> utility has been a staple on Linux systems for many years, often included as part of the <i>iproute2</i> suite or available as a standalone tool. Its core functionality for low-level network discovery and troubleshooting using the ARP protocol has remained consistent, serving as a fundamental tool for network administrators and security professionals.


title: PARAMETERS
content:
<b><b>-i</b> <i>interface</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the network interface to use for <b>ARP</b> spoofing (e.g., eth0, wlan0).</i><br><br><b><b>-t</b> <i>target</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify a specific target host to poison. If this option is omitted, <b>arpspoof</b> will attempt to poison all hosts on the local network by broadcasting.</i><br><br><b><i>host</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The <b>IP</b> address of the host whose <b>MAC</b> address will be advertised to the target(s). This is typically the <b>IP</b> address of the default gateway or another specific host on the network that the target communicates with.</i><br><br>


title: DESCRIPTION
content:
<i><b>arpspoof</b> is a tool from the <b>dsniff</b> suite designed for <b>ARP</b> spoofing, also known as <b>ARP</b> cache poisoning. It manipulates the Address Resolution Protocol (<b>ARP</b>) by sending forged <b>ARP</b> replies to targets on a local area network. The primary purpose of this attack is typically to redirect network traffic. By continuously broadcasting fake <b>ARP</b> responses, <b>arpspoof</b> convinces a target host that the attacker's machine has the <b>MAC</b> address associated with another legitimate <b>IP</b> address on the network (e.g., the default gateway or another host). Conversely, it can also convince the other legitimate host that the attacker is the first target. This effectively places the attacker in a "man-in-the-middle" (<b>MITM</b>) position, allowing them to intercept, log, or modify network traffic between the two targeted hosts before forwarding it. For a successful <b>MITM</b> attack, the attacker's machine usually needs to have <b>IP</b> forwarding enabled.</i>


title: CAVEATS
content:
<i><br><b>Requires root privileges</b> to run.<br><b>Operates at Layer 2</b> (Data Link Layer) and is effective only on local area networks (<b>LANs</b>) or subnets.<br><b>Can be detected</b> by network intrusion detection systems (<b>NIDS</b>) or <b>ARP</b> monitoring tools.<br>If used for man-in-the-middle attacks, <b>IP forwarding must be enabled</b> on the attacker's machine to prevent network disruption. Failure to do so will block traffic flow.<br><b>Use of this tool without explicit permission is illegal and unethical</b> and can lead to severe consequences.</i>


title: ENABLING IP FORWARDING FOR MITM
content:
<i>For <b>arpspoof</b> to successfully perform a man-in-the-middle attack (where intercepted traffic is forwarded to its legitimate destination), <b>IP</b> forwarding must be enabled on the attacker's machine. This can typically be done temporarily using:<br><code>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</code><br>Or permanently by editing <code>/etc/sysctl.conf</code> and setting <code>net.ipv4.ip_forward = 1</code>.</i>


title: COMMON USAGE EXAMPLE
content:
<i>To spoof the gateway (e.g., 192.168.1.1) for a specific target (e.g., 192.168.1.100) using interface eth0, you would typically run two commands in separate terminals:<br>1. To tell the target that you are the gateway:<br><code><b>arpspoof</b> -i eth0 -t 192.168.1.100 192.168.1.1</code><br>2. To tell the gateway that you are the target:<br><code><b>arpspoof</b> -i eth0 -t 192.168.1.1 192.168.1.100</code><br>This sets up the two-way spoof necessary for a successful <b>MITM</b>. Remember to enable <b>IP</b> forwarding first.</i>


title: HISTORY
content:
<i><b>arpspoof</b> is a fundamental component of the <b>dsniff</b> suite of network auditing and penetration testing tools, created by Dug Song. The <b>dsniff</b> tools were first released in the late 1990s and quickly gained notoriety for their powerful and straightforward capabilities in passive sniffing, active spoofing, and man-in-the-middle attacks. <b>arpspoof</b> specifically addresses the <b>ARP</b> cache poisoning aspect, making it a foundational tool for intercepting local network traffic due to its simplicity and effectiveness.</i>


title: SYNOPSIS
content:
<i>Arthas</i> is typically invoked using the <b>as.sh</b> wrapper script or by attaching its agent directly to a JVM. The general invocation for the script is:<br><br><b>as.sh</b> [<i>options</i>] [<i>PID</i> | <i>APP_NAME</i>]<br><br>Once attached, an interactive console is provided where various <i>Arthas</i> commands can be executed, for example:<br><b>dashboard</b><br><b>thread -n 3</b><br><b>trace com.example.MyClass myMethod</b>


title: PARAMETERS
content:
<b>PID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Process ID of the target Java application to attach to.<br><br><b>APP_NAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the application, used to find the target Java process.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for the <b>as.sh</b> script.<br><br><b>-c <command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute a specific <i>Arthas</i> command directly and then exit, without entering the interactive console.<br><br><b>--attach-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to the target process only, without attempting to connect to the <i>Arthas</i> console.<br><br>


title: DESCRIPTION
content:
<i>Arthas</i> is a versatile and powerful diagnostic tool designed for troubleshooting, monitoring, and diagnosing Java applications running in production environments. Developed by <b>Alibaba</b>, it provides a comprehensive set of capabilities to interact with a running Java Virtual Machine (JVM) without requiring application restarts or code modifications.<br><br>It allows developers and operators to perform various diagnostic tasks such as viewing real-time JVM metrics (CPU, memory, garbage collection), inspecting thread stacks for deadlock detection or performance bottlenecks, tracing method calls with execution times, watching variable changes, decompiling classes on the fly, and even hot-swapping classes for immediate bug fixes or experimental changes. <i>Arthas</i> attaches to a running Java process, offering a command-line interface for interaction, making it invaluable for in-depth analysis and problem resolution of complex Java applications.


title: CAVEATS
content:
While powerful, <i>Arthas</i> operates directly within the target JVM's memory space. Improper use, such as aggressively tracing methods with high frequency or redefining critical classes without thorough understanding, can potentially impact application performance or stability. It's crucial to use it responsibly in production environments. Security is another consideration; ensure that access to <i>Arthas</i> is restricted to authorized personnel, as it provides deep insights and control over the running application.


title: KEY INTERNAL COMMANDS
content:
Once <i>Arthas</i> is attached, it provides a rich set of internal commands to interact with the JVM:<br><b>dashboard</b>: Overview of JVM metrics (CPU, memory, threads).<br><b>thread</b>: View thread information, detect deadlocks.<br><b>trace</b>: Trace method execution paths and time consumption.<br><b>watch</b>: Watch variable changes at method entry, exit, or exceptions.<br><b>jad</b>: Decompile loaded classes.<br><b>redefine</b>: Hot-swap loaded classes dynamically.<br><b>ognl</b>: Execute OGNL expressions to inspect objects.<br><b>sysprop</b>: View and modify system properties.


title: HISTORY
content:
<i>Arthas</i> was developed internally by <b>Alibaba</b> in China to address complex troubleshooting challenges faced with their massive-scale Java applications in production. Recognizing its immense value, <b>Alibaba</b> open-sourced <i>Arthas</i> in 2018, making it available to the wider Java development community. Since then, it has gained significant popularity and is widely adopted for its robust diagnostic capabilities, becoming a go-to tool for developers and operations engineers alike when dealing with Java application issues.


title: PARAMETERS
content:
<b>&lt;class_pattern&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The pattern for the class name(s) to trace (e.g., <I>com.example.MyClass</I>, <I>*Service</I>). Supports glob patterns.<br><br><b>&lt;method_pattern&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The pattern for the method name(s) to trace within the specified class(es) (e.g., <I>myMethod</I>, <I>*Bean</I>). Supports glob patterns.<br><br><b>[condition_expression]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An <I>OGNL</I> expression used to filter trace triggers based on method parameters, return values, or other contextual data (e.g., <I>params[0].id == 1</I>).<br><br><b>--skipJDKMethod</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A flag to ignore tracing calls to methods belonging to JDK internal classes, simplifying the trace output.<br><br><b>--depth &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum recursion depth for tracing method calls. A value of <I>-1</I> (default) means unlimited depth.<br><br><b>--maxTimes &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of times the trace will trigger before automatically stopping. Useful for limiting output.<br><br><b>--threshold &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to only display method calls whose execution time exceeds the specified threshold (in milliseconds). Helps pinpoint slow operations.<br><br><b>--excludeMethods &lt;method_pattern&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes specific method(s) from being traced, even if they match the primary <I>method_pattern</I>.<br><br><b>--excludeClassMethods &lt;class_pattern#method_pattern&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes specific methods of specific classes from tracing.<br><br><b>--regex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interprets <I>class_pattern</I> and <I>method_pattern</I> as regular expressions instead of glob patterns.<br><br>


title: DESCRIPTION
content:
The <b>trace</b> command is an internal command of the <I>Arthas</I> diagnostic tool, a powerful Java diagnostic utility used for troubleshooting production issues without restarting applications. Unlike traditional Linux shell commands, <I>trace</I> is executed within the Arthas console after attaching Arthas to a running Java process. Its primary function is to trace method invocations and calculate their execution duration, showing the time spent in each sub-call. This allows developers and SREs to quickly pinpoint performance bottlenecks within specific method call stacks. It supports various options to filter methods, set trace depth, and define execution thresholds, making it highly versatile for detailed performance analysis and debugging in complex Java applications. The output provides a clear, hierarchical view of method calls with their respective execution times, helping to identify slow points efficiently. It's a key tool for understanding runtime behavior and optimizing Java applications.


title: CAVEATS
content:
<I>arthas-trace</I> is an <I>Arthas</I> internal command, not a direct Linux shell command. It requires <I>Arthas</I> to be attached to a running Java process. <br>It can incur performance overhead, especially with high-frequency methods or deep tracing, potentially impacting the traced application. Use with caution in production environments. <br>Effective use requires understanding of <I>Arthas</I> <I>OGNL</I> expressions for advanced filtering. <br>Output can be verbose for complex or deeply nested call stacks, requiring careful analysis.


title: STOPPING TRACING
content:
The <B>trace</B> command will automatically stop after <I>--maxTimes</I> triggers or when the <I>Arthas</I> session is terminated. It can also be manually stopped at any time by pressing <I>Ctrl+C</I> in the <I>Arthas</I> console.


title: OUTPUT INTERPRETATION
content:
The output displays method calls hierarchically, with indentation representing call depth. The time next to each method indicates its execution duration. A <I>+---</I> prefix often indicates a sub-call or a child method invocation within the traced method, providing a visual representation of the call stack.


title: HISTORY
content:
<I>Arthas</I>, and consequently its <B>trace</B> command, was open-sourced by <I>Alibaba</I> in <I>2018</I>. It quickly gained popularity as a powerful diagnostic tool for Java applications, addressing a common need for real-time troubleshooting without requiring application restarts. The <B>trace</B> command, being fundamental for performance analysis and bottleneck identification, has been a core feature from early versions, continuously evolving with improvements in filtering capabilities, performance, and output clarity to better support complex Java ecosystems and production environments.


title: PARAMETERS
content:
<b>-o <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output object <I>file</I>. By default, <I>a.out</I> is used as the output filename if not specified.<br><br><b>-I <I>dir</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds <I>dir</I> to the list of directories to be searched for files specified in <B>.include</B> directives within the assembly source.<br><br><b>-g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates debugging information (in STABS format by default) for use with a debugger like <I>gdb</I>. This helps in debugging assembly code.<br><br><b>-L</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Normally, local symbols are deleted from the symbol table to save space. This option retains them, which is particularly useful for debugging.<br><br><b>--<I>target-help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays architecture-specific help for the currently configured target, detailing target-specific options and directives.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the GNU Assembler's version number to standard output and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a summary of the command-line options and exits.<br><br><b>-msyntax={att|intel}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;For x86 targets, specifies the assembly syntax to use. Defaults to AT&T syntax. Use <I>att</I> for AT&T syntax, or <I>intel</I> for Intel syntax.<br><br>


title: DESCRIPTION
content:
<b><I>as</I></b> is the GNU Assembler, a fundamental component of the GNU Binutils package. It translates assembly language source files (typically ending in <I>.s</I> or <I>.S</I>) into relocatable object files (commonly ending in <I>.o</I>).<br><br>These object files contain machine code and data, along with information for the linker (such as <I>ld</I>) to combine them into an executable program, a shared library, or another object file. <I>as</I> supports a vast array of processor architectures, making it highly versatile for various embedded systems and general-purpose computing environments. It's often invoked indirectly by compilers like <I>gcc</I> when compiling high-level languages, but it can also be used directly for low-level programming or system-specific tasks. Key features include support for macros, conditional assembly, and generation of debugging information.


title: CAVEATS
content:
The default assembly syntax for x86 architectures in <I>as</I> is AT&T, which differs significantly from the Intel syntax commonly seen in documentation and other assemblers. This can be a source of confusion for new users.<br><br>Error messages from <I>as</I> can sometimes be cryptic, requiring a good understanding of assembly language and the specific directives being used. Debugging assembly errors can be challenging.


title: INPUT AND OUTPUT FILES
content:
Input files are typically assembly source code, often with a <B>.s</B> or <B>.S</B> extension. <I>as</I> processes these files and produces relocatable object files, conventionally named with a <B>.o</B> extension. These object files are not directly executable but are linked together by a linker to form a complete program or library.


title: ASSEMBLY DIRECTIVES
content:
Assembly source code processed by <I>as</I> includes both machine instructions and assembler directives (also known as pseudo-ops). Directives control the assembly process itself, defining data, allocating memory, setting up sections, and providing information to the linker and debugger. Common examples include <B>.data</B>, <B>.text</B>, <B>.bss</B>, <B>.globl</B>, <B>.byte</B>, and <B>.align</B>.


title: HISTORY
content:
The GNU Assembler (<I>as</I>) is a fundamental part of the GNU Project's Binutils package. Its development began early in the GNU project to provide a free and open-source alternative to proprietary assemblers. It was designed to be highly portable, supporting a wide range of CPU architectures and operating systems. <I>as</I> has been a stable and critical component of the GNU toolchain for decades, evolving to support new architectures and assembly features, and continues to be actively maintained as a cornerstone of Linux and other Unix-like systems.


title: SYNOPSIS
content:
<b>asar</b> <I>command</I> [<i>options</i>] <I>src</I> [<i>dest</i>]<br><br>Common commands:<br><b>asar</b> pack <I>src_dir</I> <I>dest.asar</I><br><b>asar</b> list <I>archive.asar</I><br><b>asar</b> extract <I>archive.asar</I> <I>dest_dir</I><br><b>asar</b> extract-file <I>archive.asar</I> <I>file_path</I>


title: PARAMETERS
content:
<b>pack <src_dir> <dest.asar></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Packs a directory (<I>src_dir</I>) into a new <I>.asar</I> archive (<I>dest.asar</I>).<br><br><b>list <archive.asar></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the files contained within an <I>.asar</I> archive.<br><br><b>extract <archive.asar> <dest_dir></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts the entire content of an <I>.asar</I> archive to a specified directory (<I>dest_dir</I>).<br><br><b>extract-file <archive.asar> <file_path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts a single file from an <I>.asar</I> archive at the specified internal <I>file_path</I>.<br><br><b>--unpack <glob_pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with 'pack'. Specifies a glob pattern for files that should NOT be packed into the <I>.asar</I> archive but extracted separately. For example: <I>--unpack *.node</I>.<br><br><b>--unpack-dir <glob_pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with 'pack'. Specifies a glob pattern for directories that should NOT be packed into the <I>.asar</I> archive. For example: <I>--unpack-dir **/node_modules</I>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the command or specific sub-command.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the current version of the <I>asar</I> utility.<br><br>


title: DESCRIPTION
content:
<i>asar</i> is a simple, tar-like archive format used by <I>Electron</I> to concatenate application source code into a single file. It stands for <I>Atom Shell Archive</I>. This format helps protect the source code from casual inspection and can improve performance by reducing file I/O overhead during application startup, especially on Windows where path lengths can be an issue. It allows developers to bundle all JavaScript, CSS, HTML, and other assets into a single <I>.asar</I> archive file. The <I>Electron</I> framework can then read files from this archive directly, treating it like a virtual file system. This command-line utility provides functionalities to pack, list, and extract content from these archives.


title: CAVEATS
content:
The <b>asar</b> command is not a standard Linux utility and requires Node.js and npm for installation. It is primarily used within the <I>Electron</I> development ecosystem for packaging applications. Unlike traditional archive formats like <I>tar</I> or <I>zip</I>, <I>asar</I> archives are designed to be read directly by the <I>Electron</I> runtime, not typically for general-purpose archiving.


title: INSTALLATION
content:
The <b>asar</b> command-line utility can be installed globally via <I>npm</I> (Node Package Manager), assuming Node.js is already installed on your system:<br><code>npm install -g asar</code><br>This command makes the <b>asar</b> executable available in your system's PATH, allowing you to run it from any directory.


title: HISTORY
content:
The <I>asar</I> format and utility were developed by GitHub as part of the <I>Atom Shell</I> project, which was later rebranded as <I>Electron</I>. It was created specifically to address the unique packaging and performance requirements of desktop applications built with web technologies, offering a straightforward way to bundle thousands of small files into a single, easily distributable package.


title: PARAMETERS
content:
<b><i>character</i>|<i>number</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more characters or numeric values (decimal, octal with '0' prefix, or hexadecimal with '0x' prefix) to convert and display their ASCII properties. If no arguments are given, <b>ascii</b> operates in an interactive mode, prompting for input.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Classic mode. Displays only the character and its octal value, mimicking behavior of older versions or more terse output formats. This option typically overrides the default display of decimal, hexadecimal, and octal values.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly requests display of hexadecimal values for the character(s). On many implementations, hexadecimal values are shown by default alongside decimal and octal, so this might be redundant or used to ensure specific output formats.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly requests display of octal values for the character(s). Similar to <b>-x</b>, octal values are often part of the default output.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly requests display of decimal values for the character(s). Similar to <b>-x</b> and <b>-o</b>, decimal values are often part of the default output.<br><br>


title: DESCRIPTION
content:
The <b>ascii</b> command is a utility designed to display the ASCII character set and provide detailed information about individual ASCII characters or their numeric representations. When invoked without arguments, it typically enters an interactive mode, prompting the user for input and displaying the decimal, octal, hexadecimal, and character forms of each entered character or string. <br><br>When command-line arguments are provided, <b>ascii</b> interprets them as characters or numeric values (decimal, octal prefixed with '0', or hexadecimal prefixed with '0x'). It then prints the corresponding ASCII information for each argument. This command is particularly useful for programmers, system administrators, or anyone needing quick lookups for character codes, especially when debugging character encoding issues or working with low-level data. It's a straightforward tool that helps in understanding the fundamental ASCII standard.


title: CAVEATS
content:
The <b>ascii</b> command is not a standard core utility found on all Linux distributions by default. It is often provided as part of supplementary packages, such as the <i>bsdgames</i> collection. Consequently, its availability, specific options, and exact output format may vary slightly between different distributions and implementations. <br><br>It primarily deals with the 7-bit ASCII character set (0-127) and does not inherently handle multi-byte encodings like UTF-8. While it will process input bytes, it interprets them within the 7-bit ASCII context, potentially leading to misinterpretations for non-ASCII characters.


title: UNDERSTANDING ASCII
content:
ASCII (American Standard Code for Information Interchange) is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Most modern character-encoding schemes, like UTF-8, are based on ASCII. It defines 128 characters, with 95 printable characters (like 'A', 'B', 'C', etc., and symbols) and 33 non-printable control characters (like backspace, carriage return, line feed, etc.). The <b>ascii</b> command helps in visualizing these mappings.


title: HISTORY
content:
The <b>ascii</b> command likely originated from BSD (Berkeley Software Distribution) systems as a simple, helpful utility for programmers and system administrators. It has maintained its straightforward functionality over the years, typically being bundled with other utility programs rather than undergoing significant independent development. Its primary purpose has remained consistent: providing quick access to ASCII character information.


title: SYNOPSIS
content:
<b>ascii-image-converter</b> [<i>OPTIONS</i>] <i>&lt;IMAGE_PATH&gt;</i>...<br><br><i>Example:</i><br><b>ascii-image-converter</b> <i>--color -d 80x40 image.jpg</i><br><b>ascii-image-converter</b> <i>-t -S output.txt my_pic.png another_pic.gif</i>


title: PARAMETERS
content:
<b><i>&lt;IMAGE_PATH&gt;</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more paths to the image files to be converted. Supports various common image formats.<br><br><b><b>-c</b>, <b>--color</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables color output using terminal's ANSI color codes, attempting to match original image colors.<br><br><b><b>-g</b>, <b>--grayscale</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the image to grayscale ASCII art. Mutually exclusive with <b>--color</b>.<br><br><b><b>-r</b>, <b>--reverse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverses the character mapping, using darker characters for brighter pixels and vice versa.<br><br><b><b>-H</b> <i>&lt;rows&gt;</i>, <b>--height</b> <i>&lt;rows&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum output height in characters. Width is adjusted proportionally unless <b>--width</b> is also specified.<br><br><b><b>-W</b> <i>&lt;cols&gt;</i>, <b>--width</b> <i>&lt;cols&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum output width in characters. Height is adjusted proportionally unless <b>--height</b> is also specified.<br><br><b><b>-d</b> <i>&lt;WxH&gt;</i>, <b>--dimensions</b> <i>&lt;WxH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets both width and height simultaneously (e.g., <i>80x24</i>). Overrides <b>--width</b> and <b>--height</b>.<br><br><b><b>-s</b>, <b>--stretched</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stretches the output to fill the terminal's width, potentially distorting aspect ratio.<br><br><b><b>-t</b>, <b>--term-size</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjusts the output dimensions to fit the current terminal window size, maintaining aspect ratio.<br><br><b><b>-S</b> <i>&lt;path&gt;</i>, <b>--save-output</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the generated ASCII art to the specified file instead of printing to standard output.<br><br><b><b>-C</b> <i>&lt;chars&gt;</i>, <b>--custom-charset</b> <i>&lt;chars&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a custom string of characters (e.g., <i>" .:-=+*#%@"</i>) for ASCII conversion, ordered from darkest to lightest.<br><br><b><b>--clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears the terminal screen before displaying the ASCII art.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information and exits.<br><br>


title: DESCRIPTION
content:
ascii-image-converter is a versatile command-line tool designed to transform various image formats (such as <i>JPG</i>, <i>PNG</i>, <i>GIF</i>, and <i>BMP</i>) into textual representations known as ASCII art. It renders these textual images directly within the terminal, or can save them to a file for later use. The tool offers a rich set of options to customize the output, including support for <b>color</b> and <b>grayscale</b> modes, adjustable <b>dimensions</b>, and the ability to use <b>custom character sets</b>. It intelligently maps image pixel brightness to a range of ASCII characters, allowing for surprising detail and artistic effect. Users can also specify output to stretch to terminal size, reverse character mapping, or save the output to a file. This makes it ideal for quick image previews in terminal-only environments, generating unique visual content for scripts, or simply for creative expression and fun.


title: CAVEATS
content:
Optimal rendering of ASCII art in the terminal largely depends on the terminal's font being <i>monospace</i>.<br>Highly detailed or complex images may not translate perfectly due to the inherent limitations of character-based representation.<br>Color accuracy can vary across different terminal emulators and color schemes.


title: TYPICAL CHARACTER SETS
content:
The command typically uses a default character set (e.g., <i>' .,:;irsXA253hMHGS#9B&@'</i> or a similar range) for mapping pixel brightness to ASCII characters. Characters on the left are used for darker areas, and those on the right for brighter areas. The <b>--custom-charset</b> option allows users to define their own mapping.


title: INSTALLATION
content:
<b>ascii-image-converter</b> is often installed via a package manager (e.g., <i>Homebrew</i> on macOS, or specific Linux distribution repositories) or built from source using Go (e.g., <i>go install github.com/TheDarkBug/ascii-image-converter@latest</i>).


title: PARAMETERS
content:
<b>-o <output_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an output file instead of standard output.<br><br><b>-W <width></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the output width in characters.<br><br><b>-H <height></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the output height in lines.<br><br><b>--chars <characters></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the character set to use for rendering. Characters should be ordered from lightest to darkest.<br><br><b>--color, -c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable color output using terminal escape codes.<br><br><b>--grayscale, -g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force grayscale output, ignoring color information.<br><br><b>--html</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output HTML-formatted ASCII art, often enclosed in &lt;pre&gt; tags.<br><br><b>--ansi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output ANSI escape code formatted ASCII art suitable for many terminals.<br><br><b>--invert</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invert character mapping (light pixels become dark characters, and vice-versa).<br><br><b>--dither</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable dithering to improve detail representation, especially for low-color or grayscale output.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
The <b>asciiart</b> command, often a script or wrapper around utilities like <I>jp2a</I> or <I>img2txt</I> (from <I>libcaca</I>), is designed to transform graphical images (e.g., JPEG, PNG, GIF) into textual representations composed of ASCII characters.<br><br>It achieves this by mapping pixel intensity or color to different ASCII characters, creating a low-resolution text-based rendition of the original image. The command typically offers options to control the output's width, character set used, color rendering, and output format. It's a popular tool for displaying images in terminal environments, creating unique text-based graphics, or simply for artistic purposes. While not universally pre-installed on all Linux distributions, its functionality is widely available through various packages.


title: CAVEATS
content:
The <b>asciiart</b> command is <I>not</I> a standard, universally installed utility on all Linux distributions. Its presence and exact functionality can vary significantly. Often, it's a symbolic link or wrapper script for other image-to-ASCII converters like <I>jp2a</I> or <I>img2txt</I>.<br><br>Output quality heavily depends on the input image's resolution, the chosen output width, and the character set used. Very complex images may not translate well into recognizable ASCII art.


title: USAGE EXAMPLES
content:
Here are some common ways to use the <b>asciiart</b> command:<br><br><I>Convert an image and print to standard output:</I><br><b>asciiart image.jpg</b><br><br><I>Convert with specific width and color, saving to a file:</I><br><b>asciiart -W 80 --color input.png &gt; output.txt</b><br><br><I>Convert using a custom character set:</I><br><b>asciiart --chars ' .:-=+*#%@' photo.jpeg</b>


title: CHARACTER SET IMPORTANCE
content:
The effectiveness and visual fidelity of ASCII art largely depend on the selected character set. Characters are typically ordered from 'light' (less dense) to 'dark' (more dense). Denser characters (e.g., <I>@, #, &, %, *</I>) are used for darker areas of the image, while sparser characters (e.g., <I>., :, -, space</I>) represent lighter areas. A well-chosen character set can significantly enhance the recognizable detail in the output.


title: HISTORY
content:
The concept of ASCII art, representing images with text characters, predates digital computers. With the advent of text-based terminals, automated conversion tools emerged. The specific command named <b>asciiart</b> often acts as a user-friendly frontend or a simpler script for more robust image-to-text converters like <I>jp2a</I> (JPEG to ASCII) or utilities from the <I>libcaca</I> library, which have undergone continuous development since the late 20th century to improve rendering quality and feature sets. Thus, its 'history' is often intertwined with the development of these underlying tools and the broader ASCII art community.


title: SYNOPSIS
content:
<b>asciidoctor</b> [<i>OPTION</i>...] <i>FILE</i>...<br><b>asciidoctor</b> [<i>OPTION</i>...] <i>-</i>


title: PARAMETERS
content:
<b>-o, --output-file <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the output file. If omitted, the output filename is derived from the input file with the backend's default extension.<br><br><b>-D, --destination-dir <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where the output file will be written.<br><br><b>-b, --backend <i>&lt;backend_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the backend for conversion. Common backends include 'html5', 'docbook5', and 'pdf' (requires asciidoctor-pdf gem).<br><br><b>-a, --attribute <i>&lt;key[=value]&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a document attribute or sets its value. Can be used multiple times to define several attributes.<br><br><b>-r, --require <i>&lt;library&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Requires a Ruby library before conversion, useful for loading extensions or custom converters.<br><br><b>-S, --safe-mode <i>&lt;level&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the safe mode level, controlling access to the file system and external resources. Levels include 'safe', 'server', 'secure', and 'unsafe'.<br><br><b>-s, --no-header-footer</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the document header and footer, producing a partial document rather than a standalone one.<br><br><b>-d, --doctype <i>&lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the document type. Common types are 'article', 'book', 'manpage', and 'inline'.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all output except for errors, useful for scripting or automated environments.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the conversion process.<br><br><b>--trace</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables a backtrace for exceptions, which is very useful for debugging conversion issues.<br><br>


title: DESCRIPTION
content:
<b>asciidoctor</b> is a powerful, open source text processor written in Ruby that converts AsciiDoc source files into a variety of output formats, including HTML5, DocBook, and PDF. AsciiDoc is a human-readable markup language designed for writing technical documentation, books, articles, and more, emphasizing semantic structure over presentation. <b>asciidoctor</b> serves as a modern, faster, and more feature-rich successor to the original Python-based <i>asciidoc</i> processor. It provides comprehensive support for standard AsciiDoc syntax elements such as sections, paragraphs, lists, tables, images, and source code blocks. Its highly extensible architecture allows for custom backends, preprocessors, and postprocessors, making it a versatile tool for authors and technical writers seeking to automate their documentation workflows and publish high-quality content from plain text.


title: CAVEATS
content:
Using <i>asciidoctor</i> requires a Ruby environment to be installed on your system. While it can generate HTML5 and DocBook out-of-the-box, generating PDF documents requires the separate <b>asciidoctor-pdf</b> Ruby gem to be installed. Similarly, other specialized output formats or custom extensions may require additional Ruby gems. Be cautious when using <code>--safe-mode unsafe</code> as it disables security restrictions, potentially allowing arbitrary file system access or external resource loading from the processed AsciiDoc content.


title: DOCUMENT ATTRIBUTES
content:
AsciiDoc heavily relies on document attributes, which are variables that can be defined within the document or passed via the command line using the <code>-a</code> option. These attributes control various aspects of the output, such as image paths, conditional content inclusion, and styling. Understanding and utilizing attributes is crucial for advanced AsciiDoc authoring and customization.


title: EXTENSIONS AND ECOSYSTEM
content:
The <i>Asciidoctor</i> ecosystem is rich with extensions that enhance its capabilities. These include custom backends (like <b>asciidoctor-pdf</b> for PDF generation), syntax extensions for diagrams (e.g., using Asciidoctor Diagram), and integrations with build tools like Gradle and Maven. This extensibility allows <i>Asciidoctor</i> to fit into diverse documentation workflows.


title: HISTORY
content:
<i>Asciidoctor</i> was developed by Dan Allen and the Asciidoctor project maintainers as a modern, high-performance replacement for the original Python-based <code>asciidoc.py</code> processor created by Stuart Rackham. The Ruby implementation aimed to address performance bottlenecks and provide a more extensible architecture. Since its inception, <i>Asciidoctor</i> has gained significant traction, becoming the de facto standard for processing AsciiDoc content and serving as the foundation for various documentation toolchains, including Antora and Jekyll-based sites.


title: SYNOPSIS
content:
<b>asciinema</b> [<i>global-options</i>] &lt;<i>command</i>&gt; [<i>command-options</i>] [<i>arguments</i>]<br><br>Common commands:<br>&nbsp;&nbsp;<b>asciinema record</b> [<i>filename</i>] [<i>options</i>]<br>&nbsp;&nbsp;<b>asciinema play</b> &lt;<i>filename</i>|<i>url</i>&gt; [<i>options</i>]<br>&nbsp;&nbsp;<b>asciinema upload</b> &lt;<i>filename</i>&gt;<br>&nbsp;&nbsp;<b>asciinema auth</b><br>&nbsp;&nbsp;<b>asciinema cat</b> &lt;<i>filename</i>|<i>url</i>&gt;<br>&nbsp;&nbsp;<b>asciinema config</b> &lt;<i>subcommand</i>&gt;


title: PARAMETERS
content:
<b>record [filename]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Records a new terminal session. If <i>filename</i> is omitted, a temporary file is used and automatically uploaded to asciinema.org upon exit.<br><br><b>record -i <sec>, --idle-time-limit <sec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits recorded idle time to <i>N</i> seconds. Any idle time exceeding this will be truncated.<br><br><b>record -c <cmd>, --command <cmd></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the command to record. Defaults to <b>$SHELL</b> if not provided.<br><br><b>record -t <title>, --title <title></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the title of the recording, which is displayed on asciinema.org.<br><br><b>record --append</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends new recording to an existing <i>.cast</i> file.<br><br><b>record --overwrite</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrites an existing <i>.cast</i> file.<br><br><b>record --raw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Records raw terminal output, without timing information. This results in a plain text file.<br><br><b>play <filename|url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Plays an existing <i>.cast</i> file or a recording directly from an asciinema.org URL.<br><br><b>play -s <speed>, --speed <speed></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the playback speed (e.g., 0.5 for half speed, 2.0 for double speed). Valid range: 0.1-5.0.<br><br><b>play -i <sec>, --idle-time-limit <sec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits displayed idle time during playback to <i>N</i> seconds.<br><br><b>play -w <cols>x<rows>, --window-size <cols>x<rows></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the terminal dimensions during playback (e.g., 80x24).<br><br><b>upload <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uploads a local <i>.cast</i> recording to asciinema.org.<br><br><b>auth</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Links your local <i>asciinema</i> installation with your asciinema.org account, enabling you to manage your uploaded recordings.<br><br><b>cat <filename|url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the full output of a recording to standard output (stdout), useful for piping to other commands.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>asciinema</i> version information.<br><br>


title: DESCRIPTION
content:
<i>asciinema</i> is a free and open-source command-line tool that allows you to record your terminal sessions and replay them in a browser or directly in the terminal. It's an excellent utility for creating software demos, debugging terminal interactions, or sharing command-line workflows.<br><br>Unlike traditional video recordings, <i>asciinema</i> captures terminal output as plain text with timing information, resulting in lightweight files. These recordings can be played back at different speeds, paused, or even copied directly from the displayed text. It supports uploading recordings to the asciinema.org website for easy sharing and embedding, making it a popular choice for documentation and tutorials.


title: CAVEATS
content:
Due to its text-based nature, <i>asciinema</i> cannot record graphical applications or non-textual terminal output (e.g., images). While recordings are lightweight, very long sessions can still generate large <i>.cast</i> files. Sharing recordings publicly on asciinema.org requires awareness of any sensitive information that might be displayed in the terminal during recording.


title: THE .CAST FILE FORMAT
content:
<i>asciinema</i> recordings are stored in a simple, human-readable JSON-based format (<i>.cast</i> files). This format includes metadata (e.g., terminal dimensions, timestamp, title) and an array of events, where each event represents a terminal output chunk along with a timestamp indicating when it occurred. This open format allows for easy parsing and manipulation of recordings.


title: ASCIINEMA.ORG PLATFORM
content:
The asciinema.org website serves as a public hosting and embedding platform for <i>asciinema</i> recordings. Users can upload their recordings, which are then playable directly in a web browser. The platform provides embedding code, making it easy to integrate recordings into blogs, documentation, and websites, enhancing their utility for tutorials and demonstrations.


title: HISTORY
content:
<i>asciinema</i> was created by Marcin Kulik, with its first stable release (version 1.0) in late 2011/early 2012. It emerged as a lightweight, text-centric alternative to traditional screen recorders for terminal use, emphasizing the open <i>.cast</i> file format and the complementary asciinema.org platform for sharing. It quickly gained popularity in the Linux community for its simplicity and effectiveness in documenting terminal workflows.


title: SYNOPSIS
content:
<b>asciitopgm</b> [<I>-text</I>] [<I>-expand</I>] [<I>-compact</I>] [<I>-landscape</I>] [<I>-width=cols</I>] [<I>-height=rows</I>] [<I>ascii_file</I>]


title: PARAMETERS
content:
<b>-text</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inverts the graymap, effectively swapping dark characters with white and light characters with black. This is useful when processing 'text mode' programs or displays where non-space characters are drawn as the foreground.<br><br><b>-expand</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renders each ASCII character as a larger 16x16 pixel block, resulting in a more zoomed-in or blocky appearance.<br><br><b>-compact</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Renders each ASCII character as a smaller 4x8 pixel block, producing a more compact and potentially harder-to-read image.<br><br><b>-landscape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates the entire output image 90 degrees clockwise. This can be useful for converting ASCII art that is wider than it is tall into a landscape image.<br><br><b>-width=<I>cols</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the desired width of the output image in character columns. The image will be scaled horizontally to fit this number of character positions.<br><br><b>-height=<I>rows</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the desired height of the output image in character rows. The image will be scaled vertically to fit this number of character positions.<br><br><b><I>ascii_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input ASCII graphics file. If this argument is omitted, <b>asciitopgm</b> will read its input from standard input (stdin).<br><br>


title: DESCRIPTION
content:
<b>asciitopgm</b> is a Netpbm command-line utility designed to convert ASCII graphics files into Portable Graymap (PGM) images.<br><br>It reads plain ASCII text (either from a specified file or standard input) and renders each character as a block of pixels in the output PGM. By default, characters are mapped to 8x16 pixel blocks, but options are available for 4x8 (with <i>-compact</i>) or 16x16 (with <i>-expand</i>) pixel representations. The utility assigns different shades of gray to various ASCII characters; for instance, dense characters like '@' or '#' typically appear darker, while a space (' ') is rendered as white.<br><br>This tool is particularly useful for creating graphical representations of ASCII art, source code, or any plain text for documentation, presentations, or web content. The resulting PGM image can then be viewed directly or easily converted to other image formats using other Netpbm tools.


title: CAVEATS
content:
<b>asciitopgm</b> is a simple utility focused on direct character-to-pixel mapping. It does not perform advanced font rendering, text layout, or support variable-width fonts. It treats each character as a fixed-size block, which might not be suitable for complex typographic needs. It's best suited for character-based art or plain text where visual fidelity to a monospace terminal is desired.


title: INPUT/OUTPUT FORMAT
content:
The command expects plain ASCII text as input, typically structured as 'ASCII art' or simple text files. The output is always in the PGM (Portable Graymap) format, a simple, uncompressed image format within the Netpbm suite, which can be easily converted to other popular image formats (like PNG, JPEG) using other Netpbm tools like <b>pgmtoppm</b> and then <b>ppmtojpeg</b>/<b>ppmtopng</b>.


title: CHARACTER-TO-GRAYMAP MAPPING
content:
The conversion logic maps different ASCII characters to varying shades of gray. Generally, characters that visually occupy more space or are 'denser' (e.g., '@', '#', '%', '&amp;') are rendered as darker pixels, while characters like ' ' (space), '.', or '-' are rendered as lighter pixels. This mapping creates a visual gradient that mimics the original ASCII art's apparent density.


title: HISTORY
content:
<b>asciitopgm</b> is an integral part of the Netpbm project, a comprehensive toolkit for manipulating graphic images. Netpbm originated from the `pbmplus` package developed in the late 1980s and early 1990s. The philosophy behind Netpbm, and thus <b>asciitopgm</b>, is to provide small, specialized, and composable command-line tools. This design allows users to chain commands together using pipes to achieve complex image processing tasks, fitting the Unix philosophy of 'do one thing and do it well'. <b>asciitopgm</b>'s development and continued inclusion reflect the enduring utility of converting text-based content into standard graphical formats.


title: SYNOPSIS
content:
asciitoppm [-font fontfile] [-fontsize size] [-width width] [-height height] [-margin margin] [-background color] [-foreground color] [-xgrid] [-ygrid] [textfile]


title: PARAMETERS
content:
<b>-font <I>fontfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the font file to use. The default is <B>fixed.pcf</B>.<br><br><b>-fontsize <I>size</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the size of the font in pixels. Default is <B>10</B>.<br><br><b>-width <I>width</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the exact width of the output image in pixels.<br><br><b>-height <I>height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the exact height of the output image in pixels.<br><br><b>-margin <I>margin</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the margin in pixels around the text content. Default is <B>0</B>.<br><br><b>-background <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the background color of the image. Can be a name (e.g., <I>red</I>) or a hex code (e.g., <I>#FF0000</I>). Default is <B>black</B>.<br><br><b>-foreground <I>color</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the foreground (text) color of the image. Default is <B>white</B>.<br><br><b>-xgrid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Draws horizontal grid lines between characters in the output image.<br><br><b>-ygrid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Draws vertical grid lines between characters in the output image.<br><br><b><I>textfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. The path to the ASCII text file to convert. If omitted, <I>asciitoppm</I> reads from standard input.<br><br>


title: DESCRIPTION
content:
<I>asciitoppm</I> is a utility from the <B>Netpbm</B> image manipulation toolkit. It reads plain ASCII text from standard input or a specified file and renders it into a <B>Portable Pixmap (PPM)</B> image. The resulting image is written to standard output.<br><br>This command is particularly useful for converting text-based reports, code snippets, or arbitrary text content into a graphical format for embedding in documents, web pages, or for further image processing. Users can customize the font, font size, image dimensions, margins, and foreground/background colors. It's designed for simple bitmap fonts and outputs only PPM, which can then be converted to other formats using Netpbm's extensive suite of tools.


title: CAVEATS
content:
<I>asciitoppm</I> primarily supports simple bitmap fonts, typically in <B>.pcf</B> format. It does not natively support advanced font formats like <B>PostScript</B> or <B>TrueType</B>.<br><br>The quality of the output image heavily depends on the chosen font and its size.<br><br>The command always outputs to the <B>PPM</B> format. To obtain other image formats (e.g., PNG, JPEG), the PPM output must be piped to another <B>Netpbm</B> utility (e.g., <I>pnmtopng</I>).


title: <B>INPUT/OUTPUT STREAM HANDLING</B>
content:
<I>asciitoppm</I> is designed with the Unix philosophy in mind. It reads text from standard input (or a specified file) and writes the resulting <B>PPM</B> image to standard output. This design allows for seamless integration into shell scripts and piping with other commands, facilitating complex image processing workflows.


title: <B>FONT MANAGEMENT</B>
content:
The command relies on the availability and proper configuration of font files. Users might need to ensure that the specified font file (e.g., <B>fixed.pcf</B>) is accessible within a configured font path or provide the full path to the font file if it resides in a non-standard location.


title: HISTORY
content:
<I>asciitoppm</I> is a component of the comprehensive <B>Netpbm</B> project, a widely used suite of graphics file format conversion tools. The <B>Netpbm</B> project's philosophy emphasizes small, single-purpose tools that can be chained together via pipes to perform complex tasks.<br><br><I>asciitoppm</I> was authored by <B>David S. Miller</B> and later extended by <B>Bryan Henderson</B>, a key maintainer of the <B>Netpbm</B> suite. Its development aligns with <B>Netpbm</B>'s goal of providing robust, open-source tools for manipulating various image formats, with a focus on portability and extensibility.


title: PARAMETERS
content:
<b><b>install</b> <i><tool></i> <i>[version]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs a specific version of a tool. If no version is specified, it installs the version found in the <i>.tool-versions</i> file or the globally configured version.<br><br><b><b>local</b> <i><tool></i> <i><version></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the local tool version for the current directory by creating or updating a <i>.tool-versions</i> file. This version takes precedence over global settings.<br><br><b><b>global</b> <i><tool></i> <i><version></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the global tool version for your user. This version is used if no local <i>.tool-versions</i> file is present.<br><br><b><b>uninstall</b> <i><tool></i> <i><version></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes an installed version of a tool from your system.<br><br><b><b>list</b> <i>[<tool>]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed versions of a specific tool, or all tools if no tool is specified.<br><br><b><b>list all</b> <i><tool></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available versions of a tool that can be installed via its plugin.<br><br><b><b>current</b> <i>[<tool>]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the currently active version of a tool based on the <i>.tool-versions</i> file or global configuration.<br><br><b><b>plugin add</b> <i><name></i> <i>[git-url]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new plugin for a specific tool. Plugins are typically found in the <i>asdf-plugins</i> GitHub organization or provided by third parties.<br><br><b><b>plugin list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed plugins.<br><br><b><b>plugin update</b> <i>[<name>]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates a specific plugin, or all installed plugins if no name is provided.<br><br><b><b>reshim</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rebuilds the shims (executable wrappers) for all installed tools. This is often needed after installing new executables with a language (e.g., Ruby gems, Node.js npm packages).<br><br><b><b>update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates <i>asdf</i> itself to the latest version.<br><br><b><b>help</b> <i>[<command>]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for <i>asdf</i> or a specific subcommand.<br><br>


title: DESCRIPTION
content:
<i>asdf</i> is an extensible command-line tool that allows you to manage multiple versions of various programming language runtimes (such as Node.js, Ruby, Python, Elixir, Go, and more) on a per-project or global basis. It operates through a robust plugin system, where each language or tool has its own plugin responsible for installing and managing different versions. This architecture makes <i>asdf</i> highly flexible and agnostic to the specific runtime.<br><br>It uses a <i>.tool-versions</i> file, typically located in a project's root directory, to declare the exact versions of tools required for that project. This ensures consistency across development environments and teams. <i>asdf</i> works by inserting 'shims' into your system's PATH, which are small scripts that intelligently execute the correct version of a tool based on your project's configuration or global settings, without polluting your system with multiple binaries directly. It's designed to be lightweight, easy to use, and helps maintain a clean and organized development environment.


title: CAVEATS
content:
<i>asdf</i> requires proper shell integration (e.g., sourcing <i>asdf.sh</i> or <i>asdf.fish</i> in your shell configuration) to function correctly. It relies on its plugin system, meaning each tool needs a corresponding plugin, and some plugins might have their own system dependencies (e.g., build tools, compilers). While <i>asdf</i> manages versions, it is not a full-fledged package manager for system-wide dependencies.


title: PLUGIN SYSTEM
content:
The core of <i>asdf</i>'s flexibility lies in its plugin system. Each language or tool supported by <i>asdf</i> has a corresponding plugin, which is typically a Git repository containing scripts for installing, listing, and uninstalling versions of that specific tool. Users can add new plugins from GitHub, allowing <i>asdf</i> to support virtually any command-line tool or runtime.


title: .TOOL-VERSIONS FILE
content:
This file is central to <i>asdf</i>'s per-project version management. When you navigate into a directory, <i>asdf</i> scans for a <i>.tool-versions</i> file in the current directory or its parent directories. This file explicitly lists the desired versions for one or more tools (e.g., 'nodejs 16.14.0', 'ruby 3.1.2'), ensuring that every developer working on a project uses the exact same tool versions, which helps prevent 'it works on my machine' issues.


title: HISTORY
content:
<i>asdf-vm</i> was developed by Halit Narin and first gained prominence around 2017. Its creation was driven by a desire for a single, generic version manager that could handle multiple language runtimes, addressing the fragmentation of language-specific tools like <i>nvm</i>, <i>rvm</i>, and <i>pyenv</i>. By abstracting the version management logic into a core tool and externalizing language support via a robust plugin system, <i>asdf</i> offered a highly flexible and extensible solution that quickly gained adoption in the developer community.


title: PARAMETERS
content:
<b><b>-p</b>, <b>--port</b> <i>&lt;client:port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>ALSA sequencer port</i> to listen on. This can be a numerical identifier (e.g., <i>128:0</i>) or a port name (e.g., <i>Midi Through:0</i>). Use <b>aconnect -l</b> to list available ports.<br><br><b><b>-t</b>, <b>--timestamp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a <i>timestamp</i> for each received <i>MIDI event</i>, showing the time elapsed since <b>aseqdump</b> started. This helps in analyzing event timing.<br><br><b><b>-R</b>, <b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>raw MIDI event bytes</i> in <i>hexadecimal format</i> instead of the human-readable interpreted format. Useful for low-level debugging.<br><br><b><b>-c</b>, <b>--channel</b> <i>&lt;N&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters and displays only <i>MIDI events</i> occurring on the specified <i>MIDI channel</i> (0-15). This can help in focusing on specific data streams.<br><br><b><b>-u</b>, <b>--unparseable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes <i>unparseable events</i> in the output. This option is typically used for debugging the <i>ALSA sequencer</i> itself, revealing malformed or unknown events.<br><br><b><b>-i</b>, <b>--input</b> <i>&lt;filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads <i>MIDI events</i> from a specified <i>raw MIDI file</i> instead of a live sequencer port. Useful for analyzing pre-recorded MIDI data.<br><br><b><b>-o</b>, <b>--output</b> <i>&lt;filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the received <i>MIDI events</i> to a specified <i>raw MIDI file</i>. Can be used for logging or capturing MIDI streams.<br><br><b><b>-s</b>, <b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes event output with <i>real-time</i>, particularly when reading from a file, ensuring events are printed at their original relative times.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message with available command-line options.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>aseqdump</b> utility.<br><br>


title: DESCRIPTION
content:
<b>aseqdump</b> is a powerful utility from the <i>ALSA (Advanced Linux Sound Architecture)</i> project, designed to monitor and display <i>MIDI sequencer events</i>. It functions by listening on a specified <i>ALSA MIDI sequencer port</i> (or a default 'dump' port created by the command itself) and printing all received MIDI events to <i>standard output</i> in a human-readable format. This command is an invaluable tool for <i>debugging MIDI applications</i>, understanding the flow of <i>MIDI signals</i> within your Linux system, or simply observing real-time <i>MIDI traffic</i>. The output typically includes detailed information such as event timestamps, source and destination port details, the type of <i>MIDI event</i> (e.g., <i>Note On</i>, <i>Control Change</i>, <i>Program Change</i>), and the associated data for each event. It acts as a transparent window into your system's MIDI communication.


title: CAVEATS
content:
<b>aseqdump</b> is an observation tool and not designed for <i>real-time performance-critical applications</i>. While it processes events efficiently, its output to <i>standard I/O</i> might introduce minor latency. Ensure the target <i>ALSA sequencer port</i> is available and correctly specified; use <b>aconnect -l</b> to verify port existence. For high-volume <i>MIDI traffic</i>, the output can be very verbose and scroll rapidly, often requiring piping to tools like <b>less</b> or <b>grep</b> for effective analysis.


title: DEBUGGING MIDI CHAINS
content:
This command is exceptionally useful for verifying the correct flow of <i>MIDI data</i> between different applications (e.g., <i>MIDI controllers</i>, <i>software synthesizers</i>, <i>Digital Audio Workstations</i>). By strategically connecting <b>aseqdump</b> at various points in the <i>MIDI signal chain</i> using <b>aconnect</b>, users can effectively isolate and diagnose where <i>MIDI events</i> might be getting dropped, delayed, or malformed.


title: MIDI PROTOCOL INSPECTION
content:
Beyond mere debugging, <b>aseqdump</b> can be used for general <i>MIDI monitoring</i>. It allows users to gain deep insight into the actual <i>MIDI messages</i> being generated by a connected <i>MIDI device</i> or received by an application, which is invaluable for understanding the specifics of the <i>MIDI protocol</i> and device behavior.


title: HISTORY
content:
<b>aseqdump</b> is a long-standing component of the <i>alsa-utils</i> package, which provides essential command-line utilities for the <i>ALSA sound system</i> in Linux. Its development is deeply intertwined with the evolution of <i>ALSA</i> itself, making it a foundational tool for <i>MIDI diagnostics and monitoring</i> within the Linux audio ecosystem. It has consistently provided a robust and reliable method for inspecting <i>ALSA sequencer event streams</i> across various Linux distributions for many years.


title: PARAMETERS
content:
<b>-s, --server</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <i>aseqnet</i> in server mode, listening for incoming client connections.<br><br><b>-p, --port=<alsa_port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the local ALSA sequencer port to use for network communication (e.g., 20:0).<br><br><b>-q, --queue=<alsa_queue></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ALSA sequencer queue to be used.<br><br><b>-t, --timestamp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the system timer for timestamps in MIDI messages.<br><br><b>-c, --connect=<host></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Server mode only)</i> Automatically connect to a remote host upon startup.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Server mode only)</i> List all currently connected clients to the server.<br><br><b>-r, --remove=<client_id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Server mode only)</i> Remove a specific client connection from the server.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output messages, providing more detailed information during operation.<br><br><b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output messages, showing highly detailed information for troubleshooting.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version number of the <i>aseqnet</i> utility.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the help message and exit.<br><br>


title: DESCRIPTION
content:
<i>aseqnet</i> is a crucial utility for the ALSA (Advanced Linux Sound Architecture) sequencer, enabling MIDI communication over a network. It acts as a bridge, making your local ALSA sequencer ports available to a remote system, or connecting your system to a remote <i>aseqnet</i> server. This allows MIDI data to be seamlessly transmitted and received across different machines. <br><br>It supports two primary operational modes: client (default) and server. In client mode, <i>aseqnet</i> connects to a specified remote host and port, routing local ALSA MIDI events to and from the network. In server mode, it listens for incoming connections from other <i>aseqnet</i> clients, facilitating a central hub for distributed MIDI setups. This functionality is invaluable for scenarios like linking multiple Linux audio workstations, integrating software and hardware MIDI devices across a LAN, or collaborative music production where MIDI synchronization and data exchange are paramount. The default TCP port used is 12850.


title: CAVEATS
content:
Requires ALSA (Advanced Linux Sound Architecture) to be properly installed and configured on the system. <br>The default TCP port 12850 must be open in any firewalls between the client and server machines for successful connections. <br>Network latency can significantly impact the real-time performance of MIDI data, potentially causing delays or timing issues. <br>MIDI data transferred via <i>aseqnet</i> is typically unencrypted, so it should be used on trusted networks to avoid security vulnerabilities.


title: NETWORK MODES AND ARGUMENTS
content:
<i>aseqnet</i> defaults to client mode, connecting to a remote server. When the <b>-s</b> (<b>--server</b>) option is used, it operates as a server. The meaning of the <i>HOST</i> and <i>PORT</i> arguments changes based on the mode:<br><ul><li>In <b>client mode</b>: <i>HOST</i> specifies the remote server's hostname or IP address, and <i>PORT</i> is its TCP port.</li><li>In <b>server mode</b>: <i>HOST</i> specifies the local address to bind to (e.g., <i>0.0.0.0</i> to listen on all available network interfaces), and <i>PORT</i> is the listening TCP port.</li></ul>The default TCP port for both modes is 12850.


title: HISTORY
content:
<i>aseqnet</i> is an integral part of the ALSA Utilities package, which has evolved since the late 1990s as the successor to the earlier OSS (Open Sound System) in Linux. Its development is intertwined with ALSA's growth as the standard Linux audio infrastructure. By providing network connectivity for the ALSA sequencer, <i>aseqnet</i> has been crucial in enabling distributed MIDI environments, allowing Linux systems to be central to professional audio production and collaborative music projects.


title: SYNOPSIS
content:
<b>openssl asn1parse</b> <I>[-in filename]</I> <I>[-inform DER|PEM]</I> <I>[-noout]</I> <I>[-offset number]</I> <I>[-length number]</I> <I>[-dump]</I> <I>[-i]</I> <I>[-strparse offset]</I> <I>[-genstr value]</I> <I>[-show_offsets]</I> <I>[-oid_fmt hex|decimal|text]</I> <I>[-check]</I>


title: PARAMETERS
content:
<b><b>-in</b> <I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file containing ASN.1 data. If omitted, standard input is used.<br><br><b><b>-inform</b> <I>DER|PEM</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the input format; <I>DER</I> for binary, <I>PEM</I> for Base64-encoded. Default is <I>PEM</I>.<br><br><b><b>-noout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the output of the parsed ASN.1 structure. Useful when only checking the structure.<br><br><b><b>-offset</b> <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts parsing the input from the specified byte <I>offset</I>.<br><br><b><b>-length</b> <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses only <I>number</I> bytes from the input, starting at the current offset.<br><br><b><b>-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the raw contents of each ASN.1 object, including non-printable characters, in hexadecimal.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indents the output to visually represent the nested structure of ASN.1 objects.<br><br><b><b>-strparse</b> <I>offset</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parses the content of an OCTET STRING or BIT STRING at the given <I>offset</I> as an inner ASN.1 structure.<br><br><b><b>-genstr</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an ASN.1 OCTET STRING from the provided <I>value</I> (often hex) for parsing. Primarily used to feed specific data to the parser.<br><br><b><b>-show_offsets</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the byte offset and length of each ASN.1 object in the output.<br><br><b><b>-oid_fmt</b> <I>hex|decimal|text</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the display format of Object Identifiers (OIDs). Default is <I>text</I>.<br><br><b><b>-check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a basic structural check on the ASN.1 data without outputting the parsed content.<br><br>


title: DESCRIPTION
content:
<b>asn1parse</b> is a specialized utility within the OpenSSL toolkit designed to parse and display the Abstract Syntax Notation One (ASN.1) structure of various cryptographic data formats. ASN.1 is a standard used for defining data structures, widely employed in X.509 certificates, PKCS#10 certificate requests, PKCS#8 private keys, Certificate Revocation Lists (CRLs), and other security-related files.<br><br>The command reads ASN.1 encoded data, typically from a file or standard input, and outputs a human-readable, indented representation of its hierarchical structure. This includes details like object types, tags, lengths, and values. It is an invaluable tool for developers, security researchers, and administrators to understand, debug, and verify the low-level encoding of cryptographic objects.


title: CAVEATS
content:
<b>asn1parse</b> is a low-level debugging tool; understanding its output often requires familiarity with ASN.1 encoding rules and cryptographic data structures. Errors might be generic, requiring careful manual inspection. It is primarily for inspection and verification, not for modification of ASN.1 data.


title: DEBUGGING CRYPTOGRAPHIC DATA
content:
<b>asn1parse</b> is indispensable for debugging issues related to malformed certificates, keys, or other ASN.1 encoded data. By displaying the raw structure, it helps identify incorrect encodings, missing fields, or unexpected values. For instance, one can pipe the output of <b>openssl x509 -in cert.pem -outform DER</b> to <b>asn1parse -i -dump</b> to see the DER-encoded certificate's full ASN.1 structure and raw values.


title: HISTORY
content:
<b>asn1parse</b> has been a core utility within the <b>OpenSSL</b> project since its early days, evolving to support new ASN.1 structures and encoding practices as cryptographic standards advanced. It remains a fundamental component for deep inspection and debugging of certificate and key data within the <b>OpenSSL</b> ecosystem.


title: SYNOPSIS
content:
<B>asnmap</B> <I>-ip <IP/CIDR/Domain></I> <I>[OPTIONS]</I><br><B>asnmap</B> <I>-i <input_file></I> <I>[OPTIONS]</I><br><B>asnmap</B> <I>-org <organization_name></I> <I>[OPTIONS]</I>


title: PARAMETERS
content:
<b><I>-ip <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a single IP address, CIDR range, or domain for which to retrieve ASN information.<br><br><b><I>-i <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a path to an input file containing a list of IP addresses, CIDR ranges, or domains, one per line.<br><br><b><I>-org <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for Autonomous Systems associated with the specified organization name.<br><br><b><I>-json</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the output in JSON, useful for programmatic parsing and integration.<br><br><b><I>-o <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the output to the specified file instead of standard output.<br><br><b><I>-silent</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all non-result output, showing only the raw results.<br><br><b><I>-v</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying more detailed information during execution.<br><br><b><I>-version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current version of the <I>asnmap</I> tool.<br><br><b><I>-sources</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available data sources that <I>asnmap</I> can query for information.<br><br><b><I>-r</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables hostname resolution to IP addresses before querying ASN data.<br><br><b><I>-s <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of particular data sources to use, overriding the default.<br><br><b><I>-c <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of concurrent requests to be made.<br><br><b><I>-config <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a custom configuration file, typically for API keys.<br><br><b><I>-proxy <value></I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified HTTP/SOCKS proxy for all outgoing requests.<br><br>


title: DESCRIPTION
content:
<I>asnmap</I> is a reconnaissance tool designed to retrieve Autonomous System Number (ASN), organization, and country information associated with IP addresses, CIDR ranges, or domains. It aggregates data from multiple public and passive sources like bgp.tools, cymru.com, and ipinfo.io, providing a comprehensive view of network ownership. This utility is particularly valuable for security researchers, penetration testers, and network administrators to understand the infrastructure footprint of a target, identify related assets, and enrich threat intelligence data.<br><br>It supports various input types and output formats, including plain text and JSON, making it versatile for scripting and integration into automated workflows. <I>asnmap</I> helps in mapping the internet's routing fabric to specific entities, aiding in incident response, vulnerability assessment, and asset discovery.


title: CAVEATS
content:
Due to its reliance on external public APIs, <I>asnmap</I>'s accuracy and performance can be affected by the availability, rate limits, and freshness of data from these sources. Some premium data sources require API keys, which must be configured. Users should also be mindful of the ethical implications and legality of conducting reconnaissance on target systems.


title: CONFIGURATION AND API KEYS
content:
<I>asnmap</I> supports a configuration file (often located at <I>~/.config/asnmap/config.yaml</I>) where users can securely store API keys for various data sources. This allows access to premium data and ensures consistent tool behavior across sessions.


title: INTEGRATION WITH PROJECTDISCOVERY TOOLS
content:
As part of the ProjectDiscovery ecosystem, <I>asnmap</I> is designed for seamless integration with other tools like <I>subfinder</I> (for subdomain enumeration) and <I>httpx</I> (for HTTP probing). This modularity allows for powerful and automated reconnaissance workflows, where outputs from one tool can be piped as inputs to another.


title: HISTORY
content:
<I>asnmap</I> is a modern command-line utility developed by ProjectDiscovery, an open-source initiative renowned for creating a suite of fast and efficient security and reconnaissance tools primarily written in Go. Its development is part of a broader trend in the cybersecurity community towards specialized, composable tools that facilitate automated asset discovery and threat intelligence gathering, making it a valuable addition to any security professional's toolkit.


title: DESCRIPTION
content:
<i>aspell-autobuildhash</i> is a utility script that automates the process of building the <i>.rws</i> (raw word list) hash files for Aspell dictionaries. These hash files are essential for Aspell's efficient operation, as they contain a pre-processed, compressed representation of the dictionary's word list. The command typically scans for word list files (like <i>.wl</i> or <i>.dict</i>) within specified directories or common Aspell dictionary locations. If an existing <i>.rws</i> file is outdated (e.g., its modification time is older than the corresponding word list file) or missing, <i>aspell-autobuildhash</i> invokes the <i>aspell</i> utility to rebuild it. This automation is particularly useful for dictionary maintainers or during system installations/upgrades to ensure that all Aspell dictionaries have up-to-date and correctly built hash files, preventing potential dictionary loading errors or performance issues. It streamlines the maintenance of large Aspell dictionary collections.


title: CAVEATS
content:
Requires Aspell to be installed and correctly configured on the system.<br>Needs write permissions in the Aspell dictionary directories to create or update <i>.rws</i> files.<br>Building hash files can be time-consuming, especially for a large number of dictionaries or on slower systems.<br>Errors in the source word list files (e.g., invalid encoding) can lead to failures during the hash file generation.


title: WHY .RWS FILES?
content:
<I>.rws</I> (raw word list) files are highly optimized binary hash files that Aspell uses for rapid lookups. They are generated from human-readable word lists (<I>.wl</I> or <I>.dict</I> files) and significantly improve Aspell's performance by reducing memory usage and speeding up dictionary loading and word checking. Because their format can be specific to the Aspell version and configuration, they often need to be rebuilt after Aspell upgrades or dictionary source file changes.


title: COMMON INVOCATION CONTEXT
content:
While <I>aspell-autobuildhash</I> can be run manually, it is most commonly invoked automatically by system package managers (e.g., <I>apt</I>, <I>yum</I>, <I>pacman</I>) as part of post-installation or post-upgrade scripts for Aspell or its dictionary packages. This ensures that all installed dictionaries are correctly prepared for use without requiring manual intervention from the user.


title: HISTORY
content:
Aspell, developed by Kevin Atkinson, emerged as a free and more flexible alternative to Ispell. The <i>aspell-autobuildhash</i> script became an integral part of the Aspell utility suite to simplify dictionary maintenance. The necessity for such a script arose from Aspell's reliance on highly optimized <i>.rws</i> binary hash files, which are version-specific and often need rebuilding when Aspell itself is updated, its configuration changes, or the source word lists are modified. This automation significantly reduced the manual effort for dictionary maintainers and package managers, ensuring dictionary consistency across various system installations and updates.


title: PARAMETERS
content:
<b>-l, --lang=<i>&lt;lang&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the language of the word list, which is essential for proper character set handling and linguistic rules.<br><br><b>--encoding=<i>&lt;encoding&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the character encoding of the input <i>FILE</i>(s) (e.g., UTF-8, ISO-8859-1). Defaults to the system's locale encoding.<br><br><b>--normalize</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs Unicode normalization on the words, useful for handling characters with combining diacritics.<br><br><b>--ignore-case</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes words without regard to their casing, converting them to a common case (usually lowercase) before sorting and uniqueness checks.<br><br><b>--rem-accents</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes diacritical marks (accents) from words during processing.<br><br><b>--clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans the word list by removing invalid characters or applying other cleaning rules based on the language.<br><br><b>--allow-dash</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows hyphens to be considered valid characters within words, preventing words with hyphens from being split or discarded.<br><br><b>--allow-apostrophe</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows apostrophes to be considered valid characters within words.<br><br><b>--extra-chars=<i>&lt;chars&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines additional characters that should be considered valid within words, beyond the default alphanumeric set.<br><br><b>--rem-all-extra-chars</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all characters from words that are not alphanumeric or spaces, effectively stripping punctuation and symbols.<br><br><b>--master=<i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the master dictionary name to use for context or word processing rules, affecting how words are normalized or considered.<br><br><b>--personal=<i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the personal dictionary name to use for context, though <b>aspell-import</b> primarily outputs to standard out for further piping to other Aspell tools.<br><br>


title: DESCRIPTION
content:
The <b>aspell-import</b> command is a utility provided with the GNU Aspell spell checker. Its primary purpose is to convert plain text word lists (typically one word per line) into the highly optimized, sorted, and unique format used by Aspell dictionaries. This is crucial for creating or updating personal dictionaries, specialized vocabularies, or custom language packs. It handles various aspects of word processing such as encoding, case folding, accent removal, and character normalization, ensuring that the imported words are correctly processed and recognized by Aspell's spell-checking engine. The command reads input from standard input by default, or from specified files, and writes the processed word list to standard output.


title: CAVEATS
content:
<b>aspell-import</b> expects a plain text word list, typically with one word per line. Using incorrect character encoding for the input file can lead to corrupted or improperly processed words. The effectiveness of options like <i>--normalize</i> or <i>--rem-accents</i> depends on the underlying Aspell library's support for the specified language and its character set.


title: USAGE WITH DICTIONARY CREATION
content:
Often, the output of <b>aspell-import</b> is piped to other utilities like <b>word-list-compress</b> to create the final compressed dictionary files (<i>.rws</i> and <i>.wl</i>) that Aspell uses. For example:<br><code>cat my_words.txt | aspell-import --lang=en --encoding=UTF-8 | word-list-compress &gt; my_custom_dict.rws</code>


title: DEFAULT BEHAVIOR
content:
By default, <b>aspell-import</b> sorts the words, removes duplicates, and converts them to lowercase. It also tries to remove or handle invalid characters based on the language rules, unless explicitly told otherwise by options like <i>--dont-clean</i> or <i>--extra-chars</i>.


title: HISTORY
content:
<b>aspell-import</b> is a core utility that ships with GNU Aspell, a free and open-source spell checker designed to replace Ispell. Aspell's development began in the late 1990s with the goal of improving upon Ispell's functionality, particularly in handling different character sets and intelligent suggestion generation. <b>aspell-import</b> was created to facilitate the integration of custom word lists into Aspell's efficient dictionary format, a fundamental requirement for users wishing to extend or customize their spell-checking capabilities.


title: SYNOPSIS
content:
<br><code><b>assimp</b> <I>command</I> [<I>options</I>] <I>input_file</I> [<I>output_file</I>]</code><br><br>Common commands and their usage:<br><code><b>assimp</b> <I>info</I> [<I>options</I>] <I>input_file</I></code><br><code><b>assimp</b> <I>export</I> [<I>options</I>] <I>input_file</I> <I>output_file</I></code>


title: PARAMETERS
content:
<b><code>--help</code>, <code>-h</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message for the command or subcommand.<br><br><b><code>--input &lt;file&gt;</code>, <code>-i &lt;file&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the input 3D model file.<br><br><b><code>--output &lt;file&gt;</code>, <code>-o &lt;file&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path for the output 3D model file (used with <code>export</code> command).<br><br><b><code>--format &lt;id&gt;</code>, <code>-f &lt;id&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target output format ID for export (e.g., <code>obj</code>, <code>fbx</code>, <code>gltf2</code>).<br><br><b><code>--postprocess &lt;flag&gt;</code>, <code>-p &lt;flag&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a specific post-processing flag to the imported scene. Can be specified multiple times. Examples include <code>Triangulate</code>, <code>GenNormals</code>, <code>FlipUVs</code>, <code>OptimizeMeshes</code>.<br><br><b><code>--verbose</code>, <code>-v</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose logging output during processing.<br><br><b><code>--stats</code>, <code>-s</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed statistics about the imported scene (used with <code>info</code> command).<br><br><b><code>--log-level &lt;level&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level (e.g., debug, info, warn, error).<br><br><b><code>--clean-scene</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans the scene after import, removing unused data or nodes.<br><br><b><code>--validate</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs validation checks on the loaded scene data.<br><br>


title: DESCRIPTION
content:
The <I>assimp</I> command is the command-line utility for the <I>Open Asset Import Library (Assimp)</I>. It provides powerful capabilities for converting 3D models between a vast array of formats, as well as inspecting their properties. Supporting over 50 input formats (including OBJ, FBX, glTF, DAE, 3DS, STL) and numerous output formats, <I>assimp</I> is a versatile tool for asset pipeline management.<br><br>Beyond simple format conversion, <I>assimp</I> can apply a wide range of post-processing steps to models, such as triangulation, normal generation, UV coordinate transformations, and scene optimization. These features are crucial for preparing 3D assets for rendering, game engines, or other applications, ensuring compatibility and visual fidelity.


title: CAVEATS
content:
The exact set of supported input/output formats and post-processing flags can vary based on how the <I>assimp</I> command-line tool was compiled and distributed. It is always recommended to consult the output of <code><I>assimp export --help</I></code> or <code><I>assimp info --help</I></code> on your specific system to see the available options. Applying incorrect or inappropriate post-processing flags can lead to unintended visual artifacts or corrupted models. Large models can consume significant memory during conversion.


title: SUPPORTED FORMATS
content:
<I>Assimp</I> boasts an extensive list of supported 3D model formats for both import and export. Commonly supported formats include: <br><b>Import:</b> COLLADA (.dae), FBX (.fbx), glTF (.gltf, .glb), Wavefront OBJ (.obj), 3DS (.3ds), STL (.stl), PLY (.ply), X (.x), Blender 3D (.blend), and many more.<br><b>Export:</b> OBJ, glTF2, FBX, STL, PLY, 3MF, X, Collada, among others.<br>The full list of supported formats can be found in the <code><I>assimp export --help</I></code> output or the official Assimp documentation.


title: POST-PROCESSING FLAGS EXPLAINED
content:
Post-processing flags (specified with <code>-p</code> or <code>--postprocess</code>) are vital for optimizing and correcting 3D models. Some of the most frequently used flags include:<br><ul><li><I><code>Triangulate</code></I>: Converts all polygonal faces to triangles, which is standard for most rendering pipelines.</li><li><I><code>GenNormals</code></I>: Generates smooth vertex normals if they are missing or incorrect, crucial for proper lighting.</li><li><I><code>FlipUVs</code></I>: Flips UV coordinates vertically, often necessary when converting between applications that use different UV origins (e.g., OpenGL vs. DirectX).</li><li><I><code>OptimizeMeshes</code></I>: Attempts to reduce the number of meshes and draw calls by combining adjacent meshes.</li><li><I><code>JoinIdenticalVertices</code></I>: Merges duplicate vertices that have the same position, normal, and texture coordinates.</li></ul>These flags directly correspond to the <code>aiProcess_</code> constants in the Assimp library API.


title: HISTORY
content:
The <I>Open Asset Import Library (Assimp)</I> was initiated around 2008 by Kim Kulling with the goal of providing a comprehensive, easy-to-use, and robust library for importing various 3D asset formats into applications. It quickly gained traction, particularly in the game development and real-time rendering communities, due to its broad format support and advanced post-processing capabilities. The <I>assimp</I> command-line utility was developed as a direct tool to showcase and utilize the core functionalities of the library, allowing users to perform common conversions and inspections without writing code, thus becoming an integral part of many 3D asset pipelines.


title: SYNOPSIS
content:
<b>asterisk</b> [<i>options</i>]<br>To connect to a running instance: <b>asterisk -r</b><br>To execute a command on a running instance: <b>asterisk -rx "</b><i>command</i><b>"</b><br>To run in console mode: <b>asterisk -c</b>


title: PARAMETERS
content:
<b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to a running <b>Asterisk</b> daemon's console (remote console mode).<br><br><b><b>-rx "</b><i>command</i><b>"</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified <i>command</i> on a running <b>Asterisk</b> instance's console and then exits.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <b>Asterisk</b> in foreground console mode, displaying output directly to the terminal.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <b>Asterisk</b> in the foreground (similar to <b>-c</b>), keeping standard file descriptors open.<br><br><b><b>-v</b>, <b>-vv</b>, <b>-vvv</b>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbose output level for logging and debugging.<br><br><b><b>-d</b>, <b>-dd</b>, <b>-ddd</b>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the debug output level for more detailed diagnostic information.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pipes console output to <i>stdout</i>, useful for scripting and integration.<br><br><b><b>-U</b> <i>user</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the <b>Asterisk</b> daemon process as the specified system <i>user</i> after initialization.<br><br><b><b>-G</b> <i>group</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the <b>Asterisk</b> daemon process as the specified system <i>group</i> after initialization.<br><br><b><b>-C</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate main configuration <i>file</i> (e.g., <i>/etc/asterisk/asterisk.conf</i>).<br><br><b><b>-M</b> <i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate module directory <i>dir</i> for loading dynamic modules.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>Asterisk</b> from backgrounding itself (no backgrounding mode).<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes modules only; does not start the PBX core engine.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command-line options and exits.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>Asterisk</b> version information and exits.<br><br>


title: DESCRIPTION
content:
<b>Asterisk</b> is a free and open-source software framework for building communications applications. It transforms an ordinary computer into a powerful communications server, powering IP PBX systems, VoIP gateways, conference servers, and custom solutions for small businesses, large enterprises, and call centers. <br>It handles core telephony functions such as calls, voicemail, conferencing, and call queues, integrating with diverse telephony protocols including <b>SIP</b>, <b>IAX</b>, <b>H.323</b>, and traditional <b>PRI</b> lines. <br><b>Asterisk</b> supports both traditional PSTN (Public Switched Telephone Network) and modern VoIP protocols, enabling it to bridge communication between them seamlessly. Users can create custom dial plans using its built-in scripting language, <i>AEL</i> (Asterisk Extension Language), or through external applications via <i>AMI</i> (Asterisk Manager Interface) or <i>AGI</i> (Asterisk Gateway Interface). Widely adopted globally, <b>Asterisk</b> is maintained by Digium (a Sangoma company) and provides a robust, flexible platform for voice, video, and messaging services.


title: CAVEATS
content:
<b>Asterisk</b> is a sophisticated, enterprise-grade communications system, not a simple shell utility. Its effective deployment and management require a solid understanding of telecommunications concepts, networking, and its extensive configuration files. <br>It can be resource-intensive, particularly under heavy call loads, demanding careful planning for system resources. <br>Proper security configuration is absolutely critical to prevent unauthorized access, toll fraud, and other vulnerabilities inherent in a telephony system. <br>It typically runs as a background daemon service, managed by <i>systemd</i> or traditional <i>init</i> scripts, rather than being invoked directly for daily operations.


title: INTERNAL CLI COMMANDS
content:
Once connected to the <b>Asterisk</b> console (typically via <b>asterisk -r</b>), users interact with the PBX using a rich set of internal CLI commands. These commands allow for real-time monitoring, troubleshooting, and dynamic configuration adjustments. Examples include <b>core show channels</b>, <b>dialplan reload</b>, <b>pjsip show endpoints</b>, and numerous others organized by module or function.


title: CONFIGURATION FILES
content:
<b>Asterisk</b>'s operational behavior is primarily defined by a collection of inter-related text-based configuration files, usually located in <i>/etc/asterisk/</i>. Key configuration files include <i>asterisk.conf</i> (global settings), <i>sip.conf</i> (SIP configurations), <i>extensions.conf</i> (the dialplan), <i>voicemail.conf</i>, and many others, each controlling specific aspects of the PBX functionality.


title: INTEGRATION INTERFACES (AGI/AMI)
content:
<b>Asterisk</b> offers powerful interfaces for external application integration: <br><i>AGI</i> (<b>Asterisk Gateway Interface</b>) enables external programs to control call flow within the dialplan, allowing for complex, dynamic call handling. <br><i>AMI</i> (<b>Asterisk Manager Interface</b>) is a TCP-based interface used by client applications to send commands to <b>Asterisk</b> and receive events, facilitating remote control, monitoring, and CRM integration.


title: HISTORY
content:
<b>Asterisk</b> was originally created by Mark Spencer in 1999 for his company, <i>Digium</i>. Initially developed as a proprietary software PBX system for Linux, it was quickly open-sourced, a move that significantly spurred the growth and innovation in the open-source telephony and Voice over IP (VoIP) sectors. <br>Its modular architecture and extensible design allowed it to rapidly evolve and support a wide range of telephony protocols and features. <b>Asterisk</b> became the flagship product for <i>Digium</i>, which was later acquired by <i>Sangoma Technologies Corporation</i>. Its impact on unified communications has been profound, making sophisticated telephony capabilities accessible to a broad audience and continuously adapting to new communication technologies and standards.


title: SEE ALSO
content:
<b>sipcli(1)</b>, <b>iax(1)</b>, <b>rtpengine(8)</b>, <b>opensips(8)</b>, <b>kamailio(8)</b>, <b>freeswitch(8)</b>, <b>sshd(8)</b>


title: SYNOPSIS
content:
<b>astyle</b> [<i>options</i>] [<i>file ...</i>]<br><b>astyle</b> [<i>options</i>] &lt; <i>input_file</i> &gt; <i>output_file</i>


title: PARAMETERS
content:
<b>--style=<i>{style}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the indentation style. Common styles include <i>allman</i>, <i>kr</i>, <i>gnu</i>, <i>java</i>, <i>attach</i>, etc.<br><br><b>--indent=<i>{type}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies indentation type and size, e.g., <i>spaces=4</i>, <i>tab=4</i>, <i>force-tab=4</i>.<br><br><b>--brackets=<i>{type}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls bracket placement, e.g., <i>allman</i>, <i>attach</i>, <i>linux</i>, <i>stroustrup</i>, <i>bsd</i>.<br><br><b>--pad-oper</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds space padding around operators (e.g., <i>a = b</i> instead of <i>a=b</i>).<br><br><b>--unpad-paren</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes space padding around parentheses (e.g., <i>(a)</i> instead of <i>( a )</i>).<br><br><b>--add-brackets</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds brackets to all <i>if</i>, <i>for</i>, <i>while</i>, and <i>do</i> statements.<br><br><b>--suffix=<i>{suffix}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the backup file suffix (default: <i>.orig</i>). Use <i>--suffix=none</i> to disable backups.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not modify files; only print formatted output to the console.<br><br><b>--formatted</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints formatted files to console, but does not modify the original files.<br><br><b>--recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively processes files in subdirectories.<br><br><b>--exclude=<i>{name}</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes files or directories matching the specified name.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints progress messages to the console.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with all available options.<br><br>


title: DESCRIPTION
content:
<i><b>astyle</b></i> (Artistic Style) is an open-source, fast, and configurable source code formatter for C, C++, C#, and Java. It automatically reformats source code files according to a user-defined style, ensuring consistency and readability across projects.<br><br>It supports various indentation styles (e.g., K&R, Allman, GNU, Whitesmith, Pico) and offers extensive options for controlling bracket placement, padding around operators and parentheses, line breaks, and other stylistic elements. <i><b>astyle</b></i> can process single files, multiple files, or recursively format entire directories. It's often used in development workflows to maintain coding standards. By default, it creates backup files with a <i>.orig</i> extension before modifying the original.


title: CAVEATS
content:
<i><b>astyle</b></i> modifies files in place by default, creating <i>.orig</i> backups. Always back up your code or use <i>--dry-run</i> or <i>--formatted</i> first, especially in production environments.<br><br>It's a stylistic formatter and will not fix syntax errors or logical issues in your code. While highly configurable, achieving very specific or unusual formatting styles might require intricate option combinations, and it may not perfectly handle all edge cases or highly unconventional code constructs.


title: CONFIGURATION FILES
content:
<i><b>astyle</b></i> can read options from a configuration file, typically named <i>.astylerc</i>. This file can be located in the user's home directory or the current working directory, allowing users to define persistent style settings without typing long command-line arguments every time.


title: PIPES AND STANDARD I/O
content:
<i><b>astyle</b></i> can be effectively used with pipes, taking source code input from <i>stdin</i> and sending the formatted output to <i>stdout</i>. This capability makes it very versatile for integration into scripts, IDEs, or automated build systems.


title: HISTORY
content:
Artistic Style (<i><b>astyle</b></i>) was initially created by Tal Davidson and first released around 2000. Its development was driven by the need for a highly configurable and cross-platform code formatter for C, C++, and Java. It quickly gained popularity due to its flexibility and the ability to enforce consistent coding styles across various projects and development teams. It has been continuously maintained and updated by a community of contributors over the years, adding support for new languages like C# and expanding its array of formatting options.


title: SYNOPSIS
content:
<b>at</b> [<i>-q queue</i>] [<i>-f file</i>] [<i>-m</i>] <i>TIME</i><br><b>at</b> <i>-l</i> [<i>-q queue</i>]<br><b>at</b> <i>-r job</i> [<i>job...</i>]<br><b>at</b> <i>-c job</i> [<i>job...</i>]<br><i>TIME</i> can be specified in many formats, e.g., "now + 5 minutes", "10:00 PM tomorrow", "next Monday", "12/25/2024".


title: PARAMETERS
content:
<b><i>TIME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The time at which the job should be executed. This can be an absolute time (e.g., "10:30 AM 12/25/2024") or a relative time (e.g., "now + 2 hours").<br><br><b><i>-q queue</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the queue to use for the job. Queues are single characters, 'a' through 'z'. Queue 'a' is the default. Queue 'b' is reserved for <i>batch</i> jobs. Jobs in queues with a lower letter run with higher priority.<br><br><b><i>-f file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the job commands from the specified <i>file</i> instead of standard input. This is useful for scheduling existing scripts.<br><br><b><i>-m</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mails the user (or the user specified by the MAILTO environment variable) even if the job produces no output. By default, mail is sent only if the job produces standard output or standard error.<br><br><b><i>-l</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the jobs scheduled for the current user. This is an alias for the <i>atq</i> command.<br><br><b><i>-r job</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the specified <i>job</i> (identified by its job number) from the queue. This is an alias for the <i>atrm</i> command.<br><br><b><i>-c job</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the contents (commands) of the specified <i>job</i> to standard output. This allows viewing what a scheduled job will execute.<br><br><b><i>-V</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number of the <i>at</i> utilities to standard error.<br><br>


title: DESCRIPTION
content:
<i>at</i> is a command-line utility used to schedule commands or scripts to be executed only once at a specified future time. It's ideal for tasks that need to run at a particular moment but are not recurring. Unlike <i>cron</i>, which handles repetitive tasks, <i>at</i> manages single-shot jobs. When <i>at</i> is invoked, it reads commands from standard input or a specified file, and these commands are then stored in a queue managed by the <b>atd</b> daemon. The <b>atd</b> daemon continuously monitors this queue and executes the jobs at their designated times. The <i>at</i> command allows users to specify various time formats, ranging from simple hours (e.g., "now + 5 minutes") to specific dates and times (e.g., "10:00 AM tomorrow"). By default, output from the scheduled commands is mailed to the user, providing notification of job completion and any output.


title: CAVEATS
content:
The <b>atd</b> daemon must be running on the system for <i>at</i> jobs to be executed.<br>User permissions are controlled by the <i>/etc/at.allow</i> and <i>/etc/at.deny</i> files. If <i>/etc/at.allow</i> exists, only users listed within it can use <i>at</i>. If <i>/etc/at.allow</i> does not exist, but <i>/etc/at.deny</i> does, then users listed in <i>/etc/at.deny</i> cannot use <i>at</i>. If neither file exists, generally only the root user can use <i>at</i>, though some distributions might default to allowing all users.<br>Jobs scheduled with <i>at</i> inherit the environment variables (like PATH, HOME, etc.) that were active when the <i>at</i> command was invoked, not the user's current environment at the time of execution. Jobs are typically executed with <i>/bin/sh</i> unless a shebang (e.g., <i>#!/bin/bash</i>) is specified within the job's script.


title: COMMON TIME FORMATS
content:
<i>at</i> offers great flexibility in specifying execution times:<br><b>Absolute Time:</b> <i>HH:MM</i> (e.g., "09:30", "15:00"), <i>HH:MM AM|PM</i> (e.g., "3 PM", "10:00 AM").<br><b>Keywords:</b> <i>midnight</i>, <i>noon</i>, <i>teatime</i> (16:00).<br><b>Relative Time:</b> <i>now + count time-units</i> (e.g., "now + 5 minutes", "next hour", "tomorrow", "next week", "next monday", "now + 2 days").<br><b>Date:</b> <i>month-name day [year]</i> (e.g., "Dec 25", "Jan 1 2025"), <i>MMDD[YY]</i>, <i>MM/DD/[YY]</i>, <i>DD.MM.[YY]</i> (e.g., "1225", "12/25/24", "25.12.2024").


title: INPUTTING JOB COMMANDS
content:
After typing <i>at TIME</i> and pressing Enter, <i>at</i> will display an <i>at></i> prompt. You can then type the commands you want to execute, one per line. To signal the end of the input, press <b>Ctrl+D</b> on an empty line. Alternatively, you can use the <i>-f</i> option to specify a file containing the commands, avoiding interactive input: <i>at -f /path/to/script.sh TIME</i>.


title: JOB IDENTIFICATION
content:
Upon successful submission, <i>at</i> provides a job ID (e.g., "job 1234567890.a"). This ID is crucial for managing the job later, especially when using <i>at -c</i> to view its contents or <i>at -r</i> to remove it from the queue.


title: HISTORY
content:
The <i>at</i> command is a fundamental utility in Unix-like operating systems, providing a simple yet powerful mechanism for scheduling one-off tasks. It has been a standard component of Unix distributions for many decades, reflecting a design philosophy of creating small, focused tools. The <i>at</i> utilities package typically includes the <i>atd</i> daemon, <i>atq</i> (for querying jobs), and <i>atrm</i> (for removing jobs), forming a cohesive system for asynchronous job execution.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As <b>atc</b> is not a standard command, it has no predefined parameters or options.<br><br>


title: DESCRIPTION
content:
The command <b>atc</b> is <I>not a standard utility</I> found in most common Linux distributions. <br> <br> When users attempt to execute <b>atc</b> on a typical Linux system, they will almost certainly receive a 'command not found' error, indicating that it is not part of the core set of commands shipped with operating systems like Ubuntu, Fedora, Debian, or CentOS. <br> <br> It is frequently a source of confusion, as its name closely resembles standard job scheduling commands such as <b>at</b> (for scheduling one-time jobs), <b>atq</b> (for listing pending jobs), and <b>atrm</b> (for removing pending jobs). <br> <br> If <b>atc</b> exists on a particular system, its presence is almost certainly due to one of the following reasons: <br> <br> 1. A <I>typo</I> for one of the standard <b>at</b> family commands. <br> 2. A <I>custom alias</I> or shell function defined by a user or system administrator. <br> 3. A <I>custom script</I> or executable installed as part of a specific, non-standard software package or project (e.g., related to 'Air Traffic Control' simulations, a very niche development tool, or an internal enterprise application). <br> <br> In such custom cases, the functionality of <b>atc</b> would be entirely dependent on its specific implementation and would not conform to any general standard.


title: CAVEATS
content:
Users attempting to execute <b>atc</b> on a typical Linux system will almost certainly receive a 'command not found' error. Its existence and functionality would be entirely dependent on a custom installation, an alias, or a specific software package not part of standard distribution utilities. It is often confused with standard commands like <b>at</b>, <b>atq</b>, or <b>atrm</b>, which handle job scheduling.


title: POTENTIAL INTERPRETATIONS AND USE CASES
content:
Given that <b>atc</b> is not a standard command, its appearance in any context usually points to: <br> <br> <I>1. Typographical Error:</I> The most common scenario is a mistake for <b>at</b>, <b>atq</b>, or <b>atrm</b>. <br> <I>2. Custom Script or Alias:</I> A user or system administrator might have created a shell script named <b>atc</b> to automate a specific task, or an alias to shorten a longer command. <br> <I>3. Niche Software:</I> It could be an executable provided by a very specific software application (e.g., an 'Air Traffic Control' simulator, a unique data processing tool, or a proprietary system utility) not common to general Linux environments. <br> <br> To determine its function on a system where it seemingly exists, one would need to check environment variables (like PATH), examine shell aliases, or inspect the contents of any script or binary found by <code>which atc</code>.


title: HISTORY
content:
There is no documented history for a standard <b>atc</b> Linux command, as it does not exist as a widely distributed utility or part of core Linux system tools. Any instances of <b>atc</b> would be specific to custom scripts, user-defined aliases, or specialized software packages, making a general historical account impossible.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <i>help</i> information and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>Atom</i> version number and exits.<br><br><b><b>-n</b>, <b>--new-window</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a <i>new empty window</i> instead of reusing an existing <i>Atom</i> window.<br><br><b><b>-a</b>, <b>--add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds the specified <i>path(s)</i> to the last active <i>Atom</i> window. If no window is open, it opens a new one.<br><br><b><b>--safe</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches <i>Atom</i> in <i>safe mode</i>, which means no packages are loaded and the init script is not run. Useful for troubleshooting.<br><br><b><b>--dev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <i>Atom</i> in <i>development mode</i>, which might include specific development settings or enable debug tools.<br><br><b><b>--wait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the <i>atom</i> command to <i>wait</i> until all specified files are closed in the editor before the command exits. Useful for integration with version control systems or scripts.<br><br><b><b>--clear-window-state</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears any <i>saved window state</i>, such as open tabs or project folders, before launching <i>Atom</i>.<br><br><b><b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Keeps the <i>Atom</i> process in the <i>foreground</i>, preventing it from detaching and returning control to the terminal.<br><br>


title: DESCRIPTION
content:
The <b><br>atom</b> command launches the <i>Atom</i> text editor, an open-source, cross-platform code editor developed by <i>GitHub</i>. Built using the <i>Electron</i> framework, which combines <i>Node.js</i>, <i>Chromium</i>, and web technologies, <i>Atom</i> offers a highly customizable and 'hackable' environment. Users can tailor its appearance and functionality through themes and thousands of community-contributed packages.<br><br>Key features include intelligent auto-completion, a flexible file system browser, multiple panes for side-by-side editing, a fuzzy finder for quick file navigation, snippets, and a built-in <i>Markdown</i> preview. Despite its popularity and innovative approach to editor design, <i>Atom</i>'s official development ceased in 2022, and it is now largely in a maintenance or archived state.


title: CAVEATS
content:
<i>Atom</i>, being an <i>Electron</i>-based application, can be <i>resource-intensive</i>, potentially consuming more <i>RAM</i> and <i>CPU</i> compared to native editors. Its startup time might also be slower. More critically, official development for <i>Atom</i> has ceased; it was <i>archived in December 2022</i>, meaning it no longer receives active feature development or significant updates, though community forks or efforts might exist.


title: <I>ATOM PACKAGE MANAGER</I> (<B>APM</B>)
content:
<i>Atom's</i> extensibility is largely powered by its package ecosystem. The <b>apm</b> command-line tool (<i>Atom Package Manager</i>) is used to install, manage, update, and publish packages and themes. It allows users to easily add new functionalities or change the editor's appearance, significantly enhancing <i>Atom's</i> 'hackable' nature.


title: HISTORY
content:
<i>Atom</i> was initially developed by <i>GitHub</i> and publicly released in <i>2014</i>. It quickly gained traction due to its innovative use of web technologies via the <i>Electron</i> framework, allowing extensive customization through <i>HTML</i>, <i>CSS</i>, and <i>JavaScript</i>. In <i>2015</i>, <i>Atom</i> was open-sourced under the <i>MIT License</i>. Following <i>Microsoft's</i> acquisition of <i>GitHub</i>, <i>Atom's</i> future became uncertain. On <i>June 8, 2022</i>, <i>GitHub</i> announced the deprecation of <i>Atom</i>, citing a shift in focus and the rise of other <i>Electron</i>-based editors like <i>VS Code</i>. The final archival of the project occurred on <i>December 15, 2022</i>, marking the end of its active development.


title: SEE ALSO
content:
<b>code</b>(1) - <i>Visual Studio Code</i>, <b>subl</b>(1) - <i>Sublime Text</i>, <b>vim</b>(1) - <i>Vi Improved</i>, <b>emacs</b>(1) - <i>GNU Emacs</i>


title: SYNOPSIS
content:
<I>atool</I> [<I>OPERATION</I>] [<I>OPTIONS</I>] <I>archive_file</I> [<I>files...</I>]<br><br>Examples:<br><I>atool</I> <B>-x</B> <I>archive.tar.gz</I><br><I>atool</I> <B>-l</B> <I>archive.zip</I><br><I>atool</I> <B>-c</B> <I>new_archive.zip</I> <I>file1</I> <I>file2</I> <I>directory/</I><br><I>atool</I> <B>-t</B> <I>archive.rar</I>


title: PARAMETERS
content:
<b>-x, --extract</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts the contents of the specified archive file.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the contents of the archive without extracting.<br><br><b>-c, --create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new archive from the specified files or directories.<br><br><b>-t, --test</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tests the integrity of the archive file.<br><br><b>-a, --add</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds files to an existing archive (support depends on format).<br><br><b>-d, --delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes files from an existing archive (support depends on format).<br><br><b>-O, --output-directory=<dir></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where archive contents should be extracted.<br><br><b>-k, --keep</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When extracting, keeps partially extracted or broken files.<br><br><b>-F, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces overwrite of existing files without prompting during extraction.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides more detailed output during operations.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, useful for scripting.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command usage and options.<br><br>


title: DESCRIPTION
content:
<i>atool</i> is a powerful command-line utility designed to simplify archive management on Linux systems. Acting as a front-end wrapper, it provides a <i>unified interface</i> for handling various archive formats such as .zip, .tar, .gz, .bz2, .xz, .rar, .7z, and more. <br><br>Instead of requiring users to remember specific commands and options for different archive tools (like <i>tar</i>, <i>unzip</i>, or <i>unrar</i>), <i>atool</i> automatically detects the archive type and invokes the correct underlying utility. This makes common operations like extracting, listing, creating, and testing archives significantly easier and more consistent. It abstracts away the complexity, allowing users to perform operations with a single, intuitive set of commands. <i>atool</i> streamlines workflow for anyone frequently dealing with compressed files.


title: CAVEATS
content:
<i>atool</i> depends on the presence of the underlying archive utilities (e.g., <i>tar</i>, <i>unzip</i>, <i>unrar</i>) on the system. If a specific archiver is missing, <i>atool</i> will not be able to handle its corresponding format. <br><br>Some operations, such as adding or deleting files from an archive, are not universally supported across all formats (e.g., adding to <i>.gz</i> is not possible). Performance might have a slight overhead compared to direct calls to native tools, but this is usually negligible.


title: AUTOMATIC FORMAT DETECTION
content:
<i>atool</i> intelligently identifies the archive format based on its file extension or internal signatures, ensuring the correct underlying utility is invoked without manual specification by the user. This is one of its primary strengths, simplifying archive operations significantly.


title: INTERACTIVE MODE
content:
For certain operations, such as extracting password-protected archives or dealing with conflicts, <i>atool</i> may prompt the user for necessary input (e.g., passwords or overwrite confirmation), providing a user-friendly interactive experience.


title: HISTORY
content:
<i>atool</i> is part of the <I>atool</I> package (originally associated with `apack`), developed by Oskar Skoog. It was created to provide a simpler, more intuitive, and unified command-line interface for handling various archive formats, reducing the need for users to memorize numerous command-line flags and tool-specific syntax for different archiving utilities. Its design emphasizes convenience and automatic format detection, contributing to its popularity among Linux users seeking streamlined archive management.


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only active (CPU, disk, network) processes/threads.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the full command line of processes.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show disk-related activity, including per-disk and per-process I/O.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show memory and swap space usage, including per-process memory details.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show network interface and TCP/UDP activity, including per-process network traffic.<br><br><b>-P <I>category</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select specific resource categories to display (e.g., <i>CPU</i>, <i>MEM</i>, <i>DSK</i>, <i>NET</i>, <i>PRC</i>, <i>ALL</i>).<br><br><b>-r <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read raw performance data from a previously recorded <b>atop</b> file (e.g., <i>/var/log/atop/atop_YYYYMMDD</i>).<br><br><b>-S</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show process and thread statistics in CSV (Comma Separated Values) format, suitable for scripting or data analysis.<br><br><b>-y</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show individual threads in the process list, providing a more granular view of resource consumption.<br><br><b><I>interval</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The interval in seconds between samples (updates) of the displayed information.<br><br><b><I>samples</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The number of samples to collect before exiting, useful for one-shot data collection.<br><br>


title: DESCRIPTION
content:
<b>atop</b> is an advanced interactive monitor for Linux systems that provides detailed insights into system resource utilization. Unlike traditional tools like <i>top</i>, <b>atop</b> offers a comprehensive view by reporting on CPU, memory, disk, network, and process activity at both a global and a per-process/per-thread level.<br><br>It highlights critical resources that are nearing saturation and can display resource consumption by individual threads within a process. A key feature is its ability to log raw performance data to a file, enabling post-mortem analysis of system behavior over time. This makes <b>atop</b> an invaluable tool for identifying performance bottlenecks, troubleshooting system issues, and understanding long-term trends in resource usage.


title: CAVEATS
content:
For full functionality, especially detailed per-process disk and network statistics, <b>atop</b> often requires root privileges. Continuous logging of data can consume significant disk space over time, depending on the logging interval and system activity. Not all metrics may be available on all kernel versions or system configurations.


title: INTERACTIVE DISPLAY
content:
While running, <b>atop</b> allows users to dynamically switch between different views of system activity by pressing various keys. For example, 'g' for generic, 'm' for memory, 'd' for disk, 'n' for network, 'u' for users, and 'p' for processes, allowing for quick focus on specific resource types.


title: LOGGING AND ANALYSIS WITH ATOPSAR
content:
When configured, <b>atop</b> automatically logs system activity to files (typically in <i>/var/log/atop/</i>). The companion command, <i>atopsar</i>, can then be used to generate summary reports or extract specific statistics from these log files, similar to how <i>sar</i> processes <i>sysstat</i> data.


title: HISTORY
content:
Developed by Gerlof van Rooijen (ATComputing), <b>atop</b> was created to address the limitations of existing system monitoring tools by offering more detailed, per-process/per-thread metrics and, crucially, robust logging capabilities. It gained popularity for its ability to go beyond real-time monitoring to provide historical analysis, making it a powerful diagnostic tool for complex performance issues.


title: SYNOPSIS
content:
<b>atoum</b> [<i>options</i>] [<i><path/to/test(s)></i>]<br><i><br>Note:</i> If installed via Composer locally, the executable is typically <i>vendor/bin/atoum</i>. If globally installed, it might be directly <i>atoum</i>.


title: PARAMETERS
content:
<b>--test-file <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a single test file to execute.<br><br><b>--test-dir <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory containing test files to execute.<br><br><b>--bootstrap-file <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a bootstrap file before running tests, useful for environment setup.<br><br><b>--directories <path,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of directories to scan for tests.<br><br><b>--files <path,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of specific files to scan for tests.<br><br><b>--namespaces <namespace,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters tests by specific namespaces.<br><br><b>--tags <tag,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters tests by specific tags defined in test methods or classes.<br><br><b>--methods <method,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters tests by specific method names within test classes.<br><br><b>--loop</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continuously runs tests, re-executing them whenever source or test files change.<br><br><b>--report-xml <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an XML report of the test results at the specified path.<br><br><b>--report-html <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a human-readable HTML report of the test results at the specified path.<br><br><b>--coverage-xml <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an XML code coverage report (e.g., Cobertura format).<br><br><b>--coverage-html <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a browsable HTML code coverage report.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information and available options for the <b>atoum</b> command.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current <b>atoum</b> framework version.<br><br>


title: DESCRIPTION
content:
<i>atoum</i> is a modern, simple, and intuitive unit testing framework designed specifically for PHP applications. It emphasizes simplicity and expressiveness, allowing developers to write clear and maintainable tests quickly. Unlike other frameworks, <i>atoum</i> aims to provide a very natural syntax for defining test cases, assertions, and mock objects.<br><br>It supports various features essential for robust testing, including code coverage reporting, data providers, and powerful mock object generation. Built entirely in PHP, <i>atoum</i> focuses on providing a frictionless testing experience, making it easier to ensure the quality and reliability of PHP codebases. Its design principles promote isolation and independent test execution, contributing to faster and more reliable test suites.


title: CAVEATS
content:
<b>atoum</b> is a PHP application and therefore requires a PHP interpreter (typically PHP 7.x or newer) installed on the system. It is not a native or core Linux command-line utility but rather an application run from the shell. It is most commonly installed and managed via Composer, PHP's dependency manager, either on a per-project basis or globally. Its primary use case is unit testing for PHP software development, and it is not generally applicable to non-PHP projects.


title: EXTENSIBILITY
content:
<b>atoum</b> is designed with extensibility in mind, allowing developers to easily create custom extensions, assertions, and reports to tailor the testing experience to their specific needs. This modular architecture promotes flexibility and integration with other tools and workflows.


title: TEST ISOLATION
content:
A key philosophy of <b>atoum</b> is test isolation. It ensures that each test runs in its own scope, preventing side effects from one test affecting another. This significantly contributes to the reliability, determinism, and maintainability of test suites, making debugging easier and ensuring consistent results.


title: HISTORY
content:
<b>atoum</b> was created by Frédéric Bouchery and first released in 2010. It emerged as an alternative to existing PHP testing frameworks, aiming for greater simplicity, flexibility, and a more natural, human-readable syntax for writing tests. Its development has focused on providing a user-friendly and highly performant testing environment, gaining popularity within the PHP community for its approach to test isolation and expressive assertion capabilities. It continues to be actively maintained and developed by a dedicated community.


title: PARAMETERS
content:
<b>-q <I>queue</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only the jobs in the specified queue. Queue names are single letters (e.g., 'a' for <I>at</I> jobs, 'b' for <I>batch</I> jobs).<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number of the <b>atq</b> command to standard error.<br><br>


title: DESCRIPTION
content:
The <b>atq</b> command is an essential utility for managing jobs scheduled using the <b>at</b> command. It provides a quick overview of all pending jobs currently residing in the <I>at</I> job queue. <br><br>When executed, <b>atq</b> displays a list of jobs, typically showing the job ID, the scheduled execution date and time, the queue the job belongs to (e.g., 'a' for <I>at</I> jobs, 'b' for <I>batch</I> jobs), and the user who submitted the job. <br><br>This command is crucial for users to verify their scheduled tasks or for administrators to monitor system-wide pending jobs. By default, users can only view their own jobs, while the superuser (root) can inspect all jobs on the system.


title: CAVEATS
content:
Permissions: By default, a non-root user can only list their own <b>at</b> jobs. The superuser (root) can list all jobs from all users.<br><br><I>atd</I> Daemon: For <b>atq</b> to list jobs and for jobs to execute, the <b>atd</b> daemon must be running in the background.<br><br>Output Format: The exact format of the output might vary slightly between different Unix-like systems or versions of the <I>at</I> suite.


title: OUTPUT FORMAT
content:
The typical output of <b>atq</b> consists of several columns: <br><I>Job ID</I>: A unique numerical identifier for the job. <br><I>Execution Date and Time</I>: When the job is scheduled to run. <br><I>Queue</I>: The single-letter queue to which the job belongs (e.g., 'a' for default <I>at</I> jobs, 'b' for <I>batch</I> jobs). <br><I>User</I>: The user who submitted the job.


title: HISTORY
content:
The <b>at</b> suite, including <b>atq</b>, has been a fundamental part of Unix and Unix-like operating systems since their early days. It provides a simple, robust mechanism for scheduling one-time tasks at a specific future time. While more complex job schedulers like <b>cron</b> emerged for recurring tasks, <b>at</b> and its related commands like <b>atq</b> have maintained their role due to their simplicity and directness in handling single, time-sensitive executions. Their design reflects the traditional Unix philosophy of providing small, focused tools.


title: PARAMETERS
content:
<b><i>job</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The job number(s) to be deleted. These numbers are typically obtained from the <b>atq</b> command.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove all jobs owned by the current user. If invoked by the superuser, all jobs on the system will be removed.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version number to standard error.<br><br>


title: DESCRIPTION
content:
<b>atrm</b> is a powerful utility within the Linux `at` scheduling suite, designed specifically for the removal of scheduled tasks. It allows users to delete jobs that have been previously submitted using the <b>at</b> or <b>batch</b> commands before they have a chance to execute. By removing a job from the `at` queue, <b>atrm</b> effectively cancels its future execution, providing essential control over one-time scheduled processes.<br><br>Users can typically delete only their own jobs by providing the specific job number, which can be easily obtained by listing the current queue with the <b>atq</b> command. However, the superuser (root) possesses the capability to remove any user's job from the system-wide queue. The command also supports the <b>-a</b> option, which provides a convenient way to remove all jobs belonging to the current user. When executed as root, <b>atrm -a</b> will purge all pending `at` jobs on the entire system. This makes <b>atrm</b> an indispensable tool for managing and cleaning up the `at` job queue, working in tandem with <b>at</b> (for scheduling) and <b>atq</b> (for listing) to offer a complete solution for one-time task management.


title: CAVEATS
content:
<b>Permissions</b>: Users can only delete their own <b>at</b> jobs unless they are the superuser (root). The superuser can delete jobs belonging to any user.<br><b>Job Numbers</b>: Job numbers are specific to a particular system and can be reused. Always verify the job number with <b>atq</b> before deleting.<br><b>No Confirmation</b>: By default, <b>atrm</b> does not ask for confirmation before deleting jobs, so use it with caution.


title: <I>JOB IDENTIFICATION</I>
content:
Jobs are identified by their job numbers, which are assigned by the <b>at</b> daemon when the job is created. These numbers are unique for active jobs on a given system but are not persistent across reboots or indefinite time; old numbers may be reused. It is crucial to use <b>atq</b> to list current jobs and their corresponding numbers before attempting to delete them with <b>atrm</b>.


title: <I>INTERACTION WITH <B>ATD</B></I>
content:
<b>atrm</b> communicates with the <b>atd</b> daemon (the <b>at</b> scheduler) to request the removal of specified jobs from its internal queue. If <b>atd</b> is not running, <b>atrm</b> may not be able to perform its function, or it might only be able to remove job files directly if it has the necessary permissions and knowledge of the spool directory structure, which is generally not recommended or reliable.


title: HISTORY
content:
<b>atrm</b> is an integral component of the traditional <b>at</b> job scheduling system, which has been a standard feature in Unix-like operating systems for many years. Its purpose has remained consistent: to provide a simple command-line interface for managing (specifically, deleting) one-time scheduled tasks. While <b>cron</b> is more commonly used for recurring tasks, <b>at</b> (and <b>atrm</b>) remains valuable for jobs that need to run only once at a specified future time. Its development has closely tracked the <b>at</b> suite, ensuring seamless management of jobs created by <b>at</b> or <b>batch</b>.


title: PARAMETERS
content:
<b>search [terms...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs an interactive, fuzzy search through your history. This is often invoked via a <b>Ctrl+R</b> keybinding after shell integration.<br><br><b>sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes your local history with the configured Atuin server, enabling history sharing across devices.<br><br><b>init &lt;shell&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the necessary shell integration script for your specific shell (e.g., <b>bash</b>, <b>zsh</b>, <b>fish</b>, <b>nu</b>). This script typically sets up keybindings like <b>Ctrl+R</b>.<br><br><b>import [file]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports history from a specified file, useful for migrating existing shell history into Atuin.<br><br><b>export [file]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports your Atuin history to a specified file.<br><br><b>register</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers a new user account with the Atuin server for history synchronization.<br><br><b>login</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs into an existing Atuin server account to enable history synchronization.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current synchronization status and other Atuin-related information.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help information for the <b>atuin</b> command or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the installed Atuin version.<br><br>


title: DESCRIPTION
content:
<i>atuin</i> is a modern, cross-shell command history manager designed to significantly improve productivity. It replaces the default shell history with a more powerful and user-friendly experience, offering features like a full-text fuzzy search for past commands, synchronization of history across multiple machines (with optional self-hosting), and end-to-end encryption for privacy. By transcending the limitations of traditional shell history, <i>atuin</i> allows users to quickly find, filter, and reuse previously executed commands, making the command line workflow more efficient and intuitive.


title: CAVEATS
content:
Requires shell integration by sourcing the <b>init</b> script in your shell's configuration file. Synchronization relies on a server, either the default public server or a self-hosted instance. While history is end-to-end encrypted, users should be aware of the trust model for the chosen server.


title: SHELL INTEGRATION
content:
To use <i>atuin</i> effectively, you must integrate it with your shell. This typically involves adding <code>eval "$(atuin init &lt;shell_name&gt;)"</code> to your shell's configuration file (e.g., <b>.bashrc</b>, <b>.zshrc</b>, <b>config.fish</b>). This setup usually replaces the default <b>Ctrl+R</b> history search shortcut, allowing <i>atuin</i> to intercept and enhance history search.


title: CONFIGURATION
content:
<i>atuin</i>'s behavior can be extensively customized via a configuration file, typically located at <b>~/.config/atuin/config.toml</b>. This file allows you to set the sync server URL, modify keybindings, customize the interactive search UI, and fine-tune other operational parameters to fit your workflow.


title: HISTORY
content:
<i>atuin</i> was developed by Ellie Huxtable and is written in Rust. It emerged around 2021-2022 as a modern solution to the long-standing limitations of traditional shell history, quickly gaining traction for its robust search, synchronization, and encryption features. It aims to provide a more functional and user-friendly alternative to built-in shell history commands.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>-p</b>, <b>--play</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start playing the current playlist.<br><br><b><b>-q</b>, <b>--quit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quit Audacious.<br><br><b><b>-s</b>, <b>--stop</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop playback.<br><br><b><b>-t</b>, <b>--play-pause</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggle between play and pause.<br><br><b><b>-n</b>, <b>--next</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Play the next track in the playlist.<br><br><b><b>-b</b>, <b>--prev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Play the previous track in the playlist.<br><br><b><b>-f</b>, <b>--fwd</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Seek forward in the current track.<br><br><b><b>-r</b>, <b>--rew</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Seek backward in the current track.<br><br><b><b>-e</b>, <b>--enqueue</b> <i>FILE|URL...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add files or URLs to the playlist without clearing existing entries.<br><br><b><b>--headless</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run Audacious without a graphical user interface, useful for command-line control or background operation.<br><br><b><b>--show-main</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the main application window.<br><br><b><b>--show-list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the playlist window.<br><br><b><b>--show-equalizer</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the equalizer window.<br><br>


title: DESCRIPTION
content:
Audacious is a free and open-source audio player renowned for its low resource usage and extensive feature set. It efficiently supports a wide array of audio formats, including popular ones like MP3, AAC, FLAC, Ogg Vorbis, and WAV, alongside various module formats. Its design philosophy centers on efficiency and speed, making it an excellent choice for users prioritizing performance or running on older hardware. Audacious boasts a highly extensible plugin architecture, allowing users to effortlessly add new codecs, sound effects, visualizations, and output methods. It provides two distinct user interfaces: a modern GTK-based interface and a classic Winamp-like interface, offering flexibility to suit individual user preferences and workflows.


title: CAVEATS
content:
Audacious is primarily designed as a dedicated audio player. While it can handle streaming audio, it generally does not offer comprehensive video playback capabilities or advanced media library management features found in some larger, more generalized media players. Its full functionality is often realized through its plugin system, and some plugins may need to be installed separately depending on your Linux distribution.


title: PLUGIN ARCHITECTURE
content:
Audacious is built around a highly modular plugin system. This system allows for flexible functionality expansion across various categories, including audio codecs (decoders), output drivers (e.g., ALSA, PulseAudio, OSS), sound effects, visualizations, and general-purpose utility plugins. Users can easily enable or disable plugins from the preferences menu, allowing them to tailor the player to their specific needs and minimize unnecessary resource overhead.


title: INTERFACE CUSTOMIZATION
content:
Audacious offers two primary graphical user interface (GUI) modes to cater to different user preferences. The <i>GTK interface</i> provides a more modern, integrated look that often conforms seamlessly with the desktop environment's theme. Alternatively, the <i>Winamp-like interface</i> (also known as the 'classic' or 'skinned' interface) meticulously mimics the appearance and behavior of the iconic Windows media player Winamp, enabling users to apply custom skins for a nostalgic or highly personalized aesthetic.


title: HISTORY
content:
Audacious was forked from <i>XMMS2</i> in 2005. The fork's primary goal was to create a more stable and feature-rich audio player while preserving the lightweight nature and skinnable interface reminiscent of the original <i>XMMS</i> (X Multimedia System). <i>XMMS</i> was a highly popular Winamp-like player for Unix-like systems. Audacious's developers aimed to improve upon the codebase, enhance the user experience, and focus on a robust plugin architecture and efficient resource usage, effectively serving as a spiritual successor to the beloved <i>XMMS</i> for many Linux audio enthusiasts.


title: SEE ALSO
content:
<i>cmus(1)</i>: A lightweight, ncurses-based console music player., <i>mpv(1)</i>: A free, open-source, and cross-platform media player that supports a wide variety of media file formats, including audio and video., <i>vlc(1)</i>: A popular, cross-platform multimedia player and framework known for playing most multimedia files, DVDs, Audio CDs, VCDs, and various streaming protocols., <i>rhythmbox(1)</i>: An audio player for Linux that plays and organizes digital music, designed to work well with GNOME.


title: SYNOPSIS
content:
<b>audit2allow</b> [<i>OPTIONS</i>] [<i>FILENAME...</i>]<br>Example usage:<br><b>audit2allow</b> <b>-a</b><br><b>audit2allow</b> <b>-a -M</b> <i>mycustommodule</i><br><b>audit2allow</b> <b>-i</b> <i>/path/to/audit.log</i>


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads audit messages from the active system audit log (<I>/var/log/audit/audit.log</I>).<br><br><b>-w</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the generated policy module to the current directory after compilation. Requires the -M option.<br><br><b>-M <module_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name for the new <I>SELinux</I> policy module. Used in conjunction with -w to create a loadable module.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the rules that are currently allowed by the existing <I>SELinux</I> policy, useful for debugging or policy analysis.<br><br><b>-R</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables reading existing <I>SELinux</I> rules from the current policy, treating all denials as new. Useful for a fresh start.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates rules that include `dontaudit` or `allow` statements based on specific interface calls, often for targeted debugging.<br><br><b>-i <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads audit messages from the specified input file instead of standard input or the default audit log.<br><br><b>-o <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the generated <I>SELinux</I> type enforcement rules to the specified output file instead of standard output.<br><br><b>-r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates rules specifically for the `root` <I>SELinux</I> context (`root_t`), often used for system-level issues.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates rules specifically for the `sysadm_t` <I>SELinux</I> context, relevant for administrative tasks.<br><br><b>-t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates rules specifically for the `unconfined_t` <I>SELinux</I> context, for processes running without specific confinement.<br><br><b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates rules specifically for the `user_t` <I>SELinux</I> context, for user-initiated processes.<br><br>


title: DESCRIPTION
content:
<i>audit2allow</i> is a utility that assists System Administrators in creating custom <I>SELinux</I> (Security-Enhanced Linux) policy rules. Its primary function is to parse <I>AVC</I> (Access Vector Cache) denial messages found in the system's audit logs, typically located at <I>/var/log/audit/audit.log</I>. When an application or process is denied access by <I>SELinux</I> due to a missing policy rule, an <I>AVC</I> denial is logged. <i>audit2allow</i> analyzes these denials and suggests corresponding <I>SELinux</I> allow rules that, if added to the policy, would permit the previously denied operation.<br><br>It can output these suggested rules to standard output, a file, or directly compile them into a local policy module (`.pp` file) which can then be loaded into the kernel. While a powerful tool for simplifying policy development, it requires careful review of the generated rules to prevent creating overly permissive or insecure policies, as it only addresses specific denials and might not capture the full context of the required permissions. It's often used as a first step in debugging <I>SELinux</I> issues or developing new custom policies for applications.


title: CAVEATS
content:
<i>audit2allow</i> is a powerful debugging and policy development tool, but it should be used with caution.<br><b>Overly Permissive Policies:</b> Automatically generating policy rules from audit logs can lead to overly permissive policies. It addresses only the specific denial that occurred, potentially granting broader access than strictly necessary. Always review the generated rules carefully before incorporating them into your <I>SELinux</I> policy.<br><b>Context Dependency:</b> The generated rules are based on the immediate context of the denial. If the underlying issue is incorrect file contexts or labeling, `<i>audit2allow</i>` might generate rules that workaround the symptom rather than address the root cause.<br><b>Incremental Usage:</b> It is best used iteratively. Apply a small set of generated rules, test, and then repeat the process if further denials occur, rather than trying to resolve all issues at once.<br><b>Not a Replacement for Understanding:</b> It simplifies policy creation but doesn't replace the need for understanding <I>SELinux</I> concepts and best practices for secure policy design.


title: TYPICAL WORKFLOW
content:
The most common workflow for using `<i>audit2allow</i>` involves:<br>1. Reproducing the issue that causes <I>SELinux</I> denials.<br>2. Running `<b>audit2allow -a -M</b> <i>mycustommodule</i>` to generate a Type Enforcement (`.te`) file and compile it into a policy package (`.pp`). For instance, `<b>audit2allow -a -M</b> <i>myapp_policy</i>`.<br>3. Reviewing the generated `<i>myapp_policy.te</i>` file for any overly broad or unnecessary rules.<br>4. Loading the compiled policy module into the kernel using `<b>semodule -i</b> <i>myapp_policy.pp</i>`.<br>5. Testing if the issue is resolved. If not, repeating the process.<br>6. Optionally, removing the module with `<b>semodule -r</b> <i>myapp_policy</i>` if the changes are deemed incorrect or should be temporary.


title: OUTPUT FORMAT
content:
When not using the `-w` option to compile a module, `<i>audit2allow</i>` outputs <I>SELinux</I> Type Enforcement (`.te`) language rules. These rules typically define `allow` statements, specifying source and target types, object classes, and permissions. For example:<br>`<i>allow httpd_t self: capability { chown dac_override };</i>`<br>`<i>allow httpd_t var_log_t: file { append open };</i>`<br>This output is human-readable and can be directly used in a `.te` file for custom policy development.


title: HISTORY
content:
<i>audit2allow</i> is a core utility within the <I>policycoreutils</I> package, which provides essential user-space tools for managing <I>SELinux</I>. Its development has been integral to making <I>SELinux</I> more manageable for system administrators. As <I>SELinux</I> gained wider adoption, the need for tools to simplify the creation and debugging of custom policies became apparent. `<i>audit2allow</i>` emerged as a pragmatic solution to translate cryptic <I>AVC</I> denials into actionable policy rules. It has continually evolved to include more options and intelligence for generating policy, although its fundamental purpose remains assisting in the interpretation of audit logs to address permission issues. Its inclusion in major Linux distributions reflects its importance in the <I>SELinux</I> ecosystem.


title: SEE ALSO
content:
semanage(8), sealert(8), restorecon(8), setenforce(8), chcon(1), auditd(8), ausearch(8), auditctl(8), semodule(8)


title: SYNOPSIS
content:
<b>auditctl</b> [<i>options</i>] [<i>rules</i>]<br><br><i>Common Invocation Examples:</i><br><b>auditctl -l</b><br><b>auditctl -D</b><br><b>auditctl -w /etc/passwd -p rwxa -k passwd_changes</b><br><b>auditctl -a always,exit -S open -F success=0 -F path=/var/log/messages -k failed_log_access</b><br><b>auditctl -e 1</b>


title: PARAMETERS
content:
<b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all currently loaded audit rules.<br><br><b><b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete all current audit rules.<br><br><b><b>-A</b> <i>action</i>,<i>scope</i> <i>filter_fields</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add rule to the end of the rule list. <i>action</i> can be 'always' or 'never', <i>scope</i> can be 'exit', 'user', 'task', or 'entry'. <i>filter_fields</i> specify conditions like system calls, uids, paths, etc.<br><br><b><b>-a</b> <i>action</i>,<i>scope</i> <i>filter_fields</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-A</b>, used for adding rules, often for backwards compatibility or preference.<br><br><b><b>-w</b> <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a file/directory watch rule. Monitors events affecting the specified <i>path</i>.<br><br><b><b>-p</b> <i>permissions</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>-w</b> to specify permissions to watch (r=read, w=write, x=execute, a=attribute change). For example, rwxa.<br><br><b><b>-k</b> <i>key_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assign a 'key' to a rule. This key appears in audit logs, making it easier to identify related events or groups of events.<br><br><b><b>-S</b> <i>syscall_name</i> | <i>syscall_number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a system call to audit. Can be a name (e.g., <i>open</i>, <i>execve</i>) or a numerical identifier.<br><br><b><b>-F</b> <i>field</i>=<i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a field filter to a rule. Examples: '<i>uid=0</i>', '<i>arch=b64</i>', '<i>exit=EPERM</i>'.<br><br><b><b>-e</b> <i>state</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable auditing. 0=disable, 1=enable, 2=enable (and lock configuration to prevent further changes).<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report the current status of the audit system (enabled, backlog limit, queue size, etc.).<br><br><b><b>-b</b> <i>backlog_limit</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum number of pending audit events in the kernel's queue before messages are dropped.<br><br><b><b>-m</b> <i>max_messages</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum number of messages that the kernel will send per second to the audit daemon.<br><br><b><b>-r</b> <i>rate_limit</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum rate of messages (in messages/second) that the kernel will send to the audit daemon.<br><br><b><b>-R</b> <i>rules_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read rules from the specified <i>rules_file</i> and load them into the kernel.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore errors when processing rules from a file or command line.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce verbose output during rule processing or status reporting.<br><br>


title: DESCRIPTION
content:
<b>auditctl</b> is the primary command-line utility for interacting with the Linux Audit subsystem in the kernel. It allows system administrators to dynamically load, delete, list, and modify audit rules. These rules dictate which system events (like file access, system calls, or changes to system configurations) are monitored and logged by the <b>auditd</b> daemon.<br><b>auditctl</b> is an essential tool for establishing a robust security posture, enabling compliance with various regulatory standards (e.g., PCI-DSS, HIPAA, SOX), and providing crucial data for forensic analysis. By defining specific audit criteria, administrators can ensure that suspicious activities, policy violations, or critical system state changes are captured, providing an immutable log of events for security investigations and accountability.<br>Rules added with <b>auditctl</b> are volatile and reside only in kernel memory; they are lost upon system reboot unless persistently configured via <i>audit.rules</i> files.


title: CAVEATS
content:
Audit rules loaded via <b>auditctl</b> are <i>volatile</i> and will be lost upon system reboot. For persistent rules, they must be saved in configuration files, typically located in <i>/etc/audit/rules.d/</i>. The order of rules is critical as the kernel processes them sequentially, and the first matching rule is applied. Excessive or poorly defined rules can significantly impact system performance due to increased overhead. Running <b>auditctl</b> requires root privileges (<i>CAP_AUDIT_CONTROL</i> capability).


title: RULE PERSISTENCE
content:
Rules added with <b>auditctl</b> directly modify the kernel's active rule set, which is stored in volatile memory. To ensure your audit rules are reloaded automatically after a system reboot, they must be saved to a persistent configuration file. The standard location for these files is <i>/etc/audit/rules.d/</i> (e.g., <i>/etc/audit/rules.d/audit.rules</i>). The <b>auditd</b> service reads and loads these files during startup.


title: RULE ORDER AND PROCESSING
content:
Audit rules are processed by the kernel in the order they are loaded. Once an event matches a rule, processing for that event typically stops. Therefore, the placement of rules matters: more specific rules should often precede more general ones. This sequential processing can influence which events are logged and how they are handled, making careful rule ordering crucial for effective auditing.


title: HISTORY
content:
The Linux Audit Framework, of which <b>auditctl</b> is a part, was developed to provide a comprehensive and robust auditing system for Linux. It was primarily integrated into the Linux kernel around the 2.6 series, significantly enhancing system security and accountability capabilities. <b>auditctl</b> provides the essential command-line interface for administrators to manage and interact with this kernel-level auditing functionality dynamically.


title: SYNOPSIS
content:
<b>auditd</b> [<b>-f</b>|<b>--foreground</b>] [<b>-l</b>|<b>--loglevel</b> <I>level</I>] [<b>-n</b>|<b>--nostart</b>] [<b>-s</b>|<b>--signal</b> <I>signal</I>] [<b>-v</b>|<b>--version</b>] [<b>-h</b>|<b>--help</b>]


title: PARAMETERS
content:
<b><b>-f</b>, <b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the daemon in the foreground, rather than detaching and running in the background. Useful for debugging or when running under a process supervisor.<br><br><b><b>-l</b>, <b>--loglevel</b> <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level for <i>auditd</i>. Valid levels typically include <i>EMERG</i>, <i>ALERT</i>, <i>CRIT</i>, <i>ERR</i>, <i>WARNING</i>, <i>NOTICE</i>, <i>INFO</i>, and <i>DEBUG</i>. Higher levels produce more verbose output.<br><br><b><b>-n</b>, <b>--nostart</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs syntax checks on configuration files but does not start the daemon. Useful for validating configurations before a full restart.<br><br><b><b>-s</b>, <b>--signal</b> <I>signal</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a specified signal to a running <i>auditd</i> daemon. Common signals include <i>reload</i> (for reloading configuration), <i>rotate</i> (for forcing log rotation), <i>resume</i> (for resuming logging), and <i>suspend</i> (for pausing logging).<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <i>auditd</i> daemon and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message explaining command-line options and exits.<br><br>


title: DESCRIPTION
content:
<i>auditd</i> is the user-space daemon component of the Linux Audit system. Its primary role is to collect audit events generated by the Linux kernel's audit subsystem and write them to disk in log files. These events can include system calls, file access attempts (read, write, execute), network connections, user logins/logouts, changes to configuration files, and other security-relevant activities.<br><br>The daemon receives events from the kernel in real-time, processes them, and then writes them to a designated log file, typically <i>/var/log/audit/audit.log</i>. It is crucial for maintaining a comprehensive audit trail, which is essential for security monitoring, forensic analysis, compliance with regulatory standards (e.g., PCI DSS, HIPAA, SOX), and identifying potential security breaches or policy violations.<br><br><i>auditd</i> works in conjunction with other tools like <i>auditctl</i> (to define audit rules for the kernel), and <i>ausearch</i> and <i>aureport</i> (to query and report on the collected log data). It is highly configurable via <i>/etc/audit/auditd.conf</i>, allowing administrators to define logging levels, log file rotation, and other operational parameters.


title: CAVEATS
content:
<b>Performance Impact:</b> Extensive audit rules or high system activity can lead to noticeable performance overhead due to increased I/O and processing.<br><br><b>Configuration Complexity:</b> Effective use requires careful configuration of audit rules via <i>auditctl</i>, which can be complex to master. Misconfigured rules can lead to excessive logging or missed critical events.<br><br><b>Log Management:</b> Audit logs can grow very large rapidly. Proper log rotation (configured in <i>auditd.conf</i> or via <i>logrotate</i>) and archiving strategies are essential to prevent disk exhaustion.<br><br><b>Kernel Dependency:</b> <i>auditd</i> relies on the Linux kernel's audit subsystem. If the kernel audit module is not loaded or properly configured, <i>auditd</i> will not function correctly.<br><br><b>Single Instance:</b> Only one instance of <i>auditd</i> should run at a time to prevent conflicts and ensure consistent logging.


title: CONFIGURATION FILES
content:
The primary configuration file for <i>auditd</i> is <b>/etc/audit/auditd.conf</b>. This file controls the daemon's operational parameters, such as the log file location, log format, log rotation policy, disk space warnings, and action to take upon disk full or kernel queue overflow. Audit rules, which dictate what events the kernel should monitor, are typically defined in <b>/etc/audit/rules.d/audit.rules</b> (or directly via <i>auditctl</i>). These rules are loaded by <i>auditctl</i>, usually at boot time, to configure the kernel's audit subsystem.


title: LOG FILES
content:
By default, <i>auditd</i> writes audit events to <b>/var/log/audit/audit.log</b>. The log files are structured in a standardized format, with each event containing a unique event ID, timestamp, and various fields describing the audited activity (e.g., user, process, syscall, file path, success/failure). Proper management of these logs, including regular rotation, archiving, and offloading to a centralized log management system, is critical for security and compliance.


title: INTERACTION WITH THE KERNEL
content:
<i>auditd</i> operates by communicating with the Linux kernel's audit subsystem. The kernel, based on rules loaded by <i>auditctl</i>, generates audit events for monitored activities. These events are then sent to a kernel buffer, from which <i>auditd</i> reads them. This design ensures that even if <i>auditd</i> crashes or is stopped, the kernel continues to buffer events (up to its configurable limit), minimizing data loss. Once <i>auditd</i> resumes, it retrieves buffered events and writes them to disk.


title: HISTORY
content:
<i>auditd</i> is a core component of the Linux Audit Project, which began with the goal of providing a comprehensive, CAPP (Controlled Access Protection Profile) compliant auditing system for the Linux operating system. Its development was driven by the need for robust security event logging, especially in environments requiring strict regulatory compliance (e.g., Common Criteria).<br><br>The project aimed to integrate deep kernel-level auditing capabilities with user-space tools for configuration, collection, analysis, and reporting. <i>auditd</i> serves as the central collection point in this architecture, evolving over the years to handle increasing system complexity and security demands. It has been a standard part of most major Linux distributions for many years, continuously refined to improve performance, reliability, and ease of use in enterprise and high-security contexts.


title: SYNOPSIS
content:
<i>aur</i> [<options>] <command> [<arguments>]<br>Common commands include:<br><i>aur search</i> <regex><br><i>aur build</i> <package_name><br><i>aur sync</i> (or <i>aur repo</i> -u)<br><i>aur repo</i> -r <package_name><br><i>aur fetch</i> <package_name><br><i>aur clean</i><br><i>aur vercmp</i> <package_name>


title: PARAMETERS
content:
<b>--chroot <directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative chroot environment for building packages.<br><br><b>--repo <repository_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the local repository name to use (as defined in <i>aurutils.conf</i>).<br><br><b>--sign <key_id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Signs built packages with the specified GPG key.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an action, such as rebuilding a package or overwriting existing files.<br><br><b>--skipinteg</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips integrity checks (md5sum, sha256sum) when building packages. <b>Use with caution.</b><br><br><b>--pm <command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative <i>makepkg</i> command to use during the build process.<br><br><b>--config <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file for <i>aurutils</i> to use.<br><br><b>--color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables colored output.<br><br><b>--nocolor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables colored output.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses non-error messages, reducing output verbosity.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of output, providing more detailed information.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the main command or a specified subcommand.<br><br>


title: DESCRIPTION
content:
The <i>aur</i> command, part of the <i>aurutils</i> suite, is a powerful tool for managing packages from the Arch User Repository (AUR) and integrating them with your Arch Linux system. Unlike all-in-one AUR helpers like <i>yay</i> or <i>paru</i>, <i>aurutils</i> takes a more <i>pacman</i>-like approach, emphasizing a local repository where AUR packages are built, signed, and then installed using <i>pacman</i>. This modular design promotes explicit actions and better control over the build process.<br><br>It allows users to search for packages, fetch their <i>PKGBUILDs</i>, build them securely in a clean chroot environment, and then add them to a local <i>pacman</i> repository. This local repository acts as a bridge, enabling <i>pacman</i> to manage AUR-built packages alongside official repository packages, simplifying updates and dependency resolution. The <i>aur</i> command orchestrates these tasks, providing subcommands for repository management, package building, synchronization, and more, making it a robust choice for users who prefer granular control and a <i>pacman</i>-centric workflow for their AUR software.


title: CAVEATS
content:
The <i>aur</i> command relies heavily on the <i>aurutils</i> configuration and its proper setup, especially regarding chroot environments and local repository paths. Using <i>aurutils</i> requires a deeper understanding of <i>makepkg</i> and <i>pacman</i> concepts compared to simpler AUR helpers.<br><br>Building AUR packages, especially without reviewing their <i>PKGBUILD</i> files, carries inherent security risks as they are community-contributed and not officially vetted by Arch Linux. Users are responsible for ensuring the safety and integrity of packages they install from the AUR.


title: LOCAL REPOSITORY INTEGRATION
content:
<i>aurutils</i>'s core strength lies in its ability to manage a local <i>pacman</i> repository. Packages built with <i>aur build</i> are placed into this repository, which then needs to be added to <i>pacman.conf</i>. This allows <i>pacman</i> to handle updates, dependencies, and removal of AUR-built packages seamlessly, just like official ones, by running <i>pacman -Syu</i> after <i>aur sync</i>.


title: CLEAN CHROOT BUILDS
content:
By default, <i>aurutils</i> builds packages in a clean chroot environment. This ensures that the build process is isolated from the host system, preventing 'build pollution' from locally installed dependencies and making the build process more reproducible and secure. This also helps in identifying missing <i>makedepends</i> in <i>PKGBUILDs</i>.


title: HISTORY
content:
The <i>aurutils</i> project, which provides the <i>aur</i> command, emerged as a response to the need for a more robust, <i>pacman</i>-like workflow for managing AUR packages. Its development focused on leveraging <i>pacman</i>'s capabilities by treating AUR packages as if they were part of a local repository. This approach, which includes clean chroot builds and explicit repository synchronization, aims to provide greater control, reproducibility, and security compared to earlier, less integrated AUR helper scripts. It gained popularity among users who prioritize explicit management and a clear separation between official and AUR packages, evolving from simple scripts to a comprehensive suite of utilities.


title: SEE ALSO
content:
pacman(8): Arch Linux package manager., makepkg(8): Utility for building packages from <i>PKGBUILDs</i>., chroot(1): Executes commands in a different root directory.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for <i>auracle</i> or a specific subcommand.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress verbose output, useful for scripting.<br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output results in JSON format.<br><br><b><b>-r</b>, <b>--repo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query official Arch repositories instead of the AUR.<br><br><b><b>-L</b> <N>, <b>--limit</b> <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the number of results returned.<br><br><b><b>-f</b> <format_string>, <b>--format</b> <format_string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom output format for results.<br><br><b><b>--color</b> <when></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Control colored output (<i>auto</i>, <i>always</i>, <i>never</i>).<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <i>auracle</i> version information.<br><br><b><b>search</b> <keywords></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for packages on the AUR or official repositories.<br><i>Options:</i> <b>-s</b> (startswith), <b>-E</b> (exact), <b>-v</b> (vote).<br><br><b><b>info</b> <packages...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about one or more AUR packages.<br><br><b><b>download</b> <packages...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download PKGBUILDs and associated files for specified packages.<br><i>Options:</i> <b>-d</b> (directory), <b>-a</b> (all dependencies), <b>-c</b> (clean).<br><br><b><b>clone</b> <packages...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clone the Git repository containing PKGBUILDs for specified packages.<br><br><b><b>udiff</b> <packages...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a unified diff between local and remote PKGBUILDs.<br><br><b><b>outdated</b> [packages...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List installed AUR packages that are outdated according to the AUR.<br><br><b><b>orphaned</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List installed AUR packages that are orphaned on the AUR.<br><br><b><b>sync</b> <packages...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize local PKGBUILDs with the remote versions.<br><br><b><b>raw</b> <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query the raw AUR API endpoint at the specified path.<br><br>


title: DESCRIPTION
content:
<i>auracle</i> is a command-line utility written in C++ designed to interact with the Arch User Repository (AUR). Unlike full-fledged AUR helpers that build and install packages, <i>auracle</i> focuses primarily on querying, searching, and downloading PKGBUILDs and their related files efficiently. It provides a clean, programmatic interface, making it an excellent backend tool for other AUR helpers or for users who prefer to manually manage their AUR packages after fetching them. Its design prioritizes speed and reliability, offering various subcommands to search for packages, retrieve detailed information, download source files, or even clone Git repositories containing PKGBUILDs. It supports JSON output for easy parsing in scripts and offers options for filtering and customizing search results.


title: CAVEATS
content:
<i>auracle</i> itself does not build or install packages. It is solely a query and download tool. Users are expected to use <b>makepkg(8)</b> and <b>pacman(8)</b> to build and install downloaded packages. For a fully automated experience, consider using a dedicated AUR helper that utilizes <i>auracle</i> as a backend.


title: USAGE WITH AUR HELPERS
content:
Many modern AUR helpers, such as <i>yay</i> and <i>paru</i>, utilize <i>auracle</i> internally for querying AUR data due to its speed and JSON output capabilities. While <i>auracle</i> can be used directly, its primary strength lies in providing a foundational layer for more complex AUR management tools.


title: PKGBUILDS AND SECURITY
content:
When downloading PKGBUILDs using <i>auracle</i>, it's crucial to inspect them before building. AUR packages are user-contributed and not officially sanctioned by Arch Linux. Always review the <b>PKGBUILD</b> and any included <b>.install</b> files for malicious or unintended actions before proceeding with <b>makepkg(8)</b> and <b>pacman(8)</b>.


title: HISTORY
content:
<i>auracle</i> was developed as a modern, fast, and robust C++ client for the Arch User Repository. Its creation was motivated by a desire for a reliable, low-level building block that AUR helpers could leverage, offering better performance and more structured output than older shell-script based solutions or parsing of AUR web pages. It provides a stable API for programmatic interaction, making it ideal for integration into other tools.


title: SYNOPSIS
content:
<b>aurman</b> <<i>operation</i>> [<<i>options</i>>] [<<i>targets</i>>]<br><b>aurman</b> <<i>package</i>> (installs a package by default)<br><b>aurman</b> <b>-S</b> [<<i>options</i>>] <<i>packages</i>> (install packages)<br><b>aurman</b> <b>-R</b> [<<i>options</i>>] <<i>packages</i>> (remove packages)<br><b>aurman</b> <b>-U</b> [<<i>options</i>>] <<i>packages</i>> (upgrade or add local packages)<br><b>aurman</b> <b>-Ss</b> [<<i>options</i>>] <<i>keywords</i>> (search packages)<br><b>aurman</b> <b>-Si</b> [<<i>options</i>>] <<i>packages</i>> (display package info)<br><b>aurman</b> <b>-Syu</b> [<<i>options</i>>] (sync, refresh, upgrade system)


title: PARAMETERS
content:
<b><b>-S</b>, <b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize packages. Used for installing new packages (<b>-S</b> <<i>package</i>>) or upgrading the system (<b>-Syu</b>).<br><br><b><b>-R</b>, <b>--remove</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove specified packages from the system.<br><br><b><b>-U</b>, <b>--upgrade</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade or add local packages. Useful for installing downloaded <b>.pkg.tar.zst</b> files.<br><br><b><b>-Q</b>, <b>--query</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query the package database. Behaves similarly to <b>pacman -Q</b>.<br><br><b><b>-Ss</b>, <b>--search</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search the official repositories and AUR for packages matching keywords.<br><br><b><b>-Si</b>, <b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about specified packages.<br><br><b><b>-Syu</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a full system upgrade, syncing repository databases and upgrading installed packages.<br><br><b><b>--noconfirm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip all interactive confirmation prompts.<br><br><b><b>--noedit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not open <b>PKGBUILD</b> files for editing before building.<br><br><b><b>--nodiff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not show diffs of <b>PKGBUILD</b> files.<br><br><b><b>--skipinteg</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip integrity checks for downloaded files.<br><br><b><b>--mflags</b> "<i><flags></i>"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass custom flags directly to <b>makepkg</b> during the build process.<br><br>


title: DESCRIPTION
content:
<b>aurman</b> is a powerful and feature-rich Arch User Repository (AUR) helper for Arch Linux. It provides a user-friendly interface mirroring <b>pacman</b>'s syntax, simplifying the process of installing, updating, and managing packages from the AUR. Key features include robust dependency resolution, handling of split packages and <i>VCS</i> (<b>-git</b>) packages, and comprehensive <b>PKGBUILD</b> review capabilities. <b>aurman</b> integrates seamlessly with <b>pacman</b>, handling both official repository packages and AUR packages within a single workflow. It was designed to ensure package integrity through integrity checks and to allow users to inspect package build files before installation, enhancing system security.


title: CAVEATS
content:
<b>aurman</b> is no longer actively maintained. Its development ceased around 2020, and the developer recommended users switch to more actively maintained AUR helpers like <b>paru</b> or <b>yay</b>. Using an unmaintained helper can lead to issues with new package formats, <b>PKGBUILD</b> changes, or security vulnerabilities over time. Therefore, its use is generally discouraged in favor of modern alternatives.


title: <B>PKGBUILD</B> REVIEW AND SECURITY
content:
One of <b>aurman</b>'s key strengths was its emphasis on security, allowing users to review the <b>PKGBUILD</b> files and their diffs before building and installing packages. This feature provided transparency and control, enabling users to inspect the build process and ensure no malicious code was being executed or unwanted files were being installed.


title: HISTORY
content:
Developed by mnewt, <b>aurman</b> quickly rose to prominence as a robust and feature-rich AUR helper due to its <b>pacman</b>-like interface and comprehensive handling of AUR packages. It gained a strong user base for its reliability in managing complex dependency chains and <i>VCS</i> packages. However, active development for <b>aurman</b> ceased around 2020. The project maintainer explicitly stated its deprecation and encouraged users to migrate to newer, actively maintained AUR helpers such as <b>paru</b> or <b>yay</b>, which were designed with lessons learned from <b>aurman</b> and other helpers.


title: PARAMETERS
content:
<b>pkgdir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the local package directory containing the Git repository to be pushed.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays usage information and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>aurpublish</i> version information and exits.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs all operations except the actual push to the remote repository, allowing for testing.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the push operation using Git's <br><b>--force-with-lease</b> option, used for overwriting remote history safely.<br><br><b>--ssh-key <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative SSH key file to use for connecting to <br>aur.archlinux.org instead of the default.<br><br><b>--gpg-key <gpg-keyid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Signs the Git commit with the specified GPG key ID.<br><br><b>--skip-check-local-repo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bypasses the check that verifies if the local repository is a child of an <i>aur-src(1)</i> repository.<br><br><b>--no-cleanup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from cleaning up temporary files after execution.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables extensive debug output for troubleshooting.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more details on the command's execution.<br><br>


title: DESCRIPTION
content:
<i>aurpublish</i> is a specialized command within the <i>aurutils</i> toolkit designed for publishing packages to the Arch User Repository (AUR). Its primary function is to automate the Git operations required to push a local package repository, typically created and managed by <i>aur-src(1)</i>, to the official AUR Git server at <br>aur.archlinux.org. <br><br>When executed, <i>aurpublish</i> takes a local directory containing a package's Git repository (which includes the PKGBUILD file and any associated sources) and performs the necessary <br><b>git push</b> commands. This typically involves pushing the current HEAD of the local repository to a branch on the AUR remote named after the package base (e.g., <br><b>git push aur HEAD:pkgbase</b>). <br><br>The command significantly simplifies the process for AUR package maintainers by abstracting away manual Git commands. It relies on pre-configured SSH access to <br>aur.archlinux.org to authenticate the push operation. Maintainers usually use <i>aurpublish</i> after making changes to their PKGBUILD, updating sources, or bumping package versions, ensuring their AUR submissions are correctly synchronized with their local development environment.


title: CAVEATS
content:
Successful use of <i>aurpublish</i> requires proper SSH key configuration for authentication with <br>aur.archlinux.org. Without it, pushes will fail. <br><br>Users should exercise caution with the <br><b>--force</b> option, as it can overwrite remote history if not used carefully, potentially causing issues for other users tracking the repository. <br><br>It is crucial to ensure the local repository specified by <br><i>pkgdir</i> is clean and correctly prepared (e.g., updated PKGBUILD, correct sources, new .SRCINFO) before publishing to avoid broken or outdated packages on the AUR.


title: ENVIRONMENT VARIABLES
content:
<i>aurpublish</i> respects several environment variables to configure its behavior:<br><b>AUR_SRC_DIR</b>: Specifies the default directory for local AUR Git repositories. Defaults to <br>~/.cache/aurutils/sync.<br><b>AUR_SSH_KEY</b>: Defines the path to the SSH key for authentication with <br>aur.archlinux.org. Defaults to <br>~/.ssh/id_rsa.<br><b>AUR_GPG_KEY</b>: Sets the default GPG key ID for signing commits.


title: TYPICAL WORKFLOW
content:
A common workflow involving <i>aurpublish</i> includes:<br>1. Creating or cloning a package repository using <i>aur-src(1)</i>.<br>2. Making necessary changes to the PKGBUILD file and updating sources.<br>3. Running <br><b>makepkg --printsrcinfo > .SRCINFO</b> to update the <br><b>.SRCINFO</b> file, which is crucial for AUR.<br>4. Committing changes to the local Git repository.<br>5. Finally, executing <br><b>aurpublish <pkgdir></b> to push the updated package to the AUR.


title: HISTORY
content:
<i>aurpublish</i> is a component of the <i>aurutils</i> project, a collection of helper tools designed to streamline interaction with the Arch User Repository. The <i>aurutils</i> project itself began development around 2014-2015, created by Alad W. and Lukas Fleischer. Its aim was to provide a more robust and integrated workflow for building, installing, and maintaining AUR packages, filling gaps not fully addressed by manual processes or simpler tools. <i>aurpublish</i> emerged as the dedicated tool for the final step of publishing package updates, automating the Git push functionality that previously required manual commands.


title: SYNOPSIS
content:
<b>aurvote</b> <I>package_name</I> [<I>options</I>]<br><i>or commonly via AUR helpers:</i><br><b>yay</b> -v <I>package_name</I><br><b>paru</b> -v <I>package_name</I>


title: PARAMETERS
content:
<b><I>package_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Arch User Repository package you wish to vote for or unvote.<br><br><b><b>-u</b>, <b>--unvote</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes your vote from the specified package. If no vote exists, this option typically has no effect.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output messages, performing the action silently.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options for the `aurvote` script or helper command.<br><br>


title: DESCRIPTION
content:
The `aurvote` command, or its equivalent functionality within Arch User Repository (AUR) helpers, enables users to cast votes for packages hosted on the AUR. The Arch User Repository is a community-driven repository for Arch Linux users, containing package descriptions (PKGBUILDs) that allow users to compile software from source. Voting for a package signifies your interest and support, helping to increase its visibility and indicate its popularity within the community. This functionality is crucial for identifying well-maintained or highly demanded packages. While `aurvote` is <b>not</b> a standard Linux command with a dedicated man page, its core purpose is implemented by popular AUR helper utilities like `yay` and `paru`, which interact with the AUR's RPC interface to manage votes on behalf of authenticated users.


title: CAVEATS
content:
The `aurvote` command is <b>not</b> a standard Linux utility and typically does not exist as a standalone executable with a dedicated man page. Its functionality is primarily integrated into popular Arch User Repository (AUR) helper programs like `yay` and `paru`. Direct usage of a hypothetical `aurvote` script would require an active Arch User Repository account and proper authentication (username and password). Voting only affects a package's visibility and popularity ranking on the AUR; it does not directly impact its quality, security, or maintenance status. Users should always exercise caution and review PKGBUILDs before building and installing AUR packages.


title: AUTHENTICATION
content:
To vote for an AUR package, you must be authenticated with your Arch User Repository account. Most AUR helpers will prompt you for your username and password interactively upon the first voting attempt or if credentials are not stored. Some tools might allow configuration files for storing credentials, though this is generally considered less secure and not recommended for sensitive information.


title: IMPACT OF VOTING
content:
Votes contribute to a package's popularity score on the AUR website. Packages with more votes tend to appear higher in search results and on popularity lists, making them more visible to other users. This helps the community identify well-liked, actively used, or highly desired packages, potentially influencing maintainers or leading to official repository inclusion for very popular and well-maintained packages.


title: HISTORY
content:
The concept of voting for packages originated with the creation of the Arch User Repository (AUR) itself, providing a community-driven mechanism for users to express interest and support for various package submissions. While a dedicated 'aurvote' command was never officially part of Arch Linux's core utilities, the capability to vote for AUR packages became an integral feature of third-party AUR helper applications such as `yay` and `paru`. These helpers abstract the complexities of interacting with the AUR web interface and RPC (Remote Procedure Call) API, making it seamless for users to cast or retract votes directly from the command line, alongside other package management operations.


title: PARAMETERS
content:
<b><b>-i</b>, <b>--interpret</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret numeric entities into human-readable text. For example, UIDs are resolved to usernames, GIDs to group names, syscall numbers to their names, and so on. This is highly recommended for readability.<br><br><b><b>-f</b>, <b>--file <I>file</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events that accessed a specific file or directory.<br><br><b><b>-k</b>, <b>--key <I>key</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events containing a specific audit key tag. Keys are often used to group related audit rules and their generated events.<br><br><b><b>-m</b>, <b>--message <I>message</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events of a specific message type (e.g., CWD, SYSCALL, USER_LOGIN, PATH). Can be specified multiple times.<br><br><b><b>-sv</b>, <b>--success <I>success</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events based on their success or failure status. Values are 'yes' or 'no'.<br><br><b><b>-ua</b>, <b>--uid-all <I>account</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for any user ID (UID, AUID, LOGINUID) matching the specified account name or ID.<br><br><b><b>-ul</b>, <b>--loginuid <I>loginid</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events with a specific loginuid, which identifies the login session origin.<br><br><b><b>-ts</b>, <b>--start <I>timestamp</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events occurring on or after the specified timestamp. Format can be 'now', 'yesterday', 'this-week', 'this-month', 'this-year', or a specific date/time string (e.g., '10/25/2023 14:30:00').<br><br><b><b>-te</b>, <b>--end <I>timestamp</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events occurring on or before the specified timestamp. Similar formats as <b>--start</b>.<br><br><b><b>--input <I>file</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read audit logs from a specified file instead of the default location. Can be used multiple times.<br><br><b><b>--input-format <I>format</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input file format, typically 'raw' (default) or 'text'.<br><br><b><b>--just-one</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop searching after the first match is found. Useful for performance when you only need to confirm existence.<br><br><b><b>-x</b>, <b>--syscall <I>syscall</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for events related to a specific syscall number or name. Can be specified multiple times.<br><br>


title: DESCRIPTION
content:
The <b>ausearch</b> command is a utility for querying and filtering the audit daemon's log files. It's an integral part of the Linux Audit Framework, designed to help administrators and security professionals analyze security-relevant events that have occurred on a system.<br><br>It can search for specific audit events based on various criteria, such as time ranges, event IDs, user IDs, groups, syscalls, messages, and more. Unlike simply `grep`ing the log files, <b>ausearch</b> understands the structured nature of audit records, allowing for more precise and context-aware searches.<br><br>The command processes raw audit logs, typically located in <i>/var/log/audit/audit.log</i> (or specified input files), and outputs matching events in a human-readable format. This capability makes it invaluable for incident response, compliance auditing, and general security monitoring, providing insights into system activities like user logins, file access, privilege escalations, and network connections.


title: CAVEATS
content:
When searching large audit log files, <b>ausearch</b> can be resource-intensive, especially without specific time or ID filters. Performance can degrade if searching for broad patterns across many gigabytes of logs.<br><br>Understanding the various fields in audit records (e.g., UID, AUID, LOGINUID, SUID, FSUID) is crucial for accurate searches, as misinterpreting them can lead to incomplete or incorrect results. The <b>-i</b> option, while very helpful for interpretation, can also add overhead.<br><br>Time zone considerations are important; audit logs are typically stored in UTC, and <b>ausearch</b> will interpret timestamps based on the system's current time zone unless explicitly handled.


title: DEFAULT LOG LOCATION
content:
By default, <b>ausearch</b> processes logs from <i>/var/log/audit/audit.log</i> and other rotated logs in that directory. If audit logs are archived or moved, the <b>--input</b> option must be used to specify their new location.


title: PRIVILEGES
content:
To read audit logs, <b>ausearch</b> typically requires <i>root</i> privileges or membership in a group that has read access to the audit log files (e.g., the 'audit' group on some systems).


title: COMBINING FILTERS
content:
Multiple search criteria can be combined in a single <b>ausearch</b> command. By default, these criteria are joined with a logical <i>AND</i>, meaning all specified conditions must be met for an event to be returned.


title: HISTORY
content:
The Linux Audit Framework, including <b>ausearch</b>, was developed to provide robust CAPP (Controlled Access Protection Profile) compliance auditing capabilities for the Linux kernel. It gained significant traction and widespread adoption starting with the 2.6 kernel series, becoming a standard component in major Linux distributions like Red Hat Enterprise Linux, CentOS, and Fedora.<br><br><b>ausearch</b> has evolved alongside the audit system itself, with ongoing improvements to filtering capabilities, performance, and interpretation options, making it an indispensable tool for system security and compliance.


title: PARAMETERS
content:
<b><b>-i</b> <i>syscall_number</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interprets the argument as a system call number and displays its corresponding name.<br><br><b><b>-n</b> <i>syscall_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interprets the argument as a system call name and displays its corresponding number.<br><br><b><b>-a</b> <i>architecture</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the CPU architecture for the lookup (e.g., <i>x86_64</i>, <i>i386</i>, <i>aarch64</i>). This option must precede <b>-i</b> or <b>-n</b> if used with a specific lookup.<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all system calls for the current architecture, including their names and numbers. This is the default behavior if no other arguments are provided.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a short help message and exits.<br><br>


title: DESCRIPTION
content:
<i>ausyscall</i> is a utility from the <b>audit-userspace</b> tools that provides a convenient way to query and translate system call names to their corresponding numbers, and vice-versa.<br><br>It's particularly useful when analyzing audit logs, which often record syscall numbers, or when constructing audit rules that need to filter by specific syscalls. The tool is <b>architecture-aware</b>, meaning it uses the correct syscall mappings for the current system's CPU architecture. It can list all known syscalls, or perform specific lookups by name or number. This helps users understand system activity at a low level without needing to consult kernel source code or architecture-specific tables.


title: CAVEATS
content:
<b>ausyscall</b> relies on architecture-specific system call mappings. The numbers for the same system call can vary significantly between different CPU architectures (e.g., <i>x86_64</i> vs. <i>i386</i> vs. <i>aarch64</i>). Users must ensure they are performing lookups for the correct architecture, especially when analyzing logs from heterogeneous systems.<br><br>While rare for existing calls, new system calls might be added or existing ones might have their numbers changed across major kernel versions. The utility requires the <i>audit-userspace</i> package to be installed, as it's not a core Linux utility.


title: USAGE IN AUDIT RULES
content:
When defining audit rules using <i>auditctl</i>, system call numbers are often preferred over names for performance and consistency across different locales. <b>ausyscall</b> is an invaluable tool for quickly finding the correct syscall number for a specific action (e.g., <i>open</i>, <i>execve</i>) to include in an <i>auditctl</i> rule, ensuring that audit events are accurately captured.


title: ARCHITECTURE MAPPINGS
content:
The tool uses internal data structures, typically populated from files located in <i>/usr/share/audit/syscalls/</i>, to map syscall names to numbers. These tables are meticulously maintained for various CPU architectures, ensuring that the tool provides the correct translation for the current system's architecture or any specified architecture.


title: HISTORY
content:
<b>ausyscall</b> is an integral part of the Linux Audit Framework, developed to provide a robust security auditing solution for the Linux kernel. It emerged as a necessary utility for system administrators and security analysts to bridge the gap between low-level kernel events (represented by syscall numbers in audit logs) and human-readable names. Its functionality has remained consistently focused on providing accurate, architecture-specific mappings, serving as a vital component for understanding and configuring audit rules.


title: PARAMETERS
content:
<b>--updateall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies all specified changes and updates the system configuration.<br><br><b>--enableldap</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables LDAP for user information and authentication.<br><br><b>--disableldap</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables LDAP configuration.<br><br><b>--ldapserver=<I>server</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the LDAP server(s) to use.<br><br><b>--ldapbasedn=<I>DN</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the LDAP base DN for user and group lookups.<br><br><b>--enableldapauth</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables authentication against an LDAP server.<br><br><b>--disableldapauth</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables LDAP authentication.<br><br><b>--enableldaptls</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables TLS/SSL encryption for LDAP communication.<br><br><b>--enablekrb5</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Kerberos 5 for user authentication.<br><br><b>--disablekrb5</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables Kerberos 5 configuration.<br><br><b>--krb5realm=<I>realm</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Kerberos 5 realm.<br><br><b>--krb5kdc=<I>KDC</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Kerberos 5 Key Distribution Center(s).<br><br><b>--krb5adminserver=<I>server</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Kerberos 5 administration server.<br><br><b>--enablemd5</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables MD5 hashing for local user passwords (older standard).<br><br><b>--disablemd5</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables MD5 hashing for local passwords.<br><br><b>--enableshadow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables shadow passwords for local users.<br><br><b>--disableshadow</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables shadow passwords (not recommended).<br><br><b>--enablesssd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables SSSD (System Security Services Daemon) for user and group information.<br><br><b>--disablesssd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SSSD configuration.<br><br><b>--enablesssdauth</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables SSSD for authentication.<br><br><b>--disablesssdauth</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SSSD authentication.<br><br><b>--enablefingerprint</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables support for fingerprint readers.<br><br><b>--disablefingerprint</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables fingerprint reader support.<br><br><b>--enablewinbind</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Winbind for Active Directory/Samba authentication.<br><br><b>--disablewinbind</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables Winbind configuration.<br><br><b>--winbindtemplatehomedir=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the template home directory for Winbind users.<br><br><b>--winbindtemplateshell=<I>shell</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the template shell for Winbind users.<br><br><b>--passalgo=<I>algorithm</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the password hashing algorithm (e.g., 'sha512', 'sha256', 'md5').<br><br><b>--passminlen=<I>length</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum password length for local users.<br><br><b>--passmaxlen=<I>length</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum password length for local users.<br><br><b>--nostart</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents services from being started or restarted after configuration changes.<br><br><b>--test</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the changes that would be made without actually applying them.<br><br><b>--restorebackup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the previous configuration from backup files.<br><br><b>--savebackup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current configuration as backup files.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces changes even if potential issues are detected.<br><br><b>--text</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the utility in an interactive curses-based text mode.<br><br><b>--probe</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Probes for available authentication methods and displays them.<br><br><b>--enablemkhomedir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables automatic creation of home directories for new users.<br><br><b>--disablemkhomedir</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables automatic creation of home directories.<br><br><b>--enablenis</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables NIS (Network Information Service) support.<br><br><b>--nisdomain=<I>domain</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the NIS domain.<br><br><b>--nisserver=<I>server</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the NIS server(s).<br><br><b>--disablenis</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables NIS support.<br><br><b>--enablehesiod</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Hesiod support.<br><br><b>--hesiodlhs=<I>LHS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Hesiod LHS (Left Hand Side) component.<br><br><b>--hesiodrhs=<I>RHS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Hesiod RHS (Right Hand Side) component.<br><br><b>--disablehesiod</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables Hesiod support.<br><br><b>--enablecache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables caching for NSS lookups (typically via NSCD).<br><br><b>--disablecache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables NSS caching.<br><br><b>--cacheconfig=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative cache configuration file.<br><br><b>--enablesystemtap</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables SystemTap support for debugging authentication.<br><br><b>--disablesystemtap</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SystemTap support.<br><br><b>--enablepamaccess</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables PAM access control based on /etc/security/access.conf.<br><br><b>--disablepamaccess</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables PAM access control.<br><br><b>--kickstart</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures authentication for a kickstart installation, suitable for automated setups.<br><br>


title: DESCRIPTION
content:
<b>authconfig</b> is a legacy command-line utility primarily found in Red Hat-based Linux distributions, used for configuring system-wide authentication and authorization services. It serves as a high-level interface to modify crucial system files, including <i>/etc/nsswitch.conf</i> (Name Service Switch) and the various PAM (Pluggable Authentication Modules) configuration files located under <i>/etc/pam.d/</i>.<br><br>Administrators utilize <b>authconfig</b> to establish diverse authentication methods such as local user accounts (shadow, MD5), network-based services like LDAP (Lightweight Directory Access Protocol), Kerberos, and more recently, integration with SSSD (System Security Services Daemon). While it automates the complex process of generating necessary PAM and NSS configurations, its direct modification approach to the PAM stack is less flexible and more prone to issues compared to its modern successor, <b>authselect</b>. It ensures consistent authentication across the system by updating standard PAM files used by common services.


title: CAVEATS
content:
<b>authconfig</b> is considered deprecated in modern Red Hat-based Linux distributions (e.g., RHEL 7 and later, Fedora). It has been largely superseded by the <b>authselect</b> command, which offers a more robust, flexible, and safer way to manage PAM configurations using predefined profiles and allowing controlled local modifications. Using <b>authconfig</b> on newer systems might lead to unexpected or undesirable PAM configurations, potentially breaking system authentication. It directly modifies PAM files, which can be difficult to audit or revert manually if issues arise.<br><br>Always back up critical configuration files before using <b>authconfig</b>, especially on production systems, as misconfigurations can lock users out of the system.


title: INTERACTIVE MODE
content:
When invoked without arguments or with the <code>--text</code> option, <b>authconfig</b> provides an interactive curses-based graphical user interface (GUI) that guides the administrator through the authentication setup process. This mode makes it easier for users less familiar with command-line options to configure basic authentication methods.


title: PAM AND NSS CONFIGURATION
content:
The primary function of <b>authconfig</b> is to generate and update the necessary configuration files for PAM (in <i>/etc/pam.d/</i>) and NSS (<i>/etc/nsswitch.conf</i>). It automates the process of correctly ordering and enabling modules for services like <i>login</i>, <i>su</i>, <i>ssh</i>, and others, ensuring that user and group lookups and authentication requests are handled by the configured backends (e.g., files, LDAP, SSSD).


title: HISTORY
content:
The <b>authconfig</b> utility emerged as a high-level tool to simplify the complex task of configuring system-wide authentication settings in Linux, particularly within the Red Hat ecosystem. It was a staple in Fedora and RHEL for many years, providing a user-friendly way to integrate various authentication backends like local files, LDAP, Kerberos, and later SSSD. Its development aimed to abstract the intricacies of PAM and NSS configuration, which traditionally required manual editing of multiple sensitive files.<br><br>However, its direct modification approach to PAM configurations could sometimes lead to unmanageable or brittle setups, especially when custom PAM rules were involved. With the release of Red Hat Enterprise Linux 7 and corresponding Fedora versions, <b>authselect</b> was introduced as a more sophisticated and profile-based alternative, offering better manageability, auditability, and preventing common configuration pitfalls. While <b>authconfig</b> might still be present on older systems or for backward compatibility, its active development and recommended usage have largely ceased in favor of <b>authselect</b>.


title: SEE ALSO
content:
authselect(8), pam(8), nsswitch.conf(5), passwd(5), shadow(5), ldap(3), krb5(3), sssd(8), pam_ldap(8), pam_krb5(8)


title: SYNOPSIS
content:
<b>auto-cpufreq</b> <i>[OPTIONS]</i> <i>[COMMAND]</i><br><br>Examples:<br><b>auto-cpufreq</b> <i>--install</i><br><b>auto-cpufreq</b> <i>--stats</i><br><b>auto-cpufreq</b> <i>--monitor</i><br><b>auto-cpufreq</b> <i>--force</i><br><b>auto-cpufreq</b> <i>--leave-awake</i>


title: PARAMETERS
content:
<b>--install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs and enables the <b>auto-cpufreq</b> system service to run automatically.<br><br><b>--remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uninstalls and disables the <b>auto-cpufreq</b> system service.<br><br><b>--stats</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays current CPU frequency, governor, and power statistics in a snapshot.<br><br><b>--monitor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a real-time, interactive monitor of CPU core frequencies, temperatures, and power states.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>auto-cpufreq</b> to apply its optimizations immediately, overriding any current state.<br><br><b>--config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the configuration file for editing (typically <i>/etc/auto-cpufreq.conf</i>).<br><br><b>--status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks the operational status of the <b>auto-cpufreq</b> system service.<br><br><b>--leave-awake</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the system from entering deeper idle power states, maintaining maximum performance.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output for detailed troubleshooting information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed <b>auto-cpufreq</b> version.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the command's usage instructions and available options.<br><br>


title: DESCRIPTION
content:
<b>auto-cpufreq</b> is an open-source command-line utility and daemon for Linux systems designed to optimize CPU frequency scaling and power consumption. It intelligently monitors the system's power source (AC or battery) and CPU load, dynamically adjusting the CPU governor and frequency to achieve a balance between performance and power efficiency.<br><br>When on battery, it prioritizes power saving, potentially setting lower frequencies and using conservative governors. When on AC power, it can shift towards higher performance while still being mindful of heat and unnecessary power draw. It aims to prevent overheating, extend battery life, and ensure responsive system performance, acting as a "set-and-forget" solution for CPU management. It leverages existing kernel facilities like <i>cpufreq</i> governors and works across various CPU architectures.


title: CAVEATS
content:
<b>auto-cpufreq</b> typically requires the <i>msr</i> kernel module and sometimes <i>intel_pstate</i> to be enabled for full functionality on Intel CPUs. It might conflict with other power management utilities (e.g., TLP, PowerTOP) if not configured carefully; it's generally recommended to choose one primary power management tool to avoid conflicts. Over-aggressive power saving on certain workloads might lead to minor performance dips. Its effectiveness can vary based on CPU architecture and specific kernel version.


title: CONFIGURATION FILE
content:
<b>auto-cpufreq</b> uses a configuration file (typically <i>/etc/auto-cpufreq.conf</i>) where users can fine-tune its behavior. This includes setting specific CPU governors for AC/battery mode, defining minimum/maximum frequencies, or blacklisting certain CPU cores. This allows for advanced customization to tailor its operation to specific user needs and hardware.


title: SYSTEMD INTEGRATION
content:
The core optimization functionality of <b>auto-cpufreq</b> runs as a systemd service, ensuring that optimizations are applied automatically at boot and persist throughout the system's uptime. This integration provides a 'set-and-forget' approach, making it convenient for users who prefer an automated solution to CPU power management without manual intervention.


title: HISTORY
content:
<b>auto-cpufreq</b> was developed by Adnan Hodzic, with initial releases around 2018-2019. It emerged as a solution for automated and dynamic CPU frequency scaling on Linux, particularly for laptops. The motivation was to provide better out-of-the-box battery life and performance management compared to manual governor adjustments or other tools requiring more complex setup. Its development has focused on ease of use, broad hardware compatibility, and intelligent adaptive behavior.


title: SYNOPSIS
content:
<pre><b>autoconf</b> [<I>OPTION</I>]... [<I>TEMPLATE-FILE</I>]</pre><br>If <I>TEMPLATE-FILE</I> is not specified, <I>autoconf</I> uses <I>configure.ac</I> if it exists, otherwise <I>configure.in</I>. The output script is named <I>configure</I>.


title: PARAMETERS
content:
<b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information and exit.<br><br><b><B>-f</B>, <B>--force</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Regenerate the <I>configure</I> script even if <I>configure.ac</I> is older. This forces a regeneration regardless of timestamps.<br><br><b><B>--verbose</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose messages showing input and output files and actions taken.<br><br><b><B>-W </B><I>CATEGORY</I>, <B>--warnings=</B><I>CATEGORY</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report warnings falling into <I>CATEGORY</I>. Common categories include <I>all</I>, <I>none</I>, <I>obsolete</I>, <I>syntax</I>, <I>unsupported</I>.<br><br><b><I>TEMPLATE-FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file to process. Defaults to <I>configure.ac</I> or <I>configure.in</I>.<br><br>


title: DESCRIPTION
content:
<I>autoconf</I> is a powerful tool part of the GNU Build System (often called Autotools) that automates the process of creating portable <I>configure</I> scripts. Its primary purpose is to allow software developers to write code that can be compiled and installed on a wide variety of Unix-like operating systems without manual adjustments to the build system.<br><br>When you, as a user, download a software package and see instructions like <I>./configure && make && make install</I>, the <I>configure</I> script was likely generated by <I>autoconf</I>. This script intelligently probes the user's system for specific features, such as available libraries, header files, compiler capabilities, system calls, and endianness. Based on these checks, it then customizes the build process by generating appropriate <I>Makefile</I>s and header files.<br><br>For developers, <I>autoconf</I> reads a template file, typically named <I>configure.ac</I> (or historically <I>configure.in</I>), which contains a series of <I>m4</I> macros. These macros represent various system checks and configuration logic. <I>autoconf</I> processes this file, expanding the macros and producing the final <I>configure</I> shell script. This significantly simplifies cross-platform development, allowing developers to focus on writing code rather than managing complex platform-specific build configurations.


title: CAVEATS
content:
The Autotools suite, including <I>autoconf</I>, has a <B>steep learning curve</B> for developers due to its reliance on <I>m4</I> macros and a specific workflow.<br>The generated <I>configure</I> scripts can be <B>quite large and complex</B>, which can sometimes make them slow to run for end-users and difficult to debug for developers.<br><I>autoconf</I> (and Autotools) are primarily designed for Unix-like environments. While efforts have been made for Windows compatibility (e.g., MinGW/MSYS2), they are <B>less native</B> compared to other build systems.<br>Debugging issues within the <I>configure</I> script can be challenging due to the layers of macro expansion.


title: <B>THE AUTOTOOLS WORKFLOW</B>
content:
For developers, the typical workflow involves writing <I>configure.ac</I> and <I>Makefile.am</I> files. Then, they run <I>autoreconf -i</I> (or individual commands like <I>aclocal</I>, <I>autoconf</I>, <I>autoheader</I>, <I>automake</I>) to generate the necessary build infrastructure.<br><br>For users, the process is much simpler: they typically download the source tarball (which includes the pre-generated <I>configure</I> script and <I>Makefile.in</I>s), then run <I>./configure</I>, followed by <I>make</I>, and finally <I>make install</I>.


title: <B>CONFIGURE.AC</B>
content:
This is the input file for <I>autoconf</I>. It consists of <I>m4</I> macros that describe the desired system features, checks for programs, libraries, header files, and compiler characteristics. Key macros include <I>AC_INIT</I> (initializes the package), <I>AM_INIT_AUTOMAKE</I> (for Automake integration), <I>AC_PROG_CC</I> (checks for a C compiler), <I>AC_CHECK_LIB</I> (checks for a library), and <I>AC_OUTPUT</I> (specifies output files like <I>Makefile</I>).


title: HISTORY
content:
<I>autoconf</I> was originally written by David MacKenzie in 1991 and became part of the GNU project. It emerged as a crucial tool for solving the pervasive problem of software portability across diverse Unix variants. Before <I>autoconf</I>, developers often had to include multiple platform-specific <I>Makefile</I>s or complex preprocessor directives, leading to significant maintenance overhead.<br><br>Its development was driven by the Free Software Foundation's need for a standardized and robust build system for GNU software. Over the years, it has been continually developed and refined, becoming the cornerstone of the GNU Build System, widely adopted by a vast number of open-source projects for its effectiveness in abstracting away underlying system differences. The transition from <I>configure.in</I> to <I>configure.ac</I> as the preferred input file name reflected a slight evolution in naming conventions, but the core functionality remained the same.


title: PARAMETERS
content:
<b>-i, --in-place</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Edit files in place</i> rather than printing to stdout. This is the most common way to use <b>autoflake</b> to modify files directly.<br><br><b>-r, --recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Search for Python files in subdirectories</i>. Essential for cleaning entire project folders.<br><br><b>--remove-unused-imports</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Remove unused <b>import</b> statements</i>. This is a conservative approach.<br><br><b>--remove-all-unused-imports</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Remove all unused <b>import</b> statements</i>, including those that <b>pyflakes</b> might not flag but are actually unused. This is more aggressive.<br><br><b>--remove-unused-variables</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Remove unused local variables</i>.<br><br><b>--expand-star-imports</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Expand star imports</i> (e.g., <i>from foo import *</i> becomes <i>from foo import bar, baz</i>). Use with caution as it significantly alters code.<br><br><b>--check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Don't write back</i>, just return status code. Returns 0 if no changes would be made, 1 otherwise. Useful for CI/CD checks.<br><br><b>--diff</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show diff</i> instead of modifying files.<br><br><b>--exclude <PATTERN></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exclude files or directories</i> matching the given glob pattern. Can be specified multiple times.<br><br><b>--imports <IMPORT_NAME></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify extra imports to remove</i> that <b>autoflake</b> might not detect automatically (e.g., <i>os.path</i>).<br><br><b>--exit-zero-if-clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exit with 0 even if files were modified</i>. Useful for pre-commit hooks where a non-zero exit means commit failure.<br><br>


title: DESCRIPTION
content:
<b>autoflake</b> is a lightweight, automated code cleaning tool for Python. Its primary function is to intelligently remove unused <i>import</i> statements and unused local variables from Python source files. By parsing the code and leveraging static analysis principles (often based on <b>pyflakes</b>' output for import detection), <b>autoflake</b> helps developers maintain cleaner, more efficient, and readable codebases.<br><br>This utility is particularly valuable in large projects or when refactoring, as it automates tedious cleanup tasks that would otherwise require manual effort. It reduces file sizes, prevents potential bugs stemming from stale or misleading imports, and improves code clarity. <b>autoflake</b> can modify files in place, process directories recursively, and offers various options to control its behavior, including aggressive removal of all unused imports, expansion of star imports, and the ability to operate in a 'check-only' mode for CI/CD pipelines. It seamlessly integrates into typical Python development workflows alongside formatters like <b>black</b> and import sorters like <b>isort</b>.


title: CAVEATS
content:
While <b>autoflake</b> is highly effective, it's important to be aware of certain limitations:<br>- <b>autoflake</b> primarily relies on <b>pyflakes</b> for import detection. If <b>pyflakes</b> doesn't flag an import as unused, <b>autoflake</b> might not remove it (unless <i>--remove-all-unused-imports</i> is used).<br>- The <i>--remove-all-unused-imports</i> option is aggressive and might remove imports that are used in non-obvious ways (e.g., via <i>eval()</i>, <i>exec()</i>, or introspection), or for their side effects.<br>- Expanding star imports (<i>--expand-star-imports</i>) can drastically change code readability and potentially introduce naming conflicts if the imported names are common.<br>- Always use <b>autoflake</b> with version control. Review changes before committing, especially when using options like <i>--in-place</i> or <i>--expand-star-imports</i>.


title: INTEGRATION WITH PRE-COMMIT HOOKS
content:
<b>autoflake</b> is commonly used with <b>pre-commit</b>, a framework for managing and maintaining multi-language pre-commit hooks. Adding <b>autoflake</b> to your <i>.pre-commit-config.yaml</i> ensures that unused imports and variables are automatically removed before every commit, helping to maintain a clean codebase continuously. A typical entry might look like:<br><br><i>```yaml<br>- repo: https://github.com/PyCQA/autoflake<br>  rev: v2.3.1<br>  hooks:<br>    - id: autoflake<br>      args: ['--in-place', '--remove-all-unused-imports', '--remove-unused-variables', '--ignore-init-module-imports']<br>```</i>


title: RECOMMENDED WORKFLOW
content:
When used alongside other Python code quality tools, a common workflow is to apply <b>isort</b> first (to sort imports), then <b>autoflake</b> (to remove unused ones), and finally <b>black</b> (to format the code). This order minimizes conflicts and ensures a consistent and clean code style. For example: <br><i>isort . && autoflake --in-place --remove-all-unused-imports --remove-unused-variables --recursive . && black .</i>


title: HISTORY
content:
<b>autoflake</b> was created by myint as a focused tool to address the common problem of stale and unused code in Python projects. Its development stemmed from the need for a simple, yet effective, automatic solution for code cleanup, distinguishing itself by specializing in import and variable removal. It has since become a popular choice for integrating into automated workflows, particularly within pre-commit hooks and CI/CD pipelines, due to its speed and narrow scope. The tool's design reflects a philosophy of doing one thing well, making it a valuable complement to broader linters and formatters in the Python ecosystem.


title: SYNOPSIS
content:
<i>automake</i> [<i>OPTION</i>]... [<i>TEMPLATE</i>]...<br><br>Common usage:<br><b>automake</b> [<b>--add-missing</b>] [<b>--foreign</b>] [<b>--gnu</b>] [<i>directory</i>]


title: PARAMETERS
content:
<b><b>--add-missing</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically adds any missing standard GNU files (e.g., <i>install-sh</i>, <i>missing</i>, <i>mkinstalldirs</i>) required by the generated <i>Makefile.in</i>.<br><br><b><b>--foreign</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Relaxes the strict GNU coding standards enforcement. This allows <i>automake</i> to generate Makefiles for packages that do not fully conform to GNU standards.<br><br><b><b>--gnu</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enforces strict GNU coding standards. This is the default behavior if neither <b>--foreign</b> nor <b>--gnits</b> is specified.<br><br><b><b>--amdir</b>=<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory where <i>automake</i> should look for its data files (e.g., standard Makefile snippets).<br><br><b><b>--copy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When creating generated files, <i>automake</i> will copy them instead of creating symbolic links. This can be useful in environments where symlinks are problematic.<br><br><b><b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <i>automake</i> to regenerate the output files (<i>Makefile.in</i>, etc.) even if they appear to be up-to-date. Useful for ensuring a clean regeneration.<br><br><b><b>--no-force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>automake</i> from regenerating output files if they are already up-to-date. This is the default behavior, often used with build systems that manage dependencies.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints more detailed messages about the operations <i>automake</i> is performing, which can be helpful for debugging.<br><br><b><b>--warnings</b>=<i>category</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the types of warnings issued by <i>automake</i>. <i>category</i> can be 'all', 'none', or a comma-separated list of specific warning types.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message summarizing <i>automake</i>'s options and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of <i>automake</i> and exits.<br><br>


title: DESCRIPTION
content:
<i>automake</i> is a fundamental tool within the GNU Build System (Autotools) designed to automate the generation of <i>Makefile.in</i> files from simpler <i>Makefile.am</i> input files. Its primary goal is to streamline the process of creating portable Makefiles that adhere to GNU coding standards, making software easier to compile across various Unix-like systems. It works in conjunction with <i>autoconf</i>, which handles system configuration. Developers write a high-level <i>Makefile.am</i> specifying the components of their project (source files, headers, libraries, executables, etc.), and <i>automake</i> interprets this to produce a <i>Makefile.in</i>. This intermediate file is then processed by the <i>configure</i> script (generated by <i>autoconf</i>) to create the final system-specific <i>Makefile</i>. By abstracting away much of the complexity of manual Makefile writing, <i>automake</i> helps ensure consistency, portability, and adherence to established build practices for open-source projects.


title: CAVEATS
content:
While <i>automake</i> significantly simplifies <i>Makefile</i> creation for portable software, it is part of the larger Autotools suite, which can present a steep learning curve. Mastering the entire toolchain (<i>autoconf</i>, <i>automake</i>, <i>libtool</i>, etc.) requires understanding their intricate interactions. The generated <i>Makefiles</i> can be extensive and complex, making direct debugging challenging without a solid grasp of Autotools' underlying mechanisms. For very small or simple projects, the initial overhead of setting up and managing Autotools might be considered disproportionate to the benefits.


title: TYPICAL AUTOTOOLS WORKFLOW WITH AUTOMAKE
content:
The standard workflow for using <i>automake</i> within the Autotools suite typically involves several steps to prepare a project for compilation:<br>1. Create <i>configure.ac</i> (for <i>autoconf</i>) and <i>Makefile.am</i> files for your project.<br>2. Run <b>aclocal</b> to generate <i>aclocal.m4</i> from your <i>m4</i> macros.<br>3. Run <b>autoconf</b> to generate the primary <i>configure</i> script.<br>4. Run <b>automake</b> to process your <i>Makefile.am</i> files and generate <i>Makefile.in</i> files.<br>5. Optionally, run <b>libtoolize</b> if your project utilizes <i>libtool</i> for shared library management.<br>6. Finally, users of your software will execute <b>./configure</b> in the build directory, followed by <b>make</b> to compile and install the project.


title: MAKEFILE.AM: THE INPUT
content:
The <i>Makefile.am</i> file is the crucial input to <i>automake</i>. It provides a high-level, human-readable description of the project's structure, specifying components like source files, executables, libraries, data files, and their intended installation paths using a simplified and consistent syntax. <i>automake</i> then takes this compact definition and expands it into a comprehensive <i>Makefile.in</i>. This generated file includes all the intricate rules required for compilation, linking, installation, distribution (e.g., `make dist`), and cleanup, ensuring strict adherence to GNU standards. This abstraction layer is a key feature that makes <i>automake</i> a powerful tool for maintaining highly portable and standard-compliant software projects.


title: HISTORY
content:
<i>automake</i> is an integral component of the GNU Build System, popularly known as Autotools, which began its development in the early 1990s. Its primary motivation was to standardize and simplify the arduous process of compiling software across diverse Unix-like operating systems. Developed to complement <i>autoconf</i>, <i>automake</i> specifically addressed the complexity inherent in writing and maintaining portable <i>Makefiles</i>. Before <i>automake</i>, developers often had to manually craft complex <i>Makefile.in</i> files filled with numerous conditional statements. <i>automake</i> revolutionized this by abstracting the process, allowing developers to define their build rules in a much simpler <i>Makefile.am</i> format. This format is then intelligently translated into the appropriate <i>Makefile.in</i>, strictly adhering to GNU coding standards. Its continuous evolution underscores its importance in fostering robust and portable software development within the open-source ecosystem.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message and exit.<br><br><b><b>-i</b>, <b>--in-place</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make changes to files in place. This is often the most used option.<br><br><b><b>-d</b>, <b>--diff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show diffs of the changes instead of modifying files directly.<br><br><b><b>-r</b>, <b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run recursively over directories. Useful for entire projects.<br><br><b><b>-a</b>, <b>--aggressive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Fix more aggressively. Can be specified multiple times (e.g., <b>-aa</b>) for even more aggressive fixes. Use with caution.<br><br><b><b>-s</b> <i>SELECT</i>, <b>--select=</b><i>SELECT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Choose which errors and warnings to fix (e.g., <b>E111,W292</b>). You can find codes from <i>pycodestyle</i> documentation.<br><br><b><b>-I</b> <i>IGNORE</i>, <b>--ignore=</b><i>IGNORE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore specified errors and warnings from being fixed (e.g., <b>E501</b> to ignore line length).<br><br><b><b>--max-line-length=</b><i>LENGTH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum allowed line length. Overrides the default PEP 8 value (79).<br><br><b><b>--exit-code</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Return a non-zero exit code if changes were made to any files. Useful for CI/CD pipelines.<br><br><b><b>--list-fixes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all the fixes that <i>autopep8</i> can apply, along with their associated PEP 8 error codes.<br><br>


title: DESCRIPTION
content:
<i>autopep8</i> is a command-line utility that automatically formats Python code to conform to the PEP 8 style guide. It leverages the <i>pycodestyle</i> (formerly <i>pep8</i>) tool to identify style violations and then applies fixes for a wide range of common issues directly to the source code. This includes correcting indentation, removing trailing whitespace, adjusting blank lines, and more. While it can modify files in-place, it also offers a dry-run mode to display differences or print corrected code to standard output.<br><br><i>autopep8</i> is often used by developers to maintain consistent code style across projects, making codebases more readable and easier to maintain. It aims to be idempotent, meaning running it multiple times on the same file should not introduce further changes after the initial fixes are applied. It's particularly useful for quickly cleaning up code written by multiple contributors or legacy code that doesn't adhere to modern style guidelines.


title: CAVEATS
content:
While <i>autopep8</i> is effective for many style issues, it does not guarantee full PEP 8 compliance nor perfect code. It works best on syntactically valid Python code. Aggressive fixes (using <b>-a</b> or <b>-aa</b>) can sometimes introduce subtle changes that might require careful review. Always back up your code or use <i>autopep8</i> in conjunction with a version control system (e.g., Git) to easily review and revert changes.


title: INTEGRATION WITH IDES AND PRE-COMMIT HOOKS
content:
<i>autopep8</i> can be integrated into various Integrated Development Environments (IDEs) like VS Code or PyCharm, allowing automatic formatting on save. It is also commonly used as a pre-commit hook in version control systems, ensuring that all committed code adheres to styling standards before it enters the repository. This helps maintain code quality and consistency across a development team.


title: HISTORY
content:
<i>autopep8</i> emerged as a solution to automate the tedious process of manually fixing Python style violations reported by the <i>pep8</i> (now <i>pycodestyle</i>) linter. It was developed to make it easier for developers to adhere to the widely adopted PEP 8 style guide without significant manual effort. Its development aimed to provide a practical tool for code cleanup and consistency, predating the rise of more opinionated formatters like <i>Black</i>, offering a more configurable approach to code styling.


title: SYNOPSIS
content:
<b>autopkgtest</b> [<i>options</i>] {<i>&lt;source-package&gt;</i> | <i>&lt;deb-package&gt;</i> | <i>&lt;changes-file&gt;</i> | <i>&lt;dsc-file&gt;</i>} [-- <i>&lt;test-arguments&gt;</i>]


title: PARAMETERS
content:
<b><b>--testbed=&lt;spec&gt;</b> or <b>-B</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the isolated testbed environment (e.g., <i>schroot</i>, <i>qemu</i>, <i>lxc</i>) where tests will be executed.<br><br><b><b>--apt-source-path=&lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a directory containing APT sources list files to be used for package installation within the testbed.<br><br><b><b>--architecture=&lt;arch&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the target architecture for the testbed and package installation, essential for cross-architecture testing.<br><br><b><b>--schroot=&lt;spec&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a pre-configured <i>schroot</i> environment as the testbed, providing a chroot with additional capabilities.<br><br><b><b>--qemu=&lt;spec&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Utilizes a QEMU virtual machine as the testbed, enabling full system emulation and testing on different hardware architectures.<br><br><b><b>--lxc=&lt;spec&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Employs an LXC (Linux container) as the testbed, offering lightweight process and filesystem isolation.<br><br><b><b>--timeout=&lt;seconds&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a maximum runtime for the entire test suite, preventing tests from hanging indefinitely.<br><br><b><b>--output-dir=&lt;dir&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory where test results, logs, and any generated artifacts will be stored.<br><br><b><b>--shell</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens an interactive shell inside the testbed after tests complete (or fail), useful for manual debugging.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, showing more detailed information about the testing process.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing extensive diagnostic information for troubleshooting.<br><br>


title: DESCRIPTION
content:
<i>autopkgtest</i> is a powerful command-line tool primarily used in Debian and Ubuntu for running automated tests on binary and source packages. Its main purpose is to help package maintainers and distribution developers ensure that packages function correctly after being built and that new package versions do not introduce regressions.<br><br>The command executes tests defined by the package itself (typically in a <i>debian/tests/control</i> file) within an isolated testbed environment, such as a <i>schroot</i>, QEMU virtual machine, or LXC container. This isolation is crucial as it prevents tests from interfering with the host system or other tests, ensuring reproducible and reliable results.<br><br><i>autopkgtest</i> plays a vital role in continuous integration (CI) systems, enabling proactive detection of bugs, dependency issues, and build failures. This contributes significantly to the overall stability and quality of the distribution by providing a robust framework for comprehensive quality assurance across various architectures and releases.


title: CAVEATS
content:
<b>Requires a pre-configured testbed environment</b> (e.g., schroot chroots, QEMU images, LXC containers) to function correctly.<br><b>Testing can be resource-intensive</b>, demanding significant CPU, RAM, and disk space, especially for QEMU testbeds or large test suites.<br><b>Relies heavily on the <i>debian/tests/control</i> file</b> within the package for test definitions; a missing or malformed file will prevent tests from running.<br><b>Tests often require network access</b> to fetch dependencies, which must be appropriately configured within the testbed environment.


title: TESTBEDS
content:
<i>autopkgtest</i> relies on "testbeds" to provide isolated environments for executing tests. Common testbed types include <i>schroot</i> (a chroot with additional configuration), <i>QEMU</i> (a full system emulator for hardware isolation and cross-architecture testing), and <i>LXC</i> (lightweight Linux containers offering process isolation). This isolation ensures that tests run in a clean, reproducible state without impacting the host system or other packages, making the test results reliable.


title: TEST DEFINITION (DEBIAN/TESTS/CONTROL)
content:
For <i>autopkgtest</i> to run tests on a package, the package must contain a <i>debian/tests/control</i> file. This file specifies various test cases, their dependencies, and how they should be executed. It acts as a manifest, guiding <i>autopkgtest</i> on what to run and how to set up the test environment within the chosen testbed. This declarative approach allows package maintainers to define robust and repeatable tests.


title: HISTORY
content:
<i>autopkgtest</i> was developed as a critical component of Debian's quality assurance infrastructure, aiming to automate and standardize the testing of packages. Its inception was driven by the need to prevent regressions and ensure the stability of the distribution amidst a vast number of package uploads and updates.<br><br>It gained prominence as Debian and Ubuntu moved towards more robust continuous integration (CI) practices, becoming an integral part of automated build systems like <i>ci.debian.org</i> and <i>salsa.debian.org</i> (Debian's GitLab instance). The tool has continuously evolved to support various isolation technologies (schroot, QEMU, LXC) and features, reflecting the diverse testing requirements of a large Linux distribution.


title: SYNOPSIS
content:
<b>autopsy</b> [<i>options</i>]<br>The `autopsy` command typically launches a web server interface. Once running, interaction primarily occurs through a web browser.


title: PARAMETERS
content:
<b><b>-p</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the TCP port for the `autopsy` web server to listen on. The default port is usually 9999.<br><br><b><b>-b</b> <i>&lt;address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Binds the web server to a specific IP address. By default, it might listen on all available interfaces.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs `autopsy` in debug mode, providing more verbose output to the console for troubleshooting.<br><br><b><b>-l</b> <i>&lt;logfile&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs log output to the specified file instead of standard error.<br><br><b><b>-c</b> <i>&lt;config_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to use for `autopsy` settings.<br><br>


title: DESCRIPTION
content:
The `autopsy` command, historically part of The Sleuth Kit (TSK), served as a <i>web-based graphical interface</i> for digital forensic analysis. It allowed investigators to manage cases, add hosts, and analyze disk images and other forms of digital evidence through a web browser. Unlike tools that perform direct analysis on the command line, `autopsy` provided a structured environment to present and navigate the data extracted by underlying TSK utilities like `mmls`, `fls`, `istat`, and `icat`. <br><br>It did not itself parse file systems or extract data; instead, it acted as an orchestrator and viewer, making complex forensic data more accessible and manageable. Users would launch the `autopsy` command, which would start a local web server (typically on port 9999), and then access the forensic browser via a web browser to perform their investigations. Its primary goal was to simplify the process of examining large datasets and presenting findings.


title: CAVEATS
content:
The command-line `autopsy` discussed here refers to the <i>legacy web-based version</i> of Autopsy. This version is largely superseded by the modern, standalone Java-based Autopsy Graphical User Interface (GUI) application, which offers more features, a more robust interface, and is actively developed. While the old `autopsy` command might still be available in some distributions, it is generally not recommended for new forensic cases due to its age, potential security vulnerabilities (being a web server), and lack of modern features. Its primary value is historical or for very specific legacy environments.


title: CORE WORKFLOW
content:
The typical workflow using the original `autopsy` command involved:<br>1. Launching the `<b>autopsy</b>` command to start the web server.<br>2. Accessing the interface via a web browser (e.g., `http://localhost:9999`).<br>3. <i>Creating a Case</i>: Setting up a new investigation.<br>4. <i>Adding a Host</i>: Associating forensic images with a specific machine.<br>5. <i>Adding a Disk Image</i>: Importing raw disk images (e.g., `dd` images, E01 files) for analysis.<br>6. <i>Analyzing Evidence</i>: Using the interface to browse file systems, search for keywords, view timelines, and extract files, all powered by the underlying TSK tools.


title: HISTORY
content:
The `autopsy` command-line tool has a rich history within the digital forensics community. It was originally developed by <i>Brian Carrier</i> as part of The Sleuth Kit (TSK), a collection of command-line forensic tools. The first major release of Autopsy as a web-based interface (often referred to as Autopsy 2.x) emerged in the early 2000s, providing a much-needed user-friendly frontend to the powerful TSK utilities. This web interface, launched via the `autopsy` command, revolutionized how digital evidence was analyzed by making complex data more navigable. As technology evolved, so did the need for a more robust and integrated solution. This led to the development of the modern <i>Java-based Autopsy GUI</i>, which offers a full-fledged desktop application experience, significantly expanding capabilities beyond the original web interface. The command-line `autopsy` thus represents an important evolutionary step in digital forensics tools.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message and exit.<br><br><b><b>-c</b>, <b>--cycle</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cycle through available profiles based on the current setup.<br><br><b><b>-s</b>, <b>--save</b> <i>PROFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Save the current display setup as a new <i>PROFILE</i>.<br><br><b><b>-l</b>, <b>--load</b> <i>PROFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load and apply the specified <i>PROFILE</i>.<br><br><b><b>-d</b>, <b>--detect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detect connected outputs and load the most suitable profile. (Default action).<br><br><b><b>-w</b>, <b>--wait-delay</b> <i>DELAY</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait <i>DELAY</i> seconds for outputs to settle before detection.<br><br><b><b>-m</b>, <b>--match-closest</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load the closest matching profile, even if output names differ.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force application of a profile, even if it seems unnecessary.<br><br><b><b>-r</b>, <b>--resume</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resume the last used profile.<br><br><b><b>-L</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all saved display profiles.<br><br><b><b>-D</b>, <b>--delete</b> <i>PROFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete the specified <i>PROFILE</i>.<br><br><b><b>-u</b>, <b>--unplug</b> <i>PROFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mark a profile as unplugged (relevant for automatic detection logic).<br><br><b><b>-S</b>, <b>--switch-layout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switch keyboard layout using <i>setxkbmap</i> when applying a profile.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>--current</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the name of the currently active profile.<br><br><b><b>--default</b> <i>PROFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the default profile to be loaded if no match is found.<br><br><b><b>--change-timeout</b> <i>SECONDS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the detection timeout for display change events.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't apply changes, just show what <i>autorandr</i> would do.<br><br><b><b>--ignore-lid</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore the laptop lid state when detecting profiles.<br><br><b><b>--power-on-connected</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to power on connected but currently off outputs.<br><br><b><b>--dont-power-off-disconnected</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not power off outputs that become disconnected.<br><br><b><b>--dont-suspend-unconnected</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not suspend outputs that are no longer connected.<br><br><b><b>--dont-change-primary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not alter the primary display setting.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose output for debugging.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print extensive debug output.<br><br><b><b>--hook-dir</b> <i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative directory for profile hooks.<br><br><b><b>--run-hooks</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly run hooks for the current profile without changing the display.<br><br><b><b>--config-dir</b> <i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration directory.<br><br><b><b>--recurse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively apply profiles, useful for nested display setups.<br><br><b><b>--skip-missing-outputs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not fail if some configured outputs are missing.<br><br><b><b>--skip-unconfigured-outputs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not modify outputs that are not part of the loaded profile.<br><br>


title: DESCRIPTION
content:
<i>autorandr</i> is a command-line utility for Linux that intelligently adjusts XRandR display configurations based on connected outputs. It allows users to save various display profiles (e.g., laptop only, external monitor, projector setup) and automatically loads the most suitable one when display hardware changes are detected. This eliminates the need for manual configuration with <i>xrandr</i> every time a monitor is plugged in or unplugged, significantly simplifying multi-monitor management for mobile users. Beyond simple detection, it supports hooks to run custom scripts before or after a profile is applied, enabling further automation like wallpaper changes or keyboard layout adjustments.


title: CAVEATS
content:
<i>autorandr</i> relies on the X server being active and the <i>xrandr</i> utility. It might require integration with system services (e.g., <i>systemd</i> user units) or desktop environment startup scripts for seamless automatic detection and application on display events. Rapid changes in display states can sometimes confuse its detection logic.


title: HOOKS
content:
<i>autorandr</i> supports powerful <i>pre-switch</i> and <i>post-switch</i> hook scripts, located within profile subdirectories (e.g., <i>~/.config/autorandr/profiles/PROFILE/pre-switch</i>). These scripts execute before and after a profile is applied, enabling custom actions like setting wallpaper, adjusting keyboard layouts, or launching applications specific to a display setup.


title: AUTOMATIC DETECTION
content:
When run without arguments (e.g., simply <b>autorandr</b>), the command automatically attempts to detect the current display hardware and loads the best-matching saved profile. This behavior is crucial for integrating it into system event triggers.


title: INTEGRATION
content:
For full automation, <i>autorandr</i> is often integrated with system-level event handling, such as <i>udev</i> rules for display hot-plugging, or configured as a <i>systemd</i> user service that triggers on relevant display changes. Desktop environment startup scripts can also run <i>autorandr --detect</i>.


title: HISTORY
content:
<i>autorandr</i> emerged to address the common pain point of manual <i>xrandr</i> scripting for mobile Linux users frequently connecting to different display setups. It was developed to automate the detection and application of display configurations, building upon the capabilities of the X RandR extension. Its focus on simplicity and extensibility through hooks has made it a popular choice in the Linux community for dynamic multi-monitor management.


title: SYNOPSIS
content:
<b>autorecon</b> [<i>OPTIONS</i>] <<i>TARGETS</i>><br><br>Example: <b>autorecon</b> -t example.com -o ~/recon_results --full-recon


title: PARAMETERS
content:
<b>-t <target>, --target <target></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target IP address(es) or domain name(s) to scan. Multiple targets can be separated by commas.<br><br><b>-o <directory>, --output <directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output directory where all scan results will be stored. A separate subdirectory is created for each target.<br><br><b>-p <ports>, --ports <ports></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ports to scan (e.g., '80,443', 'top1000', 'full'). Defaults to top ports if not specified for Nmap.<br><br><b>--full-recon</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a comprehensive reconnaissance scan, including Nmap, web enumeration, and vulnerability checks.<br><br><b>--web-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Focuses solely on web-related reconnaissance and vulnerability scanning on discovered web ports.<br><br><b>--nmap-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only performs Nmap scans (full TCP, UDP, and service version detection).<br><br><b>--dns-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only performs DNS-related enumeration tasks, such as subdomain enumeration and DNS record lookups.<br><br><b>--quick</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a faster, less comprehensive scan, suitable for quick assessments.<br><br><b>--threads <num></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of concurrent threads to use for various scanning modules, speeding up execution.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more detailed information during the scan process.<br><br><b>--no-screenshots</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the automated web screenshotting process, which can be time-consuming.<br><br><b>--force-https</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces all web scans to use HTTPS instead of HTTP.<br><br><b>--skip-nmap</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the Nmap port scanning phase entirely, assuming port information is already known or not needed.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current version of <i>autorecon</i>.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the help message and exits.<br><br>


title: DESCRIPTION
content:
<i>autorecon</i> is a powerful, open-source tool designed to automate the initial reconnaissance phase of a penetration test, particularly for web applications. It streamlines and combines various common enumeration and scanning techniques into a single, cohesive workflow.<br><br>The tool acts as an orchestrator, leveraging and integrating several other specialized tools like Nmap for port scanning, GoBuster for directory enumeration, Nikto/WPScan for web vulnerability scanning, and various subdomain enumeration tools. Its primary goal is to provide a comprehensive initial footprint of a target, identifying open ports, running services, web servers, subdomains, hidden directories, and potential vulnerabilities. This automation saves significant time and effort for security professionals and ethical hackers.<br><br><i>autorecon</i> structures its output meticulously, creating organized directories for each scan type and target, making it easier to review findings and prioritize further investigation.


title: CAVEATS
content:
<i>autorecon</i> is not a standard Linux distribution command; it typically requires manual installation (e.g., via <b>pip</b> or cloning its GitHub repository).<br>It acts as a wrapper, meaning its effectiveness and accuracy are heavily dependent on the underlying tools it orchestrates (like Nmap, Nikto, GoBuster, etc.). Ensure these dependencies are installed and accessible.<br>Using <i>autorecon</i> can generate significant network traffic, potentially triggering Intrusion Detection/Prevention Systems (IDS/IPS) or Web Application Firewalls (WAFs).<br>Always ensure you have explicit permission to perform reconnaissance on any target to avoid legal issues.<br>While it automates much of the initial legwork, manual analysis of the voluminous output is still crucial for effective penetration testing.


title: INSTALLATION
content:
<i>autorecon</i> is typically installed via pip: <b>pip install autorecon</b>. Alternatively, it can be cloned directly from its GitHub repository, which often includes a setup script for dependencies.


title: DEPENDENCIES
content:
<i>autorecon</i> relies heavily on external tools. Before running, ensure you have essential tools like Nmap, GoBuster, Nikto, and others commonly used in web reconnaissance installed and accessible in your system's PATH.


title: OUTPUT STRUCTURE
content:
For each target, <i>autorecon</i> creates a dedicated directory within the specified output folder. Inside, it organizes results into subdirectories such as 'nmap', 'web', 'dns', etc., making it easy to navigate and review specific scan findings.


title: HISTORY
content:
<i>autorecon</i> was developed by Tib3rius, a well-known figure in the cybersecurity community, particularly recognized for his OSCP (Offensive Security Certified Professional) course and content. It emerged from the practical need to streamline and standardize the initial reconnaissance phase of penetration tests, which often involves repeating similar steps with various tools. Its development focused on automating these tedious, yet critical, tasks to improve efficiency and consistency for security professionals and ethical hackers. It gained popularity within the CTF (Capture The Flag) and penetration testing communities due to its comprehensive nature and ease of use in initial information gathering.


title: SYNOPSIS
content:
<b>autossh</b> [<i>options</i>] [<i>--</i>] [<i>ssh_options</i>] [<i>user@</i>]<i>host</i> [<i>command</i>]


title: PARAMETERS
content:
<b><b>-M</b> <i>port[:count]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a port for the monitoring connection. If set to 0, no monitoring port is used. If <i>count</i> is specified, <i>autossh</i> exits after <i>count</i> consecutive failures of the monitoring connection. The monitoring connection provides a more robust check for stalled tunnels beyond just the SSH process exit status.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <i>autossh</i> to fork into the background before executing <i>ssh</i>. This is useful when running <i>autossh</i> as a service or from a startup script.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>ssh</i> not to execute a remote command. This option is passed directly to <i>ssh</i> and is commonly used when setting up port forwarding (e.g., <i>-L</i>, <i>-R</i>, <i>-D</i>) without an interactive shell.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces pseudo-terminal allocation on the remote system. Passed directly to <i>ssh</i>. Useful for interactive sessions or when a command requires a TTY.<br><br><b><b>-T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables pseudo-terminal allocation. Passed directly to <i>ssh</i>.<br><br><b><i>ssh_options ...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Any remaining arguments on the command line are passed directly to the <i>ssh</i> command that <i>autossh</i> executes. This allows the use of all standard <i>ssh</i> options like <i>-L</i>, <i>-R</i>, <i>-D</i>, <i>-p</i>, <i>-l</i>, <i>-i</i>, etc.<br><br><b><b>AUTOSSH_POLL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An environment variable setting the interval (in seconds) between connection checks (default: 10 seconds). This applies to both monitoring port checks and process exit status checks.<br><br><b><b>AUTOSSH_GATETIME</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An environment variable setting the time (in seconds) that <i>ssh</i> must be successfully running before <i>autossh</i> considers the connection stable (default: 30 seconds). If <i>ssh</i> exits before this time, it's considered a fast failure.<br><br><b><b>AUTOSSH_MAXSTART</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An environment variable setting the maximum number of times <i>ssh</i> can be started before <i>autossh</i> gives up and exits (default: 0, which means never give up).<br><br><b><b>AUTOSSH_LOGLEVEL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An environment variable setting the verbosity of <i>autossh</i>'s logging (0=none, 1=default, 2=verbose, 3=debug).<br><br><b><b>AUTOSSH_PATH</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An environment variable to specify the full path to the <i>ssh</i> executable, if it's not in the system's PATH.<br><br>


