# CommandSection

title: DESCRIPTION
content:
<b>dmsetup</b> is a low-level utility designed for direct interaction with the Linux <b>device-mapper</b> kernel driver.<br>It enables users to create, remove, and manage virtual block devices, commonly referred to as "<I>device-mapper devices</I>" or "<I>DM devices</I>". These virtual devices translate I/O requests from a logical device to one or more underlying physical storage devices based on a defined "<I>mapping table</I>".<br>This sophisticated mechanism forms the backbone of numerous critical Linux storage technologies, including <b>LVM</b> (Logical Volume Manager) for flexible volume management, <b>LUKS</b> (Linux Unified Key Setup) for disk encryption, and <b>multipath</b> for I/O path redundancy.<br>While most users interact with higher-level tools (like <b>lvcreate</b> or <b>cryptsetup</b>) that abstract its complexity, <b>dmsetup</b> remains the fundamental utility for advanced diagnostics, debugging, and manual configuration of device-mapper constructs. It provides capabilities to inspect mapping tables, monitor device status, suspend/resume I/O, and send messages to device-mapper targets.


title: CAVEATS
content:
<b>dmsetup</b> is a powerful, low-level tool that interacts directly with the Linux kernel's device-mapper subsystem. <br>Misuse of <b>dmsetup</b> commands, particularly those that modify device states or mapping tables, carries a significant risk of data loss, filesystem corruption, or system instability. <br>It requires root privileges to operate. <br>In most common use cases, higher-level management tools such as <b>LVM</b> (Logical Volume Manager) or <b>cryptsetup</b> are strongly recommended for managing device-mapper devices, as they provide safer abstractions and handle underlying complexities more robustly.


title: COMMON COMMANDS
content:
The <b>dmsetup</b> utility supports a wide array of subcommands, each designed for a specific action on device-mapper devices. Essential subcommands include: <b>create</b> (to establish a new device-mapper device), <b>remove</b> (to destroy an existing device), <b>info</b> (to display general device information), <b>table</b> (to show the current mapping table of a device), <b>status</b> (to display I/O statistics and target-specific status), <b>suspend</b> (to temporarily halt I/O to a device), <b>resume</b> (to restart I/O), <b>reload</b> (to update a device's table without suspending I/O), and <b>message</b> (to send a control message to a device-mapper target). A solid understanding of these subcommands is critical for effective <b>dmsetup</b> usage, especially during advanced configuration or debugging.


title: MAPPING TABLES
content:
At the core of every device-mapper device's functionality is its 'mapping table'. This table is a list of entries that define how logical blocks on the virtual device are translated and mapped to physical blocks on one or more underlying storage devices. Each entry in the table specifies a segment of the virtual device and how it corresponds to physical storage.<br>A typical table entry follows the format: `start_sector num_sectors target_type target_arguments`.<br>The `target_type` designates the kind of transformation or functionality for that specific segment (e.g., `linear` for a direct 1:1 mapping, `stripe` for RAID 0 functionality, `crypt` for encryption, `zero` for a block of zeros, `error` to simulate I/O errors). The `target_arguments` provide specific parameters relevant to the chosen target type, such as the path to the underlying physical device, its offset, or encryption keys.


title: HISTORY
content:
The <b>device-mapper</b> subsystem was integrated into the Linux kernel beginning with version 2.4.10 (around 2001), establishing a flexible and extensible framework for virtual block devices.<br><b>dmsetup</b> was subsequently developed as the primary user-space utility to control and interact with this kernel module. Its introduction revolutionized Linux's storage capabilities, enabling the robust implementation of advanced features like <b>LVM2</b> (which superseded the `md/block` basis of LVM1), kernel-level disk encryption (via <b>LUKS</b>), and multi-path I/O. Since then, it has solidified its position as a foundational component of storage management across virtually all modern Linux distributions.


title: SYNOPSIS
content:
<i>dnstop</i> [<b>-i</b> <i>interface</i> | <b>-f</b> <i>pcap_file</i>] [<b>-l</b> <i>num</i>] [<b>-p</b>] [<b>-v</b>] [<b>-h</b>]


title: PARAMETERS
content:
<b><b>-i</b> <i>interface</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the network interface from which to capture live DNS traffic. This is typically an Ethernet interface like <i>eth0</i> or <i>enpXsX</i>.<br><br><b><b>-f</b> <i>pcap_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads DNS packets from a pre-recorded <i>pcap</i> file instead of capturing live traffic. Useful for offline analysis.<br><br><b><b>-l</b> <i>num</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of entries (e.g., top talkers or queried domains) to display in the interactive interface. Defaults to 10.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the specified interface from being put into promiscuous mode. Only captures traffic destined for or from the local machine.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of <i>dnstop</i> and exits.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message and exits, outlining basic usage and options.<br><br>


title: DESCRIPTION
content:
<i>dnstop</i> is a powerful command-line tool designed for real-time monitoring and analysis of DNS (Domain Name System) traffic. It operates by passively sniffing network packets on a specified interface or reading from a <i>pcap</i> file, leveraging the <i>libpcap</i> library. The utility presents DNS query and response statistics in a highly interactive, <i>curses</i>-based interface, reminiscent of the <i>top(1)</i> command. Users can observe various metrics including source and destination IP addresses, queried domain names, DNS query types (e.g., A, AAAA, MX), response codes (e.g., NOERROR, NXDOMAIN), and the volume of bytes transferred.<br><br>This tool is invaluable for system administrators and network engineers for diagnosing DNS-related performance issues, identifying unusual or suspicious DNS traffic patterns, detecting potential DNS amplification attacks, and generally gaining insights into the DNS activity on a network. Its interactive nature allows for sorting data by different criteria, making it easier to pinpoint high-volume queriers or specific types of DNS queries.


title: CAVEATS
content:
<b>dnstop</b> requires root privileges or appropriate capabilities (e.g., <i>CAP_NET_RAW</i>, <i>CAP_NET_ADMIN</i>) to capture live network traffic.<br>It relies on the <i>libpcap</i> library for packet capture, which must be installed on the system.<br>The tool does not perform reverse DNS lookups; all IP addresses are displayed numerically. On very high-traffic DNS servers, <b>dnstop</b> can consume significant CPU and memory resources.<br>Its effectiveness can be limited by the kernel's packet buffer size, potentially leading to dropped packets under heavy load. Primarily designed for IPv4 DNS traffic, though some installations might have limited IPv6 support.


title: INTERACTIVE CONTROLS
content:
Once <b>dnstop</b> is running, the interactive interface provides several key controls:<br><i>'s'</i>: Sorts the displayed data by different columns (e.g., queries, bytes). Repeated presses cycle through sorting options.<br><i>'q'</i>: Quits the <b>dnstop</b> application.<br><i>'h'</i>: Displays an in-application help screen with a list of available commands and their descriptions.


title: TYPICAL USE CASES
content:
<b>dnstop</b> is frequently used for:<br>• <b>Performance Monitoring</b>: Identifying which clients or domains are generating the most DNS queries.<br>• <b>Security Analysis</b>: Detecting unusual query patterns that might indicate malware activity, DNS tunneling, or amplification attacks.<br>• <b>Troubleshooting</b>: Pinpointing DNS resolution issues by observing response codes (e.g., a high number of <i>NXDOMAIN</i> responses for legitimate queries).


title: HISTORY
content:
<b>dnstop</b> was originally developed by Steve Filipiak, providing a much-needed real-time monitoring solution for DNS traffic. Its design borrowed heavily from the user interface paradigm established by <i>top(1)</i>, making it intuitive for Unix-like system administrators. It quickly became a standard tool for diagnosing DNS server issues, especially in environments where BIND or other DNS services were critical. While its core functionality has remained consistent, maintenance and updates have continued over time, ensuring its relevance in modern network analysis workflows.


title: PARAMETERS
content:
<b>--username, -u <I>USERNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Username for authentication with the registry.<br><br><b>--password, -p <I>PASSWORD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Password for the registry. <B>Highly discouraged due to security risks</B> (e.g., exposure in shell history or process lists).<br><br><b>--password-stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the password from standard input. <B>Recommended for scripting</B> to avoid exposing passwords on the command line.<br><br><b>--email, -e <I>EMAIL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<B>DEPRECATED</B> and ignored by modern registries like Docker Hub. Formerly used to provide an email for the registry.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for the command.<br><br>


title: DESCRIPTION
content:
The <B>docker login</B> command allows users to authenticate their Docker client with a Docker registry, such as Docker Hub or a private registry. This authentication is crucial for performing actions like <I>docker pull</I> (for private images) and <I>docker push</I> (to upload images) on the registry.<br><br>When executed, it typically prompts interactively for a username and password. Upon successful authentication, Docker securely stores the credentials in a configuration file (usually <I>~/.docker/config.json</I>), often utilizing a credential helper. This process ensures that subsequent operations with the registry are seamless, without requiring re-entry of credentials.<br><br>It supports various authentication methods, including interactive prompts, passing credentials directly (though discouraged for security), and reading passwords from standard input for scripting purposes. This command is foundational for managing Docker images across different environments and collaborating on containerized applications by sharing images via registries.


title: CAVEATS
content:
Using <B>--password</B> directly on the command line is a significant security risk as the password might be exposed in shell history or process listings. It is strongly recommended to use <B>--password-stdin</B> for automated scripts or to rely on the interactive prompt or credential helpers.<br><br>The <B>--email</B> option is deprecated and has no effect on modern Docker registries. <br><br>By default, if no <B>SERVER</B> is specified, <B>docker login</B> attempts to authenticate with Docker Hub (<i>docker.io</i>).


title: CREDENTIAL HELPERS
content:
Docker automatically utilizes <I>credential helpers</I> (e.g., <I>docker-credential-desktop</I>, <I>docker-credential-ecr-login</I>) if they are configured and available on the system. These helpers are crucial for securely storing and retrieving registry credentials, often integrating with OS-specific keychains or cloud provider authentication mechanisms. This is the <B>recommended way</B> to manage credentials for enhanced security and convenience.


title: DEFAULT REGISTRY
content:
When the <B>SERVER</B> argument is omitted, <B>docker login</B> defaults to authenticating against Docker Hub. This refers to <I>https://index.docker.io/v1/</I> or <I>https://registry-1.docker.io/v2/</I>.


title: INTERACTIVE VS. NON-INTERACTIVE LOGIN
content:
The command typically runs interactively, prompting for a username and password. For automation and scripting, <B>--password-stdin</B> is preferred to provide credentials non-interactively without exposing them as command-line arguments, which can be insecure.


title: HISTORY
content:
The <B>docker login</B> command has been a core component of the Docker CLI since its early inception, providing the essential means for users to interact with Docker registries. Over time, its security features have significantly evolved, most notably with the introduction and widespread adoption of <I>credential helpers</I>. These helpers securely store authentication tokens, enhancing the overall security posture for developers and CI/CD pipelines by eliminating the need to store raw passwords. The deprecation of the <B>--email</B> flag also reflects a simplification towards standard username/password-based authentication models.


title: SYNOPSIS
content:
<b>docker swarm</b> [<i>OPTIONS</i>] <i>COMMAND</i><br><br><i>Available Commands:</i><br> &nbsp;&nbsp;<b>init</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize a swarm<br> &nbsp;&nbsp;<b>join</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Join a swarm as a node and/or manager<br> &nbsp;&nbsp;<b>leave</b> &nbsp;&nbsp;&nbsp;&nbsp;Leave the swarm<br> &nbsp;&nbsp;<b>update</b> &nbsp;&nbsp;&nbsp;&nbsp;Update the swarm<br><br><i>Global Options (for docker swarm command itself):</i><br> &nbsp;&nbsp;<b>--help</b> &nbsp;&nbsp;&nbsp;&nbsp;Print usage


title: PARAMETERS
content:
<b>--advertise-addr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Address that manager nodes use to advertise themselves to other nodes in the swarm. Used by <b>init</b> and <b>join</b>.<br><br><b>--listen-addr</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Address on which the swarm manager or worker listens for incoming cluster management and orchestration traffic. Used by <b>init</b> and <b>join</b>.<br><br><b>--token</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Token for joining a swarm. Required when using <b>join</b> to add a node.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a node to leave the swarm, even if it is a manager. Used by <b>leave</b>.<br><br><b>--autolock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable or disable swarm autolock. Autolock protects the swarm secret key, requiring a key to unlock managers after a restart. Used by <b>update</b>.<br><br><b>--task-history-limit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of historical tasks to retain per service. Used by <b>update</b>.<br><br><b>--default-addr-pool</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the default address pool for swarm overlay networks. Used by <b>init</b>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the help message for the <b>docker swarm</b> command or its subcommands.<br><br>


title: DESCRIPTION
content:
The <b>docker swarm</b> command is the primary tool for managing Docker Swarm clusters directly from the Docker CLI. It allows users to initialize a new swarm, add manager or worker nodes, remove nodes, and update global swarm configurations. Swarm mode, built into the Docker Engine, provides native container orchestration capabilities, enabling the deployment of applications as services across a cluster of machines. It handles service discovery, load balancing, desired state reconciliation, and rolling updates, simplifying the process of running highly available and fault-tolerant containerized applications in a distributed environment.


title: CAVEATS
content:
The <b>docker swarm</b> commands are part of the Docker Engine's built-in swarm mode, available since Docker Engine 1.12. It requires Docker Engine to be installed and running. For production deployments, it's crucial to have an odd number of manager nodes (e.g., 3, 5) for fault tolerance and quorum. While robust, for very large-scale or highly complex orchestration needs, alternative platforms like Kubernetes might be considered.


title: CORE SWARM CONCEPTS
content:
<b>Docker Swarm</b> operates with two main node types: <i>manager nodes</i>, which handle orchestration tasks and maintain the swarm state, and <i>worker nodes</i>, which execute service tasks. Services define the desired state of your applications, including the image to use, the number of replicas, and exposed ports. Swarm mode ensures that the actual state of your services matches the desired state, automatically rebalancing or rescheduling tasks as needed. Key features include built-in load balancing via the ingress routing mesh, service discovery, and rolling updates for zero-downtime deployments.


title: NETWORK CONSIDERATIONS
content:
For <b>docker swarm</b> to function correctly, specific ports must be open between nodes: <b>2377/TCP</b> (Swarm management traffic), <b>7946/TCP</b> and <b>7946/UDP</b> (container network discovery), and <b>4789/UDP</b> (overlay network traffic). Proper firewall configuration is essential for inter-node communication.


title: SECURITY BEST PRACTICES
content:
Swarm communication is secured with TLS. It's recommended to enable <i>autolock</i> for manager nodes using <b>docker swarm update --autolock=true</b> to encrypt the swarm key, preventing unauthorized access if a manager node is compromised or lost. Node join tokens should be kept secure and rotated regularly to prevent unauthorized nodes from joining the swarm.


title: HISTORY
content:
Swarm mode was introduced in Docker Engine 1.12 (July 2016), integrating native orchestration capabilities directly into the Docker daemon. This built-in functionality replaced the older, standalone 'Docker Swarm' tool. The aim was to provide a simpler, more tightly integrated, and opinionated orchestration solution for users already familiar with the Docker ecosystem, making it easier to scale applications across multiple machines without needing external orchestrators.


title: SYNOPSIS
content:
<i>docker system</i> [OPTIONS] COMMAND<br><br>Subcommands:<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>df</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Show Docker disk usage<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>events</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get real time events from the server<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>info</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display system-wide information<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>prune</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove unused Docker data<br><br>Usage examples:<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>docker system info</i><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>docker system df -v</i><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>docker system prune -a --volumes</i><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>docker system events --filter 'type=container'</i>


title: PARAMETERS
content:
<b><i>--verbose</i>, <i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `df` to show more detailed information.<br><br><b><i>--filter</i>, <i>-f</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `events` to filter output (e.g., `type=container`). Also used with `prune` to filter items to be removed.<br><br><b><i>--since</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `events` to show events since a given timestamp or relative time.<br><br><b><i>--until</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `events` to show events until a given timestamp or relative time.<br><br><b><i>--format</i>, <i>-f</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `info` to format output using a Go template.<br><br><b><i>--all</i>, <i>-a</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `prune` to remove all unused images, not just dangling ones.<br><br><b><i>--force</i>, <i>-f</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `prune` to not prompt for confirmation.<br><br><b><i>--volumes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with `prune` to also prune volumes not used by at least one container.<br><br>


title: DESCRIPTION
content:
The `docker system` command provides utilities for managing and monitoring the Docker daemon and its associated resources. It allows users to inspect system-wide information, view disk usage by Docker objects, prune unused data to free up space, and stream real-time events from the Docker daemon. It's crucial for maintaining a healthy and optimized Docker environment, especially on systems with limited disk space or requiring continuous monitoring and cleanup practices. This command centralizes several system-level operations, simplifying administrative tasks and improving overall Docker host hygiene.


title: CAVEATS
content:
<i>docker system prune</i> can be destructive. Always use with caution, especially with <i>-a</i> or <i>--volumes</i>, as it permanently removes data. Requires the Docker daemon to be running and accessible. Users must be part of the `docker` group or use `sudo` to execute these commands.


title: DISK USAGE ANALYSIS
content:
<i>docker system df</i> provides a quick overview of how much space Docker is consuming, categorized by images, containers, local volumes, and build cache. This is invaluable for troubleshooting disk space issues and identifying areas for cleanup.


title: RESOURCE MANAGEMENT
content:
<i>docker system prune</i> is the primary tool for reclaiming disk space by removing unused images, containers, volumes, and build cache. Regular pruning is a good practice for maintaining a lean Docker installation and preventing disk space exhaustion on Docker hosts.


title: HISTORY
content:
The `docker system` command was introduced as part of Docker's evolution to provide a centralized interface for system-wide operations. Subcommands like `info`, `df`, and `prune` consolidate functionalities that might have previously been spread across other `docker` subcommands or required manual inspection of disk usage. The `prune` functionality became particularly important as Docker usage grew, leading to the accumulation of dangling or unused resources that could consume significant disk space.


title: PARAMETERS
content:
<b><b>--host</b>, <b>-H</b> <i>socket</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Daemon socket(s) to connect to. Can be specified multiple times. Default is unix:///var/run/docker.sock.<br><br><b><b>--config-file</b> <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the daemon configuration file. Default is /etc/docker/daemon.json.<br><br><b><b>--log-level</b> <i>level</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level (e.g., debug, info, warn, error, fatal, panic). Default is info.<br><br><b><b>--debug</b>, <b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug mode. Alias for --log-level=debug.<br><br><b><b>--data-root</b> <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Root directory for Docker persistent data (images, volumes, etc.). Default is /var/lib/docker.<br><br><b><b>--storage-driver</b> <i>driver</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the storage driver to use (e.g., overlay2, btrfs, zfs).<br><br><b><b>--insecure-registries</b> <i>registry</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable insecure registry communication. Can be specified multiple times.<br><br><b><b>--tls</b>, <b>--tlscacert</b>, <b>--tlscert</b>, <b>--tlskey</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable and configure TLS for daemon communication.<br><br><b><b>--icc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable inter-container communication (default is true).<br><br><b><b>--pidfile</b> <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to use for the daemon's PID file. Default is /var/run/docker.pid.<br><br><b><b>--mtu</b> <i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the containers network MTU.<br><br><b><b>--ipv6</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable IPv6 networking.<br><br>


title: DESCRIPTION
content:
<i>dockerd</i> is the persistent background process that powers the Docker Engine. It acts as the central component of the Docker architecture, listening for Docker API requests from the <i>docker</i> client (CLI or other applications).<br><br>The daemon is responsible for building, running, and distributing Docker containers. It manages all Docker objects, including images, containers, networks, and data volumes. When you execute a <i>docker</i> command, such as <i>docker run</i> or <i>docker build</i>, the <i>docker</i> client communicates with the <i>dockerd</i> daemon via its REST API, typically over a Unix socket (<i>/var/run/docker.sock</i>) or a TCP port. The daemon then performs the requested operations, leveraging underlying components like <i>containerd</i> for container lifecycle management and <i>runc</i> for low-level container execution.<br><br><i>dockerd</i> also handles complex tasks such as persistent storage management (using various storage drivers like OverlayFS, Btrfs), network configuration (e.g., bridge, overlay networks), and image layer caching. It typically runs as a root-privileged service and can be configured through command-line flags or a configuration file (<i>daemon.json</i>).


title: CAVEATS
content:
<i>dockerd</i> requires root privileges to operate, which can pose security considerations if not properly managed. It is crucial to secure the daemon's API endpoint, especially if exposed over TCP, using TLS. Misconfigurations or running untrusted containers can lead to system vulnerabilities. The daemon can be resource-intensive, consuming significant CPU, memory, and disk I/O, particularly under heavy workloads or with many running containers. Stopping or restarting <i>dockerd</i> will stop all running containers.


title: CONFIGURATION FILE (DAEMON.JSON)
content:
<i>dockerd</i> can be configured using a JSON file, typically located at <i>/etc/docker/daemon.json</i>. This file allows for persistent configuration of daemon settings such as data root, logging driver, storage driver options, insecure registries, and more. It's often preferred over command-line flags for production environments.


title: SERVICE MANAGEMENT
content:
On most Linux distributions, <i>dockerd</i> is managed as a systemd service (<i>docker.service</i>). You can control its lifecycle using <i>systemctl</i> commands, for example: <i>systemctl start docker</i>, <i>systemctl stop docker</i>, <i>systemctl enable docker</i>, and <i>systemctl status docker</i>. This ensures the daemon starts automatically on boot and handles proper shutdown.


title: API INTERFACE
content:
<i>dockerd</i> exposes a RESTful API that the <i>docker</i> client and other tools use to interact with Docker. By default, this API is exposed over a Unix socket (<i>/var/run/docker.sock</i>), which is accessible only by users with appropriate permissions (e.g., members of the 'docker' group). It can also be configured to listen on a TCP port for remote access, which should always be secured with TLS.


title: HISTORY
content:
The concept of the Docker daemon evolved from the initial Docker project, which was launched in 2013 by Solomon Hykes at PyCon. Initially, the single <i>docker</i> binary encompassed both client and daemon functionalities. As Docker matured and adopted a client-server architecture, the daemon component was explicitly named <i>dockerd</i>, while the client remained <i>docker</i>. This separation allowed for remote management and a more robust design.<br><br>Over time, parts of <i>dockerd</i>'s responsibilities, particularly the low-level container runtime and image distribution, were componentized and open-sourced into projects like <i>containerd</i> (a high-level container runtime) and <i>runc</i> (an OCI-compliant low-level runtime). This modularization, driven by the Open Container Initiative (OCI), improved stability, security, and allowed for greater flexibility and interoperability within the container ecosystem. <i>dockerd</i> now orchestrates these underlying components to provide the complete Docker Engine experience.


title: SYNOPSIS
content:
<b>docsify serve</b> [<i>path</i>] [<i>options</i>]<br><br><i>Alternatively, if docsify-cli is not globally installed:</i><br><b>npx docsify-cli serve</b> [<i>path</i>] [<i>options</i>]


title: PARAMETERS
content:
<b><b>[<i>path</i>]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Optional.</i> The directory to serve. Defaults to the current working directory ('.'). This directory should contain your Markdown files and an 'index.html' file.<br><br><b><b>-p, --port &lt;port&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the port to listen on. Defaults to 3000.<br><br><b><b>-o, --open</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Open the browser automatically after starting the server.<br><br><b><b>-H, --hostname &lt;hostname&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the hostname to listen on. Defaults to 'localhost'.<br><br><b><b>-b, --base-path &lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the base path for relative URLs. Useful when serving from a subdirectory.<br><br><b><b>-l, --lr</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable live reload. Note: This is often enabled by default or deprecated in newer versions as live reloading is built-in.<br><br><b><b>-c, --config &lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom configuration file for <b>docsify</b>. Defaults to '.docsify.js'.<br><br><b><b>-d, --index &lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the main HTML file to serve. Defaults to 'index.html'.<br><br>


title: DESCRIPTION
content:
<b>docsify</b> is a lightweight, client-side documentation generator that directly serves Markdown files as a dynamic single-page application (SPA).<br><br>Unlike traditional static site generators (SSGs) that pre-build HTML files, <b>docsify</b> generates your documentation website on the fly, rendering Markdown content directly in the browser. This means there's no complex build process; you simply point <b>docsify</b> to a directory containing your Markdown files, and it creates a navigable documentation site instantly.<br><br>It's commonly used for project documentation, API docs, or any content that benefits from being quickly published and updated. Key features include a real-time search plugin, theme customization, syntax highlighting via Prism.js, and support for a variety of plugins to extend functionality. The core command for local development and serving is <b>docsify serve</b>, typically run via <b>npx docsify-cli serve</b> or after global installation of the <b>docsify-cli</b> package.


title: CAVEATS
content:
<b>docsify</b> requires <b>Node.js</b> and <b>npm</b> (or <b>yarn</b>) to run, as it is a Node.js application, not a native Linux executable. It generates documentation client-side, meaning it requires JavaScript to be enabled in the user's browser. It is a development server; for production deployment, it often requires serving the generated `index.html` and markdown files from a static file server or CDN. It does not produce static HTML output in a build directory like traditional SSGs; it serves content dynamically.


title: INSTALLATION
content:
To use the <b>docsify serve</b> command, you first need to install the <b>docsify-cli</b> package globally using <b>npm</b> or <b>yarn</b>:<br><b>npm i docsify-cli -g</b><br><i>or</i><br><b>yarn global add docsify-cli</b><br><br>Alternatively, you can use <b>npx</b> to run it without a global installation: <b>npx docsify-cli serve</b>.


title: BASIC USAGE EXAMPLE
content:
1. <i>Create a directory for your documentation:</i><br><b>mkdir my-docs && cd my-docs</b><br>2. <i>Initialize docsify (creates index.html and .nojekyll):</i><br><b>docsify init .</b><br>3. <i>Create your first Markdown file (e.g., README.md):</i><br><b>echo '# Hello Docsify!' > README.md</b><br>4. <i>Serve your documentation:</i><br><b>docsify serve</b><br><br>This will start a local server, usually on <b>http://localhost:3000</b>, and open your browser to view your documentation.


title: HISTORY
content:
<b>docsify</b> was created by Qin Guan (<i>QSCTech</i>) and first released in 2016. Its development was driven by a desire for a simple, client-side documentation generator that didn't require a complex build step, differentiating itself from existing static site generators. It quickly gained popularity for its ease of use and ability to render Markdown on-the-fly, making it ideal for quick documentation setups and single-page documentation sites.


title: SYNOPSIS
content:
<code><b>doctl databases db</b> <i>&lt;command&gt;</i> <i>&lt;cluster-id&gt;</i> [<i>flags</i>]</code><br><br>Where <i>&lt;command&gt;</i> can be:<br><ul><li><code><b>create</b></code>: Create a new database within the specified cluster.</li><li><code><b>delete</b></code>: Delete an existing database from the specified cluster.</li><li><code><b>get</b></code>: Retrieve details about a specific database within the specified cluster.</li></ul>


title: PARAMETERS
content:
<b><code><b>&lt;cluster-id&gt;</b></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique identifier (UUID) of the DigitalOcean Managed Database Cluster. This is a required positional argument for all <code><b>doctl databases db</b></code> subcommands.<br><br><b><code><b>--database</b> <i>&lt;name&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the database to operate on (e.g., <code><i>my_app_db</i></code>). This is a required flag for all <code><b>create</b></code>, <code><b>delete</b></code>, and <code><b>get</b></code> subcommands.<br><br><b><code><b>--encoding</b> <i>&lt;encoding-type&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Used with <code><b>create</b></code>. Specifies the character encoding for the new database (e.g., <code><i>UTF8</i></code>). Defaults to <code><i>UTF8</i></code>.<br><br><b><code><b>--user</b> <i>&lt;username&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Used with <code><b>create</b></code>. The name of the database user who will own the new database. If not specified, the database is typically owned by the <code><i>doadmin</i></code> user or the cluster's default owner.<br><br><b><code><b>--password</b> <i>&lt;password&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Used with <code><b>create</b></code>. The password for the user specified with <code><i>--user</i></code>. Required if <code><i>--user</i></code> is provided and the user does not exist.<br><br><b><code><b>-f</b></code>, <code><b>--force</b></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Optional) Used with <code><b>delete</b></code>. Bypass the confirmation prompt when deleting a database, allowing for non-interactive deletion. Use with extreme caution.<br><br><b><code><b>--output</b> <i>&lt;format&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global <code><b>doctl</b></code> flag) Adjusts the output format (e.g., <code><i>json</i></code>, <code><i>yaml</i></code>, <code><i>text</i></code>). Affects all subcommands.<br><br><b><code><b>--format</b> <i>&lt;columns&gt;</i></code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Global <code><b>doctl</b></code> flag) Specifies the columns to display in table output (e.g., <code><i>ID,NAME,STATUS</i></code>). Affects all subcommands.<br><br>


title: DESCRIPTION
content:
The <code><b>doctl databases db</b></code> command provides a powerful interface for interacting with and managing individual databases inside a DigitalOcean Managed Database Cluster. Unlike commands that manage the cluster itself (e.g., creating or deleting an entire cluster), this command focuses on the granular control of databases within an already provisioned cluster. It allows users to perform operations such as creating new databases, retrieving details about existing ones, and safely deleting them. This is crucial for application development and deployment, where distinct databases are often required for different services, environments, or tenants. The command facilitates automation of database provisioning and management tasks.


title: CAVEATS
content:
<ul><li><b>Prerequisites:</b> This command requires an existing DigitalOcean Managed Database Cluster. It cannot create or manage standalone databases or databases on unmanaged servers.</li><li><b>Irreversibility of Deletion:</b> Deleting a database is an irreversible action. All data within that database will be permanently lost. Exercise extreme caution, especially when using the <code><i>--force</i></code> flag.</li><li><b>User Management:</b> While <code><b>doctl databases db create</b></code> allows specifying an owner, full user and privilege management (creating users, granting/revoking permissions) is handled by the <code><b>doctl databases user</b></code> command.</li><li><b>Naming Conventions:</b> Database names must adhere to the specific rules of the underlying database engine (e.g., PostgreSQL, MySQL).</li></ul>


title: AUTHENTICATION
content:
Before using <code><b>doctl databases db</b></code>, ensure <code><b>doctl</b></code> is authenticated with your DigitalOcean account using <code><b>doctl auth init</b></code>.


title: LISTING DATABASES
content:
To see a list of databases within a cluster, you typically get the cluster details first, then parse the output, or use <code><b>doctl databases get</b> <i>&lt;cluster-id&gt;</i> <code><b>--output json</b></code> and look for the 'databases' array. There isn't a direct <code><b>list</b></code> subcommand for individual databases under <code><b>doctl databases db</b></code>.


title: EXAMPLE USAGE
content:
<i><br><b>1. Create a new database:</b><br><code><b>doctl databases db create d3f0a5b8-c1d2-e3f4-a5b6-c7d8e9f0a1b2 --database my_new_app_db --user app_user --password 'StrongP@ssw0rd!'</b></code><br><br><b>2. Get details of a database:</b><br><code><b>doctl databases db get d3f0a5b8-c1d2-e3f4-a5b6-c7d8e9f0a1b2 --database my_new_app_db --output json</b></code><br><br><b>3. Delete a database (with force):</b><br><code><b>doctl databases db delete d3f0a5b8-c1d2-e3f4-a5b6-c7d8e9f0a1b2 --database my_old_data --force</b></code></i>


title: HISTORY
content:
The <code><b>doctl</b></code> command-line interface was developed by DigitalOcean to provide programmatic access to its cloud services. As DigitalOcean expanded its offerings to include Managed Databases, the <code><b>doctl databases</b></code> subcommand was introduced to manage these new services. The <code><b>doctl databases db</b></code> set of commands represents a refinement of this functionality, allowing for more granular control over individual databases within a cluster, which became essential as customers adopted managed databases for complex applications requiring multiple isolated databases. Its development mirrors the increasing maturity and feature richness of DigitalOcean's database-as-a-service offering.


title: SEE ALSO
content:
<code><b>doctl databases</b></code>: General commands for managing DigitalOcean Managed Database Clusters (e.g., creating, listing, deleting clusters)., <code><b>doctl databases user</b></code>: Manage users for DigitalOcean Managed Database Clusters (e.g., creating, deleting, listing users)., <code><b>doctl databases connection</b></code>: Get connection details for a database cluster., <code><b>doctl auth init</b></code>: Initialize and authenticate the <code><b>doctl</b></code> client with your DigitalOcean account.


title: SYNOPSIS
content:
The <b>doctl kubernetes cluster</b> command is a group of subcommands that enable various operations. Here are common usage patterns:<br><br><i>Create a new cluster:</i><br><b>doctl kubernetes cluster create &lt;cluster-name&gt; --region &lt;slug&gt; --version &lt;k8s-version&gt; --node-pool &lt;name&gt;:&lt;size&gt;:&lt;count&gt;</b><br><br><i>List all clusters:</i><br><b>doctl kubernetes cluster list</b><br><br><i>Retrieve details of a specific cluster:</i><br><b>doctl kubernetes cluster get &lt;cluster-id|name&gt;</b><br><br><i>Delete a cluster:</i><br><b>doctl kubernetes cluster delete &lt;cluster-id|name&gt;</b>


title: PARAMETERS
content:
<b><b>--output</b>, <b>-o</b> &lt;format&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format for command results. Supported formats include <i>json</i>, <i>csv</i>, <i>text</i> (default), and <i>pretty</i>. This is a global <b>doctl</b> flag.<br><br><b><b>--access-token</b> &lt;token&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authenticates with the DigitalOcean API using the provided access token. Overrides environment variables or config file settings. This is a global <b>doctl</b> flag.<br><br><b><b>--config</b> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the <b>doctl</b> configuration file, overriding the default location (~/.config/doctl/config.yaml). This is a global <b>doctl</b> flag.<br><br><b><b>--trace</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables tracing of HTTP requests made by <b>doctl</b> for debugging purposes. This is a global <b>doctl</b> flag.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <b>kubernetes cluster</b> subcommand group or its specific subcommands. This is a standard flag.<br><br><b><i>Subcommand specific options</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each subcommand within <b>doctl kubernetes cluster</b> (e.g., <i>create</i>, <i>update</i>) has its own distinct set of flags for configuration. Common examples include <b>--region</b> (DigitalOcean datacenter slug), <b>--version</b> (Kubernetes version), <b>--node-pool</b> (configuration for cluster worker nodes), <b>--auto-upgrade</b>, and <b>--ha-control-plane</b>.<br><br>


title: DESCRIPTION
content:
The <b>doctl kubernetes cluster</b> command provides the official command-line interface for managing DigitalOcean Kubernetes (DOKS) clusters. As a core subcommand group of the broader <b>doctl</b> utility, it streamlines the creation, retrieval, listing, updating, and deletion of Kubernetes clusters on the DigitalOcean cloud platform.<br><br>This command simplifies interaction with the DigitalOcean API, allowing users to automate DOKS lifecycle management, integrate cluster operations into scripts, and perform tasks more efficiently than through the web interface. It serves as the primary tool for developers and operators to provision and control their Kubernetes infrastructure on DigitalOcean, offering granular control over cluster versions, node pools, regions, and other configuration parameters.


title: CAVEATS
content:
Using <b>doctl kubernetes cluster</b> requires an active DigitalOcean account and a valid API token with appropriate permissions. Creating Kubernetes clusters and node pools incurs costs on your DigitalOcean account, so monitor your usage. Deleting resources is permanent and irreversible. Always verify the cluster name or ID before performing destructive operations like deletion. Ensure network connectivity to the DigitalOcean API endpoint for successful command execution.


title: SUBCOMMANDS OVERVIEW
content:
The <b>doctl kubernetes cluster</b> command acts as a parent for several crucial subcommands, each performing a specific action on Kubernetes clusters:<br><ul><li><b>create</b>: Provisions a new DigitalOcean Kubernetes cluster with specified configurations.</li><li><b>list</b>: Displays a list of all existing Kubernetes clusters in your DigitalOcean account.</li><li><b>get</b>: Retrieves detailed information about a specific Kubernetes cluster using its ID or name.</li><li><b>update</b>: Modifies the configuration of an existing Kubernetes cluster, such as adding or updating node pools, or enabling auto-upgrade.</li><li><b>delete</b>: Permanently removes a Kubernetes cluster and all its associated resources. This action is irreversible.</li><li><b>kubeconfig</b>: Generates or updates the <i>kubeconfig</i> file for a cluster, enabling tools like <b>kubectl</b> to connect and manage workloads within the cluster.</li></ul>


title: AUTHENTICATION
content:
<b>doctl</b> authenticates with the DigitalOcean API using an access token. This token can be provided in several ways, in order of precedence: via the <b>--access-token</b> command-line flag, as an environment variable (<b>DO_API_TOKEN</b>), or configured within the <b>doctl</b> configuration file (typically located at <i>~/.config/doctl/config.yaml</i>). It is paramount to keep your API token secure as it grants full programmatic access to your DigitalOcean account resources.


title: HISTORY
content:
The <b>doctl</b> CLI was developed by DigitalOcean to provide a programmatic interface for managing their cloud resources. As DigitalOcean Kubernetes (DOKS) evolved into a core offering, the <b>kubernetes cluster</b> subcommand group was integrated into <b>doctl</b>, allowing users to provision and manage DOKS clusters directly from the command line. Its development tracks the continuous enhancements and new features rolled out for the DOKS service, making it an essential and up-to-date tool for DOKS users.


title: SYNOPSIS
content:
<b>dolt checkout</b> <i>[&lt;branch&gt; | &lt;commit&gt;]</i><br><b>dolt checkout</b> <i>-b &lt;new_branch&gt; [&lt;start_point&gt;]</i><br><b>dolt checkout</b> <i>--ours | --theirs &lt;pathspec&gt;...</i><br><b>dolt checkout</b> <i>[--] &lt;pathspec&gt;...</i>


title: PARAMETERS
content:
<b><i>&lt;branch&gt;</i> | <i>&lt;commit&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switches the working database and its schema to the state of the specified <i>&lt;branch&gt;</i> or <i>&lt;commit&gt;</i>. This updates the tables on disk.<br><br><b><b>-b</b> <i>&lt;new_branch&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new branch named <i>&lt;new_branch&gt;</i> and immediately switches to it. This is a convenience shortcut for <b>dolt branch</b> followed by <b>dolt checkout</b>.<br><br><b><i>&lt;start_point&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>-b</b>, specifies the branch or commit from which the new branch should be created. If omitted, the new branch starts from the current HEAD (the commit the current branch points to).<br><br><b><b>--ours</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When resolving merge conflicts, this option restores the version of the specified <i>&lt;pathspec&gt;</i> (tables or files) from the current branch's side (<i>"ours"</i>).<br><br><b><b>--theirs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When resolving merge conflicts, this option restores the version of the specified <i>&lt;pathspec&gt;</i> (tables or files) from the incoming branch's side (<i>"theirs"</i>).<br><br><b><i>&lt;pathspec&gt;</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more database tables or files (like <i>.doltignore</i>) to be restored. If used without a branch/commit, it restores from the index. If used with a branch/commit, it restores from that specific point in history.<br><br><b><b>--</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A standard convention to separate options from arguments. Useful if <i>&lt;pathspec&gt;</i> might be mistaken for an option (e.g., if a table name starts with a hyphen).<br><br>


title: DESCRIPTION
content:
<b>dolt checkout</b> is a core Dolt command that allows users to navigate through the version history of a Dolt database. It provides functionality to switch to an existing branch or commit, thereby updating the working database tables and schema to reflect that specific point in history. Additionally, it can create and switch to a new branch from a specified starting point. For managing conflicts during a merge, <b>dolt checkout</b> can be used with <b>--ours</b> or <b>--theirs</b> to resolve specific tables or files. It also serves to restore individual tables or files from the Dolt index or a particular commit, effectively discarding uncommitted changes or reverting to a previous state for specific database objects. This command is analogous to the <i>git checkout</i> command, bringing familiar version control operations to structured data.


title: CAVEATS
content:
Unlike Git, which primarily manipulates files, <b>dolt checkout</b> directly modifies the database tables on disk. Uncommitted changes to tables or schema might be overwritten or require staging before switching branches. Dolt provides warnings if a checkout would result in data loss without explicit handling.


title: DATABASE STATE MANIPULATION
content:
A key distinction of <b>dolt checkout</b> is that it physically alters the underlying database files (tables) on disk to reflect the state of the checked-out branch or commit. This is a fundamental operation that makes the database itself version-controlled.


title: PATHSPEC RESTORATION BEHAVIOR
content:
When <b>dolt checkout</b> is used with <i>&lt;pathspec&gt;</i> arguments (e.g., table names), its behavior changes: <br><i>&bull; dolt checkout &lt;pathspec&gt;</i>: Restores the specified tables/files from the Dolt index (staged changes) to the working set, effectively discarding local modifications.<br><i>&bull; dolt checkout &lt;commit&gt; -- &lt;pathspec&gt;</i>: Restores the specified tables/files to the working set from the state they were in at <i>&lt;commit&gt;</i>.


title: HISTORY
content:
Dolt was developed by DoltHub with the aim of bringing Git-like version control to SQL databases, addressing the challenges of managing schema and data changes in collaborative database environments. The project began in earnest around 2018. <b>dolt checkout</b> was designed as a direct functional analogue to its Git counterpart, providing a familiar interface for developers to navigate database history, branch, and resolve conflicts, central to Dolt's mission of making databases versionable.


title: PARAMETERS
content:
<b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for <i>dotenvx</i> or a specific command.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the current version of <i>dotenvx</i>.<br><br><b><i>run &lt;command&gt; [args...]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a shell command with environment variables loaded from <i>.env</i> files.<br><br><b><i>encrypt [file]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Encrypts a <i>.env</i> file into a <i>.env.vault</i> file using a <b>DOTENV_KEY</b>.<br><br><b><i>decrypt [file]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decrypts a <i>.env.vault</i> file back into a plain <i>.env</i> file.<br><br><b><i>genkey</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a new secure <b>DOTENV_KEY</b> for encryption/decryption.<br><br><b><i>get &lt;key&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the value of a specific environment variable.<br><br><b><i>set &lt;key&gt;=&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets or updates an environment variable within the <i>.env</i> file.<br><br><b><i>ls</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all environment variables loaded by <i>dotenvx</i> for the current environment.<br><br><b><i>cat</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the raw content of a <i>.env</i> file, similar to the <i>cat(1)</i> command.<br><br>


title: DESCRIPTION
content:
<i>dotenvx</i> is an advanced command-line tool for managing environment variables, extending the functionality of the widely-used <i>dotenv</i> concept. It addresses common challenges in configuration management by providing features like <b>encryption</b>, <b>multi-environment support</b>, and simplified sharing of sensitive variables. <br><br>The primary goal of <i>dotenvx</i> is to help developers and operations teams keep environment-specific configurations separate from codebase, enhancing security and portability. It allows for the encryption of sensitive data using a <b>DOTENV_KEY</b>, storing it in an encrypted <i>.env.vault</i> file, which can then be safely committed to version control. <br><br>It supports different environment files (e.g., <i>.env.development</i>, <i>.env.production</i>) and offers a robust CLI for tasks such as loading variables, encrypting/decrypting files, generating keys, and inspecting configurations. <i>dotenvx</i> streamlines the process of managing secrets and configuration in development, staging, and production workflows, ensuring that sensitive information remains protected while being easily accessible to authorized applications.


title: CAVEATS
content:
The security of <i>dotenvx</i> heavily relies on the secure management of your <b>DOTENV_KEY</b>. If this key is compromised, encrypted secrets can be exposed. It is crucial to store <b>DOTENV_KEY</b> securely and never commit it to source control. <i>dotenvx</i> is designed for managing application-specific environment variables and is not a full-fledged secret management system like HashiCorp Vault or cloud-native secret services, which offer more advanced features like auditing, access control, and secret rotation.


title: <B>DOTENV_KEY</B>
content:
The <b>DOTENV_KEY</b> is a crucial encryption key used by <i>dotenvx</i> to encrypt and decrypt sensitive environment variables stored in <i>.env.vault</i> files. It's a base64-encoded AES-256 GCM key. This key must be securely managed (e.g., via environment variables, cloud secret managers) and never committed to your codebase. <i>dotenvx</i> provides the <i>genkey</i> command to generate new secure keys.


title: <B>.ENV.VAULT FILE FORMAT</B>
content:
The <i>.env.vault</i> file is an encrypted representation of your <i>.env</i> file. Instead of storing plain text variables, <i>dotenvx</i> encrypts them and stores the encrypted blob along with metadata (like the environment it belongs to, e.g., <i>DOTENV_VAULT_PRODUCTION</i>) in this file. This allows you to safely commit <i>.env.vault</i> to your version control system without exposing secrets directly, as they can only be decrypted with the correct <b>DOTENV_KEY</b>.


title: <B>MULTI-ENVIRONMENT SUPPORT</B>
content:
<i>dotenvx</i> simplifies managing different configurations for various environments (e.g., development, test, staging, production). It prioritizes loading environment variables based on the active <b>NODE_ENV</b> or <b>RAILS_ENV</b>, looking for files like <i>.env.&lt;environment&gt;.local</i>, <i>.env.&lt;environment&gt;</i>, <i>.env.local</i>, and finally <i>.env</i>. This hierarchical loading ensures the correct variables are used for the specific deployment stage.


title: HISTORY
content:
<i>dotenvx</i> emerged as a natural evolution of the popular <i>dotenv</i> ecosystem. While <i>dotenv</i> efficiently loads variables from a <i>.env</i> file into <i>process.env</i>, it lacked native support for encryption and multi-environment workflows, making secure secret management challenging, especially in production environments. <i>dotenvx</i>, developed by <i>dotenv-org</i>, was created to fill these gaps, introducing the concept of a <b>DOTENV_KEY</b> for encryption and the <i>.env.vault</i> file format. This development aimed to provide a more robust and secure solution for managing environment variables throughout the software development lifecycle, from local development to CI/CD pipelines and production deployments, without exposing sensitive information in plain text.


title: SYNOPSIS
content:
<b>dotnet ef</b> <i>&lt;command&gt;</i> [options]<br>or<br><b>dotnet ef</b> <i>&lt;command&gt; &lt;subcommand&gt;</i> [arguments] [options]


title: PARAMETERS
content:
<b>migrations</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Commands for managing Entity Framework Core migrations. This includes adding new migrations, applying them to a database, and removing them.<br><br><b>database</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Commands for managing the Entity Framework Core database. This includes updating the database to the latest migration, dropping it, and generating SQL scripts.<br><br><b>dbcontext</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Commands for managing Entity Framework Core <i>DbContext</i> types. This includes scaffolding a <i>DbContext</i> and entity types from an existing database, and listing available <i>DbContext</i> types.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help information for the <b>dotnet-ef</b> tool or a specific command.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version of the <b>dotnet-ef</b> tool currently installed.<br><br>


title: DESCRIPTION
content:
The <b>dotnet-ef</b> command is the command-line interface (CLI) tool for Entity Framework Core (EF Core). It provides a wide range of commands to manage EF Core operations directly from the terminal, essential for database-first or code-first development workflows. Its primary functions include applying and creating database migrations, scaffolding database contexts and entity types from an existing database, and managing database connections. It's an indispensable tool for developers working with .NET applications that use EF Core for data access, allowing automation of common database schema evolution and reverse engineering tasks. The tool integrates seamlessly with the .NET SDK, functioning identically across Linux, Windows, and macOS environments.


title: CAVEATS
content:
The <b>dotnet-ef</b> tool requires the .NET SDK to be installed on the system. It typically needs to be executed from the project directory containing the <i>DbContext</i>, or the project must be explicitly specified using options like <i>-p</i> or <i>--project</i>. It also relies on the <i>Microsoft.EntityFrameworkCore.Design</i> NuGet package being referenced by the project. Complex setups involving multiple <i>DbContexts</i> or specific build configurations might require additional command-line options or environment variables.


title: INSTALLATION
content:
The <b>dotnet-ef</b> tool is a .NET Global Tool. It can be installed using the .NET CLI: <i>dotnet tool install --global dotnet-ef</i>. This makes it available across all your projects. Alternatively, it can be installed as a local tool within a specific project by adding a tool reference in the project's manifest file (<i>.config/dotnet-tools.json</i>).


title: KEY FEATURES
content:
Key features include:<br><i>Migrations Management:</i> Creating, applying, and removing database migrations, crucial for evolving database schemas with application code.<br><i>Database Management:</i> Updating the database to a specific migration, dropping the database, and scripting database creation or migration steps.<br><i>Scaffolding:</i> Generating <i>DbContext</i> and entity classes from an existing database, facilitating database-first development.<br><i>DbContext Debugging:</i> Displaying information about the <i>DbContext</i> and its models, useful for troubleshooting and understanding the EF Core model.


title: HISTORY
content:
The <b>dotnet-ef</b> command emerged as an essential component of Entity Framework Core (EF Core), which itself is a modern, cross-platform and open-source version of Microsoft's popular object-relational mapper (ORM). Unlike its predecessor, Entity Framework 6 (EF6), which primarily relied on PowerShell commands within Visual Studio's Package Manager Console, EF Core was designed from the ground up for cross-platform compatibility. The <b>dotnet-ef</b> tool was introduced alongside EF Core 1.0 to enable developers to manage database migrations, scaffold entities, and interact with the database schema directly from the command line, across Linux, Windows, and macOS. Its development has mirrored the evolution of .NET Core itself, becoming a standard global tool for .NET development.


title: PARAMETERS
content:
<b><B>--root=<I>path</I></B> or <B>-r <I>path</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Drupal root directory to operate on.<br><br><b><B>--uri=<I>uri</I></B> or <B>-l <I>uri</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the URI of the Drupal site when working with multisite installations (e.g., `http://example.com`).<br><br><b><B>--alias=<I>alias</I></B> or <B>-A <I>alias</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a site alias defined in Drush configuration files.<br><br><b><B>--yes</B> or <B>-y</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assumes 'yes' to all prompts, useful for automation.<br><br><b><B>--no</B> or <B>-n</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assumes 'no' to all prompts.<br><br><b><B>--quiet</B> or <B>-q</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses non-error messages.<br><br><b><B>--simulate</B> or <B>-s</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates running the command without making changes.<br><br><b><B>--include=<I>path</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include a directory of Drush commands.<br><br><b><B>--strict=0</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns off strict mode for command validation.<br><br>


title: DESCRIPTION
content:
The Linux command "drupal" does not exist as a standalone utility. Drupal itself is an open-source content management system (CMS) used for building websites and applications, running on a web server (like Apache or Nginx), PHP, and a database (like MySQL or PostgreSQL). Command-line interactions with a Drupal site are typically handled by specialized tools such as <I>Drush</I> (Drupal Shell) or <I>Drupal Console</I>. This analysis focuses on <I>Drush</I>, which is the most widely adopted and established command-line interface for Drupal. <br><br><I>Drush</I> provides a powerful set of commands to automate common administrative tasks, development operations, and site maintenance. It allows developers and administrators to perform actions like clearing caches, managing users, updating modules, installing Drupal, running database updates, and executing custom PHP code directly from the terminal, significantly streamlining workflows and facilitating scripting.


title: CAVEATS
content:
The primary caveat is that a direct "drupal" command does not exist in standard Linux distributions. Users often mistakenly search for it when trying to interact with Drupal from the command line. Instead, you must install a separate tool like <I>Drush</I> or <I>Drupal Console</I>. These tools themselves have dependencies, primarily PHP and Composer, and must be correctly configured to locate your Drupal installation. Running `drush` commands requires appropriate file system permissions for the user executing the command.


title: COMMON DRUSH USE CASES
content:
<I>Drush</I> is indispensable for automating routine tasks. Key uses include:<br><ul><li><B>Cache Management</B>: `drush cr` (cache rebuild) is a frequently used command after configuration changes or code deployments.</li><li><B>Module/Theme Management</B>: `drush en module_name` (enable), `drush dis module_name` (disable), `drush pm:uninstall module_name` (uninstall).</li><li><B>Database Updates</B>: `drush updb` runs all pending database updates after code changes or module updates.</li><li><B>Configuration Management</B>: `drush config:export` (cex) and `drush config:import` (cim) manage Drupal 8/9/10 configuration.</li><li><B>User Management</B>: `drush user:create`, `drush user:block`, `drush user:unblock`, `drush user:login` (generates a one-time login link).</li><li><B>Site Installation</B>: `drush site:install` can automate the entire Drupal installation process.</li></ul>


title: INSTALLATION
content:
The recommended way to install <I>Drush</I> for modern Drupal versions (8, 9, 10) is via Composer, as a dependency within your Drupal project. This ensures that the correct Drush version compatible with your Drupal version is used.<br><code>composer require drush/drush</code><br>After installation, you can run Drush commands from your Drupal root directory (where `composer.json` and `web` or `docroot` are located) using `vendor/bin/drush` or by adding `vendor/bin` to your system's PATH.


title: HISTORY
content:
<I>Drush</I> (Drupal Shell) was first released in 2007 by Antoine Beaupré. It quickly gained popularity as the essential command-line utility for Drupal development and administration, becoming a de-facto standard in the Drupal ecosystem. Its development has been community-driven, adapting to various Drupal versions (Drupal 6, 7, 8, 9, and 10). With the advent of Composer for managing PHP dependencies in Drupal 8+, <I>Drush</I> transitioned to being primarily installed via Composer within individual Drupal projects, ensuring version compatibility and simplifying project setup. While <I>Drupal Console</I> emerged as an alternative with Symfony Console integration, <I>Drush</I> remains the most widely used and mature CLI tool for Drupal.


title: SYNOPSIS
content:
<b>dvd+rw-mediainfo</b> [<i>OPTIONS</i>] <i>DEVICE_PATH</i><br><br>Example: <b>dvd+rw-mediainfo</b> <i>/dev/sr0</i><br>Example: <b>dvd+rw-mediainfo</b> <i>-v /dev/cdrom</i>


title: PARAMETERS
content:
<b><i>DEVICE_PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the optical drive device (e.g., <i>/dev/sr0</i>, <i>/dev/cdrom</i>) where the media is inserted.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the operation and media characteristics.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, showing low-level communication or internal process details, primarily useful for developers or advanced troubleshooting.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the <i>dvd+rw-mediainfo</i> utility and exits.<br><br><b><b>-force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the command to attempt to access the device even if it doesn't appear to be a DVD+RW drive, which can be useful for certain types of media or drives.<br><br>


title: DESCRIPTION
content:
The <b>dvd+rw-mediainfo</b> command is a crucial utility from the <i>dvd+rw-tools</i> suite, designed to extract comprehensive information about an optical disc inserted into a compatible DVD or CD drive. It reports various details such as the disc's media type (e.g., DVD-R, DVD+R, DVD-RW, DVD+RW, CD-R, CD-RW, CD-ROM), its total capacity, the manufacturer's ID, supported write speeds, book type, and session-related data. This command is invaluable for verifying media compatibility, troubleshooting optical drive issues, and understanding the characteristics of a given blank or recorded disc before attempting write operations. It provides low-level insights into the media's capabilities, making it a staple for anyone dealing with optical disc burning or analysis on Linux systems.


title: CAVEATS
content:
<ul><li><b>Device Permissions:</b> The user executing the command must have appropriate read permissions on the optical drive device (e.g., <i>/dev/sr0</i>). Lack of permissions will result in an error.<br></li><li><b>Media Specificity:</b> While the command tries to identify various media types, its primary focus and most detailed output are often for DVD+RW and related DVD formats. Information for other media like CD-ROMs might be less extensive.<br></li><li><b>Drive Compatibility:</b> The accuracy and completeness of the reported information depend heavily on the optical drive's firmware and capabilities. Older drives might not report all modern media characteristics.<br></li><li><b>Output Interpretation:</b> Some of the reported fields, like "Book Type" or specific "write strategies," require a technical understanding of DVD standards to fully interpret their meaning.</li></ul>


title: TYPICAL USE CASE
content:
One of the most common uses for <i>dvd+rw-mediainfo</i> is to quickly check the type and status of a blank DVD or CD before attempting to write data. For instance, knowing if a disc is a DVD+R or DVD-R, or if it's already formatted, is crucial for selecting the correct burning strategy with tools like <i>growisofs</i>.


title: EXIT STATUS
content:
The command typically exits with a status of 0 upon successful execution, indicating that media information was retrieved. A non-zero exit status usually signifies an error, such as the absence of media, permission issues, or an unsupported drive/media combination. Scripting often relies on this exit status for conditional execution.


title: HISTORY
content:
The <i>dvd+rw-mediainfo</i> command is part of the <i>dvd+rw-tools</i> project, which emerged in the early 2000s to provide robust and free software tools for burning and managing DVD+RW and later DVD-R/W media on Linux and other Unix-like systems. This suite, primarily maintained by Andy Polyakov, addressed the growing need for reliable DVD burning capabilities in a command-line environment, complementing or replacing older CD-centric tools like <i>cdrecord</i>. <i>dvd+rw-mediainfo</i> was developed as an essential diagnostic component, allowing users to inspect media properties before complex burning operations, significantly improving reliability and user experience with DVD optical drives.


title: PARAMETERS
content:
<b><i>device</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the block device (e.g., <i>/dev/sda1</i>) containing the ext2/3/4 filesystem whose label is to be read or changed.<br><br><b><i>newlabel</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional string specifying the new volume label for the filesystem. If this argument is omitted, <b>e2label</b> will display the current label of the <i>device</i>. Labels can be up to 16 characters long.<br><br>


title: DESCRIPTION
content:
The <b>e2label</b> command is a utility used to display or change the volume label of an ext2, ext3, or ext4 filesystem.  <br>  Filesystem labels provide a human-readable identifier for disk partitions, making them easier to manage and reference compared to less intuitive UUIDs (Universally Unique Identifiers) or ephemeral device names like <i>/dev/sda1</i>.  <br>  When invoked without a <i>newlabel</i> argument, <b>e2label</b> prints the current label of the specified filesystem. When a <i>newlabel</i> is provided, the command modifies the filesystem's superblock to store the new label. This change can be particularly useful for configuring <i>/etc/fstab</i> entries, allowing filesystems to be mounted by their descriptive label rather than a potentially changing device path or a long UUID.  <br>  It requires root privileges to operate, as it directly modifies critical filesystem metadata.


title: CAVEATS
content:
The maximum length for a filesystem label is 16 characters.  <br>  Only ext2, ext3, and ext4 filesystems are supported.  <br>  Running <b>e2label</b> requires root privileges.  <br>  If a filesystem's label is changed and that label is used in <i>/etc/fstab</i> for mounting, <i>/etc/fstab</i> must be updated accordingly to ensure correct mounting behavior.


title: USAGE WITH /ETC/FSTAB
content:
Filesystem labels are often preferred over UUIDs or device paths in <i>/etc/fstab</i> for mounting filesystems. For instance, instead of <i>UUID=xxxxxxxx-xxxx-...</i> or <i>/dev/sda1</i>, one can use <i>LABEL=MyDataDisk</i>. This enhances readability and can make configurations more robust against changes in device paths that might occur after reboots or hardware modifications, as long as the label itself remains consistent.


title: HISTORY
content:
<b>e2label</b> is a fundamental utility that forms part of the <i>e2fsprogs</i> package, a comprehensive suite of user-space utilities for managing the ext2, ext3, and ext4 filesystems on Linux. Its development has closely paralleled the evolution and adoption of these filesystem types as the standard for Linux systems. As such, it has been a core component for filesystem administration for many years, providing a simple yet powerful way to identify and organize disk partitions.


title: PARAMETERS
content:
<b>count</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of latest kernels to keep. If provided without --keep, it acts as a positional argument.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b>-l, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed kernels and indicates which ones would be removed based on the specified count or default.<br><br><b>-d, --dry-run, --pretend</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a trial run without making any actual changes, showing what would be removed.<br><br><b>-r, --remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates the actual removal of identified old kernels. This option is required for changes to take effect.<br><br><b>-k N, --keep N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly specifies the number 'N' of latest kernels to keep. Overrides the positional 'count' argument.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs more detailed information during execution.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, showing only critical information.<br><br>


title: DESCRIPTION
content:
<i>eclean-kernel</i> is a specialized command-line utility primarily used on <b>Gentoo Linux</b> systems. Its main purpose is to help users manage and safely remove old, unused kernel images and their corresponding module directories from their system. Over time, after multiple kernel updates, various kernel versions can accumulate, consuming significant disk space. This tool intelligently identifies these older kernels, often by comparing their versions, and provides an option to remove them, while ensuring a specified number of the most recent kernels are kept for stability and rollback purposes. It's an essential part of system hygiene for Gentoo users, working alongside the <b>Portage</b> package manager and <b>genkernel</b>.<br><br>Users typically run <i>eclean-kernel</i> with a desired number of kernels to keep, for instance, `eclean-kernel 2` to keep the two latest kernels. It's highly recommended to perform a <i>dry-run</i> using the `--dry-run` or `-d` option before actual removal to see what would be purged. After removing kernels, users must manually update their bootloader configuration (e.g., <b>GRUB</b>) to reflect the changes.


title: CAVEATS
content:
<i>eclean-kernel</i> is a powerful tool that modifies critical system components.<br><ul><li>Always use the <b>--dry-run</b> (or <b>-d</b>) option first to preview which kernels will be removed before committing to the action.</li><li>Ensure you keep at least one known <i>working</i> kernel. It's often recommended to keep at least two or three to have a fallback in case the newest kernel has issues.</li><li><i>eclean-kernel</i> <i>does not</i> automatically update your bootloader configuration (e.g., <b>GRUB</b>). After removing kernels, you <i>must</i> manually run your bootloader's configuration update command (e.g., `grub-mkconfig -o /boot/grub/grub.cfg`) to prevent boot errors or missing entries.</li><li>This utility is primarily designed for <b>Gentoo Linux</b> systems and may not be available or function correctly on other distributions.</li></ul>


title: BOOTLOADER CONFIGURATION UPDATE
content:
After using `eclean-kernel` to remove old kernels, it is imperative to update your bootloader's configuration. For GRUB users, this typically involves running a command like `<b>grub-mkconfig -o /boot/grub/grub.cfg</b>` to regenerate the boot menu and remove entries for the now-deleted kernels. Failing to do so can result in boot errors or display of non-existent kernel options.


title: GENTOO LINUX SPECIFIC
content:
While the concept of removing old kernels exists across Linux distributions, `eclean-kernel` is a utility specific to <b>Gentoo Linux</b>. Its functionality is tightly integrated with Gentoo's kernel management practices, such as those involving `genkernel` and the structure of `/boot` and `/lib/modules` on a Gentoo system.


title: HISTORY
content:
<i>eclean-kernel</i> is part of the <b>gentoolkit</b> package (`app-portage/gentoolkit`), a collection of essential tools for Gentoo Linux system administration. It was developed to address the common issue of accumulating old kernel images, which is particularly relevant in Gentoo due to its source-based nature and the frequent kernel compilation process. Its development ties into the broader Gentoo philosophy of giving users fine-grained control over their system while providing helper utilities for common maintenance tasks.


title: PARAMETERS
content:
<b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only delegation information, suppressing detailed query results.<br><br><b><b>-s</b> <I>server</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start the trace at the specified <I>server</I> instead of the root nameservers.<br><br><b><b>-q</b> <I>querytype</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the DNS query type (e.g., A, MX, NS, PTR, ANY). Default is A (address).<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable the internal DNS cache, forcing fresh queries for every lookup.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the tracing process.<br><br><b><b>-r</b> <I>retries</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of retries for each DNS query when a server doesn't respond.<br><br><b><b>-t</b> <I>timeout</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the timeout in seconds for each DNS query attempt.<br><br><b><b>-S</b> <I>source_ip</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the source IP address for outgoing DNS queries.<br><br><b><b>-N</b> <I>num_queries</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of times to query each server for a specific query type.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version information and exit.<br><br>


title: DESCRIPTION
content:
<i>dnstracer</i> is a command-line utility designed to trace the DNS resolution path of a given domain name. Unlike simple query tools like <i>dig</i> or <i>nslookup</i>, <i>dnstracer</i> iteratively queries DNS servers, starting from the root servers, to follow the delegation chain down to the authoritative name servers for a domain. This process helps in identifying misconfigurations, unreachable DNS servers, and understanding how a domain's DNS information is propagated across the internet. It's particularly useful for diagnosing complex DNS resolution issues or verifying DNS server health by mapping the entire delegation path.


title: CAVEATS
content:
Requires outbound UDP port 53 access for DNS queries. The tracing process can be slow for domains with many delegation levels or unresponsive DNS servers in the chain. Its accuracy relies on correct DNS server configurations and responses.


title: OPERATION PRINCIPLE
content:
<i>dnstracer</i> works by performing iterative DNS queries. It begins by querying a root DNS server for the target hostname. The root server typically provides a referral to a Top-Level Domain (TLD) server. <i>dnstracer</i> then queries the TLD server, which in turn refers to the next authoritative server in the delegation chain. This process continues until an authoritative answer for the hostname is obtained, effectively mapping the entire delegation path from the DNS root to the specific domain's records.


title: HISTORY
content:
<i>dnstracer</i> was developed by <I>Edwin Groothuis</I>. It emerged as a specialized tool for detailed DNS delegation analysis, offering unique insights beyond traditional DNS lookup utilities. While its core functionality remains highly relevant for DNS troubleshooting, its active development has slowed compared to some other network utilities.


title: PARAMETERS
content:
<b><b>[options]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Global options</i> that apply to the <b>dotnet</b> command itself, rather than a specific subcommand. For example, <code>--info</code> provides detailed information about the .NET environment.<br><br><b><b>[command]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <i>action</i> to perform. This is the core functionality, such as <code>build</code>, <code>run</code>, <code>publish</code>, <code>test</code>, or <code>new</code>. Each command has its own specific options and arguments.<br><br><b><b>[arguments]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Arguments</i> passed to the specific command or application being executed. For instance, in <code>dotnet run --project myapp.csproj</code>, <code>myapp.csproj</code> is an argument for the <code>run</code> command.<br><br><b><b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about the .NET SDKs, runtimes, and environment variables currently installed.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the .NET SDK in use.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows command-line help for the specified command or global options if no command is given.<br><br><b><b>new</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new .NET project, configuration file, or solution based on a template (e.g., <code>dotnet new console</code>).<br><br><b><b>restore</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores the NuGet packages for a project. This command is typically implicitly run by other commands like <code>build</code> and <code>run</code>.<br><br><b><b>build</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Builds a project and all its dependencies. Compiles source code into an executable or library.<br><br><b><b>run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes source code directly without any explicit compile or launch commands. Useful for local development and testing.<br><br><b><b>publish</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Publishes the application and its dependencies to a folder for deployment. Creates a deployable package.<br><br><b><b>test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs tests from a specified project using a test runner (e.g., xUnit, NUnit).<br><br><b><b>add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a package reference or project reference to a project file (e.g., <code>dotnet add package Newtonsoft.Json</code>).<br><br><b><b>remove</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a package reference or project reference from a project file.<br><br><b><b>tool</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages .NET global, local, and project-specific tools (e.g., <code>dotnet tool install --global some-tool</code>).<br><br>


title: DESCRIPTION
content:
The <b>dotnet</b> command is the primary command-line interface (CLI) for developing, building, running, and publishing .NET applications across various operating systems, including Linux, Windows, and macOS. It serves as a unified entry point for all .NET SDK functionalities.<br><br>Developers use <b>dotnet</b> to manage project files, restore NuGet packages, compile source code, execute applications, run tests, and deploy their software. It abstracts away much of the underlying build system complexity, providing a consistent experience regardless of the project type (console apps, web APIs, desktop applications, etc.).<br><br>The command allows for highly automated workflows, making it a cornerstone for continuous integration and deployment (CI/CD) pipelines. Its modular design, relying on SDKs and runtimes, enables developers to target specific .NET versions and ensure application compatibility.


title: CAVEATS
content:
While <b>dotnet</b> offers cross-platform consistency, subtle differences in file paths, environment variables, and native library dependencies can still cause issues between operating systems. Versioning conflicts between installed SDKs and runtimes can also be complex, requiring careful management, especially when working on multiple projects targeting different .NET versions. Containerization (e.g., Docker) is often used to mitigate these environment-specific challenges.


title: SDKS AND RUNTIMES
content:
The <b>dotnet</b> CLI relies on <i>SDKs (Software Development Kits)</i>, which include all necessary components for developing (compiler, build tools, CLI), and <i>Runtimes</i>, which are only needed to execute applications. Users install SDKs for development, and often only runtimes for deployment environments.


title: PROJECT FILES (.CSPROJ)
content:
The behavior of <b>dotnet</b> commands is primarily driven by the project file (e.g., <code>.csproj</code> for C#, <code>.fsproj</code> for F#). These XML-based files define project properties, dependencies, and build configurations, enabling the CLI to understand how to process and build the application.


title: HISTORY
content:
The <b>dotnet</b> command is a cornerstone of .NET Core, which was first released in 2016 as an open-source, cross-platform successor to the proprietary, Windows-only .NET Framework. The CLI was designed from the ground up to be portable and efficient, addressing the need for .NET applications to run seamlessly on Linux and macOS servers and desktops. Its development marked a significant shift in Microsoft's strategy, embracing open-source principles and community contributions. With the release of .NET 5 in 2020, .NET Core officially superseded .NET Framework, consolidating the platform under a single, unified <b>dotnet</b> umbrella.


title: SYNOPSIS
content:
ecryptfs-insert-wrapped-passphrase-into-keyring [ -w <I>WRAPPED_PASSPHRASE_FILE</I> ] [ -S ] [ -m <I>MASTER_PASSPHRASE</I> ] [ -v ]


title: PARAMETERS
content:
<b>-w <I>WRAPPED_PASSPHRASE_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the file containing the eCryptfs wrapped passphrase that needs to be unwrapped and inserted into the keyring.<br><br><b>-S</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the command to read the unwrapped (plaintext) passphrase directly from standard input (stdin) instead of attempting to unwrap a file. This is useful for passing the passphrase securely from another process.<br><br><b>-m <I>MASTER_PASSPHRASE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the master passphrase used to unwrap and decrypt the <I>WRAPPED_PASSPHRASE_FILE</I>. If not provided, the user may be prompted interactively for the master passphrase.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the command's execution, which can be helpful for debugging.<br><br>


title: DESCRIPTION
content:
The <i>ecryptfs-insert-wrapped-passphrase-into-keyring</i> command is a utility within the eCryptfs filesystem suite. Its primary function is to decrypt a previously 'wrapped' (encrypted) passphrase and insert the resulting plaintext passphrase into the kernel keyring. This process is crucial for automating the mounting of eCryptfs encrypted directories, especially user home directories, without requiring manual passphrase entry at mount time.<br><br>Typically, the command is used to take a wrapped passphrase from a file (e.g., `~/.ecryptfs/wrapped-passphrase`) and, using a master passphrase (often the user's login password), unwrap it. Once unwrapped, the passphrase becomes available in the kernel keyring, allowing eCryptfs mount helpers (like <i>mount.ecryptfs_private</i>) to automatically retrieve the necessary key for decryption and mounting. This enables seamless access to encrypted data during system boot or user login.


title: CAVEATS
content:
Using the <b>-m</b> option on the command line can expose the master passphrase in shell history or process listings, posing a security risk. It's generally safer to allow the command to prompt for the master passphrase interactively or pass it via standard input using the <b>-S</b> option if automating.<br><br>The inserted passphrase remains in the kernel keyring until explicitly removed, the system reboots, or the keyring expires. Proper management of keys in the keyring is essential for security and ensuring data accessibility.


title: USAGE WITH AUTOMATED MOUNTS
content:
This command is frequently utilized in system startup scripts, PAM configurations, or <b>/etc/fstab</b> entries (often indirectly via <b>mount.ecryptfs_private</b>) to automatically decrypt and mount eCryptfs volumes. By inserting the passphrase into the kernel keyring before the mount operation, eCryptfs can access the necessary cryptographic keys without user interaction.


title: KEYRING INTERACTION
content:
The command interacts with the Linux kernel's keyring service. The unwrapped passphrase is added as a key, typically associated with the user's session or the system, which eCryptfs then looks up by its key description to unlock the encrypted data. The key remains in the keyring until removed or the system is rebooted.


title: HISTORY
content:
The <i>ecryptfs-insert-wrapped-passphrase-into-keyring</i> command is part of the eCryptfs project, which was initially developed by Canonical Ltd. and IBM. eCryptfs emerged as a stacked cryptographic filesystem for Linux, designed to provide per-file encryption, primarily for user home directories. This command specifically addressed the need for automated mounting of these encrypted directories, especially during system boot or user login, where prompting for a passphrase would be inconvenient or impossible. Its development was driven by the goal of making encrypted home directories practical and easy to manage in distributions like Ubuntu, where it became a standard feature.


title: SEE ALSO
content:
ecryptfs(7), ecryptfs-unwrap-passphrase(1), ecryptfs-wrap-passphrase(1), mount.ecryptfs_private(8), keyctl(1)


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br><b><b>-d</b> <i>directory</i>, <b>--directory</b>=<i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target encrypted directory to unmount, overriding the default private directory (e.g., <b>~/.Private</b>).<br><br>


title: DESCRIPTION
content:
<i>ecryptfs-umount-private</i> is a utility designed to securely unmount a private directory encrypted with eCryptfs. It is typically used in conjunction with <i>ecryptfs-mount-private</i>, which mounts the encrypted directory, providing access to its decrypted contents. When a private directory is unmounted, its contents become inaccessible and remain in their encrypted form on the disk, significantly enhancing data privacy and security. This command ensures that sensitive information is no longer available to processes or users after a session ends or when explicit unmounting is desired. It's often invoked automatically by system login/logout scripts to manage user home directories that are encrypted with eCryptfs, making it a crucial component for protecting user data in multi-user or shared computing environments.


title: CAVEATS
content:
The command will fail if any files or subdirectories within the mounted private directory are still in use by open applications or processes. All open files must be closed before unmounting. <br><br>Unmounting only makes the <i>decrypted view</i> inaccessible; the encrypted data still resides on the underlying filesystem. <br><br>It requires the <i>ecryptfs-utils</i> package to be installed on the system. <br><br>For persistent encryption, ensure proper system shutdown or logout procedures that automatically call this command.


title: COMMON USAGE
content:
Most commonly, <b>ecryptfs-umount-private</b> is run without any arguments, which causes it to attempt to unmount the user's default private directory (e.g., <b>~/.Private</b>) and make the decrypted view (e.g., <b>~/Private</b>) inaccessible. It is often invoked automatically during system logout or shutdown procedures configured to secure user data.


title: ERROR HANDLING
content:
If the command fails due to files being in use (e.g., 'Device or resource busy'), a common solution is to identify and terminate processes accessing the directory (e.g., using <b>lsof</b> or <b>fuser</b>), or simply log out and back in if system scripts are managing the mount points automatically.


title: HISTORY
content:
eCryptfs, and consequently <i>ecryptfs-umount-private</i>, has been a significant component of Linux distributions, particularly Ubuntu, for providing per-user encrypted home directories. Developed over the years by various contributors, including Michael Halcrow, its primary goal was to offer a transparent filesystem-level encryption solution. While its usage for new installations has somewhat declined in favor of full-disk encryption (like LUKS) or more modern options like <i>fscrypt</i> for individual directories, <i>ecryptfs</i> remains a robust solution, especially for legacy systems or specific use cases requiring a stacked cryptographic filesystem.


title: PARAMETERS
content:
<b>-c, --create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Create</b> a new boot entry.<br><br><b>-b, --bootnum &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify <b>boot entry number</b> (hex).<br><br><b>-B, --delete-bootnum &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Delete</b> the specified boot entry.<br><br><b>-a, --active &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mark boot entry <i>num</i> as <b>active</b>.<br><br><b>-A, --inactive &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mark boot entry <i>num</i> as <b>inactive</b>.<br><br><b>-u, --update-bootnum &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Update</b> an existing boot entry.<br><br><b>-o, --bootorder &lt;order&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the <b>boot order</b> (comma-separated hex list).<br><br><b>-O, --delete-bootorder</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Delete all entries</b> from the boot order.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print <b>extra information</b> during operation.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Suppress</b> non-error output.<br><br><b>-H, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display <b>short help</b> message.<br><br><b>-L, --label &lt;label&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set <b>boot entry label</b> (description).<br><br><b>-l, --loader &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the <b>boot loader EFI file</b>.<br><br><b>-d, --disk &lt;disk&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify <b>disk</b> containing the boot loader.<br><br><b>-p, --part &lt;part&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify <b>partition number</b> for boot loader.<br><br><b>-w, --write-string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Write new variables</b> to NVRAM.<br><br><b>-s, --show-string</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Show current variables</b> in NVRAM.<br><br><b>-S, --show-summary</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a <b>summary</b> of boot variables.<br><br><b>-t, --timeout &lt;seconds&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set <b>boot menu timeout</b> in seconds.<br><br><b>-T, --delete-timeout</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Delete</b> the timeout variable.<br><br><b>-n, --next-boot &lt;num&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set <b>next boot entry</b> for a single boot.<br><br><b>-N, --delete-next-boot</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Delete</b> the next boot variable.<br><br><b>-g, --gpt</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force creation of a <b>GPT partition entry</b>.<br><br><b>-D, --bootnext-default</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use default next boot if specified.<br><br><b>-i, --iface &lt;iface&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify <b>interface</b> for network boot.<br><br><b>-@, --append-args &lt;args&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Append arguments</b> to the loader path.<br><br><b>--iso-8859-1</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <b>ISO-8859-1</b> encoding for string variables.<br><br><b>--unicode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <b>Unicode</b> encoding (default).<br><br>


title: DESCRIPTION
content:
<i>efibootmgr</i> is a command-line utility used to manage UEFI (Unified Extensible Firmware Interface) boot entries. It allows users to <b>create, delete, reorder, and modify</b> entries in the UEFI NVRAM (Non-Volatile Random Access Memory), which the firmware uses to determine boot order and paths. This tool is essential for systems booting via UEFI, enabling control over installed operating systems' boot options without directly interacting with the firmware setup utility. It requires <b>root privileges</b> and a system booted in UEFI mode, as it directly interacts with the EFI system variables exposed through the `efivarfs` filesystem. Commonly used to add new OS entries, change the default boot order, or specify one-time boot options.


title: CAVEATS
content:
<i>efibootmgr</i> requires the system to be booted in <b>UEFI mode</b>, not BIOS/CSM. It also demands <b>root privileges</b> for any modifications. Changes are written directly to NVRAM, making them persistent; incorrect usage can lead to an <b>unbootable system</b>. Ensure the `efivarfs` filesystem is mounted, typically at <i>/sys/firmware/efi/efivars</i>, for proper operation.


title: EFI VARIABLES
content:
<i>efibootmgr</i> interacts with <b>EFI variables</b> stored in NVRAM, exposed via the <i>efivarfs</i> filesystem (e.g., <i>/sys/firmware/efi/efivars</i>).


title: BOOT ORDER (BOOTORDER)
content:
The <b>BootOrder</b> variable defines the sequence in which the firmware attempts to boot entries. It's a comma-separated list of hexadecimal boot entry numbers.


title: BOOT NEXT (BOOTNEXT)
content:
The <b>BootNext</b> variable specifies a boot entry to be used <i>only for the next boot</i>, useful for single-time reboots into specific environments.


title: HISTORY
content:
<i>efibootmgr</i> was developed to provide a native Linux command-line interface for managing UEFI boot entries. Its emergence paralleled the increasing adoption of UEFI firmware in modern computers, offering a more programmatic and scriptable alternative to firmware setup utilities or Windows-specific tools. It has become a standard utility in most Linux distributions, simplifying UEFI boot management directly from the OS.


title: PARAMETERS
content:
<b><B>-h</B>, <B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits, showing available command-line options.<br><br><b><B>-d</B> <I>display</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the EGL display connection to query, typically an X display string like <I>:0</I> or a Wayland display name.<br><br>


title: DESCRIPTION
content:
<i>eglinfo</i> is a command-line utility used to query and display detailed information about the EGL (Embedded-System Graphics Library) implementation available on a system. EGL serves as an interface between Khronos rendering APIs like OpenGL ES or OpenVG, and the underlying native windowing system. This tool is invaluable for developers and system administrators to verify EGL driver installation, debug graphics-related issues, and inspect the capabilities exposed by the EGL driver and hardware. It typically lists available EGL displays, supported configurations (visuals), extensions, client APIs, and other relevant details. It helps in understanding what EGL features are supported by the graphics stack, making it a critical tool for graphics stack diagnostics.


title: CAVEATS
content:
<i>eglinfo</i> requires a correctly installed EGL driver and a compatible graphics stack to provide meaningful output. Its availability depends on the installation of packages such as <I>mesa-utils-egl</I> or similar utility collections, which bundle EGL diagnostic tools. The output can be extensive, especially on systems with numerous supported EGL configurations and extensions, which might require scrolling to review entirely.


title: PURPOSE AND OUTPUT DETAILS
content:
<i>eglinfo</i> provides critical insights into the EGL environment. The output typically includes the EGL vendor, version, client and display extensions, supported API versions, and a comprehensive list of EGL configurations. Each configuration details visual attributes such as buffer size, depth buffer bits, stencil bits, number of samples for anti-aliasing, color buffer format (e.g., RGBA), and whether it supports window, pixmap, or pbuffer rendering surfaces. This detailed output is essential for verifying application compatibility, debugging rendering issues, and understanding the full scope of graphics capabilities exposed by the system's EGL stack.


title: HISTORY
content:
<i>eglinfo</i> is developed as part of the <B>Mesa 3D Graphics Library</B>, an open-source implementation of OpenGL, OpenGL ES, Vulkan, and other graphics APIs. It emerged as EGL gained prominence, particularly in embedded systems, Wayland compositions, and non-X11 environments, where EGL serves as the crucial glue layer between graphics applications and the underlying display hardware. Its development closely tracks the evolution of the EGL specification and Mesa's EGL implementation, providing a standard way to query EGL capabilities across various platforms.


title: PARAMETERS
content:
<b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output the trailing newline character.<br><br><b><b>-e</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable interpretation of backslash escapes (e.g., <i>\n</i> for newline, <i>\t</i> for tab, <i>\\</i> for a literal backslash).<br><br><b><b>-E</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable interpretation of backslash escapes (this is the default for GNU <b>echo</b>, overrides <b>-e</b> if both are present).<br><br><b><i>STRING...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more strings of text or variables to be displayed. If multiple strings are provided, they are separated by spaces in the output.<br><br>


title: DESCRIPTION
content:
The <b>echo</b> command is a fundamental utility in Unix-like operating systems, primarily used to display a line of text or variable content on the standard output. It's an indispensable tool in shell scripting, where it's widely employed for various purposes such as printing messages to the user, debugging scripts by showing variable values, creating simple files, or sending data to other commands through pipes.<br><br>The command can interpret backslash-escaped characters (like <i>\n</i> for newline, <i>\t</i> for tab) if the <b>-e</b> option is used, allowing for formatted output. Conversely, the <b>-n</b> option prevents <b>echo</b> from appending a trailing newline character to its output, which is useful when building prompts or concatenating output. Its simplicity and effectiveness make it one of the most frequently used commands for basic output operations.


title: CAVEATS
content:
The command 'ego' is <i>not</i> a standard Linux command found in typical distributions. This analysis provides information for the widely used <b>echo</b> command, which is a standard utility that may have been the intended command due to phonetic similarity or a typo. Users should be aware that <b>echo</b> behavior can differ between shell built-ins and stand-alone utilities.


title: SHELL BUILT-IN VS. STANDALONE
content:
The <b>echo</b> command is commonly provided as a built-in command by various shells (like <b>bash</b>, <b>zsh</b>, <b>ksh</b>) for faster execution, as well as a standalone executable (e.g., <i>/bin/echo</i>). The behavior of the shell's built-in version might sometimes differ subtly from the standalone utility, particularly regarding the default interpretation of escape sequences or the handling of specific options. For scripting that requires maximum portability and predictable output across different environments, <b>printf</b> is generally recommended over <b>echo</b> due to its more consistent behavior.


title: HISTORY
content:
The <b>echo</b> command has been an integral part of Unix-like operating systems since their early versions. Its behavior, particularly regarding the interpretation of backslash escapes and the presence or default of the <b>-E</b> option, has seen some variations across different shell implementations (e.g., <b>bash</b>, <b>zsh</b>, <b>ksh</b>) and the standalone <i>/bin/echo</i> utility. This historical inconsistency, especially when aiming for robust and portable scripting, often led to the development and preference for the <b>printf</b> command for more controlled and consistent output formatting.


title: SYNOPSIS
content:
<b>electrum</b> [<b>global_options</b>] [<b>subcommand</b>] [<b>subcommand_options</b>] [<i>arguments</i>]<br>The <b>electrum</b> command can launch the graphical user interface by default. For command-line interface (CLI) operations, specific <b>subcommands</b> are typically used. Many CLI commands require a running <b>electrum daemon</b> for full functionality, especially for real-time wallet interactions.


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b>--gui</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly start the graphical user interface.<br><br><b>--cli</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly start the command-line interface (often implied when a subcommand is given).<br><br><b>--wallet <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the wallet file to use, allowing management of multiple wallets.<br><br><b>--testnet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the Bitcoin <i>testnet</i> for development and testing purposes.<br><br><b>--mainnet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the Bitcoin <i>mainnet</i> (the default and real Bitcoin network).<br><br><b>daemon</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Subcommand to start or manage the Electrum background service.<br>• <b>daemon start</b>: Starts the Electrum daemon in the background.<br>• <b>daemon stop</b>: Stops the running daemon instance.<br>• <b>daemon status</b>: Shows the status of the daemon.<br><br><b>commands</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all available CLI commands with a brief description.<br><br><b>listaddresses</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all addresses within the current wallet, showing their type and associated labels.<br><br><b>getbalance</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the wallet's total, confirmed, and unconfirmed Bitcoin balance.<br><br><b>history</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the chronological transaction history for the entire wallet.<br><br><b>getaddresshistory <address></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the transaction history for a specific Bitcoin address.<br><br><b>createnewaddress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate and display a new receiving address for the wallet.<br><br><b>payto <address> <amount> [feerate]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create, sign, and optionally broadcast a transaction to send a specified <i>amount</i> of Bitcoin to an <i>address</i>. An optional <i>feerate</i> can be provided.<br><br><b>broadcast <raw_tx></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Broadcast a raw, signed Bitcoin transaction string to the network.<br><br><b>restore <seed_phrase></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore a wallet using its 12-word seed phrase.<br><br><b>getaddressunspent <address></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all unspent transaction outputs (UTXOs) for a given address.<br><br>


title: DESCRIPTION
content:
Electrum is a popular, open-source, and lightweight Bitcoin wallet. It uses <i>Simplified Payment Verification (SPV)</i>, meaning it doesn't download the entire blockchain, which makes it fast and resource-efficient. Key features include strong security (cold storage, multi-signature capabilities, hardware wallet integration), enhanced privacy, ease of use, and a robust command-line interface (CLI). The CLI is particularly powerful, allowing for advanced scripting, automation of transactions, comprehensive wallet management, and seamless interaction with the <b>Electrum daemon</b>. This makes it an ideal tool for developers, system administrators, and power users seeking programmatic control over their Bitcoin funds. Electrum supports various Bitcoin networks, including mainnet, testnet, and regtest, offering flexibility for different use cases and development environments.


title: CAVEATS
content:
When using the CLI, <i>sensitive information</i> such as seed phrases or private keys can be exposed to terminal history or scripts if not handled with extreme care. Always verify command parameters, especially addresses and amounts, before executing financial transactions. Electrum's <i>SPV model</i> relies on trusting Electrum's servers for initial block header validation, although security is enhanced by chaining to a full node or verifying block headers. Many real-time wallet operations via the CLI require the <b>Electrum daemon</b> to be running in the background.


title: GUI VS. CLI
content:
<b>Electrum</b> offers both an intuitive graphical user interface (GUI) and a powerful command-line interface (CLI). The GUI is ideal for everyday users, while the CLI provides advanced capabilities for scripting, automation, and server environments without a display.


title: DAEMON MODE
content:
For persistent background operation and API interactions, <b>Electrum</b> can be run as a daemon. This allows other applications or scripts to seamlessly communicate with the wallet without repeatedly launching the main <b>Electrum</b> application.


title: HISTORY
content:
<b>Electrum</b> was first released in 2011 by <i>Thomas Voegtlin</i>, making it one of the pioneering and most enduring Bitcoin wallets. Its immediate popularity stemmed from its innovative focus on speed, light-client functionality (<i>Simplified Payment Verification - SPV</i>), and robust security features like hardware wallet support and multi-signature capabilities. Over the years, it has continuously evolved, integrating advanced features such as <i>Lightning Network</i> support and developing a comprehensive command-line interface, cementing its position as a cornerstone in the Bitcoin ecosystem.


title: SYNOPSIS
content:
<b>envoy</b> [<i>OPTIONS...</i>]<br><b>envoy</b> <i>--config-path</i> &lt;<i>path</i>&gt; [<i>OPTIONS...</i>]


title: PARAMETERS
content:
<b><i>--config-path</i> &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the main configuration file, typically a YAML file, from which Envoy loads its listeners, clusters, and routes.<br><br><b><i>--config-yaml</i> &lt;<i>yaml</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the configuration directly as a YAML string, allowing for inline configuration without a separate file.<br><br><b><i>--concurrency</i> &lt;<i>num</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of worker threads that Envoy will use for processing requests. Defaults to the number of hardware cores available.<br><br><b><i>--admin-address-path</i> &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file where the address (e.g., <i>IP:port</i>) of the administrative interface will be written upon Envoy startup.<br><br><b><i>--log-level</i> &lt;<i>level</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity for Envoy. Common levels include <i>trace, debug, info, warn, error, critical</i>. Defaults to <i>info</i>.<br><br><b><i>--drain-time-s</i> &lt;<i>seconds</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the time in seconds that Envoy will wait for connections to drain during hot restart or graceful shutdown, allowing ongoing requests to complete.<br><br><b><i>--parent-shutdown-time-s</i> &lt;<i>seconds</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the time in seconds that Envoy will wait for the parent process to gracefully shut down during a hot restart cycle.<br><br><b><i>--disable-hot-restart</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the hot restart functionality. This is generally not recommended for production environments where high availability is crucial.<br><br><b><i>--service-cluster</i> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the service cluster that this particular Envoy instance belongs to, useful for metrics and tracing.<br><br><b><i>--service-node</i> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the name of the service node that this Envoy instance represents within its service cluster, often unique per instance.<br><br><b><i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive help message detailing all available command-line options and exits.<br><br><b><i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the current version of the Envoy Proxy and exits.<br><br>


title: DESCRIPTION
content:
<i>Envoy Proxy</i> is an <b>open-source, high-performance edge/middle/service proxy</b> designed for cloud-native applications.<br>It acts as a <b>universal data plane</b> for microservices and distributed systems. Built by Lyft, it's a key component of the service mesh architecture, providing features like <b>load balancing, circuit breaking, health checks, traffic splitting, and advanced routing</b>.<br>Envoy excels in <b>observability</b>, offering extensive metrics, distributed tracing, and detailed access logging. It supports various protocols (HTTP/1.1, HTTP/2, gRPC, TCP, and more) and can be deployed as a sidecar, frontend proxy, or gateway.<br>Its <b>dynamic configuration capabilities</b> allow for live updates without restarts, making it an essential tool for modern distributed systems.


title: CAVEATS
content:
<b>Complex Configuration:</b> Envoy's powerful features come with a sophisticated configuration, typically managed via YAML files, which can have a <b>steep learning curve</b> and require deep architectural understanding.<br><b>Control Plane Dependency:</b> For dynamic and large-scale deployments, Envoy is usually integrated with a 'control plane' (e.g., <i>Istio, App Mesh</i>, or custom solutions) that pushes configurations to instances, rather than relying solely on static files.<br><b>Resource Usage:</b> While highly performant, Envoy can consume significant CPU and memory resources, especially with a large number of listeners, routes, or connections.


title: HOT RESTART CAPABILITIES
content:
<i>Envoy</i> supports <b>hot restart</b>, a critical feature enabling configuration updates and binary upgrades to be applied without dropping existing connections. This ensures high availability and minimal disruption during maintenance windows.


title: SERVICE MESH INTEGRATION
content:
<i>Envoy</i> is a de-facto standard for the <b>data plane in service mesh architectures</b>. It sits alongside each service instance (often as a sidecar), handling all inbound and outbound network traffic, providing transparent network-level features like load balancing, circuit breaking, and traffic management.


title: EXTENSIVE OBSERVABILITY
content:
One of <i>Envoy's</i> strongest features is its built-in <b>observability</b>. It provides detailed statistics, supports distributed tracing (e.g., <i>Zipkin, Jaeger</i>), and offers comprehensive access logging, making it invaluable for monitoring and debugging complex microservices.


title: HISTORY
content:
Developed by <i>Lyft</i> in <b>2016</b> to address networking challenges in their rapidly growing microservices architecture, <i>Envoy Proxy</i> was <b>open-sourced in September 2016</b>. Its robust features and extensibility quickly gained traction within the cloud-native community. In <b>2018</b>, it became the <b>first project to graduate from the Cloud Native Computing Foundation (CNCF)</b>, solidifying its role as a foundational component in modern distributed systems and service mesh implementations.


title: PARAMETERS
content:
<b><I>-v, --version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information about <b>envsubst</b> and exits.<br><br><b><I>-h, --help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage instructions and exits.<br><br><b><I>SHELL-FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional argument specifying a space-separated list of shell variable names (e.g., <I>HOME USER</I>). If provided, <b>envsubst</b> will <i>only</i> substitute variables listed in this format string. If omitted, it will substitute <i>all</i> valid shell variables found in the input that are set in the environment. This offers fine-grained control over which variables are processed.<br><br>


title: DESCRIPTION
content:
The <b>envsubst</b> command is a powerful utility from the <i>gettext</i> package designed to substitute environment variables found within text files. It reads from standard input or specified files, identifies patterns matching shell variable expansion syntax (like <I>$VAR</I> or <I>${VAR}</I>), and replaces them with their corresponding values from the current environment.<br><br>It's widely used in scripting, especially in dynamic environments such as Docker containers, CI/CD pipelines, or configuration management, where application settings need to be customized without modifying source files. <b>envsubst</b> handles various forms of variable expansion, including those with default values (e.g., <I>${VAR:-default}</I>), empty values (<I>${VAR:+value_if_set}</I>), or error messages (<I>${VAR:?error_message}</I>). This makes it an ideal tool for basic templating and configuration generation based on runtime environment variables.


title: CAVEATS
content:
Care should be taken when using <b>envsubst</b> with untrusted input, as patterns resembling shell variables could unintentionally expose sensitive environment variables. It's recommended to either control the input source or explicitly limit the substituted variables using the <I>SHELL-FORMAT</I> argument.<br><br>Note that <b>envsubst</b> performs only <i>variable substitution</i>; it does not execute shell commands or perform arithmetic expansions like a full shell interpreter. Its functionality is limited to simple environment variable replacement based on shell-like syntax.


title: USAGE AND EXAMPLES
content:
<b>envsubst</b> typically operates by reading from standard input and writing to standard output. This makes it highly versatile for use in pipes.<br><br><i>Example 1: Substituting a single variable</i><br><b>echo '$USER is logged in' | envsubst</b><br><br><i>Example 2: Substituting multiple variables, limiting scope</i><br><b>echo 'User: $USER<br>Home: $HOME<br>Path: $PATH' | envsubst '$USER $HOME'</b><br><br>In the second example, only <I>$USER</I> and <I>$HOME</I> would be substituted, while <I>$PATH</I> would remain untouched, demonstrating how the <I>SHELL-FORMAT</I> argument controls which variables are processed.


title: SUPPORTED VARIABLE SYNTAX
content:
<b>envsubst</b> recognizes various forms of shell parameter expansion:<br><b><I>$VAR</I> and <I>${VAR}</I>:</b> Basic variable substitution.<br><b><I>${VAR:-word}</I>:</b> If <b>VAR</b> is unset or null, the result of the expansion is <b>word</b>. Otherwise, the value of <b>VAR</b> is substituted.<br><b><I>${VAR:=word}</I>:</b> If <b>VAR</b> is unset or null, <b>word</b> is assigned to <b>VAR</b>, and its value is substituted.<br><b><I>${VAR:?message}</I>:</b> If <b>VAR</b> is unset or null, <b>message</b> is printed to standard error, and the command exits.<br><b><I>${VAR:+word}</I>:</b> If <b>VAR</b> is unset or null, nothing is substituted. Otherwise, <b>word</b> is substituted.


title: HISTORY
content:
<b>envsubst</b> is part of the GNU <i>gettext</i> utilities, a project primarily focused on internationalization and localization of software. While its original purpose was related to processing message catalogs, its simple and effective variable substitution capability made it a standalone utility widely adopted for dynamic configuration generation, particularly in modern DevOps practices. Its development is integrated with the broader <i>gettext</i> project, which has been under continuous development for decades.


title: SYNOPSIS
content:
This is not a standalone command but an escape sequence. Its general form is:<br><br><b><I>ESC</I>[<I>Ps</I>;...;<I>Ps</I>m</b><br><br>where <b><I>ESC</I></b> represents the ASCII Escape character (decimal 27), <b>[</b> is the Control Sequence Introducer (CSI) indicator, and <b><I>Ps</I></b> are one or more numeric SGR (Select Graphic Rendition) parameters, separated by semicolons. The sequence concludes with the character <b>m</b>.


title: PARAMETERS
content:
<b>0</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resets all attributes (bold, colors, etc.) to their default state.<br><br><b>1</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the font to bold or increased intensity.<br><br><b>2</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the font to faint or decreased intensity.<br><br><b>3</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the font to italic.<br><br><b>4</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies an underline to the text.<br><br><b>5</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables blinking text.<br><br><b>7</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Swaps foreground and background colors (reverse video).<br><br><b>8</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides text (foreground color is same as background).<br><br><b>9</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a strikethrough to the text.<br><br><b>21</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables bold or faint (often paired with 1 or 2).<br><br><b>22</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables bold or faint for standard intensity.<br><br><b>23</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables italic.<br><br><b>24</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables underline.<br><br><b>25</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables blinking.<br><br><b>27</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables reverse video.<br><br><b>28</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables hidden text.<br><br><b>29</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables strikethrough.<br><br><b>30-37</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets standard foreground colors (black, red, green, yellow, blue, magenta, cyan, white).<br><br><b>40-47</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets standard background colors (black, red, green, yellow, blue, magenta, cyan, white).<br><br><b>90-97</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets bright foreground colors.<br><br><b>100-107</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets bright background colors.<br><br><b>38;5;<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets 256-color foreground, where N is 0-255.<br><br><b>48;5;<I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets 256-color background, where N is 0-255.<br><br><b>38;2;<I>R</I>;<I>G</I>;<I>B</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets truecolor (24-bit) foreground using RGB values.<br><br><b>48;2;<I>R</I>;<I>G</I>;<I>B</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets truecolor (24-bit) background using RGB values.<br><br>


title: DESCRIPTION
content:
The term "esc-m" most commonly refers to the final character 'm' within an ANSI escape sequence used for Select Graphic Rendition (SGR). This sequence, typically starting with an <i>Escape</i> character (represented as <b>\033</b> or <b>\e</b>) followed by <b>[</b> and one or more numeric parameters, is not a standalone Linux command but rather a control sequence interpreted by terminal emulators. Its primary purpose is to modify the appearance of text displayed in the terminal, such as setting foreground and background colors, applying bold or italic styles, underlining, or resetting attributes. Programs and shell scripts use these sequences to produce colored or styled output, enhancing readability and user experience. Understanding these sequences is crucial for advanced terminal customization and script development.


title: CAVEATS
content:
The interpretation and support for specific SGR parameters (especially advanced features like truecolor) depend entirely on the terminal emulator being used. Not all terminals support all attributes or color depths. These sequences are raw byte streams and are typically embedded within strings printed by commands like <b>echo -e</b> or <b>printf</b>. Incorrectly formatted or unsupported sequences may lead to unexpected terminal behavior or display garbage characters.


title: USAGE EXAMPLES
content:
To apply text attributes, these sequences are usually printed to the terminal. For example, to print 'Hello' in bold red, then reset:<br><br><b>echo -e "\033[1;31mHello\033[0m"</b><br><br>Here, <b>\033</b> is the escape character, <b>1</b> is bold, <b>31</b> is red foreground, and <b>0</b> resets attributes. The <b>-e</b> option for <b>echo</b> enables interpretation of backslash escapes.


title: ALTERNATIVE: TPUT
content:
For a more portable way to control terminal attributes, especially in shell scripts, the <b>tput</b> command is recommended. It queries the <b>terminfo</b> database for terminal capabilities and outputs the correct escape sequences, abstracting away the raw ANSI codes. For instance, <b>tput setaf 1</b> sets foreground red, and <b>tput sgr0</b> resets attributes.


title: HISTORY
content:
ANSI escape sequences, including the SGR parameters ending in 'm', originated from the ECMA-48 standard (Control Functions for Coded Character Sets) first published by ECMA (European Computer Manufacturers Association) in 1976. This standard became widely adopted, especially after its incorporation into various terminal emulation protocols (like VT100). The specific 'm' ending for graphic rendition commands is a key part of this legacy, providing a standardized way for applications to control terminal appearance across different systems, including Linux environments. Its consistent usage has made it a fundamental building block for interactive command-line interfaces.


title: SYNOPSIS
content:
<b>eselect repository</b> <i>&lt;command&gt;</i> [<i>arguments...</i>]<br><b>eselect repository</b> [<i>options</i>]


title: PARAMETERS
content:
<b><b>add</b> <i>&lt;name&gt; &lt;location&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new repository with the specified <i>&lt;name&gt;</i> and <i>&lt;location&gt;</i> (e.g., a Git URL or local path).<br><br><b><b>remove</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the repository identified by <i>&lt;name&gt;</i> from the configuration.<br><br><b><b>enable</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the specified repository, making it active for Portage to use.<br><br><b><b>disable</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the specified repository, preventing Portage from using it without removing its configuration.<br><br><b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all known repositories, indicating their status (enabled/disabled).<br><br><b><b>show</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about the currently active repository configuration.<br><br><b><b>help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows usage information and available commands for <i>eselect-repository</i>.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the program's version number.<br><br>


title: DESCRIPTION
content:
<i>eselect-repository</i> is a crucial command-line tool within the Gentoo Linux ecosystem, designed to streamline the management of Portage package repositories. It provides a user-friendly interface for adding new repositories, enabling or disabling existing ones, and removing those no longer needed. This utility specifically interacts with the repository configuration files, typically located in the <i>/etc/portage/repos.conf/</i> directory, ensuring that Portage &mdash; Gentoo's package manager &mdash; can correctly locate and utilize software sources.<br><br>By simplifying repository maintenance, <i>eselect-repository</i> empowers users to easily integrate official Gentoo repositories, community-maintained overlays, or custom third-party repositories, thereby expanding the range of available software packages and maintaining a flexible and up-to-date system. It's an essential part of managing a custom Gentoo installation, especially for users who rely on software not found in the main Gentoo tree.


title: CAVEATS
content:
Requires <b>root</b> privileges to modify repository configurations.<br>Modifies critical system files under <i>/etc/portage/repos.conf/</i>; incorrect usage can disrupt Portage functionality.<br>Users should understand Gentoo's Portage overlay system and <i>repos.conf</i> structure for effective and safe use.<br>After configuration changes, remember to run <i>emerge --sync</i> or <i>emaint sync</i> to update local package metadata.


title: CONFIGURATION FILES
content:
<i>eselect-repository</i> primarily manages files within the <i>/etc/portage/repos.conf/</i> directory. Each repository typically corresponds to a <i>.conf</i> file in this directory. These files define repository properties such as location, sync type, and priority.


title: OVERLAY SYNCHRONIZATION
content:
After adding or enabling a new repository, it is crucial to synchronize your Portage tree by running <i>emerge --sync</i> or <i>emaint sync -r &lt;repository_name&gt;</i> to fetch the latest package metadata from the newly configured source. Failure to do so means Portage will not be aware of the new packages.


title: COMMUNITY OVERLAYS
content:
Many community-maintained overlays are available through repositories like the Gentoo official <i>GURU (Gentoo User Repository)</i> or third-party Git repositories, which can be easily added and managed using <i>eselect-repository</i>, greatly expanding software availability.


title: HISTORY
content:
<i>eselect-repository</i> emerged as a module within the broader <i>eselect</i> framework, which provides a standardized way to manage various system aspects in Gentoo Linux. Its development is closely tied to the evolution of Portage's repository management capabilities, particularly the transition from defining overlays directly in <i>/etc/portage/make.conf</i> to the more modular and flexible <i>/etc/portage/repos.conf/</i> directory structure. This change aimed to streamline the integration of official, community-maintained (overlays), and custom repositories, improving configuration clarity and reducing potential errors. It standardizes repository management, making it easier for users to expand their available software sources.


title: PARAMETERS
content:
<b><I>command_string</I> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more strings that are concatenated together to form the complete command to be evaluated and executed by the shell. These strings undergo all standard shell expansions (variable expansion, command substitution, filename expansion, etc.) in a second pass before the final command is run.<br><br>


title: DESCRIPTION
content:
The <b>eval</b> command is a <i>shell built-in</i> that reads its arguments, concatenates them into a single string, and then executes this resultant string as a new command in the current shell context. This provides an additional, crucial layer of expansion and interpretation, making it extremely powerful for constructing and executing dynamic commands at runtime. It's particularly useful when a command's arguments, options, or even its name are themselves stored within variables, necessitating an extra pass of shell processing (e.g., variable expansion, command substitution, filename expansion) before the command can be properly executed. While incredibly versatile and a core part of shell scripting, its usage demands careful consideration due to significant potential security implications when dealing with untrusted input.


title: CAVEATS
content:
<b>Security Risk:</b> Using <b>eval</b> with untrusted input (e.g., user input, external file contents) can lead to severe security vulnerabilities, as it effectively allows arbitrary code execution. Always sanitize or validate input rigorously if <b>eval</b> is used.<br><b>Debugging Complexity:</b> Commands executed via <b>eval</b> can be significantly harder to debug because the exact command that is run might not be immediately obvious from reading the script's source code, as it's generated dynamically.<br><b>Portability:</b> While <b>eval</b> is a standard POSIX built-in, minor behavioral differences or subtle nuances might exist between various shell implementations (e.g., Bash, Zsh, Ksh).


title: DOUBLE EXPANSION PRINCIPLE
content:
One of <b>eval</b>'s primary uses is to force a second pass of shell expansion. This is particularly useful when you need to dereference a variable whose name is stored in another variable. Without <b>eval</b>, the shell would only expand the first level.<br><br><i>Example:</i> <br><code>VAR_NAME="MY_VAR"</code><br><code>MY_VAR="Hello World from Eval"</code><br><code>echo \$$VAR_NAME</code>  <I>(outputs: $MY_VAR)</I><br><code>eval echo \$$VAR_NAME</code> <I>(outputs: Hello World from Eval)</I>


title: DYNAMIC COMMAND CONSTRUCTION
content:
<b>eval</b> is invaluable when you need to construct a complete command string dynamically at runtime, where parts of the command (like options, arguments, or even the command name itself) are assembled from other variables or command substitutions. This allows for highly flexible script logic.<br><br><i>Example:</i> <br><code>cmd="ls -l"</code><br><code>target_dir="/tmp"</code><br><code>filter="*.txt"</code><br><code>eval \$cmd \$target_dir/\$filter</code> <I>(executes: ls -l /tmp/*.txt)</I>


title: HISTORY
content:
The <b>eval</b> command has been a fundamental and indispensable part of Unix shells since their inception, notably present in the original Bourne shell (sh) from the 1970s. Its design allows for the dynamic construction and execution of commands, a feature crucial for flexible and powerful scripting in the early Unix environment. It has remained a core built-in across all modern POSIX-compliant shells due to its unique ability to provide an extra pass of shell interpretation, making it a cornerstone of advanced shell scripting.


title: PARAMETERS
content:
<b><i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to be performed by <b>f5fpc</b>. Common commands include <b>connect</b>, <b>disconnect</b>, <b>status</b>, <b>config</b>, and <b>proxy</b>. Each command may have its own specific options and arguments.<br><br><b>connect</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Establishes a VPN connection to the F5 BIG-IP APM gateway. This command often requires arguments such as the server address, username, and password, or relies on pre-configured profiles.<br><br><b>disconnect</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Terminates an active VPN connection initiated by the <b>f5fpc</b> client.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current VPN connection status, including details like the connection state, connected server, and elapsed connection time.<br><br><b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages client configuration settings, such as adding or removing VPN servers, or setting auto-connect options.<br><br><b>proxy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures proxy settings that the F5 VPN client should use for its connection to the APM gateway.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the overall help message for <b>f5fpc</b>, listing available commands and general options.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of the installed <b>f5fpc</b> client software.<br><br>


title: DESCRIPTION
content:
<b>f5fpc</b> is the command-line interface for the F5 BIG-IP Edge Client (or Network Access client) on Linux systems. It allows users to programmatically manage and configure their F5 VPN connections. This utility is crucial in enterprise environments for establishing secure remote access to internal networks via F5 BIG-IP Access Policy Manager (APM) gateways. It handles various aspects of the VPN session, including user authentication, secure tunneling, and network configuration to ensure a stable and secure connection. It's particularly useful for scripting VPN connections in automated workflows or for users who prefer command-line interaction over graphical user interfaces.


title: CAVEATS
content:
<b>f5fpc</b> is a proprietary utility developed by F5 Networks and is not a standard, pre-installed Linux command. It requires the prior installation of the F5 BIG-IP Edge Client or Network Access client package. Operations involving network interface manipulation, such as establishing or tearing down a VPN tunnel, typically require root privileges. Its exact behavior and available options can vary slightly between different versions of the F5 client software.


title: TYPICAL USAGE
content:
While <b>f5fpc</b> supports various commands, the <b>connect</b> command is central to its utility. Basic usage often involves specifying the server and credentials, for example:<br><i>f5fpc connect -s vpn.example.com -u youruser -p yourpass</i><br>However, for security reasons, it's generally recommended to avoid passing sensitive credentials directly on the command line. Many deployments rely on pre-configured profiles, system-level credential managers, or interactive authentication methods which <b>f5fpc</b> can trigger.


title: HISTORY
content:
<b>f5fpc</b> is an integral part of the F5 BIG-IP Edge Client suite, developed by F5 Networks to provide robust command-line management for their BIG-IP Access Policy Manager (APM) remote access solutions on Linux. Its development has focused on enabling scriptable and automated VPN connectivity, evolving alongside F5's enterprise security offerings to meet the demands of secure remote work and network access policies in various corporate environments.


title: SYNOPSIS
content:
<b>fastboot</b> [<i>options</i>] <i>command</i> [<i>arguments</i>]<br><br><b>Common commands:</b><br><b>fastboot</b> <i>flash</i> <<i>partition</i>> <<i>[file]</i>><br><b>fastboot</b> <i>boot</i> <<i>kernel_image</i>> [<i>ramdisk_image</i>]<br><b>fastboot</b> <i>erase</i> <<i>partition</i>><br><b>fastboot</b> <i>reboot</i> [<i>bootloader</i>]<br><b>fastboot</b> <i>devices</i><br><b>fastboot</b> <i>getvar</i> <<i>variable</i>><br><b>fastboot</b> <i>oem</i> ...


title: PARAMETERS
content:
<b>flash <partition> <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified binary <file> to the <partition> on the device. E.g., 'fastboot flash system system.img'.<br><br><b>boot <kernel_image> [ramdisk_image]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Boots the device using the provided kernel and optional ramdisk image, without permanently flashing it. Useful for testing custom recoveries or kernels.<br><br><b>erase <partition></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Erases the contents of the specified <partition> on the device.<br><br><b>reboot [bootloader]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reboots the device. If 'bootloader' is specified, it reboots the device directly back into fastboot mode.<br><br><b>devices [-l]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all connected fastboot devices. The '-l' option provides a more verbose list with device paths.<br><br><b>getvar <variable></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads and displays the value of a bootloader variable, such as 'version-bootloader' or 'product'.<br><br><b>oem <command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes an OEM (Original Equipment Manufacturer) specific command. Commands and their functionalities vary significantly by device manufacturer.<br><br><b>flashing unlock / flashing lock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Commands to unlock or relock the device's bootloader. Unlocking typically performs a factory reset, wiping all user data, and allows flashing unsigned images.<br><br><b>-w</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wipes (erases) the 'userdata' and 'cache' partitions on the device, equivalent to a factory reset.<br><br><b>-s <serial></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the device by its unique serial number when multiple fastboot devices are connected, ensuring commands are sent to the correct device.<br><br>


title: DESCRIPTION
content:
<i>fastboot</i> is a powerful command-line tool, part of the Android SDK Platform-Tools, that allows communication with an Android device when it is in <i>bootloader mode</i> (also known as <i>fastboot mode</i>). It's primarily used for flashing images (like custom ROMs, kernels, or recovery partitions) to the device's flash memory, unlocking or relocking the bootloader, and erasing partitions. Unlike <i>adb</i>, which interacts with a running Android system, <i>fastboot</i> operates at a lower level, making it essential for deep device customization, recovery from software issues, or development. It requires specific drivers on the host computer and the device to be connected via USB. Its capabilities are crucial for advanced users, developers, and for restoring devices to factory default images.


title: CAVEATS
content:
Improper use of <i>fastboot</i>, especially flashing incorrect images or manipulating critical partitions, can permanently damage (<i>brick</i>) your device. Unlocking the bootloader typically performs a factory reset, wiping all user data. OEM-specific commands and procedures can vary significantly between device manufacturers and models. Ensure correct drivers are installed on your host machine for proper device recognition.


title: PREREQUISITES FOR USE
content:
Before using <i>fastboot</i>, ensure you have the Android SDK Platform-Tools installed on your computer, appropriate USB drivers for your Android device, and that your device is booted into <i>fastboot mode</i>. This mode is typically accessed by holding specific button combinations during startup or via '<i>adb reboot bootloader</i>' when the device is running Android.


title: HISTORY
content:
<i>fastboot</i> was developed by Google as an integral part of the Android SDK Platform-Tools. It emerged as a low-level protocol for flashing and device management, complementing <i>adb</i>. Its development has been closely tied to the evolution of the Android ecosystem, providing a crucial interface for developers and advanced users to bypass the Android operating system and interact directly with the device's bootloader. It's continuously maintained and updated alongside new Android versions.


title: DESCRIPTION
content:
<br>The <I>fdformat</I> command performs a low-level format on a floppy diskette. Unlike high-level formatting (done by commands like <I>mkfs</I>), low-level formatting physically writes sector and track markers onto the disk surface, defining the disk's fundamental geometry and addressing scheme. This process is essential before a filesystem can be created on the disk.<br><br>Historically, <I>fdformat</I> was crucial for preparing new floppy disks or repairing those with bad sectors by rewriting the physical structure. Due to the destructive nature of the operation, all existing data on the disk is irretrievably lost. With the obsolescence of floppy diskette drives, <I>fdformat</I> is rarely used in modern computing environments, but it remains a historical and educational tool for understanding diskette management.


title: CAVEATS
content:
<b>• Data Loss:</b> <I>fdformat</I> is a highly destructive operation. All data on the specified diskette will be permanently erased during the low-level formatting process.<br><b>• Permissions:</b> Requires root privileges or appropriate device permissions to access and format the raw diskette device.<br><b>• No Filesystem:</b> This command only performs low-level formatting; it does <I>not</I> create a filesystem (e.g., FAT, ext2). A separate command like <I>mkfs</I> is needed for high-level formatting and filesystem creation.<br><b>• Obsolete Hardware:</b> Floppy disk drives and diskettes are largely obsolete. This command has limited practical use in modern systems.


title: LOW-LEVEL VS. HIGH-LEVEL FORMATTING
content:
<br><I>fdformat</I> performs <B>low-level formatting</B>, which is the physical definition of tracks and sectors on the disk surface. This is analogous to drawing lines on a blank piece of paper to create a grid. After low-level formatting, the disk is structured but empty of any logical organization.<br><br>In contrast, <B>high-level formatting</B> (done by commands like <I>mkfs</I>) creates a filesystem on the already low-level formatted disk. This involves writing a boot sector, filesystem tables (like FAT or inode tables), and directory structures, making the disk ready to store files and directories. This is like writing headings and indexing content within the grid on the paper.


title: DEVICE NAMING CONVENTIONS
content:
<br>Unlike many commands that use options to specify format parameters, <I>fdformat</I> often relies on the specific Linux device name for the floppy drive to determine the format type (e.g., density, tracks, sectors). Common device names for floppy disks include:<br><br><b>• /dev/fd0:</b> The first floppy drive, with default settings.<br><b>• /dev/fd0h1440:</b> The first floppy drive, high density (1.44 MB) format.<br><b>• /dev/fd0u720:</b> The first floppy drive, double density (720 KB) format.<br><br>The specific device name tells the kernel's floppy driver how to interact with the hardware for formatting, making explicit command-line options for format parameters redundant for <I>fdformat</I> itself.


title: HISTORY
content:
<br>The <I>fdformat</I> command's usage peaked during the era of widespread floppy diskette usage, primarily from the 1980s through the early 2000s. It was an essential utility in DOS and early Unix/Linux systems for preparing new diskettes or reconditioning old ones. Its importance diminished rapidly with the advent of higher-capacity storage media like CDs, DVDs, USB drives, and network storage, leading to the near-complete obsolescence of floppy disk drives. While still present in some Linux distributions for historical compatibility, its practical relevance is minimal today.


title: PARAMETERS
content:
<b><b>--recursive</b>, <b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively searches subdirectories for images to display.<br><br><b><b>--fullscreen</b>, <b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts <i>feh</i> in fullscreen mode, occupying the entire screen without window decorations.<br><br><b><b>--geometry</b> <i>WxH+X+Y</i>, <b>-g</b> <i>WxH+X+Y</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial window size and position. For example, <i>800x600+100+50</i> sets a 800x600 window at position (100,50).<br><br><b><b>--zoom</b> <i>value</i>, <b>-Z</b> <i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls image zoom level. Can be <i>fit</i> (to screen), <i>fill</i> (screen, possibly cropping), a specific <i>percentage</i> (e.g., <i>150</i>), or <i>max</i> (original size).<br><br><b><b>--hide-pointer</b>, <b>-B</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the mouse pointer while <i>feh</i>'s window is active.<br><br><b><b>--slideshow-delay</b> <i>seconds</i>, <b>-S</b> <i>seconds</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the delay in seconds between images during a slideshow. A value of <i>0</i> waits for a keypress.<br><br><b><b>--preload</b>, <b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preloads all specified images into memory, allowing for faster navigation and slideshows.<br><br><b><b>--thumbnails</b>, <b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens a separate window displaying image thumbnails for easy navigation and selection.<br><br><b><b>--bg-fill</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the image to fill the entire screen, maintaining aspect ratio and cropping if necessary. Commonly used for setting desktop wallpapers.<br><br><b><b>--bg-max</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the image to fit the screen while maintaining aspect ratio, without cropping. Pads with black if the image aspect ratio doesn't match the screen.<br><br><b><b>--bg-tile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tiles the image across the screen, repeating it if the image is smaller than the display area. Useful for small patterns.<br><br><b><b>--draw-filename</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Draws the filename at the bottom left of the image while viewing.<br><br><b><b>--randomize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Randomizes the order in which images are displayed or processed from the given list.<br><br>


title: DESCRIPTION
content:
<i>feh</i> is a fast, lightweight, and highly customizable image viewer primarily designed for X11 environments. Unlike larger graphical applications, <i>feh</i> focuses on minimalism, speed, and scriptability, making it a popular choice for users of tiling window managers and minimalist desktop setups. It can display single images, browse directories of images, create thumbnail previews, and act as an efficient slideshow viewer. A key feature is its ability to set desktop wallpapers, offering various modes like tiling, filling, and scaling. While it provides basic image manipulation capabilities such as zooming, panning, and rotation, its strength lies in quick viewing and batch operations. <i>feh</i> supports a wide range of image formats, relying on underlying libraries like ImageMagick or libjpeg/libpng. Its command-line interface allows for powerful automation and integration into shell scripts, making it versatile for both interactive use and programmatic tasks.


title: CAVEATS
content:
<i>feh</i> is primarily an X11-based application and may not function without an active X server. <br>While robust, it lacks advanced image editing features found in full-fledged image manipulation programs. <br>Performance with extremely large images or very high quantities of images can be limited by system resources.


title: INTERACTIVE CONTROLS
content:
<i>feh</i> offers various interactive keyboard and mouse controls for navigation and basic manipulation. Common keys include: <br><b>Arrow keys</b> or <b>Space/Backspace</b> for navigating between images. <br><b>+</b> and <b>-</b> for zooming in and out. <br><b>r</b> and <b>l</b> for rotating the image right and left. <br><b>f</b> for toggling fullscreen. <br><b>d</b> for deleting the current image. <br><b>q</b> or <b>Esc</b> to quit. <br>Right-clicking opens a context menu for more options.


title: WALLPAPER SETTING
content:
One of <i>feh</i>'s most common and widely used features is its ability to set the desktop background (wallpaper). This is achieved using the <b>--bg-fill</b>, <b>--bg-scale</b>, <b>--bg-tile</b>, <b>--bg-center</b>, or <b>--bg-max</b> options, followed by the path to an image file. For instance, <i>feh --bg-fill /path/to/my/wallpaper.jpg</i> will set the specified image as the desktop background, filling the screen.


title: HISTORY
content:
Developed by Michael Stapelberg and others, <i>feh</i> emerged as a lightweight alternative to more resource-intensive image viewers in the early 2000s. It was designed with simplicity, speed, and scriptability in mind, making it a natural fit for minimalist desktop environments and tiling window managers like i3, Openbox, and dwm. Its focus on command-line usability and efficient resource management quickly established it as a popular choice among Linux users seeking a fast image display tool.


title: SYNOPSIS
content:
<b>feroxbuster</b> [<i>OPTIONS</i>] <b>-u</b> <<i>URL</i>> [<b>-w</b> <<i>WORDLIST</i>> ...]<br><b>feroxbuster</b> <b>-u</b> <<i>URL</i>> <b>--stdin</b>


title: PARAMETERS
content:
<b><b>-u</b>, <b>--url</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target URL to scan. Multiple URLs can be specified or read from a file by prepending the argument with `@` (e.g., `@urls.txt`).<br><br><b><b>-w</b>, <b>--wordlist</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a wordlist file to use for brute-forcing. Multiple wordlists can be provided.<br><br><b><b>-x</b>, <b>--extensions</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of extensions to append to each word (e.g., html,php,bak). Wildcard `*` can be used to load extensions from a built-in list.<br><br><b><b>-s</b>, <b>--status-codes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of HTTP status codes to include in results (e.g., 200,301,403). Default: 200,204,301,302,307,308.<br><br><b><b>-C</b>, <b>--dont-filter</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of HTTP status codes to <i>not</i> filter. Overrides default filtering and other filtering options.<br><br><b><b>--filter-size</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of response sizes (in bytes) to filter out from results.<br><br><b><b>--filter-wordcount</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of response word counts to filter out.<br><br><b><b>--filter-linecount</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of response line counts to filter out.<br><br><b><b>-k</b>, <b>--no-recursion</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables recursive scanning; only scans the top-level directory provided by the URL.<br><br><b><b>-d</b>, <b>--depth</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maximum recursion depth for directories. Default is 4.<br><br><b><b>-t</b>, <b>--threads</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of concurrent threads to use for scanning. Default is 50.<br><br><b><b>-H</b>, <b>--headers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a custom HTTP header to requests (e.g., "Authorization: Bearer token"). Can be used multiple times.<br><br><b><b>-A</b>, <b>--user-agent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a custom User-Agent string for requests. Default is `feroxbuster/<i>version</i>`.<br><br><b><b>--insecure</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SSL certificate verification, allowing connections to servers with invalid or self-signed certificates.<br><br><b><b>--extract-links</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts links from HTML responses and adds them to the scan queue for further discovery.<br><br><b><b>--data</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP method and POST data (e.g., "POST /path/to/data.json"). This will send a POST request with the specified data.<br><br><b><b>--config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a TOML configuration file for predefined settings, overriding command-line arguments if conflicts exist.<br><br>


title: DESCRIPTION
content:
Feroxbuster is an open-source, fast, and powerful web content discovery tool written in Rust. It is designed for penetration testers and bug bounty hunters to efficiently find hidden directories, files, and other assets on web servers by brute-forcing. <br><br>Key features include: <br><ul><li><b>Recursive directory discovery</b>: Automatically follows redirects and explores deeper into the web application structure.</li><li><b>Intelligent filtering</b>: Filters out unwanted responses (e.g., 404s, specific content lengths) to reduce noise and focus on relevant findings.</li><li><b>Dynamic runtime configuration</b>: Allows modifications to scan parameters while a scan is in progress.</li><li><b>Concurrency</b>: Highly multi-threaded for speed and efficiency.</li><li><b>Payloads</b>: Supports multiple wordlists, extensions, and custom HTTP headers.</li><li><b>WAF Bypass</b>: Includes options to evade Web Application Firewalls.</li><li><b>Data extraction</b>: Can extract links from HTML responses for further analysis and queueing.</li></ul>It aims to provide comprehensive insights into a web application's attack surface, surpassing traditional tools in speed and flexibility.


title: CAVEATS
content:
<i>Ethical Considerations</i>: Always ensure you have explicit permission before scanning any target. Unauthorized scanning can be illegal and may lead to legal repercussions. <br><br><i>Resource Usage</i>: High thread counts can consume significant network bandwidth and target server resources, potentially leading to denial of service or network congestion. Use responsibly. <br><br><i>False Positives/Negatives</i>: While `feroxbuster` employs intelligent filtering, it might occasionally miss valid paths or report non-existent ones. Fine-tuning filters and using dynamic filtering can improve accuracy. <br><br><i>WAFs/IPS</i>: Aggressive scanning patterns can trigger Web Application Firewalls (WAFs) or Intrusion Prevention Systems (IPS), potentially leading to IP blocking, CAPTCHAs, or other defensive measures.


title: CONFIGURATION FILES
content:
Feroxbuster supports configuration files (default: <i>ferox-buster.toml</i> in the current directory or <i>~/.config/feroxbuster/ferox-buster.toml</i>). These TOML-formatted files allow users to define default settings, wordlists, status codes, and other options, significantly simplifying complex or repetitive scans by centralizing configurations.


title: OUTPUT FORMATTING
content:
Feroxbuster provides various output options to suit different needs. The <b>--json</b> flag outputs results in a structured JSON format, enabling easy integration with other tools or scripts for automated analysis. Additionally, a quiet mode (<b>-q</b>) is available for minimal output, focusing only on the discovered resources without verbose logging, ideal for scripting.


title: DYNAMIC FILTERING
content:
Beyond static size, word, or line count filtering, `feroxbuster` can perform dynamic filtering. This advanced feature automatically calculates a statistical baseline of typical error or non-existent page responses and then filters out entries that match this baseline, effectively reducing noise and highlighting truly unique findings.


title: HISTORY
content:
Feroxbuster was created by Mark Baggett (<i>@epi052</i>) and first released in 2019. It emerged from a desire for a faster and more flexible web content discovery tool that could leverage modern programming paradigms. Developed in Rust, it aimed to improve upon the performance and concurrency capabilities of existing tools. Since its inception, `feroxbuster` has rapidly gained popularity within the cybersecurity community due to its speed, robust recursive scanning abilities, and continuous development, establishing itself as a go-to tool for reconnaissance during penetration tests and bug bounty hunting.


title: SYNOPSIS
content:
<i>ffe</i> {-f <i>format_file</i> | -i <i>input_format_spec</i>} [-o <i>output_format_spec</i>] [OPTIONS] [<i>FILE</i>...]


title: PARAMETERS
content:
<b>-f <i>format_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an external format file (often YAML-like) containing detailed record descriptions, positions, and field mappings. This is the primary method for complex layouts.<br><br><b>-i <i>input_spec</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the input format directly on the command line using field specifications (e.g., name:1-10,age:11-13). Useful for simpler, ad-hoc transformations.<br><br><b>-o <i>output_spec</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format directly on the command line, allowing reordering, renaming, and reformatting of fields from the input.<br><br><b>-F <i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired output format type. Common types include <b>fixed</b>, <b>delimited</b>, <b>csv</b>, <b>sqlinsert</b>, <b>xml</b>, and <b>json</b>.<br><br><b>-d <i>delimiter</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the field delimiter character to use when generating delimited output formats (e.g., <b>,</b> for CSV or <b>\t</b> for TSV).<br><br><b>-t <i>tag_field</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Identifies a field whose value determines the record type. Essential for processing files that contain multiple distinct record layouts within a single file.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treats the first record of the input file as a header row and skips it during data processing, optionally using its values for field names.<br><br><b>-s <i>num</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the first <i>num</i> records from the input file before beginning processing. Useful for bypassing introductory data.<br><br><b>-c <i>num</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes only the next <i>num</i> records after any initial skipping. Useful for testing or processing partial files.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying detailed information about the processing steps, record parsing, and field transformations.<br><br>


title: DESCRIPTION
content:
<i>ffe</i> is a powerful command-line utility meticulously crafted for processing fixed-format text files. These files, commonly encountered in legacy systems or mainframe data exports, typically organize information into columns of predefined widths. <i>ffe</i> excels at parsing, reordering, reformatting, and extracting specific fields from such datasets. <br><br>Its advanced capabilities include handling complex record layouts, even those containing multiple record types identified by distinct field values. This makes it an indispensable tool for non-interactive transformation of large data volumes, crucial for tasks like data migration, report generation, and system integration. <i>ffe</i> supports diverse output formats, ranging from delimited and fixed-width to SQL <i>INSERT</i> statements, XML, and JSON. It also offers features for basic data validation and on-the-fly field transformation.


title: CAVEATS
content:
<i>ffe</i> has a relatively steep learning curve due to its powerful, domain-specific nature, especially when dealing with complex format files. Precise definition of fixed-width layouts is crucial, and incorrect specifications can lead to cryptic error messages or unexpected output. It is primarily designed for batch processing and is not an interactive editor.


title: UNDERSTANDING FORMAT FILES
content:
The true power of <i>ffe</i> often lies in its external format files. These configuration files, typically written in a YAML-like syntax, allow users to define complex record types, specific field names, precise byte positions, lengths, data types, and even transformation or validation rules. They enable <i>ffe</i> to handle highly structured, multi-record-type fixed-width data with high precision and flexibility.


title: COMMON USE CASES
content:
<i>ffe</i> is an invaluable tool in scenarios involving:<br><i>- Data Migration:</i> Seamlessly transforming fixed-width mainframe data into modern relational database formats.<br><i>- Reporting and Analytics:</i> Extracting specific, structured fields from large fixed-width log files or reports for further analysis.<br><i>- Data Integration:</i> Converting incoming fixed-width data feeds from external systems into a normalized or delimited format suitable for internal applications.


title: FIELD SPECIFICATION SYNTAX
content:
When defining fields via the -i or -o options, <i>ffe</i> supports various syntaxes. Fields can be defined by their exact start and end byte positions (e.g., field1:1-10), or by a field name followed by its length (e.g., field1:10), where positions are automatically calculated. For delimited data, regular expressions can also be used to define field boundaries.


title: HISTORY
content:
<i>ffe</i> was created by J.R. "Bob" Muench to address the specific need for robust fixed-format data manipulation on Unix-like systems, often encountered when working with legacy or mainframe data. It has been actively developed and maintained, evolving to support modern data formats like JSON and XML, showcasing its adaptability and continued relevance in diverse data processing pipelines.


title: SYNOPSIS
content:
<b>ffmpeg</b> [<I>global_options</I>] {[<I>input_options</I>] <B>-i</B> <I>input_url</I>} ... {[<I>output_options</I>] <I>output_url</I>} ...<br>This syntax indicates that <b>ffmpeg</b> can take multiple input files and produce multiple output files. Options can be global, specific to an input, or specific to an output.


title: PARAMETERS
content:
<b>-i <input_url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file or stream URL. This option can be used multiple times for multiple inputs.<br><br><b>-f <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the input or output file format.<br><br><b>-c[:stream_specifier] <codec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects an encoder/decoder for a specific stream (e.g., <B>-c:v libx264</B> for video, <B>-c:a aac</B> for audio).<br><br><b>-b[:stream_specifier] <bitrate></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the bitrate for a stream (e.g., <B>-b:v 2M</B> for 2 Megabits/second video bitrate).<br><br><b>-s <WxH></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the frame size (resolution) for video output (e.g., <B>-s 1280x720</B>).<br><br><b>-r <rate></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the frame rate for video output (e.g., <B>-r 30</B>).<br><br><b>-ss <position></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Seeks to a specific position in the input file (e.g., <B>-ss 00:01:30</B> for 1 minute 30 seconds). Can also be used before <B>-i</B> for faster seeking.<br><br><b>-t <duration></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the duration to transcode (e.g., <B>-t 60</B> for 60 seconds).<br><br><b>-vf <filtergraph></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies video filters (e.g., <B>-vf "scale=640:-1,crop=640:360"</B>).<br><br><b>-af <filtergraph></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies audio filters (e.g., <B>-af "atempo=1.25"</B>).<br><br><b>-map <input_stream_specifier></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific streams from input files to be included in the output.<br><br><b>-y</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrites output files without asking.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not overwrite output files; exits if output file exists.<br><br><b>-preset <preset_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets an encoding preset for certain codecs (e.g., <B>-preset slow</B> for H.264, affecting encoding speed and compression efficiency).<br><br><b>-crf <quality></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Constant Rate Factor for quality-based encoding (e.g., <B>-crf 23</B> for H.264/H.265, lower is better quality).<br><br>


title: DESCRIPTION
content:
<b>ffmpeg</b> is a powerful, open-source command-line tool and multimedia framework that can decode, encode, transcode, mux, demux, stream, filter, and play virtually any multimedia file or stream. It supports a vast array of formats and codecs, making it an indispensable tool for video and audio manipulation. Comprising a suite of libraries (like <i>libavcodec</i> for codecs, <i>libavformat</i> for formats, and <i>libswscale</i> for scaling) and command-line programs (<i>ffmpeg</i>, <i>ffplay</i>, <i>ffprobe</i>), it serves as the backend for many popular multimedia applications and services. From converting video formats and extracting audio to live streaming and sophisticated video editing tasks, <b>ffmpeg</b> provides unparalleled flexibility and control over digital media.


title: CAVEATS
content:
While incredibly powerful, <b>ffmpeg</b>'s vast array of options and codecs can make it steep for beginners. Incorrectly specified options can lead to unexpected output or errors. Performance is heavily dependent on hardware, especially for high-resolution video encoding, which is CPU-intensive. Users should also be aware of potential licensing complexities for certain codecs, although the <b>ffmpeg</b> project itself is open-source under LGPL/GPL.


title: STREAM SELECTION AND MAPPING
content:
<b>ffmpeg</b> offers granular control over which streams (video, audio, subtitle, data) from inputs are processed and included in outputs. The <B>-map</B> option allows users to specify exactly which streams to use, enabling complex scenarios like combining audio from one file with video from another, or selecting specific language tracks.


title: COMPLEX FILTERGRAPHS
content:
Beyond simple operations, <b>ffmpeg</b> supports intricate <I>filtergraphs</I> that enable sophisticated audio and video manipulations. These can range from simple scaling and cropping to complex overlays, picture-in-picture effects, concatenation of multiple videos, and advanced audio processing, all defined within a single command.


title: LIVE STREAMING AND DEVICE INTERACTION
content:
<b>ffmpeg</b> is not just for local file conversion; it excels at live streaming by supporting various network protocols (e.g., RTMP, HLS, DASH, RTSP). It can also interact directly with hardware devices, allowing for screen recording, webcam capture, and microphone input, making it a versatile tool for broadcasting and content creation.


title: HISTORY
content:
<b>ffmpeg</b> was initiated by Fabrice Bellard in 2000, with its name standing for "Fast Forward MPEG." From its inception, it aimed to provide a comprehensive solution for multimedia handling. Over the years, it has evolved significantly, incorporating support for new codecs, formats, and technologies as they emerged. Despite a notable fork in 2011 that led to the creation of the Libav project (which has since largely merged back or faded in prominence), the <b>ffmpeg</b> project has remained the dominant and most actively developed open-source multimedia framework. Its continuous development and robust capabilities have made it an essential component of countless media applications, streaming services, and professional workflows worldwide.


title: SYNOPSIS
content:
<b>ffmpeg</b> <i>[input_options]</i> <b>-i</b> <i><input> [output_options]</i><br>    <b>-bsf</b><I>[:stream_specifier]</I> <i><bitstream_filter_name>[=arguments] <output></i>


title: PARAMETERS
content:
<b><b>-bsf</b><I>[:stream_specifier]</I> <i><filter_name>[=arguments]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a bitstream filter to the specified stream. <i>stream_specifier</i> can be 'v' for video, 'a' for audio, or a stream index (e.g., '0:v:0'). <i>filter_name</i> is the name of the bitstream filter to apply, and <i>arguments</i> are filter-specific options.<br><br><b><b>h264_mp4toannexb</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts H.264 bitstreams from MP4 (AVCC) format to Annex B format, which is typically required for streaming protocols like MPEG-TS or RTMP. It adds Start Code Prefixes (0x00000001) before NAL units and removes the NAL unit length fields.<br><br><b><b>aac_adtstoasc</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts AAC bitstreams from ADTS (Audio Data Transport Stream) format to ASC (AudioSpecificConfig) format. ADTS is common in streaming, while ASC is used in containers like MP4 to provide audio configuration only once.<br><br><b><b>remove_extra</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes 'extra' data from the bitstream. This might include padding bytes or metadata that is not essential for playback.<br><br><b><b>dump_extra</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <i>remove_extra</i> but instead of removing, it prints the extra data to stderr, useful for debugging.<br><br><b><b>chomp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes trailing bytes from the stream, often used to clean up streams that might have garbage data at the end of packets.<br><br><b><b>noise</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds random noise to the bitstream. Primarily used for testing error resilience of decoders.<br><br><b><b>filter_units</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters specific NAL units (for H.264/H.265) or other unit types, allowing inclusion or exclusion based on type. For example, 'filter_units=remove_sps,remove_pps'.<br><br>


title: DESCRIPTION
content:
Bitstream filters in FFmpeg are powerful tools used to manipulate the raw elementary stream data <i>before</i> it's decoded or <i>after</i> it's encoded, but <i>before</i> it's multiplexed into a container. Unlike video (<b>-vf</b>) or audio (<b>-af</b>) filters that operate on decoded (uncompressed) frames, bitstream filters work directly on the compressed bitstream. This makes them ideal for tasks such as modifying stream headers, fixing common containerization issues, or adding/removing specific data elements that are part of the elementary stream. Common use cases include converting H.264 streams from MP4-style (AVCC) to Annex B format for streaming protocols, converting AAC streams from ADTS to ASC (AudioSpecificConfig) format, or stripping padding bytes. They are specified using the <b>-bsf</b> (or <b>-bsf:v</b>, <b>-bsf:a</b>) option followed by the filter name and optional arguments.


title: CAVEATS
content:
Bitstream filters operate on the raw compressed data. Incorrect usage can lead to corrupted streams that are unplayable or cause decoders to crash. They do not re-encode the stream, so they are fast but limited to structural modifications of the elementary stream. Always test changes thoroughly. Not all containers or codecs are compatible with every bitstream filter.


title: BITSTREAM FILTERS VS. STREAM FILTERS
content:
It's crucial to distinguish between bitstream filters (<b>-bsf</b>) and stream filters (<b>-vf</b> for video, <b>-af</b> for audio). Bitstream filters work on the raw, compressed data bytes of the elementary stream, modifying its structure (e.g., adding start codes, removing headers). Stream filters, conversely, operate on the <i>decoded</i>, uncompressed frames or samples, allowing for operations like scaling, cropping, deinterlacing, or applying audio effects. Bitstream filters are applied before decoding or after encoding, while stream filters are applied within the decoding/encoding pipeline.


title: STREAM SPECIFIER USAGE
content:
When using the <b>-bsf</b> option, it's often beneficial to specify which stream the filter should apply to. For example, <b>-bsf:v h264_mp4toannexb</b> applies the filter only to the video stream. Similarly, <b>-bsf:a aac_adtstoasc</b> applies it to the audio stream. You can also target specific streams using indices like <b>-bsf:0:v h264_mp4toannexb</b> for the first video stream from the first input.


title: HISTORY
content:
FFmpeg has evolved as a comprehensive multimedia framework since its inception. Bitstream filters were integrated into its core functionality to address the complexities of various codec formats and container specifications. As multimedia standards progressed and new codecs emerged, the need for direct manipulation of elementary streams became apparent, leading to the development and expansion of the '<b>-bsf</b>' option and its associated filter library. This allows users to adapt streams for different playback environments or conform to specific protocol requirements without undergoing a full decode/encode cycle.


title: SYNOPSIS
content:
To view the list of supported formats and their capabilities through the <b><code>ffmpeg</code></b> command:<br>
<b><code>ffmpeg -formats</code></b><br>
<br>To specifically list input formats (demuxers):<br>
<b><code>ffmpeg -demuxers</code></b><br>
<br>To specifically list output formats (muxers):<br>
<b><code>ffmpeg -muxers</code></b><br>
<br>For detailed help on a specific format (e.g., MP4 muxer or demuxer options):<br>
<b><code>ffmpeg -h muxer=&lt;format_name&gt;</code></b> or <b><code>ffmpeg -h demuxer=&lt;format_name&gt;</code></b><br>
<br>To access the dedicated manual page for format descriptions:<br>
<b><code>man ffmpeg-formats</code></b>


title: PARAMETERS
content:
<b><b><code>-formats</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available multimedia formats that FFmpeg supports, showing whether each is a demuxer (input) or muxer (output), along with various capability flags (e.g., seekable, readable, writable).<br><br><b><b><code>-demuxers</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclusively lists the input multimedia formats (demuxers) recognized by FFmpeg, detailing their respective capabilities for reading and parsing streams.<br><br><b><b><code>-muxers</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclusively lists the output multimedia formats (muxers) that FFmpeg can generate, outlining their capabilities for writing and combining streams into specific container structures.<br><br><b><b><code>-h [muxer|demuxer]=&lt;format_name&gt;</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed help and specific private options for a given muxer or demuxer. This allows users to understand and utilize format-specific configurations, such as custom metadata fields or specific encoding parameters.<br><br>


title: DESCRIPTION
content:
The <b><code>ffmpeg-formats</code></b> documentation serves as a comprehensive guide to the vast array of multimedia container formats supported by the FFmpeg project. It details both input formats (demuxers) that FFmpeg can read from, and output formats (muxers) that it can write to. Understanding these formats is crucial for effective use of FFmpeg, as it allows users to discern compatible file types, anticipate specific behaviors like seeking or metadata handling, and select the appropriate format for a given task.
<br><br>While <b><code>ffmpeg-formats</code></b> is primarily a manual page (accessible via <b><code>man ffmpeg-formats</code></b>), the information it contains directly correlates with the capabilities exposed by the main <b><code>ffmpeg</code></b> command-line tool. It lists each format with its unique name and a set of flags indicating its specific features, such as whether it's a demuxer, a muxer, supports seeking, or can handle external streams. This resource is indispensable for developers and advanced users needing precise control over media processing workflows.


title: CAVEATS
content:
It is crucial to understand that <b><code>ffmpeg-formats</code></b> itself is not an executable command but rather a manual page providing static documentation. The <b><code>parameters</code></b> listed in this analysis are options for the main <b><code>ffmpeg</code></b> command, used to query its supported formats dynamically. The output of <b><code>ffmpeg -formats</code></b> directly reflects the formats and capabilities compiled into your specific FFmpeg build, which might differ from the documentation depending on installed libraries and configuration options.


title: CAPABILITIES FLAGS
content:
When listing formats using <b><code>ffmpeg -formats</code></b>, each format entry includes a string of single-character flags indicating its specific capabilities:<br>
<ul>
<li><b><code>D</code></b>: Demuxer (can be used as an input format).</li>
<li><b><code>E</code></b>: Muxer (can be used as an output format).</li>
<li><b><code>I</code></b>: Supports interleaving (multiple streams in parallel).</li>
<li><b><code>S</code></b>: Can be seeked (supports random access to data).</li>
<li><b><code>B</code></b>: Supports byte seeking (can seek to arbitrary byte positions).</li>
<li><b><code>W</code></b>: Can write (used with muxers).</li>
<li><b><code>R</code></b>: Can read (used with demuxers).</li>
<li><b><code>X</code></b>: Can use for "eXternal" stream (e.g., certain raw formats).</li>
<li><b><code>d</code></b>: Can be disabled (format can be selectively excluded).</li>
<li><b><code>t</code></b>: Supports timecode.</li>
<li><b><code>v</code></b>: Supports variable frame rate (VFR).</li>
<li><b><code>p</code></b>: Supports preloading (input pre-buffering).</li>
</ul>


title: DEMUXERS VS. MUXERS
content:
A fundamental distinction in FFmpeg's format handling is between <i>demuxers</i> and <i>muxers</i>. <i>Demuxers</i> are responsible for reading multimedia files or streams, parsing their container structure, and extracting the individual elementary streams (e.g., raw audio, video, or subtitle data). They are the input handlers for FFmpeg. Conversely, <i>Muxers</i> take raw or encoded elementary streams and combine them into a specified container format, writing them to a file or output stream. They are the output handlers. Many formats (like MP4 or MOV) exist as both a demuxer and a muxer, allowing FFmpeg to both read and write files of that type, although their specific options and capabilities might differ.


title: HISTORY
content:
The FFmpeg project, founded in 2000, has always prioritized extensive format support as a cornerstone of its mission to provide a complete cross-platform solution for multimedia processing. As multimedia technologies evolved, new container formats emerged, and existing ones gained new features, FFmpeg continuously integrated support for them. The <b><code>ffmpeg-formats</code></b> documentation and the programmatic <b><code>--formats</code></b> option evolved in parallel, serving as vital resources to communicate this ever-expanding capability to users. This ongoing development ensures FFmpeg remains at the forefront of multimedia interoperability, with its format documentation reflecting its dynamic nature.


title: SYNOPSIS
content:
While <I>ffmpeg-protocols</I> itself is a manual page and not an executable command, it describes the syntax for using various protocols with the <I>ffmpeg</I> command. The general invocation pattern for input or output using protocols is:<br><br><b>ffmpeg [input_options] -i <I>protocol_url</I> [output_options] <I>protocol_url</I></b><br><br>Where <I>protocol_url</I> adheres to a specific syntax, often `<i>protocol://[host][:port][/path][?option=value[&option=value...]]</i>`. The documentation outlines the available <I>protocol</I> identifiers and their respective URL structures and options.


title: PARAMETERS
content:
<b>file://</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Accesses local files on the filesystem. Syntax: <I>file:///path/to/file</I>.<br><br><b>http:// / https://</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves or sends data over HTTP/HTTPS. Supports options like <I>user-agent</I>, <I>referer</I>, and <I>timeout</I> for controlling HTTP requests.<br><br><b>rtmp://</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Handles Real-Time Messaging Protocol streams, commonly used for live streaming. Common options include <I>live</I>, <I>playpath</I>, <I>flashver</I>, and various <I>conn</I> parameters for connection details.<br><br><b>udp:// / tcp://</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Facilitates network communication over UDP or TCP. Important options often include <I>buffer_size</I>, <I>fifo_size</I>, <I>reuse_address</I>, and <I>local_port</I> for fine-tuning network behavior.<br><br><b>pipe:N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables inter-process communication via standard input (<I>pipe:0</I>) or standard output (<I>pipe:1</I>) handles, useful for chaining FFmpeg with other commands.<br><br>


title: DESCRIPTION
content:
The <I>ffmpeg-protocols</I> manual page details the diverse input and output protocols supported by the FFmpeg multimedia framework. These protocols dictate how FFmpeg accesses or delivers data, whether from local files, network streams, or inter-process communication channels. This documentation serves as a comprehensive reference for users to understand the syntax, capabilities, and specific options associated with each supported protocol.<br><br>Protocols allow FFmpeg to handle a wide array of media sources and destinations, ranging from simple file paths (<I>file://</I>) to complex streaming protocols like RTMP (<I>rtmp://</I>), HTTP Live Streaming (<I>hls://</I>), or UDP/TCP network streams (<I>udp://</I>, <I>tcp://</I>). Understanding these protocols is essential for effectively configuring FFmpeg for tasks such as live streaming, video on demand, inter-process media manipulation, or accessing remote resources.


title: CAVEATS
content:
The availability of specific protocols and their features can vary depending on how FFmpeg was compiled. Network protocols often introduce latency and require proper firewall configuration. Users should be aware of security implications when using unencrypted protocols like plain HTTP or FTP for sensitive data. Not all protocols support both input and output; some are read-only (e.g., <I>dash</I>) while others are write-only (e.g., <I>icecast</I>). Performance considerations, such as network bandwidth and buffer sizes, are crucial for reliable streaming operations.


title: PROTOCOL CAPABILITIES
content:
Each protocol typically supports either reading (input), writing (output), or both. The <I>ffmpeg-protocols</I> documentation specifies the capabilities of each protocol (e.g., <I>http</I> for both, <I>dash</I> for input only, <I>icecast</I> for output only).


title: PROTOCOL WHITELISTING/BLACKLISTING
content:
For security or stability reasons, FFmpeg allows users to control which protocols can be used via the global options <I>-protocol_whitelist</I> and <I>-protocol_blacklist</I>. These options specify a comma-separated list of allowed or disallowed protocols, respectively, enhancing control over potential external interactions.


title: HISTORY
content:
The support for various I/O protocols has been a cornerstone of FFmpeg's versatility since its inception. Initially supporting fundamental file and basic network protocols, FFmpeg has continuously expanded its protocol roster to adapt to evolving multimedia standards and streaming technologies. Significant developments include the integration of advanced streaming protocols like RTMP, HLS, DASH, and SRT, along with robust support for various network and inter-process communication mechanisms. This continuous evolution has been driven by the increasing demands for diverse media ingestion and delivery methods across different platforms and applications.


title: SYNOPSIS
content:
<b>ffmpeg</b> -i <i>input_file</i> [<i>resampling_options</i>] <i>output_file</i><br><br><i>Example Audio Resampling:</i><br><b>ffmpeg</b> -i <i>input.wav</i> -ar 48000 -ac 2 <i>output.flac</i><br><br><i>Example Video Scaling:</i><br><b>ffmpeg</b> -i <i>input.mp4</i> -vf "scale=1280:-1" <i>output.mkv</i>


title: PARAMETERS
content:
<b>-i <input_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input multimedia file to be processed.<br><br><b>-ar <sample_rate></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target audio sample rate (e.g., 44100, 48000 Hz) for resampling.<br><br><b>-ac <channels></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the number of audio channels (e.g., 1 for mono, 2 for stereo) for resampling.<br><br><b>-filter:a <filtergraph></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies an audio filtergraph. For resampling, the <b>aresample</b> filter is commonly used (e.g., -filter:a "aresample=resampler=soxr:precision=28").<br><br><b>-filter:v <filtergraph></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a video filtergraph. The <b>scale</b> filter is used for changing video resolution (e.g., -filter:v "scale=1920:1080").<br><br><b>-c:a <codec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the audio encoder to use for the output (e.g., aac, libmp3lame).<br><br><b>-c:v <codec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the video encoder to use for the output (e.g., libx264, libvpx).<br><br><b>-map <stream_specifier></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific streams from the input to include in the output. Useful for discarding unwanted streams or mapping specific audio/video tracks.<br><br>


title: DESCRIPTION
content:
<i>ffmpeg-resampler</i> refers to the robust audio and video resampling capabilities built into the <b>FFmpeg</b> multimedia framework, rather than a standalone command. FFmpeg is a versatile, open-source project that handles various multimedia tasks, including conversion, streaming, and editing.<br><br>Resampling involves altering the characteristics of audio or video streams. For audio, this primarily means changing the sample rate (e.g., from 44.1 kHz to 48 kHz), adjusting the number of audio channels (e.g., stereo to mono, or upmixing), or converting sample formats. For video, it typically refers to scaling (changing resolution), deinterlacing, or converting pixel formats. FFmpeg leverages specialized libraries like <b>libswresample</b> for high-quality audio resampling and <b>libswscale</b> for efficient video scaling and pixel format conversions.<br><br>The resampling process within FFmpeg is highly configurable, offering various quality settings, algorithms, and filter options to achieve precise control over the output. It is widely used in multimedia production, broadcasting, and streaming workflows to ensure compatibility and optimize media for different target platforms or bandwidths.


title: CAVEATS
content:
While powerful, resampling with FFmpeg requires careful consideration. Incorrect settings or low-quality algorithms can introduce audio artifacts (aliasing, ringing) or video quality degradation (blurriness, jagged edges). High-quality resampling algorithms (like <b>soxr</b> for audio or <b>Lanczos</b> for video) can be CPU-intensive and increase processing time. Always test output quality and check for potential issues before deploying resampled media in production environments.


title: AUDIO RESAMPLING QUALITY
content:
For high-quality audio resampling, FFmpeg's <b>aresample</b> audio filter can be configured with various options like <i>resampler</i> (e.g., 'soxr' for extreme quality), <i>precision</i>, and <i>filter_size</i> to control the resampling algorithm's characteristics and output fidelity. Default settings are often sufficient, but for critical applications, experimenting with these options can yield superior results.


title: VIDEO SCALING ALGORITHMS
content:
When using the <b>scale</b> video filter, FFmpeg allows specifying the scaling algorithm via the <i>-sws_flags</i> global option or directly within the <b>scale</b> filter using the <i>flags</i> option. Common algorithms include <i>bilinear</i> (fast, good for downscaling), <i>bicubic</i> (good balance of speed and quality), and <i>lanczos</i> (high quality, good for upscaling, slower). The choice depends on the desired balance between processing speed and visual quality.


title: HISTORY
content:
The resampling capabilities within FFmpeg have evolved significantly since its inception in 2000. Key to this development is the <b>libswresample</b> library, specifically designed for high-quality audio resampling, channel mixing, and sample format conversion, providing a unified and optimized solution for audio manipulation. Similarly, <b>libswscale</b> handles video scaling, pixel format conversion, and interlacing/deinterlacing, offering various scaling algorithms. These libraries continuously receive updates, incorporating new algorithms and optimizations to maintain FFmpeg's position as a leading multimedia tool for demanding tasks like resampling.


title: SYNOPSIS
content:
ffmpeg-scaler <I>-i</I> <B>input_file</B> [<I>options</I>] <B>output_file</B><br><i>Example:</i> <B>ffmpeg-scaler -i input.mp4 -vf scale=1280:-1 output_720p.mp4</B>


title: PARAMETERS
content:
<b>-i <B>input_file</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the input video file.<br><br><b><B>output_file</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path for the output video file. This is typically the last argument.<br><br><b>-vf "scale=WIDTH:HEIGHT"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies the video filtergraph for scaling. Use '-1' for WIDTH or HEIGHT to automatically calculate the other dimension while maintaining aspect ratio (e.g., 'scale=1280:-1' for 720p width). Multiple filters can be chained with commas.<br><br><b>-s WIDTHxHEIGHT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand for setting output resolution. Less flexible than -vf scale, as it only sets resolution and doesn't explicitly handle aspect ratio or padding.<br><br><b>-aspect <B>ratio</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output display aspect ratio (e.g., '16:9', '4:3', '1.777').<br><br><b>-c:v <B>codec</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the video codec for the output (e.g., 'libx264' for H.264, 'libvpx-vp9' for VP9). Re-encoding is often required for scaling.<br><br><b>-preset <B>speed</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets an encoding preset for codecs like libx264, affecting compression speed and quality (e.g., 'veryfast', 'medium', 'slow'). Faster presets result in larger files or lower quality.<br><br><b>-crf <B>quality_factor</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Constant Rate Factor for H.264/HEVC encoding. Lower values mean higher quality and larger files (e.g., '23' is a good balance, '18' is near lossless).<br><br><b>-an</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables audio processing, removing the audio stream from the output.<br><br><b>-map 0:a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies the audio stream from the first input without re-encoding, preserving audio quality.<br><br><b>-ss <B>position</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts processing the input at a specified timestamp (e.g., '00:01:30' or '90' seconds).<br><br><b>-to <B>position</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops processing the input at a specified timestamp (e.g., '00:05:00').<br><br>


title: DESCRIPTION
content:
The <I>ffmpeg-scaler</I> command conceptually represents the process of resizing and scaling video streams using the powerful <B>FFmpeg</B> multimedia framework. While not a standalone binary, it abstracts the common use case of modifying video dimensions, aspect ratios, and pixel formats. This operation is crucial for adapting video content to different display devices, reducing file sizes, or preparing media for specific platforms (e.g., social media, web streaming). <BR><BR>FFmpeg offers a highly flexible video filter system, primarily the <B>scale</B> filter, which allows users to specify target resolutions, maintain aspect ratios, or even crop and pad simultaneously. It supports various scaling algorithms, influencing output quality and processing speed. This conceptual command emphasizes ease of use for a complex task, enabling users to achieve precise control over their video output's visual properties.


title: CAVEATS
content:
Scaling operations can be CPU-intensive, especially for high resolutions or complex filter chains, impacting processing time. The quality of scaling depends on the chosen algorithm and the output codec settings. Incorrect aspect ratio handling can lead to distorted video. Always test outputs on different devices or players to ensure compatibility and visual fidelity. <BR><BR>Chaining multiple filters within <B>-vf</B> requires careful ordering, as the sequence of operations matters significantly.


title: SCALING ALGORITHMS
content:
The <B>scale</B> filter supports various algorithms, such as <I>bicubic</I> (default, good balance), <I>bilinear</I> (faster, lower quality), <I>lanczos</I> (higher quality, slower), and <I>nearest</I> (fastest, pixelated). Choosing the right algorithm impacts processing time and visual quality. You can specify it as part of the filter, for example: <B>-vf "scale=1280:-1:flags=lanczos"</B>.


title: ASPECT RATIO AND PADDING
content:
When scaling, maintaining the original aspect ratio is crucial. Using <B>-1</B> for one dimension in the <B>scale</B> filter automatically calculates the other. If you need to fit video into a specific resolution while maintaining its aspect ratio, you can use the <B>pad</B> filter in conjunction with <B>scale</B> to add black bars (letterboxing/pillarboxing). For instance, to scale to 1280x720 while maintaining aspect ratio and padding if necessary: <B>-vf "scale='min(1280,iw)':min(720,ih), pad=1280:720:(ow-iw)/2:(oh-ih)/2"</B>.


title: HISTORY
content:
<B>FFmpeg</B>, the underlying engine for scaling operations, has a rich history dating back to 2000. It began as a command-line tool for converting video and audio formats and has grown into a comprehensive, open-source multimedia framework. The <B>scale</B> video filter, a core component, has been continuously refined over releases, adding more algorithms and features. Its widespread adoption across various industries, from broadcast to web streaming, highlights its robust and flexible capabilities in video manipulation, including scaling.


title: SYNOPSIS
content:
The following synopsis applies to the primary utility, <b>ffmpeg</b>:<br><br><b>ffmpeg</b> [<i>global_options</i>] {[<i>input_file_options</i>] <b>-i</b> <i>input_url</i>} ... {[<i>output_file_options</i>] <i>output_url</i>} ...


title: PARAMETERS
content:
<b><b>-i</b> <i>&lt;input_url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input multimedia file or stream.<br><br><b><b>-f</b> <i>&lt;fmt&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the input or output format (e.g., mp4, webm).<br><br><b><b>-map</b> <i>&lt;stream_specifier&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects specific streams (video, audio, subtitles) from input to output.<br><br><b><b>-c</b>[:<i>stream_specifier</i>] <i>&lt;encoder_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the codec for a stream (e.g., h264, aac, libx265).<br><br><b><b>-b</b>[:<i>stream_specifier</i>] <i>&lt;bitrate&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target bitrate for a stream (e.g., 2M for 2 Mbps).<br><br><b><b>-ss</b> <i>&lt;position&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Seeks to a specific position (timestamp, e.g., 00:01:30) in the input or output.<br><br><b><b>-t</b> <i>&lt;duration&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the duration for recording or encoding (e.g., 60 for 60 seconds).<br><br><b><b>-s</b> <i>&lt;Wxh&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the frame size (width x height, e.g., 1280x720) for video output.<br><br><b><b>-vf</b> <i>&lt;filter_graph&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies video filters (e.g., `scale=640:-1`, `crop=in_w/2:in_h/2`).<br><br><b><b>-af</b> <i>&lt;filter_graph&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies audio filters (e.g., `volume=2`, `atempo=1.2`).<br><br><b><b>-y</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrites output files without asking for confirmation.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents overwriting output files; exits if a specified output file already exists.<br><br><b><b>-an</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables audio processing/recording for the output.<br><br><b><b>-vn</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables video processing/recording for the output.<br><br><b><b>-sn</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables subtitle processing/recording for the output.<br><br><b><b>-map_metadata</b> <i>&lt;outfile:infile&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies metadata from input to output or manipulates it.<br><br>


title: DESCRIPTION
content:
The term <b>ffmpeg-utils</b> refers to the essential collection of command-line tools distributed with the FFmpeg project, which is the leading open-source multimedia framework. While there isn't a single executable named <i>ffmpeg-utils</i>, this suite primarily comprises three powerful utilities: <b>ffmpeg</b>, <b>ffprobe</b>, and <b>ffplay</b>. <br><br><b>ffmpeg</b> is the flagship tool, a highly versatile program for converting, encoding, decoding, muxing, demuxing, streaming, filtering, and playing virtually any audio or video format. It supports an extensive range of codecs and formats, making it indispensable for video editing, audio manipulation, and media production workflows. <br><br><b>ffprobe</b> is designed for analyzing multimedia streams, providing detailed information about codecs, containers, and stream properties. <b>ffplay</b> is a simple, portable media player built using FFmpeg and SDL, primarily used for testing and quick playback of media files. Together, these utilities provide a comprehensive solution for almost all multimedia tasks on Linux and other platforms.


title: CAVEATS
content:
The term <i>ffmpeg-utils</i> refers to a <i>suite</i> of commands, not a single executable. <br><br>The <b>ffmpeg</b> command itself has an extremely complex and extensive set of options, often requiring a deep understanding of multimedia concepts like codecs, containers, and filtering. The learning curve can be steep. <br><br>Command syntax is highly flexible and order-dependent for some options. Certain advanced features or codecs might require specific FFmpeg builds or external libraries due to licensing restrictions.


title: UNDERSTANDING THE FFMPEG UTILITIES
content:
The <b>ffmpeg-utils</b> collection typically includes three primary tools:<br><br><b>ffmpeg</b>: The core command for multimedia conversion, encoding, and streaming. It handles most tasks involving media file manipulation.<br><br><b>ffprobe</b>: A powerful tool for analyzing multimedia streams and extracting detailed information about their contents, codecs, and metadata. Essential for troubleshooting and understanding media properties.<br><br><b>ffplay</b>: A simple, standalone media player built with FFmpeg libraries and SDL. It's often used for quick playback testing of media files, especially during development or debugging.


title: HISTORY
content:
The FFmpeg project was founded by <i>Fabrice Bellard</i> in 2000 and has since grown into a vital open-source multimedia framework. It became the backbone for numerous multimedia applications, operating systems, and online services, including YouTube, VLC, and HandBrake. The development is community-driven, with continuous updates and expansions to support new formats, codecs, and processing capabilities. Its widespread adoption underscores its robustness and versatility in multimedia manipulation.


title: PARAMETERS
content:
<b><b>ffmulticonverter</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invokes the <i>ffmulticonverter</i> graphical user interface (GUI) application.<br><br><b>[<i>file...</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies one or more multimedia files to be automatically loaded into the GUI's input list upon launch. The conversion process still requires user interaction within the GUI.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits, detailing available command-line options for launching the GUI.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the application's version information and exits.<br><br>


title: DESCRIPTION
content:
<i>ffmulticonverter</i> is a versatile graphical user interface (GUI) application for Linux, designed to simplify multimedia file conversions. It acts as a front-end to powerful command-line tools like <b>ffmpeg</b>, <b>ffprobe</b>, and <b>ImageMagick</b>'s <b>convert</b> utility. Instead of requiring users to learn complex command-line syntax for various codecs and formats, <i>ffmulticonverter</i> provides an intuitive interface to convert audio, video, and image files between a wide array of formats.<br><br>Users can easily select input files, choose desired output formats, adjust conversion settings (like quality, resolution, bitrate), and start the conversion process with a few clicks. It supports common formats including MP4, MKV, AVI, MP3, OGG, WAV, JPG, PNG, and many more, making it an excellent tool for general-purpose multimedia management and format transformation.


title: CAVEATS
content:
<i>ffmulticonverter</i> is primarily a graphical application and does not offer extensive command-line options for direct batch processing or automated conversions. Its functionality relies entirely on the presence and correct configuration of underlying tools like <b>ffmpeg</b> and <b>ImageMagick</b>. If these dependencies are not installed or are misconfigured, the application will not function correctly. Users seeking purely command-line driven multimedia conversion should consider using <b>ffmpeg</b> or <b>ImageMagick</b> directly.


title: BACKEND TECHNOLOGIES
content:
<i>ffmulticonverter</i> acts as a wrapper around several highly capable command-line utilities. For video and audio conversions, it primarily relies on <b>ffmpeg</b> (or its fork, <b>avconv</b>). For image manipulations and conversions, it utilizes <b>ImageMagick</b>'s <b>convert</b> program. This architecture means that the actual conversion power comes from these robust, widely used open-source tools, while <i>ffmulticonverter</i> provides the ease-of-use through its graphical interface.


title: HISTORY
content:
<i>ffmulticonverter</i> was developed as a user-friendly solution to the often complex command-line interfaces of powerful multimedia tools like <b>ffmpeg</b>. Its aim was to make multimedia conversion accessible to a wider audience, particularly those unfamiliar with terminal commands. It originated from the need for a simple, intuitive GUI front-end that could leverage the robust capabilities of existing open-source conversion engines without requiring extensive technical knowledge from the user.


title: SYNOPSIS
content:
<b>ffprobe</b> [<i>options</i>] [<i>input_file</i>]<br><br><i>Common usage examples:</i><br><b>ffprobe</b> -v error -show_streams -show_format -print_format json <i>input.mp4</i><br><b>ffprobe</b> -hide_banner -pretty -print_format json <i>video.mkv</i>


title: PARAMETERS
content:
<b><b>-i</b> <i>&lt;input&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the input multimedia file or URL. Although often implied as the last argument, it explicitly sets the input.<br><br><b><b>-v</b> <i>&lt;loglevel&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level. Common levels include <i>quiet</i>, <i>error</i>, <i>warning</i>, <i>info</i>, <i>verbose</i>, and <i>debug</i>.<br><br><b><b>-hide_banner</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress printing of the FFmpeg copyright and build configuration banner.<br><br><b><b>-show_streams</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about each stream (video, audio, subtitle, data) present in the input.<br><br><b><b>-show_format</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about the container format of the input file.<br><br><b><b>-show_chapters</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about chapters defined in the input file.<br><br><b><b>-show_packets</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about each packet read from the input.<br><br><b><b>-show_frames</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show information about each frame decoded from the input.<br><br><b><b>-print_format</b> <i>&lt;format&gt;</i><br>or <b>-of</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the output printing format. Supported formats include <i>json</i>, <i>xml</i>, <i>flat</i>, <i>ini</i>, and <i>csv</i>. Defaults to compact text if not specified.<br><br><b><b>-pretty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <i>json</i> or <i>xml</i> output format, pretty-print the output with indentation for better readability.<br><br><b><b>-count_frames</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Count the number of frames in each stream and report it.<br><br><b><b>-count_packets</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Count the number of packets in each stream and report it.<br><br><b><b>-select_streams</b> <i>&lt;stream_specifier&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select which streams to show information for. For example, <i>v</i> for video, <i>a</i> for audio, <i>s</i> for subtitle, or a stream index like <i>v:0</i>.<br><br><b><b>-duration_estimations</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable duration estimations for formats that do not explicitly provide it (can be slower).<br><br>


title: DESCRIPTION
content:
<b>ffprobe</b> is a command-line tool that gathers information from multimedia streams and containers. It is part of the FFmpeg project, a comprehensive suite of libraries and programs for handling video, audio, and other multimedia files and streams.<br><br>Unlike <b>ffmpeg</b>, which focuses on encoding and decoding, <b>ffprobe</b> is designed purely for analysis. It can output detailed information about various aspects of a media file, including: <i>container format properties</i> (e.g., duration, bitrate, metadata), <i>stream-specific details</i> (e.g., video resolution, frame rate, audio sample rate, codec name, language), <i>chapter markers</i>, and even <i>packet and frame information</i> for deeper analysis.<br><br>The output can be customized to various formats like plain text, JSON, XML, CSV, or INI, making it highly suitable for scripting and automated media processing workflows. It's an essential tool for developers, system administrators, and media professionals who need to programmatically inspect the characteristics of media files.


title: CAVEATS
content:
While powerful, <b>ffprobe</b> can consume significant CPU and memory, especially when analyzing large or complex files with options like <i>-show_frames</i> or <i>-show_packets</i>. Its detailed output, particularly in JSON or XML format, might be very verbose and requires careful parsing for specific data points. The interpretation of some low-level fields often requires familiarity with multimedia container and codec specifications.<br><br>Also, the exact structure of the JSON/XML output can sometimes have minor variations between different <b>ffprobe</b> versions, which might affect scripts relying on very specific paths.


title: COMMON OUTPUT FORMATS
content:
<b>ffprobe</b>'s strength lies in its flexible output formats, specified by <i>-print_format</i> or <i>-of</i>. For programmatic use, <i>json</i> and <i>xml</i> are highly recommended as they provide structured data that is easy to parse with scripting languages like Python or Node.js. The <i>flat</i> format provides a simplified key=value pair output, useful for simple parsing, while <i>csv</i> and <i>ini</i> offer other structured alternatives.


title: EXTRACTING SPECIFIC INFORMATION
content:
To get specific information like video resolution or audio bitrate efficiently, it's common practice to combine <i>-show_streams</i> and <i>-show_format</i> with <i>-print_format json</i>. Then, use a JSON parsing tool like <i>jq</i> (a command-line JSON processor) or a scripting language to extract the desired fields from the output. For example, to get video resolution, you would typically parse the 'streams' array in the JSON output and extract the 'width' and 'height' properties of the video stream object.


title: HISTORY
content:
<b>ffprobe</b> emerged as an essential component of the FFmpeg project, which began development in 2000. It was created to provide programmatic access to the rich metadata and stream information that FFmpeg's decoders could extract. As the project evolved and supported an ever-growing number of multimedia formats and codecs, <b>ffprobe</b>'s capabilities expanded in parallel. Its ability to output structured data (initially XML, later JSON) made it a cornerstone for automated media analysis and processing pipelines, particularly in web services, content management systems, and media production environments.


title: PARAMETERS
content:
<b><b>-f</b> <I>configuration_file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the <i>ffserver</i> configuration file, which defines server settings, input feeds, and output streams.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Daemonize <i>ffserver</i>, causing it to run in the background as a service.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available command-line options and usage information.<br><br><b><b>-v</b> <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level. Higher levels provide more detailed output (e.g., <i>debug</i>, <i>info</i>, <i>warning</i>, <i>error</i>, <i>fatal</i>).<br><br>


title: DESCRIPTION
content:
<i>ffserver</i> was a component of the FFmpeg project, designed to function as a versatile multimedia streaming server. It enabled users to serve live and on-demand audio and video content over various network protocols, including HTTP and RTSP.<br><br>Its core strength lay in its ability to dynamically transcode streams on the fly, allowing content to be adapted to different client capabilities, network conditions, and desired output formats. Configuration was primarily managed through a dedicated file, typically <i>ffserver.conf</i>, where users defined input sources (such as local files, capture devices, or network streams) and specified multiple output streams with unique codecs, resolutions, bitrates, and protocols.<br><br>While it offered significant flexibility for custom streaming setups, <i>ffserver</i> is now largely considered <b>deprecated</b>. Its development has ceased, and much of its core functionality for push-based streaming has been absorbed by the main <i>ffmpeg</i> command-line tool itself, or users are directed towards more robust, modern, and actively maintained dedicated streaming server solutions.


title: CAVEATS
content:
<i>ffserver</i> is widely considered <b>deprecated</b> and is no longer actively developed or maintained by the FFmpeg project. Its functionalities have been superseded by more modern streaming server technologies or integrated directly into the main <i>ffmpeg</i> command-line tool for specific push streaming scenarios.<br><br>Users seeking robust, secure, and actively supported streaming solutions are strongly advised to explore alternatives such as Nginx with RTMP/HLS modules, VLC, or other specialized commercial/open-source streaming servers. Using <i>ffserver</i> for new projects is generally discouraged due to lack of support, potential security vulnerabilities, and limited features compared to contemporary solutions.


title: CONFIGURATION FILE (<I>FFSERVER.CONF</I>)
content:
<i>ffserver</i>'s primary mode of operation is dictated by a comprehensive configuration file, typically named <i>ffserver.conf</i>. This file is crucial for defining the server's behavior, including global settings (e.g., HTTP port, maximum client connections) and, most importantly, various <i><Feed></i> and <i><Stream></i> sections.<br><br><i><Feed></i> sections specify input sources (such as a webcam, audio capture device, local video file, or another network stream), while <i><Stream></i> sections define output streams. For each output stream, users can configure specific codecs, bitrates, resolutions, and the network protocols (e.g., HTTP, RTSP) through which clients can access the content. This file-driven configuration provides immense control and flexibility but requires a thorough understanding of FFmpeg's multimedia parameters.


title: SUPPORTED STREAMING PROTOCOLS
content:
<i>ffserver</i> offered support for several streaming protocols, with HTTP and RTSP being the most prominent. HTTP streaming was commonly utilized for progressive downloads or simple live stream delivery, often accessible directly via web browsers.<br><br>RTSP (Real-Time Streaming Protocol), on the other hand, provided more advanced control functionalities for clients, allowing them to pause, seek, and manipulate playback for both live and on-demand streams. The choice of protocol typically depended on the client's capabilities, the desired level of stream control, and the specific use case requirements.


title: HISTORY
content:
<i>ffserver</i> emerged as an integral part of the FFmpeg project, providing a native, powerful solution for multimedia streaming. It gained significant traction for its flexibility in handling diverse media formats and its capability for on-the-fly transcoding, making it a popular choice for setting up custom streaming architectures for a period.<br><br>However, as web streaming technologies evolved rapidly (e.g., HLS, DASH) and dedicated streaming server solutions became more sophisticated, <i>ffserver</i>'s development lagged. The FFmpeg project ultimately decided to officially <b>deprecate</b> <i>ffserver</i>, advising users to leverage the core <i>ffmpeg</i> command for push-based streaming requirements or to opt for more specialized, feature-rich streaming servers for complex pull-based or large-scale deployments. Its last substantial updates occurred several years ago, positioning it as a legacy component within the FFmpeg ecosystem.


title: PARAMETERS
content:
<b>-u <I>URL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Target URL. Use the <I>FUZZ</I> keyword to specify injection points for wordlist entries (e.g., <I>http://example.com/FUZZ</I>).<br><br><b>-w <I>WORDLIST[:KEYWORD]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the wordlist file. Optional <I>:KEYWORD</I> allows specifying a custom keyword for multiple wordlists (e.g., <I>-w users.txt:USER -w pass.txt:PASS</I>).<br><br><b>-mc <I>CODES</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Match HTTP status codes. Comma-separated list (e.g., <I>200,301</I>). Supports ranges like <I>200-299</I>.<br><br><b>-fc <I>CODES</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter HTTP status codes. Comma-separated list (e.g., <I>404,403</I>).<br><br><b>-ml <I>LENGTH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Match content length. Comma-separated list (e.g., <I>10,20</I>).<br><br><b>-fl <I>LENGTH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter content length. Comma-separated list (e.g., <I>123</I>).<br><br><b>-t <I>THREADS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of concurrent threads (default is 40). Higher values increase speed but also resource consumption.<br><br><b>-H <I>HEADER</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a custom HTTP header (e.g., <I>"Authorization: Bearer token"</I>). Use <I>FUZZ</I> for fuzzing header values.<br><br><b>-X <I>METHOD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;HTTP method to use (e.g., <I>GET</I>, <I>POST</I>, <I>HEAD</I>, <I>PUT</I>).<br><br><b>-d <I>DATA</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;POST request data. Use <I>FUZZ</I> for injecting wordlist entries into the request body.<br><br><b>-recursion</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow redirects and recurse into discovered directories.<br><br><b>-rate <I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit requests per second to <I>N</I>. Useful for avoiding rate limits or reducing server load.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose output, showing full requests and responses.<br><br><b>-p <I>PROXYURL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an HTTP/SOCKS proxy (e.g., <I>http://127.0.0.1:8080</I> or <I>socks5://localhost:9050</I>).<br><br><b>-request <I>REQUESTFILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use an HTTP request file (e.g., captured from a proxy) as a template for requests. Requires <I>FUZZ</I> keyword in the file.<br><br><b>-seclimit <I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop fuzzing when <I>N</I> consecutive responses have the same size/words/lines. Useful for bypassing WAFs that block after repeated patterns.<br><br>


title: DESCRIPTION
content:
<b>ffuf</b> (<i>F</i>ast <i>F</i>uzz <i>U</i>ser <i>F</i>riendly) is a powerful, Go-based web fuzzer designed for speed and flexibility in web application penetration testing. It excels at discovering hidden files, directories, virtual hosts, and parameters by performing highly concurrent HTTP requests against a target. Its core strength lies in its ability to inject fuzzed payloads into various parts of an HTTP request (URL path, query parameters, headers, POST data) and then filter/match responses based on status codes, content length, words, lines, or even regular expressions. This makes it an indispensable tool for recon, vulnerability discovery, and validating web application security. It supports multiple input sources (wordlists), custom request methods, proxies, recursion, and more, making it adaptable to complex scenarios.


title: CAVEATS
content:
<b>Ethical Use:</b> Only use <I>ffuf</I> on systems for which you have explicit permission to test. Unauthorized scanning can be illegal and lead to serious consequences.<br><br><b>Resource Consumption:</b> High concurrency (<I>-t</I> option) can lead to significant network traffic and impose a heavy load on the target server, potentially causing denial-of-service.<br><br><b>WAF Detection:</b> Web Application Firewalls (WAFs) often detect and block automated scanning tools like <I>ffuf</I>. Techniques like rate limiting (<I>-rate</I>), custom headers, or specific payload encoding may be necessary to bypass them.<br><br><b>False Positives:</b> Careful filtering and matching are crucial to avoid misleading results, especially when fuzzing against large wordlists or dynamic content.


title: COMMON USE CASES
content:
<b>Directory and File Enumeration:</b> Discover hidden web paths and files (e.g., <I>ffuf -w wordlist.txt -u http://example.com/FUZZ</I>).<br><br><b>Virtual Host Discovery:</b> Enumerate virtual hosts using the <I>Host</I> header (e.g., <I>ffuf -w subdomains.txt -u http://example.com -H "Host: FUZZ.example.com"</I>).<br><br><b>Parameter Fuzzing:</b> Discover hidden or undocumented parameters for endpoints (e.g., <I>ffuf -w params.txt -u http://example.com/search?FUZZ=test</I>).<br><br><b>API Endpoint Discovery:</b> Identify and test undisclosed API paths and parameters for modern web applications.


title: THE FUZZ KEYWORD
content:
<I>ffuf</I> uses the special keyword <I>FUZZ</I> to indicate where wordlist entries should be injected into the target URL, HTTP headers, or POST data. This keyword is case-sensitive and must be present for <I>ffuf</I> to perform its fuzzing operation. Multiple <I>FUZZ</I> keywords can be used in conjunction with multiple <I>-w</I> flags (e.g., <I>-w users.txt:USER -w pass.txt:PASS -u http://example.com/login -d "user=USER&pass=PASS"</I>) for combinatorial fuzzing.


title: RESPONSE FILTERING AND MATCHING
content:
<I>ffuf</I> offers robust options for filtering out unwanted responses and matching desired ones, which is critical for accurate results. Parameters like <I>-mc</I> (match status codes), <I>-ml</I> (match content length), <I>-mw</I> (match word count), <I>-ms</I> (match line count), and <I>-mr</I> (match regex) help to narrow down the output to relevant findings. Corresponding <I>-fc</I>, <I>-fl</I>, <I>-fw</I>, <I>-fs</I>, <I>-fr</I> options are available for filtering out responses that meet certain criteria (e.g., common 404 pages).


title: HISTORY
content:
<I>ffuf</I> was created by <I>Jaanus Kääp</I> (<I>@joohoi</I>) and first released in 2019. It rapidly gained widespread adoption within the cybersecurity community due to its exceptional speed, flexibility, and intuitive command-line interface. Its development remains active, with continuous improvements and new features being added, solidifying its position as a preferred tool for web enumeration and vulnerability discovery.


title: PARAMETERS
content:
<b><I>%job_spec</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional argument that specifies the job to bring to the foreground. If omitted, the most recently suspended job is used. Job specifications can be numbers (e.g., <B>%1</B>), strings matching the command that started the job (e.g., <B>%sleep</B>), or <B>%%</B>/<B>%+</B> for the current job, or <B>% -</B> for the previous job.<br><br>


title: DESCRIPTION
content:
<I>fg</I> (foreground) is a shell built-in command used in Unix-like operating systems to resume the execution of a suspended or stopped job, bringing it back to the foreground.<br><br>When a command is running in the foreground, it has control of the terminal, meaning you can interact with it directly (e.g., input from keyboard, output to screen). Commands can be suspended by pressing <B>Ctrl+Z</B>, which sends a <B>SIGTSTP</B> signal to the process, stopping its execution and returning control to the shell.<br><br>The <I>fg</I> command allows you to select one of these suspended jobs and continue its execution in the foreground. This is crucial for interactive programs that require user input or real-time output. If no specific job is provided, <I>fg</I> typically operates on the most recently suspended job.


title: CAVEATS
content:
The <I>fg</I> command is a <B>shell built-in</B> and not a standalone executable. Its behavior and availability depend on the specific shell (e.g., Bash, Zsh, Ksh) and require job control to be enabled in the shell. It can only operate on jobs that are currently suspended or stopped; it cannot bring a background job directly to the foreground if it's still running in the background without first stopping it (though some shells might implicitly stop it).


title: JOB SPECIFICATION DETAILS
content:
When using <I>fg</I> with a job specification, you can refer to jobs in several ways:<br><ul><li><B>%N</B>: Refers to job number N (e.g., <B>%1</B>, <B>%2</B>).</li><li><B>%string</B>: Refers to the job whose command line begins with <I>string</I> (e.g., <B>%sleep</B> if you started a <I>sleep</I> command).</li><li><B>%?string</B>: Refers to the job whose command line contains <I>string</I> (e.g., <B>%?long_script</B>).</li><li><B>%%</B> or <B>%+</B>: Refers to the current job (the most recently stopped or backgrounded job).</li><li><B>% -</B>: Refers to the previous job.</li></ul>


title: HISTORY
content:
Job control features, including the concept of foregrounding and backgrounding processes, were introduced to Unix-like systems as part of the C shell (<I>csh</I>) and later adopted by other major shells like Bourne Again Shell (<I>bash</I>), Zsh, and Ksh. The <I>fg</I> command has been a standard component of these job control mechanisms since their inception, providing essential process management capabilities to users.


title: DESCRIPTION
content:
The <b>fgconsole</b> command outputs the number of the <i>virtual console</i> (VT) that is currently active and visible on the system's display. Linux systems typically provide several virtual consoles, accessible via <i>Ctrl+Alt+Fn</i> keys (e.g., <i>Ctrl+Alt+F1</i> for console 1, <i>Ctrl+Alt+F2</i> for console 2, etc.). This command is useful in scripts or for diagnostic purposes to determine which console is in the foreground, especially when trying to interact with a specific console or to understand the current terminal context. It directly queries the kernel's virtual terminal layer, providing a simple integer representing the active console ID.


title: CAVEATS
content:
It only reports the <i>number</i> of the console (e.g., 1, 2, 3), not its device path (e.g., <i>/dev/tty1</i>).<br>It operates specifically on Linux virtual consoles and does not provide information about pseudo-terminals (PTYs) used by graphical terminal emulators (like <i>gnome-terminal</i>, <i>konsole</i>, <i>xterm</i>) or SSH sessions.


title: USAGE IN SCRIPTS
content:
<b>fgconsole</b> is often used in shell scripts that need to perform actions dependent on the currently active console, such as logging information to a specific console or preventing certain operations if the user is not on a designated console. For example, <i>if [ "$(fgconsole)" -eq 1 ]; then echo "You are on console 1"; fi</i>.


title: DISTINCTION FROM PTYS
content:
It's crucial to distinguish between virtual consoles (accessible directly from the physical keyboard/display) and pseudo-terminals (PTYs) used by graphical terminal emulators or SSH connections. <b>fgconsole</b> only provides information about the former, not graphical terminal sessions or remote connections.


title: HISTORY
content:
The <b>fgconsole</b> command is part of the `kbd` package (Linux console tools), which provides essential utilities for managing the Linux console. It has been a standard utility for Linux systems for a long time, dating back to early kernel versions that supported virtual terminals, reflecting the fundamental need to programmatically determine the active console. Its simplicity underscores its core utility and enduring relevance.


title: PARAMETERS
content:
<b><i>PATTERN</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The fixed string pattern to search for. All characters are interpreted literally.<br><br><b><i>FILE</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more files to search. If no files are specified, <i>fgrep</i> reads from standard input.<br><br><b><b>-i</b>, <b>--ignore-case</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore case distinctions in both the <i>PATTERN</i> and input files.<br><br><b><b>-v</b>, <b>--invert-match</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invert the sense of matching, to select non-matching lines.<br><br><b><b>-x</b>, <b>--line-regexp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select only those matches that exactly match the whole line.<br><br><b><b>-w</b>, <b>--word-regexp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select only those matches that form whole words.<br><br><b><b>-r</b>, <b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively search subdirectories listed.<br><br><b><b>-R</b>, <b>--dereference-recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Same as <b>-r</b>, but follows symbolic links.<br><br><b><b>-l</b>, <b>--files-with-matches</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress normal output; instead, print the name of each input file from which output would normally have been printed.<br><br><b><b>-c</b>, <b>--count</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress normal output; instead, print a count of matching lines for each input file.<br><br><b><b>-n</b>, <b>--line-number</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prefix each line of output with the 1-based line number within its input file.<br><br><b><b>-q</b>, <b>--quiet</b>, <b>--silent</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all normal output. Exit immediately with zero status if any match is found, non-zero otherwise.<br><br><b><b>-f</b> <i>FILE</i>, <b>--file</b>=<i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Obtain <i>PATTERN</i>s from <i>FILE</i>, one per line. Empty lines are ignored.<br><br><b><b>-A</b> <i>NUM</i>, <b>--after-context</b>=<i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print <i>NUM</i> lines of trailing context after each match.<br><br><b><b>-B</b> <i>NUM</i>, <b>--before-context</b>=<i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print <i>NUM</i> lines of leading context before each match.<br><br><b><b>-C</b> <i>NUM</i>, <b>--context</b>=<i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print <i>NUM</i> lines of context (both leading and trailing) around each match.<br><br>


title: DESCRIPTION
content:
<i>fgrep</i>, which stands for "fixed <i>grep</i>," is a variant of the <i>grep</i> command designed specifically for searching for fixed strings or literal patterns within files. Unlike the standard <i>grep</i> command, <i>fgrep</i> does not interpret special characters as regular expressions; instead, it treats every character in the search pattern literally. This makes it particularly useful when you need to find exact matches of text that might contain characters that would otherwise have special meaning in regular expressions (e.g., '.', '*', '[', ']').<br><br>Historically, <i>fgrep</i> was often faster than <i>grep</i> for literal searches because it could use simpler string matching algorithms without the overhead of regex parsing. In modern Unix-like systems, <i>fgrep</i> is typically implemented as a symlink or hardlink to <i>grep -F</i>. This means that invoking <i>fgrep</i> is functionally equivalent to running <i>grep</i> with the <b>-F</b> (or <b>--fixed-strings</b>) option. While it's still available for backward compatibility and convenience, <i>grep -F</i> is the more explicit and recommended way to perform fixed-string searches.


title: CAVEATS
content:
The primary caveat of <i>fgrep</i> is that it does <b>not</b> support regular expressions. Any character in the search pattern, including those typically special in regex (like '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '^', '$', '\'), will be treated as a literal character. This is its defining characteristic and its limitation for complex pattern matching.<br><br>While still widely available, <i>fgrep</i> is considered largely deprecated in favor of <b>grep -F</b>. Users should be aware that <i>fgrep</i> might behave slightly differently or be absent on highly stripped-down or older systems compared to modern <i>grep</i> implementations.


title: DEPRECATION AND MODERN USAGE
content:
While <i>fgrep</i> still functions on most systems, it's generally recommended to use <b>grep -F</b> instead. This approach is more explicit about the search type and ensures consistent behavior across different <i>grep</i> versions. For example, instead of `fgrep 'my.file' *`, it's better to use `grep -F 'my.file' *`.


title: HISTORY
content:
<i>fgrep</i> emerged as a distinct command alongside <i>grep</i> and <i>egrep</i> in early Unix systems. Its creation was driven by the need for an efficient way to search for literal strings without the overhead of a regular expression engine. For many years, it was a separate executable optimized for this specific task. As <i>grep</i> implementations evolved and became more sophisticated, the functionality of <i>fgrep</i> was integrated into the main <i>grep</i> command via the <b>-F</b> (or <b>--fixed-strings</b>) option. In most contemporary Unix-like operating systems, <i>fgrep</i> is no longer a standalone program but rather a hardlink or symbolic link to <i>grep</i>, with an implied <b>-F</b> option. This ensures backward compatibility for scripts and users accustomed to the original command, while leveraging the single, powerful <i>grep</i> executable.


title: SYNOPSIS
content:
The <b>fi</b> keyword is part of the <I>if</I> statement structure:<br><pre>if <I>condition</I>; then<br> <I>commands</I><br>[elif <I>condition</I>; then<br> <I>commands</I>]<br>[else<br> <I>commands</I>]<br><b>fi</b></pre><br>It must always be preceded by an <I>if</I> statement and any associated <I>then</I>, <I>elif</I>, or <I>else</I> blocks.


title: PARAMETERS
content:
<b>No parameters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The keyword <b>fi</b> takes no parameters or arguments itself. It acts solely as a closing delimiter for the <b>if</b> statement structure.<br><br>


title: DESCRIPTION
content:
<b>fi</b> is a shell <I>keyword</I>, not a standalone Linux command or executable program. Its sole purpose is to terminate an <I>if</I>...<I>then</I>...<I>fi</I> control structure in shell scripts (such as those written for Bash, sh, zsh, or ksh). It signifies the end of the block of commands that are conditionally executed based on the <I>if</I> statement's condition. Without a matching <b>fi</b>, the shell interpreter would report a syntax error, as it would not know where the conditional block concludes. <b>fi</b> itself does not perform any action but provides essential structural integrity for control flow within shell scripts.


title: CAVEATS
content:
<b>fi</b> is a shell keyword, not an executable program. It must always be paired with an opening <I>if</I> statement. Incorrect pairing, misspelling (e.g., 'if' without a 'fi'), or improper placement will result in shell syntax errors, preventing the script from executing correctly. It is specific to shell scripting syntax and does not apply to other programming languages.


title: USAGE EXAMPLE
content:
Here is a common way <b>fi</b> is used within an <I>if</I> statement to control script flow:<br><pre><I>#!/bin/bash</I><br><br><I>MY_VAR="hello"</I><br><br><I>if [ "$MY_VAR" = "hello" ]; then</I><br> <I>echo "Variable is hello!"</I><br><I>else</I><br> <I>echo "Variable is not hello."</I><br><b>fi</b><br><br><I>echo "Script continues after the if block."</I></pre><br>In this example, <b>fi</b> clearly signals to the shell interpreter the end of the conditional block started by <I>if</I>, allowing the shell to correctly parse and execute the script.


title: HISTORY
content:
The <b>fi</b> keyword, as an integral part of the <I>if</I>...<I>then</I>...<b>fi</b> control structure, was introduced with the original Bourne Shell (<I>sh</I>) in Unix Version 7, developed by Stephen Bourne at Bell Labs in 1977. Its design philosophy was to provide a clear, explicit closing delimiter for conditional blocks, enhancing script readability and parsing robustness. This design choice was carried over to subsequent shells like Bash, Zsh, and Ksh, making it a fundamental and ubiquitous element of Unix/Linux shell scripting. Its backwards spelling of 'if' is a common stylistic choice in shell scripting for block delimiters (e.g., <I>case</I>...<I>esac</I>, <I>do</I>...<I>done</I>).


title: PARAMETERS
content:
<b><i>fiasco_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input FIASCO image file. If not specified, <b>fiascotopnm</b> reads the image data from standard input.<br><br>


title: DESCRIPTION
content:
<b>fiascotopnm</b> is a Netpbm command-line utility designed to convert image files from the FIASCO format into the standard PNM (Portable Anymap) format. Specifically, it can output either PBM (Portable Bitmap) for monochrome images or PGM (Portable Graymap) for grayscale images.<br><br>The FIASCO format itself is commonly used as the still image standard within the ITU T.120 and H.324 multimedia conferencing protocols. While <b>fiascotopnm</b> is useful for direct conversion of known FIASCO files, the Netpbm suite generally recommends using the more versatile <b>anytopnm</b> command if the input image format is uncertain. A significant limitation of <b>fiascotopnm</b> is its support for FIASCO images: it only processes monochrome (1 bit per pixel) and grayscale (8 bits per pixel) images. Any other FIASCO image type will cause the command to fail. The underlying FIASCO library on which this program is based originates from the <i>fiasco.org</i> website, developed to adhere to the aforementioned ITU standards. If no input file is specified, <b>fiascotopnm</b> defaults to reading the FIASCO image data from standard input.


title: CAVEATS
content:
<b>fiascotopnm</b> only supports monochrome (1 bit per pixel) and grayscale (8 bits per pixel) FIASCO images. It will fail if presented with other FIASCO image types. For greater versatility, especially when the input image format is unknown, it is often better to use the <b>anytopnm</b> command.


title: INPUT/OUTPUT
content:
If no input <i>fiasco_file</i> is provided as an argument, <b>fiascotopnm</b> reads the FIASCO image data from standard input. The converted PNM image is always written to standard output.


title: HISTORY
content:
<b>fiascotopnm</b> is part of the Netpbm project, a collection of graphics manipulation tools. Its functionality is based on an original FIASCO library obtained from the <i>fiasco.org</i> website. The command was developed to handle the FIASCO image format, which is a standard for still images within the ITU T.120 and H.324 multimedia conferencing protocols.


title: SYNOPSIS
content:
<b>figlet</b> [ <i>options</i> ] [ <i>text</i> ]<br><i>options</i> can include:<br>&nbsp;&nbsp;<b>-f</b> <i>fontfile</i>  Use a specific font.<br>&nbsp;&nbsp;<b>-d</b> <i>directory</i>  Specify a font directory.<br>&nbsp;&nbsp;<b>-w</b> <i>width</i>  Set the output width.<br>&nbsp;&nbsp;<b>-t</b>  Set output width to terminal width.<br>&nbsp;&nbsp;<b>-c</b>  Center the output.<br>&nbsp;&nbsp;<b>-l</b>  Left justify the output.<br>&nbsp;&nbsp;<b>-r</b>  Right justify the output.<br>&nbsp;&nbsp;<b>-p</b>  Paragraph justify the output.<br>&nbsp;&nbsp;<b>-s</b>  Smush characters (default).<br>&nbsp;&nbsp;<b>-k</b>  Kerning (no smushing, but less space).<br>&nbsp;&nbsp;<b>-x</b>  Smush using old rules.<br>&nbsp;&nbsp;<b>-m</b> <i>smushmode</i>  Direct smush mode.<br>&nbsp;&nbsp;<b>-o</b> <i>outputfile</i>  Write output to a file.<br>&nbsp;&nbsp;<b>-I</b>  List available fonts.<br>&nbsp;&nbsp;<b>-D</b>  Display font information.<br><i>text</i> is the string to convert. If omitted, <b>figlet</b> reads from standard input.


title: PARAMETERS
content:
<b><b>-f</b> <i>fontfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified font file (e.g., 'standard.flf') located in the font path. The font file extension (.flf or .tlf) is often omitted.<br><br><b><b>-d</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory to search for font files. This overrides or augments the default font search path.<br><br><b><b>-w</b> <i>width</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum output width for the generated text. If not specified, it defaults to 80 characters or terminal width if <b>-t</b> is used.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum output width to the current terminal width. This is particularly useful for dynamic terminal environments.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Centers the output horizontally within the specified or default width.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Left-justifies the output text.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Right-justifies the output text.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Paragraph-justifies the output. This tries to justify each line of text within the overall output block.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 'smushing,' where adjacent characters are merged horizontally if possible, reducing overall width. This is the default behavior.<br><br><b><b>-k</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 'kerning,' which places adjacent characters as close as possible without overlapping, but without actual merging. This usually results in wider output than smushing.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables 'smushing' using an older, less sophisticated set of rules. This might be used for backward compatibility with older font designs.<br><br><b><b>-m</b> <i>smushmode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly specifies the smush mode by a numerical value, offering finer control over character merging rules.<br><br><b><b>-o</b> <i>outputfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the generated ASCII art to the specified <i>outputfile</i> instead of standard output.<br><br><b><b>-I</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a list of all available font files found in the configured font directories.<br><br><b><b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed information about the default font, including its smushing rules and capabilities.<br><br>


title: DESCRIPTION
content:
<b>figlet</b> is a versatile command-line utility designed to generate large letters from ordinary text, transforming it into striking ASCII art banners. It achieves this by utilizing a wide array of specialized font files, each defining the character outlines for various artistic styles. Users can customize the output extensively, controlling aspects like justification (left, right, center, paragraph), output width, and "smushing" rules—how adjacent characters are compressed or merged to save space or enhance aesthetics. Commonly employed for decorative purposes, <b>figlet</b> output is often seen in shell scripts, <i>motd</i> (message of the day) files, READMEs, or simple text-based presentations. Its ease of use and rich font library make it a popular choice for adding a visual flair to plain text environments.


title: CAVEATS
content:
<b>figlet</b>'s output quality heavily depends on the chosen font file; some fonts may not render well with all text or terminal settings.<br>Complex character sets or multi-byte characters (e.g., Unicode) might not be fully supported by all fonts or older <b>figlet</b> versions, leading to incorrect or missing output.<br>The 'smushing' and 'kerning' algorithms can sometimes produce visually undesirable results, especially with certain character combinations or fonts not designed for heavy smushing.<br>The default output width and terminal size can also affect how banners are displayed, potentially causing wrapping or truncation.


title: FONT FILES AND DIRECTORIES
content:
<b>figlet</b> fonts are typically stored as <i>.flf</i> or <i>.tlf</i> files (FIGlet Font or TOIlet Font) in system-wide directories such as <i>/usr/share/figlet</i> or <i>/usr/local/share/figlet</i>. Users can specify custom font directories using the <b>-d</b> option or by setting the <b>FIGLET_FONTDIR</b> environment variable.


title: SMUSHING AND KERNING
content:
These terms refer to how <b>figlet</b> handles the horizontal spacing between characters. <i>Smushing</i> attempts to merge overlapping parts of adjacent characters to reduce width, while <i>kerning</i> simply minimizes the space between characters without merging. The default behavior is smushing (<b>-s</b>), but users can choose kerning (<b>-k</b>) or disable it entirely (<b>-o</b> with older versions or specific smush modes). Different fonts define their own smushing rules, which dictate how characters can be combined.


title: HISTORY
content:
<b>figlet</b> was originally authored by <i>Glenn Chappell</i> and <i>Ian Chai</i> in 1991, with the primary goal of creating a simple yet powerful tool for generating ASCII art banners. Its development was driven by the desire for a command-line utility that could produce large, stylized text without the need for graphic design software. Over the years, it has been maintained and enhanced by various developers, including Russell Stuart, Frank Scheffold, and others.<br><br>Since its inception, <b>figlet</b> has gained widespread popularity in Unix-like environments, becoming a standard utility for creating <i>motd</i> (message of the day) files, decorating shell scripts, or adding a distinctive visual element to terminal output. Its extensible font system contributed significantly to its longevity and versatility, allowing users to create and share custom font designs.


title: SYNOPSIS
content:
Since `<b>figlist</b>` is not a standard Linux command, there is no universally defined syntax or set of options. If it exists on a particular system, its usage would depend entirely on its custom implementation.<br><br>Typically, custom scripts might be invoked as `<b>figlist</b> [<i>options</i>] [<i>arguments</i>]` if it processes arguments, but this is purely speculative without specific context.


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;As `<b>figlist</b>` is not a standard or documented command, there are no predefined parameters or options. Any parameters it accepts would be specific to its custom implementation. Users should consult local documentation or the script's source code if `<b>figlist</b>` is a custom script.<br><br>


title: DESCRIPTION
content:
`<b>figlist</b>` is not a recognized or standard command in mainstream Linux distributions (like Debian, Ubuntu, CentOS, Fedora, or Arch Linux) or common utility packages (e.g., GNU Core Utilities, BusyBox). A thorough search in `<i>man</i>` pages, `<i>apropos</i>` database, and common online documentation reveals no official manual entry or widespread usage for a command named `<b>figlist</b>`.<br><br>It is highly probable that `<b>figlist</b>` is either a typo for another command (e.g., `<i>find</i>`, `<i>fgrep</i>`, `<i>file</i>`, `<i>ls</i>`), a highly specialized utility found only in a very specific, niche environment or custom-built system, or a placeholder name.<br><br>Users encountering `<b>figlist</b>` should verify its context within their specific system setup, as it might be an alias, a shell function, or an executable script placed in the system's PATH by a local administrator or a specific application.


title: CAVEATS
content:
`<b>figlist</b>` is not part of any standard Linux distribution or common utility set. Relying on `<b>figlist</b>` might lead to non-portability of scripts or configurations across different Linux environments. Its presence and functionality are entirely dependent on specific system configurations, custom installations, or local development.


title: POSSIBLE SCENARIOS
content:
If you encountered `<b>figlist</b>`, consider the following:<br>1. <b>Typo:</b> It might be a misremembered or misspelled version of a common command.<br>2. <b>Custom Script/Alias:</b> A local system administrator or application might have created a script or alias named `<b>figlist</b>`. You can check for aliases with `<b>alias figlist</b>` or for functions with `<b>type figlist</b>`.<br>3. <b>Application-Specific Utility:</b> It could be an internal command or utility bundled with a specific application or framework that is not designed for general command-line use.<br>4. <b>Obscure/Niche Tool:</b> Less likely, but it could be a highly specialized tool from a very specific domain or research project that isn't widely adopted.


title: VERIFICATION ON YOUR SYSTEM
content:
To check if `<b>figlist</b>` exists on your specific system, you can try:<br>1. `<b>which figlist</b>`: Shows the full path to the executable if it's in your PATH.<br>2. `<b>type figlist</b>`: Tells you if it's an alias, function, or executable.<br>3. `<b>man figlist</b>`: Checks for a manual page.<br>4. `<b>find / -name figlist 2>/dev/null</b>`: Searches the entire filesystem (might take a long time and require root privileges for some directories).


title: HISTORY
content:
There is no documented history for a standard Linux command named `<b>figlist</b>`. Its potential existence would be limited to specific, custom, or undocumented environments.


title: PARAMETERS
content:
<b><b>-b</b>, <I>--brief</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not prepend filenames to output lines (e.g., only show the file type description).<br><br><b><b>-i</b>, <I>--mime</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs mime type strings along with character set information (e.g., <I>text/plain; charset=us-ascii</I>).<br><br><b><b>-k</b>, <I>--keep-going</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't stop at the first match. This allows identifying all applicable types for a file.<br><br><b><b>-L</b>, <I>--dereference</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Follow symbolic links. By default, <b>file</b> examines the link itself, not the target.<br><br><b><b>-s</b>, <I>--special-files</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Normally, <b>file</b> attempts to read and determine the type of argument files which are symbolic links. It also tries to determine the type of block or character special files.<br><br><b><b>-z</b>, <I>--uncompress</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Try to look inside compressed files. It automatically uncompresses common compression types like gzip, bzip2, xz, etc.<br><br><b><b>-f</b> <I>namefile</I>, <I>--files-from</I> <I>namefile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the names of the files to be examined from <I>namefile</I> (one per line) instead of the command line.<br><br><b><b>-m</b> <I>magicfile</I>, <I>--magic-file</I> <I>magicfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate list of magic number files to use instead of the default ones.<br><br>


title: DESCRIPTION
content:
The <b>file</b> command is a standard Unix utility that identifies the type of a given file. It's crucial for understanding the nature of files, especially when extensions are missing or misleading.<br><br>Unlike simply looking at a file's extension, <b>file</b> examines the file's content, header bytes, and file system information. It primarily uses a database of <I>"magic numbers"</I> (predefined byte sequences) located in files like <I>/usr/share/misc/magic</I> or <I>/etc/magic</I> (and its compiled version, <I>magic.mgc</I>), along with internal heuristics. This allows it to distinguish between various types like text files, executable binaries, libraries, archives, image formats, and more. It can also identify character sets and compression types.<br><br>Its output provides valuable insights for users and scripts, helping to determine how to process or open a file correctly. It's widely used in shell scripts for conditional processing based on file type.


title: CAVEATS
content:
<b>file</b> relies heavily on a database of <I>"magic numbers"</I> and heuristics, which means it may not always be 100% accurate, especially for unusual or corrupted files. It can be fooled by files intentionally disguised to appear as a different type. The accuracy depends on the comprehensiveness and up-to-dateness of the magic files.


title: MAGIC FILES (<I>/USR/SHARE/MISC/MAGIC</I>)
content:
<b>file</b> primarily determines file types by consulting a database of <I>"magic numbers"</I> and byte patterns stored in files like <I>/usr/share/misc/magic</I> or <I>/etc/magic</I> (and its compiled version, <I>magic.mgc</I>). These files contain rules that describe characteristic byte sequences at specific offsets within a file, allowing the command to identify various formats like JPEG images, ELF executables, ZIP archives, and more.


title: OUTPUT FORMAT
content:
By default, the output format for a single file is <I>filename: file_type_description</I>. For example, <I>myfile.txt: ASCII text</I> or <I>myprogram: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=..., stripped</I>.


title: HISTORY
content:
The <b>file</b> command is a very old and fundamental Unix utility, with its origins tracing back to the early versions of Research Unix in the 1970s. It was later included in System V Unix and became a part of the POSIX standard, cementing its place as a core command-line tool. The modern widely used version is maintained by Ian Darwin and others, with continuous efforts to expand its magic database to recognize new file formats. Its core mechanism of inspecting file content for type identification has remained consistent throughout its development.


title: PARAMETERS
content:
<b><i>expression</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The string to search for within filenames.<br><br><b><i>replacement</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The string to replace the <i>expression</i> with.<br><br><b><i>file...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more files to be renamed. Wildcards are supported.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a list of files successfully renamed.<br><br><b><b>-n</b>, <b>--no-op</b>, <b>--test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run; show what would be renamed without actually doing it. Highly recommended to prevent unintended changes.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite existing destination files without prompting.<br><br><b><b>-i</b>, <b>--interactive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompt before overwriting an existing file.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
The <i>rename</i> command, part of the <i>util-linux</i> package and sometimes found as `file-rename` or `rename.ul`, provides a straightforward way to rename multiple files by replacing a specific string within their names. Unlike its Perl-based counterpart, this version performs a <i>simple string substitution</i>: it finds the <b>first occurrence</b> of an `expression` in each filename and replaces it with a `replacement` string. This utility is particularly useful for simple, repetitive renaming tasks across many files, such as changing file extensions or correcting common typos in a series of names. It operates directly on the provided filenames and does not support regular expressions or recursive directory traversal. Users should exercise caution, especially when overwriting existing files, and are encouraged to use the dry-run option first.


title: CAVEATS
content:
It is crucial to distinguish this <i>util-linux</i> `rename` (sometimes `file-rename` or `rename.ul`) from the more common and powerful <i>Perl-based</i> `rename` command (often just `rename` or `perl-rename`).<br><br>The <i>util-linux</i> version performs <b>only a simple string substitution</b> on the <b>first occurrence</b> of the `expression`. It <b>does NOT support regular expressions</b>.<br><br>Always use the `<b>-n</b>` (dry-run) option first to verify the intended changes before executing the command, especially when dealing with critical files or large batches.


title: DIFFERENCES FROM 'MV'
content:
While `mv` renames individual files or moves them to a new directory, `rename` is designed for <b>batch operations</b> where a specific string pattern needs to be changed across multiple filenames. `mv` requires you to specify each new name individually (or move to a new directory), whereas `rename` automates the renaming based on a rule.


title: CHECKING YOUR 'RENAME' VERSION
content:
To determine which `rename` command your system uses by default, you can execute `type rename` or `which rename`. If it points to `/usr/bin/rename` (or similar) and `man rename` shows a Perl-based documentation, then you have the more powerful version. If `man rename` shows a simpler man page (or `man rename.ul`), it's likely the <i>util-linux</i> version.


title: BASIC USAGE EXAMPLE
content:
To rename all files with `.txt.old` extension to `.txt`: <br> `rename ".txt.old" ".txt" *.txt.old`<br>This would change `document.txt.old` to `document.txt`.


title: HISTORY
content:
The `rename` command on Linux systems primarily exists in two distinct implementations: the <i>util-linux</i> version and the Perl-based version. The <i>util-linux</i> variant, often compiled as `file-rename` or symlinked as `rename.ul`, focuses on basic string replacement. This simpler tool has been part of system utilities for a long time. Concurrently, a much more flexible `rename` utility written in Perl emerged, providing powerful regular expression capabilities. This dual existence means users must often check which `rename` binary is invoked by default (e.g., via `type rename`) to understand its exact behavior and capabilities.


title: PARAMETERS
content:
<b><b>-a</b>, <b>--add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add files or folders to an archive. This option typically launches the graphical interface for file selection.<br><br><b><b>-d</b>, <b>--extract</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extract files from the specified archive. This can be combined with <b>--extract-to</b> for a specific destination.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the operation without prompting for confirmation, where applicable.<br><br><b><b>-i</b>, <b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information about the specified archive file.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the content of an archive within the main <i>file-roller</i> window.<br><br><b><b>-t</b>, <b>--test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Test the integrity of an archive to check for any corruption or errors.<br><br><b><b>-e</b>, <b>--extract-to=FOLDER</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target <i>FOLDER</i> where files should be extracted.<br><br><b><b>-n</b>, <b>--new-window</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Open a new instance of the <i>file-roller</i> application window.<br><br><b><b>--display=DISPLAY</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the X display to use for the graphical application.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the program's version number and then exit.<br><br><b><b>-?</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display basic command-line help options.<br><br><b><b>--help-all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all available help options, including GTK+ specific ones.<br><br><b><b>--help-gtk</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show GTK+ Toolkit specific options.<br><br>


title: DESCRIPTION
content:
<i>file-roller</i> is the default archive manager for the GNOME desktop environment. It provides a user-friendly graphical interface to manage a wide array of archive formats such as <b>tar</b>, <b>zip</b>, <b>gzip</b>, <b>bzip2</b>, <b>7z</b>, and more.<br><br>Users can easily perform common archive operations: creating new archives, viewing their contents, extracting files to a desired location, and even modifying existing archives. It acts as a convenient front-end to a multitude of underlying command-line archiving tools, abstracting their complexities to offer a seamless and intuitive user experience.


title: CAVEATS
content:
<i>file-roller</i> is predominantly a <b>graphical user interface (GUI) application</b>. While it offers command-line arguments for convenience, most operations will launch the main GUI window for user interaction. Consequently, it is generally <b>not suitable for automated scripting or batch processing</b> in headless or command-line-only environments, where direct command-line archiving tools are preferred.


title: GUI-CENTRIC DESIGN
content:
Despite its command-line options, <i>file-roller</i>'s primary function is as a graphical archive manager. Invoking most command-line arguments will open the GUI, meaning it's less suited for purely automated tasks. For scripting or server environments, direct command-line utilities like <b>tar</b> or <b>zip</b> are the more appropriate choices.


title: EXTENSIVE FORMAT COMPATIBILITY
content:
<i>file-roller</i> serves as a versatile front-end that supports a wide array of archive formats. This includes popular types such as <b>.tar</b>, <b>.tar.gz</b>, <b>.tar.bz2</b>, <b>.tar.xz</b>, <b>.zip</b>, <b>.rar</b>, and <b>.7z</b>, along with disk image formats like <b>.iso</b>. This broad compatibility makes it a comprehensive solution for most archiving needs on the desktop.


title: HISTORY
content:
Developed as an integral component of the <b>GNOME project</b>, <i>file-roller</i> first emerged around 1999/2000. It quickly established itself as the standard archive utility for the GNOME desktop environment, providing a consistent and user-friendly graphical interface for managing archives across various formats, thereby simplifying complex command-line operations for a broader user base.


title: SYNOPSIS
content:
<i><b>filebrowser</b> [<u>command</u>] [<u>options</u>]<br><br><b>Examples:</b><br><b>filebrowser</b> <b>--port</b> <i>8080</i> <b>--root</b> <i>/srv/data</i><br><b>filebrowser</b> <u>config</u> <u>init</u><br><b>filebrowser</b> <u>users</u> <u>add</u> <b>john</b> <b>doe123</b></i>


title: PARAMETERS
content:
<b><b>--address</b>, <b>-a</b> <i>&lt;IP_ADDRESS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Binds the server to a specific IP address (e.g., <b>0.0.0.0</b> for all interfaces, <b>127.0.0.1</b> for localhost).</i><br><br><b><b>--port</b>, <b>-p</b> <i>&lt;PORT_NUMBER&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the port number on which the server will listen (default: <b>8080</b>).</i><br><br><b><b>--root</b>, <b>-r</b> <i>&lt;PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the root directory from which files will be served and managed. All operations are confined to this directory.</i><br><br><b><b>--database</b>, <b>-d</b> <i>&lt;PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path to the SQLite database file where user data, settings, and other configurations are stored.</i><br><br><b><b>--log</b>, <b>-l</b> <i>&lt;PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Redirects server logs to the specified file instead of standard output.</i><br><br><b><b>--username</b> <i>&lt;USERNAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the initial username for the default admin user if one is created upon first run.</i><br><br><b><b>--password</b> <i>&lt;PASSWORD&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the initial password for the default admin user if one is created upon first run.</i><br><br><b><b>--no-auth</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disables authentication. <b><u>WARNING: This makes your file browser accessible to anyone without credentials and is highly insecure for public exposure.</u></b></i><br><br><b><b>--auth.method</b> <i>&lt;METHOD&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Configures the authentication method (e.g., <b>json</b> for internal user management, <b>proxy</b> for external authentication, <b>oauth</b> for OAuth providers).</i><br><br><b><b>--locale</b> <i>&lt;LANG_CODE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the language for the user interface (e.g., <b>en</b>, <b>es</b>, <b>fr</b>).</i><br><br><b><b>--baseurl</b> <i>&lt;URL_PATH&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies a base URL path if <b>filebrowser</b> is served under a subdirectory (e.g., behind a reverse proxy at <b>example.com/files</b>).</i><br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current version of the <b>filebrowser</b> application.</i><br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows the help message, including all available commands and options.</i><br><br>


title: DESCRIPTION
content:
<i><br><b>filebrowser</b> is a standalone web application written in Go, designed to provide a user-friendly web interface for managing files and directories. It allows users to browse, upload, download, delete, rename, and move files directly from a web browser. Known for its ease of deployment (as a single binary) and low resource usage, it's often utilized for simple file sharing, media serving, or as a personal cloud solution.<br><br>It's an excellent choice for quickly setting up a secure and accessible way to manage files on a server or a local machine without needing a full-fledged web server stack. Its capabilities extend to user management, permission control, and theme customization, making it versatile for various file-serving needs.</i>


title: CAVEATS
content:
<i><br><b>Security Risks:</b> Running <b>filebrowser</b> with <b>--no-auth</b> or weak credentials can expose your files to unauthorized access, especially if publicly accessible. Always use strong passwords and consider running it behind a robust reverse proxy with additional security layers.<br><b>Resource Usage:</b> While lightweight, heavy concurrent usage or operations on very large files can consume significant system resources (CPU, RAM, I/O).<br><b>Not a Core Utility:</b> <b>filebrowser</b> is a third-party application, not a standard Linux system command, and must be installed separately. It typically runs as a long-running service or in a Docker container.</i>


title: <I>SUBCOMMANDS</I>
content:
<i><b>filebrowser</b> offers several subcommands to manage its behavior and data, rather than just options for the main run process:<br><br><b>config:</b> Used to initialize, set, get, or list server configuration options (e.g., <b>filebrowser config init</b>).<br><b>users:</b> Manages user accounts, including adding, updating, deleting, or listing users and their permissions (e.g., <b>filebrowser users add</b>).<br><b>plugins:</b> Deals with plugin management (less common for typical usage).<br><b>version:</b> Displays detailed version information of the application and its components.</i>


title: <I>DEPLOYMENT METHODS</I>
content:
<i><b>filebrowser</b> can be deployed in several ways:<br><br><b>Standalone Binary:</b> The most common method involves downloading the pre-compiled executable for your specific operating system and running it directly.<br><b>Docker Container:</b> A Docker image is officially provided, allowing for easy, portable, and isolated deployments.<br><b>Systemd Service:</b> On Linux systems, it can be configured to run as a systemd service, ensuring it starts automatically on boot and runs in the background.</i>


title: HISTORY
content:
<i><br><b>filebrowser</b> was initially created by Hujun (with significant contributions from other developers) as a personal project, leveraging the Go programming language. It quickly gained traction due to its simplicity, cross-platform compatibility (being a single executable), and low resource footprint. Its design philosophy has always focused on ease of deployment and providing essential file management features via a web interface, making it a popular choice for quick file sharing and personal cloud setups since its early development.</i>


title: SEE ALSO
content:
<i>nginx(8)</i>, <i>apache2(8)</i>, <i>caddy(8)</i>, <i>python -m http.server(1)</i>, <i>scp(1)</i>, <i>sftp(1)</i>


title: SYNOPSIS
content:
<b>filecheck</b> [<I>options</I>] <I>check-file</I> [<I>input-file</I>]<br><b>filecheck</b> [<I>options</I>] <I>--input-file</I>=<I>input-file</I> <I>check-file</I>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display available options and usage information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the version of the program.<br><br><b>--check-prefix=<prefix></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a prefix to use for <b>CHECK:</b> directives. Can be specified multiple times to define multiple prefix sets (e.g., <b>CHECK</b>, <b>FOO</b>).<br><br><b>--input-file=<filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input file to check. If not specified, <b>filecheck</b> reads from standard input.<br><br><b>--allow-empty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not fail if the <i>check-file</i> contains no <b>CHECK:</b> directives.<br><br><b>--strict-whitespace</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Require exact whitespace match for <b>CHECK:</b> patterns. By default, multiple spaces or tabs in a pattern can match any sequence of whitespace.<br><br><b>--implicit-check-not=<pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an implicit <b>CHECK-NOT:</b> for the given pattern. This pattern will be checked between every successful <b>CHECK</b> match.<br><br><b>--enable-var-parsing</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable parsing of <b>[[VAR]]</b> and <b>{{EXPR}}</b> syntax for capturing parts of matches into variables and performing simple expressions.<br><br><b>--enable-eval-parsing</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable parsing of <b>{{EXPR}}</b> syntax for expressions. This is often implied by <b>--enable-var-parsing</b>.<br><br><b>--match-full-lines</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Require <b>CHECK</b> patterns to match entire input lines, not just substrings.<br><br><b>--dump-input</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump the input file to standard error before checking begins, useful for debugging.<br><br><b>--dump-check-lines</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump the parsed <b>CHECK</b> lines to standard error before checking, useful for debugging.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print verbose output, including matched lines and successful checks.<br><br><b>--color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use colored output for matches and failures, if the terminal supports it.<br><br><b>--fix-misexpectations</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update the <i>check-file</i> in place with suggested <b>CHECK:</b> patterns based on the current input. Use with caution as it modifies files.<br><br><b>--ignore-case</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform case-insensitive matching for all patterns.<br><br>


title: DESCRIPTION
content:
<b>filecheck</b> is a powerful command-line utility, primarily used in automated testing, especially within the LLVM project. It verifies if an input file (e.g., compiler output, disassembled code) matches specific patterns defined in a "check file" (often the test source itself). The tool reads the check file line by line, looking for <b>CHECK:</b> directives. These directives specify patterns that must be found in the input file, in a specific order or context.<br><br><b>filecheck</b> supports various directives like <b>CHECK-NEXT:</b> for sequential matches, <b>CHECK-NOT:</b> for absence of patterns, <b>CHECK-SAME:</b> for continuation on the same line, <b>CHECK-DAG:</b> for unordered matches within a block, and <b>CHECK-LABEL:</b> for matching and anchoring in functions or labels. Its robust pattern matching capabilities, including basic regular expressions and variable substitution, make it indispensable for verifying complex compiler optimizations, code generation, and language feature implementations in large test suites.


title: CAVEATS
content:
<b>filecheck</b> is very particular about whitespace; by default, it compresses sequences of whitespace. Use <b>--strict-whitespace</b> for exact matches.<br><br>Debugging failing <b>filecheck</b> tests can be challenging due to its sequential matching and the nature of <b>CHECK-NOT:</b> failures, which often occur unexpectedly.<br><br>It is primarily designed for automated test verification in compiler and toolchain development, not as a general-purpose text processing utility like <b>grep</b> or <b>sed</b>. Its regular expression support is basic, and complex regex might require pre-processing the input.


title: CHECK DIRECTIVES EXPLAINED
content:
The core functionality of <b>filecheck</b> revolves around its directives, placed in the <i>check-file</i>:<br><ul><li><b>CHECK:</b> <I>pattern</I><br>Matches the <i>pattern</i> anywhere in the input stream, advancing the internal cursor past the matched line.</li><li><b>CHECK-NEXT:</b> <I>pattern</I><br>Matches the <i>pattern</i> on the line immediately following the last successful <b>CHECK</b> match.</li><li><b>CHECK-SAME:</b> <I>pattern</I><br>Matches the <i>pattern</i> on the same line as the last successful <b>CHECK</b> match. Useful for multiple checks on a single line.</li><li><b>CHECK-NOT:</b> <I>pattern</I><br>Ensures that the <i>pattern</i> does NOT appear on any line between the current input cursor position and the next successful <b>CHECK</b> (or the end of the input).</li><li><b>CHECK-DAG:</b> <I>pattern</I><br>Matches <i>pattern</i> anywhere in the input stream, but does not advance the cursor. Multiple <b>CHECK-DAG</b> patterns can match in any order within a block, useful for non-deterministic output order.</li><li><b>CHECK-LABEL:</b> <I>pattern</I><br>Matches <i>pattern</i> and anchors the search context to the line it matches. This is typically used to define logical blocks (e.g., function definitions) within which subsequent checks operate.</li><li><b>CHECK-EMPTY:</b><br>Matches an empty line.</li><li><b>[[VAR]]</b> and <b>{{EXPR}}</b><br>When <b>--enable-var-parsing</b> is active, <b>[[VAR:regex]]</b> captures a regular expression match into a variable <b>VAR</b>, and <b>{{EXPR}}</b> allows using arithmetic or string expressions with these variables in subsequent patterns.</li></ul>


title: TYPICAL USAGE
content:
<b>filecheck</b> is most commonly used in conjunction with test runners like LLVM's <I>lit</I> (LLVM Integrated Tester). A typical test file might contain source code, compiler flags, and the <b>CHECK:</b> directives embedded as comments. The test runner compiles or processes the source code, redirects its output to <b>filecheck</b>, and then <b>filecheck</b> verifies the output against the embedded directives. This approach allows for self-contained, easily verifiable tests where the expected output patterns are part of the test source itself, simplifying maintenance and understanding.


title: HISTORY
content:
<b>filecheck</b> was developed as an integral part of the LLVM project's testing infrastructure. Its creation was driven by the need for a robust and flexible way to verify complex compiler outputs, where traditional diffing or simple <b>grep</b> commands were insufficient due to variations in whitespace, register allocation, or instruction ordering. It became the de-facto standard for validating code generation and optimization passes within LLVM test suites, allowing developers to write self-contained tests where the expected output patterns are embedded directly within the source code of the test itself.


title: PARAMETERS
content:
<b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>Verbose output.</i> Displays detailed information about each extent, including the logical block number, physical block number, and length.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>Synchronous (safe) mode.</i> Before checking a file, ensures all pending writes to the file are flushed to disk. This can slow down the operation but ensures accurate reporting for actively written files.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>Display raw extent information.</i> Shows the extent map of the file in a more technical, raw format, useful for debugging or detailed analysis.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>Display help message.</i> Shows a brief usage summary and available options.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><i>Display version information.</i> Shows the version of <i>filefrag</i>.<br><br>


title: DESCRIPTION
content:
<i>filefrag</i> is a utility for reporting the number of extents (contiguous blocks) a file occupies on a disk. In file systems that support extents (like ext4, XFS, Btrfs), a single extent can represent a large contiguous block of data. When a file is highly fragmented, it is stored in many non-contiguous blocks, leading to a high number of extents. This can negatively impact read/write performance.<br><i>filefrag</i> helps identify such files, allowing administrators or users to assess fragmentation levels. A lower extent count indicates better contiguity and less fragmentation, improving I/O efficiency. It's often used by system administrators to diagnose performance issues related to disk fragmentation, though modern journaling filesystems like ext4 mitigate fragmentation far better than older filesystems.


title: CAVEATS
content:
<i>filefrag</i> primarily works with filesystems that support extents (e.g., ext4, XFS, Btrfs). For older filesystems or those not supporting extents, its output might be less meaningful or different.<br>It only reports on fragmentation; it does not defragment files.<br>Modern Linux filesystems (like ext4) are designed to minimize fragmentation automatically, so severe fragmentation requiring <i>filefrag</i> is less common than in the past.


title: EXTENT-BASED ALLOCATION
content:
<i>filefrag</i>'s output is based on the concept of extents. An extent is a contiguous block of disk space allocated to a file. Instead of tracking individual data blocks, filesystems using extents track larger contiguous regions. This significantly reduces the metadata overhead and improves performance, especially for large files, as fewer entries are needed to describe the file's layout on disk. A file with one extent is perfectly contiguous. A file with multiple extents is fragmented.


title: HISTORY
content:
<i>filefrag</i> is part of the <i>e2fsprogs</i> package, a suite of utilities for the ext2, ext3, and ext4 filesystems. Its development is tied to the evolution of these filesystems, particularly the introduction and optimization of extent-based allocation to improve performance and reduce fragmentation on large files.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available command-line options and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the FileZilla program's version number and exits.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose logging output, useful for debugging.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, often providing more detailed information than verbose mode.<br><br><b>--config-dir=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory to load and save configuration files, allowing for portable or separate configurations.<br><br>


title: DESCRIPTION
content:
FileZilla is a free, open-source, cross-platform graphical user interface (GUI) FTP, FTPS (FTP over SSL/TLS), and SFTP (SSH File Transfer Protocol) client. It provides a user-friendly interface for transferring files between a local computer and remote servers. Key features include a site manager for storing connection details, a tabbed interface, powerful queue management for uploads and downloads, directory comparison, transfer speed limits, filename filters, and support for IPv6. While primarily a GUI application, the `<b>filezilla</b>` command on Linux launches this powerful desktop client, enabling users to manage file transfers visually rather than through a command-line interface. It's widely used by web developers, system administrators, and anyone needing a reliable way to interact with remote file systems securely.


title: CAVEATS
content:
FileZilla is fundamentally a GUI application; its command-line functionality is very limited and primarily for launching or debugging. It does not provide command-line arguments to directly connect to a specific site, initiate transfers, or automate tasks without user interaction, unlike CLI-centric tools such as `sftp` or `ftp`. All significant operations are performed through its graphical interface. When storing credentials in its Site Manager, ensure your operating system's security practices are robust.


title: GUI-CENTRIC OPERATION
content:
The vast majority of FileZilla's functionality, including site management, file transfer queues, directory comparisons, and settings configurations, is accessed and managed exclusively through its intuitive graphical user interface. Users typically interact with remote servers by adding them to the Site Manager and then connecting through the GUI.


title: CROSS-PLATFORM AVAILABILITY
content:
FileZilla is available across major operating systems, including Linux, Windows, and macOS. This cross-platform compatibility contributes significantly to its popularity and allows users to maintain a consistent file transfer experience regardless of their preferred operating system.


title: SECURITY PRACTICES
content:
While FileZilla supports plain FTP, it strongly encourages and facilitates the use of secure protocols like FTPS (FTP over SSL/TLS) and SFTP (SSH File Transfer Protocol) for encrypting data in transit. Users are advised to always use these secure options to protect sensitive information during file transfers, especially over untrusted networks.


title: HISTORY
content:
FileZilla was initiated in 2001 by Tim Kosse and a few classmates as a computer science project. It is a free, open-source project licensed under the GNU General Public License (GPL). Since its inception, it has undergone continuous development, with regular updates introducing new features, improvements, and security fixes. Its cross-platform availability and robust feature set quickly led to its widespread adoption, making it one of the most popular FTP clients globally for Windows, macOS, and Linux users.


title: SYNOPSIS
content:
<B>filterdiff</B> [<I>options</I>] [<I>diff_file</I>...]<br><I>diff_command</I> | <B>filterdiff</B> [<I>options</I>]


title: PARAMETERS
content:
<b>-i <pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include files whose paths match the specified shell-style glob <I>pattern</I>. Can be specified multiple times.<br><br><b>-x <pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude files whose paths match the specified shell-style glob <I>pattern</I>. Can be specified multiple times.<br><br><b>-I <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read include patterns from <I>file</I>, one pattern per line.<br><br><b>-X <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read exclude patterns from <I>file</I>, one pattern per line.<br><br><b>--files-are-regex</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat file patterns provided with <I>-i</I>/<I>-x</I> or <I>-I</I>/<I>-X</I> as regular expressions instead of shell globs.<br><br><b>--lines-matching=<regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include only hunks that contain at least one line matching the specified <I>regex</I>.<br><br><b>--lines-not-matching=<regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude hunks that contain any line matching the specified <I>regex</I>.<br><br><b>--grep-hunks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When using <I>--lines-matching</I> or <I>--lines-not-matching</I>, only output the matching lines/hunks, not the entire diff for the file.<br><br><b>-p <num></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Strip <I>num</I> leading path components from file names. Useful when applying patches from a different subdirectory.<br><br><b>-z, --uncompress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uncompress input files using <I>gzip</I> or <I>bzip2</I> if they have the appropriate extension.<br><br><b>-s, --no-empty-diff</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output sections that, after filtering, would result in an empty diff for a file.<br><br><b>--add-line-numbers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add line numbers to the output, mimicking <I>grep -n</I> behavior.<br><br><b>--strip-match=<regex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove a prefix matching <I>regex</I> from filenames before applying other filters.<br><br><b>--strip-to-bare</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove any leading directory components from filenames. Equivalent to <I>-p</I> with a sufficiently large number.<br><br><b>--skip-headers</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip any non-diff headers at the beginning of the input.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase verbosity, printing more information about the filtering process.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<I>filterdiff</I> is a powerful command-line utility from the <I>patchutils</I> suite designed to selectively filter patches (diffs). It reads a diff from standard input or specified files and outputs only the portions that match (or don't match) certain criteria. This is incredibly useful for developers and system administrators who need to apply or review only specific changes within a larger patch file. <br><br>The primary filtering mechanisms involve including or excluding files based on shell-style glob patterns or regular expressions. Additionally, <I>filterdiff</I> can filter individual diff hunks based on their content, allowing for fine-grained control over which changes are processed. It understands various diff formats, making it versatile for use with outputs from commands like <I>diff</I> or <I>git diff</I>. Common use cases include extracting relevant changes for a specific feature, ignoring changes to generated files, or preparing a patch for a specific subsystem.


title: CAVEATS
content:
<I>filterdiff</I> primarily works with unified diff format. While it attempts to handle other formats, its filtering capabilities are most reliable with unified diffs. <br><br>Regular expressions used with <I>--lines-matching</I> and <I>--lines-not-matching</I> apply per-line within a hunk, not across hunks or files. <br><br>Path stripping (<I>-p</I>) occurs before pattern matching, so patterns should account for the stripped paths.


title: UNDERSTANDING FILTERING LOGIC
content:
<I>filterdiff</I> processes include and exclude patterns in a specific order. If both <I>-i</I> and <I>-x</I> (or their file equivalents) are used, <I>filterdiff</I> first checks against include patterns. If a file matches an include pattern, it is then checked against exclude patterns. A file is only output if it matches an include pattern AND does NOT match an exclude pattern. If no include patterns are specified, all files are initially considered for exclusion. <br><br>Line-based filtering (<I>--lines-matching</I>, <I>--lines-not-matching</I>) applies to hunks after file-based filtering, further refining the output.


title: HISTORY
content:
<I>filterdiff</I> is part of the <I>patchutils</I> package, a collection of utilities for manipulating patch files. It was developed by Tim Waugh to provide more fine-grained control over diffs than standard Unix tools typically offer. The <I>patchutils</I> project aimed to create robust, scriptable tools for tasks like splitting, sorting, and filtering patches, enhancing the workflow for patch management in software development. Its development focuses on interoperability with common diff formats and integration into shell scripts.


title: SYNOPSIS
content:
<b>fin</b> <I>&#60;command&#62;</I> [<I>arguments</I>] [<I>options</I>]<br>Example: <b>fin</b> <I>add</I> <I>50</I> <I>"Lunch with John"</I><br>Example: <b>fin</b> <I>report</I> <I>--month</I> <I>03</I>


title: PARAMETERS
content:
<b><b>init</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Initializes</I> a new <I>fin</I> ledger file in the current directory, setting up the necessary data structure.<br><br><b><b>add</b> <I>&#60;amount&#62;</I> <I>&#60;description&#62;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Records</I> a new financial transaction with a specified monetary amount and a descriptive note.<br><br><b><b>list</b> [<I>--count &#60;N&#62;</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Displays</I> a list of recent transactions, optionally limiting the output to the last <I>N</I> entries.<br><br><b><b>balance</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Calculates</I> and shows the current financial balance across all tracked accounts or categories.<br><br><b><b>report</b> [<I>--month &#60;MM&#62;</I>] [<I>--year &#60;YYYY&#62;</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Generates</I> a financial report for a specified period, such as monthly spending or annual summaries.<br><br><b><b>delete</b> <I>&#60;ID&#62;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Removes</I> a specific transaction from the ledger based on its unique identifier.<br><br><b><b>undo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Reverts</I> the last recorded <I>add</I> operation, effectively deleting the most recent transaction.<br><br><b><b>search</b> <I>&#60;pattern&#62;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Finds</I> transactions that contain a given text pattern within their description or other fields.<br><br><b><b>config</b> [<I>--set &#60;key=value&#62;</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Manages</I> <I>fin</I>'s configuration settings, allowing adjustments to default behaviors or paths.<br><br>


title: DESCRIPTION
content:
<b>fin</b> is a command-line interface (CLI) tool designed for personal finance management. It allows users to record transactions, generate reports, track balances, and manage financial data directly from the terminal.<br><br>Unlike graphical user interface (GUI) finance software, <b>fin</b> operates entirely in a text-based environment, appealing to users who prefer efficiency, automation, or privacy. It typically stores financial data in a plain text file, often in a structured format like CSV or a custom ledger format, making it easy to backup, version control, and process with other text-based tools.<br><br>It is <i>not</i> a standard, pre-installed Linux utility but an open-source application that requires separate installation. Its primary utility lies in providing a quick, scriptable, and transparent way to interact with one's financial records without relying on proprietary software or cloud services.


title: CAVEATS
content:
<ul><li><b>fin</b> is <i>not</i> a standard, pre-installed Linux command; it must be installed separately, typically via a package manager like <I>npm</I> or by compiling from source.</li><li>It is a command-line tool, lacking a graphical interface, which might not be suitable for users preferring visual financial management.</li><li>Data is typically stored in a plain text file, requiring users to manage backups or use version control systems for robust data protection.</li><li><b>fin</b> is designed for personal finance tracking and may not be suitable for complex accounting, business, or multi-user scenarios.</li></ul>


title: DATA STORAGE
content:
<b>fin</b> typically stores financial data in a human-readable, plain text file (e.g., CSV or a custom format) in the directory where <I>fin init</I> was run. This allows for easy inspection, manual editing, and integration with other text-based tools like <I>grep</I>, <I>awk</I>, or custom scripts.


title: EXTENSIBILITY
content:
Due to its plain text data format and command-line interface, <b>fin</b> records can be easily parsed and processed by other scripts or tools. This enables custom reporting, data analysis, or integrations beyond <b>fin</b>'s built-in capabilities, catering to advanced users and developers.


title: HISTORY
content:
<b>fin-cli</b> is an open-source project, primarily developed and maintained by <I>solidiquis</I> (Solidity CLI tools developer). It emerged as a lightweight, privacy-focused alternative to more complex or cloud-based finance software. Development has been ongoing with regular updates, driven by community contributions and the maintainer's vision for a simple, efficient CLI finance tracker. Its design emphasizes ease of use, data ownership, and compatibility with standard text processing tools.


title: SYNOPSIS
content:
finch <I>[OPTIONS]</I> <I>COMMAND</I> <I>[ARG...]</I><br><br>Examples:<br><i>finch run alpine echo hello</i><br><i>finch build -t myimage .</i><br><i>finch ps -a</i>


title: PARAMETERS
content:
<b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug logging for detailed output during command execution.<br><br><b><b>-h, --help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <i>finch</i> command or a specific subcommand.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed <i>finch</i> version information.<br><br><b><b>Common 'run' options:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Subcommands like 'run' have their own specific options. For example, <i>-d</i> (detach), <i>-p</i> (publish ports), <i>--name</i> (assign a name), <i>--rm</i> (auto-remove on exit), and <i>-v</i> (bind mount volume).<br><br><b><b>Common 'build' options:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Subcommands like 'build' also have specific options. For example, <i>-t</i> (tag the image) and <i>-f</i> (specify Dockerfile path).<br><br>


title: DESCRIPTION
content:
<i>finch</i> is a command-line interface (<B>CLI</B>) client designed for building, running, and managing <B>Linux containers</B> in local development environments, particularly on <B>macOS</B> and <B>Windows</B>.<br><br>It serves as a lightweight alternative to tools like Docker Desktop for certain use cases, focusing on simplicity and efficiency. <i>finch</i> leverages a stack of well-established open-source components: <B>containerd</B> as the core container runtime, <B>nerdctl</B> as the CLI for interactions with <B>containerd</B>, and <B>Lima</B> to provision and manage a minimal <B>Linux virtual machine</B> where the containers execute. This architecture provides a familiar <B>Docker-like user experience</B> while being resource-efficient.<br><br><i>finch</i> supports standard <B>Dockerfile</B> syntax, enabling seamless integration of existing container projects. It simplifies the setup of a local container environment, offering essential commands for image building, container execution, and lifecycle management, making it highly beneficial for developers who need to run <B>Linux containers</B> without the overhead of larger container platforms.


title: CAVEATS
content:
<i>finch</i> relies on a virtual machine (<i>Lima</i>) to run <B>Linux containers</B> on <B>macOS</B> and <B>Windows</B>, which adds an abstraction layer and consumes system resources for the <B>VM</B> itself.<br><br>While highly compatible with <B>Dockerfile</B> syntax and many <B>Docker CLI</B> commands, it may not support every single feature or advanced orchestration capability found in a full <B>Docker</B> installation or dedicated orchestration tools.<br><br>Its primary focus is on local development environments rather than production deployments or complex multi-host container orchestration.


title: ARCHITECTURE
content:
<i>finch</i> operates on a layered architecture. The <i>finch</i> <B>CLI</B> acts as a user-friendly frontend that translates commands to <B>nerdctl</B>. <B>nerdctl</B> then communicates with <B>containerd</B>, which is the core container runtime. On <B>macOS</B> and <B>Windows</B>, <B>containerd</B> runs inside a lightweight <B>Linux virtual machine</B> managed by <B>Lima</B>. This setup isolates the container environment and provides a native <B>Linux kernel</B> for container execution.


title: INSTALLATION
content:
<i>finch</i> can be installed using platform-specific package managers. On <B>macOS</B>, it's commonly installed via <B>Homebrew</B> (<i>brew install finch</i>). For <B>Windows</B>, an installer is typically provided. It includes all necessary dependencies like <B>containerd</B> and <B>Lima</B>, simplifying the setup process for developers.


title: HISTORY
content:
<i>finch</i> was introduced by <B>Amazon Web Services (AWS)</B> in late <B>2022</B> as an open-source project. Its development aimed to provide a lightweight, open-source alternative for local container development, especially for users within the <B>AWS ecosystem</B> or those seeking a more resource-efficient solution compared to existing container desktop environments.<br><br>It was designed to leverage mature open-source projects like <B>containerd</B>, <B>nerdctl</B>, and <B>Lima</B>, demonstrating a commitment to open standards and community collaboration. Since its release, <i>finch</i> has continued to evolve with ongoing development and contributions from the community.


title: PARAMETERS
content:
<b>-b, --bytes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports resident portion in bytes. This is the default unit.<br><br><b>-p, --pages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports resident portion in pages.<br><br><b>-P, --percentage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports resident portion as a percentage of the total file size.<br><br><b>-s, --summarize</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Summarizes the resident information for multiple files, displaying a single total for all specified files.<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>


title: DESCRIPTION
content:
<i>fincore</i> is a command-line utility used to report the portion of a given file that is currently resident in RAM (in-core). It leverages the <br><i>mincore(2)</i><br> system call to determine which pages of a file are present in the system's page cache. This information is crucial for understanding how effectively a file is being cached, which can impact disk I/O performance.<br><br>The command displays the file's path, the number of resident pages, the total resident bytes, and the percentage of the file that is in memory. By default, it reports in bytes, but can also show pages or percentages. This tool is particularly useful for administrators and developers to diagnose caching issues, verify memory usage patterns, or ensure critical files are properly cached by the kernel.


title: CAVEATS
content:
The reported residency is a snapshot at the time of execution and can change rapidly due to system activity. <br><i>fincore</i> reports on pages currently held in the kernel's page cache, not necessarily the entire file if it were mapped into a process's address space using <br><i>mmap()</i>. <br>The accuracy relies on the underlying <br><i>mincore(2)</i> system call.<br>


title: EXIT STATUS
content:
<i>fincore</i> exits with status 0 on success, and a non-zero status code on error. Errors typically include issues with file access (e.g., file not found or permission denied) or invalid options.


title: FILES
content:
No specific configuration files are used by <i>fincore</i>. It directly interacts with the kernel's memory management via system calls.


title: HISTORY
content:
<i>fincore</i> is part of the <br><i>util-linux</i> project, a collection of essential system utilities for Linux. It was introduced to provide a user-friendly interface to the <br><i>mincore(2)</i> system call, simplifying the process of querying a file's memory residency without requiring custom programming or complex system calls. Its development aligns with the project's goal of offering robust and standardized tools for system administration and monitoring.


title: SYNOPSIS
content:
<b>find</b> [<i>path...</i>] [<i>expression</i>]<br><br><i>path...</i>: Specifies the starting directories where the search begins. If no path is given, the current directory ('.') is assumed.<br><i>expression</i>: Consists of options, tests (criteria), actions, and operators that define what to search for and what to do with the results.


title: PARAMETERS
content:
<b>-name <i>pattern</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files whose base name matches <i>pattern</i>. Wildcards (<b>*</b>, <b>?</b>, <b>[]</b>) are allowed and should often be quoted.<br><br><b>-iname <i>pattern</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Like <b>-name</b>, but performs a case-insensitive search.<br><br><b>-type <i>c</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files of type <i>c</i>: <b>f</b> (regular file), <b>d</b> (directory), <b>l</b> (symbolic link), <b>b</b> (block device), <b>c</b> (character device), <b>p</b> (named pipe), <b>s</b> (socket).<br><br><b>-size <i>[+|-]n[cwbkMG]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files with size <i>n</i>. <b>+n</b> means greater than <i>n</i>, <b>-n</b> means less than <i>n</i>. Units: <b>c</b> (bytes), <b>w</b> (two-byte words), <b>b</b> (512-byte blocks), <b>k</b> (kilobytes), <b>M</b> (megabytes), <b>G</b> (gigabytes).<br><br><b>-mtime <i>[+|-]n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files whose data was last modified <i>n</i> days ago. <b>+n</b> means more than <i>n</i> days, <b>-n</b> means less than <i>n</i> days. <b>n</b> means exactly <i>n</i> days.<br><br><b>-atime <i>[+|-]n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <b>-mtime</b>, but based on last access time.<br><br><b>-ctime <i>[+|-]n</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Similar to <b>-mtime</b>, but based on last status change time (metadata, e.g., permissions or owner).<br><br><b>-perm <i>mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files with permissions matching <i>mode</i> (e.g., <b>644</b>, <b>/u=r,go=r</b>).<br><br><b>-user <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files owned by user <i>name</i> (or UID).<br><br><b>-group <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for files owned by group <i>name</i> (or GID).<br><br><b>-maxdepth <i>levels</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Descends at most <i>levels</i> (a non-negative integer) levels of directories below the starting point.<br><br><b>-mindepth <i>levels</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not apply any tests or actions at levels less than <i>levels</i> (a non-negative integer) below the starting point.<br><br><b>-print</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the full file name to standard output, followed by a newline. This is the default action if no other action is specified.<br><br><b>-print0</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the full file name to standard output, followed by a null character. This is useful for piping to commands like <b>xargs -0</b> to handle filenames with spaces or other special characters correctly.<br><br><b>-exec <i>command {} \;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes <i>command</i> on each found file. <b>{}</b> is replaced by the current file name. The command must be terminated by an escaped semicolon (<b>\;</b>).<br><br><b>-exec <i>command {} +</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes <i>command</i> on all found files as a single batch, similar to <b>xargs</b>. This is generally more efficient than <b>-exec ... \;</b> for multiple files.<br><br><b>-delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the found files. This action should be used with extreme caution.<br><br><b>-ok <i>command {} \;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Like <b>-exec</b>, but prompts the user for confirmation before executing the command for each file. Useful for interactive deletion or modification.<br><br>


title: DESCRIPTION
content:
<b>find</b> is a powerful command-line utility used to search for files and directories within a specified directory hierarchy. It can locate files based on a wide range of criteria, including name, type (file, directory, symbolic link, etc.), size, modification/access/change times, permissions, owner, and group. Once files matching the criteria are found, <b>find</b> can perform various actions on them, such as printing their names, executing other commands, or deleting them.<br><br>Its recursive nature allows it to traverse entire file systems, making it an indispensable tool for system administration, scripting, and general file management. <b>find</b> expressions can combine multiple criteria using logical operators, providing highly granular control over searches. It's often used in conjunction with <b>xargs</b> for more complex operations on found files.


title: CAVEATS
content:
<ul><li><b>Performance:</b> On extremely large or slow file systems (e.g., network mounts), <b>find</b> operations can be very time-consuming and resource-intensive.</li><li><b>Operator Precedence:</b> The order of operations in complex expressions can be tricky. <b>-a</b> (AND) has higher precedence than <b>-o</b> (OR). Parentheses <b>\( ... \)</b> can be used to group expressions, but they must be escaped.</li><li><b>Filename Handling:</b> Filenames containing spaces, newlines, or other special characters can cause issues when processing <b>find</b> output with other commands. Always prefer <b>-print0</b> with <b>xargs -0</b> for robust scripting.</li><li><b>Permissions:</b> <b>find</b> might encounter "Permission denied" errors when searching directories it does not have read access to. These errors are typically printed to standard error.</li><li><b>Case Sensitivity:</b> Most criteria like <b>-name</b> are case-sensitive by default. Use <b>-iname</b> for case-insensitive matching.</li></ul>


title: EXPRESSION ELEMENTS
content:
<b>find</b> expressions are composed of several types of elements, evaluated from left to right:<br><ul><li><b>Options:</b> Affect the overall operation of <b>find</b> (e.g., <b>-maxdepth</b>, <b>-L</b>).</li><li><b>Tests (Predicates):</b> Return true or false based on file attributes (e.g., <b>-name</b>, <b>-type</b>, <b>-size</b>, <b>-mtime</b>).</li><li><b>Actions:</b> Perform an operation on the current file if the preceding tests are true (e.g., <b>-print</b>, <b>-exec</b>, <b>-delete</b>). If no action is specified, <b>-print</b> is implied.</li><li><b>Operators:</b> Combine expressions logically.<br><ul><li><b>-a</b> (AND): Logical AND (implied if not specified, e.g., <b>find . -name "*.txt" -type f</b> means AND).</li><li><b>-o</b> (OR): Logical OR.</li><li><b>!</b> (NOT): Logical NOT, negates the following expression. Must be escaped as <b>\!</b>.</li><li><b>\( ... \)</b>: Group expressions. Must be escaped.</li></ul></li></ul>


title: HISTORY
content:
The <b>find</b> command is one of the oldest and most fundamental utilities in the Unix ecosystem, dating back to early versions of Unix in the 1970s. It was designed from the outset to recursively search directory hierarchies, a feature crucial for managing complex file systems. Over the decades, it has evolved, with various enhancements like the addition of more sophisticated tests, actions (<b>-delete</b>, <b>-exec {} +</b>), and performance optimizations.<br><br>Its design principles, emphasizing flexibility through expressions and actions, have made it an enduring and indispensable tool for system administrators and developers alike, forming a cornerstone of shell scripting and automation on Unix-like operating systems.


title: PARAMETERS
content:
<b>find expression elements</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>find2perl</b> does not have its own distinct command-line options in the traditional sense. Instead, it interprets and translates the complex <i>expression</i> arguments that are typically passed to the <i>find</i> command. Therefore, the 'parameters' it accepts are actually the various primaries, options, and operators used in <i>find</i> expressions. Below are some of the most common <i>find</i> elements that <b>find2perl</b> can translate:<br><br><b>-name</b> <i>pattern</i>: Translates conditions based on file name matching <i>pattern</i>.<br><b>-type</b> <i>c</i>: Converts conditions based on file type (e.g., 'f' for file, 'd' for directory).<br><b>-size</b> <i>n</i>[<i>c</i>]: Handles conditions related to file size.<br><b>-mtime</b> <i>n</i>: Processes criteria based on the file's last modification time.<br><b>-exec</b> <i>command</i>: Translates the execution of an external command for found files.<br><b>-ok</b> <i>command</i>: Similar to <b>-exec</b>, but includes user confirmation.<br><b>-print</b>: Converts the action of printing the file name.<br><b>-ls</b>: Translates the action of printing file details in 'ls' format.<br><b>-a</b> (or implicit): Represents a logical AND operator between expressions.<br><b>-o</b>: Represents a logical OR operator between expressions.<br><b>!</b>: Represents a logical NOT operator.<br><b>(</b> <i>expr</i> <b>)</b>: Allows grouping of expressions to control operator precedence.<br><br>


title: DESCRIPTION
content:
The <i>find2perl</i> command translates command-line arguments that would typically be used with the <i>find</i> utility into an equivalent Perl script. Its primary purpose is to help users understand how <i>find</i>'s complex logic of file system traversal and conditional actions can be implemented in Perl. It essentially generates Perl code that mimics the search criteria and actions specified in the <i>find</i> command. This generated script can then be examined, modified, or executed. While the resulting Perl code might not always be the most optimized or idiomatic, it provides a functional translation, making it a valuable tool for debugging <i>find</i> expressions, learning Perl scripting for file system operations, or as a starting point for more complex custom scripts. It handles most of <i>find</i>'s primaries like <b>-name</b>, <b>-type</b>, <b>-size</b>, <b>-mtime</b>, <b>-exec</b>, <b>-print</b>, and logical operators like <b>and</b> (<b>-a</b>), <b>or</b> (<b>-o</b>).


title: CAVEATS
content:
The Perl code generated by <b>find2perl</b> is often verbose and not optimized for performance or readability. It's a direct translation rather than an idiomatic Perl script. It might not handle all edge cases or the most obscure <b>find</b> options perfectly. Users often need to clean up or optimize the generated code for production use. It also implicitly adds a <b>print</b> action if no other action is specified, similar to <b>find</b> versions older than GNU <b>find</b> 4.2.0.


title: HISTORY
content:
<b>find2perl</b> is part of the <b>findutils</b> package, which provides core utilities for finding files. Its development is tied to the evolution of the <b>find</b> command itself. It was introduced as a utility to help bridge the gap between shell scripting with <b>find</b> and more complex automation using Perl, at a time when Perl was a dominant scripting language for system administration tasks. Its purpose remains largely didactic and as a quick translation tool rather than a generator of production-ready code.


title: PARAMETERS
content:
<b>LABEL=<label></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the filesystem label to search for. The label is a user-defined string assigned to the filesystem, often set during its creation or with utilities like <b>tune2fs</b>.<br><br><b>UUID=<uuid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Universal Unique Identifier (UUID) of the filesystem to search for. UUIDs are globally unique 128-bit numbers automatically generated during filesystem creation and are highly recommended for persistent identification.<br><br>


title: DESCRIPTION
content:
The <b>findfs</b> command is a utility used to locate a block device (e.g., a partition or an entire disk) that contains a filesystem identified by its specific label or Universal Unique Identifier (UUID). Traditional device names like <i>/dev/sda1</i> can change across reboots or hardware configurations, making them unreliable for persistent system configuration. <b>findfs</b> addresses this by allowing you to refer to filesystems by their persistent label or UUID, which remain constant regardless of the device's assigned name.<br><br>It scans known locations like <i>/etc/fstab</i>, <i>/proc/partitions</i>, or directly probes block devices to find a match. Upon success, it prints the full path to the device node (e.g., <i>/dev/sdb1</i>) to standard output. This makes it invaluable for system scripts, bootloaders, and entries in <i>/etc/fstab</i> to ensure correct filesystem identification and mounting.


title: CAVEATS
content:
<b>findfs</b> typically requires root privileges to scan all block devices directly. Without them, it might rely solely on information available in <i>/etc/fstab</i> or <i>/proc/partitions</i>, which might not be exhaustive.<br><br>It prints only the first matching device path it finds. If multiple filesystems (which is generally discouraged, especially for UUIDs) happen to have the same identifier, only the first one encountered will be returned.<br><br>On systems with a very large number of block devices, a full scan could be relatively slow, although this is rarely a practical concern for typical usage.


title: COMMON USE CASES
content:
<b>findfs</b> is frequently used in system scripts, boot scripts, backup routines, or any automation where a filesystem needs to be located reliably without hardcoding device paths. Although <i>/etc/fstab</i> itself directly supports <i>LABEL=</i> or <i>UUID=</i> entries, <b>findfs</b> provides the underlying lookup mechanism for such persistent identifiers. For example, a script might use `mount $(findfs LABEL=my_data_disk) /mnt/data` to dynamically mount a specific disk.


title: HOW TO GET LABEL/UUID
content:
You can find the labels and UUIDs of your filesystems using commands like <b>blkid</b> or <b>lsblk -f</b>. For example, `blkid /dev/sda1` will show the UUID and LABEL of that specific partition, or `lsblk -f` will list this information for all block devices.


title: HISTORY
content:
<b>findfs</b> is a long-standing utility part of the <i>util-linux</i> project, a widely used collection of essential system utilities for Linux. Its development has focused on providing a robust and reliable method for identifying filesystems independent of volatile device names, aligning with the broader goal of modern Linux systems to use persistent identifiers for storage.


title: PARAMETERS
content:
<b><b>-n</b>, <b>--noheadings</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Do not print headings in the output.<br><br><b><b>-r</b>, <b>--raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Use raw output format, useful for parsing by scripts.<br><br><b><b>-u</b>, <b>--notruncate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Do not truncate text in output columns.<br><br><b><b>-J</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Use JSON output format. This is highly recommended for programmatic parsing.<br><br><b><b>-o</b>, <b>--output</b> <I>list</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Define output columns. Common columns include SOURCE, TARGET, FSTYPE, OPTIONS, USED, AVAIL.<br><br><b><b>-t</b>, <b>--types</b> <I>list</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Limit the output to a specified comma-separated list of filesystem types (e.g., 'ext4,xfs').<br><br><b><b>-s</b>, <b>--fstab</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Search in <code>/etc/fstab</code> instead of the kernel's mount information.<br><br><b><b>-F</b>, <b>--first-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Print only the first matching entry.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Use the list format output table.<br><br><b><b>-D</b>, <b>--df</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Report information in a <code>df(1)</code>-like format, showing used and available space.<br><br><b><b>-k</b>, <b>--kernel</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Search in <code>/proc/self/mounts</code> (kernel) instead of <code>/proc/self/mountinfo</code>.<br><br><b><b>-M</b>, <b>--mountpoint</b> <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specify a mount point to search for. Also accepts <b>-T</b>, <b>--target</b>.<br><br>


title: DESCRIPTION
content:
<code>findmnt</code> is a utility for locating and displaying information about currently mounted filesystems or searching for specific mount points. It queries <code>/proc/self/mountinfo</code>, <code>/proc/self/mounts</code>, or <code>/etc/fstab</code> to provide a structured and often more reliable output compared to simply parsing the <code>mount</code> command's output. It's particularly useful for scripting due to its various output options, including raw and JSON formats, and its ability to filter results based on device, mount point, or filesystem type. <code>findmnt</code> can also be used to verify entries in <code>/etc/fstab</code>, making it a versatile tool for system administration and diagnostics related to storage and mounts.


title: CAVEATS
content:
While <code>findmnt</code> offers powerful filtering and output options, its default human-readable output can be verbose. For scripting, it's highly recommended to use the <b>--json</b> or <b>--raw</b> and <b>--noheadings</b> options to ensure stable parsing.<br>The command relies on the <code>/proc</code> filesystem for current mount information, meaning its availability and content are crucial for <code>findmnt</code>'s operation.


title: OUTPUT CUSTOMIZATION
content:
<code>findmnt</code> allows extensive control over its output columns using the <b>-o</b> option. Users can specify a comma-separated list of columns like <code>SOURCE</code>, <code>TARGET</code>, <code>FSTYPE</code>, <code>OPTIONS</code>, <code>USED</code>, <code>AVAIL</code>, <code>UUID</code>, and many more, enabling tailored reports for specific needs.


title: JSON OUTPUT FOR SCRIPTING
content:
A significant feature for automation is the <b>--json</b> option. This outputs the mount information in a machine-readable JSON array, making it exceptionally easy for scripts to parse and process mount data reliably without needing to contend with varying text output formats or locale issues.


title: VERIFYING FSTAB ENTRIES
content:
By combining <b>-s</b> (search <code>fstab</code>) with a target mount point or device, <code>findmnt</code> can be used to quickly verify if an entry exists and is correctly formatted in the <code>/etc/fstab</code> file, which is crucial for system boot processes.


title: HISTORY
content:
The <code>findmnt</code> command was introduced as part of the <code>util-linux</code> project, appearing in version 2.20 (released around 2011). It was developed to provide a more robust and parseable alternative to traditional methods of querying mounted filesystems, such as parsing the output of the <code>mount</code> command. Its design aims to facilitate scripting and automation by offering structured output formats and flexible filtering capabilities, addressing common parsing challenges faced by system administrators.


title: PARAMETERS
content:
<b><i>-r</i> &lt;retries&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of retries for queries to find SMB hosts.<br><br><b><i>-t</i> &lt;timeout&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the timeout in seconds for each query to find SMB hosts.<br><br><b><i>-b</i> &lt;broadcast_address&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular broadcast address to use instead of the default.<br><br><b><i>-W</i> &lt;workgroup&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the workgroup or domain to which the query should be directed.<br><br><b><i>-U</i> &lt;username&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a username for authentication when connecting to discovered shares. Required for protected shares.<br><br><b><i>-p</i> &lt;password&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the password for authentication. <b>Caution:</b> Using this on the command line is insecure due to clear text visibility.<br><br><b><i>-N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the password prompt, useful for scripting or when no password is required.<br><br><b><i>-L</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only detected servers, suppressing the enumeration of their individual shares for a more concise output.<br><br><b><i>-v</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the discovery process and detected entities.<br><br>


title: DESCRIPTION
content:
<i>findsmb</i> is a utility included with the <b>Samba</b> suite, designed to discover SMB/CIFS (Server Message Block/Common Internet File System) hosts and their available shares on a local network segment. It operates by sending broadcast queries (or targeted queries if specified) to identify active SMB servers.<br><br>Upon discovery, <i>findsmb</i> attempts to retrieve and display valuable information such as the server's IP address, NetBIOS name, workgroup or domain affiliation, and a list of shared resources. This command is particularly useful for network administrators and users for various tasks including network auditing, identifying potential security vulnerabilities (e.g., unintentionally open shares), troubleshooting connectivity issues, or simply gaining an overview of available SMB/CIFS services within a given network environment. It provides a quick and straightforward way to assess SMB presence without requiring deeper interaction with each individual server.


title: CAVEATS
content:
<i>findsmb</i> primarily relies on network broadcasts for discovery, which may not traverse routed networks or VPNs without specific configurations.<br>Firewalls configured to block SMB/CIFS (ports 137, 138, 139, 445) can prevent successful host and share discovery.<br>Providing sensitive information like passwords directly on the command line using <i>-p</i> is a security risk.<br>The command might report shares that are not accessible due to permissions or authentication requirements if credentials are not provided.


title: OUTPUT FORMAT
content:
By default, <i>findsmb</i> outputs a tabular view, typically showing the IP address, NetBIOS name, workgroup/domain, and then a list of all discovered shares for each server. If shares are not accessible or permissions prevent enumeration, they might still be listed as 'disk' or 'IPC$'.<br>Example output structure:<br>IP ADDRESS      NETBIOS NAME    WORKGROUP       OS              SERVER<br>-----------------------------------------------------------------------------<br>192.168.1.100   MYSERVER        MYWORKGROUP     Unix            Samba 4.x.x<br>        Sharename       Type    Comment<br>        ---------       ----    -------<br>        myshare         Disk    My shared folder<br>        print$          Printer Printer Drivers


title: COMMON USAGE
content:
The most common way to use <i>findsmb</i> is simply by running it without any options to discover all SMB/CIFS hosts and shares on the current local broadcast domain: <b>findsmb</b><br><br>To list only servers without enumerating shares, for a quicker overview: <b>findsmb -L</b>


title: HISTORY
content:
<i>findsmb</i> is an integral part of the <b>Samba</b> project, which was initiated by Andrew Tridgell in 1992. As the SMB/CIFS protocol evolved, so did the Samba suite and its accompanying utilities. <i>findsmb</i> has consistently served as a foundational tool for network discovery, enabling users to quickly survey SMB/CIFS resources on their local network. Its development has mirrored the broader advancements in Samba, focusing on efficiency, compatibility, and providing a convenient command-line interface for network introspection.


title: PARAMETERS
content:
<b><i>-s</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Short format output. Displays login name, real name, terminal name, idle time, login time, and host name. This is the default when multiple users are specified or when querying a remote host.<br><br><b><i>-l</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Long format output. Displays all available information, including home directory, shell, and the contents of <i>.plan</i> and <i>.project</i> files. This is the default when only one local user is specified.<br><br><b><i>-p</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the display of the <i>.plan</i> and <i>.project</i> files. Useful for privacy or if you don't wish to expose these files.<br><br><b><i>-m</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents matching of user names; matches only the specified user exactly. For example, <b>finger -m root</b> will only show information for 'root' and not 'root_user' or other users whose names contain 'root'.<br><br><b><i>user</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the login name of the user whose information is requested on the local system.<br><br><b><i>user@host</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a user on a remote host to query. The command will attempt to connect to the <b>finger</b> daemon on the specified host.<br><br><b><i>@host</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Queries the remote host for information about all users currently logged in. This option is less common and might not be supported by all <b>finger</b> daemons.<br><br>


title: DESCRIPTION
content:
The <b>finger</b> command provides details about users logged onto a system, or, when querying a remote host, about users on that remote system. It displays information such as the user's login name, real name, terminal line, login time, idle time, and the contents of their <i>.plan</i> and <i>.project</i> files located in their home directory. Historically, it was widely used in academic and research networks to find contact information for individuals.<br><br>While its usage has declined due to security concerns and the rise of other communication methods, it remains a utility for local system introspection or in controlled environments. When used with a remote host, it attempts to connect to the <b>finger</b> service (TCP port 79) on that host.


title: CAVEATS
content:
<b>Security Concerns:</b> The <b>finger</b> protocol inherently leaks information about users on a system (e.g., login times, real names), which can be exploited by attackers for reconnaissance. This is a primary reason for its declining usage and why it is often disabled on public-facing servers.<br><br><b>Privacy Concerns:</b> The information exposed by <b>finger</b> (like login times, idle times, and <i>.plan</i> contents) can raise privacy issues for individuals.<br><br><b>Dependence on <i>fingerd</i>:</b> To query remote hosts, the target host must be running a <b>finger</b> daemon (e.g., <i>fingerd</i> or <i>in.fingerd</i>), which is frequently disabled by default on modern systems for security reasons.


title: <I>.PLAN</I> AND <I>.PROJECT</I> FILES
content:
<b>finger</b> displays the content of these plain text files (if they exist) from the user's home directory. The <i>.plan</i> file is often used for personal status updates, 'project plans', or general information about the user. The <i>.project</i> file is typically used for details about the user's current project or activity.


title: PORT 79
content:
The <b>finger</b> protocol typically operates over TCP port 79. When querying a remote host, the <b>finger</b> client attempts to establish a connection to this port on the target machine.


title: HISTORY
content:
The <b>finger</b> command originated in the early days of ARPANET/Internet, developed by Les Earnest at Stanford University in 1971. It became a standard utility for displaying user information across networked systems. Its purpose was to facilitate communication by allowing users to easily find contact details and status of others. The <b>finger</b> protocol (RFC 1288) was formally defined to standardize this information exchange. Its peak usage was in the 1980s and early 1990s in university and research networks. However, with the rise of widespread internet usage and increasing security threats, the command and its associated daemon (<i>fingerd</i>) largely fell out of favor due to the information leakage it facilitated.


title: SYNOPSIS
content:
<b>fio</b> [<i>options</i>] [<i>jobfile(s)</i>...]<br><b>fio</b> [<i>options</i>] --name=<<i>jobname</i>> --rw=<<i>pattern</i>> --bs=<<i>size</i>> ...


title: PARAMETERS
content:
<b>--name=<<i>jobname</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a name for the job. Useful for distinguishing multiple jobs in a single run.<br><br><b>--ioengine=<<i>engine</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the I/O engine to use (e.g., libaio, posixaio, sync, psync). Determines how I/O operations are submitted to the kernel.<br><br><b>--iodepth=<<i>depth</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of I/O units to keep in flight. Higher values can reveal device parallelism.<br><br><b>--rw=<<i>pattern</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the read/write pattern (e.g., read, write, randread, randwrite, rw, randrw).<br><br><b>--bs=<<i>size</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the block size for I/O operations (e.g., 4k, 64k, 1M).<br><br><b>--size=<<i>size</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the total size of I/O to be performed for this job (e.g., 1G, 100M). Can also be a percentage of the device size.<br><br><b>--filename=<<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the file or device(s) to perform I/O operations on. Multiple files can be specified with colon separation or wildcards.<br><br><b>--direct=<<i>bool</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use O_DIRECT for I/O, bypassing the page cache. (e.g., 1 for true, 0 for false).<br><br><b>--numjobs=<<i>int</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create this many clones of the specified job. Each job runs independently.<br><br><b>--runtime=<<i>seconds</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop the benchmark after this many seconds.<br><br><b>--time_based</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run for the specified --runtime, ignoring the --size parameter once that time is reached.<br><br><b>--group_reporting</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report statistics for the entire group of jobs, rather than individual jobs.<br><br><b>--output=<<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write all output to the specified file.<br><br><b>--output-format=<<i>format</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format (e.g., normal, json, terse, json+).<br><br><b>--minimal</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce a minimal output format, useful for scripting.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show version information and exit.<br><br>


title: DESCRIPTION
content:
<i>fio</i>, the Flexible I/O Tester, is a powerful and versatile tool designed for storage benchmarking and stress-testing various I/O workloads. It supports a wide range of I/O engines (like libaio, posixaio, sync) and I/O patterns (sequential, random, mixed read/write) across various block sizes and queue depths. <br><br>Users can define complex I/O profiles using job files, which allow for detailed specification of parameters such as file access, I/O type, block size, I/O depth, and runtime. <i>fio</i> is capable of simulating both single-threaded and multi-threaded I/O operations, making it suitable for testing anything from a single disk to complex storage arrays. It provides comprehensive statistics on I/O performance, including throughput (IOPS and bandwidth), latency, and CPU utilization, making it an indispensable tool for storage administrators, developers, and performance engineers.


title: CAVEATS
content:
<i>fio</i>'s power comes with complexity. Correctly configuring <i>fio</i> requires understanding of I/O concepts, storage architecture, and benchmark methodology. Incorrect usage can lead to skewed results or unintended stress on the system. Running <i>fio</i> on production systems without proper precautions is highly discouraged, as it can cause significant performance degradation or even data loss if not configured carefully (e.g., writing to critical files). Performance results are highly sensitive to kernel versions, filesystem types, and hardware configurations.


title: JOB FILES
content:
The most common and recommended way to use <i>fio</i> is through job files. A job file is a plain text file containing one or more sections, each defining a job. Each section starts with <code>[jobname]</code> and contains parameters specific to that job. This allows for highly customizable and repeatable test scenarios, including sequential execution of multiple jobs, or running jobs in parallel. For example:<br><code>[global]<br>ioengine=libaio<br>iodepth=32<br><br>[rand-read-test]<br>rw=randread<br>bs=4k<br>size=1G<br>filename=/dev/sdb<br>direct=1</code>


title: INTERPRETING OUTPUT
content:
<i>fio</i>'s output is extensive, providing detailed statistics for each job and overall run. Key metrics to look for include:<br><ul><li><b>IOPS</b>: I/O operations per second (read/write).</li><li><b>BW (Bandwidth)</b>: Throughput in KB/s, MB/s, or GB/s (read/write).</li><li><b>Latency</b>: Average, min, max, and percentile latencies (e.g., 99th percentile) for I/O operations, crucial for real-time applications.</li><li><b>CPU Utilization</b>: Shows CPU usage (user, sys, idle) during the test, helping identify bottlenecks.</li><li><b>I/O depths and errors</b>: Provides insights into queue management and potential issues.</li></ul>Understanding these metrics is vital for drawing meaningful conclusions about storage performance.


title: HISTORY
content:
<i>fio</i> was originally authored by Jens Axboe, a prominent Linux kernel developer known for his work on the block I/O layer. It was first released around 2007 and has since become the de-facto standard for low-level storage benchmarking in the Linux ecosystem. Its continuous development by a maintainer deeply involved in kernel I/O ensures its relevance and accuracy in reflecting actual system performance.


title: SYNOPSIS
content:
<i>"<b>firefox</b> [OPTIONS] [URL...]<br><br>Common invocation examples:<br><b>firefox</b><br><b>firefox</b> <I>https://www.mozilla.org</I><br><b>firefox</b> --private-window<br><b>firefox</b> --profile <I>/path/to/profile</I> <I>https://example.com</I>"</i>


title: PARAMETERS
content:
<b>--new-window <URL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Opens a new Firefox window, optionally loading the specified URL."</i><br><br><b>--new-tab <URL></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Opens the specified URL in a new tab within an existing Firefox window, or a new window if none are open."</i><br><br><b>--private-window</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Opens a new private browsing window, which does not save browsing history, cookies, or site data."</i><br><br><b>--profile <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Starts Firefox using the specified profile directory. Useful for managing multiple user profiles or testing."</i><br><br><b>--safe-mode</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Starts Firefox in Safe Mode, temporarily disabling extensions, themes, and hardware acceleration to troubleshoot issues."</i><br><br><b>--no-remote</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"Prevents Firefox from sending commands to an already running instance. This forces a new Firefox process to start."</i><br><br><b>[URL...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>"One or more URLs to open upon launch. By default, these open in new tabs in an existing or new window."</i><br><br>


title: DESCRIPTION
content:
<i>"The <b>firefox</b> command launches the Mozilla Firefox web browser, a free and open-source web browser developed by the Mozilla Foundation and its subsidiary Mozilla Corporation. It provides a secure, fast, and customizable way to browse the internet, supporting modern web standards, extensions, and a wide range of features including tabbed browsing, private browsing, a built-in PDF viewer, and robust developer tools. When invoked without arguments, it opens a new browser window to your default homepage or previously opened tabs. You can specify URLs to open directly, manage profiles, or launch specific browser modes like private browsing from the command line."</i>


title: CAVEATS
content:
<i>"Running <b>firefox</b> typically requires a graphical display environment (an X server on Linux). While a `--headless` mode exists for server-side use, interactive browsing is not possible without a display. Opening multiple instances without `--no-remote` will usually open new windows/tabs in the already running instance. Permissions issues with profile directories can prevent launch or cause data loss."</i>


title: <I>PROFILE MANAGEMENT</I>
content:
<i>"Firefox profiles store user data, settings, and customizations. You can manage profiles using the command <b>firefox --profilemanager</b> (or its shorthand <b>firefox -P</b>) to launch a dedicated profile manager UI, allowing you to create, rename, or delete profiles. Specifying <b>--profile <path></b> allows direct use of a specific profile without invoking the manager."</i>


title: HISTORY
content:
<i>"Firefox originated from an experimental branch of the Mozilla Application Suite, initially known as `Phoenix` in 2002, and later `Firebird` before being renamed to `Firefox` in 2004 to avoid trademark conflicts. It was created by Dave Hyatt and Blake Ross with the goal of developing a standalone browser focused on speed and a streamlined user interface, departing from the full internet suite model. Its focus on performance, security, and extensibility helped it gain significant market share, challenging Microsoft's Internet Explorer dominance in the mid-2000s. Continual development has introduced features like tabbed browsing, add-ons, private browsing, and the robust Gecko rendering engine."</i>


title: SEE ALSO
content:
<i>google-chrome(1)</i>, <i>chromium-browser(1)</i>, <i>w3m(1)</i>, <i>lynx(1)</i>, <i>xdg-open(1)</i>


title: SYNOPSIS
content:
firejail [<I>OPTIONS</I>] [<I>PROGRAM</I>] [<I>ARGUMENTS...</I>]<br>firejail --profile=<I>PROFILE</I> [<I>PROGRAM</I>] [<I>ARGUMENTS...</I>]<br>firejail --private [<I>PROGRAM</I>] [<I>ARGUMENTS...</I>]<br>firejail --list | --tree | --help | --version


title: PARAMETERS
content:
<b>--profile=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load a custom profile file for the sandbox configuration.<br><br><b>--private</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create a new, empty private home and /tmp directory for the sandbox.<br><br><b>--private=<I>directory</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mount the specified directory as the private home directory inside the sandbox.<br><br><b>--net=<I>interface</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Route network traffic through a specific network interface (e.g., eth0).<br><br><b>--net=none</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable all network access for the sandboxed application.<br><br><b>--dns=<I>IP</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom DNS server for the sandbox.<br><br><b>--blacklist=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent access to a specific file or directory inside the sandbox.<br><br><b>--whitelist=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allow specific files or directories to be writable or visible when other restrictions apply.<br><br><b>--readonly=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make a specific file or directory read-only inside the sandbox.<br><br><b>--writable-var</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make the /var directory writable within the sandbox (otherwise it's often read-only).<br><br><b>--seccomp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable system call filtering (seccomp-bpf) to restrict system calls the application can make.<br><br><b>--apparmor</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable AppArmor confinement for the sandboxed application, if AppArmor is active on the system.<br><br><b>--noroot</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Drop root capabilities inside the sandbox, even if the application starts as root.<br><br><b>--list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all currently running firejail processes.<br><br><b>--tree</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a tree view of all running firejail processes.<br><br>


title: DESCRIPTION
content:
Firejail is a SUID program that significantly reduces the risk of security breaches by restricting the environment of untrusted applications. It leverages Linux kernel namespaces (private filesystems, networking, process IDs, etc.), seccomp-bpf, and optionally AppArmor/SELinux to create isolated sandboxes. Each sandbox has its own private view of the system, preventing applications from accessing or modifying files outside their designated paths, making unauthorized network connections, or interacting with other processes.<br><br>It's designed to be user-friendly, offering pre-built profiles for common applications (browsers, media players, email clients) and allowing users to create custom ones. By running applications in a sandboxed environment, potential exploits or malware are contained, limiting damage to the system and user data. It's an excellent tool for enhancing desktop security.


title: CAVEATS
content:
Firejail relies on Linux kernel features; older kernel versions might lack some capabilities. It is not a full virtualization solution like a VM; the host kernel is still shared. Careful profile configuration is crucial; misconfigured profiles can break applications or inadvertently introduce vulnerabilities. It does not protect against kernel-level exploits or hardware attacks, and some advanced networking features may require root privileges.


title: PROFILE FILES
content:
Firejail primarily uses profile files (located in <i>/etc/firejail</i> and <i>~/.config/firejail</i>) to define sandbox rules. These text files specify detailed filesystem restrictions, network rules, capabilities, and other security measures, significantly simplifying the configuration of complex sandboxes for various applications.


title: UNDERLYING TECHNOLOGIES
content:
Firejail leverages several core Linux kernel features to achieve its robust isolation:<br><ul><li><i>Namespaces:</i> To virtualize system resources such as PID, mount, network, user, IPC, and UTS.</li><li><i>Seccomp-bpf:</i> To filter and restrict the specific system calls an application can make, reducing the attack surface.</li><li><i>AppArmor/SELinux:</i> Optional integration with Mandatory Access Control (MAC) frameworks for additional, fine-grained process confinement.</li><li><i>Capabilities:</i> To drop unnecessary root privileges within the sandbox, adhering to the principle of least privilege.</li></ul>


title: HISTORY
content:
Firejail was initially developed by Marin Marusinec (Netblue) with its first public release around 2014. It quickly gained popularity for its focus on ease of use in sandboxing desktop applications, providing a user-friendly solution for enhanced security on Linux systems.


title: SEE ALSO
content:
chroot(1), unshare(1), bwrap(1), systemd-nspawn(1), namespaces(7), seccomp(2), apparmor(7), selinux(8)


title: SYNOPSIS
content:
<i>firewall-cmd</i> [OPTIONS...]<br><i>Common usage patterns include:</i><br><i>firewall-cmd</i> --state<br><i>firewall-cmd</i> [--zone=<I>ZONE</I>] [--permanent] --add-service=<I>SERVICE</I><br><i>firewall-cmd</i> [--zone=<I>ZONE</I>] [--permanent] --add-port=<I>PORT</I>/<I>PROTOCOL</I><br><i>firewall-cmd</i> [--reload]<br><i>firewall-cmd</i> [--zone=<I>ZONE</I>] --list-all


title: PARAMETERS
content:
<b>--state</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current status of the <i>firewalld</i> daemon.<br><br><b>--reload</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reloads the firewall daemon, applying any permanent changes and clearing runtime configurations.<br><br><b>--get-zones</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available standard zones configured in <i>firewalld</i>.<br><br><b>--get-active-zones</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the zones that currently have active interfaces or source addresses assigned.<br><br><b>--list-all-zones</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configurations (services, ports, sources, etc.) for all available zones.<br><br><b>--list-all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all configurations (services, ports, sources, etc.) for the currently active or specified zone.<br><br><b>--permanent</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes the changes persistent across reboots. Without this, changes are only applied to the runtime configuration.<br><br><b>--zone=<I>ZONE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the firewall zone to operate on. If omitted, the default zone is used.<br><br><b>--add-service=<I>SERVICE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a predefined service (e.g., http, ssh) to the zone.<br><br><b>--remove-service=<I>SERVICE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a predefined service from the zone.<br><br><b>--add-port=<I>PORT</I>/<I>PROTOCOL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specific port and protocol (e.g., 80/tcp, 443/udp) to the zone.<br><br><b>--remove-port=<I>PORT</I>/<I>PROTOCOL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specific port and protocol from the zone.<br><br><b>--add-source=<I>IP</I>[/<I>MASK</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a source IP address or subnet to the zone, allowing traffic from it.<br><br><b>--remove-source=<I>IP</I>[/<I>MASK</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a source IP address or subnet from the zone.<br><br><b>--add-interface=<I>INTERFACE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns a network interface (e.g., eth0) to the zone.<br><br><b>--remove-interface=<I>INTERFACE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a network interface from the zone.<br><br><b>--query-service=<I>SERVICE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks if a specific service is enabled in the zone.<br><br><b>--query-port=<I>PORT</I>/<I>PROTOCOL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks if a specific port is enabled in the zone.<br><br>


title: DESCRIPTION
content:
<i>firewall-cmd</i> is the command-line client for <i>firewalld</i>, a dynamic firewall management daemon on Linux systems. It provides a structured and user-friendly way to configure firewall rules for IPv4 and IPv6, replacing traditional <i>iptables</i> scripting with a more abstract and dynamic approach. <i>firewall-cmd</i> allows administrators to manage firewall zones, services, ports, interfaces, and direct rules. Changes can be applied to the runtime configuration, which takes effect immediately but is lost on reboot, or to the permanent configuration, which persists across reboots but requires a <i>firewalld</i> reload to become active. It simplifies common tasks like opening ports for services, assigning network interfaces to specific zones, and managing network access based on source IP addresses. <i>firewall-cmd</i> is a core tool for network security on distributions like RHEL, Fedora, and CentOS.


title: CAVEATS
content:
<b>Runtime vs. Permanent:</b> Changes made without <i>--permanent</i> are only active until the next reboot or <i>firewalld</i> reload. Always use <i>--permanent</i> for persistent rules, followed by <i>firewall-cmd --reload</i> to apply them immediately.<br><b>Default Zone:</b> Be mindful of which zone you are modifying. If <i>--zone</i> is not specified, actions apply to the default zone (often 'public').<br><b>Service vs. Port:</b> Prefer using predefined services (e.g., http, ssh) over raw port numbers when possible, as services provide more context and maintainability.<br><b>Direct Rules:</b> The <i>--direct</i> option allows adding raw <i>iptables</i> rules. While powerful, this bypasses <i>firewalld</i>'s abstraction and should be used with caution, as it can conflict with or be overwritten by <i>firewalld</i>'s higher-level rules.


title: ZONES CONCEPT
content:
Zones are predefined sets of rules that represent different trust levels for network connections. Common zones include:<br>    - <i>public:</i> For untrusted public networks.<br>    - <i>home:</i> For trusted home networks.<br>    - <i>internal:</i> For internal networks with more trust.<br>    - <i>trusted:</i> For all network connections, allowing all traffic.<br>Interfaces and source IPs can be assigned to zones, and rules are then applied based on the zone's policy.


title: SERVICES
content:
Services are predefined configurations that map common application names (like SSH, HTTP, HTTPS, FTP) to their respective port and protocol combinations. Using services simplifies firewall management by allowing rules to be added or removed by service name rather than individual port numbers, making configurations more readable and less error-prone.


title: RUNTIME VS. PERMANENT CONFIGURATION
content:
<i>firewall-cmd</i> operates on two configuration sets:<br>    - <b>Runtime:</b> Changes apply immediately but are lost when <i>firewalld</i> restarts or the system reboots.<br>    - <b>Permanent:</b> Changes are written to configuration files (e.g., in <i>/etc/firewalld/</i>) and persist across reboots. They do not take effect immediately and require a <i>firewall-cmd --reload</i> to be loaded into the runtime configuration.


title: HISTORY
content:
<i>firewalld</i> emerged as a significant development in Linux firewall management, primarily introduced and gaining prominence in RHEL/CentOS 7 and Fedora. It aimed to provide a more dynamic and user-friendly alternative to the static and script-heavy <i>iptables</i> configuration. Its core innovation was the introduction of "zones" and "services," allowing administrators to define security policies based on trust levels and common application requirements rather than just raw port numbers and IP addresses. <i>firewall-cmd</i> was developed as the primary command-line interface for <i>firewalld</i>, enabling real-time and persistent configuration changes without complex scripting, greatly simplifying firewall administration for many users and systems.


title: SYNOPSIS
content:
<b>fish</b> [<i>options</i>] [<i>command</i> [<i>arguments...</i>]]<br><br>When invoked without arguments, <b>fish</b> starts an interactive shell session. If a <i>command</i> is provided, <b>fish</b> executes it and exits. The shell can also be started as a login shell using the <i>-l</i> option.


title: PARAMETERS
content:
<b><b>-c</b> <i>command_string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the given <i>command_string</i> and then exit. This is useful for running fish scripts from other shells or within automated tasks.<br><br><b><b>-d</b> <i>debug_category</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug messages for specific categories, such as 'parser' or 'exec', helping to troubleshoot shell behavior.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the shell to run in interactive mode, even if stdin is not a TTY.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start <b>fish</b> as a login shell, which means it sources login-specific configuration files.<br><br><b><b>-P</b>, <b>--private</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start a private session where history and changes to universal variables are not saved upon exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the version number of <b>fish</b> and exit.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable full debug output for <b>fish</b>, providing detailed information about its internal operations.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message with common command-line options and exit.<br><br>


title: DESCRIPTION
content:
<i>fish</i> (Friendly Interactive SHell) is a modern, user-friendly command line shell for Unix-like operating systems. Unlike traditional shells like Bash or Zsh, <i>fish</i> aims to be intuitive and discoverable, providing a rich user experience out-of-the-box without extensive configuration.<br><br>Its standout features include powerful autosuggestions based on history and completions, which appear as you type, significantly speeding up command entry. It offers intelligent syntax highlighting, marking valid commands in green and invalid ones in red, along with highlighting arguments for clarity. <i>fish</i> also boasts robust tab completion, understanding common commands and their arguments, even for external tools.<br><br>While <i>fish</i> provides a powerful interactive experience, its scripting language is unique and not POSIX compliant, meaning scripts written for Bash or Zsh will not directly run in <i>fish</i>. However, its scripting syntax is designed to be simpler and more consistent, often making complex tasks easier to express. It's an excellent choice for users seeking an enhanced, less cumbersome shell experience.


title: CAVEATS
content:
<i>fish</i>'s scripting language is not POSIX compliant, meaning scripts written for Bash, Zsh, or other traditional shells will not run directly without modification. This can be a significant learning curve for users accustomed to traditional shell scripting and may require rewriting existing scripts. Additionally, while <i>fish</i> provides many built-in commands, some common Unix utilities might behave slightly differently or require alternatives within the <i>fish</i> environment.


title: KEY FEATURES
content:
Beyond the basic command execution, <i>fish</i> offers:<br><b>Autosuggestions:</b> Predicts commands as you type, based on history and completions.<br><b>Syntax Highlighting:</b> Provides immediate visual feedback on command validity and arguments.<br><b>Web-based Configuration:</b> The <i>fish_config</i> command launches a web interface for easy theme and function management.<br><b>Universal Variables:</b> Allows variables to be set once and persist across all <i>fish</i> sessions and even after restarts.


title: CONFIGURATION
content:
<i>fish</i>'s configuration is primarily managed through the file <i>~/.config/fish/config.fish</i>. Unlike Bash or Zsh, which might have multiple configuration files, <i>fish</i> centralizes most user-specific settings here. Functions, key bindings, and variable definitions are typically placed in this file or sourced from other files within the <i>~/.config/fish/functions/</i> directory.


title: HISTORY
content:
<i>fish</i> was created by Axel Liljencrantz and first released in 2005. Its development was driven by a desire for a more user-friendly and intuitive command-line experience, addressing common frustrations with traditional shells. From its inception, <i>fish</i> prioritized interactive features like autosuggestions, syntax highlighting, and sensible defaults, aiming to reduce the cognitive load for users. Over the years, it has gained a dedicated following due to its 'out-of-the-box' usability and powerful features, evolving into a mature and robust shell while maintaining its core philosophy of user-friendliness.


title: SYNOPSIS
content:
<b>fisher</b> <I>command</I> [<I>options</I>] [<I>arguments</I>]<br><b>fisher</b> <I>install</I> [<I>plugins</I>...]<br><b>fisher</b> <I>update</I> [<I>plugins</I>...]<br><b>fisher</b> <I>remove</I> [<I>plugins</I>...]<br><b>fisher</b> <I>list</I><br><b>fisher</b> <I>version</I><br><b>fisher</b> <I>help</I> [<I>command</I>]


title: PARAMETERS
content:
<b>install</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Installs one or more Fisher plugins, functions, or themes. Plugins can be specified by their Git repository URL or a short name (e.g., 'jorgebucaran/nvm.fish').<br><br><b>update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates all installed plugins to their latest versions. If specific plugins are provided, only those will be updated.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes one or more installed Fisher plugins from your Fish shell environment.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all currently installed Fisher plugins and their sources.<br><br><b>version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the current version of the Fisher plugin manager.<br><br><b>help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed help information about Fisher or a specific Fisher subcommand.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help for the <i>fisher</i> command or a specific subcommand's usage.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the Fisher version (similar to <i>fisher version</i>).<br><br>


title: DESCRIPTION
content:
<i>fisher</i> is a powerful and lightweight plugin manager specifically designed for the <b>Fish shell</b>. It simplifies the process of installing, updating, and managing plugins, functions, and themes within your Fish shell environment. Unlike traditional system package managers, <i>Fisher</i> focuses solely on the Fish shell ecosystem, providing a streamlined experience for extending its functionality. It allows users to effortlessly discover and integrate community-contributed components, enhancing productivity and customization. <i>Fisher</i> works by sourcing configuration files and managing plugin directories, ensuring that your shell remains organized and performant. Its intuitive command-line interface makes it accessible for both new and experienced Fish shell users, enabling them to quickly set up and maintain a personalized shell experience.


title: CAVEATS
content:
<i>fisher</i> is not a standard system utility found in most Linux distributions by default. It is specifically a plugin manager for the <b>Fish shell</b> and requires the <b>Fish shell</b> to be installed and used as your primary shell. Its functionality is entirely confined to managing components within the Fish shell environment and does not interact with system-wide packages or other shell environments like Bash or Zsh. Installation typically involves an internet connection to fetch plugins from Git repositories.


title: INSTALLATION
content:
To install <i>fisher</i>, you typically use <i>curl</i>:<br><code>curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source</code><br>This command downloads the <i>fisher.fish</i> script and sources it directly into your current Fish shell session, making <i>fisher</i> immediately available. For persistent installation, it usually sets itself up in your Fish configuration directory automatically.


title: PLUGIN ECOSYSTEM
content:
Fisher integrates with a vast ecosystem of community-contributed plugins, functions, and themes. These can be found on GitHub and are easily installable using the <i>fisher install</i> command, often just by providing the repository owner/name (e.g., <code>fisher install jorgebucaran/fisher-themes</code>). This decentralized approach allows for rapid development and sharing of Fish shell enhancements among users.


title: HISTORY
content:
<i>Fisher</i> was created by <i>Jorge Bucaran</i> (jorgebucaran) to provide a lightweight and fast alternative to other Fish shell framework managers like <i>Oh My Fish</i> (OMF). It was designed with a focus on simplicity, speed, and minimalism, aiming to avoid the overhead often associated with larger frameworks. Its development began around 2015-2016, gaining popularity within the Fish shell community for its efficient plugin management capabilities. It continues to be actively maintained, adapting to new Fish shell features and community needs, solidifying its position as a go-to tool for customizing the Fish shell experience.


title: SYNOPSIS
content:
fitstopnm [-forceplain] [-stretch | -linear | -log | -histeq] [-minval=V | -maxval=V] [-range=R] [-null=N] [-nullout=N] [-noaxes] [-hdr=H] [-hdrlist=L] [-hdrfile=F] [-debug] [<i>fitsfile</i>]


title: PARAMETERS
content:
<b>-forceplain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs plain (ASCII) PGM/PPM format instead of raw (binary) format.<br><br><b>-stretch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a default stretching algorithm to scale pixel values for better visual representation.<br><br><b>-linear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a linear stretch to map pixel values to the output range, useful for even distribution.<br><br><b>-log</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a logarithmic stretch, ideal for images with a very high dynamic range to emphasize faint features.<br><br><b>-histeq</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs histogram equalization, a contrast enhancement technique that spreads out the most frequent intensity values.<br><br><b>-minval=V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum input FITS value 'V' that will be scaled to 0 in the output image.<br><br><b>-maxval=V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum input FITS value 'V' that will be scaled to the maximum possible value (e.g., 255 or 65535) in the output image.<br><br><b>-range=R</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand for setting both -minval=0 and -maxval=R, scaling input values from 0 to R.<br><br><b>-null=N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the FITS 'NULL' data value 'N' to be recognized by the command.<br><br><b>-nullout=N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output pixel value 'N' that will be used for FITS 'NULL' data.<br><br><b>-noaxes</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Omits the creation of a FITS axes file, which typically describes the image's coordinate system.<br><br><b>-hdr=H</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the value of the specified FITS header keyword 'H' to standard error.<br><br><b>-hdrlist=L</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the values of a comma-separated list of FITS header keywords 'L' to standard error.<br><br><b>-hdrfile=F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes all FITS header information into the specified file 'F'.<br><br><b>-debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output, providing more verbose information about the command's execution.<br><br><b><i>fitsfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input FITS file. If omitted, <i>fitstopnm</i> reads from standard input.<br><br>


title: DESCRIPTION
content:
<i>fitstopnm</i> is a utility from the Netpbm project designed to convert astronomical Flexible Image Transport System (FITS) files into portable anymap formats, specifically PGM (Portable GreyMap) for grayscale images or PPM (Portable PixMap) for color images.<br><br>FITS files are a standard format in astronomy for storing scientific data, often including image data along with metadata. The command handles various FITS image types, including byte, integer, floating-point, and double-precision data, automatically scaling the pixel values to fit the 0-<i>maxval</i> range of the Netpbm output format. It offers several stretching methods (e.g., linear, logarithmic, histogram equalization) to enhance visibility of features in images with high dynamic ranges.<br><br>By default, <i>fitstopnm</i> processes the first image extension found within a FITS file. It also provides options for handling <i>NULL</i> data values and extracting header information, making it a crucial tool for astronomers to visualize and further process their observational data.


title: CAVEATS
content:
The command by default only processes the <i>first</i> image extension found in a FITS file. If a FITS file contains multiple image extensions, subsequent extensions will be ignored. Users needing to process multiple extensions must typically chain commands or use other tools capable of multi-extension FITS handling.<br><br>Output image types (PGM/PPM) are limited to 2D representations, meaning 3D or 4D FITS data will be collapsed or require specific handling outside the scope of direct <i>fitstopnm</i> output for full data representation.


title: AUTOMATIC SCALING AND STRETCH OPTIONS
content:
<i>fitstopnm</i> automatically scales the pixel values from the FITS file's native range to the 0-<i>maxval</i> range (typically 255 or 65535, depending on the data type) of the Netpbm output. For images with a very wide dynamic range, such as those from astronomical instruments, the <b>-stretch</b>, <b>-linear</b>, <b>-log</b>, and <b>-histeq</b> options are crucial. These allow users to apply different mapping functions to enhance the contrast and visibility of features that might otherwise be indistinguishable due to the vast difference between the brightest and darkest parts of the image. The default stretching aims for a reasonable visual representation, but specific scientific analysis often requires one of the explicit stretching methods.


title: HANDLING OF FITS DATA TYPES
content:
The command can read FITS files containing various numeric data types, including 8-bit unsigned integers, 16-bit and 32-bit signed integers, 32-bit single-precision floating-point numbers, and 64-bit double-precision floating-point numbers. It intelligently converts these to the appropriate PGM or PPM format, which typically uses 8-bit or 16-bit samples per pixel. This conversion involves careful scaling to preserve dynamic range as much as possible, guided by the chosen stretch method or specified min/max values.


title: HISTORY
content:
<i>fitstopnm</i> is part of the Netpbm project, a comprehensive toolkit for manipulating graphic images. The Netpbm project itself has a long history, evolving from the original PBMplus package created by Jef Poskanzer in the late 1980s. <i>fitstopnm</i> was developed to provide a straightforward method for astronomers and researchers to convert FITS data, commonly used in fields like astronomy and remote sensing, into more universally viewable and manipulable image formats compatible with the vast Netpbm ecosystem. Its development reflects the ongoing need for flexible data interchange between specialized scientific formats and general-purpose image processing tools.


title: SYNOPSIS
content:
As <I>fix-qdf</I> is not a standard Linux command, a universal synopsis cannot be provided. Its usage depends entirely on its specific implementation. Common invocation might resemble:<br><br><b>fix-qdf</b> <I>[options]</I> <I>filename.qdf</I><br><br>where <I>filename.qdf</I> is the path to the Quicken data file to be repaired.


title: PARAMETERS
content:
<b>No standard parameters.</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Since <I>fix-qdf</I> is a non-standard command, there are no universally defined parameters. Any options or arguments it accepts are specific to the particular script or executable version. Users should consult the source code or accompanying documentation (if any) for the specific implementation they possess.<br><br>


title: DESCRIPTION
content:
The <I>fix-qdf</I> command is not a standard Linux utility found in typical distributions. It is most commonly encountered as a user-contributed script or a component of specialized financial software packages (often related to Quicken or similar personal finance applications) designed to operate on Linux, sometimes via compatibility layers like Wine. Its primary purpose is to attempt to repair corruption within Quicken Data Format (.QDF) files, which are proprietary database files used by Intuit's Quicken software to store financial transactions and account information. Because it is not a standard command, its exact functionality, available options, and behavior can vary significantly depending on its specific implementation and source.<br><br>Users typically resort to this command when their Quicken data files become inaccessible or exhibit errors, hoping to restore data integrity without resorting to manual data re-entry or data loss.


title: CAVEATS
content:
This command is <B>not</B> part of the standard Linux toolset. Its existence and behavior are entirely dependent on a specific installation or custom script. <br><br>Using <I>fix-qdf</I> carries inherent risks: it operates directly on potentially corrupt financial data files. There is no guarantee of success, and improper use or a faulty implementation could lead to further data corruption or irrecoverable data loss. <B>Always create a backup of your .QDF file before attempting any repair operation.</B> The effectiveness and safety of this command are entirely tied to the quality and reliability of the specific script or program you are using.


title: ORIGIN AND CONTEXT
content:
The <I>fix-qdf</I> command is primarily associated with users who interact with Quicken data files (.QDF) on non-Windows operating systems, specifically Linux. This often arises in scenarios where Quicken itself is run using compatibility layers like Wine, or when users wish to access/repair their financial data using Linux-native tools or scripts. It typically fills a gap where Intuit (the developer of Quicken) does not officially support Linux.


title: HISTORY
content:
The command <I>fix-qdf</I> does not have a formal or documented history in the Linux ecosystem. It likely originated from various community efforts, personal scripts, or third-party utilities developed to address the common problem of corrupt Quicken data files, particularly for users managing their finances on Linux systems (often using Quicken via Wine). Its development has been fragmented and ad-hoc rather than centralized.


title: SYNOPSIS
content:
<b>fixfiles</b> [<i>options</i>] {<i>restore</i>|<i>relabel</i>|<i>verify</i>|<b>-R</b>} [<i>pathname...</i>]


title: PARAMETERS
content:
<b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force relabeling, even if the context appears correct. This overrides the default behavior of not relabeling if the context is already correct.<br><br><b><b>-f</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-F</b>; force relabeling even if the context appears correct.<br><br><b><b>-l</b> <i>logfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log all file context changes and errors to the specified <i>logfile</i>, providing a record of the relabeling process.<br><br><b><b>-N</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run; do not actually relabel any files, just show what would be done. This is useful for previewing changes without modifying the filesystem.<br><br><b><b>-o</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optimize relabeling by sorting files by context and size. This can potentially speed up the process on large filesystems by reducing disk seeking.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate in quiet mode, suppressing most output unless an error occurs. Only critical messages or errors will be displayed.<br><br><b><b>-r</b> <i>rootdir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternate root directory for relabeling. This is useful when relabeling a chrooted environment or an unmounted filesystem.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A specific mode used primarily in conjunction with the <i>/.autorelabel</i> mechanism to indicate a full system relabel on the next boot.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the relabeling process, including each file that is checked or modified.<br><br><b><b>-X</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip excluded files or directories. This option respects exclusions defined in SELinux configuration files like <i>file_contexts.local</i>, preventing unnecessary relabeling of user-defined exceptions.<br><br><b><i>restore</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The primary operation mode to relabel files to their default SELinux contexts based on the active policy. This is the default action if no mode is specified.<br><br><b><i>relabel</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <i>restore</i> mode, performing the same operation of applying default SELinux contexts.<br><br><b><i>verify</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Check file contexts without changing them, reporting any discrepancies between the current context and the expected context from the policy.<br><br><b><i>pathname...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more paths to specific files or directories to relabel recursively. If no pathnames are provided, <b>fixfiles</b> will attempt to relabel the entire filesystem.<br><br>


title: DESCRIPTION
content:
<b>fixfiles</b> is a script that restores the default SELinux file security contexts on a Linux system. It's an essential tool for maintaining the integrity and security of SELinux-enabled environments. The command typically reads the SELinux policy's <i>file_contexts</i> database to determine the correct security context for each file and directory, then applies these contexts. This is crucial after installing new software, restoring backups, migrating systems, or if file contexts become corrupted or incorrect due to manual changes or errors. <b>fixfiles</b> automates the process of relabeling, preventing permission denied errors and ensuring applications and services can operate correctly under SELinux enforcement. While powerful, its execution on large filesystems can be time-consuming. It often leverages the <b>restorecon</b> utility internally.


title: CAVEATS
content:
Requires SELinux to be enabled and a policy loaded. Full system relabeling can be a lengthy process, potentially hours on large filesystems, and should ideally be done during a maintenance window. Incorrect or incomplete SELinux policies can lead to system instability or boot failures if contexts are applied incorrectly. Always ensure your SELinux policy is up-to-date and appropriate for your system before a full relabel.


title: CONTEXT SOURCE
content:
The command derives the correct SELinux contexts from the system's active SELinux policy, specifically from the <i>file_contexts</i> files (e.g., <i>policy/policy.</i><i>version</i><i>/contexts/files/file_contexts</i>). These files map paths to their intended SELinux types.


title: AUTORELABEL ON BOOT
content:
To force a full system relabel on the next boot, create an empty file named <i>/.autorelabel</i> in the root directory. On the subsequent boot, the system will execute <b>fixfiles -R</b> (or similar logic) to relabel the entire filesystem, after which the <i>/.autorelabel</i> file is removed.


title: HISTORY
content:
Part of the <i>selinux-policy</i> project, <b>fixfiles</b> emerged as a necessary utility for managing SELinux file contexts since the early days of SELinux integration into mainstream Linux distributions. It serves as a user-friendly wrapper around lower-level tools like <b>restorecon</b>, automating the relabeling process essential for maintaining system security and stability in SELinux environments.


title: SYNOPSIS
content:
<b>fkill</b> [<I>pid</I>|<I>name</I>|:<I>port</I> ...] [<I>options</I>]<br><b>fkill</b> (for interactive mode without arguments)


title: PARAMETERS
content:
<b>--force, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forcefully kill the process.</i><br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Output more information during execution.</i><br><br><b>--signal <signal_name> | <signal_number></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specify the signal to send (e.g., <I>SIGKILL</I>, <I>SIGTERM</I>, or 9, 15).</i><br><br><b>--exact, -e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Perform an exact match for process names, disabling fuzzy search.</i><br><br><b>--no-interactive, -n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disable the interactive selection menu when multiple processes match.</i><br><br><b>--no-spinner</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disable the progress spinner.</i><br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Display help information and exit.</i><br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Display the version number and exit.</i><br><br>


title: DESCRIPTION
content:
<b>fkill</b> is a powerful and user-friendly command-line utility designed for effortlessly terminating processes across various operating systems, including Linux, macOS, and Windows. Unlike native <b>kill</b> commands, <b>fkill</b> provides an interactive mode with fuzzy matching, making it incredibly easy to locate and select the desired process to terminate. It supports killing processes by Process ID (PID), process name, or even by the port they are listening on. This cross-platform consistency and intuitive interface significantly streamline process management, especially when dealing with multiple running applications or when unsure of the exact process name or PID. Built as a Node.js CLI tool, <b>fkill</b> offers a modern and efficient way to manage system processes.


title: CAVEATS
content:
<b>fkill</b> is not a standard Linux utility and must be installed separately, typically via npm (Node Package Manager).<br>For terminating system-level processes or those owned by other users, <b>fkill</b> might require elevated privileges (e.g., running with <b>sudo</b>).<br>While cross-platform, its behavior relies on underlying OS commands, and subtle differences in process handling might exist compared to native tools.


title: INSTALLATION
content:
<b>fkill</b> is a Node.js package and can be installed globally using npm or yarn:<br><b>npm install --global fkill-cli</b><br><b>yarn global add fkill-cli</b>


title: USAGE EXAMPLES
content:
Kill a process by PID: <b>fkill 12345</b><br>Kill all processes named 'node': <b>fkill node</b><br>Kill a process listening on port 3000: <b>fkill :3000</b><br>Enter interactive mode to select a process: <b>fkill</b><br>Force kill a process by name without interaction: <b>fkill -f chrome</b><br>Kill a process using SIGTERM by its PID: <b>fkill --signal SIGTERM 67890</b>


title: HISTORY
content:
<b>fkill-cli</b> was created by Sindre Sorhus, a prominent developer in the Node.js ecosystem, known for numerous open-source projects. It emerged as a solution to provide a consistent and user-friendly cross-platform process termination tool, addressing the varied and often less intuitive native commands across operating systems. Its development has focused on a robust, interactive, and fuzzy-matching experience, making it a popular choice for developers and system administrators seeking a modern alternative to traditional <b>kill</b> commands.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b><b>--select=</b><i>ERROR_CODES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable specific error codes (e.g., <i>E101,W202</i>).<br><br><b><b>--ignore=</b><i>ERROR_CODES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore specific error codes (e.g., <i>E501,W292</i>).<br><br><b><b>--exclude=</b><i>GLOB_PATTERNS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude files or directories matching given patterns (e.g., <i>*.pyc,docs/</i>).<br><br><b><b>--max-line-length=</b><i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set maximum allowed line length (default 79 for PEP 8).<br><br><b><b>--max-complexity=</b><i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set maximum McCabe complexity for functions (default -1, no limit).<br><br><b><b>--show-source</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the source code line for each error.<br><br><b><b>--statistics</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Count occurrences of each error type.<br><br><b><b>--count</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print total number of errors and warnings.<br><br><b><b>--format=</b><i>FORMAT_STRING</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format for reported errors.<br><br><b><b>--isolated</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable all plugins and configuration files for a clean run.<br><br><b><b>--config=</b><i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative path to a configuration file.<br><br>


title: DESCRIPTION
content:
<i>flake8</i> is a versatile command-line utility designed to enforce style guide (PEP 8), programming error, and code complexity checks in <b>Python</b> codebases. It acts as a wrapper around three core tools:<br><br><b>PyFlakes</b>: A static analysis tool that detects common programming errors such as unused imports or undefined names, without executing the code.<br><b>pycodestyle</b> (formerly <i>pep8</i>): Checks code against the official <b>Python</b> style guide, PEP 8, covering aspects like indentation, naming conventions, and line length.<br><b>McCabe</b>: Analyzes code complexity, specifically focusing on the McCabe complexity metric for functions, which helps identify overly complex functions that might be hard to read and maintain.<br><br><i>flake8</i> aggregates the output from these tools into a single, unified report, making it an indispensable tool for maintaining high code quality and consistency across <b>Python</b> projects. It is highly configurable through command-line options and project-specific configuration files (e.g., <i>setup.cfg</i>, <i>pyproject.toml</i>, <i>.flake8</i>), and is commonly integrated into Continuous Integration (CI) pipelines and pre-commit hooks.


title: CAVEATS
content:
<i>flake8</i> performs static analysis and does not execute code, so it cannot catch runtime errors. It may occasionally report false positives or flag code that is intentionally structured in a certain way; careful configuration via its ignore/exclude options or configuration files is essential. While highly effective, strict adherence to default PEP 8 rules can sometimes be overly rigid for specific project conventions, requiring customization. Performance on very large codebases can be improved by properly excluding irrelevant files and directories.


title: CONFIGURATION FILES
content:
<i>flake8</i> can be configured project-wide using files such as <i>setup.cfg</i>, <i>pyproject.toml</i>, or a dedicated <i>.flake8</i> file. These files allow developers to define default settings, ignored errors, excluded paths, and other options, ensuring consistent code quality checks across a team without requiring repetitive command-line arguments.


title: EXTENSIBILITY WITH PLUGINS
content:
One of <i>flake8</i>'s powerful features is its extensibility through plugins. The <b>Python</b> community has developed numerous plugins (e.g., <i>flake8-docstrings</i>, <i>flake8-bugbear</i>, <i>flake8-isort</i>) that add specialized checks beyond the default capabilities of <i>pyflakes</i>, <i>pycodestyle</i>, and <i>mccabe</i>. This allows users to tailor <i>flake8</i> to specific project needs or enforce additional coding standards.


title: HISTORY
content:
<i>flake8</i> was developed to address the need for a unified interface to several popular <b>Python</b> code quality tools: <i>pyflakes</i>, <i>pep8</i> (now <i>pycodestyle</i>), and <i>mccabe</i>. Before <i>flake8</i>, developers often had to run these tools separately and parse their distinct outputs. By consolidating them, <i>flake8</i> streamlined the process of identifying and fixing style and error issues, making code quality checks more accessible and efficient. Since its inception, it has become a de facto standard for code linting in the <b>Python</b> community, continuously evolving with ongoing development to support newer <b>Python</b> versions and integrate with the broader development ecosystem.


title: SYNOPSIS
content:
<b>flameshot</b> [<i>ACTION</i>] [<i>OPTIONS</i>]<br><i>or</i><br><b>flameshot gui</b> [<i>OPTIONS</i>]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays a help message and exits.</i><br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Shows the version information of Flameshot and exits.</i><br><br><b><b>gui</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Launches the interactive GUI mode for selecting and editing a screenshot area. This is the default action if none is specified.</i><br><br><b><b>full</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Takes a screenshot of the entire screen(s) without opening the interactive GUI.</i><br><br><b><b>screen</b> [<i>N</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Captures a specific screen. If N is not provided, it prompts for selection.</i><br><br><b><b>config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Opens the graphical configuration window for Flameshot, allowing users to customize settings, appearance, and keyboard shortcuts.</i><br><br><b><b>info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays information about Flameshot's environment and setup, useful for debugging.</i><br><br><b><b>-p</b> <<i>path</i>>, <b>--path</b> <<i>path</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the directory where the screenshot should be saved.</i><br><br><b><b>-c</b>, <b>--clipboard</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Copies the captured screenshot to the system clipboard. Often used in conjunction with `full` or `screen` actions.</i><br><br><b><b>-d</b> <<i>ms</i>>, <b>--delay</b> <<i>ms</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Introduces a delay (in milliseconds) before taking the screenshot. Useful for capturing dropdowns or temporary UI elements.</i><br><br><b><b>-r</b> <<i>x,y,w,h</i>>, <b>--region</b> <<i>x,y,w,h</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies a fixed region to capture non-interactively, defined by x-coordinate, y-coordinate, width, and height.</i><br><br><b><b>-o</b> <<i>value</i>>, <b>--opacity</b> <<i>value</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the background opacity (0-1) when in GUI selection mode.</i><br><br><b><b>-z</b>, <b>--zoom</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables a zoom window in GUI mode for precise pixel selection.</i><br><br><b><b>-w</b>, <b>--window</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prompts the user to select a specific window to capture.</i><br><br>


title: DESCRIPTION
content:
Flameshot is a highly versatile and intuitive open-source screenshot utility designed for Linux and other Unix-like systems. It distinguishes itself from traditional screenshot tools by providing a rich, interactive graphical user interface (GUI) for capturing screen regions. After initiating a capture, users are presented with a selection area that can be resized and moved. Crucially, Flameshot integrates a comprehensive suite of editing tools directly into this capture interface. Users can immediately annotate their screenshots using various features such as <b>pens</b>, <b>arrows</b>, <b>rectangles</b>, <b>circles</b>, <b>highlighting</b>, <b>blurring</b>, <b>pixelation</b>, and <b>text overlays</b>. <br><br>Once edited, the captured image can be instantly saved to a file, copied to the system clipboard, or even uploaded to image hosting services like Imgur. Its ability to perform quick edits without needing an external image editor streamlines workflows, making it exceptionally useful for developers, designers, technical support, and anyone who frequently needs to share annotated visual information. Flameshot supports multi-monitor setups and offers extensive configuration options via its GUI or command-line interface, allowing users to customize behavior, appearance, and hotkeys for optimal efficiency.


title: CAVEATS
content:
<i>Flameshot requires a graphical environment (X11 or Wayland) to function. While it supports Wayland, its functionality can sometimes depend on the specific Wayland compositor and the availability of `xdg-desktop-portal` implementations. Non-interactive captures, though useful, do not offer the on-the-fly editing capabilities provided by the interactive GUI mode.</i>


title: CONFIGURATION AND CUSTOMIZATION
content:
<i>Flameshot offers a comprehensive graphical configuration utility, accessible via the `flameshot config` command or its system tray icon. This tool allows users to personalize nearly every aspect of the application, including default save paths, image format, annotation tool colors, and keyboard shortcuts. Integrating Flameshot with desktop environment hotkeys (e.g., binding the Print Screen key to `flameshot gui`) is a common practice for maximizing workflow efficiency.</i>


title: CLIPBOARD INTEGRATION
content:
<i>One of Flameshot's most powerful features is its seamless integration with the system clipboard. After capturing and optionally editing a screenshot, users can instantly copy it to the clipboard using a dedicated button in the GUI or via the `-c` command-line option. This capability is invaluable for quickly pasting screenshots into chat applications, emails, or document editors without the need to first save them to a file.</i>


title: HISTORY
content:
<i>Flameshot was developed to address a gap in the Linux ecosystem for a comprehensive, interactive screenshot tool with integrated editing capabilities. It quickly gained traction among users looking for more than basic screen capture, offering features commonly found in proprietary software. Since its inception, it has been actively maintained and improved by its open-source community, consistently adding new features and refining existing ones to meet evolving user needs.</i>


title: SYNOPSIS
content:
<b>flarectl</b> [<i>global-options</i>] &lt;<i>command</i>&gt; [<i>subcommand</i>] [<i>command-options</i>] [<i>arguments</i>]<br><br>Examples:<br><i>List DNS records for a zone:</i><br><b>flarectl dns list --zone example.com</b><br><br><i>Create a new DNS A record:</i><br><b>flarectl dns create --zone example.com --type A --name www --content 192.0.2.1</b><br><br><i>List all zones:</i><br><b>flarectl zone list</b>


title: PARAMETERS
content:
<b><b>--api-key</b> &lt;<i>key</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Cloudflare API key to use for authentication. This can also be set via the <i>CLOUDFLARE_API_KEY</i> environment variable or configuration file.<br><br><b><b>--api-email</b> &lt;<i>email</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Cloudflare API email associated with the key. Used in conjunction with <i>--api-key</i>. Can also be set via <i>CLOUDFLARE_API_EMAIL</i> or configuration.<br><br><b><b>--api-token</b> &lt;<i>token</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Cloudflare API token. This is the recommended and more granular authentication method. Can also be set via <i>CLOUDFLARE_API_TOKEN</i> or configuration.<br><br><b><b>--account-id</b> &lt;<i>id</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Cloudflare Account ID. Required for some API calls, especially when using API Tokens. Can also be set via <i>CLOUDFLARE_ACCOUNT_ID</i> or configuration.<br><br><b><b>--config</b> &lt;<i>path</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a custom configuration file. Defaults to <i>~/.cloudflare/cloudflare.yaml</i>.<br><br><b><b>--profile</b> &lt;<i>name</i>&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a named profile from the configuration file, allowing for easy switching between different sets of credentials or settings.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the command's result in JSON format, useful for scripting and programmatic parsing.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output, showing API requests and responses, useful for troubleshooting.<br><br><b><b>--version</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>flarectl</b> version information.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help message for the command or subcommand.<br><br>


title: DESCRIPTION
content:
<b>flarectl</b> is the official command-line interface (CLI) for interacting with Cloudflare's services. It provides a powerful and convenient way to manage Cloudflare resources such as DNS records, zones, Workers, Firewall rules, and more, directly from the terminal. As an abstraction layer over the Cloudflare API, <b>flarectl</b> enables users to automate routine tasks, script complex interactions, and perform administrative operations without the need for direct HTTP requests. Built upon Cloudflare's Go SDK, it's an indispensable tool for DevOps, automation engineers, and system administrators working with Cloudflare's ecosystem. It supports various authentication methods and allows for output formatting, making it versatile for both interactive use and scripting.


title: CAVEATS
content:
<b>flarectl</b> relies entirely on the Cloudflare API; therefore, users must have valid API credentials (Token or Email/Key pair) with appropriate permissions for the operations they wish to perform. API rate limits and potential changes in the Cloudflare API can affect its behavior. For sensitive operations, it's recommended to use API Tokens with the principle of least privilege. Managing credentials via environment variables or a configuration file is generally safer than specifying them directly on the command line.


title: CONFIGURATION AND AUTHENTICATION
content:
<b>flarectl</b> supports multiple ways to provide credentials, including environment variables (e.g., <i>CLOUDFLARE_API_TOKEN</i>, <i>CLOUDFLARE_ACCOUNT_ID</i>) and a configuration file, typically located at <i>~/.cloudflare/cloudflare.yaml</i>. The configuration file allows for defining multiple named profiles, making it easy to switch between different Cloudflare accounts or API tokens without repeatedly entering credentials.


title: HIERARCHICAL COMMAND STRUCTURE
content:
<b>flarectl</b> employs a hierarchical command structure, where services are organized into top-level commands (e.g., <b>zone</b>, <b>dns</b>, <b>worker</b>, <b>security</b>, <b>access</b>). Each of these commands then has its own set of subcommands (e.g., <b>dns list</b>, <b>dns create</b>, <b>zone update</b>), and further specific options, providing granular control over Cloudflare's extensive features. This structure makes the CLI intuitive and organized for managing diverse Cloudflare resources.


title: HISTORY
content:
<b>flarectl</b> is an integral part of the <i>cloudflare-go</i> project, Cloudflare's official Go client library for interacting with their API. Its development began around 2017 as a command-line utility within this SDK, designed to offer a user-friendly interface to Cloudflare's growing suite of services. It has continuously evolved, incorporating new API functionalities and improving usability, largely maintained by Cloudflare engineers and contributed to by the open-source community, reflecting Cloudflare's commitment to developer tools and automation.


title: SYNOPSIS
content:
<b>flashrom</b> [<i>OPTIONS</i>] [<i>-r &lt;file&gt;</i> | <i>-w &lt;file&gt;</i> | <i>-E</i> | <i>-V</i> | <i>-D</i> | <i>-L</i>]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a concise help message and exits.<br><br><b><b>-R</b>, <b>--read-firmware</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the entire firmware content from the flash chip.<br><br><b><b>-E</b>, <b>--erase-firmware</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Erases the entire content of the flash chip.<br><br><b><b>-W</b>, <b>--write-firmware</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the specified firmware image to the flash chip.<br><br><b><b>-V</b>, <b>--verify-firmware</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verifies the firmware on the chip against a given image file.<br><br><b><b>-D</b>, <b>--detect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only detects the flash chip(s) present without performing other operations.<br><br><b><b>-L</b>, <b>--list-supported</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all flash chips and programmers supported by <i>flashrom</i>.<br><br><b><b>-p &lt;programmer&gt;[:&lt;options&gt;]</b>, <b>--programmer &lt;programmer&gt;[:&lt;options&gt;]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the hardware programmer device to use (e.g., <i>internal</i>, <i>ch341a_spi</i>) and optional programmer-specific parameters.<br><br><b><b>-c &lt;chipname&gt;</b>, <b>--chip &lt;chipname&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <i>flashrom</i> to use a specific flash chip name instead of auto-detection.<br><br><b><b>-r &lt;filename&gt;</b>, <b>--read &lt;filename&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the file to which the firmware content will be read and saved.<br><br><b><b>-w &lt;filename&gt;</b>, <b>--write &lt;filename&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the file from which the firmware image will be written to the chip.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity level of the output for debugging and detailed information.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output, showing only critical error messages.<br><br><b><b>-z</b>, <b>--disable-write-protect</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to disable software write protection on the flash chip.<br><br><b><b>-f &lt;offset&gt;</b>, <b>--offset &lt;offset&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the read or write operation at a specific offset within the firmware image or chip.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the program version information and exits.<br><br>


title: DESCRIPTION
content:
<i>flashrom</i> is a free, open-source command-line utility designed for detecting, reading, writing, verifying, and erasing flash chips. It primarily targets BIOS/firmware chips found on motherboards, network cards, and various embedded systems, supporting a wide range of chip types (e.g., SPI, Parallel, LPC, FWH) and programmers (internal hardware controllers, external USB/parallel port devices). Unlike vendor-specific tools that often rely on the system BIOS, <i>flashrom</i> communicates directly with the flash chip, offering greater control, broader chip support, and improved reliability. It's an indispensable tool for updating firmware, flashing custom BIOS like Coreboot, or recovering from corrupted firmware, making it a critical utility for system administrators and hardware enthusiasts.


title: CAVEATS
content:
Using <i>flashrom</i> incorrectly can permanently damage (<i>'brick'</i>) your hardware, particularly the BIOS/firmware chip. Always back up existing firmware before attempting write operations. Ensure a stable power supply throughout the flashing process. It typically requires root privileges to access hardware directly, and support for specific flash chips and programmers varies. Always consult the <i>flashrom</i> documentation and supported hardware lists.


title: PROGRAMMER SELECTION
content:
The <b>-p</b> option is critical for specifying the correct hardware interface (<i>programmer</i>) that <i>flashrom</i> will use to communicate with the flash chip. Examples include <i>internal</i> (for chips on the same system board), <i>ch341a_spi</i> (for external USB programmers), or <i>serprog</i> (for serial programmers). Selecting the wrong programmer can lead to errors or hardware damage.


title: SAFETY PRECAUTIONS
content:
Before any write or erase operation, always perform a full backup of your current firmware using <b>flashrom -r &lt;backup_file&gt;</b>. Ensure your system has a stable and uninterrupted power supply throughout the flashing process to prevent data corruption and potential hardware damage. Verify the integrity of the written firmware using <b>-V</b> after writing.


title: SUPPORTED HARDWARE
content:
<i>flashrom</i> supports a vast, but not exhaustive, array of flash chips and programmers. For an up-to-date and complete list of supported devices, refer to the official <i>flashrom</i> website (e.g., flashrom.org/Supported_hardware) or use the <b>-L</b> option to list supported devices on your system.


title: HISTORY
content:
<i>flashrom</i> was initiated in 2007 by Carl-Daniel Hailfinger with the goal of creating an open-source, vendor-agnostic utility for flashing BIOS/firmware chips. It emerged as a robust alternative to proprietary tools, often providing more direct control and wider chip support. Its development has been crucial for projects like Coreboot, allowing users to replace proprietary BIOS with open-source alternatives. It continues to be actively maintained, expanding its support for new hardware and flash technologies.


title: SYNOPSIS
content:
<b>flashrom</b> [<I>options</I>]<br><br>Examples:<br><b>flashrom</b> <I>-p internal -r bios.rom</I><br><b>flashrom</b> <I>-p internal -w new_bios.rom</I><br><b>flashrom</b> <I>-p ch341a_spi -c 'MX25L6406E/MX25L6408E' -r spi_dump.bin</I>


title: PARAMETERS
content:
<b><b>-p</b>, <b>--programmer</b> <I>&lt;type&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the programmer device to use (e.g., 'internal', 'ch341a_spi', 'ft2232_spi'). Use '<b>-L</b>' for a list of supported programmers.<br><br><b><b>-r</b>, <b>--read</b> <I>&lt;filename&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the contents of the flash ROM chip and save it to the specified file.<br><br><b><b>-w</b>, <b>--write</b> <I>&lt;filename&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the contents of the specified file to the flash ROM chip. This command automatically erases and verifies unless <b>--noverify</b> is used.<br><br><b><b>-E</b>, <b>--erase</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Erase the flash ROM chip completely. Requires confirmation unless <b>--force</b> is used.<br><br><b><b>-V</b>, <b>--verify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verify the chip contents against the specified file (usually used after a write operation). Implied by <b>--write</b> unless <b>--noverify</b> is present.<br><br><b><b>-c</b>, <b>--chip</b> <I>&lt;chipname&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a specific flash chip. Use '<b>-L</b>' for a list of supported chips. Useful if auto-detection fails.<br><br><b><b>-L</b>, <b>--list-programmers</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all supported programmers and chips.<br><br><b><b>-i</b>, <b>--image</b> <I>&lt;name&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate only on a specific region/image defined in a layout file (e.g., 'BIOS', 'ME', 'GBE'). Requires <b>-L</b> or <b>--ifd</b>/<b>--fmap</b>.<br><br><b><b>--ifd</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret the image as an Intel Firmware Descriptor (IFD) and operate on its regions. Often used with <b>-i</b>.<br><br><b><b>--fmap</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interpret the image as an FMAP layout and operate on its regions. Often used with <b>-i</b> for coreboot/Libreboot firmware.<br><br><b><b>--host-bios</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate specifically on the host BIOS region of the IFD.<br><br><b><b>-F</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the operation, overriding certain safety checks (e.g., chip ID mismatch, erase confirmation). Use with extreme caution.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information during the operation.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message and exit.<br><br>


