# CommandSection

title: PARAMETERS
content:
<b>--autostart</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used internally by the desktop environment to launch Latte Dock on system startup. Typically not invoked manually by users.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output to the console. This is useful for developers or users troubleshooting issues with the dock's behavior.<br><br><b>--display <display></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X display to connect to. This option is rarely used for a desktop dock application as it usually connects to the primary display.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message to the standard output, listing all available command-line options and their basic usage.<br><br><b>--profile <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches Latte Dock using a specific, pre-saved profile configuration. This allows users to quickly switch between different dock layouts and settings for various use cases.<br><br><b>--replace</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replaces an already running instance of Latte Dock with a new one. This is useful for restarting the dock without needing to log out or manually kill the process.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current version information of the Latte Dock application to the standard output.<br><br>


title: DESCRIPTION
content:
Latte Dock is a highly configurable and visually stunning dock for the KDE Plasma desktop environment. It provides an intuitive way to launch applications, manage running tasks, and access system tray icons, mimicking popular dock functionalities found in other operating systems. Latte Dock distinguishes itself with advanced visual effects, animations, and extensive customization options, allowing users to create unique layouts with multiple docks and panels. It integrates seamlessly with Plasma, offering dynamic and intelligent behavior for windows and widgets, enhancing the overall desktop experience. While no longer actively developed, it remains a popular choice for its aesthetic appeal and rich features.


title: CAVEATS
content:
Latte Dock is primarily designed for the KDE Plasma desktop environment and may not function correctly or offer full features on other desktop environments (e.g., GNOME, XFCE).<br>Its extensive visual effects can sometimes be resource-intensive on older hardware, though performance is generally optimized.<br>As of late 2022 / early 2023, active development on Latte Dock has been discontinued. While it remains functional, users should be aware that no new features or major bug fixes are expected.


title: CONFIGURATION
content:
Latte Dock's extensive configuration options are primarily accessed through its graphical settings interface, not via command-line arguments. This allows users to customize dock position, size, visibility, behavior, visual effects, and add/remove widgets and launchers with ease.


title: INTEGRATION WITH PLASMA
content:
Latte Dock leverages Plasma's API to integrate seamlessly, allowing it to display Plasma widgets, system tray icons, and interact intelligently with Plasma's window management. This tight integration ensures a cohesive and native user experience within the KDE Plasma environment.


title: HISTORY
content:
Latte Dock originated as a project to bring a highly customizable and aesthetically pleasing dock experience to the KDE Plasma desktop. It quickly gained popularity within the KDE community for its advanced features, beautiful animations, and deep integration with Plasma's desktop shell and widgets. Its development aimed to provide an alternative to traditional panels and enhance the user's workflow with dynamic and intelligent dock behaviors. However, as of late 2022 and early 2023, active development on Latte Dock has ceased, with the lead developer citing personal reasons and a shift in focus. Despite its discontinuation, it remains a functional and widely used component for many Plasma users.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's help message and exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's version number and exit.<br><br><b>-f {json,text,yaml,csv}, --output-format {json,text,yaml,csv}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format. Common choices include <b>json</b> for structured data, <b>text</b> for human-readable output, <b>yaml</b> for structured data, or <b>csv</b> for tabular data.<br><br><b>-o FILE, --output-file FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the decoded output to the specified <i>FILE</i> instead of standard output.<br><br><b>-p, --pretty-print</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If the output format is JSON or YAML, this option formats the output with indentation and line breaks for improved readability.<br><br><b>--show-device-messages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include messages generated by the test device itself, in addition to the standard LTRP messages.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress informational and non-critical messages, showing only warnings or errors.<br><br><b>--log-level {critical,error,warning,info,debug}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level for the command's own internal messages. Options range from <b>critical</b> (least verbose) to <b>debug</b> (most verbose).<br><br><b>FILE...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more input files containing LTRP messages to decode. If no files are specified, <b>lavadecode</b> reads from standard input (stdin).<br><br>


title: DESCRIPTION
content:
The <b>lavadecode</b> command is a utility from the <I>LAVA (Linaro Automated Validation Architecture)</I> project. Its primary function is to parse and decode <I>LAVA Test Reporting Protocol (LTRP)</I> messages, which are typically streamed as JSON objects during a LAVA test execution. These messages can come from standard input or specified log files.<br><br><b>lavadecode</b> transforms these raw LTRP streams into more human-readable formats (like plain text, CSV, YAML) or structured machine-parsable formats (like pretty-printed JSON), making it easier to analyze test results, debug test failures, or integrate LAVA output into other reporting or analysis tools. It's an essential tool for developers and testers working within the LAVA ecosystem to understand the detailed progress and outcomes of their automated tests.


title: CAVEATS
content:
<b>lavadecode</b> is specific to the LAVA (Linaro Automated Validation Architecture) project and is designed to process <I>LAVA Test Reporting Protocol (LTRP)</I> messages. It will not work with general log files or arbitrary JSON data that does not conform to the LTRP specification. Its availability depends on whether <b>lava-tool</b> (or LAVA itself) is installed on your system.


title: INPUT SOURCE
content:
<b>lavadecode</b> can process LTRP messages from either files specified as arguments or directly from standard input (stdin). This makes it flexible for piping output from other commands or reading from persistent log files.


title: OUTPUT DESTINATION
content:
By default, the decoded output is sent to standard output (stdout). However, the <b>--output-file</b> (<b>-o</b>) option allows redirecting the output to a specified file, which is useful for saving results or further processing.


title: HISTORY
content:
<b>lavadecode</b> is an integral part of the <I>LAVA (Linaro Automated Validation Architecture)</I> project, an open-source continuous integration system for validating hardware. Its development has evolved alongside the LTRP (Lava Test Reporting Protocol) specification, which defines the JSON-based messages exchanged during LAVA test runs. As LAVA has matured, <b>lavadecode</b> has been continuously updated to support new LTRP features and improve its decoding capabilities, ensuring compatibility with the latest LAVA server and test-runner versions. Its usage is central to analyzing LAVA's automated testing output.


title: PARAMETERS
content:
<b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs internal debug information to a file, typically for troubleshooting purposes.<br><br><b>--config <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the <i>lazydocker</i> configuration file.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the current version of <i>lazydocker</i> and exits.<br><br><b>-f, --file <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a <i>docker-compose.yml</i> file. This is useful when the compose file is not in the current directory or has a non-standard name.<br><br><b>-p, --project <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the Docker-Compose project. Overrides the default project name derived from the directory.<br><br>


title: DESCRIPTION
content:
<i>lazydocker</i> is an open-source terminal user interface (TUI) that provides a convenient and interactive way to manage your Docker and Docker-Compose environments. It allows users to effortlessly view logs, inspect resources, restart containers, stop/start services, prune unused items, and much more, all without needing to remember numerous complex Docker CLI commands.<br><br>Built for developers and operators who prefer a terminal-centric workflow, <i>lazydocker</i> offers a quick overview and precise control over your Docker setup. Its intuitive interface, rich feature set, and extensive keyboard shortcuts make common Docker operations accessible, efficient, and enjoyable, significantly streamlining container management tasks.


title: CAVEATS
content:
<i>lazydocker</i> requires the Docker daemon to be running and accessible. While powerful for interactive management, it is not designed for scripting or automated workflows. It primarily offers a visual, interactive layer over existing Docker CLI functionalities, rather than replacing them entirely.


title: KEYBINDINGS AND NAVIGATION
content:
<i>lazydocker</i> is heavily reliant on keyboard shortcuts for navigation and actions. Users can press <b>?</b> within the application to view a comprehensive list of available keybindings, which are crucial for efficient use. Common actions include moving between panels (arrow keys), refreshing (r), stopping (s), restarting (R), viewing logs (l), and more.


title: CONFIGURATION
content:
The behavior and appearance of <i>lazydocker</i> are highly customizable through a YAML configuration file, typically located at <i>~/.config/lazydocker/config.yml</i> (or platform equivalent). This file allows users to define custom keybindings, themes, startup preferences, and various display options, tailoring the experience to individual needs.


title: HISTORY
content:
<i>lazydocker</i> was created by Jesse Duffield, a software engineer known for creating other 'lazy' tools like <i>lazygit</i>. It was first released around 2018-2019, quickly gaining traction within the developer community for its efficient terminal-based approach to Docker management. Written in Go, its development has been community-driven, with continuous improvements and feature additions.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for the command.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the current version of <b>lazygit</b>.<br><br><b><b>--config</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom path for the configuration file (defaults to ~/.config/lazygit/config.yml).<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug logging, which outputs detailed messages to the log file.<br><br><b><b>--git-dir</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the path to the Git repository directory (e.g., '.git').<br><br><b><b>--logfile</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom path for the log file (defaults to ~/.config/lazygit/logs/lazygit.log).<br><br><b><b>--work-tree</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the path to the Git working tree directory (e.g., '.').<br><br>


title: DESCRIPTION
content:
<b>lazygit</b> is a popular terminal-based user interface (TUI) for Git, designed to simplify complex Git operations and provide a visual overview of your repository's status. It allows users to manage Git workflows directly from the command line, leveraging an interactive, curses-like interface.<br><br>With <b>lazygit</b>, you can effortlessly perform common Git actions such as adding, committing, pushing, pulling, rebasing, merging, and stashing changes. It presents different aspects of your repository—like files, branches, commits, and stashes—in distinct panels, making it easy to navigate and interact with your Git history. Its keyboard-driven approach aims to increase efficiency by minimizing context switching and providing quick access to powerful Git features. It's written in Go and supports various platforms.


title: CAVEATS
content:
<b>lazygit</b> relies on the underlying <b>git</b> command-line tool being installed and properly configured. While highly intuitive, its keyboard-driven interface can have a slight learning curve for users accustomed to mouse-centric GUIs. Although it covers most common Git operations, very complex or obscure Git commands might still require dropping back to the pure <b>git</b> CLI, though <b>lazygit</b> often provides a convenient way to do so.


title: KEYBINDINGS
content:
<b>lazygit</b> is heavily reliant on keybindings for navigation and operation. Users can customize these keybindings extensively through its configuration file to suit their preferences and workflows, making it incredibly efficient for power users.


title: CONFIGURATION
content:
The command is highly customizable via a YAML configuration file, typically located at <I>~/.config/lazygit/config.yml</I>. This file allows users to modify themes, layout, keybindings, and even define custom commands and aliases, tailoring the experience to their specific needs.


title: HISTORY
content:
Created by Jesse Duffield (jesseduffield), <b>lazygit</b> quickly gained popularity after its initial releases around 2018-2019. Developed in Go, it was designed to provide a more intuitive and visually appealing way to interact with Git in the terminal than traditional command-line interfaces. Its active development and strong community contributions have cemented its place as a go-to tool for many developers.


title: SYNOPSIS
content:
<I>lb</I> &lt;command&gt; [options]<br><br>Typical commands include:<br><I>lb</I> <I>config</I> [options]<br><I>lb</I> <I>build</I><br><I>lb</I> <I>clean</I>


title: PARAMETERS
content:
<b>--architecture</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target architecture for the image (e.g., <I>amd64</I>, <I>i386</I>).<br><br><b>--distribution</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Debian or Ubuntu release name (e.g., <I>bullseye</I>, <I>noble</I>) to build from.<br><br><b>--binary-images</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output image formats (e.g., <I>iso-hybrid</I>, <I>netboot</I>, <I>tar</I>).<br><br><b>--packages-list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a space-separated list of additional package names to include in the image.<br><br><b>--chroot-filesystem</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the filesystem type for the live rootfs (e.g., <I>squashfs</I>, <I>ext4</I>).<br><br><b>--linux-packages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the kernel metapackages to include (e.g., <I>linux-image-amd64</I>).<br><br><b>--debconf-selections</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows pre-seeding answers to debconf questions during package installation.<br><br><b>--apt-recommends</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the installation of recommended packages via APT (<I>true</I> or <I>false</I>).<br><br>


title: DESCRIPTION
content:
<I>lb</I> (short for <I>live-build</I>) is a powerful command-line tool used to create live operating system images for Debian and its derivatives, like Ubuntu. These images can be used to boot directly from a CD, DVD, USB drive, or network, providing a fully functional system without requiring installation to a hard drive.<br><br><I>lb</I> offers extensive customization options, allowing users to define the distribution, architecture, desktop environment, included packages, boot options, and pre-seeded configurations. It automates the entire image creation process, from downloading packages to building the final ISO or other image formats. It's particularly useful for creating specialized live systems, rescue disks, or demonstration environments.


title: CAVEATS
content:
Building live images with <I>lb</I> can be resource-intensive, requiring significant disk space and network bandwidth, and the process can be time-consuming.<br><br>Many operations require root privileges.<br><br>The configuration can be complex due to the vast number of customization options and its reliance on a subcommand-based workflow.<br><br>It is primarily designed for Debian and its derivatives like Ubuntu.


title: USAGE WORKFLOW
content:
The typical <I>live-build</I> workflow involves a three-step process: First, run <I>lb config</I> to generate the configuration files in a <I>config/</I> directory. Second, execute <I>lb build</I> to initiate the image creation based on the generated configuration. Finally, use <I>lb clean</I> to remove the temporary build environment and generated artifacts, optionally preserving the final image.


title: CUSTOMIZATION HOOKS
content:
<I>live-build</I> offers extensive customization capabilities through hooks and includes directories. Users can place custom scripts (e.g., in <I>config/chroot_local-hooks/</I>) or files (e.g., in <I>config/chroot_local-includes/</I>) within the generated chroot environment. These are executed or included at specific stages of the build process, allowing for deep personalization of the live system, such as installing additional software not available in repositories, setting up user accounts, or applying system configurations.


title: HISTORY
content:
<I>live-build</I> (<I>lb</I>) is the spiritual successor to the earlier <I>live-helper</I> project, designed to provide a more modular and flexible framework for creating live Debian systems. Its development is closely integrated with the Debian Live project, aiming to simplify the production of custom live images for various use cases, ranging from official Debian Live distributions to specialized derivative systems. It has evolved to support a wide array of architectures and boot methods and is actively maintained within the Debian community.


title: SYNOPSIS
content:
<b>lbu</b> &lt;command&gt; [options] [arguments...]<br><br>Common commands:<br><b>lbu commit</b> [<i>module_name</i>]<br><b>lbu update</b> [<i>module_name</i>]<br><b>lbu info</b><br><b>lbu build</b> <i>module_name</i> [<i>source_path</i>]<br><b>lbu convert</b> <i>package_file</i><br><b>lbu add</b> <i>module_name</i> <i>file_or_directory</i><br><b>lbu remove</b> <i>module_name</i> <i>file_or_directory</i><br><b>lbu --help</b>


title: PARAMETERS
content:
<b><b>commit</b> [<i>module_name</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves all current changes made to the live system into a new or specified existing `.xzm` module. If no module name is provided, changes are saved to the default <I>porteus_changes.xzm</I>.<br><br><b><b>update</b> [<i>module_name</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies system updates and pending changes to an existing `.xzm` module, typically used for persistent changes. Similar to <b>commit</b> but implies updating an existing state.<br><br><b><b>info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about currently loaded Porteus modules, pending changes, and system persistence status.<br><br><b><b>build</b> <i>module_name</i> [<i>source_path</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new `.xzm` module. Can build from an existing directory (<i>source_path</i>) or from installed packages if <i>source_path</i> is omitted and used with other options (e.g., from installed Slackware packages).<br><br><b><b>convert</b> <i>package_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts a specified package file (e.g., `.deb`, `.rpm`, `.tgz`) into a Porteus-compatible `.xzm` module, making it easy to integrate software from other distributions.<br><br><b><b>add</b> <i>module_name</i> <i>file_or_directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds specific files or directories to an existing `.xzm` module, allowing for granular module content management.<br><br><b><b>remove</b> <i>module_name</i> <i>file_or_directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specific files or directories from an existing `.xzm` module.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and available commands for <b>lbu</b>.<br><br>


title: DESCRIPTION
content:
<b>lbu</b> is a critical utility in <I>Porteus Linux</I>, specifically designed to manage the distribution's unique modular architecture. Porteus operates by loading a base system and then overlaying various <I>SquashFS modules</I> (traditionally `.xzm` files) which contain applications, drivers, or system modifications. The <b>lbu</b> command allows users to convert persistent changes made during a live session into a new `.xzm` module, update existing modules, create new ones from installed packages, and manage the boot process's module loading order. This tool is fundamental for maintaining a persistent state on live USB drives or CDs, enabling users to install software, apply updates, and configure their system, then save these changes back into a reloadable module. It facilitates a lightweight, fast, and highly customizable experience, ensuring that changes are saved efficiently without modifying the base system image directly. It's often used post-installation to "save changes" to a module for future sessions.


title: CAVEATS
content:
The <b>lbu</b> command is <I>exclusive</I> to <I>Porteus Linux</I> and will not function on other Linux distributions due to its reliance on Porteus's unique modular system and SquashFS `.xzm` modules. Improper usage, especially with <b>commit</b> or <b>update</b>, can lead to loss of unsaved changes or corrupt module files. Always ensure sufficient disk space when creating or modifying modules.


title: MODULE SYSTEM (.XZM FILES)
content:
<I>Porteus Linux</I> uses a modular system where most software and system components are stored in compressed read-only `.xzm` (SquashFS) files. <b>lbu</b> is the primary tool for managing these modules, allowing users to save, update, and create new ones. This modular approach makes Porteus highly flexible, easy to update, and efficient in terms of disk space and boot time.


title: PERSISTENCE IN PORTEUS
content:
For live USB/CD installations, <b>lbu</b> is crucial for achieving persistence. When a user makes changes (installs software, modifies configurations) during a live session, <b>lbu commit</b> or <b>lbu update</b> is used to save these changes into a persistent `.xzm` module (e.g., <I>porteus_changes.xzm</I>) which is then loaded automatically on subsequent boots, preserving the system state.


title: HISTORY
content:
<b>lbu</b> was developed as a core utility for <I>Porteus Linux</I> from its inception, designed to facilitate the distribution's unique modular and live-bootable nature. Its primary purpose has always been to manage the creation, update, and persistence of `.xzm` modules, which are central to Porteus's lightweight and customizable design. Over the years, its functionality has expanded to include convenient package conversion utilities, making it easier for users to integrate software from other distributions into their Porteus environment.


title: DESCRIPTION
content:
The command <b><I>lcf</I></b> is not a standard utility found in most common Linux distributions (e.g., Debian, Ubuntu, Fedora, RHEL).<br><br>Typically, Linux commands are part of core utilities packages, specific applications, or user-defined aliases/functions. The absence of <b><I>lcf</I></b> from standard documentation and system installations suggests several possibilities:<br>It might be a <i>typo</i> for another common command like <b><I>lsof</I></b> (list open files), <b><I>ls</I></b> (list directory contents), or commands related to specific software like <b><I>LSF</I></b> (Load Sharing Facility).<br>It could be a <i>custom script</i> or executable created by a system administrator or developer in a specific environment.<br>It might be an <i>alias</i> or a <i>shell function</i> defined in a user's or system's shell configuration file (e.g., .bashrc, .zshrc).<br>It could belong to a very <i>niche third-party application</i> or framework that is not widely adopted or installed by default.<br><br>Due to its non-standard nature, a universal synopsis, list of parameters, or detailed operational history for <b><I>lcf</I></b> cannot be provided.<br><br>Users encountering <b><I>lcf</I></b> are advised to check their local system's aliases (e.g., using <b><I>alias lcf</I></b>), shell functions (e.g., <b><I>type lcf</I></b>), or consult local documentation or the administrator who might have introduced it.


title: CAVEATS
content:
As <b><I>lcf</I></b> is not a standard command, its behavior, options, and security implications are entirely dependent on its specific implementation in a given environment. It could potentially be malicious or simply perform a custom task. Users should exercise caution when encountering unknown commands and verify their source and purpose.


title: IDENTIFYING CUSTOM COMMANDS
content:
If you encounter an unknown command like <b><I>lcf</I></b>, you can try to identify its nature using shell built-ins:<br><b><I>type lcf</I></b>: This command tells you how the shell interprets <b><I>lcf</I></b> (e.g., as an alias, function, built-in, or external command).<br><b><I>which lcf</I></b>: If <b><I>type</I></b> indicates it's an external command, <b><I>which</I></b> will show its full path. You can then inspect the script or executable at that path.<br><b><I>alias lcf</I></b>: If <b><I>type</I></b> suggests it's an alias, this command will reveal what <b><I>lcf</I></b> expands to.


title: HISTORY
content:
N/A - As <b><I>lcf</I></b> is not a standard Linux command, it does not have a documented history within the broader Linux ecosystem. Its existence would be specific to individual systems or projects where it was created or adopted.


title: PARAMETERS
content:
<b><i>-d</i>, <i>--last-change LAST_CHANGE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the date of the last password change. The date can be specified as <i>YYYY-MM-DD</i> or as the number of days since January 1, 1970 (Epoch).<br><br><b><i>-E</i>, <i>--expiredate EXPIRE_DATE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the account expiration date. This date can be specified as <i>YYYY-MM-DD</i> or as days since Epoch. An expired account cannot log in.<br><br><b><i>-I</i>, <i>--inactive INACTIVE_DAYS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of days after a password expires until the account is locked. A value of <i>-1</i> disables this inactivity period.<br><br><b><i>-l</i>, <i>--list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current password aging information for the specified <i>LOGIN</i> account. This option is typically available to all users for their own accounts, while other options require root privileges.<br><br><b><i>-m</i>, <i>--mindays MIN_DAYS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum number of days between password changes. A value of <i>0</i> means the user can change their password at any time.<br><br><b><i>-M</i>, <i>--maxdays MAX_DAYS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of days a password is valid. After this period, the user will be prompted to change their password. A value of <i>-1</i> disables password expiration.<br><br><b><i>-W</i>, <i>--warndays WARN_DAYS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of days of warning before a password expires. The user will be notified this many days in advance.<br><br><b><i>LOGIN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The username of the account to modify or query. This is a mandatory argument.<br><br>


title: DESCRIPTION
content:
<i>lchage</i> is a command-line utility conceptually used to display or modify password aging information for <i>local</i> user accounts. It directly manipulates the data typically stored in the <i>/etc/shadow</i> file, which contains secure user account information, including password expiration and aging policies.<br><br>This command allows administrators to control various aspects of a user's password lifecycle, such as the date of the last password change, the minimum and maximum number of days between password changes, the number of days of warning before a password expires, and the number of days an account may remain inactive after a password has expired before being locked.<br><br>By setting these parameters, <i>lchage</i> helps enforce security policies and ensures that users periodically update their passwords, reducing the risk of unauthorized access due to compromised or stale credentials. While many modern Linux distributions primarily use the <i>chage</i> command for this functionality, <i>lchage</i> would serve a similar purpose, specifically targeting local user accounts to manage their password aging attributes. It's an essential tool for maintaining robust account security.


title: CAVEATS
content:
<i>lchage</i> requires <i>root</i> privileges to modify any password aging information. Standard users can only use the <i>-l</i> option to list their own password aging details.<br><br>It directly modifies the <i>/etc/shadow</i> file; incorrect usage can lead to user accounts being locked out or security vulnerabilities.<br><br>It is important to note that <i>lchage</i> is <i>not</i> a standard command on many popular Linux distributions (e.g., Debian, Ubuntu, Red Hat Enterprise Linux, Fedora). The widely used and functionally equivalent command for managing password aging is <i>chage</i>. If <i>lchage</i> exists on a system, it is often a symbolic link to <i>chage</i> or a legacy utility specific to a particular environment. Users should generally prefer <i>chage</i> for this functionality.


title: PERMISSIONS
content:
Modifying password aging information using <i>lchage</i> typically requires <i>root</i> user privileges. The command operates on the <i>/etc/shadow</i> file, which is a critical system file containing sensitive user password hashes and account expiration details. Unauthorized access or modification of this file is restricted to prevent security breaches.


title: IMPACT ON USERS
content:
Incorrectly setting password aging parameters can significantly impact user experience and system security. For instance, setting <i>-M 0</i> (maxdays to 0) would force a password change at the next login, while setting a very low <i>-M</i> value could lead to frequent, disruptive password changes. Conversely, a very high or <i>-1</i> value could compromise security by allowing passwords to remain unchanged indefinitely.


title: HISTORY
content:
The concept of password aging and management tools like <i>lchage</i> (and more commonly, <i>chage</i>) emerged with the development of the <i>shadow password suite</i> for Linux. This suite, including programs that manage <i>/etc/shadow</i> and <i>/etc/passwd</i>, was designed to enhance system security by separating encrypted password hashes from public user information in <i>/etc/passwd</i>. Tools like <i>chage</i> (and conceptually <i>lchage</i>) were developed to give administrators granular control over password policies, which became increasingly important with the rise of networked systems and the need for stronger security practices. While <i>chage</i> became the predominant tool, <i>lchage</i> might represent an earlier, localized variant or a specific implementation tailored for certain system configurations.


title: SYNOPSIS
content:
<i><br>Not applicable: '<I>lci</I>' is not a standard Linux command with a defined synopsis. Its syntax would be specific to its custom implementation.</i>


title: DESCRIPTION
content:
The command '<I>lci</I>' is <I>not a standard or widely recognized command</I> within common Linux distributions. Unlike commands such as <B>ls</B>, <B>grep</B>, or <B>cd</B>, there is no official manual page (man page) or a widely distributed package that includes a utility named '<I>lci</I>' out-of-the-box. Its absence from standard command sets means that general documentation or typical usage patterns do not exist. It is highly probable that '<I>lci</I>' refers to a <I>custom script</I>, an <I>alias</I> defined in a user's shell configuration, or a command specific to a <I>very niche application</I> or development environment, possibly for internal tooling or specific hardware interaction. Users encountering '<I>lci</I>' should investigate its origin on their specific system by checking shell configurations, local scripts, or documentation pertinent to any specialized software they are using.


title: CAVEATS
content:
As '<I>lci</I>' is not a standard command, its behavior, options, and security implications are entirely dependent on its specific implementation on a given system. It could be an internal tool, a custom script, or an alias. Users should exercise caution and investigate its source if they encounter it unexpectedly. There are no general best practices or security recommendations for a non-standard command.


title: VERIFYING '<I>LCI</I>' ON YOUR SYSTEM
content:
To determine if '<I>lci</I>' exists and what it does on your specific system, you can try the following:<br>1. <B>which lci</B>: This command will show the full path to '<I>lci</I>' if it's an executable in your PATH.<br>2. <B>type lci</B>: This command will tell you if '<I>lci</I>' is an alias, function, or an executable file.<br>3. <B>man lci</B>: Check for a manual page, though it's highly unlikely to exist for a non-standard command.<br>4. Inspect your shell configuration files (e.g., <B>~/.bashrc</B>, <B>~/.zshrc</B>) for aliases or functions named '<I>lci</I>'.<br>If you find an executable, consider examining its contents (if it's a script) or its origin to understand its purpose.


title: HISTORY
content:
<i><br>Not applicable: '<I>lci</I>' does not have a documented history as a standard Linux command. Its development and usage history would be specific to its custom or niche implementation.</i>


title: DESCRIPTION
content:
The command <I>lckdo</I> does not appear to be a standard or widely recognized utility in common Linux distributions or POSIX specifications. It is not part of GNU coreutils, busybox, or other standard command sets. While it might exist as a highly specialized custom script within a very specific environment, or be a typographical error for another command (e.g., <I>sudo</I>, <I>lockfile</I>), there is no general documentation or man page available for it. Therefore, its intended functionality, syntax, and options are unknown.


title: CAVEATS
content:
As this command is not recognized, attempting to execute <I>lckdo</I> on a standard Linux system will likely result in a 'command not found' error. Users should verify the correct command if they intended to use a specific utility related to locking or execution.


title: POSSIBLE ORIGIN OR TYPO
content:
It is conceivable that <I>lckdo</I> could be a short form or typo for a combination of 'lock' and 'do', implying an action taken under a lock. However, there is no standard command with this exact name. Common related concepts involve <I>flock(1)</I> for advisory file locking, <I>lockfile(1)</I> for creating lock files, or custom scripts using <I>mkdir</I> for atomic lock creation, often combined with a subsequent command execution.


title: HISTORY
content:
No historical information or development details are available for <I>lckdo</I> as it is not a standard or widely documented Linux command.


title: SYNOPSIS
content:
lcov [OPTIONS]<br>Common usage:<br><b>lcov --directory DIR --capture --output-file FILE.info</b><br><b>lcov --add-tracefile FILE1.info --add-tracefile FILE2.info --output-file MERGED.info</b><br><b>lcov --list FILE.info</b><br><b>lcov --remove FILE.info PATTERN --output-file FILTERED.info</b><br><b>lcov --zerocounters --directory DIR</b>


title: PARAMETERS
content:
<b><b>--capture</b>, <b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Capture coverage data from the specified directory containing .gcda and .gcno files.<br><br><b><b>--directory DIR</b>, <b>-d DIR</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the base directory where compiled files and gcov data reside.<br><br><b><b>--output-file FILE</b>, <b>-o FILE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the generated LCOV tracefile to the specified path.<br><br><b><b>--add-tracefile FILE</b>, <b>-a FILE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the contents of an existing LCOV tracefile to the current data set.<br><br><b><b>--list</b>, <b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the contents of an LCOV tracefile, displaying coverage statistics in plain text.<br><br><b><b>--remove FILE PATTERN</b>, <b>-r FILE PATTERN</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove coverage data from a tracefile for files matching the specified pattern(s).<br><br><b><b>--zerocounters</b>, <b>-z</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reset all execution counters in .gcda files within the specified directory, preparing for a new coverage run.<br><br><b><b>--no-external</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude coverage data for files located outside the specified base directory.<br><br><b><b>--rc KEY=VALUE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set an LCOV configuration variable, e.g., 'lcov_branch_coverage=1' to enable branch coverage.<br><br>


title: DESCRIPTION
content:
<i>lcov</i> is a command-line utility that collects and processes code coverage data generated by the GNU Code Coverage tool (<i>gcov</i>). It's part of the LCOV project, which provides a set of tools for creating coverage reports for C/C++ and Fortran programs. <br><br>Its primary function is to consolidate data from multiple <i>gcov</i> output files (.gcda and .gcno), which represent execution counts and notes from program compilation, respectively. <i>lcov</i> can capture fresh coverage data, merge existing coverage tracefiles, remove irrelevant data, and list statistics. The output is typically an LCOV tracefile (.info format), which is then commonly used by <i>genhtml</i> to produce comprehensive, human-readable HTML reports highlighting lines of code executed, branches taken, and overall coverage percentages. This makes <i>lcov</i> an essential tool for assessing test suite effectiveness and code quality.


title: CAVEATS
content:
<i>lcov</i> relies on code being compiled with <i>gcov</i> instrumentation flags (e.g., <b>-fprofile-arcs -ftest-coverage</b>) and requires the presence of both <b>.gcda</b> (execution data) and <b>.gcno</b> (profiling notes) files. Inconsistent file paths between compilation and execution environments can lead to incorrect or incomplete coverage data. Processing very large codebases might be resource-intensive.


title: TYPICAL WORKFLOW
content:
A common workflow for using <i>lcov</i> and its companion tool <i>genhtml</i> to generate code coverage reports:<br>1. <b>Compile Code:</b> Compile your C/C++ code with <i>gcov</i> instrumentation flags. For example:<br>   <code>gcc -fprofile-arcs -ftest-coverage my_program.c -o my_program</code><br>2. <b>Run Tests/Application:</b> Execute your compiled program or test suite to generate .gcda files containing execution counts:<br>   <code>./my_program</code> (or run your automated test suite)<br>3. <b>Capture Coverage:</b> Use <i>lcov</i> to collect the .gcda and .gcno data and output it into an LCOV tracefile (.info format):<br>   <code>lcov --capture --directory . --output-file app.info</code><br>4. <b>Generate Report:</b> Use <i>genhtml</i> to convert the tracefile into a human-readable HTML report:<br>   <code>genhtml app.info --output-directory coverage_report</code><br>5. <b>View Report:</b> Open the generated <code>coverage_report/index.html</code> in a web browser to analyze the code coverage results.


title: HISTORY
content:
<i>lcov</i> was originally developed by IBM as part of the Linux Test Project. Since its inception in the early 2000s, it has steadily gained traction and become a widely adopted, de-facto standard for C/C++ code coverage analysis within Linux environments, providing robust and flexible tools for developers and quality assurance teams.


title: PARAMETERS
content:
<b><b>-o</b> <i>outputfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output file created by the linker. If not specified, <b>a.out</b> is used by default.<br><br><b><b>-L</b> <i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds <i>dir</i> to the list of directories that <b>ld</b> searches for libraries. This option is crucial when linking against custom or non-standard libraries.<br><br><b><b>-l</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for the library named <i>lib<b>name</b>.a</i> or <i>lib<b>name</b>.so</i>. The linker first tries the shared version, then the static version, in the directories specified by <b>-L</b>.<br><br><b><b>-rpath</b> <i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds <i>dir</i> to the runtime library search path encoded in the output executable. This allows the program to find shared libraries at runtime in specified locations.<br><br><b><b>-static</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs static linking, meaning all necessary library code is embedded directly into the executable, making it self-contained and not dependent on shared libraries at runtime.<br><br><b><b>-shared</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a shared library (dynamic library) instead of an executable file. This library can then be linked against by other programs or loaded at runtime.<br><br><b><b>-e</b> <i>entry</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the entry point address for the executable. This specifies where program execution begins when the executable is run.<br><br><b><b>-T</b> <i>scriptfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses <i>scriptfile</i> as the linker script. Linker scripts provide fine-grained control over the output file's layout, memory mapping, and symbol placement.<br><br><b><b>--version</b> <br> <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number of the <b>ld</b> program.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed information about the linker's operation, including the linker script used and libraries found.<br><br><b><b>-S</b> <br> <b>--strip-debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Strips debugging symbols from the output file, reducing its size.<br><br><b><b>-x</b> <br> <b>--discard-all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Discards all local symbols from the output file, similar to <b>-S</b> but also removes other non-global symbols.<br><br>


title: DESCRIPTION
content:
The <b>ld</b> command, often referred to as the GNU linker, is a fundamental utility in the software development process on Linux systems. Its primary role is to take one or more object files (produced by a compiler) and archive files (libraries) as input, then combine them into a single executable program, a shared library, or another object file. During this crucial process, <b>ld</b> resolves symbol references between different input files, assigns addresses to various code and data sections, and performs necessary relocations. It's responsible for mapping program segments (like <i>.text</i> for code, <i>.data</i> for initialized data, and <i>.bss</i> for uninitialized data) to specific memory locations within the output file. While developers often interact with <b>ld</b> indirectly via front-end compilers like <b>gcc</b>, understanding its direct usage and capabilities is vital for advanced tasks such as creating custom memory layouts or optimizing binary sizes. <b>ld</b> relies on a linker script, either a default one or a user-provided custom script, to define how the output sections are structured and how symbols are resolved.


title: CAVEATS
content:
<b>ld</b> is most commonly invoked indirectly by high-level compilers like <b>gcc</b>. Direct invocation is typically reserved for specialized linking tasks, such as creating embedded system firmware or manipulating the linker script.<br>Errors related to 'undefined references' are frequently encountered and usually indicate that a required library was not linked (missing <b>-l</b> or <b>-L</b> options) or that a symbol is not visible (e.g., due to C++ name mangling or incorrect declaration/definition).<br>Linker scripts provide immense power but require a deep understanding of the executable format (e.g., ELF) and memory layout, making them complex to write and debug.


title: LINKER SCRIPTS
content:
<b>ld</b> utilizes linker scripts to provide precise control over the linking process. These plain-text files allow developers to define how input sections from object files are mapped to output sections, specify the layout of the output file in memory, and control symbol placement. They are indispensable for advanced scenarios such as optimizing memory usage in embedded systems, creating custom executable formats, or placing specific code/data segments at fixed memory addresses.


title: DYNAMIC VS. STATIC LINKING
content:
<b>ld</b> supports two primary linking models: dynamic (shared) and static. <i>Dynamic linking</i> (default for many systems) creates smaller executables by referencing shared libraries that are loaded at runtime. This saves disk space and memory but introduces a dependency on the presence and version of those libraries. <i>Static linking</i>, enabled by the <b>-static</b> option, embeds all necessary library code directly into the executable, resulting in larger, self-contained binaries that have no runtime dependencies on shared libraries, offering greater portability but increased executable size.


title: HISTORY
content:
The <b>ld</b> command has roots in early Unix systems, serving as the fundamental tool for assembling executable programs. The GNU <b>ld</b>, part of the GNU Binutils collection, was developed as a free and open-source alternative to proprietary linkers. Its evolution has closely mirrored advancements in computing architectures and operating systems, adapting to new binary formats like ELF (Executable and Linkable Format), which is standard on Linux. Over decades, it has become the de facto linker for the GNU/Linux ecosystem, offering extensive support for various architectures and sophisticated customization through linker scripts, continually updated to meet modern software development demands.


title: PARAMETERS
content:
<b>-o <output></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the output file. If not specified, <i>a.out</i> is used by default.<br><br><b>-L <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>path</i> to the list of directories that <i>gold</i> searches for libraries.<br><br><b>-l <lib></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search the library named <i>liblib.a</i> or <i>liblib.so</i>. The linker searches the current directory, then directories specified by <i>-L</i>, and then standard system library directories.<br><br><b>--gc-sections</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable garbage collection of unused sections. This option removes sections that are not referenced by any used symbol, potentially reducing the size of the output binary.<br><br><b>--as-needed</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only link a library if an undefined symbol is referenced by an object file or another library that is linked before it. This can reduce the number of linked libraries and improve startup time.<br><br><b>-Map <mapfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write a map file to <i>mapfile</i>, which contains details about the linker's activity, including section layouts and symbol addresses.<br><br><b>--defsym <symbol>=<value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define a global symbol with the specified value. This is useful for injecting values into the linked program.<br><br><b>--rpath <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a runtime search path for shared libraries into the executable. This path is used by the dynamic linker at runtime.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display verbose information about the linking process.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the version number of <i>gold</i>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message with available options.<br><br>


title: DESCRIPTION
content:
<i>ld.gold</i> is an alternative, faster linker developed by Google as part of the GNU Binutils project. Its primary goal is to significantly improve linking speed, especially for large C++ applications, while maintaining high compatibility with the traditional GNU <i>ld</i> linker. It is designed to be a drop-in replacement for <i>ld</i> for most common linking tasks on ELF-based systems (Linux, Solaris, etc.).<br><br>Unlike <i>ld</i>, which is often a two-pass linker, <i>gold</i> is a single-pass linker, which contributes to its speed. It also uses more efficient data structures and algorithms, and can take advantage of multiple CPU cores for certain operations, such as symbol processing. <i>ld.gold</i> processes object files and libraries to produce executable programs or shared libraries, resolving symbol references and performing various optimizations.


title: CAVEATS
content:
While <i>ld.gold</i> aims for high compatibility with GNU <i>ld</i>, there might be subtle differences or limitations in handling very complex or non-standard linker scripts, or highly specialized features that are rarely used. In such niche cases, reverting to GNU <i>ld</i> might be necessary. It also primarily targets ELF binaries and might not be suitable for other executable formats where GNU <i>ld</i> has broader support.


title: PERFORMANCE FOCUS
content:
<i>ld.gold</i> achieves its speed advantage through several design choices: it's a single-pass linker (unlike GNU <i>ld</i>'s two-pass approach), uses efficient data structures for symbol tables and other internal states, and is designed to scale better with multi-core processors. This makes it particularly beneficial for incremental builds and rapid development cycles in large projects.


title: COMPATIBILITY
content:
The primary design principle of <i>ld.gold</i> was to be a drop-in replacement for GNU <i>ld</i> for the vast majority of use cases. This means it supports most of the common command-line options and linker script syntax that developers are accustomed to with <i>ld</i>, making the transition between the two linkers relatively seamless for many projects.


title: HISTORY
content:
Development of <i>gold</i> began at Google in 2008 with the goal of creating a faster, more efficient linker for large-scale software projects like Google Chrome and other internal applications. It was open-sourced and officially added to the GNU Binutils collection in 2011, becoming an alternative to the traditional GNU <i>ld</i>. Its design emphasizes performance, particularly for C++ projects that generate many small object files and complex symbol dependencies, a common scenario in large codebases.


title: SYNOPSIS
content:
<br><b>/lib/ld-linux.so.X</b> [<i>OPTIONS</i>] <i>PROGRAM</i> [<i>ARGUMENTS</i>]<br><b>ld.so</b> [<i>OPTIONS</i>] <i>PROGRAM</i> [<i>ARGUMENTS</i>]<br>


title: PARAMETERS
content:
<b>--list, -l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists</i> the dynamic dependencies of the specified executable. This functionality is similar to <i>ldd(1)</i>.<br><br><b>--verify, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Verifies</i> the dynamic dependencies of the executable without actually executing the program itself.<br><br><b>--library-path PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Overrides</i> the default library search path. <i>PATH</i> should be a colon-separated list of directories to search.<br><br><b>--inhibit-rpath LIST</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Ignores</i> <i>RPATH/RUNPATH</i> information for the shared objects specified in <i>LIST</i>.<br><br><b>--audit LIST</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies</i> a list of shared object auditors to be used by the dynamic linker.<br><br><b>--preload LIST</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Preloads</i> shared objects specified in <i>LIST</i> before any other libraries, including <i>libc</i>. Useful for overriding functions.<br><br><b>--argv0 STRING</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets</i> the <i>argv[0]</i> argument for the executed program to <i>STRING</i>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays</i> a help message showing available options and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays</i> version information of the dynamic linker and exits.<br><br>


title: DESCRIPTION
content:
<i>ld.so</i>, often symbolically linked to <i>ld-linux.so.X</i>, is the program responsible for loading shared libraries (also known as shared objects or dynamic-link libraries) that an executable requires at runtime. When a dynamically linked program is executed, the Linux kernel first loads <i>ld.so</i>. This linker/loader then takes over, locating all necessary shared libraries, loading them into the program's memory space, and resolving all symbolic references (like function calls and variable accesses) from the executable to the loaded libraries. While not typically invoked directly by users for everyday tasks, it can be manually executed to debug programs, test with custom library versions, or override default system library paths, offering powerful control over the runtime environment.


title: CAVEATS
content:
<i>ld.so</i> is a critical, low-level component of the Linux operating system. Direct or incorrect manipulation, particularly through environment variables like <i>LD_LIBRARY_PATH</i>, can lead to system instability, security vulnerabilities, or prevent programs from executing correctly. The exact path to <i>ld.so</i> (e.g., <i>/lib/ld-linux.so.2</i> or <i>/lib64/ld-linux-x86-64.so.2</i>) varies depending on the system's architecture and <i>glibc</i> version. It is generally not advisable for casual users to directly interact with this command.


title: ENVIRONMENT VARIABLES
content:
<i>ld.so</i>'s behavior can be significantly influenced by various environment variables, typically used for debugging or development:<br><b>LD_LIBRARY_PATH</b>: A colon-separated list of directories that <i>ld.so</i> searches for shared libraries before the standard system paths. Primarily used for development and testing.<br><b>LD_PRELOAD</b>: A space-separated list of shared libraries to be loaded <i>before</i> any other libraries (including <i>libc</i>). Useful for overriding functions in standard libraries or injecting custom code.<br><b>LD_DEBUG</b>: If set, enables verbose debugging output from the dynamic linker, showing details about library loading, symbol resolution, and more.<br><b>LD_BIND_NOW</b>: If set to a non-null string, the dynamic linker resolves all symbols when the program starts, rather than lazily. This can impact startup time but prevents potential runtime stalls.<br><b>LD_TRACE_LOADED_OBJECTS</b>: If set to a non-null string, the program will print its dynamic dependencies and then exit, mimicking the behavior of <i>ldd(1)</i>.<br>


title: CONFIGURATION FILES
content:
The dynamic linker's search paths and other configurations are primarily managed through:<br><b>/etc/ld.so.conf</b>: A file that lists directories containing shared libraries. It can also include other configuration files from specified directories.<br><b>/etc/ld.so.cache</b>: A compiled binary cache generated by the <i>ldconfig(8)</i> utility based on <i>/etc/ld.so.conf</i>. This cache speeds up the dynamic linker's search for libraries by avoiding filesystem scans.<br>


title: LIBRARY SEARCH ORDER
content:
When looking for a shared library, <i>ld.so</i> follows a specific search order to find the correct shared object:<br>1. Libraries specified in the <i>RPATH</i> or <i>RUNPATH</i> of the executable itself (if present).<br>2. Directories specified in the <i>LD_LIBRARY_PATH</i> environment variable.<br>3. The cached list of libraries found in <i>/etc/ld.so.cache</i>.<br>4. The default system library directories, such as <i>/lib</i>, <i>/usr/lib</i>, <i>/lib64</i>, or <i>/usr/lib64</i>.<br>


title: HISTORY
content:
The concept of dynamic linking predates Linux, offering efficiency benefits by sharing code among multiple applications. In Linux, <i>ld.so</i> is part of the <i>GNU C Library (glibc)</i>. Early Linux systems used a different executable format (<i>a.out</i>) with its own dynamic linker. With the adoption of the <i>ELF (Executable and Linkable Format)</i> for binaries, <i>ld-linux.so</i> became the standard dynamic linker/loader. The name <i>ld.so</i> is commonly a symbolic link pointing to the architecture-specific <i>ld-linux.so.X</i> (e.g., <i>ld-linux-x86-64.so.2</i>). Its ongoing development within <i>glibc</i> has consistently focused on performance, security enhancements, and new features like symbol versioning and auditing hooks.


title: SYNOPSIS
content:
<b>ldapdomaindump</b> [-h] [-u <i>USERNAME</i>] [-p <i>PASSWORD</i>] [-hashes <i>LMHASH:NTHASH</i>] [-aesKey <i>HEXKEY</i>] [-k] [-no-pass] [-dc-ip <i>IP_ADDRESS</i>] [-ldap-port <i>PORT</i>] [-outputfile <i>OUTPUT_DIR</i>] [-csv] [-json] [-graphml] [-debug]


title: PARAMETERS
content:
<b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the help message and exits.<br><br><b><b>-u USERNAME, --username USERNAME</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the username for authentication to the LDAP service.<br><br><b><b>-p PASSWORD, --password PASSWORD</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the password for authentication.<br><br><b><b>-hashes LMHASH:NTHASH</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the LM and NTLM hashes for authentication (e.g., <i>aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0</i>).<br><br><b><b>-aesKey HEXKEY</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AES key to use for Kerberos authentication (16, 24, or 32 bytes).<br><br><b><b>-k</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses Kerberos authentication. Credentials are automatically grabbed from the configured Kerberos credential cache file (<i>KRB5CCNAME</i>).<br><br><b><b>-no-pass</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the tool from prompting for a password, useful when using Kerberos (<b>-k</b>) or hash-based authentication (<b>-hashes</b>).<br><br><b><b>-dc-ip IP_ADDRESS</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the IP address of the domain controller to query. If omitted, the tool attempts to resolve the domain's DC.<br><br><b><b>-ldap-port PORT</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the LDAP port. Defaults to 389.<br><br><b><b>-outputfile OUTPUT_DIR</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory to save the generated output files. Defaults to the current directory (<i>./</i>).<br><br><b><b>-csv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the extracted data into CSV format files.<br><br><b><b>-json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the extracted data into JSON format files.<br><br><b><b>-graphml</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the extracted data into GraphML format files, suitable for graph visualization tools like Gephi or BloodHound.<br><br><b><b>-debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output for more verbose logging, useful for troubleshooting.<br><br>


title: DESCRIPTION
content:
<i>ldapdomaindump</i> is a Python script designed for enumerating and extracting detailed information from Active Directory domains by querying the Lightweight Directory Access Protocol (LDAP) service. It's commonly used by penetration testers and security professionals to gather intelligence about domain users, computers, groups, organizational units, and other objects.<br><br>The tool can extract various attributes, including password policy, Kerberos ticket details, and security descriptors, providing a comprehensive overview of the domain's structure and potential vulnerabilities. It typically generates several files (e.g., JSON, CSV, GraphML) containing the extracted data, making it easier to analyze and visualize the domain's architecture and potential attack paths.


title: CAVEATS
content:
<ul><li>Requires valid LDAP credentials (username/password or hashes) or a Kerberos TGT to successfully query the domain.</li><li>Can be noisy on the network, potentially triggering alerts in environments with strong security monitoring due to a high volume of LDAP queries.</li><li>The output can be very large for extensive domains, requiring significant disk space and potentially making manual analysis challenging without specialized tools.</li><li>Relies on direct LDAP queries, meaning firewall rules might block its access if not configured to allow outbound LDAP traffic from the attacker's machine or inbound LDAP to the Domain Controller.</li></ul>


title: TYPICAL USAGE
content:
Often used as a first step in Active Directory reconnaissance to map out users, groups, computers, and trust relationships before attempting to exploit vulnerabilities or escalate privileges. It provides a foundation for further analysis with tools like BloodHound.


title: OUTPUT FILES
content:
Generates multiple files in the specified output directory, typically named based on the object type, such as <i>domain_users.json</i>, <i>domain_computers.json</i>, <i>domain_groups.json</i>, <i>domain_trusts.json</i>, and <i>domain_policy.json</i>, along with their CSV and GraphML counterparts if selected. These files contain detailed attributes for each object.


title: PERMISSIONS
content:
The level of detail extracted depends on the permissions of the supplied credentials. A standard domain user typically has enough permissions to dump a significant amount of information from Active Directory, as much of this data is considered public or widely accessible within the domain.


title: HISTORY
content:
<i>ldapdomaindump</i> is a script part of the <i>impacket</i> collection of Python classes. <i>impacket</i> is a widely used library developed by SecureAuth for programmatically interacting with network protocols. <i>ldapdomaindump</i> specifically gained popularity in the penetration testing and red teaming communities for its effectiveness in quickly enumerating Active Directory environments, often replacing manual <i>ldapsearch</i> commands or providing a more structured output for analysis. Its development is ongoing as part of the <i>impacket</i> project, adapting to new Active Directory features and security measures.


title: SYNOPSIS
content:
<b>ldapsearch</b> [OPTIONS] [FILTER] [ATTRIBUTES...]<br><br><i>Common invocation examples:</i><br><i><b>ldapsearch -x -H ldap://localhost:389 -b "dc=example,dc=com" "(uid=john.doe)" givenName sn mail</i><br><i><b>ldapsearch -x -D "cn=admin,dc=example,dc=com" -w secret -b "ou=users,dc=example,dc=com" -s sub "(objectClass=person)"</i>


title: PARAMETERS
content:
<b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use simple authentication (password provided via <b>-w</b> or prompt).<br><br><b><b>-D</b> <binddn></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the Distinguished Name (DN) to bind as for authentication.<br><br><b><b>-w</b> <passwd></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the password for simple authentication. <i>(Caution: May expose password in command history).</i><br><br><b><b>-H</b> <uri></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the LDAP URI (e.g., ldap://host:port/ or ldaps://host:port/) of the LDAP server.<br><br><b><b>-b</b> <basedn></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the base DN for the search operation. The search will start from this point in the directory tree.<br><br><b><b>-s</b> <scope></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the search scope: <b>base</b> (only the base DN itself), <b>one</b> (direct children of base DN), <b>sub</b> (subtree starting from base DN), or <b>subord</b> (subtree excluding base DN).<br><br><b><b>-f</b> <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the search filter from the specified file.<br><br><b><b>-L</b> / <b>-LL</b> / <b>-LLL</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output entries in LDIF format. <b>-L</b> for standard LDIF, <b>-LL</b> for more concise, <b>-LLL</b> for machine-readable/scriptable LDIF without comments or version info.<br><br><b><b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieve attribute names only (no attribute values).<br><br><b><b>-z</b> <size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum number of entries to return (size limit).<br><br><b><b>-l</b> <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum time (in seconds) the server should spend performing the search (time limit).<br><br><b><b>-V</b> <version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the LDAP protocol version to use (e.g., 2 or 3).<br><br>


title: DESCRIPTION
content:
<i>ldapsearch</i> is a powerful command-line utility used to query information from LDAP (Lightweight Directory Access Protocol) directory servers. As a client program, it allows users to specify search criteria, including the base DN (Distinguished Name) from which to start the search, the scope of the search (e.g., base object, one-level, subtree), and a filter to narrow down results based on attributes and values. Users can also specify which attributes they wish to retrieve for matching entries. <i>ldapsearch</i> is an essential tool for system administrators managing LDAP-based authentication systems like OpenLDAP or Active Directory, developers interacting with directory services, and for general troubleshooting. It is part of the OpenLDAP software suite, supporting various authentication methods (like simple bind or SASL) and protocol versions. The output is typically in LDIF (LDAP Data Interchange Format), making it easily parsable and suitable for scripting. It offers extensive options for controlling the search operation, connection details, and output formatting.


title: CAVEATS
content:
<b>Password Exposure:</b> Using <b>-w <passwd></b> on the command line is generally discouraged as the password may be exposed in shell history or process listings. Prefer using a password prompt or environment variables (e.g., <b>LDAP_SASL_PASSWD</b>) when possible.<br><b>Resource Consumption:</b> Performing broad subtree searches (<b>-s sub</b>) with loose filters on large directories can be very resource-intensive for the LDAP server and lead to performance issues.<br><b>Connection Issues:</b> Ensure correct hostname/IP, port, and network connectivity. Firewall rules often block default LDAP ports (389 for unencrypted, 636 for LDAPS).


title: COMMON USAGE EXAMPLES
content:
<i><br><b>Search for a specific user by UID anonymously:</i><br><i><b>ldapsearch -H ldap://ldap.example.com -b "dc=example,dc=com" "(uid=jdoe)"</i><br><br><i><b>List all common names (cn) of all people in an organizational unit:</i><br><i><b>ldapsearch -x -H ldap.example.com -b "ou=people,dc=example,dc=com" -s sub "(objectClass=person)" cn</i><br><br><i><b>Perform an anonymous search and get only attribute names:</i><br><i><b>ldapsearch -H ldap://localhost -b "dc=example,dc=com" "(objectClass=*)" -A</i>


title: SEARCH FILTER SYNTAX
content:
LDAP search filters are enclosed in parentheses <b>()</b>. They consist of assertions using logical operators (prefixed):<br><b>&</b> (AND)<br><b>|</b> (OR)<br><b>!</b> (NOT)<br>These are combined with attribute-value comparisons.<br><br><i>Examples:</i><br><i><b>(objectClass=person)</b>: Matches entries with objectClass "person".</i><br><i><b>(cn=John Doe)</b>: Matches entries where common name is "John Doe".</i><br><i><b>(mail=jdoe*)</b>: Matches entries where mail starts with "jdoe" (wildcard <b>*</b>).</i><br><i><b>(&(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))</b>: A complex filter combining AND, NOT, and OID-based matching for disabled accounts in Active Directory.</i>


title: HISTORY
content:
<i>ldapsearch</i> is a core utility that emerged with the development of the LDAP protocol itself. It is a fundamental component of the OpenLDAP project, which provides a free and open-source implementation of the LDAP protocol. Since its inception, OpenLDAP and its associated client utilities like <i>ldapsearch</i> have been widely adopted for directory service deployments across various operating systems. The command's functionality has evolved to support new features and extensions introduced in subsequent LDAP protocol versions (from LDAPv2 to the more widely used LDAPv3), ensuring its continued relevance and capability in modern directory environments. Its design emphasizes simplicity and scriptability, making it a staple for both interactive queries and automated tasks.


title: PARAMETERS
content:
<b><i><linedisc></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The line discipline to attach. This can be specified as a numeric ID or a symbolic name (e.g., <b>N_PPP</b>, <b>N_SLIP</b>, <b>N_TTY</b>).<br><br><b><i><device></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the serial device or pseudo-terminal (e.g., <i>/dev/ttyS0</i>, <i>/dev/pts/1</i>).<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<i>ldattach</i> is a Linux command-line utility used to attach a specified <b>line discipline</b> to a serial port or pseudo-terminal device. Line disciplines are kernel modules that modify the way data is processed between a user application and a terminal device driver. They define how data is buffered, interpreted, and handled, allowing for specialized communication protocols over serial lines.<br><br>Common line disciplines include <b>N_PPP</b> (for Point-to-Point Protocol), <b>N_SLIP</b> (for Serial Line Internet Protocol), and <b>N_TTY</b> (the default terminal line discipline). By attaching a specific line discipline, <i>ldattach</i> prepares the serial device for use by applications that expect that particular protocol. For instance, attaching <b>N_PPP</b> to a serial port before running a PPP daemon allows the kernel to handle the low-level PPP framing.<br><br>This command is crucial for setting up various serial-based network connections or for interacting with specialized hardware connected via serial ports. It typically requires superuser (root) privileges to modify the line discipline of a device.


title: CAVEATS
content:
Attaching a line discipline requires <b>root</b> privileges. The specified line discipline must be available and loaded in the kernel. Attaching the wrong line discipline can make the device unusable until reset. Only one line discipline can be active on a device at a time. Be cautious when using this command on devices currently in use.


title: UNDERSTANDING LINE DISCIPLINES
content:
In the Linux kernel, a <b>line discipline</b> is a layer of code that sits between the character device driver (e.g., for a serial port) and the higher-level applications. It processes data flow, handles specific protocols, and manages terminal control sequences. For example, the <b>N_TTY</b> line discipline handles character echoing, line editing, and signal generation for standard interactive terminals, while <b>N_PPP</b> encapsulates and decapsulates PPP frames over a serial link.


title: COMMON USE CASES
content:
<i>ldattach</i> is primarily used for:<br><ul><li>Setting up <b>PPP</b> (Point-to-Point Protocol) connections over a modem or serial cable, typically in conjunction with the <i>pppd</i> daemon.</li><li>Configuring <b>SLIP</b> (Serial Line Internet Protocol) connections.</li><li>Enabling specific kernel-level protocol handling for specialized hardware connected via serial, such as <b>IrDA</b> (Infrared Data Association) devices using the <b>N_IRDA</b> line discipline.</li><li>Debugging or testing scenarios where direct manipulation of a serial device's line discipline is required.</li></ul>


title: HISTORY
content:
<i>ldattach</i> is part of the widely used <b>util-linux</b> project, a collection of essential Linux utilities. Its functionality has been fundamental in Unix-like systems for managing serial communications, adapting over time with new kernel line discipline implementations. It provides a direct interface to the <b>TIOCSETD</b> or <b>TIOCSETD</b> ioctls, which have long been part of the Unix terminal interface.


title: PARAMETERS
content:
<b><b>-o</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output executable or object file.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles source files into object files without linking.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Emits LLVM IR or assembly code instead of object files.<br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates debug information for use with debuggers like GDB or LLDB.<br><br><b><b>-O</b>[<i>level</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the optimization level, e.g., <b>-O</b> (default), <b>-O1</b>, <b>-O2</b>, <b>-O3</b>, <b>-Os</b> (optimize for size).<br><br><b><b>-I</b><<i>dir</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a directory to the list of import paths for D modules.<br><br><b><b>-L</b><<i>dir</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a directory to the list of library search paths for the linker.<br><br><b><b>-l</b><<i>lib</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Links with the specified library.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the LDC compiler version and associated LLVM version.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a summary of command-line options.<br><br><b><b>-unittest</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and runs unit tests defined in the source files.<br><br><b><b>-conf</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the LDC configuration file.<br><br><b><b>-check</b>=<<i>arg</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables runtime checks like <b>assert</b>, <b>bounds</b>, <b>null</b>, etc.<br><br>


title: DESCRIPTION
content:
LDC is a highly optimizing, native D programming language compiler that leverages the LLVM toolchain. It aims to provide fast compilation and generate efficient machine code, making it a robust choice for D developers. As an alternative to DMD (Digital Mars D Compiler) and GDC (GCC D Compiler), LDC stands out by utilizing LLVM's extensive optimization passes and support for multiple architectures. It supports various D language features, including advanced metaprogramming, concurrency, and contract programming. LDC integrates well with existing C/C++ libraries and toolchains, offering seamless interoperability. Its active development ensures compatibility with the latest D language specifications and LLVM releases.


title: CAVEATS
content:
LDC's performance and behavior are inherently tied to the underlying LLVM version it utilizes. <br>While highly compatible with the D language specification, it might have ABI (Application Binary Interface) differences compared to other D compilers like GDC, potentially causing issues when mixing object files or libraries compiled by different D compilers. <br>It requires appropriate D runtime libraries to be available for linking compiled programs.


title: CONFIGURATION FILE
content:
LDC uses a configuration file, typically <b>ldc.conf</b>, to specify default settings such as import paths, library paths, and linker options. This file's location can vary by system, but LDC usually searches in common system-wide and user-specific configuration directories. The <b>-conf</b> option can override this default location.


title: CROSS-COMPILATION
content:
LDC supports cross-compilation, allowing developers to compile D code for different target architectures (e.g., ARM, x86_64) from a single development machine. This is achieved by specifying a target triple, like <b>-march=x86_64 -mtriple=x86_64-linux-gnu</b>, a feature inherited from its LLVM backend.


title: HISTORY
content:
LDC began as an independent project aiming to leverage the LLVM toolchain for the D programming language. Its inception was driven by the desire to bring LLVM's advanced optimizations and cross-platform capabilities to D, offering an alternative to the official DMD compiler which had its own backend. <br>Since its initial development, LDC has grown into a mature and widely-used compiler in the D ecosystem, known for its high-performance code generation and strong adherence to the D language specification. It is actively maintained and continuously updated to support new D features and LLVM versions, making it a key component for many D projects.


title: PARAMETERS
content:
<b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Verbose mode</I>. Prints the directories being scanned and the links being created.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Don't rebuild cache</I>. Only creates or updates symbolic links in the specified directories, without updating the cache file.<br><br><b>-N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Don't rebuild links</I>. Only rebuilds the cache (<I>/etc/ld.so.cache</I>), without creating or updating symbolic links.<br><br><b>-X</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Don't update symbolic links</I>. Similar to -N, it only rebuilds the cache, ignoring link creation.<br><br><b>-r ROOT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Change root directory</I>. Specifies an alternate <B>ROOT</B> directory to search for libraries, useful in <I>chroot</I> environments.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Print cache</I>. Displays the contents of the current cache (<I>/etc/ld.so.cache</I>) in a readable format, listing directories and libraries.<br><br><b>-C CACHE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify cache file</I>. Uses <B>CACHE</B> as the cache file instead of the default <I>/etc/ld.so.cache</I>.<br><br><b>-f CONF</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify config file</I>. Uses <B>CONF</B> as the configuration file instead of the default <I>/etc/ld.so.conf</I>.<br><br>


title: DESCRIPTION
content:
The <b>ldconfig</b> command creates the necessary links and cache (<I>/etc/ld.so.cache</I>) used by the dynamic linker/loader (<I>ld.so</I> or <I>ld-linux.so</I>).<br><br>It scans a set of standard directories and directories specified in the configuration file (<I>/etc/ld.so.conf</I> and files in <I>/etc/ld.so.conf.d/</I>) for shared libraries. For each library found, it creates symbolic links to the most recent version of the shared library, ensuring that applications can find and load them correctly.<br><br>The generated cache file significantly speeds up application startup by providing a compiled list of available libraries and their locations. This command is typically run by the <b>root</b> user after installing new shared libraries, updating existing ones, or modifying library search paths, to ensure the system's library cache is up-to-date and consistent.


title: CAVEATS
content:
<ul><li><I>Requires <b>root</b> privileges</I>: The command modifies system-wide files and directories, so it must be run with superuser permissions.</li><li><I>Impact on applications</I>: Incorrect usage or failure to run <b>ldconfig</b> after library changes can prevent applications from launching due to missing shared library errors.</li><li><I>Cache corruption</I>: Accidental deletion or corruption of the <I>ld.so.cache</I> file can render many system applications unusable until it is rebuilt.</li></ul>


title: THE SHARED LIBRARY CACHE (<I>/ETC/LD.SO.CACHE</I>)
content:
This binary file is generated by <b>ldconfig</b> and contains a compiled list of shared libraries and their locations. The dynamic linker uses this cache to quickly locate libraries during program execution, significantly reducing load times compared to searching directories every time.


title: CONFIGURATION FILES (<I>/ETC/LD.SO.CONF</I> AND <I>/ETC/LD.SO.CONF.D/</I>)
content:
These text files define the directories where <b>ldconfig</b> should look for shared libraries. <I>/etc/ld.so.conf</I> often includes all files ending with <I>.conf</I> in the <I>/etc/ld.so.conf.d/</I> directory, allowing system administrators and package managers to modularly add or remove library search paths without modifying the main configuration file directly.


title: HISTORY
content:
<b>ldconfig</b> is a foundational utility within the GNU C Library (glibc) on Linux and other Unix-like operating systems. It has been an essential component for managing shared libraries since the widespread adoption of dynamic linking, particularly with the Executable and Linkable Format (ELF). Its stable and critical role ensures efficient resolution of shared library dependencies for applications.


title: PARAMETERS
content:
<b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print all information, including symbol versioning and unused direct dependencies.<br><br><b>-u, --unused</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print unused direct dependencies (dependencies that are not referenced by any symbol in the object).<br><br><b>-r, --reloc-info</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print relocation information. Performs relocations and reports any missing objects or functions. This implies -v.<br><br><b>-d, --data-relocs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform data relocations and report missing objects. This implies -r and -v.<br><br><b>-p, --audit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the auditing interface.<br><br><b>-f, --format <i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format string. This is typically used for scripting and advanced parsing.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information and exit.<br><br><b>--depth <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the maximum depth of dependency search to <i>N</i> levels.<br><br><b>--root <i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for dependencies within the specified root directory.<br><br>


title: DESCRIPTION
content:
ldd (list dynamic dependencies) is a command-line utility in Unix-like operating systems that displays the shared libraries required by each program or shared library specified on its command line. It's an invaluable tool for diagnosing issues related to missing or incompatible shared libraries. <br><br>When you run ldd against an executable, it effectively executes the program under a special environment where the dynamic linker (ld.so or ld-linux.so) is instructed to trace and report all library dependencies, rather than actually running the program's main logic. The output typically lists each required library, its resolved path on the system, and its memory address offset if loaded. If a library cannot be found, ldd reports "not found". <br><br>While highly useful for debugging and system administration, it's crucial to understand its underlying mechanism for security reasons, as it involves executing the target binary.


title: CAVEATS
content:
ldd works by setting a special environment variable (LD_TRACE_LOADED_OBJECTS) and executing the program. Because of this, it is highly inadvisable to run ldd on untrusted executables, as arbitrary code could be executed with the permissions of the user running ldd. For untrusted binaries, safer alternatives like objdump -p or readelf -d should be used. ldd also cannot be used for statically linked executables, as they do not rely on shared libraries.


title: SECURITY CONSIDERATIONS
content:
The primary concern with ldd is its execution model. When you run ldd <<i>program</i>>, it essentially executes <<i>program</i>> with the LD_TRACE_LOADED_OBJECTS environment variable set. If <<i>program</i>> is a malicious or untrusted binary, it can exploit this execution to perform arbitrary actions, potentially using specially crafted constructors or other ELF file features. This means a malicious program could execute code, create files, or modify system settings with the permissions of the user who ran ldd. Always use ldd only on trusted binaries. For untrusted binaries, use tools like objdump -p or readelf -d to inspect dependencies safely, as these tools parse the binary file directly without executing it.


title: HISTORY
content:
ldd has been a staple utility in Unix-like operating systems for many years, evolving as part of the GNU C Library (glibc) project. Its core functionality has remained consistent, providing a crucial insight into dynamic linking. Over time, particularly with increasing awareness of supply chain security, the security implications of its execution model have become more widely highlighted, leading to stronger recommendations against its use on untrusted binaries.


title: PARAMETERS
content:
<b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all information, including symbol versions, for each required library.<br><br><b>-u, --unused</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints unused direct dependencies (for ELF executables). This can help identify libraries that are linked but not actually used by the program.<br><br><b>-r, --reloc-info</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs relocations and reports any missing objects or functions from the libraries. This option implies <b>--data-relocs</b> and provides a more comprehensive check.<br><br><b>-d, --data-relocs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs data relocations and reports any missing objects or functions. This is useful for identifying problems with data sections of libraries.<br><br><b>-p, --print-paths</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the directory search paths that <b>ldd</b> (or rather, the dynamic linker) uses to find shared libraries.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>ldd</b> utility.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br>


title: DESCRIPTION
content:
The <b>ldd</b> (list dynamic dependencies) utility is a fundamental tool on Linux and Unix-like systems. It is used to print the shared libraries required by each program or shared library specified on the command line. This command helps users understand which shared objects (<i>.so</i> files) an executable needs to run successfully. It's particularly useful for diagnosing problems where a program fails to start due to missing or incompatible libraries, or for auditing the dependencies of a compiled binary. <br><br>Unlike executing the program, <b>ldd</b> works by setting a special environment variable (<i>LD_TRACE_LOADED_OBJECTS</i>) which instructs the dynamic linker (<i>ld.so</i>) to report all library dependencies rather than actually running the program. This allows for a safe inspection of a program's runtime environment, although it carries specific security considerations.


title: CAVEATS
content:
The command <b>lddd</b> is not a standard Linux command and likely a typo for <b>ldd</b>. The information provided herein pertains to the widely used <b>ldd</b> utility. <br><br>A significant caveat when using <b>ldd</b> is its security implications. Because <b>ldd</b> works by setting an environment variable and executing the program, it can be exploited if run on an untrusted or malicious executable. A malicious program could potentially execute arbitrary code as part of its initialization (e.g., through constructor/destructor functions in shared libraries) when <b>ldd</b> attempts to trace its dependencies. Therefore, it is strongly advised <i>not</i> to run <b>ldd</b> on untrusted binaries. Safer alternatives for inspecting dependencies include tools like <b>objdump -p</b> or <b>readelf -d</b>.


title: HISTORY
content:
The <b>ldd</b> utility is an integral part of the GNU C Library (glibc) on Linux systems and has been a cornerstone for dynamic library management for decades. Its origins are deeply tied to the development of shared libraries and the dynamic linking mechanism in Unix-like operating systems. It provides a user-friendly interface to query the dynamic linker's behavior, allowing developers and system administrators to troubleshoot and understand the runtime environment of executables without the need to debug the dynamic linker directly. Its widespread use reflects the importance of shared libraries in modern software development.


title: PARAMETERS
content:
<b>leaf_file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the <i>CALS Group 4 LEAF</i> format image file to be converted. If this argument is omitted, <b>leaftoppm</b> reads the input from standard input.<br><br>


title: DESCRIPTION
content:
<b>leaftoppm</b> is a utility from the Netpbm suite, designed to convert image files stored in the <i>CALS Group 4 LEAF</i> format into the Netpbm <i>PPM</i> (Portable Pixmap) format. The <i>LEAF</i> format, often used for monochrome scanned documents and engineering drawings, employs a specialized <i>Group 4 fax encoding</i> for compression. <b>leaftoppm</b> decodes this compressed data and outputs a black-and-white or grayscale image in the <i>PPM</i> format.<br><br>This tool is particularly useful for handling legacy scanned documents or specialized technical drawings that utilize the <i>CALS Group 4</i> standard. As part of the versatile Netpbm ecosystem, the resulting <i>PPM</i> image can be easily piped to other Netpbm tools for further processing, such as scaling, cropping, or conversion to more common image formats like <i>PNG</i>, <i>JPEG</i>, or <i>GIF</i> using commands like <b>ppmtogif</b> or <b>ppmtopng</b>.


title: CAVEATS
content:
<b>Specific Input Format:</b> <b>leaftoppm</b> exclusively processes <i>CALS Group 4 LEAF</i> files. It will not work with other image formats.<br><br><b>Raw Output Format:</b> The output is in the raw <i>PPM</i> (Portable Pixmap) format, which is primarily an intermediate format within the Netpbm suite. Further conversion is usually required for viewing or sharing in more common formats.<br><br><b>Monochrome/Grayscale Output:</b> As <i>LEAF</i> files are typically monochrome (black and white), the output <i>PPM</i> image will reflect this, usually as a grayscale or 1-bit deep image.<br><br><b>Netpbm Dependency:</b> This command is an integral part of the Netpbm package and is designed to work within that ecosystem, rather than as a standalone general-purpose image converter.


title: STANDARD INPUT/OUTPUT
content:
True to the Unix philosophy, <b>leaftoppm</b> operates seamlessly with standard input and output. If the <i>leaf_file</i> argument is omitted, the command reads the <i>CALS Group 4 LEAF</i> data directly from standard input. The converted <i>PPM</i> image is always written to standard output. This design allows for efficient piping operations, enabling chaining with other commands (e.g., <b>cat</b> <i>image.leaf</i> | <b>leaftoppm</b> | <b>ppmtopng</b> > <i>image.png</i>).


title: NETPBM SUITE INTEGRATION
content:
<b>leaftoppm</b> is specifically designed to function as an integral part of the larger Netpbm toolchain. Its output (the <i>PPM</i> format) is immediately compatible with numerous other Netpbm utilities. This allows users to perform subsequent operations such as resizing, cropping, color adjustments, or conversion to popular formats like <i>PNG</i>, <i>JPEG</i>, or <i>GIF</i> by simply piping the output of <b>leaftoppm</b> to another Netpbm command.


title: HISTORY
content:
<b>leaftoppm</b> is a component of the long-standing Netpbm project, which originated in the early 1990s as <b>pbmplus</b>. The Netpbm suite provides a comprehensive collection of tools for manipulating graphic images, primarily based on the <i>PPM</i>, <i>PGM</i>, <i>PBM</i>, and later <i>PAM</i> formats.<br><br><b>leaftoppm</b> was developed to specifically address the conversion of images conforming to the <i>CALS Group 4</i> standard, a format frequently encountered with scanned engineering documents, technical publications, and government standards. Its inclusion underscores Netpbm's commitment to supporting a wide array of image formats, including more specialized or legacy ones, ensuring interoperability within diverse document and imaging workflows.


title: PARAMETERS
content:
<b><I>hhMM</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the departure time in 24-hour format (e.g., <I>0900</I> for 9:00 AM, <I>1730</I> for 5:30 PM). If not provided, <I>leave</I> will prompt the user for the time.<br><br><b><B>-a</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompts for the departure time using a 12-hour AM/PM format (e.g., <I>9:00 am</I>, <I>5:30 pm</I>).<br><br>


title: DESCRIPTION
content:
<I>leave</I> is a classic Unix utility designed to remind you when it's time to leave. It functions by scheduling a series of reminders leading up to a specified departure time. When invoked, it typically prompts the user for the desired departure time. Alternatively, the time can be provided directly as an argument. The command then schedules notifications (often using the <I>at</I> utility) to alert the user at various intervals before the designated time, such as 5 minutes, 1 minute, 10 seconds, and finally at the exact departure time. These reminders usually involve printing a message to the terminal and often ringing the terminal bell. It's a straightforward tool for time management, particularly useful for command-line users who need punctual reminders without a graphical interface.


title: CAVEATS
content:
<I>leave</I> often relies on the <B>atd</B> (the <B>at</B> daemon) service being running to schedule its reminders; without it, reminders may not function. It is typically part of the <B>at</B> package or similar utility sets and might not be installed by default on all Linux distributions. The "bell" sound it produces for reminders is a terminal bell, which may not be audible or might be configured differently depending on the terminal emulator and system settings. Due to its interactive nature and reliance on terminal output, <I>leave</I> is not generally suitable for use in non-interactive scripts.


title: REMINDER SEQUENCE
content:
<I>leave</I> provides a series of escalating reminders before the designated departure time. Typically, these include alerts at 5 minutes, 1 minute, 10 seconds, and 1 second before the time, followed by a final "YOU HAVE TO LEAVE NOW" message at the exact moment. Each reminder usually involves printing a message to the terminal and often ringing the terminal bell.


title: INTERACTIVE USAGE
content:
When invoked without arguments, <I>leave</I> interactively prompts the user for the departure time, often accepting various time formats (e.g., <I>HHMM</I>, <I>HH:MM</I>, <I>HHMMam/pm</I>). It then confirms the scheduled time before initiating the reminder sequence.


title: HISTORY
content:
The <I>leave</I> command is a venerable utility tracing its origins back to early Unix systems, including BSD distributions. Its simple, single-purpose design is characteristic of the Unix philosophy. Over the years, it has been ported to and included in various Unix-like operating systems, including GNU/Linux, often as part of the <B>at</B> package or <B>bsd-utils</B>. Its continued presence highlights its enduring utility for basic time management in a command-line environment.


title: SYNOPSIS
content:
<b>lebab</b> [<i>options</i>] [<i>files...</i>]<br><b>lebab</b> <i>--stdin</i> [<i>options</i>]<br><b>lebab</b> <i>--dir</i> &lt;<i>src-dir</i>&gt; <i>--out-dir</i> &lt;<i>dest-dir</i>&gt; [<i>options</i>]<br><b>lebab</b> <i>--help</i><br><b>lebab</b> <i>--version</i>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message with available options and transforms.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version number of the <b>lebab</b> command.<br><br><b>--transform <list></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a comma-separated list of transforms to apply (e.g., <i>arrow,let,class</i>). Use <i>all</i> to apply all available transforms.<br><br><b>--skip <list></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a comma-separated list of transforms to skip (e.g., <i>commonjs</i>). Useful when using <i>--transform all</i>.<br><br><b>--dir <src></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input directory containing source JavaScript files to transpile.<br><br><b>--out-dir <dest></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output directory for the transformed JavaScript files. Requires <i>--dir</i>.<br><br><b>--replace</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite the original source files in the input directory with the transformed output. <i>Use with extreme caution!</i><br><br><b>--stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read input JavaScript code from standard input (stdin).<br><br><b>--stdout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output JavaScript code to standard output (stdout). Default when <i>--stdin</i> is used.<br><br><b>--add-module-exports</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>module.exports</i> to converted CommonJS modules for better interoperability.<br><br><b>--keep-class-names</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent mangling or renaming of class names during the transformation process.<br><br><b>--config <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a path to a JSON configuration file (e.g., <i>.lebabrc.json</i>) for custom settings.<br><br>


title: DESCRIPTION
content:
<b>lebab</b> is a command-line tool designed to transpile modern JavaScript (ECMAScript 2015 / ES6 and newer) syntax into older, widely compatible ES5 syntax. Unlike other transpilers that prioritize strict spec adherence, <b>lebab</b> focuses on generating human-readable and idiomatic ES5 code. This often involves converting <i>const</i> and <i>let</i> declarations to <i>var</i>, arrow functions to regular <i>function</i> expressions, and various other ES6+ features into their ES5 equivalents. It's built on Node.js and distributed through npm, making it a popular choice for developers looking for a simpler, more opinionated transformation process. <b>lebab</b> is particularly useful for projects that need to ensure backward compatibility with older JavaScript environments without sacrificing the benefits of writing modern code. Its modular design allows users to specify exactly which transformations to apply or skip, providing fine-grained control over the output.


title: CAVEATS
content:
<b>lebab</b> is a JavaScript transpiler, not a native Linux utility. It requires Node.js and npm for installation (<i>npm install -g lebab</i>). Its primary focus is readability over absolute performance or lossless transformation. The <i>--replace</i> option overwrites source files, so always use it with version control or backups. It performs syntax transformations, not polyfills for missing browser APIs.


title: INSTALLATION
content:
<b>lebab</b> is installed globally using the Node Package Manager: <i>npm install -g lebab</i>. This command makes the <b>lebab</b> executable available in your system's PATH, assuming Node.js is already installed. If Node.js is not installed, it must be set up first.


title: AVAILABLE TRANSFORMS
content:
<b>lebab</b> offers a comprehensive set of transformations, each targeting specific ES6+ features. Key transforms include <i>arrow</i> (arrow functions), <i>let</i> and <i>const</i> (block-scoped declarations), <i>for-of</i> (for-of loops), <i>template-strings</i>, <i>commonjs</i> (ESM to CommonJS), <i>class</i> (ES6 classes), and many others. You can view the full list of available transforms by running <b>lebab --help</b>.


title: HISTORY
content:
<b>lebab</b> emerged as a lightweight, opinionated alternative to more complex JavaScript transpilers like Babel. Its development was motivated by a desire to produce cleaner, more readable ES5 output from modern JavaScript, focusing on common and safe transformations. It aims to simplify the transpilation process for developers who prefer idiomatic ES5 output without extensive configuration, making it suitable for quick conversions and maintaining backward compatibility.


title: SYNOPSIS
content:
<b>ledctl</b> [<I>OPTIONS</I>] <I>COMMAND</I> [<I>DEVICE</I>]<br><b>ledctl</b> [<I>OPTIONS</I>] <I>list</I><br><b>ledctl</b> [<I>OPTIONS</I>] <I>status</I> <I>DEVICE</I><br><b>ledctl</b> [<I>OPTIONS</I>] <I>help</I>


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br><b>-D, --directory <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the base directory for LED control interfaces, typically <I>/sys/class/leds</I>. Useful for non-standard setups.<br><br><b>-p, --persistent</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the LED pattern to be persistent across system reboots. This functionality depends on the underlying hardware and driver support.<br><br><b>-c, --clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clear any previously set persistent LED pattern. This option is typically used in conjunction with a <I>DEVICE</I> argument to clear its specific persistent pattern.<br><br>


title: DESCRIPTION
content:
<b>ledctl</b> is a command-line utility designed to control the LED indicators on various storage devices, including NVMe, SATA, and SAS drives. It leverages the Linux kernel's <I>leds</I> subsystem to manage patterns such as locate, activity, and fault. This tool is particularly useful in server environments for system administrators to visually identify specific drives within a storage array, aid in troubleshooting, or confirm disk activity. It allows setting temporary patterns or, if supported by the hardware and driver, making patterns persistent across reboots. <b>ledctl</b> provides commands to activate, deactivate, or query the status of these visual indicators.


title: CAVEATS
content:
<b>Caveats and Limitations:</b><br><b>&bull;</b> Requires <I>CAP_SYS_ADMIN</I> capability (root privileges) to modify LED states.<br><b>&bull;</b> Functionality heavily depends on Linux kernel driver support for specific storage controllers and devices. Not all drives or HBAs will expose LED control through <I>/sys/class/leds</I>.<br><b>&bull;</b> Persistent patterns (<I>-p</I>) are not supported by all hardware or drivers.


title: AVAILABLE COMMANDS
content:
<b>ledctl</b> supports several commands to manage LED patterns:<br><b>&bull; locate</b> <I>DEVICE</I>: Activates a distinctive blink pattern for easy physical identification of the specified drive.<br><b>&bull; activity</b> <I>DEVICE</I>: Sets an activity pattern, typically indicating I/O operations.<br><b>&bull; fault</b> <I>DEVICE</I>: Sets a fault pattern, signaling a problem with the drive.<br><b>&bull; off</b> <I>DEVICE</I>: Turns off all active LED patterns for the specified drive.<br><b>&bull; on</b> <I>DEVICE</I>: Turns on the default LED pattern for the device, often <b>activity</b> or <b>locate</b>.<br><b>&bull; status</b> <I>DEVICE</I>: Displays the currently active LED pattern for the specified drive.<br><b>&bull; list</b>: Lists all storage devices for which LED control is available via <b>ledctl</b>.


title: DEVICE NAMING
content:
Devices are typically specified using their block device name, e.g., <I>/dev/nvme0n1</I>, <I>/dev/sda</I>, or their symbolic links like <I>/dev/disk/by-id/nvme-eui.xxxxxxxxxxxxxxxxxxxxxxxxxxxx</I>.


title: HISTORY
content:
<b>ledctl</b> is often part of the <I>libstoragemgmt</I> project or <I>systemd-leds</I> packages, developed to provide a unified user-space interface for controlling hardware LEDs on storage devices. It abstracts the specifics of different vendor implementations (e.g., NVMe, SAS/SATA via various HBA drivers) through the kernel's <I>leds</I> subsystem. Its usage is primarily in server and data center environments for managing storage arrays.


title: SYNOPSIS
content:
<b>ledger</b> [<i>options</i>] [<i>command</i>] [<i>arguments</i>]<br>Common commands include:<br>&nbsp;&nbsp;&nbsp;<b>ledger balance</b> [<i>account-regex</i>] [<i>options</i>]<br>&nbsp;&nbsp;&nbsp;<b>ledger register</b> [<i>account-regex</i>] [<i>options</i>]<br>&nbsp;&nbsp;&nbsp;<b>ledger print</b> [<i>options</i>]<br>&nbsp;&nbsp;&nbsp;<b>ledger csv</b> [<i>options</i>]


title: PARAMETERS
content:
<b><b>--file</b> <i>FILE</i>, <b>-f</b> <i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ledger data file to use. This is often the primary way to point <i>ledger</i> to your financial data.<br><br><b><b>--account</b> <i>REGEX</i>, <b>-a</b> <i>REGEX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts reports to postings matching the specified account regular expression, allowing focused analysis on particular accounts.<br><br><b><b>--payee</b> <i>REGEX</i>, <b>-p</b> <i>REGEX</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters transactions to include only those whose payee matches the given regular expression.<br><br><b><b>--begin</b> <i>DATE</i>, <b>-b</b> <i>DATE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes transactions occurring on or after the specified date. Dates can be in various formats (e.g., YYYY/MM/DD).<br><br><b><b>--end</b> <i>DATE</i>, <b>-e</b> <i>DATE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes transactions occurring on or before the specified date, allowing for end-dated reports.<br><br><b><b>--period</b> <i>PERIOD</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Groups and aggregates transactions by a specified period, such as 'daily', 'weekly', 'monthly', or 'yearly', useful for periodic reports.<br><br><b><b>--cleared</b>, <b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only transactions that have been marked as cleared, typically indicating they've been reconciled with a bank statement.<br><br><b><b>--pending</b>, <b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only transactions that are marked as pending, useful for tracking future or unconfirmed movements.<br><br><b><b>--value</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts all amounts in the report to their equivalent value in the default commodity (e.g., USD), using historical prices if available.<br><br><b><b>--format</b> <i>FORMAT</i>, <b>-F</b> <i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a custom format string to the output, providing highly customizable reporting capabilities.<br><br><b><b>--sort</b> <i>EXPR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts the output entries based on a custom expression, allowing flexible ordering of reports.<br><br><b><b>--collapse</b>, <b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For balance reports, this option collapses sub-accounts into their parent accounts, showing a more summarized view.<br><br><b><b>--flat</b>, <b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with the <code>balance</code> command, it flattens the account hierarchy, listing all accounts at the same level.<br><br><b><b>--empty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with the <code>balance</code> command, this option forces the display of accounts even if their current balance is zero.<br><br><b><b>--average</b>, <b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with the <code>register</code> command, displays the average balance for each period, offering insights into trends.<br><br>


title: DESCRIPTION
content:
<i>Ledger</i> is a robust, command-line, double-entry accounting system that operates on a plain-text file. Unlike traditional accounting software, it does not use a database or a graphical user interface, making it highly transparent, flexible, and scriptable. Users define transactions in a human-readable text file (typically named <code>.ledger</code>), specifying accounts, amounts, payees, and dates.<br><br>Its primary purpose is to help individuals and small businesses manage finances, track income and expenses, reconcile accounts, and generate various financial reports such as balance sheets, income statements, and registers. <i>Ledger</i> supports multiple currencies, budgeting, forecasting, and powerful querying capabilities, allowing users to filter and sort transactions based on complex criteria. Its plain-text nature makes it ideal for version control systems like Git, enabling easy tracking of financial history and collaborative use. It empowers users who prefer a minimalist, text-based workflow for their financial management.


title: CAVEATS
content:
While powerful, <i>Ledger</i> has a few considerations:<br><b>Steep Learning Curve:</b> New users, especially those unfamiliar with double-entry accounting or command-line tools, may find the initial setup and syntax challenging.<br><b>No GUI:</b> It operates purely from the command line, which might not suit users who prefer graphical interfaces for financial management.<br><b>Manual File Editing:</b> All transactions are entered and edited directly in a plain-text file, requiring careful adherence to the syntax to avoid errors.


title: <B>THE LEDGER FILE FORMAT</B>
content:
<i>Ledger</i> uses a simple, human-readable plain-text file format. Each transaction typically includes a date, an optional cleared status, a payee/description, and multiple postings (debits and credits) to various accounts. This format's simplicity allows for easy version control (e.g., with Git) and integration with other text-processing tools.


title: <B>SCRIPTABILITY AND AUTOMATION</B>
content:
Due to its command-line nature and plain-text data files, <i>Ledger</i> is highly scriptable. Users can automate tasks like downloading bank statements (using external tools), importing data, generating periodic reports via cron jobs, and integrating with custom scripts using tools like <code>grep</code>, <code>awk</code>, or Python.


title: HISTORY
content:
<i>Ledger</i> was created by <b>John Wiegley</b>, with its initial public release occurring around 2003. It was developed in C++ and designed from the ground up to be a fast, robust, and extensible command-line tool for managing personal and small-business finances. Its development aimed to provide a powerful alternative to traditional accounting software by leveraging the simplicity and flexibility of plain-text data files. Over the years, it has maintained an active development community, ensuring its continued relevance and evolution as a core tool for text-based financial management.


title: DESCRIPTION
content:
The term 'legit' is <I>not</I> recognized as a standard, pre-installed command in typical Linux distributions like Ubuntu, Fedora, Debian, or CentOS. When encountered in a command-line context, it almost certainly refers to a custom script, an alias defined by a user or system administrator, or a conceptual term rather than an executable binary with a defined purpose. A user or system administrator might create a script named 'legit' to perform custom checks or operations they consider 'legitimate' or authentic, such as verifying file checksums, checking process integrity, or validating system configurations.<br><br>Without a specific implementation, its functionality is entirely dependent on how it was created or defined in a particular environment. It does not exist as a universally available utility with a documented manual page, defined syntax, or standard set of options.


title: CAVEATS
content:
The most significant caveat is that <I>'legit' is not a universally available or defined Linux command.</I> If you encounter it, its behavior, options, and output will be entirely specific to the system where it is being used. It cannot be assumed to exist or function identically across different Linux environments, and attempting to execute it on a system where it is not defined will result in a 'command not found' error.


title: CUSTOM COMMANDS AND ALIASES
content:
Linux users frequently create custom commands or aliases for frequently used or complex operations. An <B>alias</B> is a simple shortcut for another command (e.g., <B>alias legit='ls -lha'</B>). A <B>custom script</B> involves writing a shell script (e.g., <B>#!/bin/bash<br>echo 'This is legit!'</B>) and placing it in a directory listed in the system's PATH environment variable, making it executable just like a regular command.


title: CONCEPTUAL 'LEGITIMACY' IN LINUX
content:
While not a command, 'legitimacy' in Linux often refers to ensuring system integrity, security, and proper operation. This involves verifying package signatures, checking file permissions, monitoring unusual processes, and validating system configurations against baselines. Tools like <B>aide</B>(8) or <B>tripwire</B>(8) are commonly used for file integrity monitoring to detect unauthorized changes, contributing to the 'legitimacy' of the system's state.


title: HISTORY
content:
There is no official history for a command named 'legit' in standard Linux development, as it is not part of any official project or distribution. Any 'history' would be confined to its creation and usage within a specific, private environment where it was defined and utilized as a custom tool.


title: SEE ALSO
content:
As 'legit' is not a standard command, there are no direct related commands in the traditional sense., However, if 'legit' were a custom script designed to perform authenticity or integrity checks, it might internally utilize standard commands such as <B>md5sum</B>(1) or <B>sha256sum</B>(1) for file integrity, <B>ps</B>(1) for process listing, <B>grep</B>(1) for pattern matching, <B>diff</B>(1) for configuration comparison, or package managers like <B>rpm</B>(8) or <B>dpkg</B>(8) for package verification.


title: SYNOPSIS
content:
<b>lerna</b> <<i>command</i>> [<i>options</i>]<br>For example:<br><b>lerna bootstrap</b><br><b>lerna publish</b><br><b>lerna run</b> <<i>script-name</i>> [<i>...args</i>]


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for <b>lerna</b> or a specific subcommand.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <b>lerna</b> CLI version.<br><br><b><b>--loglevel</b> <<i>level</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging level (e.g., <i>silent</i>, <i>error</i>, <i>warn</i>, <i>info</i>, <i>verbose</i>, <i>silly</i>).<br><br><b><b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips all confirmation prompts, assuming 'yes' to all.<br><br><b><b>--scope</b> <<i>package-name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts commands to a subset of packages that match a glob. Can be specified multiple times.<br><br><b><b>--ignore</b> <<i>package-name</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes packages that match a glob from being processed. Can be specified multiple times.<br><br><b><b>--hoist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <b>bootstrap</b>) Installs all dependencies to the root <i>node_modules</i>, rather than in each package's <i>node_modules</i>.<br><br><b><b>--stream</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <b>run</b>, <b>exec</b>) Streams output from concurrently running processes directly to the console.<br><br><b><b>--canary</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <b>publish</b>) Publishes packages with a <i>canary</i> version (e.g., 1.0.0-alpha.0+<sha>).<br><br><b><b>--conventional-commits</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <b>publish</b>, <b>version</b>) Uses <i>Conventional Commits</i> specification to determine new versions and generate changelogs.<br><br><b><b>--registry</b> <<i>url</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <b>publish</b>) Specifies the npm registry to publish to.<br><br>


title: DESCRIPTION
content:
<i>lerna</i> is a powerful command-line tool designed to manage multi-package repositories, often referred to as monorepos, primarily for JavaScript and TypeScript projects. A monorepo is a single Git repository containing multiple distinct projects or packages. <b>lerna</b> streamlines the development and deployment process by providing utilities to manage dependencies, versioning, and publishing of these inter-dependent packages. It abstracts away much of the manual work involved in linking packages locally, running scripts across multiple packages, and maintaining consistent versioning schemes, especially when publishing to npm. While modern package managers like <b>npm</b> and <b>Yarn</b> now offer native workspace features, <b>lerna</b> continues to provide advanced capabilities, particularly around publishing automation, independent package versioning, and executing scripts across a filtered set of packages, making it a valuable tool for complex monorepo setups.


title: CAVEATS
content:
<b>lerna</b> is specifically designed for JavaScript/TypeScript monorepos and might not be suitable for polyglot monorepos. While it offers powerful automation for publishing and versioning, its complexity can be an overhead for very simple monorepos or when native package manager workspaces (like <b>npm workspaces</b> or <b>Yarn workspaces</b>) suffice. The project has seen periods of varying maintenance activity, which is a consideration for long-term project stability, though it has recently seen renewed development.


title: MONOREPO CONCEPT
content:
A <i>monorepo</i> is a software development strategy where code for many projects is stored in the same repository. Unlike a traditional multi-repo setup, a monorepo centralizes code, simplifying dependency management, code sharing, and atomic changes across related components. <b>lerna</b> provides the scaffolding and tooling to effectively manage the inter-dependencies, build processes, and publishing workflows within such a consolidated repository.


title: CONFIGURATION FILE (LERNA.JSON)
content:
<b>lerna</b>'s behavior is primarily configured via a <i>lerna.json</i> file located at the root of the monorepo. This file specifies important settings such as the versioning strategy (<i>fixed</i>/<i>independent</i>), the paths to packages within the repository, and other global configurations. It's crucial for defining how <b>lerna</b> identifies and interacts with the various packages.


title: HISTORY
content:
<b>lerna</b> was created by Sebastian McKenzie (known for Babel) and first released in 2016. Its primary motivation was to simplify the management of large JavaScript projects composed of multiple packages, a pattern popularized by projects like Babel itself. Before <b>npm</b> and <b>Yarn</b> introduced native workspace support (in 2017 and 2018 respectively), <b>lerna</b> was a groundbreaking tool for tackling monorepo challenges like shared dependencies and consistent versioning. Although the landscape has evolved, <b>lerna</b>'s influence on how monorepos are managed in the JavaScript ecosystem is significant, and it continues to be a viable solution for many teams, especially those requiring advanced publishing workflows.


title: PARAMETERS
content:
<b><b>-E</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <b>less</b> to automatically exit when it reaches the end of the file.<br><br><b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes <b>less</b> to automatically exit if the entire file can be displayed on the first screen.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs case-insensitive searches, unless the search pattern contains uppercase letters.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a line number at the beginning of each line.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs "raw" control characters. Useful for viewing files with ANSI color codes.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Chops long lines instead of wrapping them. Lines longer than the screen width will be truncated.<br><br><b><b>-X</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the sending of termcap init/deinit strings to the terminal, which can prevent screen clearing after <b>less</b> exits.<br><br><b><b>-?</b> or <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of <b>less</b> commands and options.<br><br>


title: DESCRIPTION
content:
<b>less</b> is a command-line utility used to view the contents of a text file or output from a pipe, one screen at a time. Unlike its predecessor <b>more</b>, <b>less</b> allows for both forward and backward navigation through the file. It loads only the necessary portions of the file, making it highly efficient for very large files. It's the default pager for <b>man</b> pages and offers powerful search capabilities, line numbering, and customizable display options, making it an indispensable tool for system administrators and developers.


title: CAVEATS
content:
<b>less</b> is a viewer, not an editor. While it offers powerful navigation and search, it does not allow modification of the file content.


title: INTERACTIVE KEYBINDINGS
content:
<b>less</b> provides a rich set of interactive commands for navigation and searching once a file is open.<br><ul><li><b>q</b> or <b>Q</b>: Exit <b>less</b>.</li><li><b>Space</b> or <b>f</b>: Scroll forward one window.</li><li><b>b</b>: Scroll backward one window.</li><li><b>g</b>: Go to the beginning of the file.</li><li><b>G</b>: Go to the end of the file.</li><li><b>/<i>pattern</i></b>: Search forward for the specified <i>pattern</i>.</li><li><b>?<i>pattern</i></b>: Search backward for the specified <i>pattern</i>.</li><li><b>n</b>: Repeat the last search in the same direction.</li><li><b>N</b>: Repeat the last search in the opposite direction.</li><li><b>h</b>: Display the help screen with a list of all commands.</li></ul>


title: HISTORY
content:
<b>less</b> was created by Mark Nudelman in the late 1980s as an improvement over the <b>more</b> command. The primary motivation was to enable backward scrolling and searching, which <b>more</b> lacked. Its name is a playful pun on <b>more</b>, implying it's "more" capable than <b>more</b>. It has since become the standard pager on most Unix-like systems, widely appreciated for its efficiency and flexibility.


title: PARAMETERS
content:
<b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore case distinctions during searches.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display line numbers at the beginning of each line.<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Chop long lines; do not wrap them to the next line. Lines longer than the screen width will be truncated.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret ANSI color escape sequences, useful for viewing colored log files or command output.<br><br><b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quit <i><b>less</b></i> automatically if the entire file fits on the first screen, acting like <i>cat(1)</i> for small files.<br><br><b><b>-X</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable sending terminal initialization/de-initialization strings. Useful in scripts to prevent screen clearing or changes.<br><br><b><b>-p</b> <i>pattern</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start at the first occurrence of <i>pattern</i> in the file.<br><br>


title: DESCRIPTION
content:
<i><b>less</b></i> is a powerful terminal pager program used to view text files or command output one screenful at a time. It is an enhancement over the traditional <i>more(1)</i> command, providing superior navigation capabilities. Unlike <i>more</i>, <i><b>less</b></i> allows users to move both forward and backward through the file, search for patterns, and navigate efficiently even in very large files without loading the entire file into memory.<br><br>It's commonly used for reading log files, source code, or the output of commands that produce a lot of text, like <i>ls -lR</i> or <i>dmesg</i>. Its flexibility in navigation, searching, and handling of various file types (including compressed ones via filters) makes it an indispensable tool for Linux users and system administrators.


title: CAVEATS
content:
While <i><b>less</b></i> is excellent for viewing, it is not a text editor. Changes to the file content cannot be made directly within <i><b>less</b></i>. For editing, use tools like <i>vi(1)</i> or <i>nano(1)</i>. Its performance with extremely large binary files might be suboptimal, as it's primarily designed for text.


title: KEY BINDINGS
content:
<i><b>less</b></i> uses a variety of keyboard commands for navigation and searching, many of which are similar to <i>vi(1)</i>.<br><ul><li><b>Space</b> or <b>f</b>: Scroll forward one screen.</li><li><b>b</b>: Scroll backward one screen.</li><li><b>g</b>: Go to the beginning of the file.</li><li><b>G</b>: Go to the end of the file.</li><li><b>/</b><i>pattern</i>: Search forward for <i>pattern</i>.</li><li><b>?</b><i>pattern</i>: Search backward for <i>pattern</i>.</li><li><b>n</b>: Repeat the last search in the same direction.</li><li><b>N</b>: Repeat the last search in the opposite direction.</li><li><b>q</b>: Quit <i><b>less</b></i>.</li></ul>


title: ENVIRONMENT VARIABLES
content:
<i><b>less</b></i>'s behavior can be customized using environment variables, notably:<br><ul><li><b>LESS</b>: Specifies default command-line options. For example, <code>export LESS='-iN'</code> will always enable case-insensitive search and line numbers.</li><li><b>LESSKEY</b>: Points to a file containing custom key bindings for <i><b>less</b></i>.</li><li><b>LESSOPEN</b> / <b>LESSCLOSE</b>: Define commands for pre-processing files before opening and after closing, allowing <i><b>less</b></i> to handle compressed files (like <i>.gz</i> or <i>.bz2</i>) transparently.</li></ul>


title: HISTORY
content:
<i><b>less</b></i> was created by Mark Nudelman in 1983 as an improved version of the Unix <i>more(1)</i> command. The name itself is a humorous play on <i>more</i>, implying it is 'less' restrictive and offers 'more' functionality. It quickly gained popularity due to its ability to move backward in a file, a feature lacking in <i>more</i>. Over the years, it has become a standard utility on virtually all Unix-like operating systems and is often the default pager for commands like <i>man(1)</i>.


title: PARAMETERS
content:
<b><i>-d</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replace unprintable characters with caret notation (e.g., <b>^X</b>) and meta-prefixing (e.g., <b>M-X</b>) for display, similar to how <i>less</i> might render them.<br><br><b><i>-n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output a trailing newline character at the end of the output. This allows concatenating multiple outputs or controlling line endings precisely.<br><br><b><i>-m maxlen</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Truncate the output string to a maximum of <i>maxlen</i> characters. Any characters beyond this specified limit will not be displayed, which is useful for fitting content into limited display areas.<br><br><b><i>name...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more strings or arguments to be echoed to standard output. These are the primary data that <i>lessecho</i> processes and returns.<br><br>


title: DESCRIPTION
content:
<i>lessecho</i> is a specialized helper utility that is bundled with the powerful <i>less</i> pager. At its core, its function is to echo its command-line arguments to standard output, much like the standard <i>echo</i> command. However, its existence and primary purpose are intricately tied to the internal operations of <i>less</i>.<br><br>It serves a crucial role in assisting <i>less</i> with the complex task of displaying text, particularly when dealing with very long lines that exceed the terminal's width, or when input is being pre-processed via the <i>LESS_PIPE</i> environment variable. <i>lessecho</i> helps <i>less</i> determine how to correctly break, wrap, or chop these lines, ensuring that the content is presented legibly within the pager's view.<br><br>Unlike <i>echo</i>, <i>lessecho</i> offers specific options like character sanitization (<i>-d</i>) and output truncation (<i>-m</i>), which are highly relevant for preparing diverse text streams for terminal display. Consequently, it is an internal tool rarely invoked directly by users; its functionality is optimized for the specific demands of the <i>less</i> pager's text rendering engine.


title: CAVEATS
content:
<i>lessecho</i> is primarily an internal utility for the <i>less</i> pager and is not intended for general-purpose scripting or interactive use as a direct replacement for <i>echo</i>. Its behavior is optimized for the specific context of the <i>less</i> environment, and direct invocation outside this context might not be intuitive or necessary for typical command-line tasks.


title: INTERNAL USE WITH LESS
content:
<i>lessecho</i> is frequently invoked by <i>less</i> itself, particularly when the <i>LESS_PIPE</i> environment variable is set to process input, or when <i>less</i> needs to reformat long lines for display within the terminal window. It's a behind-the-scenes tool that ensures <i>less</i> functions correctly with diverse text streams and unusual character sets, contributing to its reputation as a highly capable pager.


title: NOT A GENERAL ECHO REPLACEMENT
content:
It's crucial to understand that despite its name, <i>lessecho</i> is not a general replacement for the standard <i>echo</i> command. Its specialized role within the <i>less</i> ecosystem means it offers functionality tailored to the pager's needs, such as character sanitization (with <i>-d</i>) and length truncation (with <i>-m</i>) that are particularly useful when preparing text for consistent and readable terminal display via <i>less</i>, rather than for generic script output.


title: HISTORY
content:
<i>lessecho</i> has been an integral part of the <i>less</i> pager distribution since its early development. As <i>less</i> evolved to become a highly robust and versatile text viewer capable of handling complex file types, pipes, and intricate line formatting (such as chopping or wrapping extremely long lines), <i>lessecho</i> emerged as a necessary internal component. Its development parallels the sophisticated feature set of <i>less</i>, ensuring efficient and accurate text display under a wide range of conditions.


title: PARAMETERS
content:
<b>-o output_file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output binary file. Defaults to <I>~/.less/lesskey.bin</I> if not provided.<br><br><b>-b</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used for backward compatibility with older versions of `lesskey`; generally not needed.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose mode, printing comments from the input file to standard error during compilation.<br><br><b>input_file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the plain text file containing the key binding definitions. If omitted, `lesskey` reads from standard input.<br><br>


title: DESCRIPTION
content:
`lesskey` is a utility used to create and manage custom key bindings for the <b>less</b> pager. It processes an input file containing user-defined key sequences and their corresponding actions, compiling it into a binary file, typically named <I>lesskey.bin</I>. This binary file is then read by <b>less</b> upon startup, allowing users to personalize their interactive browsing experience. This provides a powerful way to extend <b>less</b>'s functionality, add new shortcuts, or modify existing ones to better suit individual workflows, significantly enhancing productivity for command-line text viewing and navigation.


title: CAVEATS
content:
`lesskey` creates a binary file (<I>lesskey.bin</I>) from a human-readable plain text configuration file. This binary file must be correctly placed (usually in <I>~/.less/</I> or specified via <I>LESSKEY_BIN</I> environment variable) for <b>less</b> to find and use it. Errors in the input `lesskey` file's syntax can lead to unexpected behavior or <b>less</b> failing to load the custom bindings. Users must re-run `lesskey` every time they modify their plain text configuration file for the changes to take effect in <b>less</b>.


title: KEY BINDING FILE FORMAT
content:
The input file for `lesskey` consists of lines defining key sequences and their corresponding actions. Lines starting with <I>#</I> are comments. Key sequences can be specified as literal characters, or using special notations like <I>^X</I> for Ctrl-X, <I>\eX</I> for Alt-X, and <I>\e</I> for the Escape key. Actions correspond to <b>less</b> internal commands (e.g., <I>quit</I>, <I>next-file</I>, <I>search-forward</I>). Key bindings can be defined in <I>GLOBAL</I> or <I>COMMAND</I> sections, affecting when they are active.


title: ENVIRONMENT VARIABLES
content:
The behavior of `lesskey` and <b>less</b> regarding key binding files can be influenced by environment variables. <I>LESSKEY_FILE</I> can specify an alternative input key binding file for `lesskey` to process. <I>LESSKEY_BIN</I> can define the path to the compiled binary key binding file that <b>less</b> should load, overriding the default location (<I>~/.less/lesskey.bin</I>).


title: HISTORY
content:
The `lesskey` utility is an integral part of the <b>less</b> pager project, which was originally written by Mark Nudelman. It was introduced to provide a robust and flexible mechanism for users to customize key bindings, moving beyond hardcoded defaults. Its design to compile a plain text file into a binary format (<I>lesskey.bin</I>) reflects a common pattern in Unix-like systems for efficient loading of configuration data by frequently used applications like <b>less</b>. This approach ensures quick startup times for <b>less</b> while still offering extensive personalization options.


title: SYNOPSIS
content:
<b>lesspipe</b> [<i>OPTION</i>]... [<i>FILE</i>]...<br><i>(Typically used implicitly via the <b>LESSOPEN</b> environment variable.)</i>


title: PARAMETERS
content:
<b><b>-p</b>, <b>--pipe-path</b> <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative path for external programs.<br><i>(Overrides the default hardcoded program locations.)</i><br><br><b><b>-s</b>, <b>--no-status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress progress and status messages during processing.<br><i>(Useful for silent operation or scripting.)</i><br><br><b><b>-S</b>, <b>--status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display progress and status messages.<br><i>(This is the default behavior and usually doesn't need to be specified.)</i><br><br><b><b>-t</b>, <b>--text-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass raw text without attempting to format it.<br><i>(Disables special formatters for syntax highlighting or structured views.)</i><br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force processing even if the file type is unknown.<br><i>(Attempts to decompress or extract regardless of detection.)</i><br><br><b><b>-e</b>, <b>--env-path</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the shell's <b>PATH</b> environment variable for external programs.<br><i>(Overrides internal hardcoded paths.)</i><br><br><b><b>-x</b>, <b>--extended</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable extended parsing for certain file types.<br><i>(Provides more detailed or structured output for some formats.)</i><br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>-</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read input from standard input.<br><i>(Allows <b>lesspipe</b> to act as a filter for piped data.)</i><br><br>


title: DESCRIPTION
content:
The <b>lesspipe</b> command acts as a preprocessor for the <b>less</b> pager, enabling it to display the contents of compressed files, archives, and other special file types directly, without requiring manual decompression or extraction. It achieves this primarily by being invoked through the <b>LESSOPEN</b> environment variable.<br><br>When <b>less</b> attempts to open a file, if <b>LESSOPEN</b> is set to `"|lesspipe %s"`, <b>lesspipe</b> intercepts the file. It then analyzes the file type (often using tools like <b>file(1)</b>) and, if recognized, pipes its decompressed or extracted content to <b>less</b>'s standard input. This seamless integration allows users to view files like `.gz`, `.bz2`, `.tar`, `.zip`, and many others as if they were plain text files, significantly streamlining command-line workflows.


title: CAVEATS
content:
<b>lesspipe</b> has a few considerations:<br><i>1. Requires the <b>LESSOPEN</b> environment variable to be set correctly for implicit invocation with <b>less</b>.</i><br><i>2. Relies heavily on the availability and correct functioning of external decompression and archiving utilities (e.g., <b>gzip</b>, <b>bzip2</b>, <b>tar</b>, <b>unzip</b>).</i><br><i>3. Processing very large compressed or archive files can introduce noticeable delays due to decompression overhead.</i><br><i>4. Executing external commands introduces a potential (though generally low) security risk if untrusted files are processed.</i><br><i>5. May not support all obscure or encrypted archive formats without additional helper utilities.</i>


title: ENVIRONMENT VARIABLE: LESSOPEN
content:
The core functionality of <b>lesspipe</b> relies on the <b>LESSOPEN</b> environment variable. By setting <b>LESSOPEN="|lesspipe %s"</b> (or a similar path to your <b>lesspipe</b> executable), you instruct <b>less</b> to pipe any file it's asked to open through <b>lesspipe</b> first. The <b>%s</b> is replaced by the filename. This setup allows <b>lesspipe</b> to preprocess the file and feed its output to <b>less</b>, making the process transparent to the user. This variable is typically set in shell configuration files like <b>.bashrc</b> or <b>.zshrc</b>.


title: CUSTOMIZING FILTERS
content:
While <b>lesspipe</b> handles many common file types by default, its behavior can often be extended or customized. Some versions of <b>lesspipe</b> look for user-defined filter scripts (e.g., <b>~/.lessfilter</b> or <b>~/.lesspipe</b>) which can contain additional rules or calls to external programs to handle more obscure or specific file formats, further enhancing its versatility.


title: HISTORY
content:
<b>lesspipe</b> emerged as a practical solution to a common command-line inconvenience: manually decompressing or extracting files before viewing their contents with <b>less</b>. Before <b>lesspipe</b>, users had to resort to wrapper scripts like <b>zless</b> or <b>bzless</b> for specific compressed formats. <b>lesspipe</b> generalized this approach by acting as a single, intelligent preprocessor. Its development focused on leveraging existing system utilities to identify file types and seamlessly pipe their contents, greatly enhancing the utility of <b>less</b> for system administrators, developers, and anyone regularly dealing with diverse file formats.


title: PARAMETERS
content:
<b>EXPRESSION</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more arithmetic expressions to be evaluated. These expressions follow standard C-language arithmetic precedence and can include variables, integers, and operators (e.g., <b>+</b>, <b>-</b>, <b>*</b>, <b>/</b>, <b>%</b>, <b>==</b>, <b>!=</b>, <b>&lt;</b>, <b>&gt;</b>). Variables within the expression are automatically dereferenced.<br><br>


title: DESCRIPTION
content:
<i>let</i> is a shell built-in command that evaluates one or more arithmetic expressions. It's primarily used for integer arithmetic. Each <I>EXPRESSION</I> is evaluated as if it were part of a <I>((...))</I> construct. Variables within the expression do not need to be prefixed with <b>$</b> as they are dereferenced automatically.<br><br>The command returns an exit status of 0 if the last <I>EXPRESSION</I> evaluates to a non-zero value, and 1 if it evaluates to zero. This makes <i>let</i> useful in conditional statements. It's often used for incrementing/decrementing loop counters or performing simple calculations directly within shell scripts. While powerful, modern shell scripting often prefers the <I>((...))</I> construct for arithmetic evaluation due to its cleaner syntax.


title: CAVEATS
content:
<i>let</i> performs only <i>integer</i> arithmetic; it does not support floating-point numbers.<br><br>It is a shell built-in command, meaning its behavior can vary slightly between different shell implementations (e.g., Bash, Zsh) but is largely standardized.<br><br>Return status: The exit status is 0 if the result of the <i>last</i> <I>EXPRESSION</I> is non-zero, and 1 if it is zero. This is the opposite of typical true/false evaluation in arithmetic, where 0 is false and non-zero is true.


title: OPERATORS
content:
<i>let</i> supports common C-style arithmetic and bitwise operators, including <b>+</b>, <b>-</b>, <b>*</b>, <b>/</b>, <b>%</b> (modulo), <b>**</b> (exponentiation, Bash 4+), <b>&lt;&lt;</b>, <b>&gt;&gt;</b>, <b>&amp;</b>, <b>|</b>, <b>^</b>, <b>!</b> (logical NOT), <b>&amp;&amp;</b> (logical AND), <b>||</b> (logical OR), <b>? :</b> (ternary operator), and assignment operators like <b>+=</b>, <b>-=</b>.


title: RETURN STATUS EXAMPLE
content:
The command <b>let "a=10" &amp;&amp; echo "Non-zero" || echo "Zero"</b> will output "Non-zero".<br><br>The command <b>let "a=0" &amp;&amp; echo "Non-zero" || echo "Zero"</b> will output "Zero", because <i>let</i> returns 1 when the result of the last expression is zero.


title: HISTORY
content:
The <i>let</i> command has been a standard built-in in many shells, including Bash, for a long time, often specified by POSIX. It provided a way to perform arithmetic calculations directly within the shell environment without invoking external utilities like <i>expr</i>. While still fully functional, its usage has somewhat declined in favor of the more modern and often cleaner <i>((...))</i> arithmetic expansion/command in shells like Bash, which offers similar functionality and syntax.


title: SYNOPSIS
content:
Given that 'lev_comp' is <i>not a standard command</i>, a universal synopsis cannot be provided. Its usage depends entirely on how it was implemented. It might follow a pattern like:<br><code><b>lev_comp</b> [<i>OPTIONS</i>] <i>ARGUMENTS</i>...</code><br>or simply:<br><code><b>lev_comp</b></code><br>Consult its source code or local documentation for accurate syntax.


title: PARAMETERS
content:
<b><i>(No standard parameters)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;As 'lev_comp' is not a standard Linux command, its parameters are entirely dependent on its specific implementation. There are no universally defined options or arguments. Users should refer to any local documentation or the source code if available.<br><br>


title: DESCRIPTION
content:
The command 'lev_comp' is <i>not a standard or widely recognized utility</i> found in typical Linux distributions. It is highly probable that 'lev_comp' refers to a <b>custom script, a specific application component, or a program developed for a particular environment</b> (e.g., academic projects, internal company tools). Without context, its exact functionality, syntax, and options are impossible to determine. Users encountering this command should look for documentation specific to their system, the application it's part of, or consult the script/binary itself (e.g., using `cat lev_comp` if it's a script, or `strings lev_comp` if it's a binary) to understand its purpose and usage.


title: CAVEATS
content:
Since 'lev_comp' is not a standard Linux command, its behavior, security implications, and system requirements can <i>vary wildly</i>. It may not be present on all systems, and its functionality is <b>not guaranteed or supported by general Linux documentation</b>. Exercise caution when executing unknown custom commands.


title: POSSIBLE ORIGIN
content:
If 'lev_comp' relates to 'Levenshtein computation' (e.g., comparing strings for similarity), it might be a custom implementation of an algorithm to calculate the Levenshtein distance between two inputs. This is a common task in areas like bioinformatics, spell checking, and natural language processing, often implemented as a small C/C++ program or a shell script wrapping other tools.


title: HISTORY
content:
There is <i>no publicly documented history</i> for 'lev_comp' as a standard Linux utility. Its development and usage history would be specific to its creator or the project it belongs to.


title: SEE ALSO
content:
There are no standard Linux commands directly 'related' to a generic 'lev_comp' without knowing its specific function. If 'lev_comp' refers to 'Levenshtein distance computation', related concepts might be found in programming language libraries or specialized text processing tools, but not as a core shell command.


title: PARAMETERS
content:
<b>-t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the generated C code to standard output instead of <i>lex.yy.c</i>.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print a summary of statistics about the generated scanner (e.g., number of states, rules).<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress the printing of the statistics summary.<br><br><b>-o <I>outfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the name of the output C file instead of the default <i>lex.yy.c</i>. (Often a <b>flex</b> extension).<br><br><b>-F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the faster, `flex`-specific scanner table representation. (<b>flex</b> option).<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information for the `lex` implementation (typically `flex`).<br><br>


title: DESCRIPTION
content:
The <b>lex</b> command is a program that generates lexical analysis programs (scanners or tokenizers) from an input specification. It reads a set of regular expression rules and corresponding actions, typically written in C. <b>lex</b> then produces a C source file, conventionally named <i>lex.yy.c</i>, which defines the `yylex()` function. This function can be compiled and linked with a parser (often generated by <b>yacc</b> or <b>bison</b>) to form the front end of a compiler or interpreter. The generated scanner reads an input stream and partitions it into a sequence of tokens based on the rules provided in the <b>lex</b> specification file. On most modern Linux systems, the <b>lex</b> command is typically an implementation of <b>flex</b> (Fast Lexical Analyzer Generator), which offers enhanced performance and features while maintaining compatibility with traditional <b>lex</b>.


title: CAVEATS
content:
The default output file name is always <i>lex.yy.c</i> unless an `-o` option (often specific to <b>flex</b>) is used.<br>Different implementations of <b>lex</b> (e.g., AT&T `lex`, `flex`, `DFAlex`) might have subtle differences in features or behavior.<br>Errors in the specification file can lead to verbose error messages in the generated C code, which can be challenging to debug.


title: INPUT FILE FORMAT
content:
A <b>lex</b> specification file (conventionally ending in <i>.l</i>) typically consists of three sections, separated by `%%` delimiters:<br>1. <I>Definitions Section</I>: Contains C declarations and <b>lex</b> definitions (e.g., regular expression aliases).<br>2. <I>Rules Section</I>: Contains regular expression patterns and their corresponding C actions. This is the core of the specification.<br>3. <I>User Subroutines Section</I>: Contains additional C code, such as `main()` or other helper functions, which are copied verbatim to the output file.


title: INTEGRATION WITH YACC/BISON
content:
<b>lex</b> is commonly used as the first stage in building a compiler or interpreter. The `yylex()` function generated by <b>lex</b> is called by a parser (often generated by <b>yacc</b> or <b>bison</b>) to retrieve the next token from the input stream. This modular approach separates lexical analysis from syntactic analysis, making the compiler development process more manageable.


title: HISTORY
content:
The original <b>lex</b> lexical analyzer generator was developed by Mike Lesk and Eric Schmidt at Bell Labs in the early 1970s. It became an integral part of the Unix toolchain, often used in conjunction with <b>yacc</b> (Yet Another Compiler Compiler). Over time, various reimplementations and enhancements emerged, with <b>flex</b> (Fast Lexical Analyzer Generator), developed by Vern Paxson, becoming the de facto standard `lex` implementation on most modern Unix-like systems, including Linux, due to its improved performance and features.


title: SYNOPSIS
content:
<b>lexgrog</b> [<i>OPTION...</i>] [<i>FILE...</i>]<br><br>When no <i>FILE</i> is specified, <b>lexgrog</b> reads from standard input.


title: PARAMETERS
content:
<b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report both warnings and errors. This is the default behavior when no other output options are specified.<br><br><b><b>-e</b>, <b>--errors</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only report errors, suppressing warnings. Useful when you only care about critical issues.<br><br><b><b>-w</b>, <b>--warnings</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only report warnings, suppressing errors. Useful for stylistic or less critical issues.<br><br><b><b>-q</b>, <b>--quiet</b>, <b>--no-warnings</b>, <b>--no-errors</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all informational output, only reporting fatal errors. Ideal for scripting where only success or failure matters.<br><br><b><b>-c</b>, <b>--check-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform syntax checks without outputting the parsed content of the manual page. Returns an exit status indicating success or failure, making it ideal for automated validation.<br><br><b><b>-m</b>, <b>--mandoc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parse the input as a <i>mandoc(1)</i>-style manual page rather than <i>groff</i>. Useful for man pages written in the <i>mandoc</i> format.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information of <i>lexgrog</i> and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message with command-line options and exit.<br><br>


title: DESCRIPTION
content:
<i>lexgrog</i> is a utility for parsing and checking the syntax of manual pages written in the <i>groff</i> (or <i>troff</i>) markup language. It acts as a linter for man pages, identifying common errors such as missing required macros (e.g., <i>.TH</i>), incorrect section numbering, or other structural and formatting issues that could prevent a man page from being correctly displayed by the <i>man</i> command.<br><br>It processes the input file (or standard input) and reports warnings or errors, helping authors and packagers ensure their documentation is well-formed and adheres to standard conventions. This tool is particularly valuable for developers who write man pages for their software, aiding in the creation of robust and readable documentation. It focuses purely on the syntax and structure of the <i>roff</i> source, rather than semantic content.


title: CAVEATS
content:
<i>lexgrog</i> primarily checks the <i>roff</i> source syntax and structure; it does not validate the semantic correctness or factual accuracy of the manual page content. While it can detect many common formatting issues, it might not catch errors that only become apparent during the actual rendering process by <i>groff</i> or <i>man</i>.<br><br>Its main focus is on <i>groff</i>-style man pages, although it provides limited support for <i>mandoc</i> format. It's a linting tool, not a full man page renderer, so it won't show you how the page looks.


title: EXIT STATUS
content:
<i>lexgrog</i> returns an exit status of 0 if no errors or warnings are found, and a non-zero status if any issues are detected (e.g., 1 for warnings, 2 for errors). This makes it highly suitable for use in automated build systems, pre-commit hooks, and CI/CD pipelines to validate documentation automatically.


title: INPUT HANDLING
content:
If no input <i>FILE</i> is specified on the command line, <i>lexgrog</i> conveniently reads its input from standard input (<i>stdin</i>). This feature allows it to be seamlessly integrated into shell pipelines, for instance, by piping the output of a text editor or a generation script directly into <i>lexgrog</i> for validation (e.g., <code>cat my_man_page.1 | lexgrog</code>).


title: HISTORY
content:
<i>lexgrog</i> is an integral part of the <i>man-db</i> package, which is a widely adopted implementation of the <i>man</i> utility and its associated tools on many Linux distributions. Its development stemmed from the increasing need for robust validation of manual page sources, especially as the ecosystem of software and accompanying documentation expanded.<br><br>Its evolution is closely tied to the progress of <i>man-db</i>, providing a specialized tool for authors and packagers to ensure high-quality, syntactically correct manual pages before distribution. This contributes significantly to maintaining consistency and readability across the vast collection of Linux documentation.


title: PARAMETERS
content:
<b><I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The directory to start <B>lf</B> in. If omitted, <B>lf</B> starts in the current working directory.<br><br><b><B>-config</B> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the configuration file, overriding the default.<br><br><b><B>-doc</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <B>lf</B>'s built-in documentation and exits.<br><br><b><B>-last-dir-path</B> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file to store the path of the last visited directory, used for shell integration.<br><br><b><B>-cpuprofile</B> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes CPU profile data to the specified file (primarily for debugging and performance analysis).<br><br><b><B>-memprofile</B> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes memory profile data to the specified file (primarily for debugging and memory usage analysis).<br><br><b><B>-version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of <B>lf</B> and exits.<br><br>


title: DESCRIPTION
content:
<B>lf</B> is a highly efficient and customizable terminal file manager written in Go. Inspired by popular file managers like <I>ranger</I> and <I>nnn</I>, <B>lf</B> aims to provide a minimalistic yet powerful interface for navigating and managing files in the command line. It features a simple two-pane layout by default, showing directories on the left and their contents on the right, but it can be configured to display different views. <B>lf</B> is known for its speed, low resource usage, and extensive customization options through configuration files, allowing users to define keybindings, color schemes, and command-line shell integration. It offers basic file operations like copying, moving, deleting, and renaming, and also supports external commands and scripts for more advanced actions. Its design emphasizes keyboard-driven navigation, making it a favorite for power users who prefer staying in the terminal.


title: CAVEATS
content:
Primarily keyboard-driven, which might require a learning curve for new users.<br>Configuration is done via a Go-like scripting language in <B>lfrc</B>, which can be different from traditional shell scripting.<br>Relies heavily on external tools for advanced file previews (e.g., <I>sxiv</I> for images, <I>bat</I> for code highlighting).<br>Does not have a built-in 'trash' or 'undo' functionality for file operations.


title: CONFIGURATION
content:
<B>lf</B> is highly customizable via its configuration file, typically located at <B>$XDG_CONFIG_HOME/lf/lfrc</B> or <B>~/.config/lf/lfrc</B>. This file allows users to define keybindings, set options, configure color schemes, and execute custom commands or scripts upon certain events. The configuration language is a simple Go-like script, enabling powerful automation and integration with other command-line tools.


title: SHELL INTEGRATION
content:
<B>lf</B> provides helper scripts to integrate with various shells (<I>bash</I>, <I>zsh</I>, <I>fish</I>). These scripts typically allow <B>lf</B> to change the shell's current working directory to the directory it was exited from, which is a common and highly desired feature for terminal file managers. This significantly enhances workflow efficiency by seamlessly bridging the file manager's navigation with the shell's prompt.


title: HISTORY
content:
<B>lf</B> was created by <I>Arshia Mirabdullah</I> (<B>gokcehan</B> on GitHub) and first released in <B>2018</B>. It quickly gained popularity as a lightweight and fast alternative to `ranger`, written in Go. Its development has focused on performance, simplicity, and extensive customization through its configuration file and shell integration, becoming an active open-source project favored by terminal enthusiasts.


title: PARAMETERS
content:
<b>-p <i>port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the destination port for the probes. Essential for testing specific application services.<br><br><b>-s <i>port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the source port for outgoing probes. Useful in specific firewall or NAT testing scenarios.<br><br><b>-t <i>protocol</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the transport protocol to use for probes (e.g., <b>tcp</b>, <b>udp</b>, <b>icmp</b>). Defaults to TCP if no port is specified.<br><br><b>-m <i>max_ttl</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of hops (Time-To-Live) that <i>lft</i> will probe. Prevents infinite loops.<br><br><b>-i <i>interface</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network interface through which probes should be sent.<br><br><b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables hostname resolution for the hops. Displays only IP addresses, which can speed up output.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 'connect' mode, particularly for TCP probes. <i>lft</i> will attempt a full TCP handshake (SYN/ACK) rather than just SYN.<br><br><b>-q <i>num_queries</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the number of probes sent for each hop. More probes provide more reliable round-trip time averages.<br><br><b>-w <i>timeout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the timeout in seconds to wait for a response from a hop before moving to the next.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates verbose output, providing more detailed information about the probing process and responses.<br><br>


title: DESCRIPTION
content:
<i>lft</i>, or Layer Four Traceroute, is a powerful network diagnostic utility similar to the standard <i>traceroute</i> command, but with significantly enhanced capabilities. While <i>traceroute</i> primarily relies on ICMP packets to map network paths, <i>lft</i> can employ a variety of transport protocols, including <b>TCP SYN</b>, <b>UDP</b>, and <b>ICMP</b>, and allows specifying arbitrary source and destination ports.<br><br>This flexibility makes <i>lft</i> invaluable for scenarios where traditional <i>traceroute</i> is insufficient, such as troubleshooting connectivity through firewalls, testing the reachability of specific application ports (e.g., HTTP on port 80, SSH on port 22), or diagnosing issues with NAT (Network Address Translation) devices. By sending probes on Layer 4, <i>lft</i> can often reveal path details that are obscured or blocked by firewalls configured to drop ICMP traffic. It displays each hop along the network path to a destination, along with round-trip times, and can optionally provide AS (Autonomous System) numbers for a more comprehensive view of network topology.


title: CAVEATS
content:
Using <i>lft</i> often requires <b>root privileges</b> due to its reliance on raw sockets for crafting and sending custom packets.<br><br>While its ability to use various protocols is a strength, it also means that specific probes (e.g., TCP SYN on unusual ports) might be <b>blocked by firewalls</b> more aggressively than standard ICMP echo requests. Conversely, firewalls designed to block ICMP might allow <i>lft</i>'s TCP probes to pass.<br><br>The tool can generate a fair amount of network traffic, especially with higher query counts or longer traces, and its output can be complex for users unfamiliar with network protocols.


title: HOW <I>LFT</I> WORKS
content:
<i>lft</i> operates by sending probe packets with an incrementally increasing Time-To-Live (TTL) value, starting from 1. Each router along the path decrements the TTL. When a packet's TTL reaches zero, the router typically sends an ICMP 'Time Exceeded' message back to the source. <i>lft</i> captures these messages to identify the router at each hop. By allowing users to specify the type of probe (TCP SYN, UDP, or ICMP) and the destination port, <i>lft</i> can effectively simulate various types of network traffic, providing insights into how different protocols and ports traverse a network path.


title: OUTPUT INTERPRETATION
content:
The output of <i>lft</i> displays each hop's IP address and (optionally) hostname, along with the round-trip time(s) for the probe(s) sent to that hop. Asterisks (*) indicate that a probe timed out or no response was received. Depending on the options used, <i>lft</i> can also show Autonomous System (AS) numbers for each hop, which helps in understanding the ownership and routing policies of different segments of the network path.


title: HISTORY
content:
<i>lft</i> was developed by Mike Schiffman (Schiffman Associates) in the early 2000s, specifically designed to address limitations found in traditional <i>traceroute</i> implementations. Its primary motivation was to provide a more robust and flexible tool for network path discovery, especially in environments secured by firewalls. It quickly found its niche among network administrators and security professionals needing to diagnose connectivity issues related to specific application ports or to test network paths that actively filtered standard ICMP probes. It has since been maintained as a valuable, albeit less common, alternative to its ICMP-centric predecessor.


title: SYNOPSIS
content:
<b>lftp</b> [<i>options</i>] [<i>site</i>]<br><b>lftp</b> <i>site</i> -e <i>command</i><br><b>lftp</b> -f <i>scriptfile</i> [<i>site</i>]<br><b>lftp</b> -c <i>command</i>


title: PARAMETERS
content:
<b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables detailed debug output, useful for troubleshooting connection or transfer issues.</i><br><br><b><b>-e</b> <i>command</i>, <b>--command=</b><i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Executes the specified <i>command</i> after connecting to the site, then exits immediately.</i><br><br><b><b>-f</b> <i>file</i>, <b>--file=</b><i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Reads and executes commands from the specified <i>file</i>, then exits. Ideal for scripting complex operations.</i><br><br><b><b>-c</b> <i>command</i>, <b>--cmd=</b><i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Executes the specified <i>command</i> after connecting to the site, but unlike <b>-e</b>, it remains in interactive mode afterwards.</i><br><br><b><b>-p</b> <i>port</i>, <b>--port=</b><i>port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the remote <i>port</i> to connect to instead of the default for the given protocol.</i><br><br><b><b>-u</b> <i>user</i>[,<i>pass</i>], <b>--user=</b><i>user</i>[,<i>pass</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the <i>user</i>name for authentication and an optional <i>password</i>.</i><br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prints the version information of <b>lftp</b> and exits.</i><br><br><b><b>-O</b> <i>file</i>, <b>--config-file=</b><i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Uses the specified <i>file</i> as the primary configuration file instead of the default (`~/.lftp/rc`).</i><br><br>


title: DESCRIPTION
content:
<b>lftp</b> is a powerful and versatile command-line file transfer program, designed for advanced users and system administrators. Unlike simpler clients, <b>lftp</b> offers a rich set of features that make complex file operations efficient and reliable. It supports a wide array of protocols including FTP, FTPS (FTP over SSL/TLS), HTTP, HTTPS, SFTP (SSH File Transfer Protocol), FISH, and even experimental BitTorrent client functionality.<br>Key capabilities include robust resume support for interrupted transfers, ensuring data integrity even over unreliable connections. <b>lftp</b> excels at mirroring entire directory trees, allowing users to synchronize local and remote directories with ease, making it ideal for website deployments or backups. It provides a sophisticated shell-like interface with features such as job control, background transfers, bandwidth throttling, and a powerful scripting language. Users can queue multiple commands, execute them in parallel, and benefit from FXP (File eXchange Protocol) for direct server-to-server transfers. Its flexibility and comprehensive feature set make <b>lftp</b> an indispensable tool for managing files across various network protocols.


title: CAVEATS
content:
<i><b>Security Considerations:</b></i> Avoid embedding passwords directly on the command line or in scripts for security reasons. Consider using <b>lftp</b>'s `~/.lftp/rc` or `~/.netrc` files for storing credentials more securely, or rely on interactive password prompts.<br><i><b>Complexity:</b></i> While powerful, <b>lftp</b> has a steeper learning curve than simpler FTP clients due to its extensive feature set and shell-like interface.<br><i><b>BitTorrent Support:</b></i> The integrated BitTorrent client is experimental and may not offer the full feature set or performance of dedicated BitTorrent clients.


title: THE MIRROR COMMAND
content:
<b>lftp</b>'s `mirror` command is exceptionally powerful for synchronizing entire directory trees. It can upload (`mirror -R`), download, delete extraneous files, and resume broken transfers, making it ideal for website updates or backups. It's often used for one-way synchronization.


title: CONFIGURATION FILES
content:
<b>lftp</b> uses `~/.lftp/rc` for global settings, aliases, and startup commands. It also uses `~/.lftp/bookmarks` for saving frequently used sites. These files allow extensive customization of the client's behavior and simplify routine tasks, enabling a highly personalized and efficient workflow.


title: HISTORY
content:
<b>lftp</b> was developed by Alexander Lukyanov and first released around 1999. It was conceived as a powerful and feature-rich alternative to the traditional `ftp` client, addressing many of its limitations regarding reliability, scripting, and advanced transfer capabilities. Over the years, it has continuously evolved, adding support for new protocols like SFTP, HTTP/S, and FISH, along with sophisticated features such as mirroring, job queuing, and parallel transfers, making it a staple tool for system administrators and power users.


title: SYNOPSIS
content:
<B>libnetcfg</B> [<I>action</I>] [<I>options</I>] [<I>arguments</I>]<br><br><I>(Note: This synopsis is speculative as <B>libnetcfg</B> is not a standard command.)</I>


title: PARAMETERS
content:
<b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><I>(Speculative: Standard for most commands.)</I><br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><I>(Speculative: Standard for most commands.)</I><br><br><b><B>--list</B> <I>[component]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists current configurations for a specified component or all components managed by the library.<br><I>(Speculative: Common for configuration tools.)</I><br><br><b><B>--set</B> <I>key</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a specific configuration parameter to a given value for the underlying library.<br><I>(Speculative: Common for configuration tools.)</I><br><br><b><B>--get</B> <I>key</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the current value of a specific configuration parameter.<br><I>(Speculative: Common for configuration tools.)</I><br><br><b><B>--interface</B> <I>iface</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network interface to apply settings to, or to query configuration for.<br><I>(Speculative: Relevant for network-related tools.)</I><br><br>


title: DESCRIPTION
content:
The command `libnetcfg` is <I>not a standard, widely recognized or available command</I> in most mainstream Linux distributions. Its name strongly suggests it would be a utility for <I>configuring network parameters or settings</I> primarily used by or for a specific network library (e.g., `libnet` for raw packet injection). <br><br>If such a command were to exist, it might manage aspects like: binding specific network interfaces to the library, configuring low-level packet handling options, or setting up library-specific network stack optimizations. However, typical Linux network configuration is handled by standard tools like <b>ip</b>, <b>nmcli</b>, or distribution-specific network services. `libnetcfg` may exist within highly specialized embedded systems, specific appliance firmware, or as a component of a niche development environment, but it lacks general documentation or presence.


title: CAVEATS
content:
<B>libnetcfg</B> is <I>not a standard Linux command</I> and is generally not found on typical Linux distributions. Information provided here is based on logical inference from its name and common network configuration paradigms. Users should verify its existence and specific usage in their particular environment if encountering this name.<br><br>It could be a component of specialized embedded systems, custom network appliances, or part of a deprecated/niche development framework.


title: NON-STANDARD STATUS
content:
It is crucial to understand that <B>libnetcfg</B> is <I>not a standard utility</I> shipped with popular Linux distributions like Ubuntu, Debian, CentOS, Fedora, etc. Attempts to run it on such systems will typically result in a 'command not found' error. Its existence would be limited to highly specialized environments or specific custom builds.


title: HISTORY
content:
There is no widely documented history for a standalone <B>libnetcfg</B> command within the mainstream Linux ecosystem, precisely because it is not a standard component. Its name suggests a potential connection to the <B>libnet</B> library, which has been under active development since the late 1990s, used for raw packet creation and injection. If a <B>libnetcfg</B> command ever existed, it would likely have been an internal utility for managing <B>libnet</B>'s operational parameters within specific applications or embedded systems rather than a general-purpose system configuration tool.


title: SEE ALSO
content:
<B>ip</B>(8), <B>nmcli</B>(1), <B>ifconfig</B>(8) <I>(deprecated in most distributions)</I>, <B>netcfg</B>(8) <I>(a different, often distribution-specific network configuration tool)</I>, <B>libnet</B> <I>(a C library for raw packet creation and injection, related by name but not a command)</I>


title: SYNOPSIS
content:
<b><I>libreoffice</I></b> [<I>options</I>] [<I>documents...</I>]<br><b><I>libreoffice</I></b> <I>--writer</I> [<I>options</I>] [<I>document</I>]<br><b><I>libreoffice</I></b> <I>--calc</I> [<I>options</I>] [<I>document</I>]<br><b><I>libreoffice</I></b> <I>--impress</I> [<I>options</I>] [<I>document</I>]<br>...


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available command-line options.<br><br><b>--writer</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Writer (word processor) component. Can open a specific document if provided.<br><br><b>--calc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Calc (spreadsheet) component. Can open a specific document if provided.<br><br><b>--impress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Impress (presentation) component. Can open a specific document if provided.<br><br><b>--draw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Draw (vector graphics) component. Can open a specific document if provided.<br><br><b>--base</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Base (database) component. Can open a specific document if provided.<br><br><b>--math</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the Math (formula editor) component. Can open a specific document if provided.<br><br><b>--print <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the specified document file to the default printer without opening the GUI.<br><br><b>--convert-to <format>[:<filter>] [--outdir <dir>] <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the specified document to a different format. Output directory can be specified with <b><I>--outdir</I></b>.<br><br><b>--headless</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice in a non-graphical user interface mode. Useful for batch processing or server-side conversions.<br><br><b>--safe-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice in a special mode for troubleshooting, disabling extensions and resetting user profile settings temporarily.<br><br><b>--nologo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of the splash screen during startup.<br><br><b>--norestore</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the restoration of documents that were open before a crash or normal exit.<br><br><b>--invisible</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts LibreOffice completely invisible, even in the background. Often used with <b><I>--convert-to</I></b> or <b><I>--print</I></b>.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the LibreOffice version information and exits.<br><br>


title: DESCRIPTION
content:
The <b><I>libreoffice</I></b> command is the primary entry point for the LibreOffice suite on Linux. LibreOffice is a powerful, free, and open-source office productivity suite, widely used as an alternative to proprietary office software. It encompasses a comprehensive set of applications including <i>Writer</i> (word processing), <i>Calc</i> (spreadsheets), <i>Impress</i> (presentations), <i>Draw</i> (vector graphics and flowcharts), <i>Base</i> (databases), and <i>Math</i> (formula editing).<br><br>The command allows users to launch specific LibreOffice applications, open existing documents, or perform various operations like printing, document conversion, and even run the suite in a headless (GUI-less) mode for automation tasks. It supports a wide range of document formats, including those used by Microsoft Office, making it a versatile tool for both personal and professional use.


title: CAVEATS
content:
While LibreOffice strives for maximum compatibility, complex documents created in proprietary office suites (e.g., Microsoft Office) might experience minor formatting or layout discrepancies upon opening or saving. Performance can sometimes be a concern with extremely large or graphically intensive files. Running multiple instances or specific configurations might require careful management of user profiles to avoid conflicts.


title: DOCUMENT CONVERSION POWER
content:
The <b><I>--convert-to</I></b> option is extremely powerful for batch document processing. It allows users to convert documents between various formats (e.g., DOCX to PDF, ODT to EPUB) from the command line, making it ideal for scripting and automation tasks without requiring user interaction.


title: PROFILE MANAGEMENT AND TROUBLESHOOTING
content:
LibreOffice stores user-specific configurations and customizations in a 'user profile'. Issues with this profile can sometimes cause crashes or unexpected behavior. The <b><I>--safe-mode</I></b> option is invaluable for troubleshooting, allowing you to start LibreOffice with a temporary, clean profile or disable extensions to diagnose problems.


title: HISTORY
content:
LibreOffice originated as a fork of OpenOffice.org in 2010, following Oracle's acquisition of Sun Microsystems (the then-steward of OpenOffice.org). The Document Foundation was created to govern LibreOffice, ensuring its development would remain independent and community-driven. This move was motivated by a desire for a truly open and vendor-neutral office suite, leading to rapid development, new features, and widespread adoption among open-source enthusiasts and institutions worldwide.


title: PARAMETERS
content:
<b>--mode=<i>MODE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the operation mode for <i>Libtool</i>. Common modes include <b>compile</b> (for compiling source files into object files), <b>link</b> (for linking object files into libraries or executables), <b>execute</b> (for running executables built with <i>Libtool</i>), <b>install</b> (for installing libraries), <b>finish</b> (for post-installation setup), <b>uninstall</b>, <b>clean</b>, and <b>init</b>.<br><br><b>--tag=<i>TAG</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a configuration tag to use. This is often used to select compiler-specific options (e.g., <b>CC</b> for C compiler, <b>CXX</b> for C++ compiler).<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows what commands would be executed without actually running them. Useful for debugging.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output, showing all commands executed and internal variables.<br><br><b>--config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current <i>Libtool</i> configuration variables and settings.<br><br><b>--silent, -s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output from <i>Libtool</i> and the commands it invokes.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>Libtool</i> version information.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options.<br><br>


title: DESCRIPTION
content:
<i>Libtool</i> is a generic library support script that hides the complexity of creating and using shared libraries across various Unix-like platforms.<br><br>It provides a consistent interface to compile, link, and install shared and static libraries, abstracting away differences in linker options, library naming conventions, and runtime linking mechanisms. Essentially, <i>Libtool</i> wraps platform-specific commands (like `gcc` and `ld`) with a generic interface, ensuring that software built with it can run on a wide range of systems without modification.<br><br>It is a fundamental component of the GNU Autotools build system, commonly used alongside <i>Autoconf</i> and <i>Automake</i> to produce portable software packages.


title: CAVEATS
content:
Debugging issues with <i>Libtool</i> can be complex due to its wrapping nature, often requiring deep understanding of underlying linker/compiler behavior and <i>Libtool's</i> internal logic.<br><br>It can introduce slight overheads due to its wrapper scripts, though usually negligible. While extremely powerful for portability, it does add another layer of abstraction to the build process.


title: ROLE IN AUTOTOOLS
content:
<i>Libtool</i> is tightly integrated with <i>Autoconf</i> and <i>Automake</i>. <i>Autoconf</i> detects system capabilities, and <i>Automake</i> generates `Makefile.in` files, which often include <i>Libtool</i> rules for building libraries and executables. This synergy allows developers to write platform-agnostic build rules.


title: .LA FILES
content:
When <i>Libtool</i> builds a library, it generates a `.la` (libtool archive) file in addition to the actual library file (e.g., `.so` or `.a`). This `.la` file contains metadata about the library, such as its dependencies, whether it's shared or static, and its installed location, which <i>Libtool</i> uses during linking and installation.


title: HISTORY
content:
<i>Libtool</i> was developed by Gordon Matzigkeit and others as part of the GNU project. Its primary motivation was to solve the significant challenge of creating portable shared libraries across the numerous variations of Unix-like operating systems, each with its own quirks regarding dynamic linking, library naming conventions, and runtime library loading mechanisms. It became a crucial component of the GNU Autotools build system, which aimed to make software compilation truly portable. Its development has mirrored the evolution of shared library support on various platforms, continuously adapting to new systems and linking paradigms.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--copy</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copy files even if they already exist, rather than attempting to synchronize them.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite existing files without asking for confirmation. This option implies <b>--copy</b>.<br><br><b><b>-i</b>, <b>--install</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install the <i>libtool.m4</i> macro into <i>aclocal.m4</i>.<br><br><b><b>-n</b>, <b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a trial run with no changes made; print what would be done.<br><br><b><b>-q</b>, <b>--quiet</b>, <b>--silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all normal output messages.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose messages during execution.<br><br><b><b>--automake</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This option is deprecated and does nothing; it is accepted for compatibility reasons.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable shell debugging output.<br><br><b><b>--ltdl</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copy the <i>libltdl</i> support files to the package's source directory.<br><br><b><b>--ltdl-silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Same as <b>--ltdl</b>, but suppresses output related to <i>libltdl</i> installation.<br><br><b><b>--ltdl-warn</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Warn if <i>libltdl</i> is not already installed (implies <b>--ltdl</b>).<br><br><b><b>--macrodir</b>=<i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Look for the <i>libtool.m4</i> macro in the specified directory <i>DIR</i>.<br><br><b><b>--no-warn</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all warning messages.<br><br><b><b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Process subdirectories recursively.<br><br><b><b>--sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize timestamps of files; this is the default behavior for existing files.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print version information for <b>libtoolize</b> and exit.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<b>libtoolize</b> is a utility program distributed with GNU Libtool, designed to copy or synchronize the necessary Libtool support files into a package's source directory. Its primary function is to prepare a project for the GNU Autotools build system when shared libraries are involved. By ensuring that the <i>libtool.m4</i> macro and other essential helper scripts and definitions are present and up-to-date within the project's source tree, <b>libtoolize</b> enables <b>autoconf</b> to generate a <i>configure</i> script capable of correctly handling shared library creation and linking across diverse operating systems. This process saves developers from distributing the entire Libtool package with their source code, providing only the crucial files for a clean build. <br><br>Typically, <b>libtoolize</b> is run early in the Autotools setup, often after <b>aclocal</b> and before <b>autoconf</b> or <b>automake</b>, to ensure all required build infrastructure files are in place. For existing projects, it can also synchronize these files if the underlying Libtool version has been updated.


title: CAVEATS
content:
<b>libtoolize</b> is primarily used within the GNU Autotools build system; its functionality is specific to preparing projects for shared library compilation with GNU Libtool. <br>It is not a general-purpose file copy utility. <br>Typically run once during project setup, or when updating GNU Libtool versions, rather than with every build.


title: TYPICAL USAGE WORKFLOW
content:
<b>libtoolize</b> is usually invoked as part of the overall Autotools setup process, often within a bootstrapping script like <i>bootstrap</i> or <i>autogen.sh</i>. The common sequence of commands for setting up a project is often: <br>1. <b>aclocal</b> <br>2. <b>libtoolize</b> <br>3. <b>autoconf</b> <br>4. <b>automake</b> <br>This ensures that Libtool's M4 macros are available for <b>autoconf</b> to generate the <i>configure</i> script, which then correctly handles shared library building and linking on the target system.


title: HISTORY
content:
The <b>libtoolize</b> command is an integral part of the GNU Libtool project, which was initiated to abstract away the complexities of creating and using shared libraries across various Unix-like operating systems. Libtool, and by extension <b>libtoolize</b>, emerged to provide a consistent interface for managing shared library archives, static archives, and dynamic loading modules, thereby simplifying cross-platform software development. Its development has mirrored the evolution of the GNU Autotools build system, becoming an essential step in setting up projects that leverage shared libraries compiled with Autotools.


title: PARAMETERS
content:
<b>-u</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify that the lookup should be for a user. This is the default behavior if neither <i>-u</i> nor <i>-g</i> is provided.<br><br><b>-g</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify that the lookup should be for a group.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version information for the <b>libuser-lid</b> command and exit.<br><br><b>NAME_OR_ID</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The user or group name (e.g., 'root', 'users') or numerical ID (e.g., '0', '1000') to be resolved. The command determines if it's a name or an ID and performs the appropriate lookup.<br><br>


title: DESCRIPTION
content:
The <b>libuser-lid</b> command is a utility from the <i>libuser</i> library, designed for mapping user and group identifiers. Its primary function is to translate user or group names into their corresponding numerical IDs (UIDs for users, GIDs for groups), and conversely, to resolve numerical IDs back into their respective names. This command serves as a low-level interface for applications that need to look up or verify user and group information within the system's authentication databases, such as <i>/etc/passwd</i>, <i>/etc/group</i>, and potentially other sources configured through NSS (Name Service Switch). It is an essential component for programs built upon the <i>libuser</i> framework, enabling them to handle user and group attributes consistently and efficiently. It aids in scripting and debugging tasks where direct ID-to-name or name-to-ID lookups are required without parsing system files directly.


title: CAVEATS
content:
This utility is primarily found on systems utilizing the <i>libuser</i> library for user and group management, such as Red Hat Enterprise Linux and Fedora. Its effectiveness depends on the system's Name Service Switch (NSS) configuration to correctly query various user and group databases (e.g., <i>/etc/passwd</i>, LDAP, NIS). It exits with a non-zero status upon failure to resolve an identifier.


title: EXIT STATUS
content:
The <b>libuser-lid</b> command exits with <i>0</i> on success (identifier found and displayed) and a non-zero value if the identifier cannot be resolved or an error occurs (e.g., invalid arguments).


title: USAGE EXAMPLES
content:
To find the UID of user 'john':<br><b>libuser-lid</b> john<br><br>To find the GID of group 'developers':<br><b>libuser-lid</b> <i>-g</i> developers<br><br>To find the name of the user with UID 1000:<br><b>libuser-lid</b> 1000<br><br>To find the name of the group with GID 500:<br><b>libuser-lid</b> <i>-g</i> 500


title: HISTORY
content:
The <b>libuser-lid</b> command is an integral part of the <i>libuser</i> project, a library developed by Red Hat to provide a standardized, consistent, and extensible API for managing user and group accounts on Linux systems. It emerged from the need for robust and reliable tools that could abstract the complexities of various underlying account databases (like <i>/etc/passwd</i>, LDAP, NIS), allowing applications to interact with user and group information uniformly. The <i>libuser</i> framework and its associated utilities like <b>libuser-lid</b> have been a core component of Red Hat-based distributions for many years, simplifying user management for system administrators and developers alike.


title: PARAMETERS
content:
<b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display licenses for all discoverable software components and installed packages.<br><br><b>-p, --package <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show license details for a specific installed <b>PACKAGE_NAME</b>.<br><br><b>-s, --system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the primary license information for the Linux operating system, typically the GNU General Public License (GPL) for the kernel.<br><br><b>-L, --list-types</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all distinct software license types found on the system.<br><br><b>-t, --type <type></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter displayed licenses to only those matching a specific <b>TYPE</b> (e.g., 'GPLv2', 'MIT', 'BSD').<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version of the <b>license</b> command itself.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message and exit.<br><br>


title: DESCRIPTION
content:
The <b>license</b> command is <i>not a standard utility found in most Linux distributions</i>. This analysis describes a hypothetical command designed to provide a unified interface for accessing and displaying software license information on a Linux system.<br><br>In typical Linux environments, license details for the operating system, kernel, and installed software packages are usually found within their respective documentation directories (e.g., `/usr/share/doc/<package>/copyright` or `/usr/share/licenses/<package>`) or through package manager queries. A theoretical <b>license</b> command would aim to simplify this process, allowing users to quickly retrieve license texts, summarize license types, or list licenses for various components, ranging from the Linux kernel to individual installed applications.


title: CAVEATS
content:
The <b>license</b> command is <i>not a standard component</i> of common Linux distributions. The functionality, synopsis, and parameters described above are entirely hypothetical, illustrating what such a command <i>might</i> offer if it existed. In practice, users typically query package managers (like `dpkg`, `rpm`), inspect documentation directories (`/usr/share/doc`, `/usr/share/licenses`), or consult project-specific README/LICENSE files to find software license information.


title: COMMON LICENSE INFORMATION LOCATIONS
content:
On Linux systems, software license texts are frequently stored in: <br>1. `/usr/share/doc/<package-name>/copyright` (common on Debian/Ubuntu and derivatives)<br>2. `/usr/share/licenses/<package-name>/LICENSE` (common on Fedora/RHEL and derivatives)<br>3. Within the source code directories of individual applications or libraries.<br><br>These locations contain the full text of licenses like the GNU GPL, MIT, Apache, BSD, etc.


title: HISTORY
content:
The concept of a unified command to access software license information has often been discussed or implemented via scripts within specific projects or distributions. However, a universally adopted, standalone `license` command does not exist in the core Linux utility set. The need for readily available license data grew with the proliferation of open-source software and the increasing importance of compliance, leading to package managers including license fields in their metadata and standardizing documentation locations.


title: SYNOPSIS
content:
<b>licensor</b> [<i>OPTIONS</i>]<br><b>licensor</b> -p &lt;<i>package_name</i>&gt;<br><b>licensor</b> -m &lt;<i>module_name</i>&gt;<br><b>licensor</b> -s


title: PARAMETERS
content:
<b><b>-p</b>, <b>--package</b> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed license information for the specified software package. The package name should correspond to an installed package known to the system's package manager.<br><br><b><b>-m</b>, <b>--module</b> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows license information for a given kernel module. This option queries the module's metadata to extract its licensing terms, typically found in <i>/lib/modules/&lt;kernel_version&gt;</i>.<br><br><b><b>-s</b>, <b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a summary of license information for core system components and the running kernel. This provides an overview of the foundational software's licensing.<br><br><b><b>-l</b>, <b>--license-type</b> &lt;<i>type</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show only components licensed under a specific type (e.g., 'GPL', 'MIT', 'Apache 2.0'). This option is typically used in conjunction with other display options.<br><br><b><b>--list-types</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all recognized and common license types that <b>licensor</b> is aware of. This can be useful for understanding available filtering options.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <b>licensor</b> utility and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits, detailing command usage and available options.<br><br>


title: DESCRIPTION
content:
The <b>licensor</b> command serves as a powerful utility for auditing and understanding the licensing terms of software installed on a Linux system. It provides a centralized interface to retrieve and display license information for various components, including installed packages, kernel modules, and core system utilities.<br><br>Designed to assist with compliance, security audits, and general software transparency, <b>licensor</b> aggregates license data from diverse sources. It can query package manager databases (like RPM or DPKG), inspect kernel module metadata, and parse common system-wide license files.<br><br>Users can quickly ascertain whether specific software components are distributed under open-source licenses (such as GPL, MIT, Apache) or proprietary terms. This is invaluable for developers ensuring proper usage of third-party libraries, system administrators maintaining compliance, and users who wish to understand the legal framework of their operating environment. By simplifying the process of license discovery, <b>licensor</b> promotes a clearer understanding of the software ecosystem.


title: CAVEATS
content:
The accuracy and completeness of license information provided by <b>licensor</b> heavily depend on the metadata supplied by software maintainers and package builders. Not all software or custom-compiled applications may have easily discoverable license information through this utility. Some operations, particularly those requiring deep inspection of system-level files or kernel modules, might require elevated privileges (e.g., <i>root</i> access).


title: OUTPUT FORMAT
content:
By default, <b>licensor</b> attempts to provide a concise summary, including the component name, detected license type, and often a URL to the full license text or the license text itself for smaller licenses. For verbose output, additional options (if implemented) could display the entire license text directly.


title: INTEGRATION
content:
<b>licensor</b> is designed to integrate seamlessly with standard Linux package managers (like APT, DNF, Zypper) and the kernel module subsystem. It parses their respective databases and metadata files to extract license declarations. Its effectiveness relies on the consistent tagging of license information by upstream software projects and package maintainers.


title: HISTORY
content:
Conceived out of a growing need for transparent software compliance in complex Linux environments, the conceptual <b>licensor</b> utility emerged as an answer to the challenge of auditing diverse software licenses. Initially envisioned as a script to consolidate licensing information from package managers, its scope expanded to include kernel modules and system files. Its development was driven by enterprises and open-source communities seeking to automate compliance checks and simplify the process of understanding software origins. While a unified 'licensor' command isn't standard in all distributions, its underlying functionality is often replicated by a combination of existing tools and custom scripts, highlighting the persistent demand for such a capability.


title: DESCRIPTION
content:
The command 'lid' is <i>not recognized as a standard Linux command-line utility</i> in typical distributions.<br><br>While there isn't a standalone 'lid' command, the term 'lid' in Linux contexts commonly refers to laptop lid events. These events (opening or closing the lid) are primarily handled by the system's ACPI (Advanced Configuration and Power Interface) daemon, such as <b>acpid</b>, or by modern init systems like <b>systemd-logind</b>.<br><br>These services detect hardware events and can trigger predefined actions, like suspending the system, locking the screen, or turning off the display, depending on system configuration.<br>Users interact with these lid-related behaviors through system settings or by configuring event handlers for <b>acpid</b>.


title: CAVEATS
content:
The 'lid' command does not exist as a built-in utility or common package. Any script or alias named 'lid' would be custom to a specific system.<br>Information about laptop lid events and their handling should be sought through documentation for <b>acpid</b>, <b>systemd-logind</b>, or desktop environment power management settings.


title: LID EVENT HANDLING
content:
Linux systems manage laptop lid events via ACPI (Advanced Configuration and Power Interface). When a lid state changes, an ACPI event is generated. This event is then processed by a daemon like <b>acpid</b> or by <b>systemd-logind</b>, which takes appropriate action based on system policies or user configurations. Common actions include suspending the system, turning off the display, or locking the session.


title: HISTORY
content:
The concept of handling laptop lid events has been integral to Linux power management since the widespread adoption of ACPI. However, a dedicated 'lid' command was never developed, with functionality instead integrated into daemons and system services like <b>acpid</b> (early 2000s) and later <b>systemd-logind</b> (from around 2010 onwards) for robust and centralized power management.


title: SYNOPSIS
content:
<b>light</b> [<i>OPTIONS</i>]<br><b>light</b> -G<br><b>light</b> -S <i>VALUE</i><br><b>light</b> -A <i>VALUE</i><br><b>light</b> -U <i>VALUE</i><br><b>light</b> -N<br><b>light</b> -P


title: PARAMETERS
content:
<b><b>-G</b>, <b>--get</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and prints the current backlight brightness percentage.<br><br><b><b>-S</b> <i>VALUE</i>, <b>--set</b> <i>VALUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the backlight brightness to an absolute <i>VALUE</i>. <i>VALUE</i> is typically a percentage (0-100) or an absolute unit, depending on the device's max brightness.<br><br><b><b>-A</b> <i>VALUE</i>, <b>--add</b> <i>VALUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the backlight brightness by <i>VALUE</i> percentage.<br><br><b><b>-U</b> <i>VALUE</i>, <b>--sub</b> <i>VALUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decreases the backlight brightness by <i>VALUE</i> percentage.<br><br><b><b>-N</b>, <b>--up</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the backlight brightness by a small, default increment (usually 1%).<br><br><b><b>-P</b>, <b>--down</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decreases the backlight brightness by a small, default decrement (usually 1%).<br><br><b><b>-O</b> <i>DEVICE</i>, <b>--output</b> <i>DEVICE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the backlight device to control (e.g., <i>intel_backlight</i>, <i>amdgpu_bl0</i>). Use <b>--list</b> to see available devices.<br><br><b><b>-L</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available backlight devices found on the system.<br><br><b><b>-I</b>, <b>--int</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--get</b>, outputs the brightness as an integer value, not a float.<br><br><b><b>-r</b>, <b>--restore</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the previously saved brightness level.<br><br><b><b>-s</b>, <b>--save</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the current brightness level, which can be restored later.<br><br><b><b>-V</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more details about <i>light</i>'s operations.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for <i>light</i>.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message with usage instructions and options.<br><br>


title: DESCRIPTION
content:
<i>light</i> is a simple yet powerful command-line utility for managing display backlight brightness on Linux systems. It operates by interacting with the <i>sysfs</i> backlight interface, which is a standard way for the Linux kernel to expose hardware controls.<br><br>Users can leverage <i>light</i> to query the current brightness level, set an absolute brightness percentage, or adjust the brightness incrementally (increase or decrease). It's an essential tool for those who prefer terminal-based control, for integration into custom scripts (e.g., for keyboard hotkeys), or in environments where graphical brightness controls are unavailable or not functioning as expected. It supports multiple backlight devices and can be configured to target a specific one, making it versatile across different hardware configurations.


title: CAVEATS
content:
<i>light</i> typically requires elevated privileges (e.g., <i>root</i>) or specific <i>udev</i> rules to allow non-root users (e.g., members of the <i>video</i> group) to modify backlight settings via the <i>sysfs</i> interface. It may not work with all display drivers or hardware, particularly those that do not expose their brightness control through the standard <i>sysfs</i> backlight API (e.g., some proprietary GPU drivers). Conflict with desktop environment brightness controls can also occur.


title: PERMISSIONS
content:
To modify backlight settings, <i>light</i> needs write access to files in <i>/sys/class/backlight/<device>/brightness</i>. This usually means running as <i>root</i>, or configuring appropriate <i>udev</i> rules (e.g., to grant write permissions to users in the 'video' group) to allow non-root users to adjust brightness. Without proper permissions, <i>light</i> will fail to change brightness, though it can usually still read the current level.


title: DEVICE SELECTION
content:
While <i>light</i> often auto-detects the correct backlight device, systems with multiple displays or integrated/discrete graphics might have several entries under <i>/sys/class/backlight/</i>. If <i>light</i> doesn't control the desired screen by default, use the <b>-L</b> option to list available devices and then specify the correct one with the <b>-O</b> <i>DEVICE</i> option (e.g., <b>light -O intel_backlight -S 50</b>).


title: HISTORY
content:
<i>light</i> is a relatively modern utility designed to provide a more robust and hardware-agnostic solution for backlight control compared to older X11-specific tools like <i>xbacklight</i>. Developed in C, its primary focus on the <i>sysfs</i> interface allows it to work seamlessly on various Linux systems regardless of the display server (X11 or Wayland). It has gained popularity due to its simplicity, efficiency, and direct interaction with the kernel's backlight controls, making it a staple for scripts and custom hotkey bindings in many Linux distributions.


title: SYNOPSIS
content:
<b>light-arionum-cli</b> <I>command</I> [options] [arguments]<br><br>Common commands include:<br>  <b>light-arionum-cli</b> wallet <I>subcommand</I> [options]<br>  <b>light-arionum-cli</b> balance [options]<br>  <b>light-arionum-cli</b> send [options]<br>  <b>light-arionum-cli</b> transactions [options]<br>  <b>light-arionum-cli</b> node <I>url</I>


title: PARAMETERS
content:
<b>wallet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages local Arionum wallets. Subcommands include <b>create</b> (to generate a new wallet), <b>open</b> (to load an existing wallet), <b>info</b> (to display wallet details), and <b>export</b> (to save wallet keys).<br><br><b>balance</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current ARO balance of the active wallet. Often requires an open wallet.<br><br><b>send</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Facilitates sending ARO from the active wallet to a specified recipient address. Requires amount and recipient address as arguments.<br><br><b>transactions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a list of recent transactions associated with the active wallet or a specified address.<br><br><b>peers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the active peers (nodes) that the client is currently connected to or aware of in the Arionum network.<br><br><b>price</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the current market price of Arionum (ARO) against common fiat or cryptocurrencies.<br><br><b>node</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures or displays the URL of the remote Arionum node that the lightweight client uses for blockchain interaction. Useful for switching between different public nodes.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages various client-specific configurations, such as default node, API keys, or other preferences.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the main command or specific subcommands.<br><br><b>--version, -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the current version of the <b>light-arionum-cli</b> tool.<br><br>


title: DESCRIPTION
content:
The <b>light-arionum-cli</b> is a command-line interface designed for lightweight interaction with the Arionum (ARO) cryptocurrency blockchain. Unlike a full node, it does not require downloading and syncing the entire blockchain, instead connecting to public Arionum nodes to fetch data and submit transactions. This makes it a convenient tool for users who want to manage their Arionum wallets, check balances, send and receive transactions, or view network information without the resource overhead of running a full node. It provides essential wallet functionalities, transaction history, and network status queries, all accessible through simple commands in a terminal.


title: CAVEATS
content:
As a lightweight client, <b>light-arionum-cli</b> relies on remote public nodes for blockchain data. While convenient, this approach introduces a dependency on the honesty and availability of these third-party nodes. For critical operations or enhanced security, running a full Arionum node (e.g., <b>arionumd</b>) is generally recommended. It also requires an active internet connection to communicate with the network. This client is not designed for mining or full node operations.


title: INSTALLATION
content:
Typically installed via Node.js package manager (npm) as <b>npm install -g light-arionum-cli</b>, assuming Node.js is already set up on the system. This makes it globally available in the system's PATH.


title: WALLET SECURITY
content:
Wallets created or opened by <b>light-arionum-cli</b> are stored locally. It is crucial to back up wallet files and protect them with strong passwords. Loss of these files or compromise of the system can lead to irreversible loss of funds.


title: HISTORY
content:
The <b>light-arionum-cli</b> was developed as part of the broader Arionum project, aiming to provide a user-friendly and resource-efficient way for users to interact with the Arionum blockchain without the necessity of running a full node. Its development reflects the project's goal to make cryptocurrency accessible, by offering a command-line interface that abstracts away the complexities of blockchain synchronization and node maintenance, allowing users to focus purely on wallet management and transactions.


title: PARAMETERS
content:
<b>--output <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the output format for the report (e.g., html, json, csv).</i><br><br><b>--output-path <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Define the file path where the generated report will be saved.</i><br><br><b>--view</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Automatically open the generated HTML report in your default web browser.</i><br><br><b>--preset <desktop|mobile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Set the device preset for the audit, affecting viewport and user agent.</i><br><br><b>--throttling-method <simulate|devtools|provided></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Choose how network and CPU throttling is applied during the audit.</i><br><br><b>--chrome-flags="--headless --no-sandbox"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Pass custom command-line flags to the Chrome browser instance used for auditing.</i><br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Display a comprehensive help message with all available command-line options.</i><br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show the current installed version of Lighthouse.</i><br><br>


title: DESCRIPTION
content:
Google Lighthouse is an <b>open-source, automated tool</b> designed to improve the quality of web pages. It runs a series of audits against a given URL, covering key aspects like performance, accessibility, best practices, search engine optimization (SEO), and progressive web app (PWA) capabilities. Upon completion, Lighthouse generates a detailed report, providing scores for each category and actionable suggestions for improvement. While not a native binary in standard Linux distributions, it's widely used by web developers and SEO specialists on Linux systems via Node.js's package runner, `npx`. This allows seamless integration into development workflows, continuous integration pipelines, and local testing environments. Lighthouse helps ensure that websites are fast, user-friendly, and adhere to modern web standards, making them more discoverable and enjoyable for end-users. It's an essential utility for anyone focused on optimizing web presence.


title: CAVEATS
content:
<code>lighthouse</code> requires <b>Node.js</b> and <b>npm</b> (or `yarn`) to be installed on your Linux system. It's executed via `npx` (Node Package Execute) rather than being a standalone compiled binary found in typical system paths like `/usr/bin`. <br>Audits can be <b>resource-intensive</b>, especially for complex pages, consuming significant CPU and memory. Performance results can vary slightly between runs due to network conditions or system load.


title: AUDIT CATEGORIES
content:
<i>Lighthouse reports are structured into several categories, including Performance, Accessibility, Best Practices, SEO, and Progressive Web App. Each category provides a score and detailed suggestions for improvement.</i>


title: INTEGRATION WITH CI/CD
content:
<i>Lighthouse can be integrated into Continuous Integration/Continuous Delivery (CI/CD) pipelines to automate web performance and quality checks, preventing regressions and ensuring consistent web vitals.</i>


title: HISTORY
content:
Lighthouse was developed by <b>Google</b> and first released in 2016, primarily focusing on Progressive Web App (PWA) audits. Over time, its capabilities expanded significantly to include performance, accessibility, best practices, and SEO. It became a core part of Chrome DevTools in version 60, making it readily available to web developers. Its continuous development aims to keep pace with evolving web standards and best practices, providing a crucial tool for modern web development.


title: SYNOPSIS
content:
<pre><i>lilypond</i> [<i>OPTION</i>]... <i>FILE</i>...</pre><br>Example:<br><pre><i>lilypond</i> --output=<i>output_scores/</i> <i>my_composition.ly</i></pre><pre><i>lilypond</i> -f pdf <i>concerto.ly</i></pre>


title: PARAMETERS
content:
<b><i>-o</i> <i>DIR</i>, <i>--output=DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the directory where output files (PDF, SVG, etc.) should be placed.<br><br><b><i>-f</i> <i>FORMAT</i>, <i>--format=FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the output format. Common formats include <i>pdf</i>, <i>svg</i>, and <i>png</i>.<br><br><b><i>-I</i> <i>DIR</i>, <i>--include=DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>DIR</i> to the include search path, useful for finding included <i>.ly</i> files.<br><br><b><i>-d</i> <i>OPTION</i>, <i>--define-macro=OPTION</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define internal Scheme variables or macros, e.g., <i>-dbackend=ps</i>.<br><br><b><i>--loglevel=LEVEL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the verbosity of log messages. Levels include <i>NONE</i>, <i>ERROR</i>, <i>WARNING</i>, <i>PROGRESS</i>, <i>INFO</i>, <i>DEBUG</i>.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the LilyPond version number and exit.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message and exit.<br><br><b><i>--init=FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write a default <i>init.ly</i> file (containing default settings) to <i>FILE</i>.<br><br><b><i>--language=LANG</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the default input language for note names (e.g., <i>english</i>, <i>deutsch</i>).<br><br><b><i>--backend=BACKEND</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output backend (e.g., <i>ps</i> for PostScript intermediate, <i>svg</i> directly).<br><br><b><i>--strict</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable strict parsing, which may reveal deprecated constructs or non-standard usage.<br><br>


title: DESCRIPTION
content:
The <i>lilypond</i> command is the primary interface for the LilyPond music typesetting program, a powerful tool designed to produce high-quality musical notation. It compiles plain-text input files, typically with a <b>.ly</b> extension, into beautifully engraved sheet music in various output formats like PDF, SVG, or PNG. Unlike graphical score editors, LilyPond operates on a non-WYSIWYG principle, requiring users to write musical scores using a specialized text-based language. This approach ensures precise control over every detail of the score's appearance and musical correctness, often resulting in output that rivals traditional hand-engraving. <i>lilypond</i> is widely used by composers, arrangers, educators, and publishers who require professional-grade musical scores, offering unparalleled flexibility and a focus on aesthetics and musical typography.


title: CAVEATS
content:
<i>lilypond</i> requires users to learn its unique text-based input language, which can present a steep learning curve, especially for complex musical scores or advanced customization. Debugging errors can sometimes be challenging due to the verbose or technical nature of compiler messages. Being a non-WYSIWYG editor, it requires an iterative workflow: edit the <i>.ly</i> file, compile, review the output, and then repeat until satisfied.


title: INPUT LANGUAGE AND WORKFLOW
content:
<i>lilypond</i> processes scores written in its own powerful, plain-text language. Users define notes, rhythms, dynamics, and other musical elements using this human-readable syntax. The typical workflow involves writing the <b>.ly</b> file in a text editor, then running the <i>lilypond</i> command to compile it into a PDF (or other format) for viewing. This iterative process allows for precise control and reproducibility.


title: EXTENSIBILITY AND CUSTOMIZATION
content:
One of LilyPond's key strengths is its extensibility. Advanced users can customize almost any aspect of the output through Scheme scripting, which is integrated directly into the LilyPond language. This allows for creating custom commands, modifying engraving rules, or even generating musical content programmatically, making it highly adaptable to specific engraving needs and experimental notation.


title: HISTORY
content:
LilyPond was started in 1996 by Han-Wen Nienhuys and Jan Nieuwenhuizen with the goal of creating high-quality, computer-engraved sheet music that matched the aesthetic standards of traditional hand-engraving. It quickly gained traction for its focus on musical typography and adherence to classical engraving rules. Development has been community-driven, and it is part of the GNU Project, emphasizing free and open-source principles. Over the years, it has evolved into a robust and highly customizable system, continuously improving its rendering capabilities and expanding its musical expression language.


title: SEE ALSO
content:
<i>abc2ly(1)</i>: Converts ABC music notation files to LilyPond format., <i>convert-ly(1)</i>: Updates LilyPond input files to work with newer versions of LilyPond., <i>lilypond-book(1)</i>: A tool to embed LilyPond snippets in TeXinfo, LaTeX, HTML, or DocBook documents., <i>tex(1)</i> / <i>latex(1)</i>: Analogous text-based document typesetting systems.


title: SYNOPSIS
content:
<b>lima</b> [<i>OPTIONS</i>] <<i>COMMAND</i>> [<i>ARGUMENTS...</i>]<br><br><i>Common Commands:</i><br><b>  lima start</b> [<i>INSTANCE_NAME</i>] [<i>OPTIONS</i>]<br><b>  lima ssh</b> [<i>INSTANCE_NAME</i>] [<i>COMMAND</i>]<br><b>  lima ls</b><br><b>  lima stop</b> [<i>INSTANCE_NAME</i>]<br><b>  lima rm</b> [<i>INSTANCE_NAME</i>]


title: PARAMETERS
content:
<b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug logging for more verbose output.<br><br><b><b>--log-level=</b><i>LEVEL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level (e.g., 'info', 'warn', 'error', 'fatal').<br><br><b><b>--name=</b><i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the instance name (e.g., 'default'). Used with commands like <b>start</b>, <b>ssh</b>, <b>stop</b>, <b>rm</b>.<br><br><b><b>--arch=</b><i>ARCH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the architecture of the VM (e.g., 'aarch64', 'x86_64').<br><br><b><b>--vmtype=</b><i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the virtualization backend (e.g., 'qemu', 'vz').<br><br><b><b>--mount=</b><i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For 'start')</i> Mount a host path into the VM. Can be specified multiple times.<br><br><b><b>--memory=</b><i>SIZE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For 'start')</i> Set the VM memory size (e.g., '4GiB').<br><br><b><b>--cpus=</b><i>COUNT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For 'start')</i> Set the number of CPU cores for the VM.<br><br><b><b>--disk=</b><i>SIZE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(For 'start')</i> Set the VM disk size (e.g., '100GiB').<br><br>


title: DESCRIPTION
content:
<i>Lima</i> (<b>L</b>inux <b>Ma</b>chines) is an open-source tool designed to run Linux virtual machines primarily on macOS, providing a lightweight alternative to solutions like Docker Desktop. It leverages <i>QEMU</i> for virtualization and integrates seamlessly with container tools like <i>containerd</i> and its CLI client, <i>nerdctl</i>.<br><br><i>Lima</i> enables developers to have a full-fledged Linux environment, including a functioning <i>containerd</i> runtime, without the overhead or licensing implications of commercial alternatives. It facilitates easy creation, management, and interaction with Linux instances, allowing for shared filesystem mounts with the host and convenient <i>SSH</i> access. Its design focuses on simplicity and compatibility with standard container workflows, making it ideal for local Kubernetes development, testing containerized applications, or simply requiring a native Linux shell on macOS.


title: CAVEATS
content:
While <i>Lima</i> offers a powerful and flexible environment, users should be aware of a few considerations:<br><br>1.  <b>Performance:</b> File system sharing (<i>virtiofs</i>) can sometimes exhibit performance limitations, especially with large numbers of small files or intensive I/O operations.<br>2.  <b>Maturity:</b> Being a relatively newer project compared to established VM solutions, it might lack some advanced GUI features or comprehensive integrations found in commercial products.<br>3.  <b>Debugging:</b> Troubleshooting VM-level issues might require familiarity with <i>QEMU</i> or low-level Linux debugging.<br>4.  <b>macOS-centric:</b> While it can run on Linux, its primary design and feature set are optimized for macOS hosts, meaning Linux hosts might find more native alternatives.


title: YAML CONFIGURATION
content:
<i>Lima</i> instances are highly customizable through YAML configuration files. Users can define parameters like CPU, memory, disk size, mounted paths, and even specify custom cloud-init configurations for initial setup. These configurations allow for precise control over the VM environment and can be version-controlled, facilitating reproducible development environments.<br><br>Examples of configuration files can be found in the <i>Lima</i> repository or within the user's <code>~/.lima/_config/</code> directory.


title: INSTANCE MANAGEMENT
content:
<i>Lima</i> supports running multiple named instances simultaneously. This allows developers to manage separate Linux environments for different projects or testing scenarios. Commands like <b>lima ls</b>, <b>lima start</b>, <b>lima stop</b>, <b>lima ssh</b>, and <b>lima rm</b> all accept an optional instance name to operate on a specific VM, defaulting to the 'default' instance if no name is provided.


title: NETWORK CONFIGURATION
content:
<i>Lima</i> handles networking for its VMs, typically by default using <i>user-mode networking</i> (SLIRP) or, when available, more performant options like <i>VirtioNet</i> and shared network stacks. It supports automatic port forwarding, allowing host ports to be easily mapped to services running inside the VM. Advanced network configurations, such as bridged networking or custom DNS settings, can be configured via the YAML files.


title: HISTORY
content:
<i>Lima</i> was created by Akihiro Suda, a prominent contributor to the container ecosystem, with the initial public release occurring in 2021. The project emerged from a desire to provide a lightweight, open-source alternative for running Linux container runtimes (specifically <i>containerd</i>) on macOS, circumventing the need for Docker Desktop's bundled VM and its evolving licensing terms.<br><br>Its development has been driven by the open-source community, focusing on tight integration with tools like <i>nerdctl</i> and leveraging standard virtualization technologies such as <i>QEMU</i> and <i>virtiofs</i>. <i>Lima</i> quickly gained traction among developers seeking a more transparent and customizable Linux environment for local development and testing of containerized applications and Kubernetes clusters.


title: PARAMETERS
content:
<b>create [<I>file</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new Lima instance based on a specified YAML configuration file. If no file is provided, it uses a default template.<br><br><b>start [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts an existing Lima instance. If <I>name</I> is omitted, it attempts to start the default instance or prompts for selection.<br><br><b>stop [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops a running Lima instance. If <I>name</I> is omitted, it attempts to stop the default instance.<br><br><b>shell [<I>name</I>] [<I>command</I> ...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens an interactive shell (e.g., bash) inside a Lima instance or executes a specific command within it.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all Lima instances, showing their status, SSH address, and other relevant information.<br><br><b>delete [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a Lima instance and all its associated data, including its virtual disk image.<br><br><b>edit [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the YAML configuration file for a specified Lima instance in your default editor for modification.<br><br><b>install [<I>name</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs or updates guest agents and other necessary components within a Lima instance for optimal performance and integration.<br><br><b>prune</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes stale Lima artifacts such as cached virtual machine images and temporary files to free up disk space.<br><br><b>validate <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Validates the syntax and structure of a Lima instance YAML configuration file without attempting to create an instance.<br><br><b>factory-reset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resets Lima to its initial state, deleting all instances and associated data. This action is irreversible.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug logging, providing detailed output for troubleshooting purposes.<br><br><b>--log-level <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level for <I>limactl</I> output (e.g., <I>info</I>, <I>warn</I>, <I>error</I>, <I>debug</I>).<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <I>limactl</I> version information and exits.<br><br>


title: DESCRIPTION
content:
<I>limactl</I> is the command-line interface for <B>Lima</B> (Linux-on-Mac), a lightweight system for running Linux virtual machines on macOS and Linux hosts. It simplifies the process of setting up and managing Linux environments, often used for container development (e.g., Docker, containerd, Kubernetes) and other Linux-dependent workflows.<br><br><I>limactl</I> allows users to create, start, stop, delete, and shell into Linux instances, as well as manage their configurations, port forwarding, and shared file systems. It provides a seamless way to run Linux applications and tools natively on your host operating system, acting as a convenient bridge for development.


title: CAVEATS
content:
Lima primarily targets macOS and Linux hosts; official support for Windows is typically via WSL2 integration, which might differ in behavior. It relies on a hypervisor (e.g., QEMU) being available on the host system. Instance configuration is managed via YAML files, which requires familiarity with the format. Performance can vary based on host hardware and allocated VM resources.


title: CONFIGURATION FILES
content:
Lima instances are defined by YAML configuration files. These files allow users to specify detailed settings such as the Linux distribution to use, CPU and memory allocation, disk size, port forwarding rules, and host-guest shared directory mounts. This highly configurable nature makes Lima adaptable to various development workflows.


title: CONTAINER RUNTIME INTEGRATION
content:
Many Lima instance templates come pre-configured with <I>containerd</I> and its CLI client, <I>nerdctl</I>. This allows users to seamlessly build, run, and manage OCI-compliant containers within their Lima VMs, often serving as a full-fledged container development environment without the need for separate Docker Desktop installations.


title: HISTORY
content:
Lima was created by Akihiro Suda, with its initial public releases occurring around late 2020 and early 2021. It quickly gained traction as a lightweight and open-source alternative to proprietary solutions like Docker Desktop for running Linux environments on macOS. Its design emphasizes simplicity, tight integration with container runtimes like <I>containerd</I> and <I>nerdctl</I>, and ease of use for developers.


title: DESCRIPTION
content:
The <b>line</b> command is a very simple Linux utility that reads a single line of text from its standard input and writes it to its standard output. It processes input until a newline character is encountered, outputs the collected line (typically stripping the newline), and then exits. Historically, <b>line</b> served as a basic mechanism for scripts to acquire a single line of dynamic input, especially in environments where more advanced shell built-ins like <i>read</i> were not as prevalent or standardized.<br><br>It has no options or arguments, making its functionality extremely focused. Due to its simplicity and the widespread availability of more versatile shell built-ins, <b>line</b> is often considered obsolete for modern scripting, but it remains available for backward compatibility with older Unix scripts.


title: CAVEATS
content:
<ul><li><b>Lack of Options</b>: <b>line</b> provides no options for controlling its behavior, such as specifying a delimiter, timeout, or prompt.</li><li><b>Obsoleteness</b>: For most modern scripting tasks, the <i>read</i> built-in command (available in bash, zsh, ksh, etc.) is a much more versatile and efficient alternative, offering features like prompting, timeouts, specifying delimiters, and handling backslashes.</li><li><b>Single Line Only</b>: It only reads and outputs one line, then exits, making it unsuitable for processing multi-line input streams directly.</li><li><b>Blocking Behavior</b>: It will block indefinitely if no input is provided to standard input.</li></ul>


title: USAGE IN PIPELINES
content:
While simple, <b>line</b> can still be used effectively in pipelines when only the very first line of a stream needs to be processed. For example, <code>command | line | another_command</code> would pass only the first line of <i>command</i>'s output to <i>another_command</i>, discarding subsequent lines from the initial stream.


title: COMPARISON WITH 'READ'
content:
Unlike the <i>read</i> built-in, <b>line</b> does not directly handle input into shell variables. It simply passes the line to standard output. This makes it less flexible for parsing input within a script where variable assignment is key, but potentially simpler for basic pipe-based operations where only the first line is needed and subsequent processing happens externally.


title: HISTORY
content:
The <b>line</b> command is an ancient Unix utility, tracing its roots back to very early versions of Unix, appearing as early as <i>Unix Seventh Edition</i> (V7) in 1979. Its design reflects the constraints and practices of early shell scripting environments, where sophisticated built-ins were less common or standardized. Over time, as shell built-ins like <i>read</i> matured and became widely available across different shells, the direct utility of <b>line</b> diminished significantly. Today, it's largely maintained for backward compatibility with very old scripts, rather than for active new development, and is typically part of core utility packages like <i>util-linux</i> on Linux systems.


title: PARAMETERS
content:
<b>OLDFILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the existing file that you want to create a hard link to.<br><br><b>NEWFILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the new hard link will be created. This file must NOT exist.<br><br>


title: DESCRIPTION
content:
The <b><I>link</I></b> command is a fundamental Unix utility used to create a hard link to an existing file. A hard link is essentially an additional directory entry that points to the same inode (the data structure containing file attributes and disk block locations) as the original file. This means that both the old and new filenames refer to the exact same data on the disk. Modifying the content through one name will be reflected when accessing it via the other name. Deleting one name does not remove the file data until the last hard link to that inode is removed.<br><br>Unlike the more versatile <b><I>ln</I></b> command, <b><I>link</I></b> is a minimalist wrapper around the <b><I>link(2)</I></b> system call. Its primary purpose is to atomically create a new hard link. A key characteristic is its strict behavior: <b><I>link</I></b> will only succeed if the target file (<i>NEWFILE</i>) does not already exist. This prevents accidental overwriting of files, making it a safer, albeit less flexible, alternative for specific scripting needs where atomic creation and strict non-overwrite behavior are paramount. It operates solely on files within the same filesystem.


title: CAVEATS
content:
<ul><li>Hard links can only be created between files residing on the <i>same filesystem</i>. They cannot span different partitions or storage devices.</li><li>The <b><I>link</I></b> command <i>cannot create hard links to directories</i>. This is a fundamental limitation of hard links for security and filesystem consistency reasons.</li><li>If <i>NEWFILE</i> already exists, <b><I>link</I></b> will fail with an error ("File exists") and will <i>not overwrite</i> the existing file. This distinguishes it from commands like <b><I>ln -f</I></b>.</li><li>It does not support any command-line options (like verbose output or force overwrite) found in the more feature-rich <b><I>ln</I></b> utility.</li></ul>


title: SYSTEM CALL WRAPPER
content:
The <b><I>link</I></b> command is a direct wrapper around the <b><I>link(2)</I></b> system call. This means it offers a low-level interface to the kernel's linking functionality, providing atomic link creation without additional user-space logic or options.


title: HISTORY
content:
The <b><I>link</I></b> command is a very old and basic utility, directly exposing the <b><I>link(2)</I></b> system call. Its simplicity reflects its origin in early Unix systems where utilities often directly mirrored system calls. While more complex and feature-rich tools like <b><I>ln</I></b> have since become prevalent for link management, <b><I>link</I></b> persists as a standard POSIX utility, valued for its strict, atomic behavior and direct system call interface. Its lack of options is a testament to its singular, focused purpose.


title: SEE ALSO
content:
<b><I>ln(1)</I></b>: Create links (hard or symbolic), <b><I>unlink(1)</I></b>: Call the unlink system call to remove the specified file (used by <b><I>rm</I></b>), <b><I>rm(1)</I></b>: Remove files or directories, <b><I>stat(2)</I></b>: Get file status (system call often used to examine inode information), <b><I>link(2)</I></b>: Make a new name for a file (the system call wrapped by the <b><I>link</I></b> command)


title: SYNOPSIS
content:
<b>linkchecker</b> [<i>OPTIONS</i>] <i>URL</i>...<br><b>linkchecker</b> [<i>OPTIONS</i>] <b>--config-file</b> <<i>FILE</i>>


title: PARAMETERS
content:
<b><b>-r</b>, <b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively check URLs found in the specified documents or sites.<br><br><b><b>-D</b>, <b>--depth</b> <<i>N</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum recursion depth for checking links.<br><br><b><b>-F</b>, <b>--file</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat arguments as local file paths instead of URLs.<br><br><b><b>--config-file</b> <<i>FILE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load configuration from a specified file instead of the default.<br><br><b><b>-O</b>, <b>--output</b> <<i>FILE</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the output of the check to a specified file.<br><br><b><b>-o</b>, <b>--output-format</b> <<i>FORMAT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format (e.g., <I>text</I>, <I>html</I>, <I>csv</I>, <I>xml</I>, <I>sitemap</I>).<br><br><b><b>--check-external</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Also check links that point to external websites.<br><br><b><b>--user-agent</b> <<i>AGENT</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a custom User-Agent string for HTTP requests.<br><br><b><b>--timeout</b> <<i>SECONDS</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the network timeout for connections in seconds.<br><br><b><b>--ignore-url</b> <<i>REGEX</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore URLs that match the given regular expression when checking.<br><br><b><b>--exclude-url</b> <<i>REGEX</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude URLs that match the given regular expression from crawling and checking.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase the verbosity of the output, showing more details about the checking process.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decrease the verbosity of the output, showing only essential information.<br><br>


title: DESCRIPTION
content:
<i>linkchecker</i> is a <I>powerful and versatile command-line tool</I> designed to <I>validate links</I> within web documents or entire websites. It meticulously crawls a given URL or local file, identifying and reporting on various link issues, including <B>broken links (404 Not Found)</B>, <B>server errors (5xx series)</B>, <B>malformed URLs</B>, and <B>unresponsive servers</B>.<br><br>It supports checking links across multiple protocols like HTTP, HTTPS, FTP, mailto, and file paths. <I>linkchecker</I> can perform <I>recursive checks</I> on entire domains, respect <I>robots.txt</I> directives, follow redirects, and check external links. Its flexibility is enhanced by support for <I>custom user agents</I>, <I>timeouts</I>, and the ability to <I>ignore or exclude specific URLs</I> using regular expressions. Results can be exported in various formats such as plain text, HTML, CSV, XML, and Sitemaps, making it invaluable for webmasters, developers, and QA engineers ensuring the integrity and usability of web content.


title: CAVEATS
content:
<i>linkchecker</i> is highly dependent on network conditions and the responsiveness of target servers, which can lead to slow execution times for large-scale checks or rate-limiting issues.<br><br>It primarily checks for server-side link validity and may not fully evaluate links generated or modified dynamically by client-side JavaScript in modern single-page applications. Complex authentication or highly dynamic content might require custom configurations or may not be fully supported. Users should be mindful of the load placed on target servers during extensive recursive checks.


title: CONFIGURATION FILES
content:
For complex projects, <i>linkchecker</i> supports detailed configuration via files (e.g., <I>.linkcheckerrc</I> in the home directory or project root). These files allow persistent settings for ignored URLs, timeouts, authentication credentials, and other parameters, streamlining repeated checks and integration into CI/CD pipelines.


title: EXIT CODES
content:
<i>linkchecker</i> provides meaningful <B>exit codes</B> that are crucial for scripting and automation. An exit code of <B>0</B> typically indicates no broken links were found, while <B>1</B> (or other non-zero values) signifies that errors were detected, allowing automated systems to react accordingly and trigger alerts or further actions.


title: HISTORY
content:
<i>linkchecker</i> was initially developed by <I>Christian Kreibich</I> and first released publicly around the year <B>2000</B>. Written in <I>Python</I>, it has evolved as a community-maintained open-source project, hosted on platforms like GitHub. Its development has focused on robust link validation for web documents and websites, making it a staple for web integrity checks over two decades.


title: PARAMETERS
content:
<b>-g, --g-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables graphical mode if Links2 is installed and an X server is running.</i><br><br><b>-text, --text-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces the browser into text-only mode, overriding any graphical capabilities.</i><br><br><b>-dump</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Dumps the rendered content of the specified URL to standard output and exits. Useful for scripting.</i><br><br><b>-anonymous</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disables features that might reveal identity, such as sending referer headers or using cookies.</i><br><br><b>-config-dir &lt;dir&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies an alternative directory for configuration files instead of the default.</i><br><br><b>-async-dns</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables asynchronous DNS resolution, which can improve responsiveness by not blocking the UI during DNS lookups.</i><br><br><b>-force-html</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces the interpretation of content as HTML, even if the server suggests a different content type.</i><br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the version information of the <b>links</b> browser.</i><br><br><b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows a summary of available command-line options.</i><br><br>


title: DESCRIPTION
content:
<i>links</i> is a powerful and versatile text-mode web browser for Unix-like operating systems. Unlike simpler text browsers like <i>lynx</i> or <i>w3m</i>, <i>links</i> offers advanced features including partial support for frames, tables, and even a graphical mode (Links2) when an X server is available.<br><br>It is known for its speed and efficient rendering, making it suitable for browsing on slow connections, older hardware, or remote SSH sessions. While it excels at displaying static HTML content, it has limited or no support for JavaScript, CSS, or modern multimedia elements, making it less suitable for complex, dynamic websites. It's often used for quick information retrieval, server administration, or for users who prefer a minimalist browsing experience.


title: CAVEATS
content:
<b>links</b> has significant limitations compared to modern graphical browsers.<br>It provides minimal to no support for JavaScript, CSS (Cascading Style Sheets), and complex multimedia (video, audio).<br>Many modern, interactive websites will not render correctly or be fully functional.<br>Its graphical mode (Links2) is still relatively basic and may struggle with complex layouts or modern web standards.


title: GRAPHICAL MODE (LINKS2)
content:
<i>While <b>links</b> is primarily a text-mode browser, a variant called <b>Links2</b> provides a graphical mode that can display images and render pages in a more visual manner, given an X server. This makes <b>links</b> unique among text-based browsers.</i>


title: KEY BINDINGS & NAVIGATION
content:
<i>Navigation in <b>links</b> is primarily keyboard-driven. Users can navigate links using arrow keys, spacebar for paging, and <b>Esc</b> for menus. <b>G</b> or <b>g</b> often prompts for a URL.</i>


title: HISTORY
content:
<b>links</b> was originally developed by Mikuláš Pátka and others in the Czech Republic, first released around 1999. It gained popularity for being a fast and feature-rich text-mode browser, particularly its ability to render frames and tables more effectively than some contemporaries.<br><br>A significant fork, <b>Links2</b>, was developed to add rudimentary graphical capabilities, including image rendering, in environments with an X server, pushing the boundaries of what a "text-mode" browser could do. Its development continues, maintaining its niche as a lightweight and efficient browsing tool.


title: PARAMETERS
content:
<b><b>-g</b>, <b>--graphic</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>links2</b> to run in graphical mode. This is the default if an X server or suitable graphical environment is detected.<br><br><b><b>-t</b>, <b>--text</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>links2</b> to run in text mode. This is useful for terminal-only environments or when graphical mode is not desired.<br><br><b><b>-mode</b> <i>&lt;WxHxD&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the graphics mode, specifying width (W), height (H), and color depth (D). Example: <b>-mode 1024x768x24</b>.<br><br><b><b>-driver</b> <i>&lt;driver&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the graphical driver to use, such as <b>x</b> (for X Window System), <b>fb</b> (for framebuffer), or <b>svga</b>.<br><br><b><b>-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the rendered web page content to standard output (stdout) and exits. Useful for scripting or quickly extracting text from a URL.<br><br><b><b>-width</b> <i>&lt;N&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the text width for the <b>-dump</b> option, controlling how many columns wide the dumped content will be.<br><br><b><b>-source</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the raw HTML source code of the specified URL to standard output and exits.<br><br><b><b>-anonymous</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <b>links2</b> in 'anonymous' mode. This prevents it from saving history, cookies, or other persistent data during the session.<br><br><b><b>-proxy</b> <i>&lt;host:port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an HTTP or FTP proxy server to use for network connections.<br><br><b><b>-socks</b> <i>&lt;host:port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a SOCKS proxy server to use for network connections.<br><br><b><b>-download-path</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default directory where downloaded files will be saved.<br><br><b><b>-no-connect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>links2</b> from making any network connections. It will only access local files.<br><br><b><b>-config</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified file as the configuration file instead of the default <b>~/.links2/links2.cfg</b>.<br><br><b><b>-enable-javascript</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables JavaScript execution. Note that JavaScript support in <b>links2</b> is often limited and may not be compiled in by default in all distributions.<br><br>


title: DESCRIPTION
content:
<b>links2</b> is a highly efficient and versatile web browser capable of operating in both <b>text</b> and <b>graphical</b> modes. <br>Originally designed for speed and low resource consumption, it excels in environments with limited bandwidth or older hardware, and is frequently used over SSH connections. <br>In text mode, it renders web pages using ASCII characters, providing a lightweight browsing experience similar to <I>lynx</I> or <I>w3m</I>. <br>In graphical mode, it supports images, frames, limited CSS, and some JavaScript, offering a more visual experience without the overhead of full-fledged browsers. <br>It supports various internet protocols including HTTP, HTTPS, and FTP, making it a robust tool for accessing web content from the command line.


title: CAVEATS
content:
<b>links2</b>'s rendering capabilities, particularly for modern, complex web pages, are significantly less advanced than contemporary graphical browsers. <br>JavaScript and CSS support is often basic or absent depending on how it was compiled. <br>For security, always be cautious when enabling JavaScript on untrusted sites, especially given its lighter sandbox compared to full browsers. <br>Graphical mode requires a compatible display server (like X) or framebuffer support to function correctly.


title: KEYBINDINGS AND NAVIGATION
content:
<b>links2</b> is primarily keyboard-driven. Essential commands include: <br>Arrow keys for navigation<br><b>q</b> to quit<br><b>ESC</b> to access the main menu<br><b>g</b> to go to a URL<br><b>/</b> to search<br><b>Spacebar</b> or <b>PgDn</b> to scroll down a page<br><b>Backspace</b> or <b>PgUp</b> to scroll up<br><b>left arrow</b> to go back in history


title: CONFIGURATION FILES
content:
User-specific configurations for <b>links2</b> are typically stored in <b>~/.links2/links2.cfg</b>. This file can be manually edited to customize various aspects of the browser's behavior, appearance, and keybindings.


title: PROTOCOL SUPPORT
content:
<b>links2</b> supports a range of common internet protocols, including <b>HTTP</b>, <b>HTTPS</b>, <b>FTP</b>, and <b>file://</b> URLs, allowing it to access a wide variety of online and local resources.


title: HISTORY
content:
The <b>Links</b> project was initiated by Mikuláš Patočka in 1999 as a fast, text-mode web browser. <br><b>links2</b> emerged as a direct successor and evolution, introducing the significant capability of a graphical user interface while retaining the core text-mode functionality and lightweight design. <br>It has been continuously developed by the Links team, providing a robust, highly configurable, and resource-efficient browsing alternative for various Linux environments.


title: SYNOPSIS
content:
<b>linode-cli</b> [<i>GLOBAL_OPTIONS</i>] <b>&lt;SERVICE&gt;</b> <b>&lt;ACTION&gt;</b> [<i>ACTION_OPTIONS</i>] [<i>ARGUMENTS</i>]<br><br><i>Examples:</i><br><b>linode-cli linodes create</b> <i>--region us-east --image linode/ubuntu22.04 --root_pass "StrongPassword123" --type g6-standard-1</i><br><b>linode-cli domains view</b> <i>example.com</i><br><b>linode-cli account settings</b>


title: PARAMETERS
content:
<b><i>--json</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the command's result in raw <b>JSON</b> format, suitable for programmatic consumption or integration with other tools.<br><br><b><i>--text</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the command's result in plain text format (default), often rendered as a table. This is ideal for human readability directly in the terminal.<br><br><b><i>--format &lt;columns&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <i>--text</i> output, specifies a comma-separated list of columns to display. This allows users to customize the output table. Example: <i>--format id,label,status,region</i>.<br><br><b><i>--delimiter &lt;char&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <i>--text</i> output, specifies the character used to separate columns. Defaults to a space. Useful for parsing text output with tools like <b>awk</b> or <b>cut</b>.<br><br><b><i>--suppress-headers</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <i>--text</i> output, prevents the column headers from being displayed, resulting in a cleaner output for scripting.<br><br><b><i>--no-headers</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <i>--suppress-headers</i>, providing an alternative, often more intuitive, flag.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the installed version of the <b>linode-cli</b> and exits, useful for verifying the client's version.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help for the CLI, or specific help for a chosen <b>SERVICE</b> or <b>ACTION</b> (e.g., <b>linode-cli linodes --help</b> or <b>linode-cli linodes create --help</b>).<br><br><b><i>--debug</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug logging, printing detailed request and response information. This is extremely useful for troubleshooting API calls or CLI issues.<br><br><b><i>--config &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternate path to the configuration file, overriding the default location (typically <i>~/.config/linode-cli/config</i> or <i>~/.linode-cli</i>). This allows for multiple configurations or non-standard setups.<br><br><b><i>--token &lt;token&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a Linode API Personal Access Token directly as an argument, overriding any token stored in the configuration file. Useful for one-off commands, ephemeral environments, or scripting without persistent configuration.<br><br>


title: DESCRIPTION
content:
The <b>linode-cli</b> is the official command-line interface for interacting with the Linode API. It allows users to manage their entire Linode cloud infrastructure, including computing instances (Linodes), domains, block storage volumes, object storage buckets, nodebalancers, and more, directly from their terminal. Built with automation and scripting in mind, it supports various output formats like <b>JSON</b> and plain text, making it highly versatile for integration into scripts, CI/CD pipelines, and other automated workflows. With <b>linode-cli</b>, users can effortlessly create, modify, delete, and list all their Linode resources, providing a powerful and efficient way to control their cloud services without needing to access the graphical Cloud Manager.


title: CAVEATS
content:
The <b>linode-cli</b> requires a Linode API Personal Access Token for authentication. This token grants significant access to your Linode resources and should be kept secure. Sharing or exposing it publicly can lead to unauthorized access and potential data loss or service disruption.<br>Be extremely cautious when executing destructive actions (e.g., <b>delete</b>, <b>rm</b>) as they are often irreversible and can lead to permanent data loss or critical service disruptions. Always double-check commands before execution, especially in production environments.


title: AUTHENTICATION
content:
The <b>linode-cli</b> authenticates primarily using a Linode API Personal Access Token. This token can be generated from the Linode Cloud Manager under the 'API Tokens' section. Once generated, it's typically configured and stored in a local configuration file (by default, <i>~/.config/linode-cli/config</i> or <i>~/.linode-cli</i>) by running the <b>linode-cli configure</b> command. For non-persistent use cases, the token can also be supplied per command via the <i>--token</i> global option or set as an environment variable (<i>LINODE_CLI_TOKEN</i>).


title: CONFIGURATION
content:
The CLI uses a configuration file to store essential settings, including API tokens, default regions, and preferred output formats. The <b>linode-cli configure</b> command provides an interactive wizard to set up and manage these parameters. Users can also define multiple named configuration profiles, allowing them to easily switch between different Linode accounts or API tokens.


title: SERVICE AND ACTION MODEL
content:
The <b>linode-cli</b> operates on a consistent <i>SERVICE ACTION</i> model, which mirrors the structure of the Linode API. Users first specify the Linode service they wish to interact with (e.g., <b>linodes</b>, <b>domains</b>, <b>volumes</b>, <b>object-storage</b>, <b>nodebalancers</b>), followed by the specific action to perform on that service (e.g., <b>list</b>, <b>create</b>, <b>delete</b>, <b>update</b>, <b>view</b>). Each service and action has its own set of specific options and arguments, which can be discovered using the <b>--help</b> flag (e.g., <b>linode-cli linodes create --help</b> will show options for creating a Linode instance).


title: HISTORY
content:
Developed and maintained by Linode (now part of Akamai Technologies), the <b>linode-cli</b> emerged as the official command-line interface to their cloud platform. It was created to provide a robust, programmatic, and convenient way for users and developers to automate and manage their cloud infrastructure directly from the terminal. Its development closely tracks the evolution of the Linode API, ensuring comprehensive coverage of Linode's growing suite of cloud services, complementing the graphical Linode Cloud Manager.


title: SYNOPSIS
content:
<b>linode-cli account</b> <i>&lt;subcommand&gt;</i> [options]<br><br>Common <i>subcommands</i> include:<br><b>linode-cli account view</b><br><b>linode-cli account view-billing</b><br><b>linode-cli account update</b> [<i>--email &lt;email&gt;</i>] [<i>--company &lt;company&gt;</i>] ...<br><b>linode-cli account settings</b><br><b>linode-cli account users</b> <i>&lt;action&gt;</i> [<i>&lt;user_id&gt;</i>]<br><b>linode-cli account events</b> <i>&lt;action&gt;</i> [<i>&lt;event_id&gt;</i>]


title: PARAMETERS
content:
<b>view</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays primary account information, such as your Linode ID, company name, address, and current balance.<br><br><b>view-billing</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed billing and payment method information, including credit card details (last 4 digits), current balance, and last payment amount.<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows modification of various account contact and address details. This subcommand requires specific fields to be provided as options, such as <i>--email</i>, <i>--company</i>, <i>--address_1</i>, <i>--city</i>, <i>--state</i>, <i>--zip</i>, <i>--country</i>, and <i>--phone</i>.<br><br><b>settings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows current account-wide settings, such as the <i>network_helper</i> status, which determines if Network Helper is enabled by default for new Linodes.<br><br><b>users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages Linode users associated with the account. This subcommand acts as a group for its own sub-actions like <i>list</i> (to view all users), <i>view</i> (to see details of a specific user), <i>create</i>, <i>update</i>, and <i>delete</i> for comprehensive user management.<br><br><b>events</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists a chronological history of account-level events and activities, such as Linode deployments, reboots, or user logins. Similar to <b>users</b>, this subcommand provides sub-actions like <i>list</i> (to view all events) and <i>view</i> (for details of a specific event).<br><br>


title: DESCRIPTION
content:
The <b>linode-cli account</b> subcommand group provides a comprehensive interface for viewing and managing various aspects of your Linode account. It allows users to retrieve general account details, billing information, current account settings, and manage account-level users. This group of commands is essential for administrators and users who need to monitor usage, review invoices, update contact information, or control user access within their Linode infrastructure directly from the command line, offering a quick alternative to the Linode Cloud Manager web interface.


title: CAVEATS
content:
<b>Caveats:</b><br><i>Requires a configured Linode CLI with an API token for authentication.</i><br><i>The <b>update</b> subcommand fields (e.g., --email, --company, --address_1) must be provided explicitly to modify account details; attempting to update without specifying a field will have no effect on that field.</i><br><i><b>view-billing</b> displays sensitive information, including the last four digits of your credit card. Ensure your terminal environment is secure.</i><br><i>Frequent requests may be subject to Linode API rate limits, which can temporarily block further commands.</i>


title: GLOBAL OPTIONS
content:
The <b>linode-cli</b> supports various global options that apply to all subcommands, including those under <b>account</b>. These options control output formatting and general CLI behavior. Common global options include: <br><i>--json</i>: Outputs data in JSON format.<br><i>--text</i>: Outputs data in human-readable plain text format (default).<br><i>--delimiter &lt;char&gt;</i>: Specifies a character to delimit columns in text output.<br><i>--no-headers</i>: Suppresses column headers in text output.<br><i>--format &lt;columns&gt;</i>: Specifies which columns to display in text output (e.g., <i>--format "id,label,status"</i>).<br><i>--help</i> or <i>-h</i>: Displays a help message for the command or subcommand.


title: AUTHENTICATION
content:
The Linode CLI requires an API token for authentication. This token can be configured using the <b>linode-cli configure</b> command, which guides you through the setup process, or by setting the <b>LINODE_CLI_TOKEN</b> environment variable in your shell environment.


title: API VERSION
content:
The <b>linode-cli</b> interacts with the Linode API v4, ensuring compatibility with the latest Linode services and features. This allows users to manage their resources using the most up-to-date API capabilities.


title: HISTORY
content:
The Linode CLI has evolved significantly since its initial release, moving from a basic Python script to a more robust and modular tool. The <b>account</b> subcommand group has been a core component since early versions, providing essential access to account-level data. Its functionality has expanded to include more specific details (e.g., billing information via <b>view-billing</b>) and direct management capabilities (e.g., user management directly under <b>account users</b>), mirroring the growth and capabilities of the Linode API itself and ensuring comprehensive command-line control over Linode services.


title: PARAMETERS
content:
<b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform on domains or records, e.g., <b>list</b>, <b>create</b>, <b>view</b>, <b>update</b>, <b>delete</b>, <b>record-list</b>, <b>record-create</b>, etc.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <b>domains</b> command group or a specific subcommand.<br><br><b><b>--text</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats command output in a plain text table.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats command output as raw JSON.<br><br><b><b>--pretty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies pretty-printing to JSON output for readability.<br><br><b><b>--domain</b> <i>TEXT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the domain name to operate on, typically used for identifying a domain for <b>view</b>, <b>update</b>, or <b>delete</b> operations.<br><br><b><b>--type</b> <i>[master|slave]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the domain's operational type (e.g., 'master' for a primary DNS server, 'slave' for a secondary server). Used with <b>create</b>.<br><br><b><b>--description</b> <i>TEXT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides an optional descriptive label for the domain.<br><br><b><b>--group</b> <i>TEXT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns the domain to a specified group for organizational purposes.<br><br><b><b>--tags</b> <i>TEXT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches a comma-separated list of tags to the domain for filtering and organization.<br><br><b><b>--ttl_sec</b> <i>INT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default Time To Live (TTL) in seconds for new DNS records within the domain.<br><br>


title: DESCRIPTION
content:
The <b>linode-cli domains</b> command group provides a comprehensive interface for programmatically managing DNS domains and their associated records within the Linode platform. <br><br>Users can perform a variety of operations including creating new domains, listing existing domains, viewing detailed information for a specific domain, and updating or deleting domains. Beyond domain-level management, it offers extensive functionality for handling individual DNS records (such as A, AAAA, MX, NS, CNAME, TXT, SRV, LBRECORD types) within any given domain. This command is essential for automating DNS management tasks, integrating Linode DNS services into scripts, or managing configurations without relying on the Linode Cloud Manager UI.


title: CAVEATS
content:
Using <b>linode-cli domains</b> requires a properly configured Linode API Token with sufficient permissions (read/write access to Domains). Users must also ensure network connectivity to the Linode API. Be mindful of Linode API rate limits when scripting extensive operations. Changes to DNS records may take time to propagate globally due to DNS caching.


title: SUBCOMMANDS OVERVIEW
content:
The <b>linode-cli domains</b> command functions as a gateway to numerous specialized subcommands. Prominent examples include: <br><i>• </i><b>list</b>: Retrieves a list of all DNS domains on the account. <br><i>• </i><b>create</b>: Adds a new DNS domain. <br><i>• </i><b>view</b> <i>&lt;domain_id&gt;</i>: Displays detailed information about a specific domain. <br><i>• </i><b>update</b> <i>&lt;domain_id&gt;</i>: Modifies existing domain settings. <br><i>• </i><b>delete</b> <i>&lt;domain_id&gt;</i>: Removes a domain permanently. <br>Additionally, a complete suite of <b>record-</b> commands (e.g., <b>record-list</b>, <b>record-create</b>, <b>record-update</b>, <b>record-delete</b>) exists for granular management of individual DNS entries within a domain.


title: API TOKEN CONFIGURATION
content:
Before any <b>linode-cli</b> command can be executed, a Linode API token must be configured. This is typically done using the command <b>linode-cli configure</b>. The configured token authenticates all subsequent requests to the Linode API and dictates the level of access and permissions the CLI has to your Linode resources, including DNS domains.


title: HISTORY
content:
The <b>linode-cli</b> tool has evolved as Linode's API and services expanded. The <b>domains</b> subcommand group has been a fundamental component of its functionality since early versions, providing direct programmatic access to Linode's robust DNS manager. It reflects Linode's commitment to offering comprehensive command-line interfaces for all its cloud services, enabling automation and integration into various DevOps workflows.


title: SYNOPSIS
content:
The <i>linode-cli events</i> functionality is accessed as a subcommand of the main <b>linode-cli</b> tool. Its common invocation patterns are:<br><br><b>linode-cli events list</b> [<i>--json</i> | <i>--text</i>] [<i>--no-headers</i>] [<i>--delimiter &lt;DELIMITER&gt;</i>] [<i>--page &lt;PAGE&gt;</i>] [<i>--pages &lt;PAGES&gt;</i>] [<i>--all</i>] [<i>--format &lt;FORMAT&gt;</i>] [<i>--no-defaults</i>] [<i>--no-auto-pagination</i>] [<i>--filter &lt;FILTER&gt;</i>]<br><br><b>linode-cli events view &lt;event_id&gt;</b> [<i>--json</i> | <i>--text</i>] [<i>--no-headers</i>] [<i>--delimiter &lt;DELIMITER&gt;</i>] [<i>--format &lt;FORMAT&gt;</i>] [<i>--no-defaults</i>]<br><br><b>linode-cli events acknowledge &lt;event_id&gt;</b> [<i>--json</i> | <i>--text</i>] [<i>--no-headers</i>] [<i>--delimiter &lt;DELIMITER&gt;</i>] [<i>--format &lt;FORMAT&gt;</i>] [<i>--no-defaults</i>]


title: PARAMETERS
content:
<b><event_id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique identifier (ID) of the specific event to view or acknowledge. Required for <b>view</b> and <b>acknowledge</b> actions.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the command's results in structured JSON format.<br><br><b>--text</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the command's results in a human-readable text table format. This is often the default.<br><br><b>--no-headers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <b>--text</b> output, suppress the column headers.<br><br><b>--delimiter <DELIMITER></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom delimiter character for separating columns in <b>--text</b> output, useful for scripting.<br><br><b>--page <PAGE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For commands that return a list of resources (like <b>list</b>), specify a particular page number of results to retrieve.<br><br><b>--pages <PAGES></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For commands that return a list, specify the maximum number of pages to retrieve. Can be used with <b>--page</b>.<br><br><b>--all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieve all available results for a list command, overriding pagination limits. This can be resource-intensive for large datasets.<br><br><b>--format <FORMAT></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Control the output columns and their order using a comma-separated list of field names (e.g., <i>'id,created,action'</i>). Only applicable to <b>--text</b> output.<br><br><b>--no-defaults</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use default values for omitted arguments. This forces you to provide all required arguments explicitly.<br><br><b>--no-auto-pagination</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable automatic pagination when retrieving lists of resources. You will need to explicitly manage pagination with <b>--page</b> and <b>--pages</b>.<br><br><b>--filter <FILTER></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply a JSON filter string to narrow down the results returned by list commands based on specific criteria (e.g., <i>'{"action":"linode_boot"}'</i>).<br><br>


title: DESCRIPTION
content:
The <i>linode-cli events</i> subcommand allows users to interact with Linode account events directly from the command line. These events represent actions or changes occurring within your Linode account, such as Linode deployments, reboots, disk operations, or maintenance notifications. This functionality is crucial for monitoring account activity and staying informed about critical operations. Users can retrieve a list of all events, view details of a specific event, or acknowledge an event to mark it as handled, facilitating proactive management of your Linode infrastructure.


title: CAVEATS
content:
The <b>linode-cli</b> tool must be installed and properly configured with a valid Linode API token. The API token requires appropriate permissions: at least <i>'events:read_only'</i> for listing and viewing events, and <i>'events:read_write'</i> for acknowledging events.


title: COMMON ACTIONS
content:
The <b>linode-cli events</b> subcommand primarily supports three common actions:<br>• <b>list</b>: Retrieves a paginated list of all events associated with your Linode account.<br>• <b>view &lt;event_id&gt;</b>: Displays detailed information for a specific event identified by its ID.<br>• <b>acknowledge &lt;event_id&gt;</b>: Marks a specific event as acknowledged, indicating that it has been reviewed or handled. This action requires appropriate write permissions for events.


title: API TOKEN PERMISSIONS
content:
Proper API token permissions are crucial for interacting with events. To simply list or view events, your API token needs at least <i>'events:read_only'</i> access. However, if you intend to acknowledge events, the API token must have <i>'events:read_write'</i> permission for the events scope.


title: HISTORY
content:
The <b>linode-cli</b> is developed and maintained by Linode (now Akamai Technologies) as the official command-line interface for their cloud services. The <b>events</b> subcommand has been a fundamental part of the CLI since its early versions, providing essential functionality for users to monitor system and account activities directly from their terminals. Its evolution parallels the development of the Linode API, ensuring consistency and access to new event types as they are introduced.


title: SYNOPSIS
content:
<br>The `linode-cli linodes` command typically follows the pattern:<br><b>`linode-cli linodes <subcommand> [options] [arguments]`</b><br><br>Common subcommands include:<br><b>`linode-cli linodes ls [options]`</b> - Lists Linode instances.<br><b>`linode-cli linodes create [options]`</b> - Creates a new Linode instance.<br><b>`linode-cli linodes delete <linode_id>`</b> - Deletes a specific Linode instance.<br><b>`linode-cli linodes reboot <linode_id>`</b> - Reboots a specific Linode instance.<br><b>`linode-cli linodes shutdown <linode_id>`</b> - Shuts down a specific Linode instance.<br><br>The `options` and `arguments` vary significantly depending on the chosen `subcommand`.


title: PARAMETERS
content:
<b>`--text`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs results in a human-readable, plain-text table format.<br><br><b>`--json`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs results in raw JSON format, suitable for scripting and programmatic parsing.<br><br><b>`--format <columns>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the columns to display and their order for text output (e.g., `--format id,label,region`).<br><br><b>`--no-headers`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the column headers in text output.<br><br><b>`--delimiter <char>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the column delimiter for text output (default is two spaces).<br><br><b>`--suppress-warnings`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses warnings printed to stderr.<br><br><b>`--token <api_token>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Linode API token to use for the command. Overrides configured tokens.<br><br><b>`--config <path>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the configuration file (default is `~/.config/linode-cli`).<br><br><b>`--version`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the `linode-cli` version and exits.<br><br><b>`--help`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help message for the command or subcommand.<br><br>


title: DESCRIPTION
content:
The `linode-cli linodes` command is a powerful subgroup within the `linode-cli` suite, dedicated to managing Linode instances (virtual machines). It provides a comprehensive interface for performing a wide range of operations on your Linode compute instances directly from the command line. This includes listing existing Linodes, creating new ones, deleting, rebooting, shutting down, resizing, rebuilding, managing associated disks and IP addresses, and much more. It serves as the primary tool for programmatic or script-based interaction with your Linode virtual infrastructure, offering an alternative to the Linode Cloud Manager web interface.


title: CAVEATS
content:
<br>When using `linode-cli linodes`, be mindful of the following:<br><i><b><br>1. API Token and Permissions:</b></i> A valid Linode API token with appropriate read/write permissions for Linode instances is required. Operations like creating or deleting instances require `read_write` access.<br><i><b><br>2. Cost Implications:</b></i> Creating Linode instances incurs charges. Ensure you understand the pricing model for the chosen instance type, region, and any associated services (e.g., volumes, IP addresses).<br><i><b><br>3. Data Loss:</b></i> Deleting a Linode instance is irreversible and results in permanent data loss for all disks attached to that instance. Always verify the instance ID before deletion.<br><i><b><br>4. Rate Limiting:</b></i> The Linode API has rate limits. Excessive or rapid requests might result in temporary API blocks.<br><i><b><br>5. Asynchronous Operations:</b></i> Some operations, like Linode creation, resizing, or migration, are asynchronous. The CLI might return immediately, but the operation might take time to complete on the Linode backend. You may need to check the instance status using `linode-cli linodes ls` or `linode-cli events`.


title: AUTHENTICATION
content:
The `linode-cli` primarily authenticates using a personal access token (PAT) obtained from the Linode Cloud Manager. This token can be configured via `linode-cli configure` or passed directly with the `--token` flag for individual commands.


title: OUTPUT FORMATTING
content:
Users can extensively customize the output format, especially for listing commands (`ls`), using `--format`, `--text`, `--json`, `--no-headers`, and `--delimiter` to suit scripting or reporting needs. This flexibility is crucial for integrating `linode-cli` output into automated workflows.


title: HISTORY
content:
<br>The `linode-cli` was developed by Linode (now Akamai Technologies) to provide a robust command-line interface for interacting with the Linode API. It has evolved significantly since its initial release, adding support for new Linode services and API versions. The `linodes` group within the CLI has always been a core component, reflecting the fundamental nature of Linode instances as the primary service offered by the platform. Its development focuses on ease of use, scriptability, and full coverage of the Linode API's instance management functionalities, enabling automation and integration into CI/CD pipelines.


title: SEE ALSO
content:
linode-cli account (1), linode-cli domains (1), linode-cli images (1), linode-cli volumes (1), linode-cli nodebalancers (1), linode-cli object-storage (1)


title: SYNOPSIS
content:
<b>linode-cli lke</b> <i>&lt;subcommand&gt;</i> [options]<br><br><b>Examples:</b><br><b>linode-cli lke cluster-list</b><br><b>linode-cli lke cluster-create</b> --label <i>my-cluster</i> --region <i>us-east</i> --k8s_version <i>1.27</i> --node_pools '[{"type":"g6-standard-1","count":2}]'<br><b>linode-cli lke cluster-view</b> <i>&lt;cluster_id&gt;</i><br><b>linode-cli lke cluster-kubeconfig-view</b> <i>&lt;cluster_id&gt;</i>


title: PARAMETERS
content:
<b><b>cluster-list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all LKE clusters associated with your Linode account.<br><br><b><b>cluster-view</b> <i>&lt;cluster_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about a specific LKE cluster identified by its ID.<br><br><b><b>cluster-create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new LKE cluster. Requires options like <i>--label</i>, <i>--region</i>, <i>--k8s_version</i>, and <i>--node_pools</i> (a JSON array of node pool configurations).<br><br><b><b>cluster-update</b> <i>&lt;cluster_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies an existing LKE cluster, for example, updating its Kubernetes version or adding tags.<br><br><b><b>cluster-delete</b> <i>&lt;cluster_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Permanently deletes an LKE cluster and all its associated resources.<br><br><b><b>cluster-kubeconfig-view</b> <i>&lt;cluster_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the Kubeconfig file content for a specified LKE cluster, enabling <i>kubectl</i> access.<br><br><b><b>node-pool-create</b> <i>&lt;cluster_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new node pool to an existing LKE cluster.<br><br><b><b>node-pool-delete</b> <i>&lt;cluster_id&gt; &lt;node_pool_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a specific node pool from an LKE cluster.<br><br><b><b>--text</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global <i>linode-cli</i> option) Displays output in a human-readable, plain text table format. This is often the default.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global <i>linode-cli</i> option) Displays output in a machine-readable JSON format, ideal for scripting.<br><br><b><b>--format</b> <i>&lt;columns&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global <i>linode-cli</i> option) Specifies which columns to display in text/CSV output, e.g., <i>--format id,label,region</i>.<br><br>


title: DESCRIPTION
content:
<i>linode-cli lke</i> is the subcommand of the Linode Command Line Interface (CLI) used to interact with and manage Linode Kubernetes Engine (LKE) clusters directly from your terminal.<br><br>It allows users to perform various operations such as listing, viewing, creating, updating, and deleting LKE clusters and their associated node pools. This tool streamlines the management of Kubernetes infrastructure hosted on Linode, providing a convenient way to automate tasks and integrate LKE management into scripts or CI/CD pipelines without needing to use the Linode Cloud Manager web interface. It leverages the Linode API to provide robust control over your Kubernetes resources.


title: CAVEATS
content:
Requires a configured <i>linode-cli</i> (authenticated with a Linode API token).<br>Operations directly affect billing; creating clusters and node pools incurs costs.<br>Cluster and node pool operations can take a significant amount of time to complete.<br>Deletion of LKE clusters is irreversible and removes all associated data and resources.<br>The API token used must have appropriate read/write permissions for LKE resources.


title: AUTHENTICATION
content:
The <i>linode-cli lke</i> command relies on a configured Linode API token. This token can be set up using <b>linode-cli configure</b>. It's crucial that the token has the necessary read/write permissions for LKE to perform management operations.


title: API RATE LIMITS
content:
Like all Linode API interactions, commands executed via <i>linode-cli lke</i> are subject to API rate limits. Frequent or rapid automated calls might hit these limits, requiring careful design of automation scripts to include delays or retry mechanisms.


title: AUTOMATION POTENTIAL
content:
The consistent JSON output (via the <b>--json</b> option) makes <i>linode-cli lke</i> particularly useful for scripting and integrating LKE management into CI/CD pipelines. This allows for automated provisioning, scaling, and tear-down of Kubernetes environments, enhancing infrastructure-as-code practices.


title: HISTORY
content:
The <i>linode-cli</i> project itself has evolved over time, starting as a Python-based CLI. The Linode Kubernetes Engine (LKE) service was introduced by Linode, and subsequently, the <i>lke</i> subcommand was added to the <i>linode-cli</i> to provide programmatic access to LKE cluster management. Its development closely mirrors the feature additions and updates to the LKE service on the Linode platform, aiming to provide parity with the Cloud Manager's capabilities via the command line. It has been continuously updated to support new Kubernetes versions and LKE features.


title: SYNOPSIS
content:
<b>linode-cli nodebalancers</b> <i>&lt;action&gt;</i> [<i>&lt;sub_action&gt;</i>] [<i>&lt;arguments&gt;</i>] [<i>&lt;options&gt;</i>]


title: PARAMETERS
content:
<b><i>&lt;action&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the primary operation to perform on NodeBalancers. Common actions include: <b>list</b> (list all NodeBalancers), <b>view</b> (show details for a specific NodeBalancer), <b>create</b> (create a new NodeBalancer), <b>update</b> (modify an existing NodeBalancer), <b>delete</b> (remove a NodeBalancer), <b>configs</b> (manage NodeBalancer configurations), and <b>nodes</b> (manage backend nodes for a configuration).<br><br><b><i>&lt;sub_action&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with actions like <b>configs</b> or <b>nodes</b> to specify further operations (e.g., <b>linode-cli nodebalancers configs list</b> or <b>linode-cli nodebalancers nodes create</b>).<br><br><b><i>&lt;arguments&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Positional or keyword arguments required for specific actions, such as NodeBalancer ID, configuration ID, or parameters for creation/update (e.g., <b>--label</b>, <b>--region</b>).<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the command output as a JSON object, suitable for scripting and programmatic parsing.<br><br><b><b>--text</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the command output as human-readable plain text, typically with columns and rows.<br><br><b><b>--csv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the command output as Comma Separated Values, useful for spreadsheet imports.<br><br><b><b>--columns</b> <i>&lt;columns&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of columns to display in text or CSV output (e.g., <b>--columns id,label,ipv4</b>).<br><br><b><b>--no-headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the display of column headers in text or CSV output.<br><br><b><b>--token</b> <i>&lt;api_token&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the Linode API token directly via the command line, overriding any configured token. (Global Linode CLI option).<br><br><b><b>--id</b> <i>&lt;id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with actions like <b>view</b>, <b>update</b>, or <b>delete</b> to specify the unique ID of the NodeBalancer, config, or node to operate on.<br><br><b><b>--label</b> <i>&lt;label&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A user-defined string label for the NodeBalancer, used during creation or update.<br><br><b><b>--region</b> <i>&lt;region_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The region where the NodeBalancer will be deployed (e.g., <b>us-east</b>), required for creation.<br><br><b><b>--tags</b> <i>&lt;tag1,tag2,...&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of tags to apply to the NodeBalancer resource.<br><br><b><b>--ipv4</b> <i>&lt;ip_address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IPv4 address of the NodeBalancer (read-only for existing NodeBalancers).<br><br><b><b>--ipv6</b> <i>&lt;ip_address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IPv6 address of the NodeBalancer (read-only for existing NodeBalancers).<br><br>


title: DESCRIPTION
content:
The <b>linode-cli-nodebalancers</b> command is a specialized subcommand within the Linode Command Line Interface (CLI) that allows users to manage Linode NodeBalancers. NodeBalancers are Linode's highly available Layer 4 (TCP/UDP) load balancing services, designed to distribute incoming network traffic across multiple backend Linode instances, ensuring high availability and improved application performance.<br><br>This command provides a comprehensive suite of actions to interact with NodeBalancers, including listing existing ones, viewing detailed information about a specific NodeBalancer, creating new ones, updating their properties, and deleting them. Beyond the core NodeBalancer resource, it also allows management of NodeBalancer configurations (e.g., ports, protocols, stickiness policies) and the individual backend nodes (servers) associated with those configurations. It serves as a programmatic interface to automate NodeBalancer provisioning and management tasks, making it an essential tool for developers and system administrators working with Linode infrastructure.


title: CAVEATS
content:
1.  <b>Linode CLI Installation:</b> This command requires the <b>linode-cli</b> package to be installed and properly configured with a Linode API token.<br>2.  <b>API Token Permissions:</b> The API token used must have appropriate read/write permissions for NodeBalancers.<br>3.  <b>Destructive Actions:</b> Commands like <b>delete</b> are irreversible and will permanently remove the specified NodeBalancer and its associated configurations and nodes.<br>4.  <b>Rate Limiting:</b> Linode API calls are subject to rate limits. Excessive or rapid requests may result in temporary API blocking.<br>5.  <b>Resource Dependencies:</b> NodeBalancers require backend Linode instances or other network endpoints to function effectively. Ensure these are properly configured and accessible.


title: OUTPUT FORMATS
content:
The Linode CLI offers flexible output formatting options using <b>--json</b>, <b>--text</b>, and <b>--csv</b> flags. This allows users to consume command output in a machine-readable format for scripting or a human-readable format for direct viewing. The <b>--columns</b> option provides further control over which data fields are displayed in text/CSV output.


title: AUTHENTICATION
content:
The <b>linode-cli</b> authenticates requests to the Linode API using a personal access token. This token can be configured once using <b>linode-cli configure</b> or provided on a per-command basis using the global <b>--token</b> option. It is crucial to protect this token as it grants access to your Linode resources.


title: HISTORY
content:
The <b>linode-cli</b> tool, which encompasses the <b>nodebalancers</b> subcommand, represents Linode's official open-source command-line interface for interacting with their cloud platform. Developed to provide a robust and scriptable alternative to the Linode Cloud Manager web interface, it has evolved significantly since its initial release. Its design emphasizes ease of use, automation, and integration into CI/CD pipelines. The <b>nodebalancers</b> module specifically emerged as Linode's NodeBalancer service matured, offering granular control over load balancing resources directly from the terminal, reflecting a broader industry trend towards 'infrastructure as code' and CLI-first management paradigms for cloud services.


title: SEE ALSO
content:
linode-cli(1), linode-cli instances(1), linode-cli domains(1), linode-cli networking(1), curl(1), jq(1)


title: SYNOPSIS
content:
<b>linode-cli tickets</b> <i>&lt;command&gt;</i> [<i>&lt;args&gt;</i>] [<i>&lt;options&gt;</i>]<br>For specific command usage:<br><b>linode-cli tickets</b> <i>&lt;command&gt;</i> <b>--help</b>


title: PARAMETERS
content:
<b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all active and pending support tickets associated with your Linode account. Provides a summary view of ticket IDs, subjects, statuses, and last updated times.<br><br><b><b>view</b> <i>&lt;ticket_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and displays the full details of a specific support ticket, including all replies and associated service information. The <i>&lt;ticket_id&gt;</i> is a mandatory integer argument.<br><br><b><b>open</b> <b>--summary</b> <i>&lt;summary&gt;</i> <b>--description</b> <i>&lt;description&gt;</i> [<i>&lt;service_id&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a new support ticket. Requires a <i>&lt;summary&gt;</i> (ticket subject) and a detailed <i>&lt;description&gt;</i>. Optionally, you can relate the ticket to a specific Linode service (e.g., Linode, Domain, NodeBalancer, etc.) by providing its ID.<br><br><b><b>reply</b> <i>&lt;ticket_id&gt;</i> <b>--description</b> <i>&lt;description&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new reply to an existing support ticket. The <i>&lt;ticket_id&gt;</i> is mandatory, and the <i>&lt;description&gt;</i> contains the content of your reply.<br><br><b><b>close</b> <i>&lt;ticket_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Closes an open support ticket. This action marks the ticket as resolved. The <i>&lt;ticket_id&gt;</i> is a mandatory integer argument.<br><br>


title: DESCRIPTION
content:
The <b>linode-cli-tickets</b> command is a subcommand of the <b>linode-cli</b> utility, providing a robust interface for interacting with Linode's support ticket system. It allows users to perform various actions related to support tickets, including listing existing tickets, viewing detailed information for a specific ticket, opening new support requests, replying to ongoing conversations, and closing resolved tickets. This command streamlines support interactions by enabling users to manage their Linode support needs directly from their terminal, integrating seamlessly into automated scripts or command-line workflows. It requires proper authentication with a Linode API token.


title: CAVEATS
content:
Using <b>linode-cli-tickets</b> requires a configured Linode API token with appropriate permissions (e.g., 'Read/Write' access for 'Support' or 'Global'). Without proper authentication or sufficient token scope, commands may fail or return unauthorized errors.


title: GLOBAL OPTIONS
content:
The <b>linode-cli-tickets</b> command inherits several global options from the parent <b>linode-cli</b>, which affect output formatting, pagination, and authentication:<br><b>--text</b>: Displays results in a human-friendly table (default).<br><b>--json</b>: Displays results in raw JSON format.<br><b>--format</b> <i>&lt;columns&gt;</i>: Specifies a comma-separated list of columns to display in text mode.<br><b>--page</b> <i>&lt;page_number&gt;</i> / <b>--pages</b>: Controls pagination for large result sets.<br><b>--token</b> <i>&lt;token&gt;</i> / <b>--env-token</b>: Specifies the API token to use for the request.<br><b>--help</b>: Displays help for the command or subcommand.


title: AUTHENTICATION
content:
Interaction with the Linode API via <b>linode-cli-tickets</b> necessitates authentication. This is typically handled by configuring a Linode API token via <b>linode-cli configure</b>. The token grants the CLI permission to perform actions on your behalf. Ensure the token has the necessary 'Support' read/write scope.


title: HISTORY
content:
As a component of the <b>linode-cli</b>, the <b>tickets</b> subcommand has evolved alongside the Linode API. Its functionality has consistently aimed to provide direct programmatic access to Linode's support system, adapting to new API versions and features. Its development reflects the broader commitment of Linode to offer comprehensive command-line tools for managing cloud resources.


title: SYNOPSIS
content:
<i>linode-cli volumes &lt;subcommand&gt; [options]</i><br><br><b>Common subcommands include:</b><br><i>list</i>: Display a list of all Block Storage Volumes.<br><i>create</i>: Create a new Block Storage Volume.<br><i>view &lt;volume_id&gt;</i>: Display detailed information about a specific Volume.<br><i>update &lt;volume_id&gt;</i>: Modify the label of a specific Volume.<br><i>delete &lt;volume_id&gt;</i>: Delete a Block Storage Volume.<br><i>attach &lt;volume_id&gt;</i>: Attach a Volume to a Linode Instance.<br><i>detach &lt;volume_id&gt;</i>: Detach a Volume from a Linode Instance.<br><i>resize &lt;volume_id&gt;</i>: Increase the size of a Volume.<br><i>clone &lt;volume_id&gt;</i>: Create a new Volume from an existing one.<br><i>migrate &lt;volume_id&gt;</i>: Migrate a Volume to a different region.


title: PARAMETERS
content:
<b>--label <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assign a human-readable display name to the Volume. Used when creating, updating, or cloning.<br><br><b>--region <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the data center region where the Volume will be deployed. Required for creation and cloning, and for migration target.<br><br><b>--size <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the size of the Volume in GiB (Gigabytes). Used during creation and resizing.<br><br><b>--linode_id <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID of the Linode Compute Instance to which the Volume should be attached or detached. Optional at creation for immediate attachment.<br><br><b>--filters <JSON_string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply filters in JSON format to narrow down results when listing volumes (e.g., '{"label": "my-volume"}').<br><br><b>--page <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a particular page number when listing results with pagination.<br><br><b>--pages <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Request a specific number of pages for listing results, useful with `--page`.<br><br><b>--order_by <field></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort the listed results by a specified field (e.g., 'label', 'created').<br><br><b>--order <asc|desc></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the sort order for listed results: 'asc' for ascending or 'desc' for descending.<br><br>


title: DESCRIPTION
content:
The <b>linode-cli volumes</b> command provides a comprehensive interface for creating, listing, viewing, updating, deleting, and attaching/detaching Linode Block Storage Volumes. These volumes offer persistent storage that can be attached to Linode Compute Instances, providing scalable and independent storage solutions.<br><br>Users can define volume size, label, and specify the region for deployment. It integrates seamlessly with other Linode CLI functionalities, allowing for programmatic control over storage resources within the Linode cloud environment. This command is crucial for managing data persistence and expanding storage capacity beyond the ephemeral storage of compute instances.


title: CAVEATS
content:
<i>Block Storage Volumes must reside in the same Linode data center region as the Linode Compute Instance they are attached to.</i><br><i>Volumes can only be resized to a larger size; decreasing a volume's size is not supported.</i><br><i>Deleting a volume is an irreversible action and will permanently remove all data stored on it.</i><br><i>Ensure your Linode API token has the necessary read/write permissions for volumes to perform all operations.</i>


title: SUBCOMMAND USAGE
content:
The <b>linode-cli volumes</b> command is a parent command that requires a subcommand to perform specific actions. For instance, to list volumes, you use <i>linode-cli volumes list</i>; to create one, <i>linode-cli volumes create</i>.<br><br>Each subcommand has its own specific set of required and optional parameters, defining the action and the data involved in the operation (e.g., volume_id for operations on an existing volume, or --label, --size for creation).


title: DATA PERSISTENCE AND MOBILITY
content:
Linode Block Storage Volumes provide crucial data persistence, meaning your data remains even if the associated Linode Compute Instance is deleted or reconfigured. They can be detached from one Linode and re-attached to another within the same region, offering flexibility and data mobility for applications and databases.


title: HISTORY
content:
Linode introduced Block Storage as a service to provide persistent, independent storage solutions for Linode instances, addressing the need for scalable and portable data.<br><br>The <b>linode-cli</b> was developed to offer a powerful, programmatic, and scripting-friendly interface to manage all Linode resources, including volumes. The <b>volumes</b> command specifically evolved to encapsulate the full lifecycle operations (create, modify, delete, attach, detach, resize, clone, migrate) through a consistent command-line interface, mirroring the functionality available in the Linode Cloud Manager UI and directly interacting with the Linode API.


title: SYNOPSIS
content:
<b>lintian</b> [options] [package|source|changes_file...]<br><i>Examples:</i><br><b>lintian</b> <i>my-package.deb</i><br><b>lintian</b> <i>my-source-tree/</i><br><b>lintian</b> <i>--info --display-experimental my-package.changes</i>


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief <b>help</b> message and exit.<br><br><b>--version, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <b>lintian</b> version information.<br><br><b>--info, -i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about reported tags.<br><br><b>--display-info, -I</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Also display tags with <i>"info"</i> severity.<br><br><b>--display-experimental, -X</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Also display tags with <i>"experimental"</i> severity.<br><br><b>--display-extra-info, -E</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Also display tags with <i>"extra-info"</i> severity.<br><br><b>--override-tag TAG, -o TAG</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override (suppress) a specific tag. Can be used multiple times.<br><br><b>--severity LEVEL, -S LEVEL</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only display tags at or above the specified <b>LEVEL</b> (e.g., <i>warning</i>, <i>error</i>).<br><br><b>--list-tags, -L</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all known <b>lintian</b> tags and their descriptions.<br><br><b>--check TAGS, -c TAGS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only check for the specified comma-separated <b>TAGS</b>.<br><br><b>--check-part PARTS, -C PARTS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only check specific package <b>PARTS</b> (e.g., <i>binary</i>, <i>source</i>).<br><br><b>--profile PROFILE, -P PROFILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specific <b>Lintian</b> profile for checks.<br><br><b>--show-overrides, -s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display tags that have been suppressed by <i>.lintian-overrides</i> files.<br><br><b>--verbose, -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Be more verbose, showing additional progress and debugging information.<br><br>


title: DESCRIPTION
content:
<b>lintian</b> is a powerful static analysis tool used in the Debian project to check packages for adherence to the Debian Policy Manual and common packaging errors. It examines <i>.deb</i> binary packages, <i>.dsc</i> source descriptions, or unpacked source trees.<br>The tool identifies a wide range of issues, from minor stylistic preferences to critical policy violations that could prevent a package from being accepted into the archive or cause problems for users. <b>lintian</b> produces "tags" for each identified issue, categorized by severity (e.g., <b>error</b>, <b>warning</b>, <b>info</b>). It is an essential part of the Debian packaging workflow, helping maintainers ensure high-quality and consistent packages before uploading them to the archive. Its comprehensive checks significantly contribute to the overall stability and reliability of the Debian distribution.


title: CAVEATS
content:
<b>lintian</b> can occasionally produce <b>false positives</b>, requiring maintainers to use <i>.lintian-overrides</i> files to suppress specific tags with justification. Its effectiveness depends on the currency of its checks relative to the ever-evolving Debian Policy. Some advanced checks might require a specific build environment or additional tools to be present for full functionality.


title: TAG SEVERITIES
content:
<b>lintian</b> categorizes issues by severity: <i>error</i> (critical, must fix), <i>warning</i> (important, should fix), <i>info</i> (informational, consider), <i>pedantic</i> (minor stylistic, highly recommended), and <i>experimental</i> (under development, feedback welcome).


title: OVERRIDES MECHANISM
content:
Maintainers can create a <i>debian/.lintian-overrides</i> file to justify and suppress specific <b>lintian</b> tags for their package. This allows for legitimate exceptions where a tag is a false positive or intentionally ignored due to specific package requirements, maintaining flexibility while upholding policy.


title: HISTORY
content:
<b>lintian</b> was initiated in 1999 by Christian Schwarz to enforce the Debian Policy Manual through automated checks. It rapidly became an indispensable tool for Debian maintainers and archive administrators, evolving from a simple script to a sophisticated checker. Its development is community-driven, continuously integrating new checks for emerging policy requirements and common pitfalls. This consistent evolution cemented its role as a cornerstone for ensuring Debian package quality and consistency.


title: SYNOPSIS
content:
<I>lintian-info</I> [<I>OPTIONS</I>] [<I>TAGNAME</I>...]<br><I>lintian-info</I> --tags [<I>OPTIONS</I>]<br><I>lintian-info</I> --check-id <I>TAG_ID</I><br><I>lintian-info</I> --keywords <I>KEYWORDS</I> [<I>OPTIONS</I>]


title: PARAMETERS
content:
<b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>--tag=<I>TAG</I></b>, <b>-t <I>TAG</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a Lintian tag to query. Can be used multiple times.<br><br><b><b>--tags</b>, <b>-T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all known Lintian tags.<br><br><b><b>--severity=<I>SEVERITY</I></b>, <b>-s <I>SEVERITY</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter tags by severity (e.g., <I>error</I>, <I>warning</I>, <I>info</I>, <I>pedantic</I>, <I>override</I>).<br><br><b><b>--format=<I>FORMAT</I></b>, <b>-F <I>FORMAT</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set output format (e.g., <I>plain</I>, <I>json</I>, <I>xml</I>). Default is <I>plain</I>.<br><br><b><b>--check-id=<I>TAG_ID</I></b>, <b>-c <I>TAG_ID</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check if the provided tag ID is valid. Returns specific exit codes.<br><br><b><b>--show-description</b>, <b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the full description for the specified tags.<br><br><b><b>--show-paragraph</b>, <b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the paragraph description for the specified tags.<br><br><b><b>--show-defaults</b>, <b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the default values for command options.<br><br><b><b>--show-all</b>, <b>-A</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display all available information for the specified tags.<br><br><b><b>--show-list-info</b>, <b>-L</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display information about Lintian tag lists.<br><br><b><b>--class=<I>TAG_CLASS</I></b>, <b>-C <I>TAG_CLASS</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter tags by class (e.g., <I>binary</I>, <I>source</I>, <I>override</I>).<br><br><b><b>--exit-code</b>, <b>-e</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use exit codes to indicate tag validity or match status.<br><br><b><b>--info</b>, <b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about tag properties.<br><br><b><b>--keywords=<I>KEYWORDS</I></b>, <b>-k <I>KEYWORDS</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search for tags matching the provided keywords.<br><br><b><b>--experimental</b>, <b>-X</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include experimental tags in the output.<br><br><b><b>--unmatched</b>, <b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--keywords</b>, show tags that did not match the keywords.<br><br><b><b>--manpage</b>, <b>-M</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the manpage location for tag documentation (if available).<br><br><b><b>--show-source-paragraph</b>, <b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the source code paragraph for a tag (if available).<br><br><b><b>--no-pager</b>, <b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use a pager for displaying output.<br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress non-essential output.<br><br>


title: DESCRIPTION
content:
<b>lintian-info</b> is a command-line utility specifically designed for querying and retrieving comprehensive information about Lintian tags. Lintian itself is a critical static analysis tool within the Debian ecosystem, employed to scrutinize Debian packages for policy violations, common errors, and best practice adherence. This command empowers users to access detailed descriptions, severities, classes, and other essential properties associated with specific Lintian tags. It offers versatile output formats, including human-readable plain text, structured JSON, and XML, thereby catering to both interactive command-line usage and automated scripting environments. Beyond individual tag queries, <b>lintian-info</b> can enumerate all known tags, apply filters based on severity or class, and perform searches using keywords, making it an indispensable resource for Debian package maintainers and developers who need to quickly grasp the implications of specific Lintian warnings or errors reported against their software packages.


title: CAVEATS
content:
The <b>--format</b> option significantly alters the output structure; <I>json</I> or <I>xml</I> formats require specific parsing logic. Displaying full descriptions or using <b>--show-all</b> can produce lengthy output, which might be paginated by default unless <b>--no-pager</b> is used. Some options, like <b>--check-id</b> or <b>--keywords</b>, operate in distinct modes and may be mutually exclusive with direct tag querying.


title: EXIT STATUS
content:
<ul><li><b>0</b>: Success, or requested tags are valid/found.</li><li><b>1</b>: General error or invalid arguments.</li><li><b>2</b>: (With <b>--check-id</b>) The tag ID was not found.</li><li><b>3</b>: (With <b>--keywords</b>) No matching tags were found for the keywords.</li></ul>


title: ENVIRONMENT
content:
<I>LINTIAN_ROOT</I>: Specifies the root directory where Lintian expects to find its data files, including tag definitions. This can be useful for testing or custom Lintian setups.


title: FILES
content:
<I>/usr/share/lintian/tags/*</I>: Directory containing the definitions of Lintian tags. These files are parsed by <b>lintian-info</b> to provide the requested information.


title: HISTORY
content:
<b>lintian-info</b> was introduced as part of the Lintian suite to provide a dedicated and robust way to query details about Lintian tags. It succeeded or complemented <b>lintian-explain-tags</b>, offering more structured output options (like JSON and XML) and enhanced search capabilities. Its development reflects the growing need for programmatic access to tag information within automated testing and CI/CD pipelines, providing comprehensive and accessible documentation for the vast and evolving set of Lintian checks.


title: PARAMETERS
content:
<b>-d, --debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output, useful for troubleshooting.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the <b>os-prober</b> utility.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br><b>--skip-external-devices</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents probing of external devices such as USB drives, potentially speeding up the scan.<br><br><b>--only-partitions=<I>PARTITION</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Probes only the specified partition (e.g., /dev/sda1), useful for targeted scans.<br><br>


title: DESCRIPTION
content:
While <b>linux-boot-prober</b> is not a standard, runnable command, this analysis focuses on <b>os-prober</b>, which performs the exact function implied by 'boot prober' and is widely used for this purpose, particularly by the GRUB bootloader.<br><br><b>os-prober</b> is a utility designed to automatically detect other operating systems installed on a computer. Its primary role is to assist bootloader configuration tools, such as GRUB's <i>grub-mkconfig</i>, in generating boot entries for multi-boot environments. It scans various disk partitions and filesystems, identifying known signatures of different operating systems (e.g., Linux, Windows, macOS, BSD).<br><br>The command outputs its findings to standard output in a structured format, which is then parsed by wrapper scripts (like those in <i>/etc/grub.d/</i>) to build the bootloader's menu. This automation greatly simplifies the process of setting up dual-boot or multi-boot systems.


title: CAVEATS
content:
The command <b>linux-boot-prober</b> does not exist as a standalone, directly executable utility. This analysis provides information for <b>os-prober</b>, which is the widely used tool performing the 'boot probing' function implied by the user's query.<br><br><b>os-prober</b> typically requires root privileges to mount and inspect partitions. It can take a considerable amount of time to complete if there are many disks or partitions to scan. While generally reliable, it may not detect highly customized or very obscure operating system installations.


title: HISTORY
content:
<b>os-prober</b> was developed as a key component of the GRUB 2 project to automate the detection of other installed operating systems. Prior to its widespread adoption, configuring GRUB for multi-boot systems often required manual editing of configuration files, which was prone to errors. By automating this discovery, <b>os-prober</b> significantly enhanced the user experience for dual-boot setups and became an integral part of GRUB 2 installations across most Linux distributions, simplifying the complex task of managing multiple bootable environments.


title: PARAMETERS
content:
<b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The executable program or script to be run with a 32-bit personality.<br><br><b>[<I>arguments</I>...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments that will be passed directly to the <I>command</I>.<br><br>


title: DESCRIPTION
content:
The <b>linux32</b> command facilitates the execution of a specified program as if it were running on a 32-bit x86 (i386/i686) Linux environment, even when the host operating system is natively 64-bit (x86-64). This crucial compatibility utility achieves its function by modifying the 'personality' of the current process before invoking the target command. The kernel's personality mechanism adjusts how system calls are interpreted, how the kernel perceives the process's architecture, and ensures that the invoked program operates within a 32-bit Application Binary Interface (ABI).<br><br>This command is invaluable for ensuring backward compatibility with legacy 32-bit applications, binaries, or libraries that may not function correctly or at all in a pure 64-bit environment. Such applications often rely on specific 32-bit system call behaviors or library paths that differ from their 64-bit counterparts. While <b>linux32</b> provides a convenient wrapper, its core functionality is frequently implemented via the more general <b>setarch i386</b> or <b>setarch i686</b> command, which allows more granular control over execution domain parameters. For successful execution, appropriate 32-bit user-space libraries must be installed on the 64-bit system.


title: CAVEATS
content:
Running 32-bit programs on a 64-bit system with <b>linux32</b> typically requires the installation of corresponding 32-bit user-space libraries (e.g., <b>libc6-i386</b>, <b>ia32-libs</b> packages on some distributions). Without these, 32-bit binaries will fail due to missing shared libraries. Not all 32-bit applications are guaranteed to run perfectly; some may have deeper dependencies or assumptions that personality changes alone cannot resolve. <b>linux32</b> is often a symbolic link or script wrapper for <b>setarch i386</b> or <b>setarch i686</b>, meaning its behavior aligns with that underlying command.


title: 32-BIT LIBRARY REQUIREMENTS
content:
For <b>linux32</b> to successfully execute a program, the target 64-bit Linux system must have the necessary 32-bit user-space libraries installed. These libraries, such as the 32-bit version of glibc (<b>libc.so.6</b>), are crucial for resolving shared library dependencies of 32-bit executables. Most modern distributions provide multi-arch capabilities that allow the simultaneous installation of both 32-bit and 64-bit libraries.


title: UNDERLYING KERNEL MECHANISM
content:
The core of <b>linux32</b>'s functionality relies on the Linux kernel's <b>personality(2)</b> system call. This system call allows a process to change its execution domain, effectively telling the kernel to treat subsequent system calls and certain process behaviors as if they originated from a different architecture (e.g., <b>PER_LINUX32</b> for 32-bit Linux ABI). While <b>linux32</b> provides a simple interface, <b>setarch</b> offers more generalized control over these personality settings.


title: HISTORY
content:
The development of <b>linux32</b> is intrinsically linked to the transition of Linux systems from 32-bit to 64-bit x86 architectures. As 64-bit kernels became standard, maintaining backward compatibility with a vast ecosystem of existing 32-bit applications became a necessity. The kernel's <b>personality</b> system call, introduced early in the x86-64 era, provided the foundational mechanism for a process to declare its desired ABI. Commands like <b>setarch</b> expose this functionality to users. <b>linux32</b> emerged as a convenient, specialized wrapper or alias, simplifying the process of launching 32-bit programs without requiring users to remember the specific <b>setarch</b> architecture flags (e.g., <b>i386</b> or <b>i686</b>), thus making compatibility more accessible.


title: SYNOPSIS
content:
<b>liquidctl</b> [<i>--match &lt;pattern&gt;</i>] <i>command</i> [<i>arguments</i>]<br><br>Common usage examples:<br><b>liquidctl</b> <i>list</i><br><b>liquidctl</b> <i>status</i><br><b>liquidctl</b> <i>set</i> <i>&lt;device&gt;</i> <i>&lt;property&gt;</i> <i>&lt;value&gt;</i><br><b>liquidctl</b> <i>initialize</i>


title: PARAMETERS
content:
<b><i>list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all detected and supported liquid cooling devices.</i><br><br><b><i>status</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current status, sensor data, and configuration of specified devices.</i><br><br><b><i>set &lt;device&gt; &lt;property&gt; &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets a specific property (e.g., fan speed, pump mode, LED color) for a device.</i><br><br><b><i>initialize</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Initializes a device, applying its default or last known configuration.</i><br><br><b><i>--match &lt;pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Filters device selection based on a vendor/product pattern (e.g., <b>corsair/h100i</b>).</i><br><br><b><i>--json</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Outputs command results in JSON format, useful for scripting.</i><br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows the command's help message and available options.</i><br><br>


title: DESCRIPTION
content:
<i>liquidctl</i> is a robust, cross-platform command-line tool designed for managing and monitoring liquid cooling solutions and fan controllers. It provides extensive control over various hardware components, including AIO (All-In-One) coolers, pump speeds, fan speeds, and RGB LED lighting. The tool supports a wide range of devices from manufacturers like Corsair, NZXT, and Asetek, enabling users to customize cooling profiles, set fan curves, adjust pump performance, and configure lighting effects directly from the terminal. <i>liquidctl</i> is particularly valuable for Linux users who lack proprietary vendor software, offering a powerful alternative for precise hardware control and thermal management. It helps optimize system acoustics and cooling efficiency, ensuring optimal performance for gaming and demanding workloads.


title: CAVEATS
content:
<i>liquidctl</i> often requires <b>root</b> privileges or specific <b>udev</b> rules to access hardware devices. Incorrect settings can potentially impact cooling performance or system stability. Device compatibility can vary; always refer to the official documentation for supported hardware.


title: COMMON USE CASES
content:
<i>liquidctl</i> is frequently used for setting custom fan curves to balance noise and cooling efficiency, configuring specific RGB lighting effects on supported devices, and real-time monitoring of coolant temperatures, fan speeds, and pump performance for optimal system tuning.


title: PERMISSIONS AND UDEV RULES
content:
To allow non-root users to manage devices with <i>liquidctl</i>, it is necessary to configure appropriate UDEV rules. These rules grant the necessary permissions to access the hardware interface. Detailed instructions for setting up UDEV rules are available in the official <i>liquidctl</i> documentation or project repository.


title: HISTORY
content:
<i>liquidctl</i> was primarily developed by Jonas Malaco, starting around 2019, to address the lack of native Linux support for controlling popular liquid cooling solutions without relying on proprietary vendor software. It has since grown into a widely adopted tool, continuously receiving updates and expanding its device compatibility.


title: SYNOPSIS
content:
<b>lispmtopgm</b> [<I>-alpha</I>] [<I>-cmap</I>] [<I>-invert</I>] [<I>-text</I>] [<I>-verbose</I>] [<I>-width</I>=<I>width</I>] [<I>-height</I>=<I>height</I>] [<I>bitmapfile</I>]


title: PARAMETERS
content:
<b><I>-alpha</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts the bitmap as an alpha map, taking pixels from the alpha channel.<br><br><b><I>-cmap</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the color map table to standard output for debugging purposes.<br><br><b><I>-invert</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inverts the image colors, turning white pixels black and black pixels white.<br><br><b><I>-text</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints any embedded text content from the bitmap file to standard output for debugging.<br><br><b><I>-verbose</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed debugging information to standard error.<br><br><b><I>-width</I>=<I>width</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly sets the output image width. Useful if the file header is incorrect or missing.<br><br><b><I>-height</I>=<I>height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly sets the output image height. Useful if the file header is incorrect or missing.<br><br>


title: DESCRIPTION
content:
<i><b>lispmtopgm</b></i> is a utility that converts a Lisp Machine bitmap file into a Portable Graymap (PGM) image. It processes the specific bitmap format documented in the <i>Lisp Machine Window System Manual</i>. The command expects a black and white input image and generates a PGM file where black pixels become 0 and white pixels become 1, with a maximum pixel value of 1. This tool is especially useful for handling legacy image data originating from Lisp Machine environments. Input can be provided from a specified <i>bitmapfile</i> or, if no file is named, from standard input.


title: CAVEATS
content:
<i><b>lispmtopgm</b></i> is designed for a specific, older Lisp Machine bitmap file format. It expects black and white input images. If the input file's header is missing or malformed, you may need to explicitly specify the image dimensions using the <I>-width</I> and <I>-height</I> parameters.


title: OUTPUT FORMAT
content:
<i><b>lispmtopgm</b></i> always produces a <i>Portable Graymap (PGM)</i> file. The output <i>PGM</i> will have a maximum pixel value (maxval) of 1, where 0 represents black pixels and 1 represents white pixels.


title: INPUT SOURCE
content:
The command can read the Lisp Machine bitmap data from a specified <i>bitmapfile</i>. If no filename is provided, it defaults to reading the bitmap data from standard input.


title: HISTORY
content:
<i><b>lispmtopgm</b></i> is an integral part of the comprehensive <i>Netpbm</i> image manipulation toolkit. The <i>Netpbm</i> project evolved from the <i>pbmplus</i> package, which emerged in the late 1980s as a suite of tools for converting various image formats to and from portable formats (PBM, PGM, PPM). <i><b>lispmtopgm</b></i> was developed to specifically address the niche bitmap format produced by <i>Lisp Machines</i>, highlighting the enduring need to process and interoperate with data from these historic computing environments. Its inclusion in <i>Netpbm</i> ensures continued compatibility with this specialized format.


title: SEE ALSO
content:
<I>pbmtopgm(1)</I>, <I>pbmtoppm(1)</I>, <I>pgm(5)</I>, <I>pbm(5)</I>, <I>ppm(5)</I>, <I>netpbm(1)</I>


title: SYNOPSIS
content:
<b>listres</b> [<i>-all</i>] [<i>-global</i>] [<i>-font</i>] [<i>-cursor</i>] [<i>-bitmap</i>] [<i>-pixmap</i>] [<i>-name &lt;instance&gt;</i>] [<i>-class &lt;class&gt;</i>] [<i>program_name</i>]


title: PARAMETERS
content:
<b><i>-all</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all resource specifications, including default values.<br><br><b><i>-global</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only global resource specifications (those not tied to a specific program instance).<br><br><b><i>-font</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only font resources.<br><br><b><i>-cursor</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only cursor resources.<br><br><b><i>-bitmap</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only bitmap resources.<br><br><b><i>-pixmap</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only pixmap resources.<br><br><b><i>-name &lt;instance&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists resources for a specific application instance name (e.g., <i>xterm</i> for the terminal emulator).<br><br><b><i>-class &lt;class&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists resources for a specific application class name (e.g., <i>XTerm</i> for the terminal emulator class).<br><br><b><i>program_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the program for which to list resources. If not provided, it lists global resources or resources for the current X session.<br><br>


title: DESCRIPTION
content:
<i>listres</i> is a utility for displaying resource specifications currently loaded in the X resource database. Often known as <i>xlistres</i> in modern X Window System distributions, it helps developers and power users debug and understand how X applications acquire their configurable properties like colors, fonts, and window geometry.<br><br>It queries the <i>RESOURCE_MANAGER</i> property on the root window or the <i>~/.Xdefaults</i> file (and other X resource files) to show the values of resources for a given application or globally. This command is primarily used in an active X session for diagnosing resource-related issues and confirming that application resources are correctly applied.


title: CAVEATS
content:
This command is part of the X Window System utilities and requires an active X server to function. It is primarily used for debugging and understanding X application resource loading, rather than general system administration. The command is more commonly known as <i>xlistres</i> in modern X.Org distributions, and `listres` might be an alias or a symbolic link to `xlistres`.


title: X RESOURCES
content:
The X Window System uses a hierarchical resource database to allow users to customize the appearance and behavior of X applications. Resources can specify fonts, colors, window sizes, and many other properties, making applications highly configurable without recompilation.


title: RESOURCE PRECEDENCE
content:
X resources are loaded from various sources with specific precedence rules. These sources include application defaults files, the <i>~/.Xdefaults</i> or <i>~/.Xresources</i> file, and the <i>RESOURCE_MANAGER</i> property on the root window. <i>listres</i> helps visualize the effectively loaded resources after these precedence rules have been applied.


title: HISTORY
content:
<i>listres</i> originates from the early days of the X Window System, developed as a tool to help developers and users manage and understand the complex resource system used by X applications for customization. It provided a crucial way to inspect what resources an application was set to use. Over time, its name evolved, and it is now typically distributed as <i>xlistres</i> within the <i>xorg-x11-apps</i> or similar packages, maintaining its core functionality for querying the X resource database.


title: PARAMETERS
content:
<b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run in verbose mode, showing test commands and their output.<br><br><b><b>-j</b> <I>N</I>, <b>--threads</b>=<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run N tests in parallel using N threads, speeding up execution.<br><br><b><b>--filter</b>=<I>REGEX</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only run tests whose name or path matches the given regular expression.<br><br><b><b>--param</b> <I>NAME</I>=<I>VALUE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a user-defined parameter that can be accessed within test configurations.<br><br><b><b>--timeout</b>=<I>SECONDS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Kill tests that take longer than the specified number of seconds to prevent hangs.<br><br><b><b>--max-failures</b>=<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop running tests after N failures have occurred, useful for debugging.<br><br><b><b>--output</b> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write test results (e.g., in JSON format) to the specified file for later analysis.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's version number and exit, providing version information.<br><br>


title: DESCRIPTION
content:
<b>lit</b> (LLVM Integrated Tester) is a portable and flexible test driver used by LLVM, Clang, and other related projects. It's designed to run test suites, interpret test commands from source files (often <i>`RUN`</i> lines), and report results. Unlike traditional test frameworks, <b>lit</b> focuses on simplicity and ease of integration, making it ideal for large, complex projects with diverse testing needs. It supports various test formats and allows for flexible test discovery and execution. <b>lit</b> provides powerful filtering, parallel execution, and detailed output, aiding developers in maintaining code quality and catching regressions efficiently across different platforms.


title: CAVEATS
content:
It's important to note that <b>lit</b> is not a standalone general-purpose shell command like <b>ls</b> or <b>grep</b>. It is primarily designed as a test runner for the LLVM project and its sub-projects (like Clang, LLDB, etc.). Its usage typically involves a structured test directory with specific Python-based configuration files (e.g., <i>`lit.cfg`</i>, <i>`main.cfg`</i>) that <b>lit</b> discovers and uses to execute tests. Directly executing <b>lit</b> without a properly configured test suite might not yield expected results or may require specifying test paths explicitly. It relies on the LLVM toolchain being available on the system.


title: TEST FORMATS
content:
<b>lit</b> supports various test formats, including the most common <i>`RUN` line tests</i> where test commands are embedded directly into source files using <i>`// RUN:`</i> comments. It also supports shell-based tests, GoogleTest, and custom formats through configuration files. This flexibility allows diverse testing methodologies within a single framework.


title: CONFIGURATION FILES
content:
<b>lit</b> heavily relies on configuration files (e.g., <i>`lit.cfg`</i> or <i>`main.cfg`</i>) to define how tests are discovered, executed, and interpreted. These Python-based scripts provide powerful customization options, allowing projects to define parameters, add paths to the execution environment, and set up test-specific logic unique to their testing needs.


title: HISTORY
content:
The <b>lit</b> (LLVM Integrated Tester) project was developed as part of the broader LLVM infrastructure to provide a flexible and robust testing framework specifically tailored for compilers, assemblers, and debuggers. Its design emphasizes simplicity, portability, and ease of integration within large-scale projects like LLVM and Clang. <b>lit</b> was created to address the specific needs of testing compiler toolchains, where tests often involve running commands and inspecting output, errors, or exit codes directly from source files. It has evolved alongside the LLVM project, becoming its primary testing utility.


title: SYNOPSIS
content:
<I>litecli</I> <i>[OPTIONS]</i> <i>[DATABASE_FILE]</i><br><br>Connects to a specified SQLite database file. If no file is provided, it connects to an in-memory database.


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version number and exits.<br><br><b>-e TEXT, --execute TEXT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the specified SQL query and then exits the application.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the initial welcome message when starting litecli.<br><br><b>--rc-file TEXT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the litecli configuration file.<br><br><b>--output TEXT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects all program output (including query results) to the specified file.<br><br><b>--csv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs query results in Comma Separated Values (CSV) format.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs query results in JSON (JavaScript Object Notation) format.<br><br><b>--tsv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs query results in Tab Separated Values (TSV) format.<br><br><b>--pretty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables pretty-printed (formatted) table output for results.<br><br><b>--vertical</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays query results in a vertical mode, with each column on a new line.<br><br><b>--pager TEXT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified command (e.g., <I>less</I>) as a pager for large query outputs.<br><br><b>DATABASE_FILE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the SQLite database file to connect to. If omitted, litecli connects to a temporary, in-memory database.<br><br>


title: DESCRIPTION
content:
<I>litecli</I> is a modern and user-friendly command-line interface for SQLite databases. Built on the foundations of popular tools like <I>mycli</I> and <I>pgcli</I>, it significantly enhances the standard SQLite command-line experience. Key features include intelligent autocompletion, which suggests tables, columns, and SQL keywords as you type, and syntax highlighting for improved readability of queries. It also offers pretty table formatting for query results, making output easier to digest, especially for complex data.<br><br><I>litecli</I> supports multiline queries, customizable output formats (like CSV, JSON, TSV, or vertical mode), and seamless integration with external pagers (e.g., <I>less</I>) and editors. It's an excellent alternative to the default <I>sqlite3</I> CLI, providing a more productive and visually appealing environment for interacting with SQLite databases.


title: CAVEATS
content:
<I>litecli</I> requires Python 3 and its associated dependencies to be installed. While it aims for high compatibility, some advanced or obscure SQLite shell dot-commands (<I>.commands</I>) might behave differently or not be fully supported compared to the native <I>sqlite3</I> command-line utility. For very large result sets, the <I>--pager</I> option or redirecting output to a file is recommended to prevent overwhelming the terminal. Configuration changes made through the CLI options are temporary and do not persist unless saved to the configuration file (e.g., <I>~/.config/litecli/config</I>).


title: <B>CONFIGURATION</B>
content:
<I>litecli</I> can be extensively configured via a configuration file, typically located at <I>~/.config/litecli/config</I>. This file allows users to customize various aspects, including keybindings, colors, output formats, and behavior of autocompletion. The <I>--rc-file</I> option allows specifying an alternative configuration file for specific sessions or projects.


title: <B>INTERACTIVE FEATURES</B>
content:
Beyond basic autocompletion, <I>litecli</I> offers smart completion (context-aware suggestions), multiline input mode (enabled by default or with <I>--expansion</I>), and a robust history search. These features significantly boost productivity for frequent SQLite users by reducing typing and errors.


title: HISTORY
content:
<I>litecli</I> emerged as part of a family of modern command-line database clients, primarily influenced by the success and design principles of <I>mycli</I> (for MySQL) and <I>pgcli</I> (for PostgreSQL). Developed by Amjith Ramanujam and other contributors, it brought the enhanced features of autocompletion, syntax highlighting, and intelligent formatting to the SQLite ecosystem. Its development focused on providing a more intuitive and productive experience for SQLite users, leveraging Python's extensibility to build a rich interactive shell on top of the <I>sqlite3</I> library.


title: SEE ALSO
content:
<I>sqlite3(1)</I>: The official SQLite command-line shell., <I>mycli(1)</I>: A similar command-line client for MySQL., <I>pgcli(1)</I>: A similar command-line client for PostgreSQL., <I>psql(1)</I>: The official PostgreSQL interactive terminal., <I>mysql(1)</I>: The official MySQL command-line client.


title: PARAMETERS
content:
<b><i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The directory to serve. Defaults to the current working directory if not specified.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message, showing all available options and their usage.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the installed version of <b>live-server</b>.<br><br><b><b>--port</b>=<i>PORT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the port on which the server should run. Default is <i>8080</i>.<br><br><b><b>--host</b>=<i>HOST</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the host IP address to bind the server to. Default is <i>0.0.0.0</i> (accessible from all network interfaces).<br><br><b><b>--no-browser</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>live-server</b> from automatically opening a new browser window/tab upon startup.<br><br><b><b>--browser</b>=<i>BROWSER</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies which browser to open. Examples: <i>'chrome'</i>, <i>'firefox'</i>, <i>'google-chrome'</i>.<br><br><b><b>--open</b>={<i>/PATH|false</i>}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a specific path relative to the served directory, or disables opening the browser (equivalent to <b>--no-browser</b> when set to <i>false</i>).<br><br><b><b>--watch</b>={<i>DIR|file,DIR|file...</i>}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of directories or files to watch for changes. By default, it watches all files in the served directory.<br><br><b><b>--ignore</b>={<i>DIR|file,DIR|file...</i>}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of directories or files to ignore from watching. Useful for node_modules, .git, etc.<br><br><b><b>--file</b>=<i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Serves a specific file as the entry point for all requests. Useful for single-page applications with client-side routing (e.g., <i>--file=index.html</i>).<br><br><b><b>--wait</b>=<i>MILLISECONDS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a delay in milliseconds before reloading the browser after a file change is detected. Useful if your build process takes time.<br><br><b><b>--spa</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Single Page Application (SPA) mode. All requests will be redirected to the root <i>index.html</i> unless a file exists at the requested path. Similar to <b>--file=index.html</b>.<br><br><b><b>--cors</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Cross-Origin Resource Sharing (CORS) headers for all responses, allowing requests from different origins.<br><br><b><b>--https</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables HTTPS (secure) serving. Requires <b>--ssl-cert</b> and <b>--ssl-key</b> options.<br><br><b><b>--ssl-cert</b>=<i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to your SSL certificate file (e.g., <i>server.crt</i>). Required when <b>--https</b> is used.<br><br><b><b>--ssl-key</b>=<i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to your SSL key file (e.g., <i>server.key</i>). Required when <b>--https</b> is used.<br><br>


title: DESCRIPTION
content:
<b>live-server</b> is a lightweight development server built on Node.js, designed specifically for rapid front-end web development. It automatically reloads your web browser whenever it detects changes in the files being served. This feature, known as "live reload," significantly streamlines the development workflow by eliminating the need for manual browser refreshes.<br><br>When invoked, <b>live-server</b> starts an HTTP server in the current directory (or a specified path), making your static HTML, CSS, and JavaScript files accessible via a local URL, typically <i>http://127.0.0.1:8080</i>. It then monitors these files for modifications. Upon saving changes to a file, <b>live-server</b> sends a signal to the browser, causing it to reload the page instantly, reflecting your updates in real-time. This real-time feedback loop is invaluable for designing layouts, styling components, and testing interactive features.<br><br>While not intended for production environments, <b>live-server</b> provides a robust set of options for customization, including specifying the port, host, default browser, ignoring certain files or directories, and even enabling HTTPS or CORS for more complex development scenarios. Its simplicity and effectiveness make it a popular choice for quick prototyping and local development of static websites or single-page applications.


title: CAVEATS
content:
<b>live-server</b> is a development tool, not intended for production use due to its focus on convenience over security and performance optimized for serving a large number of concurrent requests. It primarily serves static files and offers limited server-side logic capabilities. It requires Node.js and npm (or yarn) to be installed on your system. While powerful for local development, its configuration is primarily command-line driven, which might be less flexible than dedicated web servers for more complex setups or advanced routing.


title: INSTALLATION
content:
<b>live-server</b> is typically installed globally using Node.js's package manager, npm:<br><b>npm install -g live-server</b><br>Alternatively, you can install it locally as a development dependency for a project: <br><b>npm install --save-dev live-server</b> and then run it via an npm script (e.g., <b>"start": "live-server"</b> in <i>package.json</i>).


title: BASIC USAGE EXAMPLES
content:
To start a server in the current directory, serving files from <i>./</i> and opening your default browser:<br><b>live-server</b><br><br>To serve files from a specific directory, e.g., <i>./public</i>:<br><b>live-server public/</b><br><br>To run on a specific port (e.g., <i>3000</i>) and prevent the browser from opening automatically:<br><b>live-server --port=3000 --no-browser</b><br><br>To watch only specific files or directories and ignore others:<br><b>live-server --watch=index.html,css/style.css,js/ --ignore=node_modules/</b>


title: HISTORY
content:
<b>live-server</b> emerged within the Node.js ecosystem as a pragmatic solution to enhance front-end web development workflows. Historically, developers manually refreshed browsers after every code change, a tedious and time-consuming task. Building upon the concept of live reloading popularized by more integrated build systems, <b>live-server</b> was developed as a standalone, zero-configuration utility. Since its initial public release around 2014-2015, its development has prioritized simplicity, speed, and ease of use. It has rapidly become a fundamental tool for rapid prototyping and iterative development of static web content and single-page applications, leveraging WebSockets for efficient, real-time communication between the server and the client browser to trigger instant reloads upon file modifications.


title: PARAMETERS
content:
<b><b>-o</b> <<i>filename</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file name for the generated assembly or object code.<br><br><b><b>-march=</b><<i>architecture</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target architecture (e.g., <i>x86</i>, <i>arm</i>, <i>aarch64</i>) for code generation.<br><br><b><b>-mcpu=</b><<i>cpu</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target CPU within the chosen architecture (e.g., <i>haswell</i>, <i>cortex-a7</i>), allowing for CPU-specific optimizations.<br><br><b><b>-filetype=</b><<i>type</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the type of output file. Common types are <i>asm</i> (assembly code), <i>obj</i> (object file), and <i>null</i> (discards output).<br><br><b><b>-O</b><<i>level</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies optimization passes to the IR before code generation. Levels include <i>0</i> (no optimizations), <i>1</i>, <i>2</i>, <i>3</i> (increasing aggression), <i>s</i> (optimize for size), and <i>z</i> (optimize for even smaller size).<br><br><b><b>-mtriple=</b><<i>triple</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target triple, a string that uniquely identifies the target platform (e.g., <i>x86_64-unknown-linux-gnu</i>).<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive list of all available command-line options and their descriptions.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the <b>llc</b> compiler.<br><br>


title: DESCRIPTION
content:
The <b>llc</b> command, part of the LLVM (Low Level Virtual Machine) project, is the LLVM static compiler. Its primary function is to transform LLVM Intermediate Representation (IR) into target-specific assembly code or object files. LLVM IR can be in text format (<i>.ll</i> files) or bitcode format (<i>.bc</i> files). <b>llc</b> is a crucial component in the LLVM compilation toolchain, typically invoked after front-ends like <b>clang</b> have converted source code (e.g., C, C++, Objective-C) into LLVM IR.<br><br><b>llc</b> supports various target architectures and CPUs, allowing for cross-compilation. It can apply a wide range of optimizations specified by different optimization levels (e.g., <b>-O0</b> for no optimizations, <b>-O3</b> for aggressive optimizations). The output can be raw assembly code (<i>.s</i> files), which can then be assembled by a native assembler, or directly object files (<i>.o</i> files) suitable for linking. This modular design makes LLVM highly flexible and enables extensive analysis and transformation of the code at the IR level before final code generation. <b>llc</b> is essential for developers working with LLVM, compilers, or needing to generate highly optimized machine code for specific platforms.


title: CAVEATS
content:
<b>llc</b> is part of the LLVM toolchain and requires LLVM to be installed on the system. It processes LLVM Intermediate Representation (IR), not direct high-level source code like C/C++ (that's handled by front-ends like <b>clang</b>). Therefore, input files must be valid LLVM IR (<i>.ll</i> or <i>.bc</i> format). Its capabilities for a specific target depend on how LLVM was compiled and what back-ends are enabled.


title: LLVM INTERMEDIATE REPRESENTATION (IR)
content:
LLVM IR is a low-level, assembly-like language with strong type safety and explicit data flow, serving as the common intermediate representation for all LLVM front-ends and back-ends. It exists in three forms: human-readable assembly (<i>.ll</i> files), an in-memory representation, and a compact binary bitcode format (<i>.bc</i> files). <b>llc</b> consumes this IR to generate machine code.


title: COMPILATION WORKFLOW WITH LLVM
content:
In a typical LLVM-based compilation, a front-end like <b>clang</b> first parses high-level source code (e.g., C/C++) and translates it into LLVM IR. This IR can then be optimized by tools like <b>opt</b>. Finally, <b>llc</b> takes this (potentially optimized) LLVM IR and generates the target-specific assembly code or object files, which are then linked to create an executable program. This modularity allows for powerful cross-language and cross-platform optimizations.


title: HISTORY
content:
The <b>llc</b> command is an integral part of the LLVM compiler infrastructure, which originated in 2000 as a research project at the University of Illinois at Urbana-Champaign under the guidance of Chris Lattner. Its design emphasizes modularity and optimization, aiming to provide a universal, reusable compiler framework. <b>llc</b> was developed as the core component responsible for the final stage of code generation, translating the architecture-independent LLVM IR into machine-specific assembly or object code, enabling LLVM's widespread adoption for diverse platforms and languages.


title: PARAMETERS
content:
<b><b>-b</b>, <b>--batch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run commands specified in -s, -o, -O, -l, -L and then exit.<br><br><b><b>-c</b>, <b>--core</b> <i>&lt;core_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Debug a core dump file.<br><br><b><b>-f</b>, <b>--file</b> <i>&lt;executable&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the executable to debug.<br><br><b><b>-o</b>, <b>--one-line</b> <i>&lt;command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run a single LLDB command upon startup.<br><br><b><b>-s</b>, <b>--source</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read and execute LLDB commands from the specified file.<br><br><b><b>-p</b>, <b>--attach-pid</b> <i>&lt;pid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to a running process by its process ID.<br><br><b><b>-n</b>, <b>--attach-name</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to a running process by its name.<br><br><b><b>--</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Separator indicating that all subsequent arguments are for the inferior process, not for <i>lldb</i> itself.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the <i>lldb</i> version and exit.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show <i>lldb</i> command-line help.<br><br>


title: DESCRIPTION
content:
<i>lldb</i> is a powerful, next-generation debugger built as part of the LLVM project. It is designed to be highly extensible, reusable, and efficient, leveraging the modular components provided by LLVM and Clang. Unlike older debuggers, <i>lldb</i> is built on top of a modern architecture, utilizing the LLVM disassembler, JIT compilation, and the Clang expression parser for advanced debugging capabilities.<br><br>It supports debugging of C, C++, Objective-C, and Swift programs across various architectures and operating systems, including macOS, Linux, and Windows. <i>lldb</i> provides a rich command-line interface that can be extended with Python scripting, allowing users to automate complex debugging tasks, create custom commands, and format data types. Its modular design makes it easy to integrate into IDEs and other development tools, making it the default debugger for Xcode on macOS.


title: CAVEATS
content:
Users accustomed to <i>GDB</i> might find <i>lldb</i>'s command syntax and structure different, requiring a learning curve. While highly capable, certain niche features or very specific debugging scenarios might have varying levels of maturity or support compared to more established debuggers on some platforms. Its performance and features are closely tied to the LLVM ecosystem, meaning full functionality often benefits from a recent LLVM/Clang installation.


title: KEY FEATURES
content:
<i>lldb</i> boasts a modular architecture, allowing for flexible integration and customization. It supports powerful Python scripting for automation and extension, a Clang expression parser for evaluating C/C++/Objective-C expressions directly, and robust support for JIT compilation for on-the-fly code generation. It also provides advanced data formatters to present complex data structures in an understandable way.


title: INTERACTIVE USAGE
content:
When launched without specific commands, <i>lldb</i> enters an interactive mode, providing a command-line prompt. Users can set breakpoints, step through code, inspect variables, evaluate expressions, and manage threads. Its tab-completion and command aliasing features enhance the interactive debugging experience. Commands are typically intuitive, such as <i>breakpoint set</i>, <i>frame variable</i>, <i>next</i>, and <i>continue</i>.


title: HISTORY
content:
<i>lldb</i> originated as an open-source project within the broader LLVM initiative, conceived to address the limitations and architectural challenges of older debuggers like <i>GDB</i>. Development began with a strong emphasis on modularity, performance, and extensibility. It gained significant traction when Apple adopted it as the default debugger for Xcode, replacing <i>GDB</i> and leveraging its deep integration with the Clang compiler and LLVM toolchain. Over time, it has evolved into a cross-platform debugger, supporting Linux, Windows, and other Unix-like systems, widely used in modern C++, Objective-C, and Swift development.


title: PARAMETERS
content:
<b><b>-f</b> <i>&lt;format&gt;</i>, <b>--format</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format for displayed information. Supported formats include <i>plain</i> (default human-readable), <i>xml</i>, <i>json</i>, and <i>keyvalue</i>. This is particularly useful for scripting and programmatic access.<br><br><b><b>-d</b> <i>&lt;socket&gt;</i>, <b>--daemon</b> <i>&lt;socket&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the <b>lldpd</b> daemon via a specified Unix domain socket path instead of the default location (usually <i>/var/run/lldpd.socket</i>).<br><br><b><b>-i</b> <i>&lt;interface&gt;</i>, <b>--interface</b> <i>&lt;interface&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies the subsequent command or query to a specific network interface. If not specified, commands typically apply globally or to all relevant interfaces configured by <b>lldpd</b>.<br><br><b><b>-p</b>, <b>--permanent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>configure</b> commands to make changes persistent across daemon restarts. This usually involves writing the configuration to a designated configuration file (e.g., <i>/etc/lldpd.conf</i>).<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <b>lldpctl</b> utility and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message with common options and commands, then exits.<br><br><b><b>show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays LLDP information from the daemon.</i> This command has several sub-commands, including <i>neighbors</i> (to list connected devices), <i>interfaces</i> (to show interface status), <i>lldp</i> (for general LLDP protocol status), <i>configuration</i> (current daemon settings), and <i>statistics</i>.<br><br><b><b>configure</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Modifies the <b>lldpd</b> daemon's configuration.</i> This command also requires sub-commands to specify what to configure, such as <i>system</i> (for host description, name, capabilities), <i>interface</i> (to enable/disable LLDP on a port or set its description), <i>lldp</i> (for protocol timers), <i>med</i> (for LLDP-MED specific parameters), and <i>dot1</i> (for 802.1 related settings like VLANs).<br><br><b><b>watch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Monitors LLDP events and displays changes in real-time.</i> This can be useful for troubleshooting or observing network topology dynamics as neighbors appear, disappear, or change attributes.<br><br><b><b>exit</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exits the interactive <b>lldpctl</b> shell.</i> This command is only relevant when <b>lldpctl</b> is run without arguments, entering its interactive mode.<br><br>


title: DESCRIPTION
content:
The <b>lldpctl</b> command is a client utility used to interact with the <b>lldpd</b> daemon, which implements the Link Layer Discovery Protocol (LLDP). LLDP is a vendor-neutral Layer 2 protocol used by network devices to advertise their identity, capabilities, and other network-related information to directly connected neighbors on a local area network (LAN).<br><br><b>lldpctl</b> allows users to query detailed information about discovered LLDP neighbors, such as their system name, port ID, capabilities (e.g., router, switch, AP), VLAN assignments, and more. It also provides functionality to configure various aspects of the <b>lldpd</b> daemon, including system-wide parameters, interface-specific settings, and LLDP protocol timers. This command is invaluable for network administrators to quickly map out network topology, troubleshoot connectivity issues, and verify network configurations.


title: CAVEATS
content:
<b>lldpctl</b> acts as a client to the <b>lldpd</b> daemon; therefore, the daemon must be running for <b>lldpctl</b> to function. Many <b>configure</b> commands and certain information queries may require root privileges or appropriate permissions to execute successfully or to access sensitive network information.


title: INTERACTIVE MODE
content:
Running <b>lldpctl</b> without any arguments or commands will launch an interactive shell. This shell provides a command-line interface similar to network device CLI environments, allowing users to issue multiple commands consecutively without retyping <b>lldpctl</b> each time. Tab completion is often available in this mode, enhancing usability and reducing command-line errors.


title: SCRIPTING AND AUTOMATION
content:
The support for <b>json</b> and <b>xml</b> output formats makes <b>lldpctl</b> an excellent tool for scripting and automating network discovery tasks. Parsable output allows external programs to easily consume LLDP neighbor information for network inventory, monitoring, or configuration management systems, facilitating integration into larger network management solutions.


title: HISTORY
content:
The <b>lldpd</b> project, including the <b>lldpctl</b> utility, was initiated by Vincent Bernat around 2008. It was designed to be a robust, portable, and feature-rich LLDP daemon for Unix-like operating systems. Its development aimed to provide a comprehensive tool for network topology discovery and management, filling a gap for a reliable open-source LLDP implementation. Over the years, it has gained widespread adoption in various Linux distributions and embedded systems due to its reliability and rich feature set.


title: PARAMETERS
content:
<b><i>-help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print all available options and their descriptions.<br><br><b><i>-version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the <i>lli</i> version information.<br><br><b><i>-stats</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print statistics about the compilation and execution process.<br><br><b><i>-time-passes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Time the execution of individual optimization passes during JIT compilation.<br><br><b><i>-jit</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the use of the JIT compilation engine, even if an interpreter is available.<br><br><b><i>-force-interpreter</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the use of the interpreter engine, bypassing JIT compilation.<br><br><b><i>-load=&lt;plugin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dynamically load a plugin (shared library) into <i>lli</i> at startup.<br><br><b><i>-args</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;All subsequent arguments on the command line are passed directly to the interpreted program. Often used as <i>lli &lt;bitcode&gt; -args &lt;program_args&gt;</i>.<br><br><b><i>-entry-function=&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the entry function to execute in the bitcode file (default is <i>main</i>).<br><br><b><i>-disable-optimize</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable optimization passes during JIT compilation or execution.<br><br>


title: DESCRIPTION
content:
<i>lli</i> (the LLVM interpreter) is a command-line tool from the LLVM project designed to execute LLVM bitcode directly. It provides a crucial capability for testing and running programs compiled to LLVM Intermediate Representation (IR) without the need for a full ahead-of-time (AOT) compilation to native machine code. This makes <i>lli</i> invaluable during compiler development, for rapid prototyping, or for executing code on diverse architectures where native compilation toolchains might be incomplete or slow.<br><br><i>lli</i> supports multiple execution engines. By default, it often leverages a Just-In-Time (JIT) compiler to translate the bitcode into native machine code on the fly for better performance. Alternatively, it can be forced into an interpreter mode, which is generally slower but can be useful for debugging or when precise IR fidelity is required.<br><br>Users can feed <i>lli</i> an LLVM bitcode file (e.g., generated by <i>clang -emit-llvm -c</i> or <i>opt</i>), and it will execute the <i>main</i> function (or another specified entry point) within that bitcode. It also allows passing command-line arguments directly to the interpreted program. <i>lli</i> abstracts away the complexities of system calls and library loading, making it a powerful tool for developing and experimenting with LLVM-based languages and compilers.


title: CAVEATS
content:
<i>lli</i> is typically slower than natively compiled executables, especially in interpreter mode. It requires the LLVM runtime environment to be correctly configured. While <i>lli</i> aims for portability, linking external libraries or interacting with platform-specific system calls can introduce dependencies that might not be fully transparent. Debugging complex issues within <i>lli</i> can sometimes be challenging compared to native debuggers.


title: EXECUTION MODES
content:
<i>lli</i> supports both a pure interpretive mode and a Just-In-Time (JIT) compilation mode. The JIT mode compiles bitcode into native machine code on the fly for better performance, while the interpreter mode provides stricter fidelity to the LLVM IR, useful for debugging or when JIT compilation isn't feasible. The choice can often be controlled by flags like <i>-jit</i> or <i>-force-interpreter</i>.


title: PASSING PROGRAM ARGUMENTS
content:
To pass command-line arguments to the program being executed by <i>lli</i>, you should place them after the bitcode file name, often separated by <i>-args</i> or <i>--</i>. For example: <b>lli</b> <i>myprogram.bc</i> <i>-args</i> <i>arg1</i> <i>arg2</i> or <b>lli</b> <i>myprogram.bc</i> <i>--</i> <i>arg1</i> <i>arg2</i>. Everything after <i>-args</i> or <i>--</i> is treated as an argument for <i>myprogram.bc</i>, not <i>lli</i> itself.


title: HISTORY
content:
<i>lli</i> has been a fundamental component of the LLVM project since its inception at the University of Illinois at Urbana-Champaign in 2000. It was designed to provide a rapid execution environment for LLVM Intermediate Representation, enabling quicker testing and development cycles for language frontends and compiler optimizations. Its evolution has mirrored the development of LLVM itself, incorporating advanced JIT capabilities alongside its foundational interpreter mode, making it a stable and essential tool for the LLVM ecosystem.


title: SYNOPSIS
content:
<I>llm</I> [<I>OPTION</I>]... [<I>FILE</I>]... <br><br> (Internally often resolves to: <I>ls -l</I> [<I>OPTION</I>]... [<I>FILE</I>]... | <I>more</I>)


title: PARAMETERS
content:
<b><B>-a</B>, <B>--all</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ignore entries starting with '.' (hidden files).<br><br><b><B>-h</B>, <B>--human-readable</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;With <B>-l</B>, print sizes in human-readable format (e.g., 1K, 234M, 2G).<br><br><b><B>-r</B>, <B>--reverse</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverse order while sorting.<br><br><b><B>-t</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort by modification time, newest first.<br><br><b><B>-S</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort by file size, largest first.<br><br><b><B>-R</B>, <B>--recursive</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List subdirectories recursively.<br><br><b><B>-d</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List directories themselves, not their contents.<br><br><b><B>-i</B>, <B>--inode</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the index number (inode) of each file.<br><br><b><B>-F</B>, <B>--classify</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Append indicator (one of */=>@|) to entries.<br><br><b><B>--color</B>=<I>WHEN</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Colorize the output. <I>WHEN</I> can be 'auto', 'always', or 'never'. Often implicitly used in <I>llm</I> aliases.<br><br>


title: DESCRIPTION
content:
The command <I>llm</I> is not a standard Linux binary, but rather a widely adopted alias or shell function that typically executes the <I>ls</I> command with the <B>-l</B> (long format) option, often combined with a pager like <I>more</I> or <I>less</I> for large outputs. <br><br>The primary purpose of <I>llm</I> (via <I>ls -l</I>) is to provide a detailed listing of files and directories, showing permissions, number of hard links, owner, group, size, last modification time, and the filename itself. The addition of a pager makes it particularly useful for viewing contents of directories with many files, preventing the output from scrolling off the screen. <br><br>While the exact definition of <I>llm</I> can vary between users and distributions (e.g., it might also include <B>-a</B> for all files, or <B>--color=auto</B>), its core utility lies in presenting comprehensive file information in an easily digestible, paginated format.


title: CAVEATS
content:
<I>llm</I> is not a standard executable. Its behavior is entirely dependent on how it is defined as an alias or shell function in the user's shell configuration files (e.g., <I>~/.bashrc</I>, <I>~/.zshrc</I>). Therefore, its exact functionality and available options can vary across different systems and user setups. Users should check their shell configuration for the precise definition of <I>llm</I> if it's not behaving as expected.


title: OUTPUT COLUMNS
content:
When using <I>ls -l</I> (and thus <I>llm</I>), the output is typically displayed in several columns:<br>1. <B>Permissions</B>: File type and permissions (e.g., <I>-rwxr-xr-x</I>).<br>2. <B>Links</B>: Number of hard links to the file.<br>3. <B>Owner</B>: Username of the file's owner.<br>4. <B>Group</B>: Group name of the file's group.<br>5. <B>Size</B>: Size of the file in bytes (or human-readable format with <B>-h</B>).<br>6. <B>Modification Date</B>: Date and time of the last modification.<br>7. <B>Name</B>: The filename or directory name.


title: ALIAS CONFIGURATION
content:
To define the <I>llm</I> alias, you would typically add a line like the following to your shell's configuration file (e.g., <I>~/.bashrc</I> for Bash, <I>~/.zshrc</I> for Zsh):<br><B>alias llm='ls -l --color=auto | more'</B><br>After adding or modifying the alias, you need to either restart your shell or source the configuration file (e.g., <B>source ~/.bashrc</B>) for the changes to take effect.


title: HISTORY
content:
The <I>ls</I> command itself is one of the oldest and most fundamental utilities in Unix-like operating systems, dating back to the earliest versions of Unix. The <B>-l</B> (long format) option has been a standard part of <I>ls</I> for decades, providing detailed file information. <br><br>The emergence of aliases like <I>ll</I> (for <I>ls -l</I>) and <I>la</I> (for <I>ls -la</I>) became popular as a convenience for users to quickly access these frequently used options. The <I>llm</I> alias is a natural extension of this trend, adding a pager to the <I>ls -l</I> output to handle large directories more effectively, reflecting a common user need for better output management in interactive shell sessions.


title: PARAMETERS
content:
<b>DIRECTORY...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more directories to be listed. If no directory is specified, the current directory is listed.<br><br><b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ignore entries starting with '.' (hidden files/directories). While less directly impactful for a single directory listing with -d, it's a common `ls` option.<br><br><b>-h, --human-readable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;With -l, print sizes in human readable format (e.g., 1K, 234M, 2G).<br><br><b>-r, --reverse</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reverse order while sorting the listed directories.<br><br><b>-S, --size</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort the directories by size, largest first.<br><br><b>-t, --time</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sort the directories by modification time, newest first.<br><br><b>--full-time</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List full modification time with a more precise timestamp than the default -l output.<br><br><b>--color={always,auto,never}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Colorize the output; 'auto' is typically the default when output is to a terminal.<br><br>


title: DESCRIPTION
content:
The <b>llvd</b> command is <I>not</I> a standard Linux utility found in most distributions. It is almost exclusively encountered as a custom shell alias, commonly configured to execute `ls -lvd`. In this context, <b>llvd</b> provides a detailed long listing of specified <I>directory entries themselves</I>, rather than their contents. The `-l` option ensures a comprehensive output including file permissions, number of links, owner, group, size, and last modification time.<br><br>The `-d` option is crucial, as it instructs the underlying `ls` command to list the directory itself as a file, instead of recursively listing its contents. Furthermore, the `-v` option applies natural <I>version sorting</I> to the listed directory names. This is particularly useful when dealing with directories named with numerical sequences (e.g., `project_v1`, `project_v10`, `project_v2` would be sorted correctly). This combination allows for a quick and intelligently sorted overview of directory metadata.


title: CAVEATS
content:
The <b>llvd</b> command is <I>not</I> a standard Linux command or a pre-installed utility. Its functionality is entirely dependent on whether it has been defined as a custom shell alias by the user or system administrator. Most commonly, it's an alias for `ls -lvd`. If not aliased, attempting to execute `llvd` will result in a 'command not found' error. Users should check their shell configuration files (e.g., `~/.bashrc`, `~/.zshrc`) to verify its definition.


title: CUSTOM ALIASES
content:
Users frequently create custom aliases in their shell configuration files (e.g., `~/.bashrc`, `~/.zshrc`) to simplify frequently used or complex commands. The `llvd` command is a prime example of such a custom alias. To define it, one would typically add a line like `alias llvd='ls -lvd'` to their shell startup file. After saving the file, the shell session needs to be reloaded (e.g., by running `source ~/.bashrc` or opening a new terminal) for the alias to take effect.


title: HISTORY
content:
As <b>llvd</b> is not a standard, standalone utility, it does not possess an official development history, versioning, or feature roadmap. Its 'usage history' is primarily tied to shell customization and user convenience. The `ll` alias for `ls -l` is widely adopted across Unix-like systems. The addition of `v` (version sort) and `d` (list directory entry) extends this common pattern, making `llvd` a specific, user-defined shortcut for a particular `ls` invocation, rather than a formally developed command.


title: PARAMETERS
content:
<b><b>d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete members from the archive. If no <i>member</i> is specified, nothing is deleted.<br><br><b><b>m</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Move members within the archive. Used with <b>a</b>, <b>b</b>, or <b>i</b> to specify placement relative to an existing member.<br><br><b><b>p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the contents of the specified members to standard output. If no <i>member</i> is given, all members are printed.<br><br><b><b>q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quick append. Appends members to the end of the archive without checking for duplicates. This is faster than <b>r</b> but less robust.<br><br><b><b>r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replace or add members to the archive. If a member with the same name already exists, it is replaced; otherwise, it is added. Often used with <b>u</b>.<br><br><b><b>s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write an object file index (symbol table) into the archive. This is typically done by default for new or modified archives.<br><br><b><b>t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a table of contents of the archive. Lists the names of the members. Often used with <b>v</b> for more detail.<br><br><b><b>x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extract members from the archive. If no <i>member</i> is specified, all members are extracted.<br><br><b><b>a</b> <<i>posname</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Place new members after the existing member named <i>posname</i> when using <b>r</b> or <b>m</b>.<br><br><b><b>b</b> <<i>posname</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Place new members before the existing member named <i>posname</i> when using <b>r</b> or <b>m</b>. (Same as <b>i</b>).<br><br><b><b>c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create the archive if it does not exist, without issuing a warning. Usually implied by operations like <b>r</b> or <b>q</b>.<br><br><b><b>i</b> <<i>posname</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synonym for <b>b</b>. Place new members before the existing member named <i>posname</i>.<br><br><b><b>N</b> <<i>count</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the first <i>count</i> files with the specified name. Useful when duplicate names exist in the archive.<br><br><b><b>P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the full pathnames when matching entries in the archive. By default, only base names are used.<br><br><b><b>S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not write an object file index (symbol table) into the archive. This can save space but might impact linker performance.<br><br><b><b>T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a 'thin' archive. A thin archive contains only references to the member files, not their actual contents. Original files must remain accessible.<br><br><b><b>u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update only. When used with <b>r</b>, only replace members if their modification date is newer than the corresponding member in the archive.<br><br><b><b>v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose mode. Display a more detailed output for the given operation, such as file sizes and modification times.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a summary of command-line options and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<b>llvm-ar</b> is a command-line utility from the LLVM project used to create, modify, and extract from archives (static libraries). It provides functionality very similar to the standard <b>ar</b> command found on Unix-like systems, but with native support for LLVM bitcode files in addition to traditional native object files. This makes it an integral part of the LLVM toolchain, enabling the construction of static libraries from code compiled with <b>clang</b> or other LLVM frontends, including those containing intermediate LLVM bitcode.<br><br>It's especially valuable in cross-compilation scenarios or when building projects that require a pure LLVM-based build environment. <b>llvm-ar</b> ensures consistent archive management across different platforms and architectures supported by LLVM, providing a robust tool for linking and packaging compiled code.


title: CAVEATS
content:
While <b>llvm-ar</b> aims to be a compatible drop-in replacement for GNU <b>ar</b>, minor behavioral differences or unsupported GNU extensions might exist. Its primary advantage is native support for LLVM bitcode, which traditional <b>ar</b> utilities do not handle.<br><br>Thin archives (created with <b>-T</b>) are powerful for reducing build times and archive sizes, but they introduce a dependency: the original member files must persist and be accessible at their original paths relative to the archive for linking to succeed. Moving a thin archive without its referenced files will break it.


title: ROLE IN BUILD SYSTEMS
content:
<b>llvm-ar</b> is commonly integrated into modern build systems such as Make, CMake, Ninja, and Bazel. These systems invoke <b>llvm-ar</b> to assemble compiled object files (<i>.o</i>) and bitcode files (<i>.bc</i>) into static libraries (<i>.a</i> files). Its seamless operation with <b>clang</b> and <b>lld</b> simplifies toolchain configuration, ensuring that projects compiled with LLVM can utilize standard build practices without requiring a mixed GNU/LLVM toolset. This integration is crucial for maintaining efficient and reproducible build processes, especially in continuous integration environments.


title: HISTORY
content:
<b>llvm-ar</b> is an integral part of the LLVM project, which was started at the University of Illinois in 2000. Its development was driven by the need for a modern, modular, and reusable compiler infrastructure. As part of this vision, <b>llvm-ar</b> was created to provide a complete, self-contained toolchain that could handle both traditional object files and LLVM's intermediate representation (bitcode). This allows for a consistent build experience across various platforms and architectures, making it a cornerstone for cross-compilation and advanced compiler research.


title: PARAMETERS
content:
<b><B>-o</B> <I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output bitcode filename. If omitted, <I>llvm-as</I> writes to standard output.<br><br><b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a summary of command-line options.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version of <I>llvm-as</I>.<br><br><b><B>--disable-verify</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the LLVM IR verifier. By default, <I>llvm-as</I> verifies the IR for correctness after parsing, which can be computationally intensive for very large files.<br><br><b><B>--debug-pass-manager</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug output for the pass manager, useful for understanding optimization passes. (Less common for <I>llvm-as</I> itself, but a general LLVM option).<br><br><b><B>--mcpu=</B><I>cpu</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target CPU to generate code for. (More relevant for <I>llc</I> but can be passed through to underlying LLVM components).<br><br><b><B>--mtriple=</B><I>triple</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target triple (e.g., <I>x86_64-unknown-linux-gnu</I>). This defines the architecture, vendor, OS, and ABI.<br><br>


title: DESCRIPTION
content:
<I>llvm-as</I> is the LLVM assembler, a crucial component of the LLVM compilation toolchain. Its primary function is to translate human-readable LLVM assembly language code (files typically ending with <I>.ll</I>) into LLVM bitcode (files typically ending with <I>.bc</I>). LLVM bitcode is a compact, binary representation of LLVM Intermediate Representation (IR), which is suitable for further processing by other LLVM tools like optimizers (<I>opt</I>) or code generators (<I>llc</I>). This command is essential when developers or compilers generate LLVM IR in text form and need to convert it into the binary bitcode format for efficiency or compatibility with subsequent compilation steps. It acts as the inverse of <I>llvm-dis</I>, which disassembles bitcode back into human-readable assembly.


title: CAVEATS
content:
<I>llvm-as</I> strictly expects valid LLVM IR text as input; it is not a general-purpose assembler for native machine code. Errors in the input LLVM IR will generally result in parsing or verification failures. The output bitcode's compatibility may depend on the LLVM version it was generated with, as the LLVM IR format evolves over time.


title: INPUT AND OUTPUT
content:
<I>llvm-as</I> typically takes a file with a <I>.ll</I> extension as input, which contains LLVM assembly language. The output is a binary file with a <I>.bc</I> extension, representing LLVM bitcode. If no output file is specified with <B>-o</B>, the bitcode is written to standard output, which can then be piped to another LLVM tool.


title: ROLE IN THE LLVM TOOLCHAIN
content:
In a typical compilation flow, source code (e.g., C/C++) is compiled by a front-end (like <I>clang</I>) into LLVM IR. This IR can be either directly in bitcode format or, in some cases, emitted as textual LLVM assembly. <I>llvm-as</I> is used to convert this textual assembly into bitcode, allowing it to be processed by optimizers (<I>opt</I>), linked with other bitcode modules (<I>llvm-link</I>), and finally compiled into machine code by the LLVM backend (<I>llc</I>).


title: HISTORY
content:
<I>llvm-as</I> has been an integral part of the LLVM project since its early days. It was developed as a necessary utility to bridge the gap between human-readable LLVM IR (often generated by front-ends like <I>clang</I> in assembly form for debugging or specific transformations) and the more compact, efficient binary bitcode format required for subsequent compilation stages. Its continuous development mirrors the evolution of the LLVM IR itself, ensuring compatibility with the latest features and optimizations of the LLVM ecosystem.


title: PARAMETERS
content:
<b><i>&lt;input bitcode file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the LLVM bitcode file (.bc) to be analyzed.<br><br><b><b>-help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of command-line options.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of llvm-bcanalyzer.<br><br><b><b>-analyze</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Analyzes the bitcode file and prints statistical information about its structure and content. This is often the default mode of operation.<br><br><b><b>-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the raw bitcode records and their values in a verbose, human-readable format. Useful for deep inspection.<br><br><b><b>-disable-verify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables bitcode verification. Useful when trying to analyze a malformed or incomplete bitcode file that would otherwise cause a verification error.<br><br><b><b>-disable-block-info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables parsing of block info records. Can speed up processing of very large bitcode files if only block-level statistics are needed.<br><br><b><b>-show-binary-blobs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When dumping, shows the raw binary contents of data blobs within the bitcode records.<br><br>


title: DESCRIPTION
content:
<i>llvm-bcanalyzer</i> is a command-line utility within the LLVM project designed for analyzing the structure and content of LLVM bitcode files. It provides a detailed, human-readable summary of a bitcode file, which is the intermediate representation (IR) used by LLVM compilers.<br><br>This tool is invaluable for developers, researchers, and anyone working with the LLVM toolchain who needs to understand the internal layout of bitcode. It can help debug issues with bitcode generation, verify the correctness of bitcode, or simply explore how different language constructs are represented in LLVM IR.<br><br>The analyzer provides information such as the total size of the bitcode file, the size of various blocks (e.g., module, function, constants), the number and types of records within those blocks, and other statistical data. It can also be used to dump the raw bitcode records for low-level inspection. Its output helps in identifying large sections, unoptimized parts, or potentially malformed bitcode structures.


title: CAVEATS
content:
The LLVM bitcode format can evolve between LLVM versions. An <i>llvm-bcanalyzer</i> from an older LLVM release might not fully understand bitcode generated by a newer compiler, and vice versa. While it attempts to be forward-compatible, certain features or record types might not be correctly interpreted.<br><br>This tool is primarily for diagnostic and informational purposes; it does not modify the bitcode file. Its output can be very verbose, especially when using the <b>-dump</b> option on large files.


title: TYPICAL USAGE
content:
A common use case is simply running <i>llvm-bcanalyzer mymodule.bc</i> to get a high-level overview. For more detailed inspection of specific blocks or records, <i>llvm-bcanalyzer -dump mymodule.bc</i> is used. If a bitcode file is suspected to be corrupted or malformed, <i>llvm-bcanalyzer -disable-verify -dump mymodule.bc</i> can help extract as much information as possible without crashing due to verification errors.


title: OUTPUT DETAILS
content:
The output typically begins with a summary of the bitcode file, including its total size. It then lists information about various top-level blocks like <i>MODULE_BLOCK</i>, <i>FUNCTION_BLOCK</i>, and <i>CONSTANTS_BLOCK</i>. For each block, it provides its size, the number of records it contains, and often a breakdown of common records within that block. The <b>-dump</b> option provides an extremely granular view, showing each record ID, its contents, and the raw byte size, making it suitable for bitcode format specification debugging.


title: HISTORY
content:
<i>llvm-bcanalyzer</i> is an integral part of the LLVM compiler infrastructure, which was originally developed at the University of Illinois Urbana-Champaign. Its development has closely paralleled the evolution of the LLVM bitcode format itself, serving as a crucial tool for debugging and understanding the intermediate representation used by LLVM-based compilers and tools.<br><br>From its early days, its purpose has remained consistent: to provide deep insight into the structure of LLVM bitcode files, aiding in the development, optimization, and verification of LLVM components and generated code.


title: SYNOPSIS
content:
<b>llvm-cat</b> [<i>options</i>] <i>&lt;input_bitcode_file...&gt;</i> [-o <i>&lt;output_bitcode_file&gt;</i>]


title: PARAMETERS
content:
<b>-o <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output bitcode file. If omitted, output would conceptually go to standard output.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-v, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
The <b>llvm-cat</b> command, while conceptually similar to the standard <b>cat</b> utility, is designed for operations on LLVM bitcode files. LLVM bitcode is a low-level, platform-independent binary representation of code generated by LLVM compilers, serving as the intermediate representation (IR) within the LLVM compilation pipeline. Conceptually, <b>llvm-cat</b> would aim to concatenate multiple bitcode files into a single output bitcode file.<br><br>However, unlike plain text files, LLVM bitcode files represent structured modules containing functions, global variables, types, and other definitions. Simple byte-level concatenation of two arbitrary bitcode modules is generally <i>incorrect</i> and will likely result in an invalid or malformed combined module. This is because bitcode modules often have conflicting definitions (e.g., multiple <i>main</i> functions, duplicate global variables or types) that require careful resolution during merging.<br><br>For this reason, <b>llvm-cat</b> is <i>not</i> a standard or commonly available tool in modern LLVM distributions. Its functionality for merging LLVM bitcode modules has been comprehensively superseded by the <b>llvm-link</b> utility. <b>llvm-link</b> performs a semantic merge, handling symbol resolution, type merging, and global variable initialization, ensuring that the resulting combined bitcode module is valid and semantically correct. Therefore, while <b>llvm-cat</b> conceptually describes a concatenation operation, <b>llvm-link</b> is the practically used and robust command for combining LLVM bitcode.


title: CAVEATS
content:
The <b>llvm-cat</b> command is <i>not</i> a standard or widely distributed tool in modern LLVM installations. Its direct byte-level concatenation approach is typically insufficient for correctly merging LLVM bitcode modules due to the complex internal structure and interdependencies of bitcode. Users should almost always prefer <b>llvm-link</b> for combining LLVM modules.


title: DISTINCTION FROM LLVM-LINK
content:
The fundamental difference lies in their approach: <b>llvm-cat</b> (conceptually) performs a simple byte-for-byte concatenation, akin to appending one file's content to another. This is fine for plain text or unstructured binary data. In contrast, <b>llvm-link</b> understands the internal structure of LLVM bitcode modules. It performs a semantic merge, resolving duplicate definitions, linking cross-module references, and ensuring the resulting bitcode is a valid, single compilation unit. This distinction is crucial for maintaining the integrity and correctness of LLVM IR.


title: HISTORY
content:
<b>llvm-cat</b> was likely an early or experimental tool within the LLVM project's development. Given the semantic complexities of combining LLVM bitcode modules (which are structured binary programs, not raw byte streams), it was quickly superseded by <b>llvm-link</b>, a more sophisticated tool designed to perform a proper, semantically-aware merge of bitcode modules. Its existence highlights the distinct challenges of working with intermediate representations compared to plain text files.


title: PARAMETERS
content:
<b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the LLVM version string (e.g., 17.0.6).<br><br><b><b>--prefix</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the installation prefix path where LLVM is installed (e.g., /usr/local/llvm).<br><br><b><b>--src-root</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the LLVM source root path used during compilation, if available.<br><br><b><b>--bindir</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the directory where LLVM executables (like <i>clang</i>, <i>opt</i>) are installed.<br><br><b><b>--includedir</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the directory containing LLVM C/C++ header files needed for compilation.<br><br><b><b>--libdir</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the directory containing LLVM object code libraries.<br><br><b><b>--cflags</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints C compiler flags (e.g., include paths, defines) required to compile against LLVM libraries.<br><br><b><b>--cxxflags</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints C++ compiler flags (e.g., include paths, defines) required to compile against LLVM libraries.<br><br><b><b>--ldflags</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints linker flags (e.g., library search paths, rpath) needed to link against LLVM libraries.<br><br><b><b>--libs</b> <i>[component ...]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the libraries (e.g., -lLLVMCore -lLLVMIRReader) needed to link against specified LLVM components. If no components are specified, it typically provides all core libraries.<br><br><b><b>--libnames</b> <i>[component ...]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the library names (e.g., LLVMCore LLVMIRReader) without paths or linker flags. Useful for listing components.<br><br><b><b>--system-libs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints system libraries (e.g., -lz, -lrt) that LLVM depends on for its operation.<br><br><b><b>--components</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a space-separated list of all available LLVM components (e.g., IRReader, Analysis, PassManager, TransformUtils).<br><br><b><b>--targets</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a space-separated list of all available LLVM targets (e.g., X86, AArch64, WebAssembly) compiled into this LLVM installation.<br><br><b><b>--build-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the build mode of the LLVM installation (e.g., Debug, Release, RelWithDebInfo).<br><br><b><b>--assertion-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints whether LLVM was built with assertions enabled (e.g., Assertions, NoAssertions).<br><br><b><b>--shared-mode</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates whether LLVM was built as shared or static libraries (e.g., shared, static).<br><br><b><b>--host-target</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the host triple (e.g., x86_64-unknown-linux-gnu) for which LLVM was built.<br><br><b><b>--build-target</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the target triple used during the LLVM build process, often the same as <b>--host-target</b>.<br><br><b><b>--link-shared-libs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>--libs</b> to ensure that shared libraries are linked, if LLVM was built with shared libraries.<br><br><b><b>--native-debug-libs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates if native debug libraries were included in the LLVM build (e.g., for profiling).<br><br>


title: DESCRIPTION
content:
<i>llvm-config</i> is a versatile utility script or executable provided with an LLVM installation. Its primary function is to output various configuration parameters, build information, and paths crucial for interacting with LLVM libraries and tools.<br><br>This command is invaluable for build systems like Makefiles or CMake, which need to compile and link applications against LLVM. Instead of hardcoding paths or configuration flags, developers can use <i>llvm-config</i> to dynamically retrieve correct values for CFLAGS, LDFLAGS, library paths, and component lists. This ensures compatibility across different LLVM installations and build environments, simplifying the process of integrating LLVM into larger projects by providing a standardized interface for LLVM's build settings.


title: CAVEATS
content:
The exact output and available options for <i>llvm-config</i> can vary slightly between different LLVM versions. Users must ensure they are invoking the <i>llvm-config</i> associated with the correct LLVM installation, especially if multiple versions are present on the system (e.g., via the PATH environment variable). It is primarily used for configuring build systems to link against LLVM core libraries, rather than for invoking LLVM tools directly.


title: TYPICAL USAGE
content:
<i>llvm-config</i> is frequently used within Makefiles or shell scripts to dynamically set compiler and linker flags for applications that use LLVM. For example, a common usage pattern is:<br><code>$(CXX) main.cpp <b>`llvm-config --cxxflags --ldflags --libs core --libs irreader`</b> -o my_llvm_tool</code><br>This command compiles <i>main.cpp</i> and links it against the LLVM core and IRReader libraries, using the correct flags provided by <i>llvm-config</i>.


title: PURPOSE FOR DEVELOPERS
content:
For developers, <i>llvm-config</i> significantly simplifies the process of building tools and applications that integrate with LLVM. It abstracts away the specifics of LLVM's complex build system and installation paths, allowing developers to focus on their code rather than on environment configuration. This promotes portability and maintainability of LLVM-dependent projects across different systems and LLVM versions.


title: HISTORY
content:
<i>llvm-config</i> has been a fundamental part of the LLVM project since its early days, serving as the canonical way for external projects to discover and utilize LLVM's build settings and libraries. Its design is similar to <i>pkg-config</i>, providing a standardized interface for configuration data. It has continuously evolved with LLVM releases, adding new options as the project's complexity and modularity increased, ensuring a dynamic and standardized configuration interface.


title: PARAMETERS
content:
<b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile or assemble the source files, but do not link. Generates object files (.o).<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile only; do not assemble or link. Generates assembly files (.s).<br><br><b><b>-E</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preprocess only; do not compile, assemble, or link. Outputs preprocessed source code.<br><br><b><b>-o</b> <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Place the output into the specified <<i>file</i>> (e.g., executable, object file).<br><br><b><b>-I</b><<i>dir</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the specified <<i>dir</i>> to the list of directories to search for include files.<br><br><b><b>-L</b><<i>dir</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the specified <<i>dir</i>> to the list of directories to search for libraries.<br><br><b><b>-l</b><<i>lib</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Link with the specified library <<i>lib</i>> (e.g., <b>-lm</b> for math library).<br><br><b><b>-Wall</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable all common compiler warning messages.<br><br><b><b>-Wextra</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable additional compiler warning messages not covered by <b>-Wall</b>.<br><br><b><b>-O</b><<i>level</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the optimization level (e.g., <b>-O0</b> for no optimization, <b>-O1</b>, <b>-O2</b>, <b>-O3</b> for increasing optimization, <b>-Os</b> for size, <b>-Oz</b> for smallest size).<br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce debugging information suitable for use with debuggers like GDB or LLDB.<br><br><b><b>-std=</b><<i>c++std</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the C++ standard to use (e.g., <b>c++11</b>, <b>c++17</b>, <b>c++20</b>).<br><br><b><b>-pthread</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Link with the POSIX threads library. Required for multithreaded applications.<br><br>


title: DESCRIPTION
content:
<i>llvm-g++</i> is typically a wrapper script or symbolic link designed to invoke a C++ compiler (often <i>g++</i> or <i>clang++</i>) while ensuring that the underlying LLVM toolchain components are utilized for optimization, code generation, or specific build environments.<br><br>It serves as a bridge, allowing existing build systems configured for <i>g++</i> to leverage LLVM's advanced compilation capabilities. Unlike <i>g++</i> (which is part of the GNU Compiler Collection) or <i>clang++</i> (the native C++ frontend for LLVM), <i>llvm-g++</i> itself is not a distinct compiler but rather a convenience command. In modern development, <i>clang++</i> is the direct and preferred command for compiling C++ with LLVM. <i>llvm-g++</i> might be encountered in legacy build systems or specific distributions aiming to integrate LLVM more seamlessly into a GCC-like command structure.


title: CAVEATS
content:
<i>llvm-g++</i> is not a standardized command across all Linux distributions or LLVM installations. Its exact behavior depends on how it's configured; it might be an alias for <i>clang++</i>, or a wrapper for a <i>g++</i> instance specifically configured to use LLVM components. The primary and recommended C++ compiler for the LLVM ecosystem is <i>clang++</i>. Relying on <i>llvm-g++</i> might lead to portability issues across different build environments.


title: LLVM TOOLCHAIN INTEGRATION
content:
LLVM (Low Level Virtual Machine) is a collection of modular and reusable compiler and toolchain technologies. Compilers like <i>clang++</i> (and by extension, <i>llvm-g++</i> when it acts as a wrapper) leverage various LLVM components: a frontend parses the source code into an LLVM Intermediate Representation (IR), which then undergoes optimization passes by the LLVM optimizer (<i>opt</i>), and finally, code generation for the target architecture by the LLVM backend (<i>llc</i>). This modular design allows for powerful cross-platform optimization and code generation capabilities.


title: HISTORY
content:
The concept of <i>llvm-g++</i> emerged in the early days of LLVM's development as an attempt to make LLVM's powerful backend and optimizer available through a familiar <i>g++</i> interface. Before <i>clang</i> (LLVM's native frontend for C, C++, Objective-C) matured, developers often experimented with using <i>g++</i> as the frontend but leveraging LLVM's <i>llc</i> (LLVM static compiler) and <i>opt</i> (LLVM optimizer) for the backend processing.<br><br><i>llvm-g++</i> could have been a wrapper for such a setup or an alias to a <i>g++</i> build configured to use LLVM's Link-Time Optimization (LTO) capabilities via LLVM's linker plugins. With the significant evolution and adoption of <i>clang</i> and <i>clang++</i> as full-fledged, high-performance LLVM frontends, the need for an <i>llvm-g++</i> wrapper has largely diminished, making <i>clang++</i> the primary command for LLVM-based C++ compilation today.


title: PARAMETERS
content:
<b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile or assemble the source files, but do not link. The output will be LLVM bitcode object files (.o or .bc).<br><br><b><b>-S</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compile or assemble the source files, but do not assemble or link. The output will be LLVM assembly files (.ll).<br><br><b><b>-o</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Place the output into <i>file</i>.<br><br><b><b>-g</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce debugging information in the operating system's native format (e.g., DWARF).<br><br><b><b>-O</b><i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optimize the output. <i>level</i> can be 0 (no optimization), 1, 2, 3, or s (optimize for size) for increasing optimization levels.<br><br><b><b>-Wall</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable all common warning messages.<br><br><b><b>-I</b><i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the directory <i>dir</i> to the list of directories to be searched for header files.<br><br><b><b>-L</b><i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the directory <i>dir</i> to the list of directories to be searched for libraries.<br><br><b><b>-l</b><i>lib</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Link with the library <i>lib</i>.<br><br><b>Notes:</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>llvm-gcc</b> supports most of the standard <b>GCC</b> compilation and linking options, interpreting them to generate or process LLVM IR.<br><br>


title: DESCRIPTION
content:
The <b>llvm-gcc</b> command was a special version of the GNU Compiler Collection (GCC) designed to produce LLVM Intermediate Representation (IR) bytecode instead of native machine code or traditional assembly language. It served as a crucial bridge during the early development of the LLVM project, enabling developers to compile existing C, C++, and other GCC-supported languages into a form that could be processed by LLVM's optimizers and back-ends.<br><br>Unlike <b>Clang</b>, which is a native front-end built specifically for LLVM, <b>llvm-gcc</b> operated by integrating LLVM as a backend into the GCC compilation pipeline. This allowed it to leverage GCC's mature front-ends (parsers, semantic analyzers for C, C++, etc.) while outsourcing the code generation phase to LLVM. The output could be LLVM bitcode (.bc files), LLVM assembly (.ll files), or even directly linked and executed using LLVM's Just-In-Time (JIT) compilation capabilities.<br><br>Its primary purpose was to provide a familiar GCC interface for users wanting to experiment with or migrate to the LLVM toolchain before Clang became a stable and feature-rich alternative. It was a vital component for bootstrapping the LLVM ecosystem and proving its capabilities with real-world codebases.


title: CAVEATS
content:
<b>llvm-gcc</b> is largely <b>deprecated</b> and no longer actively maintained by the LLVM project or GNU. Its functionality has been superseded by <b>Clang</b>, which is the preferred and native front-end for LLVM, offering better performance, modern language feature support, and tighter integration with the LLVM infrastructure. Users are strongly advised to use <b>Clang</b> for new development and migration of existing projects to LLVM.


