# CommandSection

title: HISTORY
content:
As part of the comprehensive Netpbm project, <I>pbmtoppa</I> has been developed and maintained over many years. The Netpbm toolkit itself originated from the Pbmpusplus package created by Jef Poskanzer in the late 1980s. <I>pbmtoppa</I> specifically addresses the need to generate PCL output for HP LaserJet printers, which became dominant in office environments. Its development reflects the evolution of printer technologies and the need for flexible command-line tools to manage image conversions for various output devices without relying on graphical interfaces or proprietary drivers. It remains a standard component for many Linux distributions due to Netpbm's widespread utility.


title: SYNOPSIS
content:
<b>pbmtoppm</b> [<i>-white</i>] [<i>-black</i>] [<i>-color</i> <i>&lt;colorname&gt;</i>] [<i>-rgb</i> <i>&lt;r&gt;,&lt;g&gt;,&lt;b&gt;</i>] [<i>-background</i> <i>&lt;colorname&gt;</i>] [<i>-bg</i> <i>&lt;r&gt;,&lt;g&gt;,&lt;b&gt;</i>] [<i>pbmfile</i>]


title: PARAMETERS
content:
<b><i>pbmfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The input PBM file to be converted. If omitted, <i>pbmtoppm</i> reads from standard input.<br><br><b><i>-white</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color for the 'white' pixels of the input PBM image. Default is white. This option can be followed by a color name or RGB values.<br><br><b><i>-black</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color for the 'black' pixels of the input PBM image. Default is black. This option can be followed by a color name or RGB values.<br><br><b><i>-color &lt;colorname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <i>-black</i>. Specifies the color for the 'black' pixels using a named color (e.g., "red", "blue").<br><br><b><i>-rgb &lt;r&gt;,&lt;g&gt;,&lt;b&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <i>-black</i>. Specifies the color for the 'black' pixels using 24-bit RGB values (0-255 for each component).<br><br><b><i>-background &lt;colorname&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <i>-white</i>. Specifies the color for the 'white' pixels using a named color.<br><br><b><i>-bg &lt;r&gt;,&lt;g&gt;,&lt;b&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for <i>-white</i>. Specifies the color for the 'white' pixels using 24-bit RGB values.<br><br>


title: DESCRIPTION
content:
<i>pbmtoppm</i> is a utility from the Netpbm suite designed to convert a Portable Bitmap (PBM) image into a Portable Pixmap (PPM) image. A PBM image is monochrome (black and white), while a PPM image supports full color. This command allows you to define which colors the 'black' and 'white' pixels of the input PBM should be mapped to in the resulting PPM. By default, black PBM pixels become black in the PPM, and white PBM pixels become white. However, you can specify custom colors using named colors (e.g., "red", "blue") or explicit RGB values. The output is always written to standard output, and input is read from a specified file or standard input.


title: CAVEATS
content:
Only one option can be used to set the color for 'black' pixels (<i>-black</i>, <i>-color</i>, or <i>-rgb</i>). Similarly, only one option can set the color for 'white' pixels (<i>-white</i>, <i>-background</i>, or <i>-bg</i>). If multiple are specified for the same pixel type, the last one on the command line takes precedence. Named colors are resolved via the system's <i>rgb.txt</i> file (e.g., <i>/usr/lib/X11/rgb.txt</i>) or a custom <i>rgb.txt</i> in the current directory.


title: COLOR SPECIFICATION
content:
Colors can be specified by their common names (e.g., "red", "darkgreen") which are looked up in a system-wide color database (typically <i>/usr/lib/X11/rgb.txt</i>), or by explicit 24-bit RGB values in the format <i>R,G,B</i>, where R, G, and B are integers between 0 and 255 representing the red, green, and blue components, respectively.


title: INPUT/OUTPUT
content:
By default, <i>pbmtoppm</i> reads a PBM image from standard input (stdin) and writes the resulting PPM image to standard output (stdout). This allows for easy piping with other Netpbm commands or general shell redirection.


title: HISTORY
content:
<i>pbmtoppm</i> is part of the Netpbm project, a comprehensive suite of graphics file format conversion tools. Netpbm originated from PBMplus, created by Jef Poskanzer in 1988. This command has been a fundamental component of the suite since its early days, facilitating conversions between basic bitmap formats and allowing for colorization of monochrome images.


title: SYNOPSIS
content:
<B>pbmtoptx</B> [<I>-rows=rows</I>] [<I>-columns=columns</I>] [<I>-minwidth=width</I>] [<I>pbmfile</I>]<br>If <I>pbmfile</I> is not specified, <B>pbmtoptx</B> reads from standard input.


title: PARAMETERS
content:
<b>pbmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Portable Bitmap (PBM) image file to be processed. If omitted, <B>pbmtoptx</B> reads the PBM data from standard input.<br><br><b>-rows=<rows></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of pixel rows to examine when searching for a staff line. This helps limit the search area for vertical extent of staves. The default value varies but is typically around 300.<br><br><b>-columns=<columns></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of pixel columns to examine when searching for a staff line. This helps limit the search area for horizontal extent of staves. The default value varies but is typically around 2400.<br><br><b>-minwidth=<width></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum required width, in pixels, for a detected line to be considered a staff line. Lines narrower than this value are ignored. The default value is typically 1.<br><br>


title: DESCRIPTION
content:
<B>pbmtoptx</B> is a specialized utility from the <I>Netpbm</I> project designed to convert <I>portable bitmap</I> (PBM) image files into a text format suitable for the <I>Transcribe</I> program. Its primary function is to analyze a PBM image, typically representing scanned sheet music, and identify the horizontal lines that form musical staves. The command outputs the detected staff line positions and their associated metrics as plain text. This output serves as crucial input for the <I>Transcribe</I> application, which then uses this information for further processing in <I>optical music recognition</I> (OMR), such as converting visual music notation into MIDI data. It's a low-level component in a pipeline aimed at digitizing and interpreting musical scores, focusing specifically on the structural analysis of staff lines within the image.


title: CAVEATS
content:
<B>pbmtoptx</B> is a highly specialized tool. It expects its input to be a <I>Portable Bitmap</I> (PBM) formatted image and produces output specifically tailored for the <I>Transcribe</I> program's staff recognition process. It is not a general image-to-text converter, nor does it perform full <I>optical music recognition</I> (OMR) on its own; it merely extracts staff line positions. The accuracy of its output heavily depends on the quality and clarity of the input PBM image, particularly regarding staff line thickness and separation. Noise or irregularities in the input image can significantly affect staff detection.


title: OUTPUT FORMAT
content:
The output of <B>pbmtoptx</B> is a series of lines written to standard output, each describing a detected staff. The exact format typically includes the vertical position (row number) of the staff line, and potentially other metrics like its width and confidence score. This plain text output is designed for programmatic parsing by the <I>Transcribe</I> application, not for human readability or direct musical interpretation. Users typically redirect this output to a file or pipe it directly to another program.


title: TYPICAL USE CASE
content:
<B>pbmtoptx</B> is typically used as a component in larger scripts or workflows within an <I>optical music recognition</I> (OMR) pipeline. For instance, a user might first scan sheet music to a common image format (e.g., TIFF or JPEG), convert it to PBM using other Netpbm tools like <B>anytopnm</B> (to <I>PNM</I>) followed by <B>pnmdepth</B> and <B>ppmtopbm</B> (to <I>PBM</I>), then pipe the PBM output to <B>pbmtoptx</B> to extract staff data, which is then fed into the <I>Transcribe</I> program for further musical analysis and MIDI conversion. It automates the initial, crucial step of locating staff lines.


title: HISTORY
content:
<B>pbmtoptx</B> is part of the <I>Netpbm</I> project, a widely used toolkit for converting and manipulating graphic images. The Netpbm suite originated from Jef Poskanzer's Pbmplus package, first released in 1988. Over the years, Netpbm has evolved as a collection of command-line utilities that operate on the "Netpbm formats" (PBM, PGM, PPM, and PAM). <B>pbmtoptx</B> was developed to support specific applications like <I>Transcribe</I> by bridging image data to musical notation analysis, reflecting the modular and specialized design philosophy of the Netpbm tools. Its development is tied to the continuous evolution and maintenance of the broader Netpbm toolkit, ensuring compatibility and efficiency for niche image processing tasks.


title: PARAMETERS
content:
<b><I>pbmfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional path to the input Portable Bitmap (PBM) file. If omitted, <I>pbmtosunicon</I> reads the PBM data from standard input.<br><br>


title: DESCRIPTION
content:
<I>pbmtosunicon</I> is a command-line utility designed to convert image files from the Portable Bitmap (PBM) format into the Sun icon format. It reads a PBM image either from a specified file or from standard input. The crucial requirement for the input PBM image is that it must be exactly 64x64 pixels in dimension and monochrome (black and white). Sun icons are a specific image format traditionally used on SunOS and Solaris desktop environments for representing small graphical elements like application icons or file type indicators. This tool is part of the broader Netpbm toolkit, which provides a comprehensive suite of utilities for converting and manipulating various image formats.


title: CAVEATS
content:
The input PBM image <I>must</I> be exactly 64x64 pixels. Any other dimension will result in an error.<br>The input PBM image <I>must</I> be monochrome (black and white). Color or grayscale PGM/PPM images are not supported.<br>The output Sun icon format is specific to SunOS/Solaris environments and may not be directly usable or recognized by modern desktop operating systems without additional conversion or viewers.


title: OUTPUT FORMAT
content:
The command produces a Sun icon file. These files typically have a <I>.ico</I> or <I>.icon</I> extension in SunOS/Solaris systems and are structured specifically for display on those platforms.


title: USAGE CONTEXT
content:
This command is primarily useful in environments or workflows that require interaction with legacy SunOS/Solaris systems, or for developers working with Sun icon formats for historical or compatibility reasons. For general modern icon conversion, other tools might be more suitable.


title: HISTORY
content:
<I>pbmtosunicon</I> is a component of the Netpbm project, an open-source graphics toolkit. The initial concept for the Netpbm tools, then known as PBMPLUS, was developed by Jef Poskanzer in 1989. This specific utility, <I>pbmtosunicon</I>, was created by Warren Sterling from the University of Colorado, Boulder, in 1993, reflecting the need for interoperability with Sun workstations popular at the time. Its development is rooted in the era when Sun Microsystems' workstations were prevalent, and specific icon formats were common for their graphical user interfaces.


title: DESCRIPTION
content:
<i>pbmtowbmp</i> is a command-line utility from the Netpbm package, designed to convert images from the Portable Bitmap (PBM) format into the Wireless Application Protocol Bitmap (WBMP) format. PBM is a simple, monochrome image format, while WBMP is a compact, monochrome format specifically designed for WAP (Wireless Application Protocol) enabled mobile devices. This tool was historically essential for preparing simple black-and-white graphics for display on older mobile phones or devices with limited graphical capabilities. It processes one PBM image at a time, reading from standard input or a specified file, and outputs the WBMP data to standard output. As part of the Netpbm suite, it emphasizes simplicity and inter-operability through shell pipes.


title: CAVEATS
content:
<b>Limitations:</b><br>Only supports monochrome (black and white) images.<br>The WBMP format is largely superseded by more advanced image formats for modern mobile devices.<br>The tool expects valid PBM input; behavior with non-PBM input might be undefined or result in errors.


title: INPUT/OUTPUT
content:
<i>pbmtowbmp</i> reads a PBM format image from standard input if no file is specified, or from the provided <i>&lt;pbmfile&gt;</i>. It writes the resulting WBMP format image to standard output. This design makes it highly suitable for use in shell pipelines with other Netpbm utilities.


title: EXAMPLE USAGE
content:
<b>1. Convert a PBM file to WBMP:</b><br><i>pbmtowbmp image.pbm &gt; image.wbmp</i><br><br><b>2. Convert a PNG file to WBMP via PBM intermediate:</b><br><i>pngtopnm image.png | pnmtopbm | pbmtowbmp &gt; image.wbmp</i>


title: HISTORY
content:
<i>pbmtowbmp</i> is a component of the Netpbm project, a comprehensive toolkit for graphics file format conversion. Its period of peak relevance coincided with the widespread adoption of WAP-enabled mobile phones, primarily from the late 1990s to the early 2000s. During this era, the WBMP format was crucial for delivering lightweight, simple images to devices with stringent bandwidth and display constraints. While mobile technology has significantly advanced beyond WBMP's initial scope, <i>pbmtowbmp</i> continues to serve its specific niche as a testament to the enduring utility of the Netpbm philosophy.


title: PARAMETERS
content:
<b>-name</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a name for the bitmap. The <i>X10</i> bitmap format includes a name field; if not provided, the command will generate one based on the input filename or "image" if reading from stdin.<br><br><b><I>pbmfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Portable Bitmap (PBM) file to be converted. If omitted, `pbmtox10bm` will read the PBM data from standard input.<br><br>


title: DESCRIPTION
content:
The `pbmtox10bm` command is a utility within the Netpbm image manipulation toolkit. Its primary function is to convert a Portable Bitmap (PBM) image file into an <i>X10</i> bitmap format file. The X10 bitmap format is an older, specific bitmap representation used by the <i>X Window System Version 10</i>. This command is particularly useful for preparing monochrome images for use with legacy X10 applications or environments, although X11 (X Window System Version 11) is now the standard.<br><br>PBM files are simple, plain-text or binary files representing a monochrome image, where each pixel is either black or white. `pbmtox10bm` reads this input and transforms it into the specific byte order and header structure required by the X10 bitmap format. If no input file is specified, it reads from standard input. The converted X10 bitmap data is then written to standard output. Like other Netpbm tools, `pbmtox10bm` is designed to be a filter, allowing it to be easily chained with other commands in a pipeline for more complex image processing tasks.


title: CAVEATS
content:
The X10 bitmap format is largely obsolete, having been superseded by the X11 bitmap format (handled by `pbmtoxbm`).<br>This command only works with PBM (monochrome) images. If you have a grayscale (PGM) or color (PPM) image, you must first convert it to PBM using `pgmtopbm` or `ppmtopbm` respectively, likely with dithering, before using `pbmtox10bm`.<br>The output is typically written to standard output, so you'll usually need to redirect it to a file (e.g., `pbmtox10bm image.pbm > image.x10bm`).


title: OUTPUT FORMAT
content:
The output generated by `pbmtox10bm` is a plain-text file in the <i>X10</i> bitmap format. This format is a C source code array definition, making it suitable for direct inclusion in C programs. It defines the image data as a static array of characters or unsigned chars, along with width, height, and hot-spot information if applicable.


title: USAGE WITH STANDARD STREAMS
content:
As with many Netpbm utilities, `pbmtox10bm` supports reading from standard input and writing to standard output. This allows for powerful piping operations. For example, `convert input.jpg - | ppmtopbm | pbmtox10bm > output.x10bm` (assuming `convert` outputs to stdout in a format Netpbm understands, then piped through `ppmtopbm` to get a PBM, then to `pbmtox10bm` to get the final X10 bitmap).


title: HISTORY
content:
`pbmtox10bm` is part of the Netpbm project, which originated from Jef Poskanzer's Pbmplus toolkit in the late 1980s. Pbmplus was designed to convert between various image formats and included tools for manipulating basic bitmap, grayscale, and pixmap files. As the <i>X Window System</i> evolved, so did its associated bitmap formats. `pbmtox10bm` specifically addresses the needs of the older <i>X10</i> environment, reflecting a period before <i>X11</i> became the dominant <i>X Window System</i> version. Its continued presence in the Netpbm suite highlights the project's commitment to maintaining compatibility with a wide range of legacy and niche graphics formats.


title: SYNOPSIS
content:
<b>pbmtoxbm</b> [<i>pbmfile</i>]<br>If <i>pbmfile</i> is not specified, <b>pbmtoxbm</b> reads from standard input.


title: DESCRIPTION
content:
The <b>pbmtoxbm</b> command is a utility from the Netpbm image manipulation toolkit, designed for converting image files from the Portable Bitmap (PBM) format to the X11 Bitmap (XBM) format. PBM is a simple, monochrome (1-bit) image format part of the Netpbm family, which also includes PGM (Portable Graymap) and PPM (Portable Pixmap). XBM is another monochrome image format specifically used within the X Window System environment. XBM files are unique because they are typically represented as C source code fragments, allowing them to be directly compiled into applications.<br><br>This command is crucial for developers and users who need to integrate simple, black-and-white images into X11 applications or resources. Since both PBM and XBM are 1-bit formats, <b>pbmtoxbm</b> primarily handles monochrome images. It reads a PBM file from standard input (or a specified file) and writes the corresponding XBM data to standard output. Its simplicity makes it a fundamental tool for basic image format conversion within the Unix/Linux ecosystem.


title: CAVEATS
content:
<b>pbmtoxbm</b> only supports monochrome (1-bit) images. If a color or grayscale image is provided (e.g., a PPM or PGM file), it will either fail or require prior conversion to PBM using other Netpbm tools like <b>ppmtopbm</b> or <b>pgmtopbm</b>. The output XBM format is also strictly monochrome. Additionally, XBM files are C source code fragments, not typical image files; they are meant to be compiled or included in C/C++ applications.


title: INPUT/OUTPUT
content:
By default, <b>pbmtoxbm</b> reads the Portable Bitmap (PBM) image data from standard input if no <i>pbmfile</i> argument is provided. It writes the resulting X11 Bitmap (XBM) data to standard output. This behavior allows it to be easily integrated into shell pipelines, chaining operations with other Netpbm utilities or standard Unix commands.


title: OUTPUT FORMAT
content:
The X11 Bitmap (XBM) format is distinctive as it's not a standalone image file in the traditional sense, but rather a C header file (.h) containing static data. This allows XBM images to be directly embedded into C/C++ applications for use with X Window System libraries without requiring external image loading libraries.


title: HISTORY
content:
The <b>pbmtoxbm</b> command is part of the extensive Netpbm image processing toolkit. It was originally authored by David W. Sanderson in 1991. The Netpbm suite itself is a collection of graphics utilities designed for converting and manipulating various image formats, emphasizing simplicity and pipeline processing. <b>pbmtoxbm</b> represents one of the early and foundational tools within this suite, reflecting the need for interoperability between standard image formats and the then-prevalent X Window System graphics environment.


title: PARAMETERS
content:
<b>pbmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the PBM (Portable BitMap) input file. If <i>pbmfile</i> is omitted, <b>pbmtoybm</b> reads its input from standard input (stdin).<br><br>


title: DESCRIPTION
content:
The <b>pbmtoybm</b> command is a utility within the Netpbm image manipulation toolkit. Its primary function is to convert a Portable BitMap (PBM) image file into a Yale B&W Bitmap (YBM) format file. PBM is a very simple, text-based or raw binary format for monochrome (black and white) images, where each pixel is either black or white. The YBM format, on the other hand, is an older, less common format primarily associated with Yale systems, often used for legacy displays or printers.<br><br>This command is typically used in scenarios where compatibility with older systems or specific legacy hardware requiring the YBM format is necessary. It reads a PBM image from a specified file or from standard input if no file is provided, and then writes the resulting YBM image to standard output. As part of the Netpbm suite, <b>pbmtoybm</b> emphasizes simplicity and pipeability, allowing it to be easily integrated into shell scripts for image processing workflows.<br><br>Given the obscurity of the YBM format today, <b>pbmtoybm</b> is not a frequently used command for general image conversion, but it remains a testament to Netpbm's comprehensive support for a wide array of image formats, old and new.


title: CAVEATS
content:
The YBM format is an extremely old and largely obsolete image format. It is not widely supported by modern image viewers, editors, or printing systems. This command is primarily useful for interacting with very specific legacy hardware or software that still utilizes the Yale B&W Bitmap format. For general image conversion, other more common formats (like PNG, JPEG, GIF, or even newer Netpbm formats like PNM) should be used.


title: INPUT/OUTPUT
content:
<b>pbmtoybm</b> reads its PBM input from a file specified on the command line or from standard input (<i>stdin</i>) if no file is given. It writes the resulting YBM output to standard output (<i>stdout</i>). This design makes it easy to use in shell pipelines, for instance, `cat image.pbm | pbmtoybm > image.ybm` or `some_command_generating_pbm | pbmtoybm | another_command_reading_ybm`.


title: NETPBM SUITE
content:
This command is part of the extensive Netpbm toolkit, a collection of utilities that handle various image formats, promoting a "toolbox" approach where simple tools are combined to perform complex tasks. All Netpbm tools are designed to work seamlessly with each other via pipes.


title: HISTORY
content:
The <b>pbmtoybm</b> command is part of the Netpbm package, which has a long history dating back to the late 1980s as a collection of simple, composable tools for image format conversion and manipulation. Netpbm originated from Jef Poskanzer's <i>pbmplus</i> package. The philosophy behind Netpbm tools, including <b>pbmtoybm</b>, is to provide atomic operations that can be chained together using standard Unix pipes, promoting flexibility and scriptability. The inclusion of <b>pbmtoybm</b> reflects Netpbm's commitment to supporting a broad spectrum of image formats, including older and more obscure ones like YBM, ensuring compatibility with a wide range of historical and specialized systems. Its development has mirrored the evolution of the Netpbm suite, focusing on robustness and adherence to the Unix philosophy.


title: PARAMETERS
content:
<b>pbmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the PBM file to convert. If omitted, <i>pbmtozinc</i> reads the PBM image from standard input.<br><br>


title: DESCRIPTION
content:
<i>pbmtozinc</i> is a utility from the Netpbm image manipulation toolkit. It converts a Portable BitMap (PBM) image into the proprietary Zinc format. The PBM format represents a monochrome image where each pixel is either black or white.<br><br><i>pbmtozinc</i> takes this PBM input and produces a corresponding monochrome bitmap output in the Zinc format, which was historically used by certain typesetters and display systems. This command is particularly useful for integrating PBM images into workflows that require this specific, often niche, image format. If no input file is specified, <i>pbmtozinc</i> reads the PBM image data from standard input.


title: CAVEATS
content:
The Zinc format is a proprietary and relatively obscure format, primarily used by older typesetters and display systems. The output is always a monochrome bitmap, as per the nature of PBM and the Zinc format it targets. This command is part of the larger Netpbm suite, which often requires piping commands together for complex operations.


title: AUTHORS
content:
<i>pbmtozinc</i> was written by Arthur Smith. The Netpbm package is currently maintained by Bryan Henderson.


title: HISTORY
content:
<i>pbmtozinc</i> is part of the Netpbm project, a comprehensive toolkit for image manipulation. Netpbm originated from the <i>pbmplus</i> package, created by Jef Poskanzer in 1988. Over time, <i>pbmplus</i> evolved and was renamed Netpbm, incorporating many new utilities while maintaining backward compatibility. <i>pbmtozinc</i> has been a part of this suite, serving the specific purpose of converting PBMs to the less common Zinc format, demonstrating Netpbm's broad support for various image standards, even niche ones.


title: PARAMETERS
content:
<b>-upce</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces <b>pbmupc</b> to interpret the input PBM image as a UPC-E (8-digit) bar code. By default, it attempts to decode as UPC-A first, then UPC-E if UPC-A fails.<br><br><b>-checkdigit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes the check digit in the output. For UPC-A, this means the 12th digit is printed; for UPC-E, the 8th digit. By default, only the main digits (11 for UPC-A, 7 for UPC-E) are outputted.<br><br><b>pbmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the PBM image file containing the UPC bar code. If omitted, <b>pbmupc</b> reads the PBM data from standard input.<br><br>


title: DESCRIPTION
content:
<b>pbmupc</b> is a command-line utility within the <i>Netpbm</i> suite designed to read a Portable Bitmap (PBM) image file that contains a representation of a Universal Product Code (UPC) bar code. It then decodes this visual information and prints the corresponding UPC number to standard output.<br><br>The command supports both UPC-A (12-digit) and UPC-E (8-digit) formats. By default, it attempts to identify and decode UPC-A first, then UPC-E. Users can explicitly specify the UPC-E format using an option.<br><br>It's crucial that the input PBM image displays the bar code horizontally, with dark bars on a light background, and maintains sufficient resolution for accurate decoding. If no input file is specified, <b>pbmupc</b> reads the PBM data from standard input.


title: CAVEATS
content:
<b>pbmupc</b> is sensitive to the quality and orientation of the input bar code image. It expects a clean, horizontal bar code with dark bars on a light background.<br><br>It does not handle rotated, skewed, or partial bar codes effectively. Low-resolution scans or imperfectly generated bar codes may lead to decoding errors. For best results, use bar codes generated by tools like <i>upc(1)</i>.


title: INPUT/OUTPUT
content:
<b>pbmupc</b> reads a PBM image from a specified file or from standard input if no file is provided. It writes the decoded UPC number to standard output. Error messages or diagnostic information are typically sent to standard error.


title: IMAGE REQUIREMENTS
content:
The input PBM image must represent a UPC bar code horizontally, with dark bars on a light background. The resolution should be sufficient for the utility to accurately distinguish individual bars, ideally with each bar being at least one pixel wide.


title: PARAMETERS
content:
<b><i>input_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the corrupted or truncated <i>pcap</i> file to be repaired.<br><br><b><i>output_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the repaired <i>pcap</i> file will be saved. If omitted, a default name (e.g., '<i>input_file</i>.fixed') or stdout will be used depending on other options.<br><br><b><b>-o</b> <i>output_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly specifies the output file path. Identical to providing <i>output_file</i> as a positional argument.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug mode, providing more verbose output for troubleshooting.<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the tool to process and include all packets it can find, even those that might appear malformed or inconsistent.<br><br><b><b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables timestamp correction. By default, <i>pcapfix</i> attempts to correct and normalize packet timestamps.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly enables timestamp correction (this is the default behavior).<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the repair process.<br><br><b><b>-y</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Answers 'yes' to all prompts, allowing non-interactive operation (e.g., for scripting).<br><br><b><b>-w</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents overwriting an existing output file. If the output file already exists, the command will exit with an error.<br><br><b><b>-s</b> <i>snaplen</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the snapshot length (snaplen) for the output <i>pcap</i> file. This limits the maximum number of bytes captured per packet.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the repaired <i>pcap</i> data to standard output (stdout) instead of writing to a file. Useful for piping to other tools.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists supported link-layer types. This can help in understanding the PCAP file format.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br>


title: DESCRIPTION
content:
<i>pcapfix</i> is a command-line utility designed to repair damaged or incomplete <i>pcap</i> (packet capture) files. These files often become corrupted due to system crashes, power failures, or unexpected termination of capture processes. The tool attempts to salvage readable network packets from such files by scanning for valid packet headers, re-indexing, and correcting common issues like incorrect timestamps or lengths. It analyzes the file structure, identifies valid packet boundaries, and reconstructs a new, more usable <i>pcap</i> file. While it cannot recover data that is fundamentally missing or severely overwritten, <i>pcapfix</i> is highly effective at recovering partial or truncated captures, making it an invaluable tool for network forensics, debugging, and post-mortem analysis where raw packet data is crucial.


title: CAVEATS
content:
<i>pcapfix</i> performs a 'best-effort' recovery. It cannot magically restore data that was never written or is severely corrupted beyond recognition. In some cases, especially with very fragmented or extensively damaged files, the recovered data might still contain minor inconsistencies or missing packets. Always verify the integrity of the output file with tools like <i>Wireshark</i> or <i>tcpdump</i> after repair.


title: SYNOPSIS
content:
<b>pccardctl</b> [<I>options</I>] [<I>command</I>] [<I>arguments</I>]<br>Commonly: <b>pccardctl</b> <I>command</I> [<I>socket</I>]<br>Example: <b>pccardctl</b> status<br>Example: <b>pccardctl</b> suspend 0


title: PARAMETERS
content:
<b>status [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the status of all or a specified PCMCIA socket.<br><br><b>ident [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows detailed identification information about the card in a socket.<br><br><b>config [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Presents configuration details for the card in a given socket.<br><br><b>suspend [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suspends power to the card in the specified socket, typically for power saving.<br><br><b>resume [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resumes power to a suspended card, bringing it back online.<br><br><b>eject [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initiates the physical ejection of a card from its socket.<br><br><b>insert [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Notifies the PCMCIA subsystem of a card insertion (less common with auto-detect).<br><br><b>reset [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a hardware reset on the card in the chosen socket.<br><br><b>power [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls the power state (on/off) of a specific socket.<br><br><b>bind [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Associates a kernel driver with the detected card.<br><br><b>unbind [<I>socket</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detaches a kernel driver from the card.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>pccardctl</i> utility version.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message with command usage.<br><br>


title: DESCRIPTION
content:
<i>pccardctl</i> is a utility used to control and query the status of PCMCIA (Personal Computer Memory Card International Association) and CardBus sockets. These sockets were commonly found on older laptop computers, allowing the use of various expansion cards such as modems, network adapters, storage, and more.<br><br>The command provides functionalities to enable/disable sockets, power on/off cards, reset cards, examine card information, and manage the PCMCIA subsystem's operation. It's part of the <i>pcmciautils</i> package and works in conjunction with <i>cardmgr</i> (or <i>cardd</i> on older systems) to manage card insertions, removals, and configuration. While less prevalent on modern hardware, it was an essential tool for configuring and troubleshooting expansion cards in the era when PCMCIA slots were standard.


title: CAVEATS
content:
<i>pccardctl</i> is primarily relevant for systems with physical PCMCIA/CardBus slots. Modern laptops rarely include these, making the command largely obsolete for new hardware. Its functionality relies on the <i>pcmciautils</i> package and a running <i>cardmgr</i> (or <i>cardd</i>) daemon, which may not be installed or enabled by default on contemporary Linux distributions. Usage often requires root privileges.


title: SOCKET NUMBERING
content:
PCMCIA sockets are typically referred to by a zero-based index (e.g., <i>0</i>, <i>1</i>). If no socket number is specified for commands that require it, <i>pccardctl</i> often defaults to socket <i>0</i> or operates on all available sockets depending on the command.


title: DAEMON REQUIREMENT
content:
For most <i>pccardctl</i> commands to function correctly, the <i>cardmgr</i> (or <i>cardd</i>) daemon must be running. This daemon manages the detection, configuration, and hot-plugging of PCMCIA cards.


title: HISTORY
content:
The <i>pccardctl</i> command emerged as part of the Linux PCMCIA subsystem development, which began in the mid-1990s. This subsystem was crucial for enabling Linux to run effectively on laptops, which heavily relied on PCMCIA slots for networking, modems, and other peripherals. It was initially part of the <i>PCMCIA-CS</i> (Card Services) package, later evolving into <i>pcmciautils</i>. Its peak usage coincided with the prevalence of PCMCIA and CardBus slots on laptops, roughly from the late 1990s to the mid-2000s, before USB and integrated hardware largely superseded these expansion slots. While the underlying standards are still supported by the kernel, the command-line utility is less frequently used today due to the declining availability of PCMCIA hardware.


title: PARAMETERS
content:
<b><i>FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Kodak Photo CD image file to be analyzed.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and exits.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed debugging messages during processing.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists only the names or identifiers of the images found within the Photo CD file, without additional metadata.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version information of the <b>pcdindex</b> utility and exits.<br><br><b><b>-o</b> <i>OUTPUT_FILE</i>, <b>--output</b>=<i>OUTPUT_FILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an output file to which the indexed information will be written. If this option is not used, output is directed to standard output (stdout).<br><br>


title: DESCRIPTION
content:
The <b>pcdindex</b> command is a utility designed to read and interpret Kodak Photo CD files. It extracts essential metadata and lists the images contained within a Photo CD master file.  Originally developed by Kodak in the early 1990s, the Photo CD format stored digital images at various resolutions on a CD-ROM.  As a proprietary format, access often required specific software.<br><br><b>pcdindex</b> provides an open-source solution, typically part of libraries like <i>libkdcraw</i> or utility packages such as <i>pcdtojpeg-tools</i>, allowing Linux users to inspect the contents of these historical media without proprietary software. It's particularly useful for archival purposes, helping identify and catalog the images stored on legacy Photo CDs before they can be converted or processed further.


title: CAVEATS
content:
Kodak Photo CD is an obsolete format. <b>pcdindex</b> relies on underlying libraries (like <i>libkdcraw</i>) that may not be actively maintained on all modern Linux distributions. Compatibility with newer Photo CD variants or damaged discs might be limited. This command is primarily for accessing legacy data.


title: BASIC USAGE EXAMPLE
content:
To list the contents of a Photo CD file named <i>myphoto.pcd</i>, you would typically use:<br><br><b>pcdindex</b> <i>myphoto.pcd</i><br><br>To get just the image names, you could use:<br><br><b>pcdindex</b> <b>-l</b> <i>myphoto.pcd</i>


title: PHOTO CD FORMAT OVERVIEW
content:
A Kodak Photo CD typically contains images stored in a hierarchical structure at different resolutions (Base/16, Base/4, Base, 4 Base, 16 Base, 64 Base). <b>pcdindex</b> helps in navigating this structure by providing an index of the images, often including their internal IDs or names, which can then be used by other tools (like <i>pcdtojpeg</i>) to extract the actual image data.


title: HISTORY
content:
The Kodak Photo CD format was introduced in 1992 and gained some popularity for digital image storage. As a proprietary format, open-source initiatives emerged to allow users to access their data without reliance on Kodak's specific software. <b>pcdindex</b>, along with tools like <i>pcdtojpeg</i>, is part of the <i>libkdcraw</i> project or similar efforts, developed to provide open-source support for Photo CD file parsing and image extraction on Linux and other Unix-like systems, enabling the preservation and conversion of this legacy data.


title: DESCRIPTION
content:
<b>pcdovtoppm</b> is a utility from the Netpbm image manipulation toolkit. It reads a Photo CD overview image file (often named <I>info.ovr</I> or similar, found in the <I>PHOTO_CD</I> directory on a Photo CD) and converts it into a Portable Pixmap (PPM) image file. Photo CD overview images are low-resolution thumbnails (typically 128x192 pixels) that provide a quick preview of the images on the disc without requiring full decoding of the high-resolution files. The output PPM file is a raw, uncompressed image that can then be processed further by other Netpbm tools or converted to other image formats. This command is particularly useful for quickly extracting a visual summary of a Photo CD's content. It handles the specific Photo CD overview image format and outputs a standard, widely compatible PPM.


title: CAVEATS
content:
This command specifically handles Photo CD <I>overview</I> images (thumbnails), not the full-resolution Photo CD images. For converting full Photo CD images, the <I>pcdtoppm</I> command is used. The output is a raw Portable Pixmap (PPM) file, which may require further processing with other Netpbm tools (e.g., <I>pnmtopng</I> or <I>cjpeg</I>) to convert it into more common image formats like PNG or JPEG. Ensure the input file is a valid Photo CD overview file; otherwise, the command may fail or produce corrupt output.


title: STANDARD INPUT/OUTPUT
content:
If no <I>pcdov_file</I> is specified, <b>pcdovtoppm</b> reads the Photo CD overview image from standard input. The converted Portable Pixmap (PPM) image is always written to standard output. This allows for easy piping with other Netpbm commands, for example: <br><b>cat info.ovr | pcdovtoppm | pnmtopng > overview.png</b>


title: HISTORY
content:
The <b>pcdovtoppm</b> command is part of the Netpbm project, a long-standing and widely used toolkit for graphic file format conversion. Netpbm itself originated in the early 1990s as a collection of tools for converting various image formats. <b>pcdovtoppm</b>, along with <I>pcdtoppm</I>, was developed to address the specific needs of converting images from Kodak Photo CD discs, a popular image storage format in the 1990s and early 2000s. Its development aligns with Netpbm's philosophy of providing small, specialized tools that can be chained together for complex image manipulations. While Photo CD is less common today, <b>pcdovtoppm</b> remains in the Netpbm suite, preserving the ability to access these older image assets.


title: SYNOPSIS
content:
<b>pcidump</b> [<I>options</I>] [<I>device</I>|<I>file</I>]<br><br>Common usage:<br><b>pcidump</b> [<I>-b</I>] [<I>-r <I>file</I></I>] [<I>-s <I>[[bus]:][device][.function]</I></I>] [<I>-x</I>] [<I>-v</I>]


title: PARAMETERS
content:
<b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Bus master dump. Dumps the configuration space for all <b>PCI</b> bus master devices found on the system.</i><br><br><b><b>-r</b> <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Reads <b>PCI</b> configuration space from a specified raw binary dump <br><i>file</i> instead of the live system's <br><i>/proc/bus/pci</i> interface.</i><br><br><b><b>-s</b> <i>[[bus]:][device][.function]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies a particular <b>PCI</b> device to dump. <br>The format allows optional bus, device, and function numbers for precise targeting (e.g., <br><i>00:01.0</i> or <br><i>01.0</i>).</i><br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Hex dump. Displays the <b>PCI</b> configuration space content in a raw hexadecimal format, <br>useful for byte-level analysis and detailed register inspection.</i><br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Verbose output. Shows more detailed information about the <b>PCI</b> configuration space, <br>often decoding certain fields into human-readable descriptions based on the <b>PCI</b> specification.</i><br><br>


title: DESCRIPTION
content:
<b>pcidump</b> is a command-line utility used to display the configuration space of <b>PCI</b> (Peripheral Component Interconnect) devices. <br>It is part of the <b>pciutils</b> package, which provides various tools for inspecting and manipulating <b>PCI</b> hardware. <br>The command can read <b>PCI</b> configuration data directly from the system's <i>/proc/bus/pci</i> interface, or it can process a raw binary dump file of <b>PCI</b> configuration space. <br>This tool is invaluable for hardware diagnostics, driver development, and system debugging, allowing users to examine vendor IDs, device IDs, class codes, BARs (Base Address Registers), and other crucial configuration registers for each <b>PCI</b> device present in the system. <br>It helps in understanding how devices are configured and interact with the system's memory and I/O space.


title: CAVEATS
content:
<b>Permissions:</b> <br><i>Accessing live <b>PCI</b> configuration space via <br><i>/proc/bus/pci</i> typically requires root privileges. <br>Without appropriate permissions, <br><b>pcidump</b> might fail or show limited information.</i><br><br><b>File Format:</b> <br><i>When using the <br><b>-r</b> option, the specified <br><i>file</i> must be a raw binary dump of <b>PCI</b> configuration data, <br>not a human-readable text file or an <b>lspci</b> output.</i><br><br><b>System Stability:</b> <br><i>While <br><b>pcidump</b> is a read-only tool and will not modify hardware configuration, <br>it interacts with low-level system components. <br>Misinterpretation of its output can lead to incorrect diagnoses in complex system debugging scenarios.</i>


title: <B>USAGE EXAMPLES</B>
content:
<i><br>To dump the configuration space for all <b>PCI</b> devices in hexadecimal format:<br><b>pcidump -x</b><br><br>To dump a specific device (e.g., the device at bus 00, device 01, function 0) in verbose hexadecimal:<br><b>pcidump -s 00:01.0 -xv</b><br><br>To dump configuration from a previously saved binary file named <br><i>pci_dump.bin</i>:<br><b>pcidump -r pci_dump.bin -x</b></i>


title: <B>OUTPUT INTERPRETATION</B>
content:
<i><br>The output of <br><b>pcidump</b> typically shows 64 bytes (16 DWORDS) of configuration space per device, <br>organized into 16-byte lines. Each byte or set of bytes represents a specific register or field as defined by the <b>PCI</b> Local Bus Specification. <br>Understanding the <b>PCI</b> specification documents (especially the 'Configuration Space Header' and 'Capabilities' sections) is crucial for accurately interpreting the raw hexadecimal output and identifying particular registers like Vendor ID, Device ID, Class Code, Status Register, Command Register, and Base Address Registers (BARs).</i>


title: HISTORY
content:
<i>The <b>pcidump</b> command is an integral part of the <b>pciutils</b> package, <br>which originated in the Linux kernel development community to provide user-space tools for interacting with <b>PCI</b> hardware. <br>It has been a stable and essential utility for <b>PCI</b> diagnostics since the early days of Linux's support for the <b>PCI</b> bus, <br>evolving alongside the kernel's <b>PCI</b> subsystem to maintain compatibility with new <b>PCI</b> specifications and features.</i>


title: SEE ALSO
content:
<b>lspci</b><i>(8)</i>: <i>Lists all <b>PCI</b> devices and their properties in a readable, summary format. <br>Often the first command used for <b>PCI</b> device discovery.</i>, <b>setpci</b><i>(8)</i>: <i>Allows reading from and writing to <b>PCI</b> configuration registers. <br>This command can modify device behavior and should be used with extreme caution.</i>, <b>pcilib</b><i>(3)</i>: <i>The <b>PCI</b> library used by these utilities (including <b>pcidump</b>), <br>providing programmatic access to <b>PCI</b> configuration space for developers.</i>


title: SYNOPSIS
content:
<B>pcimodules</B> <I>[options]</I><BR><BR>Given its nature as an historically specific script rather than a standardized command, a universal synopsis is difficult. Typically, it was invoked without arguments or with very simple options.


title: PARAMETERS
content:
<b><B>-q</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Quiet mode; suppress output messages.<br><br><b><B>-v</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Verbose mode; display more detailed information about detected devices and loaded modules.<br><br><b><B>-n</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> No-op or dry run; show what modules would be loaded without actually loading them.<br><br>


title: DESCRIPTION
content:
The <B>pcimodules</B> command (often a script) historically aimed to identify PCI (Peripheral Component Interconnect) hardware devices present in a system and load the appropriate kernel modules required for their operation. In older Linux distributions or specific embedded systems, this script would typically be run during system boot to ensure that all detected PCI hardware, such as network cards, sound cards, and graphics adapters, had their corresponding kernel drivers loaded into memory. This was crucial for the devices to function correctly.<BR><BR>Unlike a fixed executable, <B>pcimodules</B> was often a shell script that would leverage other utilities like <B>lspci</B> to list PCI devices, and then use configuration files or internal logic to map device IDs to kernel module names. Finally, it would invoke <B>modprobe</B> or <B>insmod</B> to load the identified modules. Modern Linux systems primarily rely on the <I>udev</I> daemon for dynamic device management, which automatically detects hardware, creates device nodes, and loads necessary kernel modules without needing a separate <B>pcimodules</B> script to be manually run or configured during boot.


title: CAVEATS
content:
The <B>pcimodules</B> command is largely obsolete and not a standard utility found in modern Linux distributions. Its functionality has been superseded by the <I>udev</I> daemon, which provides a more robust and dynamic approach to hardware detection and module loading. Attempting to run <B>pcimodules</B> on a contemporary Linux system will likely result in a "command not found" error or execute a highly specific, possibly outdated, script if it exists at all.


title: MODERN APPROACH: UDEV
content:
In modern Linux systems, the <I>udev</I> daemon handles dynamic device management. When a PCI device is detected (either at boot or hotplugged), <I>udev</I> receives an event, consults its rules (<I>/etc/udev/rules.d/</I>), and automatically loads the appropriate kernel module. This provides a more flexible, efficient, and hands-off approach compared to the older script-based methods like <B>pcimodules</B>.


title: HISTORY
content:
The concept behind <B>pcimodules</B> emerged in earlier Linux kernel versions and distributions, where system initialization was more rigid and often relied on static scripts to identify and configure hardware. Before the widespread adoption of the <I>udev</I> dynamic device management system (introduced around kernel 2.6 series), scripts like <B>pcimodules</B> were part of the boot process (e.g., within <I>/etc/rc.d</I> or <I>/etc/init.d</I> structures) to ensure that the necessary drivers for PCI hardware were loaded. With <I>udev</I>'s event-driven architecture, which automatically detects hardware hotplug events and loads modules on demand, the need for a separate, explicit <B>pcimodules</B> script diminished, leading to its obsolescence in most mainstream distributions.


title: SYNOPSIS
content:
<b>pct</b> <I>command</I> <I>vmid</I> [<I>options</I>]<br><b>pct</b> <I>command</I> [<I>options</I>] (for global commands like 'list')


title: PARAMETERS
content:
<b>create <I>vmid</I> <I>template</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new LXC container from a specified template.<br><br><b>start <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the specified container.<br><br><b>stop <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops the specified container gracefully.<br><br><b>restart <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restarts the specified container.<br><br><b>destroy <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Permanently deletes the specified container and all its associated data.<br><br><b>config <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current configuration of the specified container.<br><br><b>set <I>vmid</I> <I>options</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies various configuration settings for the specified container, such as CPU, memory, and network.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all containers managed by Proxmox VE, along with their status and other details.<br><br><b>enter <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides direct console access (shell) into the specified running container.<br><br><b>backup <I>vmid</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a backup archive of the specified container.<br><br><b>restore <I>vmid</I> <I>backup-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores a container from a backup archive, optionally assigning a new VMID.<br><br><b>migrate <I>vmid</I> <I>target-node</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Migrates a container from the current node to another node in a Proxmox cluster.<br><br>


title: DESCRIPTION
content:
<b>pct</b> is the primary command-line interface for managing LXC (Linux Containers) within the Proxmox Virtual Environment (PVE). It allows administrators to perform a wide range of operations on containers, including creation, deletion, starting, stopping, restarting, migrating, backing up, and restoring. It also enables modification of container configurations, such as network settings, CPU limits, memory allocation, and storage. <b>pct</b> is an essential tool for automating container management tasks and for those who prefer command-line interaction over the Proxmox web interface. It integrates seamlessly with Proxmox's storage and network configurations, providing a robust solution for container orchestration.


title: CAVEATS
content:
<b>pct</b> is specific to the Proxmox Virtual Environment and cannot be used on a standalone Linux system without PVE. Most operations require root privileges or equivalent permissions. Incorrect usage, particularly with commands like `destroy` or `set`, can lead to data loss, misconfigured containers, or system instability. Users should have a foundational understanding of LXC concepts and Proxmox's storage and networking models for effective and safe management.


title: CONTAINER TEMPLATES
content:
<b>pct</b> heavily relies on pre-built container templates, which can be downloaded and managed using the `pveam` command-line tool or through the Proxmox web interface. These templates provide a base operating system for new containers, simplifying deployment.


title: RESOURCE MANAGEMENT
content:
<b>pct</b> allows granular control over container resources such as CPU cores (e.g., `--cores`), memory (e.g., `--memory`), swap space (e.g., `--swap`), and I/O limits (e.g., `--ioproperty`). These settings are crucial for optimizing performance and ensuring fair resource distribution among containers.


title: NETWORK CONFIGURATION
content:
Networking for LXC containers can be configured directly via <b>pct set</b> commands, supporting various modes like bridged networking, NAT, and VLANs. These configurations integrate seamlessly with the underlying Proxmox host's network setup, providing flexible connectivity options.


title: HISTORY
content:
The <b>pct</b> command is an integral part of the Proxmox Virtual Environment, a leading open-source server virtualization management solution. Proxmox VE initially utilized OpenVZ for containerization but transitioned to LXC (Linux Containers) in version 4.0 (released 2015) to leverage upstream kernel features and improve container isolation. <b>pct</b> was developed to provide a native, robust command-line interface for managing these LXC containers within the Proxmox ecosystem, complementing the web-based GUI and ensuring seamless integration with Proxmox's clustering, storage, and networking features. Its development closely tracks Proxmox VE's release cycle, with new features and improvements added regularly.


title: DESCRIPTION
content:
<i>pcxtoppm</i> reads a PCX image file as input and produces a PPM (Portable Pixmap) or PGM (Portable Graymap) image as output. It handles various PCX formats, including 24-bit color, 8-bit color with colormaps, and 1-bit monochrome. For 24-bit PCX files and 8-bit color files with colormaps, it produces a PPM image. For 1-bit monochrome files, it produces a PGM image. The command is part of the <I>Netpbm</I> toolkit, which is a collection of utilities for converting and manipulating various image formats. It's often used as an intermediate step in a larger image processing pipeline, allowing PCX images to be handled by other Netpbm tools or converted to other standard formats.


title: CAVEATS
content:
<i>pcxtoppm</i> is specifically designed for PCX files; it will not work with other image formats.<br><i>pcxtoppm</i> does not offer options to specify output formats other than PPM or PGM directly; it converts to these formats automatically based on the input PCX type.<br>The command may not support all obscure variations of the PCX format, though it handles the most common ones.<br>It does not provide options for image manipulation (e.g., resizing, cropping); these operations must be performed by other <I>Netpbm</I> tools.


title: INPUT AND OUTPUT
content:
<i>pcxtoppm</i> reads a PCX file from standard input if no <i>pcxfile</i> is specified. Otherwise, it reads from the specified <i>pcxfile</i>. The output is always written to standard output in PPM format for color images (24-bit or 8-bit colormapped) or PGM format for monochrome images (1-bit). This design allows for easy piping with other <I>Netpbm</I> tools, following the Unix philosophy.


title: NETPBM INTEGRATION
content:
As a core component of the <I>Netpbm</I> toolkit, <i>pcxtoppm</i> is designed for seamless interoperability. Its standard output (PPM/PGM) can be directly piped as input to hundreds of other <I>Netpbm</I> utilities for further manipulation (e.g., resizing, rotation), format conversion (e.g., to PNG, JPEG, GIF), or image analysis. This modular design makes it a versatile tool in complex image processing scripts.


title: HISTORY
content:
<i>pcxtoppm</i> is a component of the <I>Netpbm</I> project, which originated from Jef Poskanzer's PBM (Portable BitMap) utilities in 1988. The <I>Netpbm</I> suite evolved to include PGM (Portable GrayMap) and PPM (Portable PixMap) formats and associated conversion tools. <I>pcxtoppm</I> was developed as part of this suite to handle the popular PCX image format, prevalent in MS-DOS environments, enabling its integration into Unix-like image processing workflows. It exemplifies the Netpbm philosophy of small, specialized tools that can be chained together.


title: PARAMETERS
content:
<b><i>script_path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Python 2.7 script to be debugged. If omitted, <I>pdb</I> starts in an interactive prompt.<br><br><b><i>[script_args]...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments that will be passed directly to the Python script being debugged (accessible via <I>sys.argv</I> in the script).<br><br>


title: DESCRIPTION
content:
The <I>pdb2.7</I> command is a wrapper or direct invocation of the standard Python Debugger (pdb) specifically for Python 2.7. It provides an interactive debugging environment for Python programs, allowing developers to pause execution, inspect variables, set breakpoints, step through code line by line, and evaluate expressions. <br><br>While <I>pdb</I> is a powerful tool for understanding program flow and identifying issues, <I>pdb2.7</I> is tied to the end-of-life Python 2.7 runtime, meaning it should primarily be used for maintaining legacy Python 2.x applications. For new development, the <I>pdb</I> module within Python 3 (or enhanced debuggers like <I>ipdb</I> or <I>pudb</I>) is recommended.


title: CAVEATS
content:
<b>Python 2.7 End-of-Life:</b> Python 2.7 reached its official End-of-Life (EOL) on January 1, 2020. Using <I>pdb2.7</I> means interacting with a runtime that no longer receives security updates or bug fixes, which can pose security risks or lead to compatibility issues with modern systems. <br><br><b>Interactive Mode:</b> <I>pdb</I> is primarily an interactive, command-line debugger. It requires users to manually input commands to navigate the code and inspect state. <br><br><b>Limited Features:</b> The Python 2.7 version of <I>pdb</I> lacks some of the enhancements and quality-of-life improvements found in the <I>pdb</I> module of Python 3.


title: COMMON INTERACTIVE PDB COMMANDS
content:
Once inside the <I>pdb</I> prompt, the following are some common commands used for debugging:<br><ul><li><b>h</b> (help): Show general help or help on a specific command.</li><li><b>b</b> (breakpoint) [<i>file:</i>]<i>line</i>[, <i>condition</i>]: Set a breakpoint.</li><li><b>n</b> (next): Continue execution until the next line in the current function is reached.</li><li><b>s</b> (step): Execute the current line, stopping at the first possible occasion (either in the current function or a called function).</li><li><b>c</b> (continue): Continue execution until a breakpoint is hit or the program finishes.</li><li><b>q</b> (quit): Quit the debugger.</li><li><b>l</b> (list): List source code around the current line.</li><li><b>p</b> (print) <i>expression</i>: Evaluate and print the value of an expression.</li><li><b>pp</b> (pretty print) <i>expression</i>: Pretty-print the value of an expression.</li><li><b>r</b> (return): Continue execution until the current function returns.</li><li><b>a</b> (args): Print the argument list of the current function.</li><li><b>w</b> (where): Print a stack trace, with the most recent frame at the bottom.</li></ul>


title: INVOKING PDB FROM WITHIN A SCRIPT
content:
For more targeted debugging, you can insert <I>pdb</I> into your Python 2.7 script by adding <br><code>import pdb; pdb.set_trace()</code><br> at the desired point. When the interpreter reaches this line, it will pause execution and drop into the <I>pdb</I> interactive prompt, allowing you to inspect the program's state at that exact moment.


title: HISTORY
content:
<I>pdb</I> has been an integral part of Python's standard library since its early versions, providing fundamental debugging capabilities. The <I>pdb2.7</I> command specifically refers to the version of the debugger that shipped with Python 2.7, which was released in 2010. While the core functionality of <I>pdb</I> has remained consistent across major Python versions, specific implementations (like <I>pdb2.7</I>) are tied to their respective Python runtimes and benefit from or are limited by the features of that runtime. Its usage peaked during the widespread adoption of Python 2.x and has since declined in favor of Python 3 equivalents.


title: PARAMETERS
content:
<b><i>script</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Python script file that <b>pdb3.4</b> should debug.<br><br><b><i>arg</i> ...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments that will be passed to the <i>script</i> being debugged. These arguments are accessible within the script via <code>sys.argv</code>, just as they would be during normal execution.<br><br>


title: DESCRIPTION
content:
The <b>pdb3.4</b> command serves as an invocation of Python's interactive source code debugger, <b>Pdb</b>, specifically for Python version 3.4. <b>Pdb</b> is an integral part of Python's standard library and provides a powerful environment for analyzing and debugging Python programs. When invoked, <b>pdb3.4</b> runs a specified Python script and pauses execution at the first line, allowing the user to step through code, set breakpoints, inspect variables, and evaluate expressions at runtime. It's a command-line tool, offering a prompt where various debugger commands can be entered. This allows developers to understand program flow, identify logical errors, and resolve issues efficiently without modifying the source code to add print statements. While <b>Pdb</b> is generally invoked using <code>python -m pdb &lt;script&gt;</code>, <b>pdb3.4</b> provides a direct shortcut or alias for this operation using the Python 3.4 interpreter.


title: CAVEATS
content:
<b>Version Specificity</b>: <b>pdb3.4</b> is tied to Python 3.4. Using it for scripts requiring newer Python features or libraries may lead to compatibility issues.<br><br><b>Interactive Nature</b>: This is an interactive debugger. It requires user input to step through code or execute commands. It's not suitable for automated debugging in CI/CD pipelines without specific scripting for debugger interaction.<br><br><b>Limited External Options</b>: The <b>pdb3.4</b> command itself has very few direct command-line options. Most debugging functionality is accessed via commands entered at the interactive <b>pdb</b> prompt.<br><br><b>Installation</b>: <b>pdb3.4</b> might be an alias or a symlink provided by a system's Python 3.4 installation. It may not be available directly on all systems or require specific package installations.


title: <B>INTERACTIVE DEBUGGER COMMANDS</B>
content:
Once inside the <b>pdb</b> prompt, users can type various commands to control execution and inspect the program state. Some common commands include:<br><b>h</b> (help): Displays a list of available commands or help on a specific command.<br><b>l</b> (list): Lists source code around the current line.<br><b>n</b> (next): Continues execution until the next line in the current function is reached.<br><b>s</b> (step): Executes the current line and stops at the first possible opportunity (can step into function calls).<br><b>c</b> (continue): Continues execution until a breakpoint is hit or the program finishes.<br><b>b</b> (breakpoint): Sets a breakpoint (e.g., <code>b filename:lineno</code>).<br><b>p</b> (print): Evaluates and prints the value of an expression (e.g., <code>p my_variable</code>).<br><b>q</b> (quit): Exits the debugger and terminates the program.<br><b>!</b> (bang): Executes the remainder of the line as a Python statement in the context of the current stack frame.


title: HISTORY
content:
The <b>Pdb</b> (Python Debugger) module has been a fundamental part of Python's standard library since its early versions. It provides a robust interactive debugging experience for Python developers. Python 3.4, released in 2014, included the <b>Pdb</b> module as standard, benefiting from ongoing improvements and bug fixes up to that version. The existence of a specific <b>pdb3.4</b> command often indicates a system where multiple Python versions are installed side-by-side, and specific version-prefixed commands (like <code>python3.4</code>, <code>pip3.4</code>) are created to target particular interpreters. This allows developers to easily invoke the debugger for codebases tied to that specific Python 3.4 environment. While <b>Pdb</b> continues to evolve with newer Python versions, its core functionality and interactive commands have remained largely consistent over time.


title: SYNOPSIS
content:
<b>pdbedit</b> [<i>options</i>] [<i>username</i>]<br><br>Examples:<br><b>pdbedit</b> -L <i>(Lists all users)</i><br><b>pdbedit</b> -a <i>newuser</i> <i>(Adds a new user)</i><br><b>pdbedit</b> -x <i>olduser</i> <i>(Deletes a user)</i><br><b>pdbedit</b> -u <i>username</i> -P <i>newpassword</i> <i>(Sets/changes a user's password)</i><br><b>pdbedit</b> -D <i>disableduser</i> <i>(Disables an account)</i>


title: PARAMETERS
content:
<b>-L, --list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Lists all users in the Samba password database.</i><br><br><b>-a, --add</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Adds a new user to the database.</i><br><br><b>-x, --delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deletes a user from the database.</i><br><br><b>-u, --user=<username></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the target username for an operation.</i><br><br><b>-w, --password=<password></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets or changes the password for the specified user. If not provided, <b>pdbedit</b> will prompt interactively.</i><br><br><b>-P, --primary-group-rid=<rid></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the primary group RID for a user.</i><br><br><b>-D, --disable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disables the specified user or machine account.</i><br><br><b>-E, --enable</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables the specified user or machine account.</i><br><br><b>-m, --machine</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Treats the specified account as a machine account.</i><br><br><b>-c, --comment=<comment></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets or changes the user's comment string.</i><br><br><b>-f, --full-name=<full name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets or changes the user's full name.</i><br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases verbosity of output.</i><br><br><b>-i, --import=<filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Imports user data from an <i>smbpasswd</i> format file.</i><br><br><b>-e, --export=<filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Exports user data to an <i>smbpasswd</i> format file.</i><br><br>


title: DESCRIPTION
content:
<b>pdbedit</b> is a command-line utility used to manage the Samba user and machine account database. It allows administrators to add, delete, modify, and list accounts stored in various password backends, such as the TDB (Trivial Database), LDAP, or others configured in <i>smb.conf</i>.<br><br>This tool is essential for managing user authentication and authorization within a Samba domain controller or a standalone Samba server. It provides granular control over account attributes like passwords, account status (enabled/disabled), full names, comments, and SIDs (Security Identifiers), making it a crucial component for Samba administrators.


title: CAVEATS
content:
<b>pdbedit</b> typically requires root privileges (or <i>sudo</i>) to operate, as it modifies system-wide user databases. Its behavior is directly dependent on the <i>passdb backend</i> setting in your <i>smb.conf</i> file; the specific backend configured determines which database <b>pdbedit</b> will manipulate (e.g., TDB, LDAP, Winbind). Be cautious when managing SIDs (Security Identifiers) manually, as incorrect changes can lead to authentication issues.


title: BACKEND CONFIGURATION
content:
The functionality of <b>pdbedit</b> is heavily influenced by the <i>passdb backend</i> directive in <i>smb.conf</i>. Ensure this setting is correctly configured to point to the desired user database (e.g., <i>tdbsam</i>, <i>ldapsam</i>, <i>smbpasswd</i>). Operations performed by <b>pdbedit</b> will apply to the currently active backend.


title: PASSWORD HASHING
content:
<b>pdbedit</b> handles password hashing automatically based on the configured backend and Samba's security settings. It typically stores NTLM hashes, but its capabilities can extend to other formats depending on the backend (e.g., Kerberos keys for machine accounts when integrated with a KDC).


title: HISTORY
content:
<b>pdbedit</b> is an integral part of the Samba suite, developed to provide a unified and flexible interface for managing Samba's diverse user password database backends. It emerged as a more advanced and backend-agnostic alternative to older tools like <i>smbpasswd</i>, particularly as Samba evolved to support various authentication methods, including integration with LDAP and Active Directory. Its design allows administrators to seamlessly manage user and machine accounts regardless of the underlying database technology.


title: PARAMETERS
content:
<b>--object <ID></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the content of the specified object ID(s). Multiple IDs can be provided comma-separated (e.g., 1,2,5).<br><br><b>--extracted</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <i>--object</i>, extracts and decompresses the content of stream objects, revealing hidden data.<br><br><b>--search <string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for a specified string within the PDF document's objects and streams. Useful for finding keywords or indicators of compromise.<br><br><b>--raw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the raw, undecoded content of selected objects or streams, bypassing any applied filters.<br><br><b>--dump <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the content of a selected object or stream to a specified file, allowing external analysis of the extracted data.<br><br><b>--stats</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides statistics about the PDF document, such as object types, counts, and potential anomalies in its structure.<br><br><b>--type <type></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters and displays only objects of a specific type (e.g., /Page, /XRef, /Annot, /JavaScript).<br><br><b>--hash</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and displays various hashes (MD5, SHA1, SHA256) for stream contents, aiding in identifying known malicious content.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debug output, providing more detailed information about the parsing process and internal operations, useful for troubleshooting.<br><br>


title: DESCRIPTION
content:
<b>pdf-parser</b> is a powerful Python tool designed by Didier Stevens for in-depth analysis of Portable Document Format (PDF) files. It allows users to parse the internal structure of a PDF, examine its objects, streams, and cross-reference table. This command-line utility is invaluable for security researchers, digital forensics investigators, and anyone needing to understand the low-level composition of a PDF.<br><br>It can extract raw data, identify compressed streams, and help uncover malicious content by dissecting the document into its constituent parts. Users can specify objects to extract, filter by type, and decompress streams for further inspection, making it a critical tool for threat intelligence and incident response.


title: CAVEATS
content:
<i>pdf-parser</i> is primarily a Python script, requiring a functional Python environment to run.<br>Effective use often requires a basic understanding of PDF document structure due to its low-level nature.<br>It focuses on structural and content analysis and does not render the PDF's visual appearance.<br>Processing very large, complex, or heavily obfuscated PDFs can be resource-intensive or slow.


title: PURPOSE IN SECURITY ANALYSIS
content:
<i>pdf-parser</i> is critical in digital forensics and incident response for dissecting suspicious PDF files. It helps identify obfuscated content, extract embedded objects (like JavaScript or executables), and analyze potential exploits or malware hidden within the document structure, which is crucial for threat intelligence.


title: EXTENSIBILITY
content:
Being a command-line utility implemented in Python, <i>pdf-parser</i> is highly extensible. Experienced users can easily inspect or modify its source code to tailor its functionality for specific, complex analysis tasks or integrate it into larger automated security analysis workflows.


title: HISTORY
content:
Developed by Didier Stevens, a prominent security researcher, <i>pdf-parser</i> is an integral part of his suite of open-source security tools. Written in Python, it has been actively maintained and widely adopted by the security community since its inception for deep PDF analysis due to its flexibility and low-level insight into document internals.


title: PARAMETERS
content:
<b><i>input.pdf</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input PDF file that <b>pdf2dsc</b> will describe for printing.<br><br><b><i>output.dsc</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path for the generated PostScript Document Structuring Conventions (DSC) output file.<br><br><b><b>-dFirstPage=<i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the first page number from the PDF to include in the DSC output. Pages are 1-indexed.<br><br><b><b>-dLastPage=<i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last page number from the PDF to include in the DSC output. Pages are 1-indexed.<br><br><b><b>-dDSCPageNumber=<i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the starting page number for the PostScript interpreter within the generated DSC file. Default is 1.<br><br><b><b>-sDSCEncoding=<i>encoding</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the character encoding to use for the DSC comments within the output file. Default is typically <i>ISO-8859-1</i>.<br><br><b><b>-dQUIET</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses informational messages and warnings that might otherwise be printed to standard output.<br><br><b><b>-dNOPAUSE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the PostScript interpreter from pausing between pages during printing. Useful for unattended operations.<br><br>


title: DESCRIPTION
content:
The <b>pdf2dsc</b> command creates a small PostScript file (<i>output.dsc</i>) designed to describe how to print a given PDF file (<i>input.pdf</i>). This generated DSC file contains PostScript Document Structuring Conventions (DSC) comments and setup commands that instruct a PostScript printer to retrieve and render the content directly from the original PDF file. It does not embed the PDF content itself.<br><br>This method is efficient because the DSC file is significantly smaller than a full PostScript conversion of the PDF, enabling faster transmission to the printer. However, it crucially requires the printer to have direct access to the original <i>input.pdf</i> file (e.g., in the same directory or a specified path). It is primarily intended for PostScript printers with built-in PDF interpreters (like PostScript Level 3 devices). If the printer does not support direct PDF interpretation, sending <i>output.dsc</i> will likely result in an error or incorrect printing. Essentially, <b>pdf2dsc</b> leverages Ghostscript to extract PDF structural information for direct referencing by the printer.


title: CAVEATS
content:
The <i>output.dsc</i> file generated by <b>pdf2dsc</b> does not contain the actual PDF content; it only contains instructions for a printer. Therefore, the target PostScript printer must have direct access to the original <i>input.pdf</i> file (e.g., located in the same directory as the DSC file, or accessible via a network path).<br><br>This command is specifically designed for PostScript printers that possess built-in PDF interpreters (e.g., PostScript Level 3 and higher devices). If the printer does not support direct PDF interpretation, sending the <i>output.dsc</i> file will likely result in printing errors or no output at all. Always verify the printer's capabilities before relying on <b>pdf2dsc</b>.


title: HISTORY
content:
<b>pdf2dsc</b> is typically distributed as part of the Ghostscript project, a widely used interpreter for PostScript and PDF. Its development arose from the need for efficient PDF printing solutions, particularly for devices capable of processing PDF content directly. It provides a lightweight method to initiate PDF printing jobs by leveraging the printer's native capabilities, avoiding a full PostScript conversion and streamlining the print workflow.


title: SYNOPSIS
content:
<b>pdf2ps</b> [<i>gs_options</i>] <i>input.pdf output.ps</i><br><i>Note: All `gs_options` are passed directly to the underlying `gs` (Ghostscript) command.</i>


title: PARAMETERS
content:
<b>-r<i><resolution></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output resolution for the PostScript file in DPI (dots per inch). For example, <i>-r300</i> sets the resolution to 300 DPI.<br><br><b>-dCompatibilityLevel=<i><level></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the PostScript language level for the output file. Common values are <i>1.0</i>, <i>2.0</i>, or <i>3.0</i>. Higher levels support more advanced PostScript features.<br><br><b>-dProcessColorModel=<i><model></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the color model for processing. Examples include <i>/DeviceRGB</i>, <i>/DeviceCMYK</i>, or <i>/DeviceGray</i>.<br><br><b>-dNOCACHE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents Ghostscript from caching objects, which can sometimes resolve issues with complex documents but may increase processing time.<br><br><b>-dFIXEDMEDIA</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures that the output media size is fixed to the document's original size, preventing scaling or resizing by the printer or viewer.<br><br><b><i>input.pdf</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input PDF file to be converted.<br><br><b><i>output.ps</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the converted PostScript file will be saved.<br><br>


title: DESCRIPTION
content:
<b>pdf2ps</b> is a command-line utility that converts a Portable Document Format (PDF) file into a PostScript (PS) file. It acts as a convenient wrapper script around the powerful <b>gs</b> (Ghostscript) interpreter. When <b>pdf2ps</b> is invoked, it essentially calls <b>gs</b> with specific arguments tailored for PDF to PS conversion, typically using the <i>ps2write</i> device or similar PostScript output devices.<br><br>This tool is valuable for tasks requiring PostScript input, such as printing to older PostScript printers, embedding documents into larger PostScript workflows, or manipulating document content using PostScript-specific tools. Users can pass various Ghostscript options through <b>pdf2ps</b> to control aspects like resolution, color model, and PostScript compatibility level of the output.


title: CAVEATS
content:
<ul><li><b>pdf2ps</b> relies entirely on Ghostscript. Its capabilities and limitations are those of the <b>gs</b> command.</li><li>Complex PDF features (e.g., transparency, certain PDF/X features, interactive elements) may not convert perfectly to PostScript, especially older PostScript levels.</li><li>Fonts might be substituted or converted to outlines if they are not embedded or available on the system.</li><li>The resulting PostScript file can sometimes be very large, especially for high-resolution output or documents with many images.</li></ul>


title: UNDERLYING MECHANISM
content:
<b>pdf2ps</b> is typically a shell script that constructs and executes a <b>gs</b> (Ghostscript) command. It sets default parameters like the output device (e.g., <i>ps2write</i> or <i>pswrite</i>) and then passes any user-specified options directly to <b>gs</b>. This means that for advanced control, understanding <b>gs</b> options is beneficial.


title: HISTORY
content:
<b>pdf2ps</b> has been a standard utility provided as part of the Ghostscript distribution for many years. It serves as a convenient script to expose the PDF to PostScript conversion capabilities of <b>gs</b> in a user-friendly manner, abstracting away some of the direct Ghostscript command-line complexities for this specific task.


title: PARAMETERS
content:
<b><b>--hires</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <i>HiResBoundingBox</i> for more precise cropping, if available in the PDF.<br><br><b><b>--margins</b> <i>&lt;left&gt; &lt;top&gt; &lt;right&gt; &lt;bottom&gt;</i> | <i>&lt;all&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add extra margins around the detected bounding box. Values can be absolute (e.g., `10pt`) or a single value for all sides.<br><br><b><b>--output-file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output filename. By default, `pdfcrop` appends <i>-crop</i> to the input filename.<br><br><b><b>--output-dir</b> <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an output directory for the cropped PDF.<br><br><b><b>--pages</b> <i>&lt;range&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Process only the specified page range (e.g., `1-5`, `odd`, `all`).<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information during processing, including detected bounding box coordinates.<br><br><b><b>--restricted</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assume a restricted `\write18` shell escape, forcing the use of <i>Ghostscript</i> for bounding box detection instead of <i>pdfinfo</i>/<i>pdffonts</i>.<br><br><b><b>--no-clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not remove temporary files created during the cropping process. Useful for debugging.<br><br>


title: DESCRIPTION
content:
<b>pdfcrop</b> is a Perl script that automatically detects the bounding box of a PDF file and crops the document to fit its content. It leverages <i>Ghostscript</i> (or <i>pdfTeX</i>'s <i>pdfinfo</i> and <i>pdffonts</i> utilities) for bounding box detection and <i>pdflatex</i> for the actual cropping. This command is extremely useful for removing unnecessary white margins around content, often generated by <i>LaTeX</i>, scanners, or other PDF creation tools, making documents more compact and suitable for embedding or viewing on smaller screens. It can process individual files and offers options for adding extra margins, fixing bad bounding boxes, or handling specific page ranges. It's commonly part of the TeX Live utility suite.


title: CAVEATS
content:
<b>pdfcrop</b> relies on external tools like <i>Ghostscript</i> and <i>pdfTeX</i> (specifically <i>pdflatex</i>, <i>pdfinfo</i>, <i>pdffonts</i>) to function. <br>It might struggle with certain complex PDFs where the bounding box detection is ambiguous or the content is difficult to parse (e.g., scans with background noise). <br>For very large or numerous PDF files, the processing can be computationally intensive as it involves regenerating the PDF. <br>It's important to note that <b>pdfcrop</b> is designed solely for whitespace cropping and is not a general-purpose PDF editor.


title: HOW IT WORKS
content:
<b>pdfcrop</b> operates in two main steps: <br>1. <i>Bounding Box Detection</i>: It uses either <i>Ghostscript</i> (via `gs`) or <i>pdfTeX</i> utilities (`pdfinfo`, `pdffonts`) to analyze the PDF and determine the precise bounding box of the content. <br>2. <i>PDF Regeneration</i>: Once the bounding box is found, it generates a small <i>LaTeX</i> file that includes the original PDF, instructs <i>pdflatex</i> to crop it to the calculated dimensions, and then processes this <i>LaTeX</i> file to create the new, cropped PDF.


title: OUTPUT NAMING CONVENTION
content:
By default, if no output filename is specified, <b>pdfcrop</b> creates a new PDF file by appending <i>-crop</i> to the original input filename (e.g., `document.pdf` becomes `document-crop.pdf`). This can be overridden using the <b>--output-file</b> option.


title: HISTORY
content:
<b>pdfcrop</b> is a Perl script that emerged as a practical solution within the <i>TeX Live</i> distribution to address the pervasive issue of excessive white margins in PDFs, particularly those generated by <i>LaTeX</i>. Its development aimed to automate the often tedious manual cropping process. Over time, it has evolved to include more robust bounding box detection, better control over margins, and improved handling of diverse PDF structures, making it a widely used tool for optimizing PDF documents.


title: SYNOPSIS
content:
<b>pdfdetach</b> [<i>options</i>] <i>&lt;PDF-file&gt;</i><br>Common options include listing attachments, saving all, or saving a specific attachment.


title: PARAMETERS
content:
<b>-list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the names and sizes of all embedded files in the specified PDF document.<br><br><b>-saveall</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves all embedded files found in the PDF to the specified output directory or the current working directory if no output directory is given.<br><br><b>-save <I>file_number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the embedded file corresponding to the given <I>file_number</I> (obtained from the <I>-list</I> output) to the specified output directory or current directory.<br><br><b>-o <I>output_dir</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the target directory where extracted files will be saved. If omitted, files are saved in the current directory.<br><br><b><I>PDF-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input PDF document from which attachments are to be extracted.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the copyright and version information for <I>pdfdetach</I>.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a concise usage summary and available options.<br><br>


title: DESCRIPTION
content:
<b>pdfdetach</b> is a command-line utility provided as part of the <I>Poppler</I> PDF rendering library. Its primary function is to extract embedded file attachments from <I>Portable Document Format</I> (PDF) files. These attachments can be any type of file (e.g., documents, spreadsheets, images, archives) that have been embedded within the PDF by its creator. The command allows users to first list all embedded files, showing their names and sizes, and then to extract selected or all of these attachments to the local filesystem. This tool is invaluable for automated processing of PDF documents that serve as containers for other data, enabling programmatic access to their internal components without requiring a graphical PDF viewer. It supports various options for specifying an output directory and precise extraction by attachment index.


title: CAVEATS
content:
<b>pdfdetach</b> specifically targets <I>embedded file attachments</I> and does not extract other types of content such as images embedded within pages, text, or multimedia streams that are not file attachments. Extracted filenames are derived from the PDF's internal metadata, which may sometimes be generic or require sanitization for use on certain filesystems. It's a command-line tool, so selecting specific attachments requires knowing their index from a prior <I>-list</I> operation.


title: OUTPUT FILENAME GENERATION
content:
When extracting files, <b>pdfdetach</b> attempts to use the original filename embedded within the PDF. If an original filename is not available or suitable, it may generate a generic filename, often in the format "<I>attNNNNN.dat</I>", where NNNNN is the attachment's index. Users should inspect the output directory to confirm the generated names.


title: EXIT STATUS
content:
The <I>pdfdetach</I> command typically returns an exit status of 0 upon successful execution. A non-zero exit status indicates an error, such as a problem opening the PDF file, an invalid option, or an issue during extraction. This allows for its integration into shell scripts for error handling.


title: HISTORY
content:
<b>pdfdetach</b> is part of the <I>Poppler</I> utilities suite, which originated as a free software fork of the Xpdf PDF viewer and toolkit in 2005. Poppler aimed to provide better support for free software environments and continuous development. <I>pdfdetach</I> has been a core component of this suite since its early days, providing essential functionality for programmatic interaction with PDF file attachments, crucial for automated document processing workflows.


title: PARAMETERS
content:
<b><I>file.pdf</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a PDF document to be opened for editing upon application launch. If no file is provided, <i>pdfedit</i> will open with an empty canvas, allowing the user to open a file through its graphical interface.<br><br>


title: DESCRIPTION
content:
<i>pdfedit</i> is a free, open-source graphical user interface (GUI) application designed for editing PDF documents on Linux and Unix-like operating systems. Built using the Qt toolkit, it provides tools to modify existing PDF files, including editing text, manipulating images, and rearranging pages. Unlike command-line utilities that process PDFs programmatically, <i>pdfedit</i> offers a visual environment for direct interaction with PDF content, allowing users to make changes without complex syntax.<br><br>While ambitious in its scope, its development has largely ceased, and it may not be available or fully functional on modern distributions. It aims to offer comprehensive editing capabilities, but its age can lead to compatibility issues with newer PDF standards or operating system environments.


title: CAVEATS
content:
<i>pdfedit</i> is primarily a GUI application, and most of its functionality is accessed through its graphical interface rather than command-line arguments. It is considered an older and largely unmaintained project, meaning it may lack compatibility with newer PDF standards, exhibit stability issues on modern systems, or be difficult to install on contemporary Linux distributions. Users seeking robust and actively developed PDF editing solutions might need to explore alternatives.


title: GUI NATURE
content:
It's important to understand that <i>pdfedit</i> is not a command-line utility for script-based PDF processing. Its design focuses on interactive, visual editing, similar to image editors or word processors. Command-line invocation primarily serves to launch the application and optionally load a specific file, with all further interactions occurring within its graphical window.


title: DEVELOPMENT STATUS
content:
As an unmaintained project, users should be aware that <i>pdfedit</i> may not receive updates for bug fixes, security vulnerabilities, or new features. Its reliance on older versions of Qt libraries can also pose installation challenges on newer operating systems, where these dependencies might be deprecated or conflict with newer versions. It may also struggle with complex or newer PDF formats.


title: HISTORY
content:
Development of <i>pdfedit</i> began as a free alternative for PDF manipulation on Linux, aiming to provide a comprehensive GUI editor. It gained some popularity in the late 2000s, often bundled with or available in repositories for distributions of that era. However, active development significantly slowed down and eventually ceased around the early 2010s. Consequently, it has not kept pace with advancements in PDF specifications or modern desktop environments, leading to its current status as a legacy application.


title: PARAMETERS
content:
<b><b>-f</b> <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the first page to examine for fonts.<br><br><b><b>-l</b> <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last page to examine for fonts.<br><br><b><b>-opw</b> <I>password</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the owner password for encrypted PDF files.<br><br><b><b>-upw</b> <I>password</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the user password for encrypted PDF files.<br><br><b><b>-enc</b> <I>encoding</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output text encoding. Common values include <I>UTF-8</I>, <I>Latin1</I>, <I>ASCII7</I>.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the copyright and version information for pdffonts.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of command-line options and usage.<br><br>


title: DESCRIPTION
content:
pdffonts is a command-line utility that inspects PDF (Portable Document Format) files to report information about the fonts used within them. It is part of the Poppler PDF rendering library, which is a widely used open-source successor to the Xpdf project.<br>The command provides a detailed list for each font encountered, including its name, type (e.g., Type 1, TrueType, Type 3, CID), encoding, whether it is embedded directly into the document, if it's a subset of a larger font, and whether it is actually used for rendering text.<br>This tool is invaluable for document professionals, developers, and system administrators who need to debug font-related issues, verify font embedding compliance, or simply understand the typographic composition of a PDF document. It helps identify missing fonts, incorrect font subsets, or un-embedded fonts that might cause display or printing problems on different systems.


title: CAVEATS
content:
<I>Incomplete Font Information</I>: pdffonts relies on the font dictionaries embedded in the PDF. If these are malformed or incomplete, the output may not be entirely accurate or complete.<br><I>No Rendering</I>: This tool only inspects the font information within the PDF structure; it does not perform any font rendering itself. Therefore, it cannot detect issues related to font rendering engines or system-level font availability beyond what's specified in the PDF.<br><I>Encrypted Files</I>: Requires appropriate passwords (<b>-opw</b> or <b>-upw</b>) to access font information in encrypted PDF documents.


title: OUTPUT COLUMNS
content:
The output typically includes columns like <I>name</I>, <I>type</I>, <I>encoding</I>, <I>embedded</I>, <I>subset</I>, and <I>used</I>.<br><b>name</b>: The font name as referenced in the PDF.<br><b>type</b>: The font type (e.g., Type 1, TrueType, Type 3, CIDType0, etc.).<br><b>encoding</b>: The character encoding used for the font.<br><b>embedded</b>: 'yes' if the font data is embedded within the PDF, 'no' otherwise.<br><b>subset</b>: 'yes' if only a subset of the font is embedded, 'no' if the full font is embedded.<br><b>used</b>: 'yes' if the font is actually used for text, 'no' if it's merely declared but not used.


title: COMMON USE CASES
content:
<b>Pre-press checks</b>: Verify that all necessary fonts are embedded, ensuring consistent printing.<br><b>Troubleshooting</b>: Diagnose why a PDF looks different on various systems (e.g., missing or substituted fonts).<br><b>Compliance</b>: Check if a PDF adheres to specific archiving standards (e.g., PDF/A requires all fonts to be embedded and not encrypted).


title: HISTORY
content:
pdffonts originated as part of the Xpdf project, developed by Derek Noonburg. Xpdf was one of the first open-source PDF viewers and toolkits. Later, a fork of Xpdf, named Poppler, was created to facilitate more rapid development and integration into desktop environments like GNOME and KDE. pdffonts has been a staple utility in both Xpdf and Poppler distributions, consistently providing robust font analysis capabilities for PDF documents across various Unix-like operating systems. Its development closely tracks the evolution of the PDF specification and the Poppler library.


title: PARAMETERS
content:
<b><b>PATTERN</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The regular expression pattern to search for within the PDF content.<br><br><b><b>FILE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more PDF files to search. If omitted, <i>pdfgrep</i> reads from standard input (e.g., piped output from another command).<br><br><b><b>-i</b>, <b>--ignore-case</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore case distinctions in the pattern and input data.<br><br><b><b>-n</b>, <b>--page-number</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prefix each match with the page number where it was found.<br><br><b><b>-H</b>, <b>--with-filename</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the filename for each match (default when multiple files are given).<br><br><b><b>-h</b>, <b>--no-filename</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress the prefixing of filenames on output.<br><br><b><b>-c</b>, <b>--count</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only a count of matching lines for each input file.<br><br><b><b>-l</b>, <b>--files-with-matches</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only the names of files that contain at least one match.<br><br><b><b>-L</b>, <b>--files-without-matches</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only the names of files that contain no matches.<br><br><b><b>-r</b>, <b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively search directories specified on the command line.<br><br><b><b>-A NUM</b>, <b>--after-context=NUM</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print NUM lines of trailing context after a match.<br><br><b><b>-B NUM</b>, <b>--before-context=NUM</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print NUM lines of leading context before a match.<br><br><b><b>-C NUM</b>, <b>--context=NUM</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print NUM lines of both leading and trailing context around a match.<br><br><b><b>-o</b>, <b>--only-matching</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.<br><br>


title: DESCRIPTION
content:
<i>pdfgrep</i> is a command-line utility designed to search for regular expression patterns within PDF files. It functions similarly to the well-known <i>grep</i> command, but specifically targets PDF documents by extracting their textual content and then applying the search pattern. This makes it an invaluable tool for quickly finding specific information across multiple PDF files without needing to manually open each one.<br><br><i>pdfgrep</i> supports various <i>grep</i>-like options, including case-insensitive searches, displaying page numbers, recursive directory scanning, and printing only filenames with matches or counts. It leverages underlying PDF text extraction libraries, such as those from the Poppler utilities, to process the PDF content. This means it can only search text that is embedded within the PDF, not text from scanned images unless Optical Character Recognition (OCR) has been applied to the document.


title: CAVEATS
content:
<i>pdfgrep</i> relies on the text layer embedded within PDF documents. It <b>cannot</b> search text that is part of scanned images within a PDF unless Optical Character Recognition (OCR) has already been applied to convert the image text into a searchable text layer.<br><br>Its performance can also vary significantly based on PDF complexity and size. Text extraction quality may differ depending on the PDF's internal structure, fonts, and layout.


title: DEPENDENCIES
content:
<i>pdfgrep</i> typically relies on a PDF rendering library like Poppler (specifically <i>libpoppler</i>) for its text extraction capabilities. Ensure this dependency is met for <i>pdfgrep</i> to function correctly.


title: EXIT STATUS
content:
Like <i>grep</i>, <i>pdfgrep</i> uses exit statuses to indicate the search result: <b>0</b> if lines were selected, <b>1</b> if no lines were selected, and <b>2</b> if an error occurred. This allows for its robust use in scripting.


title: HISTORY
content:
<i>pdfgrep</i> was developed out of the need for a <i>grep</i>-like tool specifically tailored for PDF documents. Before its existence, users often had to convert PDFs to plain text using tools like <i>pdftotext</i> and then <i>grep</i> the resulting text files. <i>pdfgrep</i> automates this process by integrating the text extraction and searching capabilities into a single command, providing a more convenient and efficient workflow for PDF content searching. It was first released in 2009.


title: PARAMETERS
content:
<b><b>-f</b> <i><page_num></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the first page to examine. By default, it's 1.<br><br><b><b>-l</b> <i><page_num></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last page to examine. By default, it's the last page of the document.<br><br><b><b>-opw</b> <i><password></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <i>owner password</i> for encrypted PDF files. This allows access to more restricted information.<br><br><b><b>-upw</b> <i><password></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <i>user password</i> for encrypted PDF files.<br><br><b><b>-box</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the page bounding box information (MediaBox, CropBox, BleedBox, TrimBox, ArtBox) for each page.<br><br><b><b>-enc</b> <i><encoding_name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output text encoding. Use <b>-listenc</b> to see available encodings.<br><br><b><b>-isodates</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints dates in <i>ISO 8601 format</i> (YYYY-MM-DDTHH:MM:SS+-HH:MM).<br><br><b><b>-rawdates</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints dates in the raw string format as stored in the PDF file.<br><br><b><b>-json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the document information in a <i>JSON format</i>. This is particularly useful for programmatic parsing.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the copyright and version information for the <b>pdfinfo</b> utility.<br><br>


title: DESCRIPTION
content:
The <b>pdfinfo</b> command is a utility for extracting various pieces of information about a PDF file.<br>It is part of the <i>Poppler</i> PDF rendering library and provides a command-line interface to inspect PDF metadata.<br>This includes details such as the title, author, subject, keywords, creation and modification dates, page count, page size (media, crop, bleed, trim, art boxes), encryption status, and more.<br>It's an invaluable tool for scripting, document management, or simply quickly checking the properties of a PDF file without opening it in a viewer.<br>Unlike other PDF utilities, <b>pdfinfo</b> is non-destructive; it only reads information from the PDF and does not modify the original document in any way.


title: CAVEATS
content:
<b>pdfinfo</b> requires a valid PDF file. It may behave unexpectedly or fail on malformed or corrupted documents.<br>For encrypted PDFs, the appropriate user or owner password (via <b>-upw</b> or <b>-opw</b>) is necessary to access document information. Without it, only limited details might be available or the command may fail.<br>The amount and type of metadata available depend entirely on what was embedded into the PDF during its creation. Some PDFs may have very sparse information.<br>This command is designed for metadata extraction only; it <i>does not</i> extract the textual content of the PDF. Use <b>pdftotext</b> for that purpose.


title: TYPICAL OUTPUT FIELDS
content:
When run without the <b>-json</b> option, <b>pdfinfo</b> typically outputs fields such as:<br><i>Title</i>, <i>Author</i>, <i>Creator</i>, <i>Producer</i>, <i>CreationDate</i>, <i>ModDate</i>, <i>Tagged</i>, <i>UserProperties</i>, <i>Page size</i>, <i>Page rot</i>, <i>File size</i>, <i>Optimized</i>, <i>PDF version</i>, <i>Encrypted</i>, <i>Page count</i>.


title: USAGE WITH ENCRYPTED FILES
content:
If a PDF file is password-protected, <b>pdfinfo</b> will prompt for a password unless one is provided via the <b>-upw</b> (user password) or <b>-opw</b> (owner password) options. The owner password typically grants more permissions and access to metadata than the user password.


title: HISTORY
content:
<b>pdfinfo</b> originated as part of the <i>Xpdf</i> project, a free PDF viewer and toolkit. Later, the core PDF rendering library and utilities, including <b>pdfinfo</b>, were forked and continued development under the <i>Poppler</i> project.<br>Poppler's goal is to provide a robust, open-source PDF rendering engine and command-line tools for various Linux distributions and applications. The command's functionality has evolved to include modern features like JSON output, reflecting its continued relevance in automated PDF processing.


title: PARAMETERS
content:
<b>--outfile <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the name of the output PDF file. If not provided, a default name will be generated.</i><br><br><b>--nup <nxm></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Arranges multiple logical pages onto a single physical page, creating an N-rows by M-columns grid (e.g., '2x2' for four pages per sheet).</i><br><br><b>--papersize <size></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the paper size for the output document (e.g., 'A4', 'letter', 'legal').</i><br><br><b>--no-landscape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents automatic rotation to landscape orientation, even if the content suggests it.</i><br><br><b>--frame</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Draws a thin frame around each logical page displayed on the output sheet.</i><br><br><b>--trim <L> <B> <R> <T></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Trims the specified margins (Left, Bottom, Right, Top) from each page, given in LaTeX units (e.g., '10mm').</i><br><br><b>--keepinfo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Attempts to retain metadata (like title, author) from the first input PDF file in the generated output.</i><br><br><b>--booklet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Arranges pages in the output PDF specifically for printing as a booklet, suitable for folding and binding.</i><br><br><b>--rotate <angle></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Rotates the content of each page by the specified angle (e.g., '90', '180', '270' degrees clockwise).</i><br><br><b>--batch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Processes multiple input files individually, typically creating a separate output file for each input.</i><br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppresses most of the verbose output messages, showing only critical errors.</i><br><br>


title: DESCRIPTION
content:
<b>pdfjam</b> is a command-line utility designed for versatile manipulation of PDF files. It serves as a user-friendly wrapper around the powerful <i>pdfpages</i> LaTeX package and Ghostscript, abstracting away the complexity of these underlying tools. Its core functionalities include merging multiple PDF files into a single document, arranging multiple logical pages onto a single physical sheet (N-up layout), and creating print-ready booklets. Additionally, <b>pdfjam</b> supports selecting specific pages, rotating content, scaling pages, and adjusting margins. It is highly beneficial for preparing documents for printing, consolidating various reports, or producing handouts from presentations, offering a streamlined interface for common PDF tasks without requiring direct interaction with LaTeX code or intricate Ghostscript commands.


title: CAVEATS
content:
<b>pdfjam</b> relies on a working TeX distribution (specifically <i>pdflatex</i> and the <i>pdfpages</i> package) and Ghostscript (<i>gs</i>) to function. These dependencies must be installed and accessible in the system's PATH. Processing very large or numerous files can be slow due to the overhead of LaTeX compilation. Error messages may sometimes be cryptic, originating from the underlying LaTeX or Ghostscript processes.


title: DEPENDENCIES
content:
For <b>pdfjam</b> to operate correctly, a full TeX distribution (like TeX Live or MiKTeX) must be installed, including the <i>pdflatex</i> command and the <i>pdfpages</i> LaTeX package. Additionally, Ghostscript (<i>gs</i>) is a crucial dependency for various PDF manipulation tasks, and it must also be present and executable on the system.


title: COMMON USE CASES
content:
Beyond simple merging, <b>pdfjam</b> excels at creating handouts by arranging multiple presentation slides per page (e.g., '2x2' or '3x1' layouts). It is also invaluable for preparing large documents for professional printing as booklets, combining reports, or precisely adjusting page layouts and margins for specific print requirements.


title: HISTORY
content:
<b>pdfjam</b> is part of the <i>pdfjam-extras</i> suite of scripts, developed by David J. R. King. It significantly simplifies common PDF manipulations by leveraging the robust capabilities of the <i>pdfpages</i> LaTeX package, created by Martin Scharrer, and Ghostscript. Its development was driven by the goal of providing a convenient command-line interface to these powerful PDF processing tools, making them accessible to users without requiring deep knowledge of LaTeX or PostScript programming. <b>pdfjam</b> is widely distributed as a component of major TeX distributions, such as TeX Live.


title: PARAMETERS
content:
<b>-o <I>outfile</I>, --outfile <I>outfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output PDF file. If not provided, a default name like 'merged.pdf' or based on the first input file is used.<br><br><b>--rotatepages <I>direction</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates all pages in the output PDF by a specified <I>direction</I> (e.g., 90, 180, 270, 'left', 'right', 'down').<br><br><b>--fitpaper</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjusts the paper size of the output document to fit the size of the input pages. Useful for combining PDFs with different dimensions.<br><br><b>--keepinfo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to preserve PDF information such as forms, links, and outlines. Note that <I>LaTeX</I> re-rendering might still affect some properties.<br><br><b>--paper <I>size</I>, --papersize <I>size</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the paper size for the output document (e.g., 'a4paper', 'letterpaper', 'a3', 'a5').<br><br><b>--landscape, --portrait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the output document's orientation to landscape or portrait, overriding default page orientations.<br><br><b>--nup <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Arranges <I>num</I> input pages onto a single output page (N-up imposition). For example, '--nup 2x1' puts two pages side-by-side.<br><br><b>--suffix <I>suffix</I>, --prefix <I>prefix</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a <I>suffix</I> or <I>prefix</I> to the output filename when processing multiple input files or if '--batch' is used.<br><br><b>--parms <I>parameters</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes additional <I>parameters</I> directly to the underlying <I>pdfpages</I> <I>LaTeX</I> package. This offers fine-grained control.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays more detailed information during processing.<br><br><b>--quiet, -q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses most output messages.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information of <I>pdfjoin</I>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command-line options.<br><br>


title: DESCRIPTION
content:
The <b>pdfjoin</b> command is a versatile utility for merging multiple PDF documents into a single output file. Unlike many PDF manipulation tools that directly operate on the PDF structure, <b>pdfjoin</b> leverages the powerful <I>LaTeX</I> typesetting system and its <I>pdfpages</I> package.<br><br>It works by generating a temporary <I>LaTeX</I> document that includes the specified input PDF files, then compiles this document using <I>pdflatex</I> to produce the final merged PDF. This approach allows for advanced features like selecting specific page ranges, rotating pages, scaling content, and even imposing multiple pages onto a single sheet (N-up printing).<br><br>While highly flexible, its reliance on <I>LaTeX</I> means that a full <I>TeX</I> distribution must be installed on the system, and the processing can be slower for very large files or complex operations compared to tools that parse PDF directly.


title: CAVEATS
content:
<b>pdfjoin</b> relies heavily on a working <I>LaTeX</I> installation, specifically the <I>pdflatex</I> compiler and the <I>pdfpages</I> package. Without these, the command will not function. Due to the <I>LaTeX</I> compilation process, it can be significantly slower and more resource-intensive than direct PDF manipulation tools. It may also re-render pages, potentially altering or flattening interactive forms, annotations, and internal/external links, although the <I>--keepinfo</I> option tries to mitigate this. It is generally best suited for merging or re-arranging pages rather than complex PDF editing tasks.


title: UNDERLYING TECHNOLOGY
content:
At its core, <b>pdfjoin</b> is a shell script that dynamically generates a <I>.tex</I> file containing <I>LaTeX</I> commands (primarily using the <I>pdfpages</I> package) to include and arrange the input PDFs. This <I>.tex</I> file is then compiled using <I>pdflatex</I> to produce the final merged PDF. This indirect approach provides immense flexibility for page manipulation but necessitates a full <I>TeX</I> environment.


title: INSTALLATION
content:
<b>pdfjoin</b> is usually installed as part of a <I>TeX Live</I> distribution. On Debian/Ubuntu-based systems, it's typically found in the <I>texlive-extra-utils</I> package (or similar, depending on the distribution). Users need to ensure they have the full <I>TeX</I> environment set up for <I>pdfjoin</I> to function correctly.


title: HISTORY
content:
<b>pdfjoin</b> is a wrapper script that simplifies the use of the <I>pdfpages</I> <I>LaTeX</I> package for command-line PDF merging. It was developed to provide a convenient front-end for users who might not be familiar with <I>LaTeX</I> syntax but want to leverage the powerful PDF capabilities of <I>pdfpages</I>. It is typically distributed as part of the <I>texlive-extra-utils</I> package within the broader <I>TeX Live</I> distribution, evolving alongside the <I>pdfpages</I> package itself.


title: PARAMETERS
content:
<b>[<i>files...</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more input files to be processed. If no files are specified, <i>pdfmom</i> reads from standard input.<br><br><b><b>-e</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <i>eqn</i> preprocessor for typesetting mathematical equations.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <i>pic</i> preprocessor for drawing diagrams.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <i>tbl</i> preprocessor for formatting tables.<br><br><b><b>-R</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <i>refer</i> preprocessor for handling bibliographic references.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the <i>soelim</i> preprocessor for handling `.so` requests (source inclusion).<br><br><b><b>-I</b> <i>dir</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>dir</i> to the search path for files specified with `"` (include) requests.<br><br><b><b>-m</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the macro file <i>name</i>. Although <i>pdfmom</i> implies <i>mom</i>, this can be used for additional macro sets.<br><br><b><b>-r</b> <i>cn</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set number register <i>c</i> to value <i>n</i>.<br><br><b><b>-d</b> <i>cval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define string <i>c</i> as <i>val</i>.<br><br><b><b>-o</b> <i>pages</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output only the specified <i>pages</i>. Pages can be a comma-separated list or ranges (e.g., '1,3-5,7').<br><br><b><b>-z</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress formatted output; primarily used for checking syntax and producing error messages.<br><br><b><b>-P</b> <i>arg</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pass <i>arg</i> directly to the postprocessor (e.g., <i>gs</i> or <i>ps2pdf</i>). Useful for specific PDF output options.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<i>pdfmom</i> is a convenience wrapper script that processes documents written using the <i>groff</i> typesetting system and the <i>mom</i> macro package, directly outputting them as PDF files.<br><br>It streamlines the workflow by automatically invoking <i>groff</i> with the appropriate output device (implicitly `pdf` via `-Tpdf`) and the <i>mom</i> macros (`-mom`), and then piping the generated PostScript output through a PostScript-to-PDF converter (like <i>gs</i> or <i>ps2pdf</i>). This eliminates the need for manual invocation of multiple commands, making it simpler for users to create high-quality PDF documents from their <i>groff mom</i> sources.


title: CAVEATS
content:
<i>pdfmom</i> is a wrapper script, meaning it relies on the correct installation and configuration of underlying tools. Key considerations include:<br><b>groff</b>: It requires a functional <b>groff</b> installation, specifically with the <b>mom</b> macro package installed.<br><b>PDF Converter</b>: A PostScript-to-PDF converter (such as <b>Ghostscript</b>'s <i>gs</i> command or <i>ps2pdf</i>) must be available in the system's PATH.<br><b>Debugging</b>: Debugging issues often requires familiarity with <b>groff</b>'s error messages and general behavior.


title: TYPICAL WORKFLOW
content:
Users typically write their document source in a text editor, incorporating <i>mom</i> macros. The <i>pdfmom</i> command is then run on this source file, producing a PDF output file.<br>For example: <b>pdfmom mydocument.mom > mydocument.pdf</b>


title: DEPENDENCIES
content:
<i>pdfmom</i> relies on:<br><b>groff</b>: The GNU troff document formatting system.<br><b>mom macros</b>: The `mom` macro package for <i>groff</i>.<br><b>PostScript-to-PDF converter</b>: Such as <b>Ghostscript</b> (<i>gs</i>) or <i>ps2pdf</i> (often provided by <i>Ghostscript</i> or TeX Live).


title: HISTORY
content:
The <b>mom</b> macros themselves were developed by Peter Schaffter to provide a more intuitive and powerful way to format documents with <b>troff</b>/<b>groff</b>. As PDF became the standard for document exchange, utility scripts like <i>pdfmom</i> emerged to simplify the process of generating PDF directly from <b>groff</b> sources. <i>pdfmom</i> is part of the <b>groff</b> distribution, reflecting the project's evolution to provide modern output formats for its powerful typesetting capabilities.


title: PARAMETERS
content:
<b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the program's version number and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>-p</b> <i>&lt;papersize&gt;</i>, <b>--pagesize=</b><i>&lt;papersize&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output paper size for each tile. Default is <i>A4</i>. Examples: <i>A3</i>, <i>letter</i>, <i>10cmx15cm</i>.<br><br><b><b>-m</b> <i>&lt;margin&gt;</i>, <b>--margin=</b><i>&lt;margin&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the margin on the output page in <i>mm</i>. Default is <i>0</i>.<br><br><b><b>-s</b> <i>&lt;scale&gt;</i>, <b>--scale=</b><i>&lt;scale&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the scaling factor for the input PDF content. Default is <i>1.0</i>. Example: <i>2.0</i> makes it twice as large.<br><br><b><b>-c</b> <i>&lt;columns&gt;</i>, <b>--columns=</b><i>&lt;columns&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired number of horizontal tile columns.<br><br><b><b>-r</b> <i>&lt;rows&gt;</i>, <b>--rows=</b><i>&lt;rows&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired number of vertical tile rows.<br><br><b><b>-ho</b> <i>&lt;overlap&gt;</i>, <b>--overlapH=</b><i>&lt;overlap&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the overlap between horizontal pages (tiles) in <i>mm</i>. Default is <i>0</i>.<br><br><b><b>-vo</b> <i>&lt;overlap&gt;</i>, <b>--overlapV=</b><i>&lt;overlap&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the overlap between vertical pages (tiles) in <i>mm</i>. Default is <i>0</i>.<br><br><b><b>-wh</b> <i>&lt;width&gt;</i>, <b>--width=</b><i>&lt;width&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target width of the poster in <i>mm</i>. The scaling factor is automatically calculated.<br><br><b><b>-ht</b> <i>&lt;height&gt;</i>, <b>--height=</b><i>&lt;height&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target height of the poster in <i>mm</i>. The scaling factor is automatically calculated.<br><br><b><b>-t</b>, <b>--tile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only tile the input without scaling. Equivalent to <b>--scale=1.0</b>.<br><br><b><b>-O</b> <i>&lt;orientation&gt;</i>, <b>--orientation=</b><i>&lt;orientation&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output page orientation (<i>portrait</i> or <i>landscape</i>). Default is input orientation.<br><br><b><b>-i</b> <i>&lt;input_page&gt;</i>, <b>--page=</b><i>&lt;input_page&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific input page number from the PDF to be posterized. Default is the first page.<br><br><b><b>-e</b> <i>&lt;input_page_even&gt;</i>, <b>--evenpage=</b><i>&lt;input_page_even&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific input even page number.<br><br><b><b>-o</b> <i>&lt;input_page_odd&gt;</i>, <b>--oddpage=</b><i>&lt;input_page_odd&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific input odd page number.<br><br>


title: DESCRIPTION
content:
The <b>pdfposter</b> command is a command-line utility for creating multi-page posters from PDF documents. It takes an input PDF (typically a single page, or a selected page from a multi-page PDF), scales its content up to a desired size, and then divides this enlarged content into multiple "tiles" or pages. Each tile is formatted to be printed on standard paper sizes such as A4 or Letter, making it possible to print very large documents on a regular desktop printer.<br><br>Users can control various aspects of the output, including the scaling factor, target width or height, output paper size, margins around the content on each tile, and optional overlap between adjacent tiles to facilitate easier assembly of the final poster. It's an invaluable tool for printing large diagrams, architectural plans, maps, or images that exceed the dimensions of a single sheet of paper, effectively turning a standard printer into a large-format plotter for posters.


title: CAVEATS
content:
<b>pdfposter</b> primarily works with the first page of a multi-page PDF by default, unless a specific page is selected using <b>-i</b>, <b>-e</b>, or <b>-o</b>. It relies on Python libraries such as <i>PyPDF2</i> (or <i>pypdf</i>) and <i>ReportLab</i>, which must be installed on the system. Encrypted PDF files are generally not supported.


title: DEPENDENCIES
content:
To function correctly, <b>pdfposter</b> requires specific Python libraries to be installed, notably <i>PyPDF2</i> (or its successor <i>pypdf</i>) for reading and parsing PDF files, and the <i>ReportLab Toolkit</i> for generating the new tiled PDF output.


title: USAGE EXAMPLES
content:
<ul><li>To scale a PDF by a factor of 2: <br><code><b>pdfposter -s 2.0 input.pdf output_poster.pdf</b></code></li><li>To create a poster 1 meter wide, on A3 paper, with 10mm margins and 5mm horizontal overlap: <br><code><b>pdfposter --width 1000mm -p A3 -m 10 -ho 5 input.pdf output_poster.pdf</b></code></li><li>To tile an existing PDF without scaling on Letter size paper: <br><code><b>pdfposter --tile -p Letter input.pdf output_tiled.pdf</b></code></li></ul>


title: HISTORY
content:
<b>pdfposter</b> is a Python-based utility, often found in Linux distributions as a community-contributed script. Its development leverages powerful Python libraries for PDF manipulation (like PyPDF2/pypdf) and generation (ReportLab), making it a flexible and widely available tool for this specific use case since its initial conception.


title: PARAMETERS
content:
<b>--title=<I>TITLE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the document title in the PDF metadata.<br><br><b>--author=<I>AUTHOR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the document author in the PDF metadata.<br><br><b>--subject=<I>SUBJECT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the document subject in the PDF metadata.<br><br><b>--keywords=<I>KEYWORDS</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets document keywords in the PDF metadata.<br><br><b>--url-color=<I>COLOR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color for URL links within the PDF.<br><br><b>--link-color=<I>COLOR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the color for internal links (e.g., cross-references, table of contents) within the PDF.<br><br><b>-o <I>pages</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the specified pages (e.g., <B>1-5,7</B>).<br><br><b>-Z</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables <I>groff</I>'s safe mode, disabling certain unsafe commands that could read/write files or execute external programs.<br><br><b>-pS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables automatic PDF mark and link generation, crucial for clickable links and bookmarks (table of contents).<br><br><b>-m <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends the macro file <I>name</I>.tmac to the list of input files, often used for specific document styles.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preprocesses the input with <I>eqn</I> for handling mathematical equations.<br><br><b>-t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preprocesses the input with <I>tbl</I> for handling tables.<br><br><b>--no-<I>preprocessor</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables automatic invocation of a specific preprocessor (e.g., <B>--no-refer</B>, <B>--no-tbl</B>).<br><br>


title: DESCRIPTION
content:
<I>pdfroff</I> is a wrapper script that processes <I>groff</I> input files and generates PDF output. It transparently invokes <I>groff</I> with the <B>-Tpdf</B> device, handling various preprocessors like <I>refer</I>, <I>tbl</I>, and <I>eqn</I> automatically. The command is designed to simplify the creation of PDF documents from <I>roff</I> source, providing built-in support for features such as table of contents generation, automatic page numbering, and PDF-specific metadata like titles and authors. It's a convenient tool for converting documentation written in <I>roff</I> markup into a widely viewable PDF format, ensuring proper handling of links and other PDF-specific features.


title: CAVEATS
content:
<I>pdfroff</I> relies on the underlying <I>groff</I> and a PDF rendering backend (like <I>ghostscript</I>) being correctly installed and configured. Output quality and specific features might depend on the <I>groff</I> version and the configured PDF device. For highly complex layouts or interactive PDF features like form fields, direct use of other specialized PDF generation tools might be necessary.


title: AUTOMATIC PREPROCESSORS
content:
<I>pdfroff</I> automatically invokes standard <I>groff</I> preprocessors like <I>refer</I> (for citations), <I>tbl</I> (for tables), <I>eqn</I> (for equations), <I>pic</I> (for pictures), <I>grap</I> (for graphs), <I>grn</I> (for <I>gremlin</I> pictures), <I>chem</I> (for chemical diagrams), and <I>gcode</I> (for code listings). This behavior simplifies the workflow but can be overridden using the <B>--no-<I>preprocessor</I></B> options if specific preprocessors are not desired or cause issues.


title: PDF METADATA AND LINKS
content:
The command allows setting various PDF metadata fields directly from the command line, such as title, author, subject, and keywords. This is particularly useful for document management, searchability, and accessibility. Furthermore, with the <B>-pS</B> option, <I>pdfroff</I> can generate clickable hyperlinks and bookmarks within the PDF document, significantly enhancing navigability. It also allows customizing the colors for URL and internal links.


title: HISTORY
content:
<I>pdfroff</I> is part of the GNU <I>roff</I> (<I>groff</I>) typesetting system, which is a free software implementation of the classic <I>roff</I> text formatter. <I>Groff</I> was originally developed by James Clark. The <B>-Tpdf</B> device and subsequently <I>pdfroff</I> were added to <I>groff</I> to provide native PDF output capabilities. This evolution allowed users to generate modern, widely viewable PDF documents directly from <I>roff</I> source files, moving beyond earlier PostScript-centric workflows (like <I>psroff</I>) and simplifying document conversion.


title: SYNOPSIS
content:
<b>pdftex</b> [<i>OPTION</i>]... [<i>TEXFILE</i>|<br>]<br>or <br><b>pdftex</b> [<i>OPTION</i>]... <i>\COMMANDS</i><br>The command typically takes a TeX source file as an argument. If no file is specified, it enters interactive mode.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>--output-directory=<i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write output files (PDF, log, aux) to <i>DIR</i>.<br><br><b>--jobname=<i>NAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <i>NAME</i> for output file names instead of the input file's base name.<br><br><b>--fmt=<i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use <i>FORMAT</i> as the name of the format file to be preloaded.<br><br><b>--interaction=<i>MODE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the interaction mode (e.g., <i>batchmode</i>, <i>nonstopmode</i>, <i>scrollmode</i>, <i>errorstopmode</i>).<br><br><b>--shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable `\write18` (shell escape) command, allowing TeX to execute external commands. Use with caution.<br><br><b>--no-shell-escape</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable `\write18` (shell escape) command. This is often the default for security reasons.<br><br><b>--file-line-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print error messages in the format `file:line:error`.<br><br><b>--halt-on-error</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exit with an error code upon the first error encountered during processing.<br><br><b>--include-directory=<i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add <i>DIR</i> to the search path for input files.<br><br><b>--kpathsea-debug=<i>VALUE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set Kpathsea debugging flags.<br><br>


title: DESCRIPTION
content:
<b>pdftex</b> is the core program that compiles TeX source files directly into PDF documents. Developed by <i>Hàn Thế Thành</i>, it is an extension of the original TeX engine by Donald Knuth, specifically designed to produce PDF output without an intermediate DVI file. It reads TeX (or LaTeX, ConTeXt, etc.) source code and typesets it, handling fonts, layout, and graphics inclusion, finally writing the typeset document as a PDF file. <br><br>While <b>pdftex</b> is the underlying engine, users commonly interact with it via format-specific wrappers like <i>pdflatex</i> or <i>pdfetex</i>, which load pre-compiled TeX formats (like LaTeX) before invoking the <b>pdftex</b> engine. <b>pdftex</b> offers enhanced graphics capabilities, direct embedding of PostScript and TrueType fonts, and various PDF features. It's a fundamental component of modern TeX distributions like TeX Live and MiKTeX.


title: CAVEATS
content:
<i>--shell-escape</i> poses a <b>security risk</b> as it allows arbitrary external commands to be executed during compilation. It should be used with caution, especially when processing untrusted TeX files.<br><br>Memory limits: <b>pdftex</b> has internal memory limits (e.g., `main_memory`, `extra_mem_bot`) that can be exceeded by very complex documents or large fonts, leading to "TeX capacity exceeded" errors. These limits can often be configured in `texmf.cnf`.<br><br>Multiple passes: Many LaTeX documents, especially those with cross-references, bibliographies, or indices, require multiple <b>pdftex</b> runs (e.g., `pdflatex file.tex`, `bibtex file.aux`, `pdflatex file.tex`, `pdflatex file.tex`) to resolve all references and ensure correct output.


title: ENGINE VS. FORMAT
content:
<i>pdftex</i> is the <i>engine</i> (the program that does the actual typesetting). <i>pdflatex</i> is a script or wrapper that calls the <i>pdftex</i> engine with the LaTeX <i>format</i> preloaded. Similarly, <i>pdfetex</i> is an extended version of the <i>pdftex</i> engine, offering more primitives.


title: KPATHSEA
content:
<i>pdftex</i> relies heavily on the <i>Kpathsea</i> library for searching files (TeX sources, fonts, style files, etc.) within the TeX Directory Structure (TDS). This library handles the complex logic of finding required files based on environment variables and configuration files like `texmf.cnf`.


title: HISTORY
content:
<b>pdftex</b> was developed by <i>Hàn Thế Thành</i> as part of his PhD thesis (1999-2001) at Masaryk University. It aimed to provide a direct path from TeX source to PDF output, bypassing the intermediate DVI format and addressing limitations of older methods like `dvips` + `ps2pdf`. <br><br>It became an integral part of the `web2c` distribution (a port of TeX to C) and was quickly adopted as the default engine for PDF generation in major TeX distributions like TeX Live and MiKTeX. Its introduction significantly simplified the workflow for creating high-quality PDF documents from TeX sources and laid the groundwork for further TeX engine developments like XeTeX and LuaTeX.


title: PARAMETERS
content:
<b><I>-f &lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the first page to convert.<br><br><b><I>-l &lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last page to convert.<br><br><b><I>-scale-to-x &lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the output image to a fixed width of &lt;int&gt; pixels. Height is adjusted proportionally.<br><br><b><I>-scale-to-y &lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the output image to a fixed height of &lt;int&gt; pixels. Width is adjusted proportionally.<br><br><b><I>-scale-to &lt;int&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the output image so that its largest dimension (width or height) is &lt;int&gt; pixels.<br><br><b><I>-r &lt;fp&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X and Y resolution, in DPI. Default is 150 DPI for image output.<br><br><b><I>-rx &lt;fp&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the X resolution, in DPI.<br><br><b><I>-ry &lt;fp&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Y resolution, in DPI.<br><br><b><I>-cropbox</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the PDF's crop box rather than the media box to determine the page size.<br><br><b><I>-mono</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a monochrome (1-bit) image output (PNG, TIFF).<br><br><b><I>-gray</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate a grayscale image output (PNG, TIFF).<br><br><b><I>-jpeg</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate JPEG image output.<br><br><b><I>-jpegopt &lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set JPEG options, e.g., <I>quality=80</I> or <I>optimize=true</I>.<br><br><b><I>-png</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate PNG image output.<br><br><b><I>-tiff</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate TIFF image output.<br><br><b><I>-tiffcompression &lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set TIFF compression, e.g., <I>lzw</I>, <I>jpeg</I>, <I>zip</I>, <I>ccittfax4</I>.<br><br><b><I>-ps</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate PostScript output.<br><br><b><I>-eps</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate Encapsulated PostScript (EPS) output. Implies <I>-ps</I>.<br><br><b><I>-svg</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generate Scalable Vector Graphics (SVG) output.<br><br><b><I>-matte &lt;color&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the background color for transparent images. Color can be hex (e.g., <I>#RRGGBB</I>), or a named color.<br><br><b><I>-q</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't print any messages or errors.<br><br><b><I>-v</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print copyright and version information.<br><br>


title: DESCRIPTION
content:
<B>pdftocairo</B> is a utility that converts Portable Document Format (PDF) files into various high-quality image and vector formats, leveraging the <I>Cairo graphics library</I> for rendering. It is part of the <B>poppler-utils</B> package, which provides a suite of command-line tools for working with PDF documents.<br><br>Unlike some other PDF conversion tools, <B>pdftocairo</B> stands out for its superior rendering quality, particularly due to Cairo's advanced anti-aliasing and subpixel rendering capabilities, which result in crisp text and smooth graphics. It supports a wide range of output formats including <B>PNG</B>, <B>JPEG</B>, <B>TIFF</B> for raster images, and <B>PostScript (PS)</B>, <B>Encapsulated PostScript (EPS)</B>, and <B>Scalable Vector Graphics (SVG)</B> for vector-based output.<br><br>Users can control various aspects of the conversion process, such as resolution, page range, cropping, image compression, and output color space (monochrome, grayscale, color). This flexibility makes <B>pdftocairo</B> an indispensable tool for tasks like generating high-resolution thumbnails, preparing documents for web display, or creating print-ready vector graphics from PDF sources.


title: CAVEATS
content:
While <B>pdftocairo</B> offers high-quality output, its rendering speed might be slower for very complex or large PDF documents compared to less feature-rich converters. For PostScript/EPS output, ensuring fonts are available on the system or properly embedded in the PDF is crucial for accurate rendering, as font substitution might occur otherwise.<br><br>Not all PDF features (e.g., certain transparency modes) may be perfectly represented in all output formats, particularly older PostScript language levels.


title: OUTPUT FILE NAMING
content:
When the <I>&lt;output-file&gt;</I> argument is omitted, <B>pdftocairo</B> automatically names the output file(s) based on the input PDF file name and the chosen output format. For multi-page image formats (PNG, JPEG, TIFF), it appends the page number (e.g., <I>document-0001.png</I>, <I>document-0002.png</I>). For single-page output like PS, EPS, or SVG, it creates a single file. If <I>&lt;output-file&gt;</I> is specified as <I>-</I> (dash), the output will be written to standard output (stdout).


title: CAIRO LIBRARY INTEGRATION
content:
The command's name, <B>pdftocairo</B>, directly references its reliance on the <I>Cairo graphics library</I>. Cairo is a 2D graphics library with support for various output devices. Its integration allows <B>pdftocairo</B> to produce high-quality, anti-aliased renderings of PDF content, which is a key differentiator from other conversion tools that might use simpler or less visually refined rendering engines.


title: HISTORY
content:
<B>pdftocairo</B> emerged as a crucial component within the <B>Poppler</B> PDF rendering library ecosystem. Poppler itself is a fork of <B>Xpdf</B>, initiated to provide an open-source, robust, and feature-rich PDF viewer and toolkit. The integration of the <I>Cairo graphics library</I> into Poppler, and subsequently the creation of <B>pdftocairo</B>, marked a significant advancement in output quality.<br><br>Before <B>pdftocairo</B>, tools like <B>pdftoppm</B> were commonly used for raster conversions. However, Cairo's sophisticated rendering engine offered superior anti-aliasing and color handling, leading to visually sharper and more accurate conversions, especially for text and vector elements. This made <B>pdftocairo</B> the preferred choice for scenarios requiring high-fidelity image or vector output from PDFs, solidifying its place as a standard utility in Linux distributions.


title: PARAMETERS
content:
<b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information and exits.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number and exits.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a single HTML file output, combining all pages into one continuous document.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a separate Cascading Style Sheet (CSS) file to define the document's appearance.<br><br><b><b>-noframes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces HTML output without frames, useful for simpler single-page documents or direct embedding.<br><br><b><b>-zoom <i>&lt;factor&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the zoom factor for the HTML output. For example, <b>-zoom 1.5</b> for 150%.<br><br><b><b>-f <i>&lt;page&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the first page to convert.<br><br><b><b>-l <i>&lt;page&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the last page to convert.<br><br><b><b>-o <i>&lt;dir&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output directory for the HTML file, images, and CSS.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores images in the PDF when converting, resulting in text-only HTML.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows page numbers at the top of each page in the HTML output.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs in quiet mode, suppressing error and warning messages.<br><br><b><b>-enc <i>&lt;encoding&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the text encoding to use for the HTML output (e.g., <b>UTF-8</b>).<br><br>


title: DESCRIPTION
content:
<b>pdftohtml</b> is a utility that converts Portable Document Format (PDF) files into HyperText Markup Language (HTML). It aims to preserve the visual layout, text, and images of the original PDF document as closely as possible within the web browser environment. This tool is part of the <i>poppler-utils</i> package (or <i>xpdf-utils</i> in older distributions) and is commonly used for making PDF content accessible on the web without requiring a PDF viewer.<br><br>It generates HTML files, often accompanied by CSS stylesheets and image files, to reconstruct the document's appearance. While it strives for accuracy, the complexity of PDF layouts can sometimes lead to minor rendering differences or less semantic HTML in the resulting output.


title: CAVEATS
content:
<b>pdftohtml</b> is generally effective, but converting complex PDF layouts to HTML can present challenges. Fidelity may vary, especially with intricate formatting, non-standard fonts, or highly graphical documents. The resulting HTML and CSS can sometimes be verbose or less semantic than hand-coded web pages, potentially impacting SEO or accessibility without further refinement. Images are typically extracted and linked, which can increase the number of files generated.


title: OUTPUT STRUCTURE
content:
By default, <b>pdftohtml</b> creates an HTML file for each page and an <i>index.html</i> with frames. Using the <b>-s</b> option generates a single HTML file for the entire document, which is often preferred for simpler embedding or easier sharing. The <b>-noframes</b> option also produces a single HTML page without the frame structure, making it a good choice for direct embedding.


title: IMAGE EXTRACTION
content:
<b>pdftohtml</b> extracts images from the PDF and saves them as separate files (e.g., JPG, PNG, GIF) in a subdirectory alongside the HTML output. These images are then referenced in the generated HTML. The <b>-i</b> option can be used to skip image extraction if only text content is desired, potentially speeding up conversion and reducing output file count.


title: HISTORY
content:
<b>pdftohtml</b> originated as part of the <i>Xpdf</i> project, an open-source PDF viewer and toolkit developed by Glyph & Cog. Over time, the core rendering library and utilities, including <b>pdftohtml</b>, were spun off into the <i>Poppler</i> library and its associated <i>poppler-utils</i>. This separation allowed <i>Poppler</i> to be widely adopted by various open-source projects for PDF rendering and manipulation, making <b>pdftohtml</b> a standard utility for PDF-to-HTML conversion on Linux and other Unix-like systems.


title: PARAMETERS
content:
<b><b>-f</b> <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>first page</i> to convert.<br><br><b><b>-l</b> <i>&lt;int&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <i>last page</i> to convert.<br><br><b><b>-layout</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Maintains the <i>original physical layout</i> of the text on the page, useful for human readability.<br><br><b><b>-raw</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps text in <i>raw reading order</i>, ignoring columns and text boxes. Less readable, but can be useful for some automation.<br><br><b><b>-nopgbrk</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses page breaks (form feeds) between pages in the output text file.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all error and warning messages.<br><br><b><b>-opw</b> <i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <i>owner password</i> for encrypted PDF files.<br><br><b><b>-upw</b> <i>&lt;password&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the <i>user password</i> for encrypted PDF files.<br><br><b><b>-enc</b> <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>output text encoding</i> (e.g., 'UTF-8', 'Latin1'). Defaults to 'UTF-8'.<br><br><b><b>-eol</b> <i>&lt;convention&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>end-of-line convention</i>: 'unix' (LF), 'dos' (CRLF), or 'mac' (CR).<br><br><b><b>-r</b> <i>&lt;float&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the desired <i>resolution</i> for text extraction. Can improve accuracy with certain fonts.<br><br>


title: DESCRIPTION
content:
The <b>pdftotext</b> command is a fundamental utility within the Poppler/Xpdf suite, specifically designed to extract plain text from Portable Document Format (PDF) files. It processes a PDF document and outputs its textual content to a specified output file or standard output. This tool is invaluable for a wide array of applications, including:<br><br>•  <i>Data extraction:</i> For programmatic processing or analysis of document content.<br>•  <i>Indexing:</i> Preparing PDF text for search engines or document management systems.<br>•  <i>Scripting:</i> Automating text-based tasks involving PDF documents.<br>•  <i>Accessibility:</i> Converting PDFs to more accessible plain text formats.<br><br>While highly effective for text-heavy documents, its performance can vary with complex layouts such as tables or multi-column designs. It also cannot extract text from scanned PDFs (which are essentially images of text) without prior Optical Character Recognition (OCR). <b>pdftotext</b> supports various options to control page ranges, layout preservation, output encoding, and handling of password-protected files, making it a flexible and essential tool for PDF text manipulation.


title: CAVEATS
content:
• <i>Scanned PDFs:</i> <b>pdftotext</b> operates on embedded text. It <i>cannot</i> extract text from scanned PDFs that are essentially images; OCR (Optical Character Recognition) is required first.<br>• <i>Complex Layouts:</i> Documents with intricate layouts, such as tables, multi-column designs, or text flowing around graphics, can result in misaligned or garbled output, even with the <b>-layout</b> option.<br>• <i>Font Issues:</i> Problems with specific embedded fonts or non-standard character encodings within the PDF might lead to incorrect character output.<br>• <i>Password Protection:</i> Encrypted PDFs require the correct user or owner password to be provided using the <b>-upw</b> or <b>-opw</b> options for successful text extraction.


title: ENCODING AND CHARACTER SETS
content:
By default, <b>pdftotext</b> outputs text in UTF-8, which is the most widely supported encoding for international characters and modern systems. This usually ensures correct display of text in various languages. However, for compatibility with older text processing tools or specific system requirements, the <b>-enc</b> option allows you to specify other encodings like 'Latin1' (ISO-8859-1) or 'UCS-2'. Using an incorrect encoding for the output can result in 'mojibake' (garbled or unreadable characters), especially when dealing with non-ASCII text. Always verify the output encoding if character display issues arise.


title: HISTORY
content:
<b>pdftotext</b> originated as a utility within the <i>Xpdf</i> project, a free PDF viewer and toolkit developed by Derek Noonburg, first released in the late 1990s. Xpdf provided a set of command-line tools for various PDF manipulations. In 2005, the rendering library and utilities of Xpdf were forked to create <i>Poppler</i>, under the freedesktop.org project, due to licensing differences and a desire for more rapid open-source development. Poppler quickly became the de-facto standard PDF rendering library for most Linux distributions and prominent open-source applications like GNOME and KDE. The <b>pdftotext</b> command distributed today is primarily from the Poppler project, continuing and enhancing the legacy of robust PDF text extraction.


title: SYNOPSIS
content:
<b>pdfunite</b> [<i>options</i>] <i>&lt;input_pdf1&gt;</i> [<i>&lt;input_pdf2&gt;</i> ...] <i>&lt;output_pdf&gt;</i>


title: PARAMETERS
content:
<b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the copyright and version information for <i>pdfunite</i>.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the copyright and version information for <i>pdfunite</i>.<br><br><b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief usage message and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief usage message and exits.<br><br>


title: DESCRIPTION
content:
<i>pdfunite</i> is a straightforward command-line utility designed for the simple task of merging multiple Portable Document Format (PDF) files into a single, consolidated PDF document. It is typically part of the Poppler utilities suite, which provides various tools for working with PDF files. The command takes a list of input PDF files and combines them sequentially into a new output file. Its simplicity makes it an efficient tool for combining numerous PDF documents without requiring complex configurations or graphical interfaces. It's particularly useful for batch processing or scripting tasks where automated PDF merging is needed, providing a quick and easy way to concatenate PDF documents.


title: CAVEATS
content:
<b>Order of Merging:</b> The input PDF files are merged strictly in the order they are listed on the command line.<br><b>Limited Functionality:</b> <i>pdfunite</i> is a basic tool for concatenation only. It does not support advanced PDF manipulation features such as selecting specific page ranges, reordering pages, adding encryption, or modifying metadata. For such complex tasks, more robust tools like <i>qpdf</i> or Ghostscript (<i>gs</i>) are often required.<br><b>Dependency:</b> It relies on the Poppler PDF rendering library, so it must be installed as part of the Poppler utilities package.


title: INPUT AND OUTPUT ARGUMENTS
content:
The command requires at least one input PDF file path followed by a single output PDF file path. Multiple input files are read sequentially and combined into the specified output file.<br>Example: <i>pdfunite document1.pdf document2.pdf output.pdf</i>


title: RETURN STATUS
content:
<i>pdfunite</i> typically returns 0 on success. A non-zero return value indicates an error (e.g., input file not found, permission issues, or invalid PDF format).


title: HISTORY
content:
<i>pdfunite</i> is part of the Poppler PDF rendering library utilities, which originated as a fork of the Xpdf project in 2005. It was developed to provide a simple, dedicated command-line tool for combining PDF files, leveraging Poppler's robust PDF handling capabilities. Its design emphasizes ease of use and direct functionality, making it a staple for basic PDF merging tasks within the Linux command-line environment.


title: SYNOPSIS
content:
<b>pdfxup</b> [<i>OPTIONS</i>] <i><NxM></i> [<i>PDF_FILE</i>...]<br><b>pdfxup</b> [<i>OPTIONS</i>] <i>--nup <NxM></i> [<i>PDF_FILE</i>...]


title: PARAMETERS
content:
<b><i><NxM></i> or <i>--nup <NxM></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the N-up layout, where N is the number of columns and M is the number of rows (e.g., 2x2 for 4 pages per sheet, 1x4 for 4 pages in a single column).<br><br><b><i>-o <outfile></i> or <i>--outfile <outfile></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the output PDF file. If not provided, a default name is generated.<br><br><b><i>--papersize <paper></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output paper size (e.g., A4, letter, A3). Overrides the default paper size.<br><br><b><i>--frame</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Draws a thin frame around each logical input page on the output sheet, improving readability.<br><br><b><i>--column-gap <dim></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the horizontal gap (margin) between columns of pages. Specify with units like '1cm' or '0.5in'.<br><br><b><i>--row-gap <dim></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the vertical gap (margin) between rows of pages. Specify with units like '1cm' or '0.5in'.<br><br><b><i>--delta <dx> <dy></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shifts all pages by <i>dx</i> horizontally and <i>dy</i> vertically. Useful for fine-tuning page placement.<br><br><b><i>--angle <degrees></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates each input page by the specified degrees (e.g., 90, 180, 270) before imposition.<br><br><b><i>--batch</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes multiple input PDF files separately, creating a distinct N-up output file for each input.<br><br><b><i>--no-landscape</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>pdfxup</i> from automatically setting the output page to landscape orientation, even if it fits better.<br><br><b><i>--fitpaper</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the imposed content to fit the selected or default paper size, potentially overriding other scaling options.<br><br>


title: DESCRIPTION
content:
<i>pdfxup</i> is a powerful Linux command-line utility designed to arrange multiple PDF pages onto a single output sheet, commonly known as 'N-up' or 'X-up' imposition. Part of the <i>pdfjam</i> suite, it acts as a convenient wrapper script that simplifies the process of creating handouts, booklets, or compact print versions of documents. Users can specify layouts like 2x2, 1x4, or any custom grid, effectively consolidating several logical pages onto one physical page. It supports various formatting options, including framing individual pages, adjusting margins, rotating pages, and selecting output paper sizes. This command is invaluable for saving paper and ink, making documents easier to review in print, and preparing materials for presentations or academic use by reducing the number of physical pages required. It's built upon the robust <i>pdfpages</i> LaTeX package and <i>pdflatex</i>, providing high-quality output.


title: CAVEATS
content:
<i>pdfxup</i> relies heavily on a functioning LaTeX installation, specifically <i>pdflatex</i> and the <i>pdfpages</i> package, to perform its page imposition. Without these dependencies, the command will not execute. Users may encounter issues with extremely large, malformed, or highly complex PDF input files. Features like interactive elements, specific transparencies, or certain font embeddings might not always be perfectly preserved in the final N-up output.


title: COMMON USAGE EXAMPLES
content:
<i>pdfxup</i> can be used in several common ways to achieve different N-up layouts:<br><br><b>Basic 2x2 N-up:</b><br><code><b>pdfxup</b> <i>2x2 mydocument.pdf -o output.pdf</i></code><br><i>This command takes `mydocument.pdf` and arranges its pages into a 2x2 grid (4 logical pages per physical sheet) saving the result to `output.pdf`.</i><br><br><b>1x4 Handout with Frames:</b><br><code><b>pdfxup</b> <i>--nup 1x4 --frame presentation.pdf -o handout.pdf</i></code><br><i>This creates a handout from `presentation.pdf` with 4 pages per sheet arranged in a single column, with each original page clearly outlined by a frame.</i><br><br><b>Batch Processing for Multiple Chapters:</b><br><code><b>pdfxup</b> <i>--nup 2x1 --batch chapter*.pdf</i></code><br><i>This processes all files matching `chapter*.pdf` (e.g., chapter1.pdf, chapter2.pdf), arranging them 2 pages per sheet (side-by-side) and creating separate output files like `chapter1-2x1.pdf`, `chapter2-2x1.pdf`, etc.</i>


title: HISTORY
content:
<i>pdfxup</i> is part of the widely-used <i>pdfjam</i> suite, which evolved from simpler LaTeX-based scripting solutions for PDF manipulation. The suite, primarily maintained by David J. R. Robinson, provides a collection of command-line utilities that leverage the <i>pdfpages</i> LaTeX package and <i>pdflatex</i>. Its development has focused on creating user-friendly wrappers around powerful LaTeX functionalities, making complex PDF operations accessible from the command line without requiring direct LaTeX knowledge. <i>pdfxup</i> specifically emerged to streamline the common task of N-up imposition, building upon the established reliability of the <i>pdfpages</i> package.


title: SYNOPSIS
content:
<b>pdsh</b> [<i>OPTIONS</i>] [<i>COMMAND</i>]<br><b>pdsh</b> <i>-w host[,host...]</i> [<i>OPTIONS</i>] [<i>COMMAND</i>]<br><b>pdsh</b> <i>-a</i> [<i>OPTIONS</i>] [<i>COMMAND</i>]<br><b>pdsh</b> <i>-g groupname</i> [<i>OPTIONS</i>] [<i>COMMAND</i>]


title: PARAMETERS
content:
<b><i>-w hosts</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a comma-separated list of hosts, or a path to a file containing a list of hosts, to operate on.<br><br><b><i>-a</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the command on all hosts in the default host group (as defined by the rcmd module or configuration).<br><br><b><i>-g groupname</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the command on all hosts belonging to the specified group. Groups are typically defined in a configuration file.<br><br><b><i>-f fanout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum number of concurrent remote shell connections. Useful for controlling load on the local machine and network.<br><br><b><i>-R rcmd_type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the remote command service module to use (e.g., 'ssh', 'rsh', 'krb5'). 'ssh' is the most common default.<br><br><b><i>-l login_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the username to log in as on the remote hosts.<br><br><b><i>-t timeout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set a timeout in seconds for the remote command to complete. If the command does not finish within this time, it is terminated.<br><br><b><i>-x exclude_hosts</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude specific hosts from the list of target machines. Can be a comma-separated list or a file path.<br><br><b><i>-L</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable output aggregation, causing output to be displayed line-by-line as it arrives, prefixed by the hostname.<br><br><b><i>-S</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Return the maximum exit status of all remote commands executed. If all commands succeed, returns 0.<br><br>


title: DESCRIPTION
content:
<b>pdsh</b> is a high-performance, parallel remote shell utility designed for executing commands on multiple remote hosts simultaneously. It's primarily used in cluster management and high-performance computing (HPC) environments. Unlike sequential `ssh` loops, <b>pdsh</b> significantly improves efficiency by managing concurrent connections, aggregating output, and providing fine-grained control over execution.<br><br>It supports various remote command services (RCmds) through a modular architecture, with <i>ssh</i> being the most common default. <b>pdsh</b> is ideal for tasks such as deploying software, collecting system information, or performing maintenance operations across a large number of machines in parallel, making it an essential tool for system administrators of large server infrastructures.


title: CAVEATS
content:
<i>pdsh</i> relies on pre-configured passwordless remote access (e.g., SSH keys) to target hosts. Without proper authentication setup, commands will fail. Its output aggregation can make it challenging to parse individual host failures without the <i>-L</i> option. It is a command execution tool, not a full-fledged configuration management system; it does not track or manage host state or ensure idempotency.


title: HOST SPECIFICATION
content:
<i>pdsh</i> provides flexible ways to specify target hosts. The most common methods are a comma-separated list of hosts with <i>-w</i>, or using pre-defined host groups with <i>-g</i>. Host groups and default 'all' hosts are typically configured in files like <i>/etc/pdsh/machines</i> or <i>/etc/pdsh/group</i>, allowing for easy management of large clusters.


title: RCMD MODULES
content:
<i>pdsh</i> employs a modular architecture for its remote command services (RCmds). This allows it to support various underlying protocols such as <i>ssh</i>, <i>rsh</i>, and <i>krb5</i> (Kerberos). The desired module can be selected using the <i>-R</i> option, or it will default to a configured option, commonly <i>ssh</i> due to its security and widespread adoption.


title: HISTORY
content:
<i>pdsh</i> was developed at Lawrence Livermore National Laboratory (LLNL) primarily for managing large-scale high-performance computing (HPC) clusters. Its design focuses on efficiency and scalability by implementing its own internal connection management and non-blocking I/O, allowing it to manage thousands of concurrent connections more effectively than simple looping `ssh` commands.


title: PARAMETERS
content:
<b><b>--query</b> <i>&lt;string&gt;</i> / <b>-q</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Starts the interactive filter with an initial pre-filled query string.</i><br><br><b><b>--rcfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies a custom path to the configuration file, overriding the default location.</i><br><br><b><b>--layout</b> <i>&lt;layout_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Defines the arrangement of the UI elements. Common values include 'bottom-up' or 'top-down'.</i><br><br><b><b>--prompt</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets a custom string to be displayed as the prompt in the input field.</i><br><br><b><b>--selection-mode</b> <i>&lt;mode&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Controls whether single ('single') or multiple ('multiple') items can be selected from the list.</i><br><br><b><b>--case-sensitive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables case-sensitive matching for the filter query. By default, matching is often case-insensitive.</i><br><br><b><b>--regexp</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Interprets the filter query as a regular expression for matching patterns.</i><br><br><b><b>--exact</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Performs exact string matching, disabling fuzzy matching.</i><br><br>


title: DESCRIPTION
content:
Peco (Perl Echo) is a minimalist yet powerful interactive filtering utility for Unix pipelines. It reads input from standard input (stdin), presents it to the user in an interactive curses-based interface, and allows the user to incrementally filter the results using fuzzy matching or exact string matching. As the user types, peco continuously refines the list, making it easy to quickly find and select specific items from a large set of data, such as command history, file paths, process IDs, or log entries.<br><br>Once the desired item(s) are selected (usually by pressing Enter), peco outputs the selected line(s) to standard output (stdout). This makes it highly versatile for integrating with other command-line tools. For instance, you can pipe the output of <b>ls</b> or <b>history</b> into <b>peco</b> to interactively select a file or a previous command, respectively. It supports various matching modes, keybindings for navigation, and can be customized via configuration files, making it a flexible tool for enhancing command-line productivity. It's often used as an alternative to <b>fzf</b> or <b>percol</b> for interactive filtering.


title: CAVEATS
content:
<i>Performance might be less optimal with extremely large inputs (e.g., millions of lines) compared to highly optimized native alternatives. The default keybindings might require a slight learning curve or customization if accustomed to other similar tools. Peco is primarily designed for line-by-line filtering and is less suited for complex structured data manipulation.</i>


title: KEYBINDINGS AND CUSTOMIZATION
content:
<i>Peco's behavior, including its keybindings, display, and actions, is highly customizable. This is typically done via a JSON configuration file (e.g., `~/.peco/config.json`). Users can define custom actions for specific key presses, modify colors, adjust layout preferences, and fine-tune matching algorithms, making it highly adaptable to individual workflows and preferences.</i>


title: INTEGRATION WITH SHELLS
content:
<i>Peco is frequently integrated into shell functions or aliases to enhance common command-line tasks. For example, it can be used to provide an interactive history search (often bound to <b>Ctrl+R</b> in shells), to interactively select files from a directory, or to filter process lists before acting on them. Its stdin/stdout piping nature makes it a perfect fit for various shell scripting scenarios.</i>


title: HISTORY
content:
Peco was created by Syohei YOSHIDA (lestrrat) in 2013 and is written in Go. Its name is a playful moniker, possibly derived from 'Perl Echo' or simply related to 'picking' items. It emerged as a user-friendly, interactive alternative to traditional command-line filtering methods, aiming to provide a more intuitive way to navigate and select from large lists of text. Its development was influenced by the need for a simple, yet powerful, interactive filter that could be easily integrated into shell workflows, particularly for navigating command history. It quickly gained popularity for its ease of use and flexibility in enhancing command-line productivity.


title: SEE ALSO
content:
<b>fzf</b>(1): <i>A general-purpose command-line fuzzy finder, widely used and known for its speed and features.</i>, <b>percol</b>(1): <i>Another interactive grep-like tool, often considered a predecessor or alternative to peco and fzf.</i>, <b>grep</b>(1): <i>A fundamental command-line utility for searching plain-text data for lines matching a regular expression.</i>, <b>awk</b>(1): <i>A powerful text processing language, often used for data extraction, manipulation, and reporting from text files or streams.</i>


title: DESCRIPTION
content:
<b>pee</b> is a utility from the <i>moreutils</i> package, designed to read its standard input and simultaneously pipe it to the standard input of multiple commands specified on its command line. Unlike <b>tee(1)</b> which duplicates input to files or standard output, <b>pee</b> duplicates input to other running processes. After feeding the input, <b>pee</b> then collects and interleaves the standard output from all these child commands, writing the combined output to its own standard output. This makes <b>pee</b> exceptionally useful for scenarios where the same dataset needs to be processed by several different, independent pipelines in parallel, and their collective results are desired. <b>pee</b> waits for all child processes to complete their execution before it exits. If any of the child commands terminate with a non-zero exit status, <b>pee</b> itself will also exit with a non-zero status, indicating a failure in one or more of the parallel operations.


title: CAVEATS
content:
<b>Output Interleaving:</b> The standard output from the child commands is interleaved. If the order of output from different commands is critical, <b>pee</b> might not be suitable, or additional processing (e.g., sorting) might be required.<br><b>Resource Consumption:</b> Running multiple commands concurrently can lead to higher CPU, memory, and I/O utilization compared to sequential processing.<br><b>Error Indication:</b> <b>pee</b> exits with a non-zero status if <i>any</i> child command fails, but it does not specify which one failed or provide individual error codes from children.


title: EXAMPLE USAGE
content:
<b>echo</b> "hello world" | <b>pee</b> "<b>grep</b> -o o" "<b>tr</b> 'oe' 'EO'"<br><i>(Possible output: E<br>O<br>o<br>o)</i><br>This example pipes "hello world" to two commands in parallel. The first <b>grep</b> extracts 'o's, and the second <b>tr</b> replaces 'o' and 'e' with 'E' and 'O' respectively. The output is interleaved.<br><br><b>ls</b> | <b>pee</b> "<b>wc</b> -l" "<b>grep</b> -c .conf"<br>This command pipes the output of <b>ls</b> to <b>wc -l</b> (counting lines/files) and <b>grep -c .conf</b> (counting config files) simultaneously.


title: EXIT STATUS
content:
<b>pee</b>'s exit status is 0 if all child commands execute successfully. It returns a non-zero status if one or more child commands exit with a non-zero status, indicating a failure.


title: HISTORY
content:
<b>pee</b> is part of the <b>moreutils</b> collection, a set of small, useful, and commonly needed Unix utilities that are often missing from standard distributions. Its development stemmed from the need for a "parallel <b>tee</b>" – a tool that could efficiently duplicate input streams to multiple separate processing pipelines simultaneously. It fills a niche for simple parallelization scenarios where direct piping to multiple commands is more straightforward than complex job schedulers or explicit parallel execution frameworks, emphasizing ease of use for common parallel stream processing tasks.


title: SYNOPSIS
content:
<B>peekfd</B> [<I>options</I>] <I>PID</I> <I>FD</I> [<I>offset</I>] [<I>length</I>]<br><br>Where:<br><I>PID</I> is the Process ID of the target application.<br><I>FD</I> is the file descriptor number within the target process.<br><I>offset</I> (optional) is the byte offset from the current position of the file descriptor where reading should begin. If omitted, it typically starts from the current file position.<br><I>length</I> (optional) is the number of bytes to read. If omitted, a default length (e.g., 4KB) or reading until EOF might be applied.


title: PARAMETERS
content:
<b>-x</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display output in hexadecimal format.<br><br><b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display output in ASCII format, attempting to show printable characters.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to display output as a string, often stopping at the first null byte.<br><br><b>-o <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirect the peeked data to a specified output file instead of standard output.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pause the target process while peeking (common for <I>ptrace</I>-based implementations).<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the operation.<br><br>


title: DESCRIPTION
content:
<B>peekfd</B> is a specialized <I>Linux debugging utility</I> designed to inspect the contents of a file descriptor belonging to another running process. Unlike commands like <B>lsof</B> which reveal information <I>about</I> file descriptors (what they point to), <B>peekfd</B> allows a user to read the <I>actual data</I> that is currently associated with a specified file descriptor at a particular offset.<br><br>This can be invaluable for diagnosing issues in inter-process communication (IPC), such as pipes or sockets, or for observing data written to temporary files or logs by a process that is not yet consumed or flushed. The tool typically works by utilizing low-level kernel interfaces like the <I>/proc</I> filesystem or the <I>ptrace</I> system call, allowing it to attach to the target process and read from its memory space or inject <I>read</I> syscalls without affecting the process's normal execution flow significantly (though <I>ptrace</I> can briefly pause the target). Due to its nature, <B>peekfd</B> often requires root privileges or specific capabilities to function. It is important to note that <B>peekfd</B> is not a standard utility found in all Linux distributions; it is frequently implemented as a custom script or a small C program by developers for specific debugging needs.


title: CAVEATS
content:
<B>peekfd</B> operates at a low level and comes with several important considerations:<br><I>1. Non-Standard Tool</I>: <B>peekfd</B> is not a universally distributed command; its availability, syntax, and functionality vary significantly between custom implementations. Users may need to compile it from source or use a similar custom tool.<br><I>2. Permissions</I>: Reading file descriptors of other processes typically requires root privileges or the <I>CAP_SYS_PTRACE</I> capability, as it involves accessing kernel data structures or attaching to other processes.<br><I>3. Race Conditions</I>: The data seen by <B>peekfd</B> can be subject to race conditions. The target process might read from or write to the file descriptor immediately before or after <B>peekfd</B> performs its operation, leading to data that is momentarily outdated.<br><I>4. Impact on Target Process</I>: While designed to be non-intrusive, <I>ptrace</I>-based implementations might briefly pause the target process, which can have a minor performance impact or cause a slight delay.<br><I>5. File Descriptor Position</I>: Some implementations might reset or alter the file descriptor's current read/write position (<I>lseek</I>) in the target process during the peek operation, which could subtly affect the target process's subsequent operations. However, well-designed tools aim to restore the original position.


title: HOW IT WORKS (CONCEPTUAL)
content:
<B>peekfd</B> typically employs one of two primary methods:<br><I>1. Ptrace-based</I>: The most common approach involves using the <I>ptrace</I> system call. The <B>peekfd</B> process attaches to the target <I>PID</I>, effectively taking control. It can then either inject a <I>read</I> system call into the target process's context, causing the target to read its own file descriptor into a controlled memory region, or directly read memory pages from the target process's address space where file descriptor buffers might reside. After reading, <I>ptrace</I> detaches or allows the target to resume.<br><I>2. /proc Filesystem (less common for content)</I>: While <I>/proc/&lt;PID&gt;/fd/</I> gives symlinks to the underlying files/devices, and <I>/proc/&lt;PID&gt;/fdinfo/</I> provides metadata like offset and flags, directly reading the <I>content</I> from a file descriptor of another process via <I>/proc</I> isn't as straightforward as <I>ptrace</I>. Some specialized kernel modules or FUSE filesystems <I>could</I> hypothetically expose this, but standard <B>peekfd</B> implementations usually rely on <I>ptrace</I>.


title: USE CASES
content:
<ul><li><I>Debugging Pipes/Sockets</I>: Observing data flowing through pipes or network sockets between processes without disrupting communication.</li><li><I>Analyzing Buffered I/O</I>: Checking what data is held in kernel or application buffers for a specific file descriptor before it's processed or flushed.</li><li><I>Forensics/Troubleshooting</I>: Gaining insights into a misbehaving process's data handling in real-time.</li></ul>


title: HISTORY
content:
The concept of inspecting another process's file descriptor content stems from the need for advanced debugging of complex system interactions, particularly in distributed systems, network services, or highly concurrent applications. While a standardized <B>peekfd</B> command is not part of mainstream Linux distributions, the underlying techniques (like <I>ptrace</I> for process control and memory inspection, and the <I>/proc</I> filesystem for process state) have been available in Linux since its early days. Developers and system administrators have historically created custom tools or scripts leveraging these kernel features to achieve the <B>peekfd</B> functionality, often sharing them within specific communities or incorporating them into larger debugging frameworks. The tool's sporadic appearance reflects a niche but critical debugging requirement that isn't fully met by more general-purpose utilities.


title: DESCRIPTION
content:
The <i>peerindex</i> command does not appear to be a standard utility or package available in common Linux distributions such as Debian, Ubuntu, Fedora, or CentOS.<br><br>Extensive searches for `peerindex` in package repositories and standard documentation (like man pages) yield no results for a command-line tool with this exact name.<br><br>It is highly probable that this command is either a custom-built script specific to a particular environment, a component of a very niche software package not widely distributed, or a misunderstanding/typo of a similar command.<br><br>Users encountering references to `peerindex` should verify its source and context, as it is not part of the typical GNU/Linux command set.


title: CAVEATS
content:
This analysis is based on the premise that `peerindex` refers to a standard, general-purpose Linux command. Given its absence from official documentation and common package repositories, any functionality associated with `peerindex` would likely be specific to a custom installation or proprietary system. Therefore, its behavior, options, and availability cannot be universally defined.


title: POSSIBLE MISUNDERSTANDING
content:
It's possible that <i>peerindex</i> is a typo, a component of a larger system (e.g., `peer-index` within a specific application's codebase), or a highly specialized tool used only in certain enterprise environments.<br><br>Users should clarify the context in which they encountered this command name to identify the correct utility or software package.


title: HISTORY
content:
No history information is available for a standard Linux command named <i>peerindex</i>, as it does not appear to be a part of common Linux distributions or established open-source projects.


title: SYNOPSIS
content:
<b>peludna-prognoza</b> [<i>OPTIONS</i>]<br><i>(Alternatively: python3 peludna_prognoza.py [OPTIONS])</i>


title: PARAMETERS
content:
<b><b>-c</b>, <b>--city</b> <i>&lt;city_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a single city for which to retrieve pollen forecast data. For example, <i>--city Zagreb</i>.<br><br><b><b>-r</b>, <b>--regions</b> <i>&lt;region1,region2,...&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more regions or cities (comma-separated) for which to retrieve pollen forecast data. For example, <i>--regions Rijeka,Split</i>.<br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the pollen forecast data in JSON format, facilitating programmatic consumption. By default, output is human-readable text.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits, showing available options and usage examples.<br><br>


title: DESCRIPTION
content:
The <b>peludna-prognoza</b> command-line tool provides up-to-date pollen forecast information for various cities and regions across Croatia. Developed as a Python script, it typically fetches data from the official website of the Teaching Institute of Public Health "Dr. Andrija Štampar" in Zagreb. This utility is particularly valuable for individuals suffering from pollen allergies, offering a quick way to check daily pollen levels directly from the terminal. It supports specifying particular locations and can output the data in human-readable text or structured JSON format, making it suitable for integration into other scripts or monitoring systems. The command streamlines access to specific regional health data.


title: CAVEATS
content:
The functionality of <b>peludna-prognoza</b> is heavily reliant on the structure and availability of the data source website (Teaching Institute of Public Health "Dr. Andrija Štampar"). Any changes to the website's layout, APIs, or content delivery methods could potentially break the command's ability to fetch data. Furthermore, the data provided is specific to Croatian regions and may not be applicable elsewhere, limiting its global utility.


title: INSTALLATION
content:
To use <b>peludna-prognoza</b>, you typically need Python 3 installed. The script can be obtained by cloning its Git repository (e.g., <i>git clone https://github.com/vujicic/peludna-prognoza.git</i>) and then running it directly (e.g., <i>python3 peludna_prognoza.py</i>). It may require additional Python libraries, which can be installed via pip (e.g., <i>pip install -r requirements.txt</i>). For convenient command-line execution, you might need to add the script to your system's PATH or create a symbolic link.


title: DATA SOURCE
content:
The pollen data consumed by this command is exclusively sourced from the official website of the Nastavni zavod za javno zdravstvo "Dr. Andrija Štampar" (Teaching Institute of Public Health "Dr. Andrija Štampar") in Zagreb, Croatia. The tool processes publicly available information to present it in a convenient command-line format, acting as a direct interface to this specific data provider.


title: HISTORY
content:
The <b>peludna-prognoza</b> tool emerged as a community-driven open-source project, primarily to address the need for easily accessible pollen forecast information for residents of Croatia. It was developed as a Python script, leveraging web scraping techniques to extract data from a public health institute's website. Its development reflects a common pattern in open-source where specific local data needs drive the creation of specialized command-line utilities, offering a convenient way to access public health information that might otherwise be less accessible.


title: PARAMETERS
content:
<b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--verbose<br>Prints the names of files successfully renamed.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--no-act<br>--dry-run<br>Shows what files would be renamed without actually performing the operation. Highly recommended for testing complex expressions.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--force<br>Overwrites existing files without prompting.<br><br><b>-i</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--interactive<br>Prompts before overwriting an existing file.<br><br><b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--path<br>Treats the entire path as the name to be renamed, not just the filename part.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--dirs<br>Renames directories as well as files.<br><br><b>-o</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--overwrite<br>Same as --force. Renames and overwrites existing files.<br><br><b>-k</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--keep-name<br>Keeps the original name if the expression would result in an empty string.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--subst<br>Indicates that the expression is a substitution (e.g., s/foo/bar/). This is the default if no other expression type is specified.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;--expression<br>Specifies a Perl expression to be evaluated for each name. The expression should return the new name or undef to skip.<br><br><b>--</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Marks the end of options, allowing subsequent arguments to be treated as filenames even if they start with a hyphen.<br><br><b>--stdin</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads filenames from standard input, one per line.<br><br>


title: DESCRIPTION
content:
The <b><I>perl-rename</I></b> command, often simply referred to as <b><I>rename</I></b> on many Linux distributions, is an exceptionally powerful and flexible utility designed for batch renaming of files. It distinguishes itself from simpler renaming tools by leveraging the full power of Perl regular expressions for pattern matching and substitution. This allows users to perform highly sophisticated and complex renaming operations that would be difficult or impossible with basic shell commands.<br><br>For each filename provided as an argument, <b><I>perl-rename</I></b> applies a specified Perl expression (most commonly a <b><I>s/pattern/replacement/</I></b> substitution) to derive the new filename. Its versatility makes it an indispensable tool for system administrators, developers, and power users who frequently need to organize, standardize, or transform large sets of files based on complex naming conventions.


title: CAVEATS
content:
<ul><li><b><I>Confusion with `util-linux` rename:</I></b> There are two common `rename` commands on Linux. This entry describes the Perl `rename` (often `/usr/bin/rename` or `/usr/bin/prename`), which uses Perl regular expressions. The `util-linux` `rename` (often `/bin/rename`) uses a simpler `sed`-like syntax or `mv` globbing. Always verify which `rename` command you are using (e.g., `which rename` or `man rename`).</li><li><b><I>No Undo:</I></b> Once files are renamed, there is no built-in undo mechanism. Always use the `--no-act` (or `-n`) option to preview changes before committing.</li><li><b><I>Perl Regex Complexity:</I></b> While powerful, Perl regular expressions can be complex. Errors in the expression can lead to unintended or incorrect renaming of files.</li></ul>


title: PERL EXPRESSION SYNTAX
content:
The core of <b><I>perl-rename</I></b>'s power lies in its ability to execute arbitrary Perl code, most commonly a substitution expression. The syntax for the Perl expression is typically <b><I>s/pattern/replacement/flags</I></b>, similar to `sed`.<br><ul><li><b><I>pattern</I></b>: A Perl regular expression to match against the current filename.</li><li><b><I>replacement</I></b>: The string to replace the matched <b><I>pattern</I></b> with. This can include backreferences (<b><I>$1</I></b>, <b><I>$2</I></b>, etc.) to captured groups from the <b><I>pattern</I></b>.</li><li><b><I>flags</I></b>: Optional modifiers, such as <b><I>g</I></b> (global replacement), <b><I>i</I></b> (case-insensitive), <b><I>s</I></b> (single line, makes `.` match newlines), <b><I>x</I></b> (extended, allows whitespace and comments in regex).</li></ul>


title: DEFAULT BEHAVIOR
content:
If no specific expression type like <b><I>-e</I></b> is provided, <b><I>rename</I></b> assumes the first argument is a <b><I>s/pattern/replacement/flags</I></b> substitution.


title: HISTORY
content:
The <b><I>perl-rename</I></b> command was originally written by Larry Wall, the creator of Perl, and released as part of the Perl distribution. Its design leverages the powerful regular expression capabilities of Perl, providing a highly flexible and efficient way to perform batch file renaming operations. It quickly became a standard utility in Unix-like operating systems due to its superior capabilities compared to simpler renaming methods.


title: SYNOPSIS
content:
<b>perlbrew</b> [<i>options</i>] <i>command</i> [<i>arguments</i>]<br>Common commands:<br><b>perlbrew</b> <i>install</i> <i>&lt;perl-version&gt;</i><br><b>perlbrew</b> <i>switch</i> <i>&lt;perl-version&gt;</i><br><b>perlbrew</b> <i>use</i> <i>&lt;perl-version&gt;</i><br><b>perlbrew</b> <i>list</i><br><b>perlbrew</b> <i>help</i> [<i>&lt;command&gt;</i>]


title: PARAMETERS
content:
<b><i>install</i> <i>&lt;perl-version&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compiles and installs a specified Perl version (e.g., <i>perl-5.34.0</i> or <i>blead</i>) into the <i><b>perlbrew</b></i> environment.<br><br><b><i>switch</i> <i>&lt;perl-version&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Permanently switches the default Perl version for all future shell sessions. Requires shell initialization.<br><br><b><i>use</i> <i>&lt;perl-version&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Temporarily switches to a specified Perl version for the current shell session only. Does not persist across sessions.<br><br><b><i>list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a list of all Perl versions currently installed by <i><b>perlbrew</b></i>.<br><br><b><i>available</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a list of Perl versions available for installation from <i><b>perlbrew</b></i>'s official sources.<br><br><b><i>off</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deactivates <i><b>perlbrew</b></i> for the current shell session, reverting to the system's default Perl.<br><br><b><i>exec</i> [<i>&lt;perl-version&gt;</i>] <i>&lt;command&gt;</i> [<i>&lt;args&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a specified command or script using a particular <i><b>perlbrew</b></i> Perl version, without switching the active version.<br><br><b><i>lib</i> [<i>&lt;subcommand&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages isolated CPAN library paths (e.g., <i>create</i>, <i>list</i>, <i>use</i>) for different projects or modules within a Perl version.<br><br><b><i>uninstall</i> <i>&lt;perl-version&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified Perl version and its associated files from the <i><b>perlbrew</b></i> environment.<br><br><b><i>self-upgrade</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrades the <i><b>perlbrew</b></i> tool itself to the latest available version.<br><br><b><i>help</i> [<i>&lt;command&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help information or detailed help for a specific <i><b>perlbrew</b></i> command.<br><br>


title: DESCRIPTION
content:
<i><b>perlbrew</b></i> is a command-line tool that empowers developers to manage multiple, isolated Perl installations in their user directory without requiring root privileges. This makes it an invaluable utility for anyone needing to test code against different Perl versions, handle project-specific dependencies, or develop CPAN modules. Unlike system-wide Perl installations, <i><b>perlbrew</b></i> establishes self-contained environments, effectively preventing conflicts and providing unparalleled flexibility. It streamlines the entire process, from compiling and installing various Perl distributions—including development branches and older stable releases—to automatically configuring necessary environment variables. The isolation offered by <i><b>perlbrew</b></i> is critical for maintaining system stability while granting developers the freedom to experiment and work with diverse Perl environments. It significantly simplifies the often complex task of managing Perl versions, particularly for module development, testing, and ensuring compatibility across different runtime conditions.


title: CAVEATS
content:
<i><b>perlbrew</b></i> requires a C compiler (e.g., <i>gcc</i>) and other essential build tools to be pre-installed on your system. Some Perl versions may also need additional development libraries (e.g., for <i>zlib</i>, <i>bzip2</i>, <i>OpenSSL</i>) for full functionality. Each installed Perl version consumes significant disk space, typically 100MB-300MB per installation. It is crucial to correctly initialize <i><b>perlbrew</b></i> in your shell's startup files (e.g., <i>.bashrc</i>, <i>.zshrc</i>) for <i>switch</i> and other commands to function persistently.


title: INSTALLATION AND SETUP
content:
To install <i><b>perlbrew</b></i>, you typically fetch the installer script:<br><i>curl -L https://install.perlbrew.pl | bash</i><br>After installation, you must initialize it in your shell by adding the following line to your shell's configuration file (e.g., <i>~/.bashrc</i> or <i>~/.zshrc</i>) and then sourcing it:<br><i>source ~/perl5/perlbrew/etc/bashrc</i><br>This step is crucial for <i><b>perlbrew</b></i> to properly set up environment variables and manage your Perl installations.


title: MODULE MANAGEMENT
content:
When using <i><b>perlbrew</b></i>, each Perl installation has its own set of installed CPAN modules. Modules installed with one <i><b>perlbrew</b></i> Perl version are not automatically available to others. This isolation is a feature, as it prevents module conflicts across different Perl versions. You can use <i>cpan</i> or <i>cpanm</i> to install modules for the currently active <i><b>perlbrew</b></i> Perl.


title: HISTORY
content:
<i><b>perlbrew</b></i> was initially developed by Goro Fuji (<i>gfx</i>) around 2010. Its creation was inspired by similar version managers like <i>rbenv</i> for Ruby and <i>nvm</i> for Node.js. The primary motivation was to provide a flexible and non-invasive way for developers to manage multiple Perl versions without needing root access, addressing common challenges faced in shared hosting environments or when needing to test code against different Perl runtimes. It quickly gained traction within the Perl community and became a de-facto standard for managing development environments, fostering active community contributions and continuous improvement.


title: PARAMETERS
content:
<b><b>-r</b>, <b>--email</b> <i>reporter</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the email address of the reporter for the bug report.<br><br><b><b>-s</b>, <b>--subject</b> <i>subject</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the subject line of the bug report email.<br><br><b><b>-b</b>, <b>--body</b> <i>body</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides an initial body for the bug report. This content will be editable.<br><br><b><b>-a</b>, <b>--attach</b> <i>files</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches one or more files to the bug report. Multiple files can be specified separated by commas.<br><br><b><b>-e</b>, <b>--editor</b> <i>editor</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to an external editor to use for writing the report body.<br><br><b><b>-m</b>, <b>--mail</b> <i>mailer</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Designates the mailer program to use for sending the email (e.g., <i>/usr/sbin/sendmail</i>).<br><br><b><b>-t</b>, <b>--to</b> <i>to_address</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default recipient address for the bug report (usually <i>perlbug@perl.org</i>).<br><br><b><b>-S</b>, <b>--smtp-server</b> <i>server</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directly uses the specified SMTP server for sending the report.<br><br><b><b>-p</b>, <b>--proxy</b> <i>proxy</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a proxy server to use for SMTP connections.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of the <b>perlbug</b> utility.<br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug mode, providing verbose output for troubleshooting <b>perlbug</b> itself.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a brief help message and exit.<br><br>


title: DESCRIPTION
content:
<b>perlbug</b> is a utility designed to assist users in preparing and sending bug reports concerning the Perl programming language. It automates much of the data collection process, gathering crucial information about the user's operating system, Perl version, and other relevant system specifics. This ensures that bug reports are comprehensive and useful to the Perl development team. The command operates interactively, guiding the user through a series of questions to elicit details about the bug, including a description, steps to reproduce, and expected versus actual behavior. Once the information is collected, <b>perlbug</b> formats it into an email and attempts to send it to the official Perl bug reporting address, typically <i>perlbug@perl.org</i>, using a configured mailer program.


title: CAVEATS
content:
<b>perlbug</b> relies on a properly configured mailer system (like <i>sendmail</i> or a specified SMTP server) to send reports. Issues with local mailer setup can prevent reports from being sent successfully. It is recommended to verify network connectivity and mailer configuration if reports fail to send.<br>The utility attempts to auto-detect system information, but users should review the generated report for accuracy before sending.


title: ENVIRONMENT VARIABLES
content:
<ul><li><i>EDITOR</i>: Specifies the preferred text editor to use when editing the bug report body.</li><li><i>PERLBUG_OPTS</i>: Can contain additional default options for <b>perlbug</b>.</li></ul>


title: FILES
content:
<ul><li><i>~/.perlbug</i>: A user-specific configuration file that can store default options.</li><li>Internal modules (e.g., <i>/usr/lib/perl5/perlbug.pm</i>): Used by <b>perlbug</b> for its operations.</li></ul>


title: SYNOPSIS
content:
<i>perldoc</i> [<i>options</i>] <i>pageitem</i>...<br><i>perldoc</i> <b>-f</b> <i>function_name</i><br><i>perldoc</i> <b>-q</b> <i>search_term</i><br><i>perldoc</i> <b>-h</b>|<b>--help</b><br><i>perldoc</i> <b>-v</b>|<b>--version</b>


title: PARAMETERS
content:
<b><b>-f</b> <i>function</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays documentation for the specified Perl built-in <i>function</i>.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the full path to the document without showing its content.<br><br><b><b>-m</b> <i>module</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays documentation for a specific Perl <i>module</i>.<br><br><b><b>-q</b> <i>search_term</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches the Perl FAQ (Frequently Asked Questions) for answers matching the <i>search_term</i>.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of the <i>perldoc</i> utility.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the output as plain text, disabling formatting like bold/underline.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unformatted. Displays the raw POD (Plain Old Documentation) source.<br><br><b><b>-x</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the module as a Perl script, displaying its output.<br><br><b><b>-d</b> <i>directory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an additional <i>directory</i> to search for modules.<br><br><b><b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps the POD options for debugging purposes.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>-o</b> <i>filename</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints output to the specified <i>filename</i> instead of stdout.<br><br><b><b>-n</b> <i>formatter</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a specific POD <i>formatter</i> module to use (e.g., Pod::Text::Color).<br><br><b><b>-M</b> <i>module</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a formatting <i>module</i> class to use (e.g., Pod::Man).<br><br><b><b>-P</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces piping output through <i>less</i> (often the default pager).<br><br><b><b>-T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <i>perldoc</i> from using any pager, printing directly to standard output.<br><br><b><b>-w</b> <i>width</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output text <i>width</i> for formatting.<br><br><b><b>-X</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the pager (same as <b>-T</b>).<br><br><b><b>-F</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the use of <i>Pod::Find</i> for searching documents.<br><br><b><b>-L</b> <i>linktext</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies text for internal links, usually for advanced formatting.<br><br><b><b>-R</b> <i>name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restricts search to sections named <i>name</i> (e.g., SYNOPSIS).<br><br><b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all matching POD documents found, not just the first one.<br><br><b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For backward compatibility with older <i>Pod::Text</i> versions.<br><br><b><b>-i</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs case-insensitive search for the page item.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for the page item in all known POD directories.<br><br>


title: DESCRIPTION
content:
<i>perldoc</i> is a utility that displays sections of the Perl manual in plain text, typically using a pager like <i>less</i> or <i>more</i>. It can find documentation for Perl functions, modules, scripts, and general Perl topics. The documentation is usually in POD (Plain Old Documentation) format. <i>perldoc</i> helps users quickly access detailed information about Perl's syntax, built-in functions, standard library modules, and common programming practices without needing an internet connection, provided the documentation is installed locally. It is an essential tool for Perl developers for quick reference and learning, streamlining the process of looking up language constructs and module functionalities.


title: CAVEATS
content:
<i>perldoc</i> relies on locally installed Perl documentation; if documentation is missing or incomplete, it cannot display it. Output formatting might vary depending on available <i>Pod::*</i> modules and terminal capabilities. Searching for a <i>pageitem</i> can be ambiguous if multiple modules or functions share similar names, sometimes requiring a more precise query.


title: SEARCHING FOR MODULES AND FUNCTIONS
content:
<i>perldoc</i> intelligently guesses whether you're looking for a module, a function, or a general topic. Use `<b>perldoc</b> <i>ModuleName</i>` (e.g., `<b>perldoc Data::Dumper</b>`) for modules or `<b>perldoc -f</b> <i>functionName</i>` (e.g., `<b>perldoc -f chomp</b>`) for built-in functions.


title: FAQ LOOKUP
content:
The `<b>-q</b>` option is particularly useful for quickly finding answers to common Perl questions without needing to browse the full FAQ. For instance, `<b>perldoc -q</b> <i>array</i>` searches for FAQ entries related to arrays.


title: ENVIRONMENT VARIABLES
content:
The `PERL5LIB` and `PERL5OPT` environment variables can influence where <i>perldoc</i> searches for modules. Additionally, the `PAGER` environment variable can be used to specify an alternative pager program to <i>less</i> or <i>more</i>.


title: HISTORY
content:
<i>perldoc</i> has been a standard utility distributed with Perl for a long time, evolving alongside the language. It simplifies access to Perl's extensive documentation, which is largely written in POD format. Its development reflects the Perl community's commitment to self-contained, easily accessible documentation, integrated directly into the Perl distribution.


title: SYNOPSIS
content:
While 'perlivp' is not a command, its components refer to <I><b>perl</b></I> options. <br><br><I><b>perl</b></I> <I>[-OPTION_FLAGS]</I> <I>[--long-option]</I> <I>[-e 'command']</I> <I>[scriptfile]</I> <I>[arguments...]</I><br><br>Specifically, when <I>-v</I> is present:<br><I><b>perl</b></I> <I>[-...]</I> <I><b>-v</b></I> <I>[-...]</I><br>Prints <I><b>perl</b></I> version and exits.


title: PARAMETERS
content:
<b>-p</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables an implicit loop around the program, similar to sed. It iterates over lines of input, executing the program block for each line, and automatically prints each line after processing.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates automatic line-ending processing. It chomps the input record separator (<I>$INPUT_RECORD_SEPARATOR</I>) from input and appends the output record separator (<I>$OUTPUT_RECORD_SEPARATOR</I>) to any output.<br><br><b>-i [EXTENSION]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables in-place editing of files. A backup of the original file is created with <I>EXTENSION</I> (e.g., <I>.bak</I>) if provided, otherwise the original is overwritten.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version and patchlevel of the <I><b>perl</b></I> interpreter and then exits immediately.<br><br>


title: DESCRIPTION
content:
The string 'perlivp' does <i>not</i> represent a standalone Linux command. Instead, it is a sequence of common command-line options often used with the <I><b>perl</b></I> interpreter: <I>-p</I>, <I>-l</I>, <I>-i</I>, and <I>-v</I>. <br>While each of these options provides powerful functionality, their combination as 'perlivp' results in a specific interaction: the <I>-v</I> (version) option causes <I><b>perl</b></I> to print its version information and then immediately exit. This behavior overrides and prevents the execution of any script or processing implied by <I>-p</I> (loop through lines), <I>-l</I> (chomp/newline handling), or <I>-i</I> (in-place editing). <br>Therefore, executing <I><b>perl -p -l -i -v</b></I> (or any order including <I>-v</I>) will only display the <I><b>perl</b></I> version and nothing more. Users typically combine <I>-p</I>, <I>-l</I>, and <I>-i</I> without <I>-v</I> for powerful one-liner text processing.


title: CAVEATS
content:
The most significant caveat when combining <I>-v</I> with other options like <I>-p</I>, <I>-l</I>, or <I>-i</I> is that <I><b>perl -v</b></I> takes precedence. It will print the version and exit, ignoring any other options or script logic intended for text processing or in-place editing. Therefore, 'perlivp' as a functional combination for text processing is ineffective due to the immediate exit caused by <I>-v</I>.


title: COMMON <B>PERL</B> ONE-LINER PATTERNS
content:
While 'perlivp' is non-functional as a whole, the combination of <I>-p</I>, <I>-l</I>, and <I>-i</I> (without <I>-v</I>) is extremely common for powerful text processing. <br><br>Examples:<br><I><b>perl -pli.bak -e 's/foo/bar/g' file.txt</b></I><br>&nbsp;&nbsp;&nbsp;Replaces all occurrences of 'foo' with 'bar' in 'file.txt', creating 'file.txt.bak' as a backup.<br><br><I><b>perl -pl -e 'print <I>reverse $_</I>' file.txt</b></I><br>&nbsp;&nbsp;&nbsp;Reverses each line in 'file.txt' and prints it to standard output.<br><br>These examples demonstrate the utility of these options when correctly combined for various text manipulation tasks.


title: HISTORY
content:
The <I><b>perl</b></I> programming language, created by Larry Wall, first appeared in 1987. It was designed as a general-purpose Unix scripting language to make report processing easier. Many of its command-line options, including <I>-p</I>, <I>-l</I>, and <I>-i</I>, were inspired by utilities like <I><b>sed</b></I> and <I><b>awk</b></I>, allowing <I><b>perl</b></I> to be used effectively for one-liner text manipulation directly from the shell. The <I>-v</I> option is a standard convention across many Unix commands for version information, and its behavior of causing an immediate exit is also common to provide quick version checks without running full program logic.


title: DESCRIPTION
content:
The command <b>'pest'</b> is not recognized as a standard or commonly available utility within typical Linux distributions. Command-line tools in Linux usually have well-defined functionalities, dedicated man pages, and are integral parts of widely used core packages (e.g., coreutils, procps, util-linux). The consistent absence of official documentation or common usage examples for <b>'pest'</b> across various Linux environments strongly suggests it is either a typographical error, a highly obscure or deprecated tool, an internal script specific to a particular non-public environment, or a custom alias defined by a user. Consequently, providing a standard synopsis, specific command-line parameters, or a documented historical context for a non-existent standard command is not feasible.


title: CAVEATS
content:
As <b>'pest'</b> is not a standard Linux command, attempting to execute it in a typical shell environment will likely result in a 'command not found' error. Users should carefully verify the spelling if they intended to use a similar-sounding, existing command, or consult their system's specific configurations for custom scripts or aliases that might be named 'pest'.


title: POTENTIAL MISINTERPRETATION OR TYPO
content:
It is highly probable that a query for <b>'pest'</b> stems from a typographical error or a misunderstanding of a similar-sounding command. Users are advised to double-check the exact spelling of the command they intend to use. For example, common commands like <i>'test'</i>, <i>'pstree'</i>, or custom scripts might be confused with 'pest'.


title: HISTORY
content:
There is no documented history or development trajectory for a standard Linux command named <b>'pest'</b>, as it does not appear in official Linux kernel documentation, GNU utilities projects, or common package repositories. If a command or script named 'pest' exists on a specific system, its history would be unique to its niche development, specific project, or local environment.


title: PARAMETERS
content:
<b><i>PFBFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The input PostScript Type 1 font file. This can be either a binary (.pfb) or ASCII (.pfa) format file.<br><br><b><i>AFMFILE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. The name of the output Adobe Font Metrics (.afm) file. If this argument is omitted, the command typically writes the AFM data to standard output or generates a file with the same base name as <i>PFBFILE</i> but with an .afm extension.<br><br>


title: DESCRIPTION
content:
The <b>pf2afm</b> command is a utility designed to extract font metric information from a PostScript Type 1 font file and convert it into an Adobe Font Metrics (AFM) file. PostScript Type 1 fonts are commonly stored as binary (.pfb) or ASCII (.pfa) files.<br><br>AFM files provide essential metadata about a font, such as character widths, kerning pairs, and font bounding box. This information is crucial for various applications, including typesetting systems (like TeX/LaTeX), DVI drivers, and PDF generators, which need to accurately calculate text layout and spacing without necessarily embedding the entire font. By converting the font data to an AFM file, <b>pf2afm</b> enables these applications to work with font metrics efficiently, ensuring precise text rendering and document layout.


title: CAVEATS
content:
The <b>pf2afm</b> command is highly specific to PostScript Type 1 fonts. It cannot process other font formats like TrueType (.ttf), OpenType (.otf), or PostScript Type 3/42 fonts. Ensure the input font file is a valid and uncorrupted PostScript Type 1 file for successful conversion. Malformed or improperly encrypted fonts may lead to errors or incomplete AFM output.


title: OUTPUT FORMAT
content:
The output .afm file is a plain text file following the Adobe Font Metrics File Format Specification. It contains a structured representation of various font characteristics, including global font information, character metrics (width, bounding box), kerning pairs, and composite character definitions.


title: DEPENDENCIES
content:
<b>pf2afm</b> is typically provided as part of a larger distribution, such as the TeX Live collection of typesetting tools or various PostScript processing utilities. It may rely on underlying libraries or parsers capable of interpreting PostScript font data.


title: HISTORY
content:
The need for font metric data separate from font outlines became apparent early in desktop publishing and typesetting, particularly with the advent of PostScript fonts. Utilities like <b>pf2afm</b> emerged as part of larger ecosystems, such as those provided by Adobe, TeX distributions (like TeX Live and MiKTeX), and Ghostscript. Its development focused on providing a reliable way for layout engines to access crucial font dimensions, making it an indispensable tool for systems relying on precise typographic control, bridging the gap between font files and their usage in documents.


title: PARAMETERS
content:
<b><i>input_file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the PFB (Printer Font Binary) file to be converted. If omitted, <b>pfbtopfa</b> reads from standard input.<br><br>


title: DESCRIPTION
content:
<b>pfbtopfa</b> is a specialized utility provided as part of the CUPS (Common Unix Printing System) suite. Its primary function is to convert PostScript Type 1 font files from their binary PFB (Printer Font Binary) format to their ASCII-encoded PFA (Printer Font ASCII) format. The PFB format is a compact, binary representation commonly used for PostScript fonts, particularly prevalent on Windows operating systems. In contrast, the PFA format stores the exact same font data but in a human-readable ASCII text format. This conversion is crucial for environments, especially Unix and Linux systems, where plain text font files are often preferred for various reasons, including easier portability, embedding within PostScript documents (like those generated by LaTeX or certain DTP software), or for processing by other font manipulation tools that expect ASCII input. The command operates as a filter: by default, it reads the PFB font data from standard input and writes the converted PFA data to standard output, making it highly flexible for use in shell pipelines. It can also accept a PFB filename as an argument, reading directly from that file.


title: CAVEATS
content:
<b>pfbtopfa</b> is specifically designed for PostScript Type 1 fonts. It does not support other font formats like TrueType or OpenType. Error handling for malformed or corrupted PFB files might be basic, potentially resulting in incomplete or malformed PFA output.


title: USAGE EXAMPLES
content:
To convert a PFB file named <I>myfont.pfb</I> to <I>myfont.pfa</I>:<br><code><b>pfbtopfa</b> myfont.pfb > myfont.pfa</code><br><br>To convert from standard input (e.g., from a piped command) to standard output:<br><code><b>cat</b> myfont.pfb | <b>pfbtopfa</b> > myfont.pfa</code>


title: HISTORY
content:
<b>pfbtopfa</b> is a core utility included as part of the CUPS (Common Unix Printing System) distribution. CUPS was originally developed by Easy Software Products and later acquired by Apple Inc. in 2007. This utility has been a stable component of CUPS for many years, providing essential font conversion capabilities, particularly important in print and document generation workflows.


title: PARAMETERS
content:
<b><i>-h</i>, <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><i>-c</i>, <i>--color</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables color output.<br><br><b><i>-i</i>, <i>--info</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the information output, showing only the logo.<br><br><b><i>-s</i>, <i>--small</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the ASCII art logo, showing a smaller text-only output.<br><br><b><i>-o</i>, <i>--os</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hides the OS logo, only printing the system information.<br><br><b><i>-m</i>, <i>--memory</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows memory usage in megabytes (MB) instead of gibibytes (GiB).<br><br><b><i>-v</i>, <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>pfetch</i> version and exits.<br><br><b><i>-d &lt;distro&gt;</i>, <i>--distro &lt;distro&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a specific distribution logo to be displayed (e.g., <i>arch</i>, <i>ubuntu</i>).<br><br><b><i>-L &lt;path&gt;</i>, <i>--logo &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom ASCII art logo file to use.<br><br><b><i>-p &lt;name&gt;</i>, <i>--profile &lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads a specific configuration profile from <i>~/.config/pfetch/profiles/</i>.<br><br><b><i>-a &lt;type&gt;</i>, <i>--ascii &lt;type&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the type of ASCII art to display (e.g., <i>auto</i>, <i>none</i>).<br><br>


title: DESCRIPTION
content:
<i>pfetch</i> is a command-line utility designed to display concise system information in a visually appealing format. It serves as a lightweight, pure <i>Bash</i> alternative to more feature-rich tools like <i>neofetch</i> or <i>screenfetch</i>. <br><br>Written entirely in <i>Bash</i>, <i>pfetch</i> aims for speed, minimal dependencies, and a small footprint, making it ideal for low-resource environments or users who prefer a quick overview without extensive customization. It presents key system details such as the operating system, kernel version, uptime, installed packages, shell, display resolution, desktop environment or window manager, CPU, GPU, and memory usage. <br><br>The output typically includes an ASCII art representation of the distribution's logo, which can be disabled or customized. Its design philosophy emphasizes simplicity and efficiency, providing essential system data with elegance.


title: CAVEATS
content:
As a pure <i>Bash</i> script, <i>pfetch</i> relies heavily on standard <i>Unix</i> utilities and <i>procfs</i>/<i>sysfs</i> entries. While highly portable, this can sometimes lead to less precise or incomplete information compared to compiled binaries, especially if underlying system tools (like <i>grep</i>, <i>awk</i>, <i>sed</i>, <i>lspci</i>) are missing or behave non-standardly. <br><br>Its minimalist nature means fewer customization options compared to tools like <i>neofetch</i>.


title: CONFIGURATION AND CUSTOMIZATION
content:
<i>pfetch</i> can be customized through environment variables which override default settings. For instance, <i>PFETCH_BARS_ENABLE=0</i> would disable progress bars. While it doesn't have a complex configuration file like <i>neofetch</i>, users can create custom logo files and specify them with the <i>-L</i> option or define profiles in <i>~/.config/pfetch/profiles/</i> to quickly switch configurations.


title: HISTORY
content:
<i>pfetch</i> emerged from the desire for a highly portable, extremely lightweight system information tool, contrasting with the increasing complexity of its predecessors like <i>screenfetch</i> and <i>neofetch</i>. It was primarily developed by <i>dylanaraps</i>, known for creating <i>neofetch</i> and other minimal <i>Bash</i> utilities. <br><br>Its development focused on stripping away non-essential features, relying solely on pure <i>Bash</i> and common system utilities to achieve maximum compatibility and minimal resource consumption. This philosophy resonates with users who prioritize speed and simplicity over extensive customization.


title: SYNOPSIS
content:
<b>pg</b> [<i>options</i>] [<i>file...</i>]<br><b>pg</b> [<i>-n lines</i>] [<i>-cefns</i>] [<i>+line</i>] [<i>+/pattern/</i>] [<i>file ...</i>]


title: PARAMETERS
content:
<b>-n <i>lines</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of lines to display per screen. If omitted, <b>pg</b> calculates this from the terminal's screen size.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears the screen before displaying each new page of text.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>pg</b> from pausing at the end of each file when multiple files are specified. It will automatically proceed to the next file.<br><br><b>-f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>pg</b> from splitting (folding) long lines. Instead, lines longer than the screen width will simply be truncated.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays messages, such as the <b>:</b> prompt or file information, in standout mode (e.g., reverse video) on compatible terminals.<br><br><b>+<i>line</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts displaying the file from the specified <i>line</i> number.<br><br><b>+/<i>pattern</i>/</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts displaying the file from the first line that contains the specified <i>pattern</i>.<br><br>


title: DESCRIPTION
content:
<b>pg</b> is a command-line utility used to display text files or command output one screenful (or "page") at a time. It functions as a simple pager, allowing users to read long documents by pausing at the end of each screen. While more basic than modern pagers like <b>less</b>, <b>pg</b> provides essential features such as specifying the number of lines per screen, searching for patterns, and navigating through the file. It was commonly used on Unix-like systems for quick file viewing, especially on older terminals or in environments where more feature-rich pagers might not be available or desired. Users interact with <b>pg</b> via simple single-character commands at a prompt, typically <b>:</b>.


title: CAVEATS
content:
<b>pg</b> is a more traditional and less feature-rich pager compared to <b>less(1)</b>. Its interactive commands are simpler, and it offers limited backward navigation capabilities. On many modern Linux distributions, <b>pg</b> might not be installed by default or is often symlinked to <b>more(1)</b> or <b>less(1)</b>. For complex text viewing and advanced features like live log following or extensive search functionalities, <b>less(1)</b> is generally preferred.


title: INTERACTIVE COMMANDS
content:
When <b>pg</b> pauses, it displays a prompt (by default, <b>:</b>). At this prompt, users can enter various single-character commands to navigate or perform actions:<br><b>RETURN</b>: Displays the next page of text.<br><b>d</b> or <b>^D</b>: Scrolls forward by half a screen.<br><b>l</b>: Scrolls forward by a single line.<br><b>w</b>: Scrolls forward by a full screen (window).<br><b>s</b> <i>n</i>: Skips forward <i>n</i> pages.<br><b>^</b>: Jumps to the beginning of the file.<br><b>$</b>: Jumps to the end of the file.<br><b>/</b><i>pattern</i><b>/</b>: Searches forward for the specified <i>pattern</i>.<br><b>?</b><i>pattern</i><b>?</b>: Searches backward for the specified <i>pattern</i>.<br><b>n</b>: When viewing multiple files, moves to the next file in the list.<br><b>p</b>: When viewing multiple files, moves to the previous file in the list.<br><b>!</b><i>command</i>: Executes the specified <i>command</i> in a subshell.<br><b>h</b>: Displays a help message with a list of available commands.<br><b>q</b>: Quits <b>pg</b>.


title: HISTORY
content:
The <b>pg</b> command is one of the older text pagers in the Unix ecosystem, designed for line-oriented terminals. It provided a basic way to view large files without overwhelming the terminal, pausing output one screen at a time. While it was a significant utility in its time, its development and usage have largely been superseded by more advanced pagers like <b>less(1)</b>, which offer superior navigation (especially backward scrolling), searching capabilities, and overall interactivity. Despite this, <b>pg</b> remains available in the <b>util-linux</b> package on many Linux systems, serving as a simple, no-frills option or for historical compatibility.


title: PARAMETERS
content:
<b>-D <datadir></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the absolute path to the database cluster's data directory. This option is mandatory for most commands.<br><br><b>-l <logfile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends the server log output to the specified <i>logfile</i>. If not specified, the output goes to standard output or standard error.<br><br><b>-o <options></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies options that are passed directly to the <i>postmaster</i> (or <i>postgres</i>) command. These options must be enclosed in single or double quotes if they contain spaces or special characters.<br><br><b>-p <path-to-postmaster></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the absolute path to the <i>postmaster</i> (or <i>postgres</i>) executable. This is usually unnecessary as <i>pg_ctl</i> finds it in the same directory as itself.<br><br><b>-s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run in silent mode. No informational messages are printed to standard output or standard error, only error messages.<br><br><b>-t <timeout></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum time (in seconds) to wait for startup or shutdown to complete. The default is 60 seconds.<br><br><b>-w</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait for the operation (start or stop) to complete. <i>pg_ctl</i> will return only after the server has successfully started or stopped. Useful for scripting.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with the <i>stop</i> command to attempt to clear the <i>postmaster.pid</i> file if it's found to be invalid. Use with caution.<br><br><b>-m <mode></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the shutdown mode for the <i>stop</i> command. Modes are <b>smart</b> (default), <b>fast</b>, or <b>immediate</b>.<br><br><b>-P</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows <i>pg_ctl</i> to start a PostgreSQL server even if the <i>postmaster.pid</i> file already exists. This is generally not recommended as it could indicate a server is already running or a previous crash. Use with extreme caution.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>pg_ctl</i> version and exits.<br><br><b>-?, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help about <i>pg_ctl</i> command line arguments and exits.<br><br>


title: DESCRIPTION
content:
<i>pg_ctl</i> is a utility for managing a PostgreSQL database server instance. It simplifies common administrative tasks such as starting, stopping, restarting, reloading configuration, checking status, and promoting standby servers. It acts as a wrapper around the main PostgreSQL server process (<i>postmaster</i> or <i>postgres</i>), handling its signals and process management. It requires the data directory to be specified, typically via the <b>-D</b> option, to correctly identify and manage the target database cluster. While it can also initialize a new database cluster using the <i>initdb</i> command, its primary role is the operational control of an already initialized server.


title: CAVEATS
content:
<i>pg_ctl</i> must be run by the user who owns the PostgreSQL data directory. Running as root or another user can lead to permission issues or security vulnerabilities. Always ensure the correct data directory is specified with <b>-D</b>.<br>Using the <b>-P</b> option to force a server start is dangerous and can lead to data corruption if another server process is indeed running or if the <i>postmaster.pid</i> file is truly valid.


title: AVAILABLE COMMANDS
content:
<i>pg_ctl</i> takes one of several commands as its first argument to specify the desired action:<br><br><b>start</b>: Starts a new PostgreSQL server.<br><b>stop</b>: Shuts down the running PostgreSQL server.<br><b>restart</b>: Stops and then starts the PostgreSQL server. This is equivalent to running 'stop' then 'start'.<br><b>reload</b>: Sends a SIGHUP signal to the PostgreSQL server, causing it to reload its configuration files (e.g., <i>postgresql.conf</i>, <i>pg_hba.conf</i>) without requiring a full restart.<br><b>status</b>: Reports whether a PostgreSQL server is running in the specified data directory. If running, it shows its PID and start command.<br><b>promote</b>: Promotes a standby server to become a primary server. This command is crucial in replication setups.<br><b>kill &lt;signal_name&gt;</b>: Sends a specified signal (e.g., HUP, INT, QUIT, TERM) to the server process. Generally used for advanced troubleshooting.<br><b>logrotate</b>: Closes the server's current log file, allowing a new one to be opened. Useful for log rotation scripts.<br><b>initdb</b>: Initializes a new PostgreSQL database cluster in the specified data directory. This command should only be run once for a new cluster.<br><b>register</b> / <b>unregister</b>: (Windows-specific) Registers or unregisters the PostgreSQL server as a Windows service.


title: SHUTDOWN MODES
content:
When stopping the server with <b>pg_ctl stop -m &lt;mode&gt;</b>, you can choose from three shutdown modes:<br><br><b>smart</b> (default): Waits for all clients to disconnect. New connections are prevented. Once all clients are disconnected, the server shuts down. This is the safest mode.<br><b>fast</b>: Disconnects all clients immediately and rolls back all in-progress transactions. The server then shuts down. This mode is faster but can interrupt ongoing operations.<br><b>immediate</b>: Kills the <i>postmaster</i> process without any graceful shutdown. This is the fastest but also the most aggressive mode, equivalent to <code>kill -9</code>. It can lead to a crash recovery on the next startup and should only be used in emergencies.


title: HISTORY
content:
<i>pg_ctl</i> has been a fundamental utility in the PostgreSQL ecosystem since its early days (e.g., PostgreSQL 6.0 and earlier). Its introduction significantly simplified the administration of PostgreSQL servers by providing a consistent interface for common lifecycle operations, abstracting away the direct manipulation of <i>postmaster</i> signals. Over time, new commands like 'promote' were added to support advanced features such as streaming replication, but its core function as the primary server control utility has remained constant and central to PostgreSQL administration.


title: SYNOPSIS
content:
<b>pg_dump</b> [<i>connection-options</i>] [<i>option</i>...] [<i>dbname</i>]<br><br>Common <i>connection-options</i>:<br>  <b>-h</b> <i>hostname</i>   (Server host)<br>  <b>-p</b> <i>port</i>     (Server port)<br>  <b>-U</b> <i>username</i> (Connect as user)<br>  <b>-W</b>             (Force password prompt)


title: PARAMETERS
content:
<b><b>-f</b> <i>FILENAME</i>, <b>--file=</b><i>FILENAME</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output file or directory name. If omitted, the dump is written to standard output.<br><br><b><b>-F</b> <i>FORMAT</i>, <b>--format=</b><i>FORMAT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects the output format: <b>p</b> (plain SQL script), <b>c</b> (custom archive), <b>t</b> (tar archive), or <b>d</b> (directory archive).<br><br><b><b>-s</b>, <b>--schema-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump only the database schema (DDL statements), without any data.<br><br><b><b>-a</b>, <b>--data-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump only the data, without the schema (DDL statements).<br><br><b><b>-Z</b> <i>LEVEL</i>, <b>--compress=</b><i>LEVEL</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compresses the output file with the specified compression <i>LEVEL</i> (0-9). This option is only applicable for custom and tar archive formats.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose mode, displaying detailed progress messages and object information during the dump process.<br><br><b><b>-j</b> <i>NUM</i>, <b>--jobs=</b><i>NUM</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <i>NUM</i> jobs simultaneously during the dump. This option significantly speeds up the dump process and is only supported with the directory output format (<b>-F d</b>).<br><br><b><b>--clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes SQL commands to clean (DROP) objects before recreating them. This is useful for ensuring a clean slate during restoration.<br><br><b><b>--create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a CREATE DATABASE command to the dump, which is useful when restoring the database to a new instance.<br><br><b><b>--inserts</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps data as INSERT commands (instead of COPY FROM). This is only supported for the plain SQL format and can be much slower.<br><br><b><b>--if-exists</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses IF EXISTS clauses with DROP commands, preventing errors if an object doesn't exist during restoration with <b>--clean</b>.<br><br><b><b>-x</b>, <b>--no-owner</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents outputting commands to set object ownership, making the dump more portable across different PostgreSQL users.<br><br>


title: DESCRIPTION
content:
<i>pg_dump</i> is a utility for backing up a PostgreSQL database. It creates a database dump file, which can be an SQL script or an archive file in a custom format. The SQL script contains SQL commands to recreate the database objects (tables, indexes, functions, etc.) and data. The archive formats (custom, tar, directory) allow for more flexible restoration using <i>pg_restore</i>, including reordering of items, and parallel restoration.<br><br><i>pg_dump</i> produces a consistent snapshot of the database, even if the database is being actively used during the dump process. It does this by starting a transaction and dumping the data as it exists at the moment the transaction began. This makes it an essential tool for logical backups, migrations between different PostgreSQL versions, and creating development/testing environments.


title: CAVEATS
content:
<i>pg_dump</i> performs a <b>logical backup</b>, which recreates database contents via SQL commands. It does not capture the physical state of data files or WAL segments. For <b>point-in-time recovery</b> or physical backups of very large databases, <i>pg_basebackup</i> or file system level backups are typically more appropriate. While <i>pg_dump</i> ensures consistency via a snapshot, dumping extremely large databases can be time-consuming and resource-intensive on the server.


title: OUTPUT FORMATS
content:
<i>pg_dump</i> supports several output formats, each suited for different use cases:<br>  <b>Plain (p)</b>: Produces a simple SQL script file containing commands to recreate the database. It's human-readable and can be directly executed by <i>psql</i>.<br>  <b>Custom (c)</b>: A proprietary, flexible archive format that can be compressed and selectively restored using <i>pg_restore</i>. This is the most recommended format for general use.<br>  <b>Tar (t)</b>: Generates a standard Unix tar archive, with each table and blob as a separate file. While it can be manipulated with <i>tar</i>, it offers less flexibility than the custom format for restoration.<br>  <b>Directory (d)</b>: Creates a directory containing a file for each table and blob. This format is crucial for enabling parallel dumps using the <b>-j</b> (jobs) option.


title: DATA CONSISTENCY
content:
<i>pg_dump</i> ensures data consistency by initiating a single transaction and performing the entire dump within that transaction. This means the dump reflects the state of the database exactly as it was at the moment the <i>pg_dump</i> command began, even if concurrent updates or other transactions are occurring. This snapshot isolation is a key feature, guaranteeing a logically consistent backup or migration source.


title: HISTORY
content:
<i>pg_dump</i> has been a fundamental utility in the PostgreSQL ecosystem since its early days, evolving alongside the database server itself. Initially, it primarily produced plain SQL scripts for simple migrations. Over time, more sophisticated archive formats (custom, tar, directory) were introduced to provide greater flexibility for selective restoration, support for parallel dumps/restores, and better handling of large datasets, making it an indispensable tool for database administration and migration tasks.


title: PARAMETERS
content:
<b>-a, --data-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump only the data, not the schema (definitions).<br><br><b>-c, --clean</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include DROP commands for all dumped objects, ensuring they are removed before recreation during restore.<br><br><b>-g, --globals-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump only global objects (roles, tablespaces), no individual databases.<br><br><b>-s, --schema-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump only the schema (definitions), no data.<br><br><b>-f, --file=FILENAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send output to the specified file. If omitted, output goes to standard output.<br><br><b>-O, --no-owner</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output commands to set object ownership. All objects will be owned by the user running the restore.<br><br><b>-x, --no-privileges, --no-acl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent dumping of access privileges (GRANT/REVOKE commands).<br><br><b>--if-exists</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add IF EXISTS clauses to DROP commands (implies --clean). Useful to prevent errors if objects don't exist during restore.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose mode, showing progress and detailed object information.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the pg_dumpall version and exit.<br><br><b>-h, --host=HOSTNAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server host name or IP address to connect to.<br><br><b>-p, --port=PORT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server port number to connect to.<br><br><b>-U, --username=USERNAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;User name to connect as. Requires superuser privileges for a full dump.<br><br><b>-w, --no-password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Never prompt for password. If a password is required and not available, the connection attempt will fail.<br><br><b>-W, --password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force pg_dumpall to prompt for a password before connecting to a database.<br><br><b>-o, --oids</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include Object Identifiers (OIDs) in the dump. Rarely used for general backups.<br><br>


title: DESCRIPTION
content:
The <i>pg_dumpall</i> utility is used to extract a complete PostgreSQL database cluster into a script file. This dump includes definitions and data for all databases within the cluster, as well as global objects like database roles (users), tablespaces, and object access privileges (ACLs). The output of <i>pg_dumpall</i> is a SQL script that can be directly used with the <i>psql</i> command-line tool to recreate the entire cluster on another server or to restore it after a catastrophic failure. It connects to the <i>postgres</i> database as a superuser by default to gather global object information before iterating through each database to dump its contents using <i>pg_dump</i> internally. This command is crucial for full cluster backups, migrations, and disaster recovery planning.


title: CAVEATS
content:
<ul><li><br><i>pg_dumpall</i> requires superuser privileges on the database cluster to dump all objects and databases effectively.</li><li><br>The output file must be restored using <i>psql</i>. It is not compatible with <i>pg_restore</i>.</li><li><br>Does not dump configuration files like <i>pg_hba.conf</i>, <i>postgresql.conf</i>, or certificate files. These must be backed up separately.</li><li><br>Each database is dumped sequentially. While each individual database dump is transactionally consistent, global consistency across all databases at a single point in time is not guaranteed during a live cluster dump.</li><li><br>For very large clusters, the output file can be extremely large; ensure sufficient disk space.</li></ul>


title: RECOMMENDED USAGE PATTERN
content:
To perform a complete cluster backup and redirect the output to a file:<br><code>pg_dumpall &gt; all_databases.sql</code><br><br>To restore the cluster from the generated SQL script (typically on a freshly initialized cluster or after dropping all existing databases/roles):<br><code>psql -f all_databases.sql postgres</code><br>It's important to connect to the <i>postgres</i> database when restoring a full dump, as <i>pg_dumpall</i> handles the creation of databases and roles, which usually cannot be done from within another user database.


title: SECURITY CONSIDERATIONS
content:
Since <i>pg_dumpall</i> requires superuser access to the database cluster, it is critical to run it in a secure environment. For automation, consider using password files (e.g., <i>~/.pgpass</i>) or environment variables (e.g., PGUSER, PGPASSWORD) for credentials instead of embedding them directly in scripts for enhanced security.


title: HISTORY
content:
<i>pg_dumpall</i> has been an integral part of the PostgreSQL utility set for many years, serving as the primary method for performing full cluster backups. Its evolution has focused on ensuring compatibility across various PostgreSQL versions and improving its ability to handle complex cluster configurations, including global objects like roles and tablespaces. It remains a cornerstone utility for disaster recovery and migration strategies within the PostgreSQL ecosystem.


title: SYNOPSIS
content:
<b>pg_isready</b> [<i>-d</i>] [<i>-h</i> <i>host</i>] [<i>-p</i> <i>port</i>] [<i>-q</i>] [<i>-t</i> <i>timeout</i>] [<i>-U</i> <i>username</i>]


title: PARAMETERS
content:
<b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show debugging output. This provides more verbose information about the connection attempt.<br><br><b><b>-h</b> <i>host</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the host name or IP address of the database server to connect to. Defaults to the <i>PGHOST</i> environment variable or 'localhost'.<br><br><b><b>-p</b> <i>port</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the TCP port number on which the database server is listening. Defaults to the <i>PGPORT</i> environment variable or '5432'.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet mode. Suppresses any output from <i>pg_isready</i>, returning only an exit status code.<br><br><b><b>-t</b> <i>timeout</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of seconds to wait for a connection attempt. If the connection is not established within this time, <i>pg_isready</i> returns an exit status of 2. Defaults to 3 seconds.<br><br><b><b>-U</b> <i>username</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the database user name to connect as. Defaults to the <i>PGUSER</i> environment variable or the current operating system user.<br><br>


title: DESCRIPTION
content:
<i>pg_isready</i> is a lightweight utility designed to check the connection status of a PostgreSQL server. It attempts to establish a connection to a specified PostgreSQL instance and reports whether the server is accepting connections, rejecting them, or if the connection attempt failed due to a timeout or other unresolvable errors. This command is particularly useful for scripting, monitoring systems, and startup scripts, allowing automated processes to verify server availability before proceeding. It provides clear exit codes, making it easy to integrate into shell scripts for conditional execution. Users can specify the target host, port, username, and a connection timeout.


title: CAVEATS
content:
<i>pg_isready</i> only checks if the PostgreSQL server is reachable and accepting connections. It <b>does not</b> verify if the database itself is fully operational, if specific databases exist, or if the user has privileges for any particular operation. A successful connection status (exit code 0) only indicates network reachability and that the server's PostgreSQL service is running and configured to accept connections on the specified address and port. It does not validate the integrity or health of the database contents.


title: EXIT STATUSES
content:
<i>pg_isready</i> returns specific exit codes to indicate the server's status:<br><br><ul><li><I>0</I>: The server is <b>accepting connections</b>.</li><li><I>1</I>: The server is <b>rejecting connections</b>. This might be due to configuration (e.g., <i>pg_hba.conf</i> rules, or <i>max_connections</i> limit).</li><li><I>2</I>: A connection attempt <b>timed out or an unresolvable error occurred</b> (e.g., host not found, network unreachable, server not running).</li></ul>


title: ENVIRONMENT VARIABLES
content:
<i>pg_isready</i> respects the following environment variables for default connection parameters, which can be overridden by command-line options:<br><br><ul><li><I>PGHOST</I>: Default host.</li><li><I>PGPORT</I>: Default port.</li><li><I>PGUSER</I>: Default user.</li></ul>


title: HISTORY
content:
The <i>pg_isready</i> utility was introduced in PostgreSQL to provide a standardized, script-friendly way to check the server's availability. Prior to its existence, users often relied on more complex methods, such as attempting a connection with <i>psql</i> and parsing its output, or using generic network tools like <i>netcat</i>. <i>pg_isready</i> simplifies this task by offering distinct exit codes for various connection states, thereby streamlining monitoring and automation scripts for PostgreSQL administrators and developers.


title: PARAMETERS
content:
<b><b>-d</b> <I>DBNAME</I>, <b>--dbname</b>=<I>DBNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the database <I>DBNAME</I> on the target server. This specifies the database to which <i><b>pg_restore</b></i> should restore.<br><br><b><b>-F</b> <I>FORMAT</I>, <b>--format</b>=<I>FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the format of the archive file. Valid formats are <b>c</b> (custom), <b>d</b> (directory), <b>t</b> (tar), or <b>p</b> (plain, for compatibility only, usually requires <i><b>psql</b></i>).<br><br><b><b>-h</b> <I>HOSTNAME</I>, <b>--host</b>=<I>HOSTNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the host name of the machine on which the database server is running. If omitted, it defaults to a local Unix domain socket connection.<br><br><b><b>-p</b> <I>PORT</I>, <b>--port</b>=<I>PORT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the TCP port or local Unix domain socket file extension on which the database server is listening for connections.<br><br><b><b>-U</b> <I>USERNAME</I>, <b>--username</b>=<I>USERNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the database as the user <I>USERNAME</I>.<br><br><b><b>-W</b>, <b>--password</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force <i><b>pg_restore</b></i> to prompt for a password before connecting to the database.<br><br><b><b>-c</b>, <b>--clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clean (drop) database objects before recreating them. This is useful for overwriting an existing database.<br><br><b><b>-C</b>, <b>--create</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create the database before restoring into it. This will also issue a <i>CONNECT</i> command to the newly created database.<br><br><b><b>-j</b> <I>NUM</I>, <b>--jobs</b>=<I>NUM</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <I>NUM</I> parallel jobs to restore the database objects. This significantly speeds up the restoration process on multi-core systems, especially for large archives.<br><br><b><b>-L</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the contents of the archive file. The output can be redirected to a file and edited to select or reorder items for restoration.<br><br><b><b>-a</b>, <b>--data-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore only the data, not the schema (definitions) of objects.<br><br><b><b>-s</b>, <b>--schema-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore only the schema (definitions), not the data.<br><br><b><b>-t</b> <I>TABLE</I>, <b>--table</b>=<I>TABLE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore only the definition and/or data of the specified table. Multiple <i><b>-t</b></i> options can be given.<br><br><b><b>-n</b> <I>SCHEMA</I>, <b>--schema</b>=<I>SCHEMA</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore only the definition and/or data of the specified schema. Multiple <i><b>-n</b></i> options can be given.<br><br><b><b>-O</b>, <b>--no-owner</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not set ownership of objects to the original owners. All objects will be owned by the user connecting to the database (specified by <i><b>-U</b></i>).<br><br><b><b>-x</b>, <b>--no-privileges</b>, <b>--no-acl</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not restore access privileges (ACLs). All objects will have default privileges.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose mode. This prints detailed information about the restoration process to standard output.<br><br>


title: DESCRIPTION
content:
<i><b>pg_restore</b></i> is a powerful utility designed to restore a PostgreSQL database from an archive file created by <i><b>pg_dump</b></i>. Unlike simply replaying a plain-text SQL script, <i><b>pg_restore</b></i> can work with flexible archive formats (custom, directory, or tar format), offering significant advantages for large and complex restorations.<br><br>It provides granular control, allowing users to restore an entire database, specific tables, schemas, or even individual database objects like functions or indexes. This selective restoration capability is invaluable for development, testing, or disaster recovery scenarios where only parts of a database need to be recreated.<br><br><i><b>pg_restore</b></i> connects to a running PostgreSQL server to perform the restore operations. It supports parallel restoration via the <i><b>-j</b></i> (<i>--jobs</i>) option, which can dramatically speed up the process for multi-core systems and large datasets. It's the go-to tool for restoring backups created with <i><b>pg_dump</b></i>'s custom or directory formats, which are generally preferred for their flexibility and efficiency over plain-text dumps.


title: CAVEATS
content:
<i><b>pg_restore</b></i> requires a running PostgreSQL server to connect to and restore data. It cannot directly process plain-text SQL dump files; for those, use <i><b>psql -f</b></i>. Ensure the user performing the restore has sufficient privileges on the target database and objects. When using the <i><b>--clean</b></i> option, be aware that existing objects will be dropped, which is a destructive operation.


title: ARCHIVE FORMATS
content:
<i><b>pg_restore</b></i> is primarily used with the custom (<i>-Fc</i>), directory (<i>-Fd</i>), and tar (<i>-Ft</i>) archive formats generated by <i><b>pg_dump</b></i>. These formats contain more metadata than plain-text SQL scripts, allowing for selective restoration and parallel processing. The directory format is especially useful for large backups, as it generates multiple files for different object types, making it easier to manage and transfer.


title: PLAIN-TEXT DUMPS
content:
If your <i><b>pg_dump</b></i> output is a plain-text SQL script (the default), you should use the <i><b>psql</b></i> command-line tool to restore it. For example: <i><b>psql -d mydatabase -f mydump.sql</b></i>. <i><b>pg_restore</b></i> is designed for the more flexible, non-plain-text archive formats.


title: HISTORY
content:
<i><b>pg_restore</b></i> has been an integral part of the PostgreSQL utility suite since its early versions, evolving alongside the database to support new features, object types, and performance optimizations. Its development has focused on providing robust, flexible, and efficient restoration capabilities for the various backup formats produced by <i><b>pg_dump</b></i>.


title: PARAMETERS
content:
<b><b>-i</b>, <b>--initialize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initializes the pgbench tables (pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers) in the specified database. This must be run before executing any benchmark.<br><br><b><b>-s</b> <I>factor</I>, <b>--scale</b>=<I>factor</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Multiplies the number of rows generated during initialization (`-i`). A scale factor of 1 creates 100,000 accounts. Larger factors create larger datasets.<br><br><b><b>-c</b> <I>clients</I>, <b>--client</b>=<I>clients</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of concurrent benchmark clients (sessions) that will connect to the database. Each client simulates a user running transactions.<br><br><b><b>-j</b> <I>threads</I>, <b>--jobs</b>=<I>threads</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of worker threads to use within pgbench. If multiple threads are used, clients are distributed among them. Default is 1.<br><br><b><b>-t</b> <I>transactions</I>, <b>--transactions</b>=<I>transactions</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of transactions each client will execute. The benchmark runs until all clients complete their specified transactions.<br><br><b><b>-T</b> <I>seconds</I>, <b>--time</b>=<I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the total duration of the benchmark in seconds. The benchmark will run for this specified time, overriding the number of transactions per client.<br><br><b><b>-f</b> <I>filename</I>, <b>--file</b>=<I>filename</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads transaction scripts from the specified file(s) instead of using the built-in benchmark. Allows for custom workload simulation.<br><br><b><b>-D</b> <I>var</I>=<I>value</I>, <b>--define</b>=<I>var</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a variable for use within custom SQL scripts. Variables can be referenced as `$(var)` within the script.<br><br><b><b>-M</b> <I>name</I>, <b>--builtin</b>=<I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a built-in benchmark script. Available options include `tpcb-like` (default), `simple-update`, `select-only`, etc.<br><br><b><b>-R</b> <I>rate</I>, <b>--rate</b>=<I>rate</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a target transaction rate in transactions per second. pgbench will attempt to maintain this rate, introducing delays if necessary.<br><br><b><b>-L</b> <I>ms</I>, <b>--latency-limit</b>=<I>ms</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a latency limit in milliseconds. Transactions exceeding this limit are counted as 'late' and reported separately.<br><br><b><b>-l</b>, <b>--log</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes information about each individual transaction (start time, end time, client ID, transaction number, latency) to a log file.<br><br><b><b>-N</b>, <b>--no-vacuum</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the `VACUUM` and `ANALYZE` commands normally run after initialization (`-i`). Useful for testing the impact of un-vacuumed tables.<br><br><b><b>-P</b> <I>seconds</I>, <b>--progress</b>=<I>seconds</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a progress report every <I>seconds</I>, indicating the number of transactions processed and the current TPS.<br><br><b><b>-U</b> <I>username</I>, <b>--username</b>=<I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connects to the database as the specified user.<br><br><b><b>-h</b> <I>hostname</I>, <b>--host</b>=<I>hostname</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the database server host name or socket directory.<br><br><b><b>-p</b> <I>port</I>, <b>--port</b>=<I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the database server port number.<br><br>


title: DESCRIPTION
content:
pgbench is a simple program for running benchmark tests on PostgreSQL. It executes a predefined or custom sequence of SQL commands repeatedly, often in multiple concurrent sessions, to simulate real-world database load. The primary goal is to compute the average transaction rate (transactions per second, TPS) and measure transaction latency. <br>It comes with a built-in benchmark script that mimics a TPC-B-like workload, involving a mix of `UPDATE`, `INSERT`, `SELECT`, and `DELETE` operations. Users can also provide their own SQL scripts for more specific application workload simulation. pgbench is an invaluable tool for performance tuning, capacity planning, and regression testing of PostgreSQL database systems, helping identify bottlenecks and evaluate configuration changes.


title: CAVEATS
content:
pgbench measures performance from the client's perspective, which includes network latency. This might not always precisely reflect server-side bottlenecks. For accurate server performance analysis, it's recommended to run pgbench on a separate machine from the database server. The built-in benchmark scripts are generic; custom scripts are essential for simulating specific application workloads realistically.


title: TYPICAL WORKFLOW
content:
A common pgbench workflow involves first initializing the test database tables using `pgbench <b>-i</b> <I>dbname</I>`, often accompanied by a scaling factor (`<b>-s</b>`) to control the dataset size. After initialization, the benchmark is executed using `pgbench [<I>options</I>] <I>dbname</I>`, where key parameters like concurrent clients (`<b>-c</b>`), worker threads (`<b>-j</b>`), and total duration (`<b>-T</b>`) or transactions per client (`<b>-t</b>`) are specified. The output provides essential performance metrics.


title: KEY METRICS
content:
The primary output of pgbench highlights the <i>transactions per second (TPS)</i>, indicating the database's throughput under the simulated load. It also provides detailed latency statistics, including the average, minimum, maximum, and standard deviation of transaction execution times. For rate-controlled benchmarks, the number of 'late' transactions (exceeding a defined latency limit) is also reported. These metrics are crucial for assessing and comparing database performance under different configurations and loads.


title: HISTORY
content:
pgbench was first introduced in PostgreSQL 8.0, released in 2005, providing an integral benchmarking tool for the database system. Its inclusion addressed the need for a standardized, repeatable, and customizable way to measure PostgreSQL performance. Since its inception, it has undergone continuous development, gaining features such as support for custom SQL scripts, detailed transaction logging, progress reporting, and advanced rate/latency control options, evolving into a robust utility for performance analysis.


title: SYNOPSIS
content:
<b>pgcli</b> [<I>OPTIONS</I>] [<I>DSN</I>]<br><b>pgcli</b> [<I>OPTIONS</I>] <I>-h HOST</I> <I>-p PORT</I> <I>-U USER</I> <I>-d DBNAME</I>


title: PARAMETERS
content:
<b><I>--host &lt;hostname&gt;</I>, <I>-h &lt;hostname&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect to the database server at the specified `hostname`.<br><br><b><I>--port &lt;port&gt;</I>, <I>-p &lt;port&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Port number to connect to on the database server.<br><br><b><I>--user &lt;username&gt;</I>, <I>-U &lt;username&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect as the specified `username`.<br><br><b><I>--dbname &lt;dbname&gt;</I>, <I>-d &lt;dbname&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database name to connect to.<br><br><b><I>--password</I>, <I>-W</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force <b>pgcli</b> to prompt for a password before connecting.<br><br><b><I>--dsn &lt;dsn_string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Connect using a full DSN (Data Source Name) connection string.<br><br><b><I>--version</I>, <I>-v</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the <b>pgcli</b> version and exit.<br><br><b><I>--help</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b><I>--execute &lt;command&gt;</I>, <I>-e &lt;command&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified command (SQL statement or internal <b>pgcli</b> command) and exit.<br><br><b><I>--query-file &lt;file&gt;</I>, <I>-f &lt;file&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute queries from the specified file and then exit.<br><br><b><I>--list-dsn</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all saved DSNs from the configuration file.<br><br><b><I>--prompt-dsn</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompt for DSN selection from a list of saved DSNs.<br><br><b><I>--pgclirc &lt;path&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom path to the <b>pgcli</b> configuration file.<br><br><b><I>--single-connection</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a single database connection for the entire session.<br><br><b><I>--local-file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable reading and writing files on the local filesystem (disabled by default for security).<br><br><b><I>--csv</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output query results in CSV (Comma Separated Values) format.<br><br><b><I>--tsv</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output query results in TSV (Tab Separated Values) format.<br><br><b><I>--json</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output query results in JSON format.<br><br><b><I>--table-format &lt;format&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the output format for tables (e.g., `psql`, `plain`, `simple`).<br><br><b><I>--logfile &lt;file&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log SQL statements and internal commands to the specified file.<br><br><b><I>--debug</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug mode for more verbose output and troubleshooting.<br><br><b><I>--auto-vertical-output</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically switch to vertical output for wide tables that don't fit the screen.<br><br><b><I>--row-limit &lt;num&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the number of rows displayed in query results.<br><br><b><I>--skip-casing</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip casing transformation during auto-completion for identifiers.<br><br><b><I>--expansion-mode &lt;mode&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the expansion mode for JSON/HSTORE columns (e.g., `no-json`, `json`).<br><br>


title: DESCRIPTION
content:
<b>pgcli</b> is a powerful and user-friendly command-line interface for PostgreSQL databases, designed to significantly enhance developer productivity. Built on <i>Pygments</i> for syntax highlighting and <i>prompt_toolkit</i> for intelligent auto-completion, it offers a superior interactive experience compared to traditional <b>psql</b>. Key features include context-aware suggestions for tables, columns, SQL keywords, and functions, ensuring fewer typing errors and faster query construction. It also provides automatic formatting of query results into readable tables, complete with support for vertical output for wide datasets. <b>pgcli</b> supports connection via DSN (Data Source Name) or individual parameters, session logging, and execution of SQL scripts from files. Its intuitive design and rich feature set make it an invaluable tool for anyone working with PostgreSQL from the terminal.


title: CAVEATS
content:
While <b>pgcli</b> offers a rich interactive experience and improved usability over traditional clients, very large query results might still benefit from piping to external pagers for optimal performance. Additionally, some highly specific or advanced `psql` features, such as direct meta-command piping to shell commands, might require alternative approaches or are not directly supported.


title: INTERNAL COMMANDS
content:
<b>pgcli</b> supports many <b>psql</b>-like internal commands, often prefixed with a backslash (`\`). Examples include `\d` (describe table), `\dt` (list tables), `\l` (list databases), `\dn` (list schemas), and `\sf` (show function definition). These commands provide quick access to database metadata and common administrative tasks without writing full SQL queries.


title: CONFIGURATION FILE
content:
<b>pgcli</b> can be extensively configured via a `~/.config/pgcli/config` file (or `~/.pgclirc` on older versions). This file allows customizing various aspects of the client, including key bindings, auto-completion behavior, session logging, default table formats, color schemes, and DSN entries, tailoring the experience to individual user preferences and workflows.


title: HISTORY
content:
Developed by Amjith Ramanujam, <b>pgcli</b> was first released in 2015, quickly gaining popularity as an open-source project. Its primary goal was to provide a more intuitive and feature-rich command-line interface for PostgreSQL users, addressing common pain points found in traditional tools. The project has since seen continuous development, driven by community contributions, focusing on enhancing user experience through intelligent features like smart auto-completion and syntax highlighting, making it a staple for many PostgreSQL developers and DBAs.


title: PARAMETERS
content:
<b><b>-t</b> <i>threshold</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum feature strength threshold. Features below this value are ignored.<br><br><b><b>-s</b> <i>scale</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the image scale factor before processing (e.g., 0.5 for half size).<br><br><b><b>-k</b> <i>value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjusts the sensitivity parameter for the feature detection algorithm.<br><br><b><b>-o</b> <i>output_format</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format for detected points (e.g., <b>xy</b>, <b>xy_strength</b>, <b>json</b>).<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing progress and detailed statistics.<br><br>


title: DESCRIPTION
content:
<i><br>This entry describes 'pgmbentley' as a specialized, hypothetical command-line utility designed to process Portable Graymap (PGM) image files. Its imagined primary function is to identify and extract "Bentley features" or "Bentley points" within an input grayscale image. These features are typically interest points or corners, crucial in computer vision for tasks such as image registration, object recognition, or tracking.<br><br>The command would theoretically implement a variant of a corner detection algorithm, similar to or inspired by techniques like the Harris corner detector, which can be historically linked to concepts developed by figures like Bentley. Users would provide a PGM image, and 'pgmbentley' would output coordinates of detected features, potentially with associated strength values. This hypothetical tool aims to provide a fast, non-interactive way to perform fundamental image analysis crucial for more complex vision pipelines, allowing for automation in batch processing of image sets. Its strength would lie in its focused purpose and seamless integration into typical Unix-like workflows.</i>


title: CAVEATS
content:
<i>This command is presented as a hypothetical utility. It does not exist as a standard Linux command or widely distributed open-source tool. The details provided are speculative, illustrating what such a command might entail given its presumed name.</i>


title: HYPOTHETICAL USE CASE
content:
<i>'pgmbentley' could be used in automated image analysis pipelines where large datasets of grayscale images need to be processed for key point identification. For example, in photogrammetry or motion tracking, it could quickly extract stable reference points between frames or images to aid in alignment or reconstruction.</i>


title: OUTPUT STRUCTURE
content:
<i>The command would typically output a list of detected feature coordinates (X, Y), possibly accompanied by their strength or scale, to standard output or a specified file. This plain-text output would be easily parsable by other scripts or programs for further processing.</i>


title: HISTORY
content:
<i>As a hypothetical command, 'pgmbentley's history is imagined. It could have originated from a research project in computer vision focusing on efficient feature extraction from low-resolution grayscale images. Its name suggests a potential connection to early work on corner detection or image understanding, possibly developed by a team at an academic institution or a specialized engineering firm. The 'pgm' prefix implies its design around the simple and widely supported Portable Graymap format, allowing for straightforward integration into various image processing workflows without complex library dependencies. Its development might have been driven by the need for a lightweight, command-line tool for automated feature analysis in batch processing scenarios.</i>


title: SYNOPSIS
content:
<b>pgmcrater</b> [<i>-width=<I>pixels</I></i>] [<i>-height=<I>pixels</I></i>] [<i>-radius=<I>pixels</I></i>] [<i>-maxval=<I>value</I></i>] [<i>-absolute</i>] [<i>-smooth</i>] [<i>-edge=<I>percent</I></i>] [<i>-depth=<I>value</I></i>]


title: PARAMETERS
content:
<b><i>-width=<I>pixels</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the width of the generated image in pixels. If omitted, a default width is used (often 256 or derived from height).<br><br><b><i>-height=<I>pixels</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the height of the generated image in pixels. If omitted, a default height is used (often 256 or derived from width).<br><br><b><i>-radius=<I>pixels</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the radius of the crater in pixels. If not specified, it defaults to half of the smaller dimension (width or height).<br><br><b><i>-maxval=<I>value</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the maximum gray value for the PGM image. This value must be between 1 and 65535, inclusive. It defaults to 255, creating an 8-bit image.<br><br><b><i>-absolute</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Changes the calculation for the crater profile, making the radius an absolute value rather than scaled relative to the image dimensions. This option is less commonly used for typical crater effects.<br><br><b><i>-smooth</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a smoothing function to the crater's profile, resulting in a less abrupt and more gradual transition from the edge to the center of the depression.<br><br><b><i>-edge=<I>percent</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used in conjunction with <b>-smooth</b>. Specifies the percentage of the radius that forms the smoothed 'edge' region of the crater. For example, 10 means 10% of the radius is the smoothed transition area. This option is only effective when <b>-smooth</b> is also specified.<br><br><b><i>-depth=<I>value</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum depth of the crater relative to the <i>maxval</i>. A value of 1 (the default) means the center will be 0 (black), creating the deepest crater. A value of 0 means no depth variation (a flat, uniform gray image). Values between 0 and 1 create various shades of gray for the center point, making the crater shallower.<br><br>


title: DESCRIPTION
content:
The <b>pgmcrater</b> command is a utility from the Netpbm package that creates a Portable Graymap (PGM) image representing a radially symmetric depression, often described as a 'crater'. The image pixels are brightest at the edges and progressively darker towards the center, mimicking a topographic depression or a grayscale radial gradient. This tool is valuable for generating various grayscale patterns, test images, or as a fundamental building block for more intricate image manipulations within the Netpbm suite. It outputs the generated PGM image to standard output, which can then be piped to other Netpbm utilities for further processing or redirected to a file for storage.


title: CAVEATS
content:
<b>pgmcrater</b> generates its output directly to standard output (stdout). To save the resulting image, you must redirect stdout to a file (e.g., <code>pgmcrater -width=200 -height=150 &gt; crater.pgm</code>) or pipe it to another command (e.g., <code>pgmcrater | pgmtoppm &gt; crater.ppm</code>). It does not read any input from standard input.


title: USAGE EXAMPLES
content:
To create a 200x150 PGM image with a default crater and save it to a file:<br><code>pgmcrater -width=200 -height=150 &gt; my_crater.pgm</code><br><br>To create a smoothed crater with a lower maximum gray value (lighter appearance) and a specific edge:<br><code>pgmcrater -width=300 -height=300 -smooth -maxval=127 -edge=15 &gt; smooth_crater.pgm</code><br><br>To pipe the output to another Netpbm utility (e.g., to convert PGM to PPM format for color):<br><code>pgmcrater -width=400 -height=400 | pgmtoppm &gt; color_crater.ppm</code>


title: HISTORY
content:
<b>pgmcrater</b> is a component of the Netpbm project, a venerable and comprehensive toolkit for manipulating graphic images. Netpbm originated from the PBMplus package, which was developed by Jef Poskanzer in the late 1980s and early 1990s. The `pgmcrater` utility, like many Netpbm tools, adheres to the Unix philosophy of small, specialized programs that perform a single, efficient image transformation. Its development is focused on providing a fundamental building block for generating synthetic PGM images for a variety of purposes, from artistic effects to test patterns.


title: DESCRIPTION
content:
<i><b>pgmdeshadow</b></i> is a specialized command within the <i>Netpbm</i> toolkit designed to eliminate shadows from <i>Portable Graymap</i> (PGM) image files. <br><br>The program reads a PGM image as input and produces a shadow-free PGM image as output. Its core algorithm works by identifying the darkest regions within the image, which are assumed to be shadows, and then intelligently lightening them. Crucially, while it lightens these areas, it simultaneously strives to preserve the overall contrast and visual integrity of the image. This prevents the output from appearing flat or washed out after shadow removal.<br><br>The command is particularly effective when dealing with images where the shadows are fairly uniform in their darkness and the image content outside the shadows is relatively consistent. It's often used in pipelines with other <i>Netpbm</i> utilities for more complex image manipulation tasks.


title: CAVEATS
content:
The effectiveness of <i><b>pgmdeshadow</b></i> relies on specific assumptions about the input image. It works best when the image is relatively uniform except for shadows, and when the shadows themselves are consistent in their darkness. If these conditions are not met, the algorithm may not produce optimal results, potentially leading to undesired artifacts or an incomplete shadow removal. It's not a universal shadow removal tool for all types of images and complex lighting conditions.


title: HISTORY
content:
<i><b>pgmdeshadow</b></i> is an integral part of the <i>Netpbm</i> project, a widely used toolkit for image manipulation. Its original algorithm was derived from a program called <i>despeckle</i>, authored by Miguel de Icaza. The specific adaptation and integration into <i>Netpbm</i>, along with further modifications and improvements, were carried out by Bryan Henderson. Its inclusion enhances <i>Netpbm's</i> capabilities for automated image correction, particularly for graymap data.


title: PARAMETERS
content:
<b><i>pgmfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the portable graymap (PGM) image file to be enhanced. If this argument is omitted, <i>pgmenhance</i> reads the PGM image data from standard input (stdin).<br><br>


title: DESCRIPTION
content:
<i>pgmenhance</i> is a utility from the Netpbm toolkit designed to improve the visual quality of portable graymap (PGM) images. It reads a PGM image, typically from a specified file or standard input, and applies an enhancement algorithm. This enhancement usually involves linearly scaling the pixel values to utilize the full dynamic range available in the PGM format, effectively increasing the contrast and brightness of the image. The goal is to make dull or low-contrast grayscale images more distinct and vibrant. The processed image is then written to standard output. This command is particularly useful in shell scripting for basic image manipulation pipelines.


title: CAVEATS
content:
The enhancement performed by <i>pgmenhance</i> is a simple linear scaling of pixel values. For more advanced or non-linear image adjustments (e.g., histogram equalization, gamma correction, or adaptive contrast), other specialized tools or libraries would be more appropriate.<br>This command is specifically designed for PGM (grayscale) images. It does not work directly with color images (PPM); they would first need to be converted to PGM format.


title: STANDARD INPUT AND OUTPUT
content:
<i>pgmenhance</i> is designed to operate seamlessly within Unix-like pipelines. It reads its input PGM image from <i>pgmfile</i> or, if no file is specified, from standard input (stdin). The enhanced PGM image is always written to standard output (stdout). This allows for easy chaining with other Netpbm commands or redirection to a file.<br><b>Example:</b> <br><code><b>cat</b> input.pgm | <b>pgmenhance</b> > output.pgm</code>


title: HISTORY
content:
<i>pgmenhance</i> is part of the Netpbm project, a long-standing and widely used collection of graphics file format converters and image processing utilities. The Netpbm package originated from the `pbmplus` toolkit in the early 1990s. Its development has focused on providing simple, robust, and pipe-friendly tools for handling standard bitmap formats, making it a foundational component for many image-related scripting and batch processing tasks in Unix-like environments.


title: PARAMETERS
content:
<b>-u, --user <I>user_id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the program history to display only entries related to a specific <i>user</i> or <i>user_id</i>.<br><br><b>-p, --program <I>program_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the execution history for a particular <i>program_name</i>, ignoring other programs.<br><br><b>-t, --time <I>duration</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters entries by a time <i>duration</i>, such as '1 day', '2 weeks', 'last 3 hours', or a specific timestamp range (e.g., 'YYYY-MM-DD HH:MM:SS to YYYY-MM-DD HH:MM:SS').<br><br><b>-n, --lines <I>number</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the output to the last <i>number</i> of program execution entries.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays verbose details for each execution entry, potentially including process ID (PID), parent process ID (PPID), exit status, and full command-line arguments.<br><br><b>-s, --source <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the data <i>source</i> to query. Possible values could include 'shell' (for shell history), 'audit' (for system audit logs), or 'acct' (for process accounting data).<br><br><b>-o, --output <I>format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Formats the output in a specified <i>format</i>, such as 'json', 'csv', or 'plain' (default).<br><br><b>--system-wide</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays history for all users and system processes (requires appropriate permissions).<br><br>


title: DESCRIPTION
content:
The command <b>pgmhist</b> (Program History) is a hypothetical or non-standard Linux utility designed to display a comprehensive history of program executions on a system. It would aggregate information from various sources to provide insights into which programs were run, by whom, when, and possibly with what arguments. This command would be invaluable for system auditing, security analysis, troubleshooting, and understanding user activity. Unlike simple shell history, <b>pgmhist</b> aims to provide a system-wide view, potentially drawing data from process accounting, system audit logs, and shell history files to offer a unified timeline of program usage. Its utility lies in offering a detailed retrospective on system and user behavior, allowing administrators to track software usage patterns, identify unauthorized program executions, or diagnose issues by reviewing past command invocations.


title: CAVEATS
content:
This command, <b>pgmhist</b>, is <B>not</B> a standard Linux utility and is not distributed with major Linux distributions. Its functionality and existence are hypothetical in a general Linux context. Any implementation of such a command would be custom-built and would rely heavily on the availability and configuration of underlying system logging mechanisms, such as `auditd` rules for `execve` syscalls, process accounting (`acct`), and potentially a persistent storage solution (like a database) to efficiently store and query historical data. Therefore, the behavior described is conceptual and would depend entirely on a specific system's custom setup. Without proper configuration of data sources, this command would not be able to retrieve any information.


title: DATA SOURCES AND AGGREGATION
content:
A robust <b>pgmhist</b> implementation would require sophisticated data aggregation. It would ideally pull information from diverse sources:<br><br>1. <B>Shell History:</B> Files like <I>~/.bash_history</I>, <I>~/.zsh_history</I> for user-executed commands.<br>2. <B>Audit Logs:</B> System-wide logs generated by <I>auditd</I> (e.g., <I>/var/log/audit/audit.log</I>), configured to capture <I>execve</I> syscalls, providing details on all program executions, including those not run via an interactive shell.<br>3. <B>Process Accounting:</B> Files like <I>/var/account/pacct</I>, which record summary information about completed processes, including user, command, start/end times, and resource usage.<br><br>Combining these diverse data streams, filtering out redundant entries, and presenting them in a coherent chronological order would be a primary challenge for this command.


title: IMPLEMENTATION CONSIDERATIONS
content:
Developing a reliable <b>pgmhist</b> would involve several significant technical considerations. Firstly, it would need efficient parsers for various log formats and potentially a backend database (e.g., SQLite, PostgreSQL, or a specialized time-series database) to store and index the large volumes of historical data for quick querying. Secondly, handling permissions and security is critical; accessing system-wide audit and accounting logs typically requires root privileges, and the command itself would need to be designed securely. Lastly, performance would be a key concern, as querying vast historical datasets can be resource-intensive. Incremental updates, caching, and optimized indexing would be necessary for practical usage.


title: HISTORY
content:
As <b>pgmhist</b> is <B>not</B> a standard or widely recognized Linux command, there is no official development or usage history. Conceptually, a command named 'program history' could emerge from various needs within system administration and security. For instance, in environments requiring strict compliance (e.g., PCI DSS, HIPAA), the ability to audit program execution is crucial. Similarly, in incident response scenarios, understanding what programs were run by an attacker is vital. It might also find use in performance monitoring or resource management, by analyzing the frequency and duration of program usage. Such a utility would likely be either a custom script developed by system administrators for specific organizational needs or a component of a larger proprietary system management or security information and event management (SIEM) solution, rather than a standalone, general-purpose command.


title: SYNOPSIS
content:
<I>pgmkernel</I> [<b>-rows</b> <I>N</I>] [<b>-cols</b> <I>M</I>] <I>kernel_file</I> [<I>pgm_file</I>]


title: PARAMETERS
content:
<b><b>-rows</b> <I>N</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of rows (height) of the convolution kernel to use. If this option is omitted, the dimensions are read from the <I>kernel_file</I>. This option is primarily for backward compatibility or when the kernel file format doesn't explicitly begin with dimensions.<br><br><b><b>-cols</b> <I>M</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of columns (width) of the convolution kernel to use. If this option is omitted, the dimensions are read from the <I>kernel_file</I>. Similar to <b>-rows</b>, used for compatibility or specific kernel file formats.<br><br>


title: DESCRIPTION
content:
<I>pgmkernel</I> is a Netpbm utility that performs convolution on a Portable Graymap (PGM) image using a specified kernel. Convolution is a fundamental image processing operation used for various effects such as blurring, sharpening, edge detection, and embossing. The command reads a convolution kernel definition from a specified file and applies it to an input PGM image. The input image can be provided as a file argument or read from standard input. The resulting processed PGM image is written to standard output. It's an essential tool for advanced image manipulation within the Netpbm suite, allowing users to define custom image filters.


title: CAVEATS
content:
<ul><li>Pixels outside the image boundaries are treated as having a value of 0 during convolution. This can lead to dark edges depending on the applied kernel.</li><li>Output pixel values are clipped to the maximum allowed value for PGM images (typically 255 for 8-bit images, or the maxval specified in the PGM header).</li><li>The <b>-rows</b> and <b>-cols</b> options, if used, override the dimensions specified within the kernel file. However, the standard and most common practice is for the kernel file itself to explicitly define its dimensions.</li></ul>


title: KERNEL FILE FORMAT
content:
The <I>kernel_file</I> is a plain text file with the following structure:<br><br>1. The first line contains two integers: <I>width height</I> (unless <b>-rows</b> and <b>-cols</b> are used, in which case this line should simply be "rows cols").<br>2. The second line contains a single floating-point number: <I>divisor</I>. All calculated pixel values are divided by this number.<br>3. The subsequent <I>height</I> lines each contain <I>width</I> floating-point numbers, separated by whitespace, representing the kernel matrix values.<br><br>Example (3x3 blurring kernel with a divisor of 9.0):<br><pre>3 3<br>9.0<br>1.0 1.0 1.0<br>1.0 1.0 1.0<br>1.0 1.0 1.0</pre>


title: TYPICAL USAGE
content:
<I>pgmkernel</I> is commonly used in conjunction with pipes to process images from other Netpbm tools or to chain multiple operations:<br><pre>cat input.pgm | pgmkernel blur.kern > output.pgm<br>pnmtopgm image.pnm | pgmkernel sharpen.kern | pgmtopng > sharp_image.png</pre>This allows for the creation of flexible and powerful image processing pipelines.


title: HISTORY
content:
<I>pgmkernel</I> is an integral part of the Netpbm project, a comprehensive toolkit of graphics programs and a programming library designed for handling a wide array of image formats. It has been a core utility within the Netpbm suite for many years, offering a flexible method to apply custom image filters defined by convolution kernels. Its design adheres to the Unix philosophy of creating small, specialized tools that can be efficiently chained together in pipelines.


title: SEE ALSO
content:
<I>pgm</I>(5), <I>pnm</I>(5), <I>netpbm</I>(1), <I>pgmconv</I>(1), <I>pgmnoise</I>(1), <I>pgmmedian</I>(1)


title: SYNOPSIS
content:
<I>pgmmake</I> [<B>-maxval=N</B>] [<B>-plain</B>] <B>width</B> <B>height</B> [<B>pattern_name</B>]<br>


title: PARAMETERS
content:
<b><B>width</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The width of the generated PGM image in pixels.<br><br><b><B>height</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The height of the generated PGM image in pixels.<br><br><b><B>-maxval=N</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum gray value for the image. Defaults to 255. A lower value creates a darker image; a higher value allows for more intensity levels.<br><br><b><B>-plain</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the PGM image in plain (ASCII) format instead of the default raw (binary) format. Plain format is human-readable but larger.<br><br><b><B>pattern_name</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the pattern to be used for generating the image. Common patterns include 'fill' (default, solid gray), 'checkerboard', 'gradient', 'hlines', 'vlines', 'diagdown', 'diagup', 'circle', and 'random'.<br><br>


title: DESCRIPTION
content:
<i>pgmmake</i> is a utility from the <B>Netpbm</B> suite designed to create <I>Portable Graymap (PGM)</I> images based on user-defined dimensions and a specified pattern. It's particularly useful for generating test patterns, simple backgrounds, or placeholder images for development and testing purposes. Unlike image manipulation tools, <i>pgmmake</i> generates images from scratch, applying various built-in algorithms to produce visual effects such as gradients, checkerboards, or random noise. Users can control the image's <B>width</B>, <B>height</B>, and the <B>maximum gray value</B>, which determines the intensity range of the pixels. The generated image is output to standard output, making it easy to pipe to other Netpbm tools or save to a file. Its simplicity and focused functionality make it a valuable tool for quick image generation without needing complex graphical editors.<br>


title: CAVEATS
content:
<i>pgmmake</i> generates images from predefined patterns and does not support reading or modifying existing image files. Its output is limited to the PGM (graymap) format; for color images, other Netpbm tools like <I>ppm(5)</I> or <I>pam(5)</I> would be required. The available patterns are fixed and cannot be customized beyond their inherent parameters (e.g., gradient direction, checkerboard size are fixed within the pattern type).<br>


title: OUTPUT FORMAT
content:
By default, <i>pgmmake</i> outputs a raw PGM image, which is efficient for computer processing. The <B>-plain</B> option can be used to generate an ASCII representation, which is larger in file size but can be inspected or edited with a text editor.


title: PATTERN TYPES
content:
Beyond the default 'fill' pattern, <i>pgmmake</i> offers a variety of patterns: <B>checkerboard</B> for alternating squares, <B>gradient</B> for smooth transitions, <B>hlines</B> and <B>vlines</B> for horizontal/vertical stripes, <B>diagdown</B> and <B>diagup</B> for diagonal lines, <B>circle</B> for a circular pattern, and <B>random</B> for noise. Each pattern serves distinct purposes for testing or visual effects.


title: HISTORY
content:
<i>pgmmake</i> is an integral part of the <B>Netpbm</B> project, a well-established toolkit for graphics file format conversion and manipulation. The Netpbm suite originated from <B>Pbmplus</B> in the late 1980s, developed by Jef Poskanzer. Over the decades, it has evolved into a robust collection of hundreds of small, focused command-line utilities. <i>pgmmake</i> specifically provides a basic image generation capability within this ecosystem, reflecting the Netpbm philosophy of simple tools performing specific tasks that can be chained together via pipes. Its development has been incremental, ensuring compatibility and stability across various Unix-like systems.<br>


title: SYNOPSIS
content:
<B>pgmnoise</B> [-random | -gauss | -uniform | -saltandpepper]<br>[-value=<I>f</I>] [-threshold=<I>f</I>] [-randomseed=<I>n</I>]<br>[-nlines=<I>n</I>] [-ncols=<I>n</I>] [-x=<I>n</I>] [-y=<I>n</I>]<br>[-width=<I>n</I>] [-height=<I>n</I>] [-verbose] [-plain] [<I>pgmfile</I>]


title: PARAMETERS
content:
<b>-random</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds random white noise to the image. This is the default if no noise type is specified.<br><br><b>-gauss</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds Gaussian (normally distributed) noise to the image.<br><br><b>-uniform</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds uniform noise, where noise values are evenly distributed within a range.<br><br><b>-saltandpepper</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds salt-and-pepper noise, introducing extreme pixel values (pure black or white).<br><br><b>-value=<I>f</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum absolute value of the noise to be added. Its interpretation depends on the noise type.<br><br><b>-threshold=<I>f</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <i>-saltandpepper</i> noise to set the probability threshold (from 0 to 1) for a pixel becoming 'salt' or 'pepper'.<br><br><b>-randomseed=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the seed for the random number generator, allowing for reproducible noise patterns.<br><br><b>-nlines=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of lines (rows) in the image to apply noise to.<br><br><b>-ncols=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of columns in the image to apply noise to.<br><br><b>-x=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the x-coordinate (column) of the top-left corner of the rectangular region where noise will be applied.<br><br><b>-y=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the y-coordinate (row) of the top-left corner of the rectangular region where noise will be applied.<br><br><b>-width=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the width of the rectangular region for noise application.<br><br><b>-height=<I>n</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the height of the rectangular region for noise application.<br><br><b>-verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints informative messages about the noise generation process to standard error.<br><br><b>-plain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the resulting PGM image in plain (ASCII) format, which is human-readable but larger in size.<br><br><b><I>pgmfile</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the PGM image file to be processed. If omitted, <i>pgmnoise</i> reads from standard input.<br><br>


title: DESCRIPTION
content:
<i>pgmnoise</i> is a utility from the <B>Netpbm</B> image manipulation toolkit that adds various types of noise to a <B>Portable Graymap (PGM)</B> image. It can generate random, Gaussian, uniform, or salt-and-pepper noise. Users can specify the intensity of the noise, the threshold for salt-and-pepper, and even a specific rectangular region within the image to apply the noise. This command is often used for testing image processing algorithms, simulating real-world image degradation, or creating artistic effects. It reads a PGM image from standard input or a specified file and writes the modified PGM image to standard output.


title: CAVEATS
content:
<ul><li><i>pgmnoise</i> operates exclusively on <B>PGM</B> (Portable Graymap) images. It cannot directly process PPM (Portable Pixmap) or PBM (Portable BitMap) images.</li><li>Only one noise type option (<i>-random</i>, <i>-gauss</i>, <i>-uniform</i>, or <i>-saltandpepper</i>) can be specified at a time. The default is <i>-random</i> if none are provided.</li><li>The interpretation and effect of the <i>-value</i> and <i>-threshold</i> options vary significantly based on the chosen noise type.</li></ul>


title: INPUT/OUTPUT
content:
<i>pgmnoise</i> typically reads its input PGM image from standard input if no file argument is provided. The resulting noisy PGM image is always written to standard output. This design allows for easy piping with other Netpbm commands, such as <br><B>cat image.pgm | pgmnoise -gauss | pgmtopng > noisy.png</B>.


title: NOISE CHARACTERISTICS
content:
Different noise types have distinct characteristics. <i>Random noise</i> applies independent random values to each pixel. <i>Gaussian noise</i> generates values following a normal distribution, often used to simulate sensor noise. <i>Uniform noise</i> distributes values evenly within a range. <i>Salt-and-pepper noise</i> introduces extreme values (pure black or pure white pixels) at random locations, commonly simulating impulse noise. The <i>-value</i> option controls the magnitude of the noise, while <i>-threshold</i> is specific to salt-and-pepper noise, determining the probability of a pixel becoming salt or pepper.


title: HISTORY
content:
<i>pgmnoise</i> is an integral part of the <B>Netpbm</B> project, a long-standing open-source toolkit for graphics manipulation. Netpbm originated from Jef Poskanzer's PBMPlus package in the late 1980s, which provided tools for converting between various graphics formats and a simple, extensible set of image formats (PBM, PGM, PPM). <i>pgmnoise</i> embodies the Unix philosophy of small, specialized tools that do one thing well, making it a foundational component for basic image noise operations within this ecosystem.


title: SYNOPSIS
content:
<b>pgmnorm</b> <i>[-b blackval]</i> <i>[-w whiteval]</i> <i>[-m maxval]</i> <i>[-s]</i> <i>[-d]</i> <i>[pgmfile]</i>


title: PARAMETERS
content:
<b><b>-b</b> <i>blackval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input pixel value that should become black (0) in the output. By default, the darkest pixel in the input image determines the black point.<br><br><b><b>-w</b> <i>whiteval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input pixel value that should become white (the output maxval) in the output. By default, the brightest pixel in the input image determines the white point.<br><br><b><b>-m</b> <i>maxval</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum pixel value for the output PGM image. If not specified, the input image's maximum value is used.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates "spread" mode. Instead of clipping values outside the specified black and white points, <b>pgmnorm</b> stretches the values between <i>blackval</i> and <i>whiteval</i> to fill the entire output range [0, maxval].<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables diagnostic output, printing information about the black and white points found or used, and the mapping equation.<br><br><b><i>pgmfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input PGM image file. If omitted, <b>pgmnorm</b> reads image data from standard input.<br><br>


title: DESCRIPTION
content:
<b>pgmnorm</b> is a Netpbm utility that normalizes the contrast of a Portable Graymap (PGM) image. It achieves this by mapping a specified "black point" to the output image's darkest value (0) and a "white point" to its lightest value (maximum pixel value). By default, <b>pgmnorm</b> determines these points from the darkest and lightest pixels present in the input image. This process effectively stretches the image's tonal range to utilize the full available grayscale spectrum, often improving visual clarity in images that appear washed out or too dark. It can also handle specific value mapping and output maximum value adjustment.


title: CAVEATS
content:
<b>pgmnorm</b> operates exclusively on PGM (Portable Graymap) image files. For other image formats, they must first be converted to PGM using appropriate Netpbm tools (e.g., <b>anytoppm</b> followed by <b>ppmtopgm</b>).<br>The <b>-s</b> (spread) option can significantly alter the image's appearance by stretching a narrow range of pixel values to fill the entire dynamic range, potentially losing detail in areas outside the specified <i>blackval</i> and <i>whiteval</i> if not used carefully.


title: INPUT/OUTPUT
content:
<b>pgmnorm</b> reads a PGM image from <i>pgmfile</i> if specified, or from standard input otherwise. The processed PGM image is written to standard output. This allows for easy piping with other Netpbm utilities. For example: <b>cat image.pgm | pgmnorm -s | pgmtopng > output.png</b>.


title: HOW IT WORKS
content:
<b>pgmnorm</b> calculates a linear transformation from the input pixel values to the output pixel values. The transformation maps <i>blackval</i> to 0 and <i>whiteval</i> to the output <i>maxval</i>. Pixels darker than <i>blackval</i> are set to 0, and pixels brighter than <i>whiteval</i> are set to <i>maxval</i>. When the <i>-s</i> option is used, values outside the <i>[blackval, whiteval]</i> range are scaled into the output range rather than being clipped.


title: HISTORY
content:
<b>pgmnorm</b> is an integral part of the Netpbm project, a long-standing suite of graphics manipulation programs dating back to the early 1990s (originally PBMPlus). Netpbm tools are designed to be simple, efficient, and composable, often used together via Unix pipes. <b>pgmnorm</b> serves a fundamental role in image preprocessing, particularly for enhancing the visual quality of grayscale images by adjusting their contrast, making it a widely used tool within scripts and workflows dealing with scientific imaging, scanned documents, or general image analysis where tonal range optimization is crucial.


title: SYNOPSIS
content:
As 'pgmoil' is not a standard command, a universal synopsis cannot be provided.<br>If it exists as a custom script or program on a specific system, its syntax would depend entirely on how it was programmed.


title: DESCRIPTION
content:
The command 'pgmoil' is <I>not a standard utility</I> found in common Linux distributions (e.g., Debian, Ubuntu, Fedora, Arch Linux). It does not appear in standard manual pages or common package repositories. It is highly probable that 'pgmoil' is either a typo, a custom-developed script specific to a particular environment or organization, or an internal command within a very niche application or framework.<br><br>Without further context about its origin or intended use, specific details regarding its functionality, syntax, or options cannot be provided.


title: CAVEATS
content:
Since 'pgmoil' is not a standard command, its presence, behavior, and functionality are <I>entirely dependent on the specific system</I> or application where it might exist.<br>Users encountering this command should consult local system documentation, application manuals, or the script's source code (if available) to understand its purpose and usage.<br>Its absence from standard systems means it cannot be reliably expected to exist or function elsewhere.


title: HOW TO INVESTIGATE UNKNOWN COMMANDS
content:
If 'pgmoil' is found on your system, you might investigate its origin by:<br><i><ol><li>Checking your system's PATH: `which pgmoil`</li><li>Looking for its source code or related scripts in common locations like `/usr/local/bin`, `/opt`, or user-specific directories.</li><li>Consulting documentation for any specialized applications installed on the system that might use a command with this name.</li><li>Using `type pgmoil` to see if it's an alias, function, or external command.</li></ol></i>


title: HISTORY
content:
There is <I>no publicly documented history</I> for 'pgmoil' as a standard Linux command.<br>Its development and usage history would be limited to the specific environment or project where it was created, if it exists as a custom tool.


title: PARAMETERS
content:
<b><b>-a</b> <i>&lt;address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the multicast group IP address to join or send to.<br><br><b><b>-p</b> <i>&lt;port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the UDP port number for PGM communication.<br><br><b><b>-i</b> <i>&lt;interface&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the network interface (e.g., eth0) for multicast operations. This argument is often mandatory.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates sender mode, causing <i>pgmramp</i> to transmit PGM messages.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates receiver mode, causing <i>pgmramp</i> to listen for incoming PGM messages.<br><br><b><b>-b</b> <i>&lt;rate&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the base message rate (messages per second) for the ramp, or a fixed rate if no ramp is configured.<br><br><b><b>-l</b> <i>&lt;length&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the length of each PGM message in bytes.<br><br><b><b>-c</b> <i>&lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the total number of messages to send or expect during the test.<br><br><b><b>-d</b> <i>&lt;duration&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the test duration in seconds, after which <i>pgmramp</i> will terminate.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing detailed progress, statistics, and diagnostic information.<br><br><b><b>-w</b> <i>&lt;delay&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Introduces a delay (in seconds) between ramp steps or during intermittent sending.<br><br><b><b>-z</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to use zero-copy transmission/reception where supported by the underlying system for improved performance.<br><br><b><b>-t</b> <i>&lt;ttl&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the IP Time-To-Live (TTL) for outgoing multicast packets, controlling their hop limit.<br><br>


title: DESCRIPTION
content:
<i>pgmramp</i> is a specialized command-line utility designed for testing and benchmarking Pragmatic General Multicast (PGM) implementations, particularly within the OpenPGM library ecosystem. It facilitates the generation and reception of PGM multicast traffic with a 'ramping' behavior, meaning it can vary the message rate, message size, or other parameters over time. This makes it invaluable for stress testing network infrastructures, validating PGM application performance under different load conditions, and diagnosing network-related issues in multicast environments. It typically operates in two modes: a sender mode, which transmits PGM packets, and a receiver mode, which listens for and reports on incoming PGM traffic.


title: CAVEATS
content:
<i>pgmramp</i> is not a standard, widely distributed Linux utility; it is primarily found as part of the <i>OpenPGM</i> library development packages or specific network testing environments. Its effective use requires a solid understanding of multicast networking and the <i>PGM</i> protocol. Network configuration, including multicast routing, firewall rules, and interface settings, is crucial for successful operation. It's intended as a testing tool, not for general-purpose application traffic.


title: MODES OF OPERATION
content:
<i>pgmramp</i> operates in two distinct modes, determined by the command-line options:<br><br><b>Sender Mode</b> (activated with <i>-s</i>): When run in sender mode, <i>pgmramp</i> transmits PGM messages to a specified multicast group. It can be configured to ramp up the message rate, message size, or send a specific count of packets over a duration, allowing for stress testing of receivers and the underlying network infrastructure.<br><br><b>Receiver Mode</b> (activated with <i>-r</i>): When run in receiver mode, <i>pgmramp</i> listens for incoming PGM messages on a specified multicast group. It reports on received packet counts, missing packets, and other relevant statistics, enabling evaluation of multicast delivery reliability and performance characteristics.


title: HISTORY
content:
<i>pgmramp</i> originated as a diagnostic and performance testing utility within the <i>OpenPGM</i> project, an open-source implementation of the Pragmatic General Multicast (PGM) reliable multicast protocol. Its development has focused on providing a robust tool for verifying the functionality and evaluating the performance of PGM across various network topologies and load conditions, aiding in the development and deployment of PGM-based applications.


title: SYNOPSIS
content:
<b>pgmslice</b> <i>[-N]</i> <i>[-M]</i> <i>[pgmfile]</i> <br><br><i>Where:</i><br><b>-N</b>: Specifies the number of horizontal slices (rows).<br><b>-M</b>: Specifies the number of vertical slices (columns).<br><b>pgmfile</b>: The input PGM file. If omitted, reads from standard input.


title: PARAMETERS
content:
<b>-N</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of horizontal slices (rows) to divide the image into. This determines how many rows of subimages will be created.<br><br><b>-M</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the number of vertical slices (columns) to divide the image into. This determines how many columns of subimages will be created.<br><br><b>pgmfile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input Portable Graymap (PGM) image file. If this argument is omitted, <i>pgmslice</i> will read its input from standard input (stdin).<br><br>


title: DESCRIPTION
content:
<i>pgmslice</i> is a versatile utility provided as part of the extensive NetPBM toolkit, specialized in the manipulation of Portable Graymap (PGM) images. Its primary function is to systematically slice a single input PGM image into an array of smaller, equally sized PGM subimages. The user defines the grid by specifying the number of horizontal slices (rows) and the number of vertical slices (columns) into which the original image should be divided. <br><br> Upon execution, <i>pgmslice</i> reads the PGM image, either from a specified file or from standard input, and then computes the dimensions for each resulting subimage. It outputs all generated subimages sequentially, concatenated together, to standard output. This output structure typically requires piping to other NetPBM utilities or redirection to separate files if individual access to each slice is required. This command is invaluable for tasks such as preparing image tiles for web display, segmenting medical scans, or dissecting satellite imagery for detailed analysis, providing a programmatic way to deconstruct larger graymap visuals into their constituent parts.


title: CAVEATS
content:
<i>pgmslice</i> exclusively operates on Portable Graymap (PGM) images. It does not support other image formats directly. <br><br> The command outputs all generated slices concatenated to standard output. This means that to obtain individual image files, the output must typically be piped to another NetPBM utility like <b>pamstack -force</b> and then processed, or redirected carefully to separate files using shell scripting. <br><br> If the original image's dimensions are not perfectly divisible by the specified number of rows (<b>-N</b>) and columns (<b>-M</b>), the last slices in each row or column will have smaller dimensions than the preceding ones, as <i>pgmslice</i> maintains the starting coordinates but truncates the size.


title: HISTORY
content:
<i>pgmslice</i> is an integral part of the NetPBM package, a long-standing and widely used collection of graphics manipulation programs. NetPBM itself evolved from Jef Poskanzer's PBMplus toolkit, first released in 1988. Over the decades, NetPBM has been continuously maintained and expanded by various contributors, becoming a robust and essential utility suite for Unix-like systems. <i>pgmslice</i> fits into this ecosystem as a specialized tool for PGM image segmentation, demonstrating the modular design philosophy of NetPBM, where each command performs a specific image processing task. Its development is tied to the overall evolution and maintenance of the NetPBM project, focusing on command-line efficiency and interoperability with other tools.


title: SYNOPSIS
content:
<i>pgmtexture</i> <b>-width</b> <i>N</i> <b>-height</b> <i>N</i> <b>-texture</b> <i>texturefile</i> [<b>-xtexture</b> <i>X</i>] [<b>-ytexture</b> <i>Y</i>] [<b>-random</b> | <b>-seed</b> <i>N</i>] [<b>-xrandom</b> <i>X</i>] [<b>-yrandom</b> <i>Y</i>] [<b>-xrandomstep</b> <i>X</i>] [<b>-yrandomstep</b> <i>Y</i>] [<b>-invert</b>] [<b>-halftonemap</b> <i>halftonefile</i>] [<b>-comment</b> <i>text</i>]


title: PARAMETERS
content:
<b><b>-width</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <b>width</b> of the output PGM image in pixels.<br><br><b><b>-height</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <b>height</b> of the output PGM image in pixels.<br><br><b><b>-texture</b> <i>texturefile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the PGM file to use as the <b>texture map</b>.<br><br><b><b>-xtexture</b> <i>X</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial <b>X-offset</b> for texture placement when tiling.<br><br><b><b>-ytexture</b> <i>Y</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the initial <b>Y-offset</b> for texture placement when tiling.<br><br><b><b>-random</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables <b>random</b> pixel selection from the texture map instead of tiling.<br><br><b><b>-seed</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific <b>seed</b> for random generation, ensuring reproducibility. Implies <b>-random</b>.<br><br><b><b>-xrandom</b> <i>X</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <b>X-offset</b> for random texture selection within the map.<br><br><b><b>-yrandom</b> <i>Y</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <b>Y-offset</b> for random texture selection within the map.<br><br><b><b>-xrandomstep</b> <i>X</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the horizontal <b>step</b> for random texture selection.<br><br><b><b>-yrandomstep</b> <i>Y</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the vertical <b>step</b> for random texture selection.<br><br><b><b>-invert</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Inverts</b> the pixel values of the texture map before application (black to white, vice-versa).<br><br><b><b>-halftonemap</b> <i>halftonefile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies <b>halftoning</b> using the specified PGM file as a halftone map.<br><br><b><b>-comment</b> <i>text</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a <b>comment</b> string to the header of the output PGM file.<br><br>


title: DESCRIPTION
content:
<i>pgmtexture</i> is a utility from the Netpbm package that generates a grayscale (PGM) image based on a provided texture map. It takes a smaller PGM image as the texture source and "paints" it onto a larger output image of specified dimensions. The command allows for various texture application methods, including tiling, random placement, and halftoning, providing flexibility in creating textured images. It's often used for generating backgrounds, patterns, or visual effects by repeating or manipulating a base texture. The output is a PGM image written to standard output.


title: CAVEATS
content:
<i>pgmtexture</i> strictly outputs PGM (grayscale) images. To work with color textures, you might need to convert them to PGM first or apply <i>pgmtexture</i> to individual color channels using other Netpbm tools. The output is always sent to standard output, requiring redirection (e.g., <code>&gt; output.pgm</code>) to save it to a file.


title: OUTPUT FORMAT
content:
The command produces images in the <b>PGM</b> (Portable Graymap) format. This format can be either plain text or binary. To view or further manipulate the generated images, other Netpbm tools or standard image viewers that support PGM are necessary.


title: USAGE WITH PIPES
content:
True to the Netpbm design philosophy, <i>pgmtexture</i> is highly compatible with shell pipelines. Its PGM output can be directly piped as input to subsequent Netpbm commands for further processing, such as format conversion (e.g., <code>pgmtexture ... | pgmtoppm &gt; color_texture.ppm</code>) or additional image manipulation.


title: HISTORY
content:
<i>pgmtexture</i> is a component of the comprehensive Netpbm suite of graphics utilities. Netpbm's origins trace back to Pbmplus, created by Jef Poskanzer in 1988. This command was developed to offer a versatile, programmatic method for generating textured images, serving purposes like creating backgrounds and intricate patterns within Unix-like environments. Its design adheres to the Netpbm philosophy of simplicity and seamless integration within shell pipelines.


title: PARAMETERS
content:
<b>-width <I>W</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the width, in pixels, to be used for the font character. If not provided, the width of the input <I>PGM</I> image is used.<br><br><b>-height <I>H</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the height, in pixels, to be used for the font character. If not provided, the height of the input <I>PGM</I> image is used.<br><br><b>-char <I>C</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns the character code <I>C</I> to the font entry being created. If omitted, the default character code of 0 is used.<br><br><b><I>PGM_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input Portable GreyMap (<I>PGM</I>) image file. If this argument is omitted, <I>pgmtofs</I> reads the PGM data from standard input.<br><br>


title: DESCRIPTION
content:
<I>pgmtofs</I> is a <I>Netpbm</I> program that converts a Portable GreyMap (<I>PGM</I>) image file into an <I>Imagen</I> printer font file.<br><br>The input <I>PGM</I> image is typically a bilevel (black and white) representation of a character glyph or a bitmap. <I>Imagen</I> printers were once common for high-resolution text output, and this tool enables users to generate custom fonts or bitmap data specifically for these devices from standard <I>PGM</I> format. It takes the <I>PGM</I> data, which can be piped from standard input or read from a file, and outputs the <I>Imagen</I> font data to standard output or a specified file. This command is part of the extensive <I>Netpbm</I> toolkit for image format manipulation.


title: CAVEATS
content:
The input <I>PGM</I> image must be a bilevel (black and white) image; color or grayscale <I>PGM</I> inputs may not convert correctly or may result in an error. The output format is specific to <I>Imagen</I> printers, which are largely obsolete, limiting the general applicability of the command in modern computing environments.


title: OUTPUT HANDLING
content:
By default, <I>pgmtofs</I> writes the generated <I>Imagen</I> font data to standard output. Users typically redirect this output to a file using shell redirection, for example: <br><b>pgmtofs image.pgm &gt; font.fs</b>


title: NETPBM PHILOSOPHY
content:
Like many <I>Netpbm</I> tools, <I>pgmtofs</I> adheres to the Unix philosophy of doing one thing well. It focuses solely on the conversion from <I>PGM</I> to <I>Imagen</I> font format, making it suitable for use in shell scripts and pipelines where complex image processing workflows can be built by chaining multiple <I>Netpbm</I> commands together.


title: HISTORY
content:
<I>pgmtofs</I> is part of the <I>Netpbm</I> project, which originated from the Pbmplus package created by Jef Poskanzer in 1988. <I>Netpbm</I> provides a comprehensive set of tools for converting and manipulating various image formats. <I>pgmtofs</I> was developed at a time when specialized printer font formats, like those for <I>Imagen</I> printers, were important for high-quality text and graphics output. Its continued inclusion in the <I>Netpbm</I> suite reflects the project's goal of maintaining compatibility with a wide range of historical and contemporary image formats and devices.


title: SYNOPSIS
content:
<b>pgmtolispm</b> [<i>pgmfile</i>]<br>If <i>pgmfile</i> is omitted, <b>pgmtolispm</b> reads the PGM image from standard input. The converted Lisp Machine bitmap is always written to standard output.


title: PARAMETERS
content:
<b><i>pgmfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Portable GreyMap (PGM) image file to be converted. If this argument is not provided, <b>pgmtolispm</b> will read the PGM data from standard input.<br><br>


title: DESCRIPTION
content:
<b>pgmtolispm</b> is a specialized command-line utility from the Netpbm suite. Its primary function is to convert images in the Portable GreyMap (PGM) format into the Lisp Machine bitmap format. PGM is a simple, grayscale image format, while the Lisp Machine bitmap is an older, niche format used by Lisp Machines. These were specialized computers designed to run Lisp programming environments. This tool is particularly useful for users working with legacy Lisp Machine systems or historical computing environments, allowing them to prepare grayscale images for display or processing on such platforms. It typically reads a PGM image from standard input or a specified file and writes the resulting Lisp Machine bitmap to standard output. As part of the Netpbm toolkit, it often operates in conjunction with other Netpbm utilities via pipes, enabling complex image manipulation workflows.


title: CAVEATS
content:
This command converts only grayscale images (PGM format). Any color information in the input will be lost. The Lisp Machine bitmap format is an outdated and highly specialized format, not commonly used in modern computing environments. The command's design relies on standard input and output, making it suitable for piping but requiring redirection for direct file-to-file conversions.


title: STANDARD INPUT/OUTPUT
content:
<b>pgmtolispm</b> is designed to be used effectively in a Unix pipeline. It reads PGM data from standard input (<code>stdin</code>) if no <i>pgmfile</i> is provided as an argument, or from the specified file. The resulting Lisp Machine bitmap data is always written to standard output (<code>stdout</code>). This design allows for chaining commands, for example, <code>cat <i>input.pgm</i> | <b>pgmtolispm</b> > <i>output.lispbitmap</i></code>.


title: HISTORY
content:
<b>pgmtolispm</b> is an integral part of the Netpbm project, an open-source graphics toolkit. The Netpbm suite, originally known as PBMPLUS, was initiated by Jef Poskanzer in the late 1980s. The inclusion of tools for Lisp Machine format conversion reflects the historical importance of Lisp Machines in specialized computing contexts during that era. The command has been maintained within the Netpbm suite for compatibility and to preserve its functionality for historical and legacy systems.


title: PARAMETERS
content:
<b><i>-threshold value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the grayscale <i>value</i> that serves as the threshold for conversion. Pixels with grayscale values less than this <i>value</i> become black, and others become white. The <i>value</i> must be between 0 and the maximum grayscale value of the input PGM.<br><br><b><i>-value value</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <i>-threshold</i> option. It functions identically, allowing you to specify the threshold grayscale <i>value</i> for conversion.<br><br><b><i>pgmfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input PGM image file. If omitted, <i>pgmtopbm</i> reads the PGM image data from standard input.<br><br>


title: DESCRIPTION
content:
<i>pgmtopbm</i> is a utility from the Netpbm package that converts a Portable GreyMap (PGM) image file into a Portable BitMap (PBM) image file. A PGM image represents various shades of gray, while a PBM image is purely black and white (binary). The conversion is performed by applying a threshold: any pixel with a grayscale value less than the specified threshold becomes black, and any pixel with a value greater than or equal to the threshold becomes white.<br><br>By default, if no threshold is provided, <i>pgmtopbm</i> uses the mid-point of the maximum grayscale value of the input PGM as the threshold. The command reads the PGM image from standard input if no filename is specified, and writes the resulting PBM image to standard output.


title: CAVEATS
content:
The conversion from PGM to PBM is inherently lossy, as it reduces a wide range of grayscale values to just two (black or white). This process discards significant image information, and the quality of the output PBM heavily depends on the chosen threshold. Careful selection of the threshold is crucial for desired results.


title: DEFAULT THRESHOLD BEHAVIOR
content:
If neither <i>-threshold</i> nor <i>-value</i> is specified, <i>pgmtopbm</i> automatically calculates a default threshold. This default is half the maximum grayscale value of the input PGM image. For example, if the PGM has a maximum value of 255, the default threshold will be 127 or 128 (depending on rounding).


title: STANDARD INPUT/OUTPUT
content:
<i>pgmtopbm</i> is designed to work seamlessly with pipes. If no <i>pgmfile</i> is given, it reads from standard input. The resulting PBM image is always written to standard output. This allows for easy chaining with other Netpbm commands, e.g., '<b>cat</b> <i>image.pgm</i> | <b>pgmtopbm</b> <i>-threshold 100</i> | <b>pbmtofig</b> > <i>output.fig</i>'.


title: HISTORY
content:
<i>pgmtopbm</i> is an integral part of the Netpbm suite of graphics tools, which originated from Jef Poskanzer's <i>pbmplus</i> package. This project standardized the Portable BitMap (PBM), Portable GreyMap (PGM), and Portable PixMap (PPM) formats, providing a foundational set of command-line utilities for manipulating these images. <i>pgmtopbm</i> serves as a basic yet essential conversion tool, enabling transformations between grayscale and binary image data formats within the Netpbm ecosystem.


title: PARAMETERS
content:
<b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message about the command and its common Netpbm options.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the Netpbm version information.<br><br>


title: DESCRIPTION
content:
<i>pgmtopgm</i> is a utility from the <i>Netpbm</i> toolkit, designed to read a <i>Portable Graymap (PGM)</i> image from its standard input (or a specified file) and write the identical PGM image to its standard output.<br><br>Its primary purpose is not to perform any image transformation, but rather to serve as a <b>template</b> or <b>example</b> program for developers. It demonstrates the fundamental structure and input/output handling common to Netpbm image filters. Programmers wishing to write new PGM-processing tools can use <i>pgmtopgm</i>'s source code as a starting point.<br><br>While it performs no actual image manipulation, it can still be useful in scripting pipelines as a no-operation (no-op) filter, for example, to verify the validity of a PGM stream or to explicitly mark a stage in a complex image processing pipeline. It faithfully preserves the PGM format, including header and pixel data, without any alteration.


title: CAVEATS
content:
As a template program, <i>pgmtopgm</i> performs no actual image processing or modification. Its utility is primarily for development or as a no-operation filter; it does not introduce any image quality changes.


title: USE AS A DEVELOPMENT TEMPLATE
content:
The source code of <i>pgmtopgm</i> is intentionally simple and serves as an excellent starting point for programmers wishing to develop new <i>Netpbm</i> utilities that process <i>PGM</i> images. It illustrates how to correctly handle <i>PGM</i> file headers, pixel data, and error conditions within the <i>Netpbm</i> framework, ensuring compatibility and adherence to <i>Netpbm</i> conventions.


title: PIPING AND NO-OP FILTER
content:
Because <i>pgmtopgm</i> reads from standard input and writes to standard output, it integrates seamlessly into shell pipelines. Although it doesn't modify the image, it can be used as a placeholder or a 'no-op' filter to explicitly pass a <i>PGM</i> image through a stage, or to test pipeline integrity without altering data, ensuring the PGM stream remains valid throughout the process.


title: HISTORY
content:
Part of the long-standing <i>Netpbm</i> image processing suite, <i>pgmtopgm</i> was conceived not as a functional tool but as a foundational example. Its existence reflects the modular design philosophy of <i>Netpbm</i>, providing a clear and minimal blueprint for developers to extend the toolkit's capabilities by writing new PGM filters. It has been a standard component of the Netpbm distribution for many years, serving its role as a developer's utility.


title: SYNOPSIS
content:
<b>pgmtosbig</b> [<i>-size=<I>size</I></i>] [<i>-xsize=<I>xsize</I></i>] [<i>-ysize=<I>ysize</I></i>] [<i>-xysize=<I>xsize</I>,<I>ysize</I></i>] [<i><I>pgmfile</I></i>]


title: PARAMETERS
content:
<b><i>-size=<I>size</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets both the X (width) and Y (height) dimensions of the output SBig image to the specified value.<br><br><b><i>-xsize=<I>xsize</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the X (width) dimension of the output SBig image.<br><br><b><i>-ysize=<I>ysize</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Y (height) dimension of the output SBig image.<br><br><b><i>-xysize=<I>xsize</I>,<I>ysize</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets both the X (width) and Y (height) dimensions of the output SBig image using a comma-separated pair.<br><br><b><i><I>pgmfile</I></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the input Portable Graymap (PGM) file. If not specified, <I>pgmtosbig</I> reads the PGM data from standard input.<br><br>


title: DESCRIPTION
content:
<I>pgmtosbig</I> is a Netpbm utility that transforms a Portable Graymap (PGM) image into a specialized "SBig" format. This format was historically used for displaying images on high-resolution devices or systems that specifically understood this binary big-endian image representation. The command reads a PGM image either from a specified file or from standard input, and it writes the resulting SBig data to standard output.<br><br>It is often used in conjunction with <I>sbigtopgm</I>, which performs the reverse conversion. The <I>pgmtosbig</I> command allows users to specify the desired output dimensions for the SBig image using various options, which can be useful for adapting the image to a target display resolution. It's part of the extensive Netpbm suite, which provides a versatile toolkit for manipulating various image formats, emphasizing simplicity and pipeline compatibility.


title: CAVEATS
content:
The "SBig" format is a niche, binary format primarily designed for specific hardware or display systems, not widely used for general image storage or web display.<br><br>It expects PGM input. Using other image formats will likely result in an error or corrupted output.<br><br>Dimensions specified via options may scale or crop the image, potentially altering its aspect ratio or content.


title: HISTORY
content:
<I>pgmtosbig</I> is part of the Netpbm project, an open-source graphics toolkit that evolved from Jef Poskanzer's PBMplus package, originally released in 1988. The Netpbm suite provides a foundational set of tools for converting and manipulating various graphics formats, often using common "portable" formats like PGM as intermediaries. This command, like many in Netpbm, reflects an older era of image processing where specialized binary formats were more common for direct display on specific hardware.


title: SYNOPSIS
content:
<b>pgmtost4</b> [-st4version={1,2}] [-st4compression] [-maxst4compressedsize=<I>maxsize</I>] [-header | -noheader] [-width=<I>width</I>] [-height=<I>height</I>] [<I>pgmfile</I>]


title: PARAMETERS
content:
<b>-st4version={1,2}</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ST4 version to use for output. The default is 1. Version 2 supports wider images and potentially other enhancements.<br><br><b>-st4compression</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables LZ (Lempel-Ziv) compression for the output ST4 data. This can significantly reduce the file size.<br><br><b>-maxst4compressedsize=<I>maxsize</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum allowed size for the compressed ST4 output in bytes. If compression would result in a larger size, it outputs uncompressed data.<br><br><b>-header</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs an ST4 file header before the image data. By default, no header is included, which is useful when the image data is embedded directly into an application.<br><br><b>-noheader</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly suppresses the output of the ST4 file header. This is the default behavior.<br><br><b>-width=<I>width</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the output image width to the specified value. Useful when PGM data is piped without a PGM header, allowing <i>pgmtost4</i> to correctly interpret the stream.<br><br><b>-height=<I>height</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the output image height to the specified value. Similar to -width, it's used for raw PGM data streams.<br><br>


title: DESCRIPTION
content:
<i>pgmtost4</i> is a utility from the Netpbm project that transforms a Portable Graymap (PGM) image into the STMicroelectronics ST4 graphics file format. The ST4 format is specifically designed for use with STMicroelectronics' graphics chips and is a compact, uncompressed or LZ-compressed raster image format. This command is typically used when preparing images for embedded systems that utilize STMicroelectronics display controllers. It reads the PGM image data from standard input and writes the ST4 formatted data to standard output, making it suitable for piping with other Netpbm tools. It supports different ST4 versions and can apply LZ compression for smaller file sizes, which is crucial for resource-constrained environments. Users can also specify whether to include an ST4 header, providing flexibility for integration into various application workflows.


title: CAVEATS
content:
<i>pgmtost4</i> is part of the Netpbm suite, which often implies it processes single-image streams.<br>The ST4 format itself might have limitations depending on the specific STMicroelectronics chip or driver being used.<br>Without <b>-width</b> and <b>-height</b> options, it expects a proper PGM header for dimension information when reading from stdin.<br>Compression (<b>-st4compression</b>) might not always yield smaller files, especially for highly noisy or already compressed images, and <b>-maxst4compressedsize</b> handles this.


title: STANDARD INPUT/OUTPUT
content:
<i>pgmtost4</i> reads the PGM image from standard input and writes the ST4 formatted image to standard output. This makes it highly suitable for use in shell pipelines, allowing it to be chained with other Netpbm utilities or command-line tools. For example, an image can be converted from JPEG to PGM, then to ST4 in a single pipeline.


title: ST4 FORMAT DETAILS
content:
The ST4 format is a proprietary or semi-proprietary format primarily used by STMicroelectronics graphics processors. It's designed to be compact and efficient for display on their chips, often featuring optimized storage for grayscale or indexed color data. <i>pgmtost4</i> specifically handles grayscale images, converting them into the ST4 representation.


title: HISTORY
content:
<i>pgmtost4</i> is a relatively specialized tool within the extensive Netpbm package. Netpbm itself has a long history, originating from the pbmplus package by Jef Poskanzer in 1988, designed for converting various image formats. The <i>pgmtost4</i> utility was developed later as part of the Netpbm suite to specifically support the STMicroelectronics ST4 graphics format, catering to embedded systems development where image data needs to be tailored for specific hardware. Its development reflects Netpbm's ongoing commitment to supporting a wide array of image formats, including those specific to hardware applications.


title: PARAMETERS
content:
<b>-l, --list-name</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List the process name as well as the process ID.<br><br><b>-f, --full</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The pattern is matched against the full command line (including arguments) instead of just the process name.<br><br><b>-i, --ignore-case</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore case distinctions in the pattern.<br><br><b>-u <uidlist>, --euid <uidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose effective user ID is in the comma-separated <I>uidlist</I>.<br><br><b>-U <uidlist>, --ruid <uidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose real user ID is in the comma-separated <I>uidlist</I>.<br><br><b>-g <gidlist>, --egid <gidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose effective group ID is in the comma-separated <I>gidlist</I>.<br><br><b>-G <gidlist>, --rgid <gidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose real group ID is in the comma-separated <I>gidlist</I>.<br><br><b>-P <ppidlist>, --parent <ppidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose parent process ID is in the comma-separated <I>ppidlist</I>.<br><br><b>-t <tidlist>, --tty <tidlist></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes associated with a terminal (tty) listed in <I>tidlist</I>.<br><br><b>-n, --newest</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select only the newest (most recently started) of the matching processes.<br><br><b>-o, --oldest</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Select only the oldest (least recently started) of the matching processes.<br><br><b>-x, --exact</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only match processes whose name or full command line exactly matches the pattern.<br><br><b>-v, --inverse</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Invert the match; select processes that do <B>not</B> match the pattern.<br><br><b>-c, --count</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instead of printing PIDs, print the count of matching processes.<br><br><b>-d <delimiter>, --delimiter <delimiter></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the delimiter used to separate printed PIDs (default is newline).<br><br>


title: DESCRIPTION
content:
The <b>pgrep</b> command is a utility used to look up processes based on criteria such as name, user, group, or parent process ID, and print the matching process IDs (PIDs). Unlike simply piping the output of <I>ps</I> to <I>grep</I>, <I>pgrep</I> is specifically designed for this task, making it more efficient and reliable for scripting purposes.<br><br>By default, <I>pgrep</I> matches against the process name (the contents of <i>/proc/PID/stat</i>), which is often just the executable name. To match against the full command line (including arguments), the <B>-f</B> option must be used. It supports regular expressions for pattern matching, offering powerful filtering capabilities.<br><br><I>pgrep</I> returns a list of PIDs, one per line, which can be directly used by other commands like <I>kill</I> or <I>renice</I>. It's an essential tool for system administrators and scripters needing to automate process management tasks without complex parsing of <I>ps</I> output.


title: CAVEATS
content:
By default, <I>pgrep</I> matches only the process name, not its arguments. This means searching for 'apache2' might work, but searching for 'apache2 -k start' will not unless the <B>-f</B> (full command line) option is used. Always consider using <B>-f</B> for more robust matching, especially in scripts.<br><br>Regular expressions can be powerful but also complex; ensure your pattern is specific enough to avoid unintended matches.


title: EXIT STATUS
content:
The exit status of <I>pgrep</I> is 0 if one or more processes are found, 1 if no processes are found, and 2 for errors (e.g., invalid options or syntax). This makes it highly suitable for use in shell scripts for conditional execution.


title: PATTERN MATCHING
content:
The <I>pattern</I> argument is interpreted as a POSIX extended regular expression (ERE). This allows for flexible and powerful matching, such as 'firefox|chrome' to find either browser, or 'ssh[d]?' to find 'ssh' or 'sshd'.


title: HISTORY
content:
<I>pgrep</I> is part of the <B>procps-ng</B> suite of utilities, which provides process management tools for Linux. It was introduced to simplify tasks that previously required more complex shell pipelines involving <I>ps</I> and <I>grep</I>, improving both readability and efficiency for scripts. Its design specifically addresses the need to programmatically find process IDs, making it a modern and convenient alternative to older, more cumbersome methods.


title: SYNOPSIS
content:
<b>vendor/bin/phan</b> [<i>options</i>]<br><b>php phan.phar</b> [<i>options</i>]<br><i>(Note: Specific options and arguments are often managed via a .phan/config.php file.)</i>


title: PARAMETERS
content:
<b><code>--help</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed help information about available options and usage.<br><br><b><code>--version</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the installed Phan version.<br><br><b><code>--config-file &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the Phan configuration file (default is <code>.phan/config.php</code>).<br><br><b><code>--project-root &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the root directory of the PHP project being analyzed. Affects relative path resolution.<br><br><b><code>--analyze-directory &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a specific directory to the list of paths to be analyzed, overriding configuration settings.<br><br><b><code>--exclude-directory &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes a specific directory from analysis, overriding configuration settings.<br><br><b><code>--output &lt;file&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Redirects analysis results to a specified file instead of standard output.<br><br><b><code>--progress-bar</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a progress bar during the analysis process.<br><br><b><code>--color</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables colorized output for better readability of warnings and errors.<br><br>


title: DESCRIPTION
content:
Phan is a powerful static analyzer for PHP that aims to find common errors and suggest improvements in codebases without executing them. It identifies various issues such as undefined variables, inaccessible code, type mismatches, and incorrect function or method calls. While not a standard core Linux utility, Phan is widely used by PHP developers on Linux environments to enhance code quality, enforce type safety, and minimize runtime errors. It's often integrated into Continuous Integration (CI) pipelines for automated code quality checks. Phan is highly configurable, allowing users to define strictness levels, custom analysis plugins, and integrate seamlessly with existing PHP ecosystems. It is typically invoked via Composer's `vendor/bin/phan` executable or a standalone `phan.phar` file.


title: CAVEATS
content:
Phan is a PHP static analyzer, not a core Linux system utility. It requires a PHP environment and typically Composer for installation. Its effectiveness depends heavily on correct configuration and the quality of type hints in the PHP codebase. As a static analyzer, it may occasionally produce false positives or false negatives.


title: CONFIGURATION
content:
Phan's primary configuration is managed via a <code>.phan/config.php</code> file, typically located in the project root. This file offers extensive control over analysis levels, plugin usage, directory inclusions/exclusions, and custom stub definitions, significantly reducing the need for complex command-line arguments and ensuring consistent analysis settings across a project.


title: INTEGRATION
content:
Phan is commonly integrated into Continuous Integration (CI) pipelines (e.g., GitHub Actions, GitLab CI, Jenkins). This automation ensures that code quality checks are performed on every commit or pull request, preventing potential issues from being merged into the main codebase and maintaining high development standards.


title: HISTORY
content:
Phan was initially created by Rasmus Schultz, with development beginning around 2016. It emerged as a response to the growing demand for robust static analysis in modern PHP development, particularly with the introduction of stricter type declarations in PHP 7 and beyond. It quickly gained traction for its deep analysis capabilities and extensible plugin system, becoming a significant tool in the PHP ecosystem for improving code quality and catching errors early in the development lifecycle.


title: PARAMETERS
content:
<b><I>input-source</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The source of textual imagination, typically a prompt string or a file path.<br><br><b><B>-t</B>, <B>--text</B> <I>"prompt"</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a direct text prompt for visual generation. E.g., <I>"A surreal landscape with floating islands."</I><br><br><b><B>-f</B>, <B>--file</B> <I>path/to/description.txt</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read the text prompt from a specified file. Each line could be a separate prompt or a continuous narrative.<br><br><b><B>-o</B>, <B>--output</B> <I>path/to/image.png</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define the output file path and format for the generated image. Supports common image formats like PNG, JPEG.<br><br><b><B>-d</B>, <B>--dimensions</B> <I>WxH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the resolution of the output image, e.g., <I>1024x768</I>.<br><br><b><B>-s</B>, <B>--style</B> <I>style_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Apply a specific artistic style or aesthetic to the generated image, such as <I>dreamy</I>, <I>abstract</I>, <I>surreal</I>, or <I>photorealistic</I>.<br><br><b><B>--seed</B> <I>integer</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide a numeric seed for repeatable image generation results for the same input and options.<br><br><b><B>-v</B>, <B>--verbose</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing progress and potential internal process details.<br><br>


title: DESCRIPTION
content:
The 'phantasia' command is <B>not a standard or commonly available Linux utility</B>. This analysis describes a <I>hypothetical</I> command, conceptualized to align with its name's meaning: the faculty or power of imagination, especially the formation of images or fantasies. If 'phantasia' were a real command, it might function as an advanced text-to-image generator, taking textual descriptions or abstract concepts as input and synthesizing unique, imaginative visual outputs. It could potentially leverage artificial intelligence and machine learning models to interpret complex language and render corresponding graphical representations, similar to modern AI art tools. Its purpose would be to transform abstract ideas into tangible visual 'phantasms,' bridging the gap between thought and visual manifestation within the command-line environment. This entry serves as a creative exploration of what such a command could entail.


title: CAVEATS
content:
It is crucial to understand that <B>'phantasia' is a fictional command</B> and does not exist in standard Linux distributions or common software repositories. The information provided here is purely hypothetical, conceptualizing how a command with this name and intended function might operate. Users will not be able to install or execute 'phantasia' on their systems. This analysis serves as an imaginative exercise rather than a practical guide to a real utility.


title: CONCEPTUAL APPLICATION
content:
If 'phantasia' existed, its primary application would be in creative computing, art generation, or rapid prototyping of visual concepts. It could be used by artists, designers, or writers to visualize scenes, characters, or abstract ideas quickly from textual input, providing a unique interface for generative art directly from the command line.


title: UNDERLYING TECHNOLOGY (HYPOTHETICAL)
content:
A real 'phantasia' command would likely rely on complex deep learning models, such as Generative Adversarial Networks (GANs) or diffusion models, trained on vast datasets of images and corresponding textual descriptions. It would require significant computational resources, potentially offloading processing to GPUs or cloud-based AI services.


title: HISTORY
content:
As a hypothetical command, 'phantasia' has <B>no actual development history</B> or usage timeline. It is a product of imagination, envisioned for this analysis. Its conceptual origins can be traced to the recent advancements in text-to-image artificial intelligence, which transform textual descriptions into visual art, mimicking a 'phantasia' function at a conceptual level. The name itself draws from ancient Greek, signifying 'imagination' or 'appearance'.


title: SEE ALSO
content:
<B>convert</B>(1) (ImageMagick: for image manipulation), <B>feh</B>(1) (Fast, light image viewer), <B>gimp</B>(1) (GNU Image Manipulation Program: for image editing), <B>cowsay</B>(1) (for creative text-based output, conceptually related to imaginative generation)


title: SYNOPSIS
content:
Since 'phar' is not a standalone Linux command, its usage revolves around the PHP interpreter:<br><br><I>php &lt;phar_file&gt; [arguments...]</I><br><br>To execute a PHAR archive. The `arguments` are passed to the script inside the PHAR.<br><br><I>php -d phar.readonly=0 -r 'new Phar(&quot;archive.phar&quot;);'</I><br><br>Example of programmatic interaction with a PHAR archive using PHP CLI's evaluation mode. Actual PHAR creation/manipulation is done via PHP scripts or frameworks, not a direct `phar` command line utility.


title: PARAMETERS
content:
<b>&lt;phar_file&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the PHAR archive to be executed. This is the primary 'argument' to the <I>php</I> interpreter when running a PHAR.<br><br><b>[arguments...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional arguments passed directly to the PHP script encapsulated within the PHAR archive. These are parsed by the script's logic, not the <I>php</I> interpreter itself.<br><br><b>-d &lt;name&gt;[=&lt;value&gt;]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(PHP CLI option) Sets a PHP INI entry (e.g., <I>memory_limit</I>) for the execution of the PHAR. This affects the PHP runtime environment.<br><br><b>-c &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(PHP CLI option) Specifies an alternative <I>php.ini</I> file to be used instead of the default when executing the PHAR.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(PHP CLI option) Prevents any <I>php.ini</I> file from being loaded, ensuring a clean PHP runtime environment for the PHAR execution.<br><br>


title: DESCRIPTION
content:
The term "phar" refers to a <I>PHP Archive</I>, a file format introduced in PHP 5.3 that packages an entire PHP application into a single file. Unlike standard Linux commands like `tar` or `zip`, `phar` is not a standalone system utility. Instead, it's a specialized archive format primarily executed and managed by the <B>PHP interpreter</B>.<br><br>A PHAR file can contain source code, images, and other assets, making deployment and distribution of PHP applications easier. It behaves much like a `.jar` file for Java or an `.exe` file for Windows, allowing an application to run by simply invoking the PHAR file with the PHP CLI (e.g., <I>php myapp.phar</I>).<br><br>The PHAR extension within PHP provides functionalities to create, modify, and extract these archives programmatically. From a command-line perspective on Linux, interacting with a PHAR typically involves using the `php` executable to run the archived script or to manage the archive itself.


title: CAVEATS
content:
The `phar` format is specific to PHP and requires a PHP interpreter to be installed and accessible on the system. It is not a general-purpose archiving tool like `tar` or `zip`. Security is a significant concern: executing untrusted PHAR files can lead to severe vulnerabilities, as they are essentially executable PHP scripts. The <I>phar.readonly</I> PHP INI setting (defaulting to '1') prevents modification of PHAR archives, requiring it to be explicitly set to '0' for creation or modification operations, typically for security reasons.


title: CREATING AND MODIFYING PHARS
content:
PHAR archives are typically created and modified programmatically using PHP's built-in <I>Phar</I> class. Developers write PHP scripts that leverage this class to add files, set a bootstrap script, sign the archive, and compress its contents. There isn't a standalone `phar` command-line utility for this purpose; it's all handled within PHP scripts or tools built on top of the <I>Phar</I> class (e.g., Composer's `phar-util`).


title: SECURITY CONSIDERATIONS
content:
PHAR files are executables. Just like any other executable, they can contain malicious code. PHP includes features like PHAR signing (SHA1, SHA256, MD5) to verify the integrity and origin of an archive. Users should only execute PHAR files from trusted sources. The <I>phar.readonly</I> INI setting is a crucial security measure, preventing accidental or malicious modification of existing PHARs on a server.


title: HISTORY
content:
The PHAR (PHP Archive) format was introduced in PHP 5.3, released in June 2009. Its development aimed to address the need for a single-file distribution mechanism for PHP applications, similar to Java's JAR archives. Before PHAR, deploying PHP applications often involved distributing many individual files and managing dependencies. The PHAR extension provided a robust, built-in solution for packaging, signing, and executing PHP applications as self-contained units, significantly simplifying deployment and management tasks for developers.


title: SYNOPSIS
content:
<b>phing</b> [<i>OPTIONS</i>] [<i>TARGET</i> [<i>TARGET2</i> ...]]<br><b>phing</b> <b>-f</b> <i>BUILD_FILE</i> [<i>TARGET</i>]<br><b>phing</b> <b>-l</b>


title: PARAMETERS
content:
<b><i>TARGET</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more build targets to execute. If no target is specified, the default target defined in the buildfile will be executed.<br><br><b><b>-f</b>, <b>--buildfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified XML build file instead of the default <code>build.xml</code>.<br><br><b><b>-D</b><i>&lt;property&gt;</i>=<i>&lt;value&gt;</i>, <b>--define</b> <i>&lt;property&gt;</i>=<i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines a property on the command line. These properties can then be used within the buildfile.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available targets and their descriptions from the current buildfile.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces verbose output, showing more details about the build process and task execution.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses normal output, showing only errors and warnings.<br><br><b><b>-S</b>, <b>--simplelog</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a simple logging format for output, often preferred for CI environments.<br><br><b><b>-logger</b> <i>&lt;class&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom logger class to be used for output logging.<br><br><b><b>-propertyfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads properties from the specified <code>.properties</code> file into the build environment.<br><br><b><b>-find</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for the specified build file (defaulting to <code>build.xml</code>) in the current directory and parent directories.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <i>Phing</i> version information.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available command-line options.<br><br>


title: DESCRIPTION
content:
<i>Phing</i> is an open-source, PHP-based project build system inspired by Apache Ant. It provides a robust framework for automating common tasks involved in software development, such as compiling code (e.g., Less/Sass), running tests, generating documentation, packaging releases, and deploying applications. Instead of writing shell scripts for each task, <i>Phing</i> uses XML buildfiles (typically <code>build.xml</code>) to define a project's targets and the tasks required to achieve them. This approach offers cross-platform compatibility and simplifies complex workflows into manageable, reusable steps. Its extensibility allows developers to create custom tasks in PHP, integrating seamlessly with existing PHP codebases and libraries, making it a powerful tool for continuous integration and delivery pipelines in PHP projects.


title: CAVEATS
content:
<i>Phing</i> requires a PHP runtime environment to operate. While its XML-based configuration provides structure, it can become verbose for very simple tasks or, conversely, complex for highly customized workflows, potentially leading to a steeper learning curve compared to simple shell scripting. Managing dependencies (e.g., external binaries) used by <i>Phing</i> tasks needs careful setup outside of <i>Phing</i> itself.


title: BUILDFILES
content:
A <i>Phing</i> build is defined in an XML file, typically named <code>build.xml</code>. This file consists of a root <code>&lt;project&gt;</code> element, which contains one or more <code>&lt;target&gt;</code> elements. Each <code>&lt;target&gt;</code> defines a specific set of actions, and these actions are performed by various <code>&lt;task&gt;</code> elements. Targets can have dependencies on other targets, allowing for complex, ordered execution flows.


title: TASKS
content:
<i>Phing</i> provides a rich library of built-in tasks for common operations like file manipulation (copy, delete, move), executing shell commands, running PHPUnit tests, interacting with version control systems, and more. The power of <i>Phing</i> also lies in its extensibility, allowing developers to write custom tasks in PHP to encapsulate project-specific logic or integrate with third-party tools not covered by the default task library.


title: HISTORY
content:
<i>Phing</i> was conceived around 2004-2005 by Michiel Rook, largely inspired by Apache Ant, a Java-based build tool. The goal was to provide a similar robust, extensible build automation system specifically for PHP projects, leveraging PHP's own capabilities. Over the years, it gained significant traction within the PHP community, evolving with the language and its ecosystem. It continues to be actively maintained, providing a stable and flexible solution for automating diverse tasks in PHP development workflows.


title: SYNOPSIS
content:
<b>photorec</b> [<i>&lt;options&gt;</i>] [<i>&lt;device_or_image&gt;</i>]<br><br>When run without arguments or with a device/image, <b>photorec</b> typically starts an interactive, text-based user interface to guide the recovery process.<br><br>Examples:<br><b>photorec</b><br><b>photorec</b> <i>/dev/sdc</i><br><b>photorec</b> <i>my_disk_image.dd</i>


title: PARAMETERS
content:
<b><b>/d</b> <i>&lt;directory&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the destination directory where recovered files will be saved. This is often used to override the default interactive prompt.<br><br><b><b>/log</b> <i>&lt;filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write log messages to the specified file instead of the default <b>photorec.log</b>.<br><br><b><b>/debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable debug messages for detailed output, useful for troubleshooting.<br><br><b><b>/keep_corrupted_files</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs <i>PhotoRec</i> to save files even if they appear to be corrupted or incomplete.<br><br><b><b>/nonfree</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable the recovery of non-free file formats, such as certain proprietary audio, video, or image formats. By default, <i>PhotoRec</i> may restrict recovery to open formats.<br><br><b><b>/cmd</b> <i>&lt;device&gt; &lt;partition&gt; &lt;filesystem&gt; &lt;output_dir&gt; [options]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run <i>PhotoRec</i> in non-interactive mode. This requires specifying all necessary parameters directly on the command line, including the device, partition (or 'none' for whole disk), file system type, and output directory.<br><br><b><b>/search</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used in non-interactive mode (with <b>/cmd</b>) to immediately start the file carving process without requiring user confirmation.<br><br><b><b>/disable_all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Initially disable all known file types. This can be combined with <b>/enable</b> to recover only very specific file types.<br><br><b><b>/enable</b> <i>&lt;filetype_list&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable specific file types for recovery. <i>&lt;filetype_list&gt;</i> is a comma-separated list of file extensions (e.g., <i>jpg,doc,mp4</i>).<br><br><b><b>/disable</b> <i>&lt;filetype_list&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable specific file types from being recovered.<br><br>


title: DESCRIPTION
content:
<i>PhotoRec</i> is a free, open-source data recovery utility designed to recover lost files, including video, documents, archives, and pictures, from various digital media like hard disks, CD-ROMs, USB drives, and memory cards. It operates by ignoring the file system and going after the underlying data, searching for file headers and footers (known as file carving). This allows it to work effectively even if the file system is severely corrupted, formatted, or repartitioned. <i>PhotoRec</i> is non-destructive, performing read-only operations on the compromised media, ensuring no further damage is done during the recovery process. It is part of the <i>TestDisk</i> suite of data recovery tools, which also includes <i>TestDisk</i> for partition recovery.


title: CAVEATS
content:
<b>Never write to the recovery source:</b> Always recover files to a different storage device or partition to avoid overwriting the very data you're trying to recover.<br><b>Data Overwrite:</b> Success depends on how much new data has been written to the disk since the files were lost. Overwritten sectors cannot be recovered.<br><b>Lost Filenames and Structure:</b> <i>PhotoRec</i> recovers files based on their content signatures, not the file system metadata. Therefore, original filenames, creation dates, and directory structures are lost. Recovered files are typically named numerically (e.g., <i>f0000001.jpg</i>).<br><b>Disk Space Requirements:</b> Recovered files can occupy a significant amount of disk space, potentially more than their original size if fragmented or multiple versions are found. Ensure your destination drive has ample free space.<br><b>Root Privileges:</b> Accessing raw disk devices usually requires root (administrator) privileges.


title: INTERACTIVE MODE (DEFAULT)
content:
By default, when <b>photorec</b> is run without specific command-line arguments, it launches a curses-based interactive menu. This guided interface allows users to easily select the disk, partition (or entire disk), file system type (if known, or 'Other' for raw), and the destination directory for recovered files. This mode is highly recommended for most users due to its ease of use.


title: FILE CARVING PRINCIPLE
content:
<i>PhotoRec</i> employs a technique known as 'file carving'. Instead of relying on the file system's structure (which might be corrupted or missing), it scans the raw sectors of the storage device. It looks for known file headers and footers (signatures) that indicate the beginning and end of specific file types. Once a header is identified, <i>PhotoRec</i> attempts to read and save the subsequent data until it finds a footer or estimates the file's end based on its internal structure. This method allows it to recover files even from severely damaged or formatted media.


title: OUTPUT DIRECTORY STRUCTURE
content:
<i>PhotoRec</i> organizes recovered files into sequentially numbered subdirectories within the specified output location. For example, if you choose <i>/home/user/recovered</i> as the output directory, <i>PhotoRec</i> will create <i>/home/user/recovered/recup_dir.1</i>, <i>/home/user/recovered/recup_dir.2</i>, and so on. Files are placed into these directories and renamed numerically (e.g., <i>f0000001.jpg</i>, <i>f0000002.doc</i>) because the original filenames and directory paths are typically not recoverable.


title: HISTORY
content:
<i>PhotoRec</i> was developed by Christophe Grenier as part of the <i>TestDisk</i> data recovery suite. Initially released with a focus on recovering photos from digital camera memory cards, its capabilities quickly expanded to include a wide variety of file formats beyond just pictures. It has seen continuous development, evolving into a robust and widely-used tool for recovering data from damaged or formatted partitions and media, regardless of the underlying file system.


title: SYNOPSIS
content:
<b>php</b> [<i>options</i>] [<i>-f &lt;file&gt;</i> | <i>--file &lt;file&gt;</i>] [<i>--</i>] [<i>arguments...</i>]<br><b>php</b> [<i>options</i>] <i>-r &lt;code&gt;</i> [<i>--</i>] [<i>arguments...</i>]<br><b>php</b> [<i>options</i>] <i>-a</i><br><b>php</b> [<i>options</i>] <i>-S &lt;addr:port&gt;</i> [<i>-t &lt;docroot&gt;</i>]<br><b>php</b> [<i>options</i>] <i>-l &lt;file&gt;</i>


title: PARAMETERS
content:
<b><b>-a</b>, <b>--interactive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run PHP in interactive shell mode (REPL), allowing direct execution of PHP code.<br><br><b><b>-c</b> <i>&lt;path&gt;</i>, <b>--php-ini</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the path to a <i>php.ini</i> file or directory for configuration.<br><br><b><b>-C</b>, <b>--no-php-ini</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not load the default <i>php.ini</i> file. Useful for clean execution environments.<br><br><b><b>-d</b> <i>foo[=bar]</i>, <b>--define</b> <i>foo[=bar]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Define an INI entry <i>foo</i> with an optional value <i>bar</i>. Overrides <i>php.ini</i> settings.<br><br><b><b>-f</b> <i>&lt;file&gt;</i>, <b>--file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Parse and execute the specified PHP <i>&lt;file&gt;</i>. This is the default action if no other mode is specified.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a brief help message with available options.<br><br><b><b>-i</b>, <b>--info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output the PHP information page, similar to <i>phpinfo()</i> in a web browser.<br><br><b><b>-l</b>, <b>--syntax-check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a syntax check on the specified PHP file without executing it. Returns 0 for success, non-zero for errors.<br><br><b><b>-m</b>, <b>--modules</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all compiled and loaded PHP modules and extensions.<br><br><b><b>-n</b>, <b>--no-ini</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;No <i>php.ini</i> file will be used. Similar to <b>-C</b>, but implies other default configurations.<br><br><b><b>-r</b> <i>&lt;code&gt;</i>, <b>--run</b> <i>&lt;code&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run PHP <i>&lt;code&gt;</i> directly from the command line, without needing <i>&lt;?php ... ?&gt;</i> tags.<br><br><b><b>-S</b> <i>&lt;addr:port&gt;</i>, <b>--server</b> <i>&lt;addr:port&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Start the built-in PHP development web server. Specify the address and port (e.g., <i>localhost:8000</i>).<br><br><b><b>-t</b> <i>&lt;docroot&gt;</i>, <b>--doc-root</b> <i>&lt;docroot&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the document root for the built-in web server. Used with <b>-S</b>.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the PHP version information.<br><br><b><b>-z</b> <i>&lt;file&gt;</i>, <b>--zend-extension</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Load a Zend extension (e.g., Xdebug). Specify the full path to the extension <i>.so</i> or <i>.dll</i> file.<br><br><b><b>--</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Marks the end of options and treats all subsequent arguments as script arguments, even if they start with a hyphen.<br><br>


title: DESCRIPTION
content:
The <b>php</b> command serves as the command-line interface (CLI) for the PHP scripting language. It enables users to execute PHP scripts directly from the terminal, making it ideal for automation tasks, cron jobs, server-side scripting, and running CLI applications built with PHP. Beyond simple script execution, the <b>php</b> CLI also provides a powerful interactive shell (REPL), a built-in development web server, and utilities for checking PHP configuration, loaded modules, and syntax.<br><br>It's a versatile tool crucial for PHP developers, allowing them to test code snippets, debug applications, and manage projects without relying on a traditional web server setup. While primarily used for CLI operations, its functionality extends to being the core interpreter for web servers like Apache and Nginx (often via PHP-FPM) to process dynamic web content.


title: CAVEATS
content:
The built-in web server (started with <b>-S</b>) is designed for development purposes only and <i>should not be used in production environments</i> due to performance and security limitations. When running short-lived CLI scripts, PHP incurs a startup overhead, which might be noticeable for very frequent executions. Ensure proper handling of arguments passed to scripts, especially when using <b>--</b>, to prevent unexpected behavior. Security best practices, such as sanitizing input and restricting file system access, are crucial when deploying PHP applications.


title: CONFIGURATION FILES
content:
The <b>php</b> command respects the PHP configuration hierarchy. It first looks for a <i>php.ini</i> file in its default locations (e.g., <i>/etc/php/&lt;version&gt;/cli/php.ini</i> on Debian/Ubuntu, or system-wide configurations). The <b>-c</b> option allows specifying a custom <i>php.ini</i>, and <b>-d</b> allows overriding individual INI directives directly from the command line. The <b>-n</b> or <b>-C</b> options can prevent any <i>php.ini</i> from being loaded, providing a clean execution environment.


title: EXIT STATUS
content:
The <b>php</b> command returns an exit status of <i>0</i> on success. A non-zero exit status indicates an error. For example, <i>255</i> is often used for general script execution failures or uncaught exceptions, while a non-zero exit status can also be explicitly set within a PHP script using <i>exit()</i> or <i>die()</i>.


title: HISTORY
content:
PHP (originally 'Personal Home Page Tools') was created by <i>Rasmus Lerdorf</i> in 1994 as a set of CGI binaries written in C. It was initially used for tracking visits to his online resume. Over time, it evolved into a more powerful scripting language. The significant shift came with PHP 3 (1997), which introduced the Zend Engine and expanded its capabilities beyond simple web forms. PHP 4 (2000) brought further performance improvements with Zend Engine 1.0. PHP 5 (2004) introduced a robust object model (Zend Engine 2.0). The most impactful recent release was PHP 7 (2015), which delivered massive performance gains and new language features. PHP 8 (2020) continued this trend with a JIT compiler and further enhancements, solidifying PHP's position as a robust language for web development and command-line scripting.


title: SYNOPSIS
content:
<i><b>php artisan</b> <command> [options] [arguments]<br><br><b><command></b>: Refers to a specific Artisan task to execute, such as <b>migrate</b>, <b>make:model</b>, <b>serve</b>, or <b>optimize</b>.<br><b>[options]</b>: Optional flags that modify the behavior of the command, often prefixed with <b>--</b> (e.g., <b>--force</b>, <b>--seed</b>) or <b>-</b> for short versions.<br><b>[arguments]</b>: Optional values or parameters passed to the command (e.g., the name of a model for <b>make:model</b>).</i>


title: PARAMETERS
content:
<b><b>--version</b>, <b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays the current Laravel framework version.</i><br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays help information for the current command or lists all available commands if no specific command is provided.</i><br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppresses all command output, useful for scripting or automated tasks.</i><br><br><b><b>--verbose</b>, <b>-v</b>, <b>-vv</b>, <b>-vvv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the verbosity of messages: <b>-v</b> for normal output, <b>-vv</b> for more verbose, and <b>-vvv</b> for debug output.</i><br><br><b><b>--no-interaction</b>, <b>-n</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents the command from asking any interactive questions, assuming default answers or failing if input is required.</i><br><br><b><b>--env[=ENV]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the application environment to run the command in (e.g., <b>--env=production</b>).</i><br><br>


title: DESCRIPTION
content:
<i><br><b>php artisan</b> is the command-line interface (CLI) included with the Laravel PHP web framework. It provides a robust set of helpful commands that assist developers in building and managing Laravel applications. Artisan automates many repetitive and common development tasks, significantly enhancing productivity.<br><br>Common uses include running database migrations (e.g., <b>php artisan migrate</b>), generating boilerplate code like controllers, models, and migrations (e.g., <b>php artisan make:controller</b>), clearing various caches, managing queues, and serving the application locally (<b>php artisan serve</b>).<br><br>Beyond its built-in functionalities, Artisan is highly extensible, allowing developers to create custom commands tailored to their specific project needs. It is an indispensable tool in the Laravel ecosystem, streamlining the development workflow by providing a unified and consistent way to interact with the application from the terminal.</i>


title: CAVEATS
content:
<i><br><b>php artisan</b> is not a standalone Linux command; it requires a PHP interpreter installed on the system and must be executed from the root directory of a Laravel project. Its functionality is entirely dependent on the Laravel framework and any installed packages within that project.<br><br>The specific commands and options available can vary significantly between different Laravel versions and custom project configurations.</i>


title: <I>CUSTOM COMMANDS</I>
content:
<i>Developers can extend Artisan's capabilities by creating their own custom commands. This allows for automation of project-specific tasks, integration with external services, or any recurring process unique to the application, making Artisan highly adaptable.</i>


title: <I>INTERACTIVE PROMPTS</I>
content:
<i>Many Artisan commands leverage interactive prompts, guiding the user through complex operations by asking for necessary input step-by-step. This feature simplifies command usage and reduces the need to memorize all possible options or arguments.</i>


title: HISTORY
content:
<i><br>Artisan was introduced early in the development of the Laravel framework, which was created by Taylor Otwell in 2011. Inspired by similar command-line tools in other frameworks (like Ruby on Rails' Rake), Artisan quickly became a cornerstone of Laravel development. It evolved significantly with each major Laravel release, expanding its feature set and becoming increasingly integral to managing all aspects of a Laravel application, from initial setup to deployment and maintenance.</i>


title: SYNOPSIS
content:
<b>php-coveralls</b> [<i>OPTIONS</i>] <<i>INPUT_FILE</i>><br><b>php-coveralls</b> --clover <<i>CLOVER_XML_FILE</i>><br><b>php-coveralls</b> --json <<i>JSON_FILE</i>><br><b>php-coveralls</b> --coverage-bin <<i>COVERAGE_BIN_FILE</i>>


title: PARAMETERS
content:
<b>--clover <FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Clover XML coverage report file generated by PHPUnit.<br><br><b>--json <FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a JSON coverage report file.<br><br><b>--coverage-bin <FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a serialized <i>php-code-coverage</i> data file.<br><br><b>--config-file <FILE></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the <i>.coveralls.yml</i> configuration file.<br><br><b>--root-dir <DIR></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the base directory for file paths in the coverage report.<br><br><b>--exclude-no-stmt</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes files from the report that contain no executable statements.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the actual submission of data to Coveralls.io; useful for testing.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing detailed processing information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of <i>php-coveralls</i>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and available options.<br><br>


title: DESCRIPTION
content:
<i>php-coveralls</i> is a command-line utility designed to integrate PHP code coverage data with the Coveralls.io service. Coveralls.io is a web-based platform that tracks and visualizes code coverage over time, helping developers maintain and improve code quality.<br><br>This tool acts as a bridge, taking coverage reports generated by PHPUnit (typically in Clover XML format) or other PHP coverage tools, processing them, and then submitting them to Coveralls.io. It's most commonly employed in Continuous Integration (CI) environments, such as Travis CI, CircleCI, or GitHub Actions. After running automated tests and generating a coverage report, <i>php-coveralls</i> is executed to upload this data.<br><br>This allows teams to immediately see the impact of new code on overall test coverage, identify untested areas, and enforce coverage thresholds. The tool handles the conversion of various coverage formats into the Coveralls.io-compatible JSON format, and it automatically detects CI environment variables to associate reports with specific builds, branches, and pull requests. By providing historical coverage trends and per-file/per-line coverage details, <i>php-coveralls</i> significantly enhances visibility into the test suite's effectiveness, promoting better development practices and ensuring robust applications.


title: CAVEATS
content:
<i>php-coveralls</i> relies on external tools (like PHPUnit) to generate the initial coverage reports. Ensure these tools are correctly configured and producing valid output in a supported format (Clover XML, JSON, or <i>php-code-coverage</i> binary).<br><br>Network connectivity is required to send data to Coveralls.io. Environment variables for CI services (e.g., <i>CI_NAME</i>, <i>CI_BUILD_NUMBER</i>) are crucial for proper report attribution on Coveralls.io.


title: TYPICAL USAGE WORKFLOW
content:
1. <b>Install <i>php-coveralls</i>:</b> Use Composer: <i>composer require --dev satooshi/php-coveralls</i>.<br>2. <b>Configure PHPUnit for coverage:</b> Ensure <i>phpunit.xml</i> is set up to generate a Clover XML report (e.g., <i><logging><log type="coverage-clover" target="build/logs/clover.xml"/></logging></i>).<br>3. <b>Run tests and generate coverage:</b> Execute PHPUnit: <i>vendor/bin/phpunit --coverage-clover build/logs/clover.xml</i>.<br>4. <b>Submit to Coveralls.io:</b> Run <i>php-coveralls</i>: <i>vendor/bin/php-coveralls --clover=build/logs/clover.xml -v</i>.<br>5. <b>CI Integration:</b> Configure your CI service (e.g., Travis CI, GitHub Actions) to run steps 3 and 4 after a successful build. Ensure the <i>COVERALLS_REPO_TOKEN</i> environment variable is set in your CI environment for private repositories.


title: HISTORY
content:
<i>php-coveralls</i> was created to address the need for a PHP-specific client to integrate with the Coveralls.io service, similar to existing clients for Ruby, Python, and JavaScript. Its development has focused on supporting various PHP code coverage formats and seamlessly integrating with popular CI/CD platforms, making it a staple for PHP projects aiming for continuous code quality monitoring.


title: SYNOPSIS
content:
<b>php-cs-fixer</b> <i>&lt;command&gt;</i> [<i>options</i>] [<i>arguments</i>]<br><br>Commonly used for fixing code:<br><b>php-cs-fixer fix</b> <i>&lt;path&gt;</i> [<i>options</i>]


title: PARAMETERS
content:
<b><i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the file or directory to fix. Can be relative or absolute. Multiple paths can be specified.<br><br><b><b>--config</b>=<i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the configuration file. Defaults to <i>.php-cs-fixer.dist.php</i> or <i>.php-cs-fixer.php</i> in the current directory. This file defines rulesets, cache file location, and directories to ignore.<br><br><b><b>--rules</b>=<i>&lt;rules&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of rules to apply. Rules can be prefixed with <i>-</i> to disable them. Example: <i>--rules=@PSR12,-binary_operator_spaces</i>. Overrides rules defined in the config file if specified.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only shows what files would be fixed, without actually modifying them. Useful for previewing changes before applying them.<br><br><b><b>--diff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the diff of the changes that would be applied. Requires <i>--dry-run</i> to be used if no actual changes are desired.<br><br><b><b>--path-mode</b>=<i>&lt;override|intersection&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies how paths provided via CLI interact with paths defined in the config file. <i>override</i> (default) replaces, <i>intersection</i> combines.<br><br><b><b>--allow-risky</b>=<i>&lt;yes|no&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Whether to allow or disallow risky rules. Risky rules might change code behavior. Defaults to <i>no</i> unless explicitly allowed in the config file.<br><br><b><b>--cache-file</b>=<i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the cache file. Defaults to <i>.php-cs-fixer.cache</i>. Caching improves performance on subsequent runs by only processing changed files.<br><br><b><b>--using-cache</b>=<i>&lt;yes|no&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the use of the cache. Setting to <i>no</i> forces processing of all files.<br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases verbosity of messages. Use multiple times for more verbosity (e.g., <i>-vvv</i>).<br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output any message.<br><br><b><b>--stop-on-error</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stop processing files on the first error encountered.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help for the command.<br><br><b><b>--version</b>, <b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the application version.<br><br>


title: DESCRIPTION
content:
<i>php-cs-fixer</i> is a powerful command-line tool that automatically fixes PHP coding standard issues in your codebase. It ensures consistency and adherence to various coding standards like PSR-1, PSR-2, PSR-12, Symfony, and many others. By analyzing your PHP files, it applies a set of configurable "fixers" (rules) to modify the code in place, correcting formatting, spacing, syntax, and structural issues. <br><br>This tool helps maintain high code quality across projects and teams, reducing manual refactoring efforts and facilitating collaborative development. It can be integrated into CI/CD pipelines or Git hooks to enforce standards continuously.


title: CAVEATS
content:
Applying <i>php-cs-fixer</i>, especially with <b>risky rules</b> enabled, can sometimes lead to unexpected changes or even break code if not properly understood or tested. It is highly recommended to run the fixer with the <b>--dry-run --diff</b> options first, and always commit your code to version control before applying fixes, to easily revert changes if necessary. Ensure you have a backup or are working in a version-controlled environment.


title: CONFIGURATION FILES
content:
The behavior of <i>php-cs-fixer</i> is largely controlled by a configuration file, typically named <i>.php-cs-fixer.dist.php</i> or <i>.php-cs-fixer.php</i>. This file, written in PHP, allows you to: <br>1. Define specific rules or rulesets (e.g., <i>@PSR12</i>, <i>@Symfony</i>).<br>2. Exclude files or directories from being fixed.<br>3. Specify the cache file location.<br>4. Set options like <i>allow-risky</i>. <br>Using a configuration file ensures consistent application of rules across different environments and team members.


title: INTEGRATION
content:
<i>php-cs-fixer</i> can be integrated into various development workflows: <br>1. <b>CI/CD Pipelines:</b> Automatically run the fixer (often with <i>--dry-run --diff --stop-on-error</i> for validation) as part of your continuous integration process to ensure all committed code adheres to standards.<br>2. <b>Git Hooks:</b> Use pre-commit hooks to automatically fix or check staged files before a commit is made, preventing non-compliant code from entering the repository.<br>3. <b>IDE Integration:</b> Many modern IDEs (like PhpStorm, VS Code) offer plugins or built-in support to run <i>php-cs-fixer</i> on file save or as a linter, providing instant feedback and auto-fixing capabilities.


title: HISTORY
content:
<i>php-cs-fixer</i> was originally created by <i>Fabien Potencier</i>, the creator of the Symfony framework, to enforce Symfony's coding standards. Over time, it evolved into a standalone, general-purpose PHP code formatter and linter, supporting a wide array of coding standards (PSR-1, PSR-2, PSR-12, etc.) and custom rules. Its development is community-driven, with continuous updates and contributions, making it a widely adopted and essential tool in the PHP ecosystem for maintaining code quality and consistency.


title: SYNOPSIS
content:
<br><b>php-yii</b> <i>&lt;command/action&gt;</i> [<i>&lt;arguments&gt;...</i>] [<i>--&lt;option&gt;=&lt;value&gt;...</i>]


title: PARAMETERS
content:
<b>--help or -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Displays help information for the specified command or action.<br><br><b>--interactive=&lt;0|1&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Controls whether the command runs in interactive mode, prompting for user confirmation (default depends on command, often 1).<br><br><b>--color=&lt;0|1&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Enables or disables ANSI color output in the terminal (default is 1 if supported).<br><br><b>--appconfig=&lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Specifies an alternative application configuration file for the console application.<br><br><b>--root-dir=&lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Sets the root directory of the Yii application, useful when running from a different path.<br><br>


title: DESCRIPTION
content:
The `php-yii` command refers to the console application entry point of the Yii PHP framework. While not a standalone Linux binary itself, it typically represents an alias or direct execution of the `yii` (or `yii.php`) script using the PHP interpreter. This command provides a powerful command-line interface (CLI) for interacting with a Yii application. It's essential for various development, deployment, and maintenance tasks, including running database migrations, clearing caches, generating code via Gii, managing users, processing queues, and executing custom administrative scripts. It allows developers to automate repetitive tasks and manage application components outside of a web browser environment, leveraging the full capabilities of the Yii framework's architecture, including its dependency injection container and component system. Its flexibility makes it a cornerstone for managing complex Yii projects from the command line.


title: CAVEATS
content:
<br><i>php-yii</i> is not a standard, pre-installed Linux command. It is a convention for invoking the Yii framework's console application script (`yii` or `yii.php`) using the PHP CLI interpreter.<br>It requires a functioning PHP CLI installation and must be executed within the context of a valid Yii framework project.<br>The available commands and their specific options are entirely dependent on the Yii application's structure, installed extensions, and custom console commands defined by the developer.


title: COMMON USAGE EXAMPLES
content:
<br>Illustrative examples of how <i>php-yii</i> is commonly used:<br><i>php-yii migrate/up</i> - Applies pending database migrations to update the database schema.<br><i>php-yii cache/flush-all</i> - Clears all application caches.<br><i>php-yii gii</i> - Starts the Gii code generator, often leading to web-based generation or showing CLI options.<br><i>php-yii help</i> - Lists all available console commands defined in the application.<br><i>php-yii help migrate/create</i> - Displays detailed help for creating new database migration files.


title: COMMAND STRUCTURE
content:
<br>Yii console commands follow a controller-action pattern. A command like <i>php-yii migrate/up</i> typically executes the `actionUp()` method within the `MigrateController` (or `MigrateCommand` in Yii 1.x). Arguments are passed as method parameters, and options as named parameters, providing a clear and organized way to define and execute console tasks.


title: HISTORY
content:
The Yii framework, created by Qiang Xue, was first publicly released in late 2008. From its inception, the console application component has been a fundamental feature, allowing developers to manage and automate various aspects of their web applications. This capability was consistently present throughout Yii 1.x and significantly enhanced in Yii 2.x, providing a robust, extensible system for command-line interactions. The invocation method, typically `php yii` or `./yii`, has remained consistent, establishing it as the primary interface for CLI-based application management within the Yii ecosystem.


title: SEE ALSO
content:
<i>php(1)</i>: The PHP interpreter, essential for executing Yii console commands., <i>composer(1)</i>: A dependency manager frequently used to install and manage Yii framework projects., <i>mysql(1)</i> or <i>psql(1)</i>: Database clients, as Yii console is often used for database migrations.


title: SYNOPSIS
content:
<br><b>phpbu</b> [<I>options</I>] [<I>arguments</I>]<br><b>phpbu</b> [--<I>configuration</I>=<I>file</I>] [--<I>bootstrap</I>=<I>file</I>] [--<I>target</I>=<I>target_name</I>] [<I>options</I>]


title: PARAMETERS
content:
<b>--configuration / -c <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the configuration file (XML, YAML, or JSON).<br><br><b>--bootstrap <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a PHP file to be loaded before execution.<br><br><b>--target <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes only a specific target defined in the configuration.<br><br><b>--simulate / -s</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a dry run, showing what would happen without actual execution.<br><br><b>--force / -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the backup process, e.g., overwriting existing backups.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug output for detailed information.<br><br><b>--verbose / -v / -vv / -vvv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of messages.<br><br><b>--version / -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the phpbu version information.<br><br><b>--help / -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command options.<br><br><b>--ansi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces ANSI output, useful for colored terminal output.<br><br><b>--no-ansi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables ANSI output.<br><br><b>--no-interaction</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask any interactive questions.<br><br><b>--generate-schema</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates an XSD schema for XML configuration validation.<br><br><b>--log-path <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a path for log files.<br><br><b>--skip-config-validation</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips the validation of the XML configuration file.<br><br>


title: DESCRIPTION
content:
<br><b>phpbu</b> is a powerful and flexible command-line tool written in PHP, designed to automate the process of creating and managing backups for web applications and databases. It abstracts away the complexity of handling various backup scenarios by providing a unified, configuration-driven approach. <br><br>The tool supports a wide array of database systems, including <I>MySQL</I>, <I>PostgreSQL</I>, <I>MongoDB</I>, and <I>Redis</I>, allowing users to export data reliably. For file backups, it integrates with common archiving tools like <I>tar</I> and <I>zip</I>, and can also utilize <I>rsync</I> for efficient synchronization. <br><br>Key features of phpbu include support for multiple storage providers (such as local file systems, <I>Amazon S3</I>, <I>Dropbox</I>, <I>SFTP</I>, and <I>WebDAV</I>), data compression and encryption, automated cleanup of old backups, and various notification mechanisms (email, Slack, custom webhooks) to alert administrators about backup status. <br><br>Configured primarily via XML, YAML, or JSON files, phpbu promotes maintainability and scalability, making it an ideal choice for PHP developers and system administrators looking for a reliable, extensible, and automated backup solution for their PHP-based projects.


title: CAVEATS
content:
<br><b>phpbu</b> relies heavily on external system utilities (e.g., <I>mysqldump</I>, <I>pg_dump</I>, <I>tar</I>, <I>gzip</I>, <I>rsync</I>) being installed and accessible in the system's PATH. Ensure these dependencies are met for all desired backup types. <br><br>Proper PHP CLI environment setup, including necessary extensions (e.g., <I>zip</I>, <I>phar</I>), is crucial for its operation. <br><br>While powerful, the configuration file can become complex for highly customized or large-scale backup strategies, requiring careful planning and testing.


title: CONFIGURATION FILES
content:
phpbu primarily uses configuration files to define backup strategies. It supports XML, YAML, and JSON formats, offering flexibility for different preferences and project setups. These files define sources (databases, directories), destinations (storages), and post-backup actions (cleanup, notifications, synchronization).


title: EXTENSIBILITY
content:
The tool is designed with extensibility in mind, allowing users to create custom adapters for new storage providers, synchronizers, or notification services. This plugin-based architecture ensures phpbu can adapt to a wide range of unique backup requirements.


title: SCHEDULING
content:
While phpbu itself is a command-line tool, it is typically scheduled to run automatically using system schedulers like <I>cron</I> on Linux/Unix systems or Task Scheduler on Windows, ensuring regular and timely backups without manual intervention.


title: HISTORY
content:
<br><b>phpbu</b> originated as a solution to automate common backup tasks for PHP applications. Over time, it evolved from a simple script into a robust, extensible framework, driven by a need for a reliable, open-source, and configuration-driven backup tool within the PHP ecosystem. Its development has focused on modularity, allowing for easy integration with various storage, synchronization, and notification services, making it a staple for developers managing their own server environments.


title: SEE ALSO
content:
<I>mysqldump</I>(1), <I>pg_dump</I>(1), <I>tar</I>(1), <I>gzip</I>(1), <I>rsync</I>(1), <I>crontab</I>(5)


title: SYNOPSIS
content:
<i>phpcs</i> [<i>options</i>] [<i>files_or_directories</i>...]<br><br>Common Usage:<br><b>phpcs</b> <i>--standard=PSR12</i> <i>/path/to/code/</i><br><b>phpcs</b> <i>--standard=MyStandard</i> <i>--report=summary</i> <i>file.php</i><br><b>phpcs</b> <i>--stdin-path=example.php</i> <i>< code.php</i>


title: PARAMETERS
content:
<b>--standard=<standard></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the coding standard(s) to use. Can be a predefined standard (e.g., <i>PSR12</i>), a path to a custom standard, or a comma-separated list.<br><br><b>--report=<format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output report format (e.g., <i>full</i>, <i>summary</i>, <i>json</i>, <i>xml</i>, <i>checkstyle</i>).<br><br><b>--report-file=<file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the generated report to the specified file instead of <i>stdout</i>.<br><br><b>-n, --no-warnings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the display of warnings in the report.<br><br><b>-w, --warnings</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows warnings in the report (this is the default behavior).<br><br><b>-e, --errors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the report to only show errors, suppressing warnings.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, showing more details about the processing.<br><br><b>-s, --sniffs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the sniff code for each violation in the report, useful for pinpointing exact rules.<br><br><b>--ignore=<pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of file or directory patterns to ignore during the scan. Patterns can contain wildcards.<br><br><b>--exclude=<sniff></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes specific sniffs from being run, specified by their full sniff code (e.g., <i>Generic.Files.LineLength</i>).<br><br><b>--sniffs=<sniff></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only runs the specified sniffs, given as a comma-separated list of sniff codes.<br><br><b>--tab-width=<width></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of spaces that a tab character represents for the purpose of sniff analysis.<br><br><b>--encoding=<encoding></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the character encoding of the files being scanned.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current version of <b>PHP_CodeSniffer</b>.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the comprehensive help message for the command.<br><br><b>--long-list-standards</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all installed coding standards that are available for use.<br><br><b>--long-list-sniffs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available sniffs, categorized by standard.<br><br><b>--severity=<level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum severity level (1-5) for errors and warnings to be reported.<br><br><b>--error-severity=<level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum severity level (1-5) for errors to be reported.<br><br><b>--warning-severity=<level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum severity level (1-5) for warnings to be reported.<br><br><b>--colors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables colorized output for better readability in terminals.<br><br><b>--cache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a cache file to speed up subsequent scans of unchanged files.<br><br><b>--clear-cache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes the cache file before starting the scan.<br><br><b>--progress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a progress bar during the scanning process.<br><br><b>--config-set <key> <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a global configuration option for <b>PHP_CodeSniffer</b>.<br><br><b>--config-show</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all current global configuration options.<br><br><b>--stdin-path=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When processing input from <i>stdin</i>, treats the content as if it originated from the specified path.<br><br>


title: DESCRIPTION
content:
<b>phpcs</b>, short for PHP CodeSniffer, is a powerful development tool designed to detect violations of a defined coding standard within PHP, JavaScript, and CSS files. It serves as an essential component in maintaining code quality and consistency across projects and teams. By checking code against a set of rules, known as "sniffs," grouped into "standards" (e.g., <i>PSR-1</i>, <i>PSR-12</i>, <i>Zend</i>, <i>Squiz</i>), <b>phpcs</b> helps developers adhere to agreed-upon formatting guidelines, best practices, and potential common errors.<br><br>It can analyze individual files, entire directories, or even process input from <i>stdin</i>. The tool offers various reporting formats, from a detailed full report to concise summaries, XML, or JSON, making it suitable for integration into diverse workflows. <b>phpcs</b> is frequently used within Continuous Integration (CI/CD) pipelines to automate code quality checks, and its integration into popular Integrated Development Environments (IDEs) provides real-time feedback to developers. It is often used in conjunction with <b>phpcbf</b> (PHP Code Beautifier and Fixer), which can automatically correct many of the issues detected by <b>phpcs</b>, streamlining the code review and development process.


title: CAVEATS
content:
While powerful, <b>phpcs</b> has a few considerations:<br><i>Performance</i>: Scanning large codebases without caching can be resource-intensive and time-consuming.<br><i>Dependencies</i>: Requires a PHP environment to run.<br><i>Scope</i>: Primarily focused on coding style and basic syntax correctness. It is not a comprehensive static analysis tool for complex logical errors or security vulnerabilities, though some sniffs may address these.<br><i>Customization complexity</i>: Creating complex custom standards or sniffs requires a good understanding of PHP and the <b>PHP_CodeSniffer</b> API.


