neulab/tldr huggingface dataset:
-w, --wwn outputs the WWN for disks instead of manufacturer, model and revision (or instead of transport information). The World Wide Name (WWN) is typically 64 bits long (16 hex digits) but could be up to 128 bits long. To indicate the WWN is hexadecimal, it is prefixed by "0x". The ATA/SATA WWN is referred to as LU name in SCSI jargon; hence this option is more or less superseded by the --unit and --long-unit options.
This utility lists SCSI devices which are known as logical units (LU) in the SCSI Architecture Model (ref: SAM-5 at https://www.t10.org) or hosts when the --hosts option is given. A host is called an initiator in SAM-5. A SCSI command travels out via an initiator, across some transport to a target and then onwards to a logical unit. A target device may contain several logical units. A target device has one or more ports that can be viewed as transport end points. Each FC and SAS disk is a single target that has two ports and contains one logical unit. If both target ports on a FC or SAS disk are connected and visible to a machine, then lsscsi will show two entries. Initiators (i.e. hosts) also have one or more ports and some HBAs in Linux have a host entry per initiator port while others have a host entry per initiator device.
When the --transport option is given for devices (i.e.  --hosts not given) then most of the information produced by lsscsi is associated with the target, or more precisely: the target port, through which SCSI commands pass that access a logical unit.
Typically this utility provides one line of output per "device" or host. Significantly more information can be obtained by adding the --list option. When used together with the --transport option, after the summary line, multiple lines of transport specific information in the form "<attribute_name>=<value>" are output, each indented by two spaces. Using a filter argument will reduce the volume of output if a lot of devices or hosts are present.
The transports that are currently recognized are: IEEE 1394, ATA, FC, iSCSI, SAS, SATA, SPI, SRP and USB.
For IEEE 1394 (a.k.a. Firewire and "SBP" when storage is involved), the EUI-64 based target port name is output when --transport is given, in the absence of the --hosts option. When the --hosts option is given then the EUI-64 initiator port name is output. Output on the summary line specific to the IEEE 1394 transport is prefixed by "sbp:".
To detect ATA and SATA devices a crude check is performed on the driver name (after the checks for other transports are exhausted). Based on the driver name either the ATA or SATA transport type is chosen. Output on the summary line is either "ata:" or "sata:". A search is made for an associated vpd_pg83 file in sysfs, if found it may contain the device's WWN which is output if present. The WWN will not appear in Linux kernels before 3.15 and with old PATA and SATA devices. Most device and hosts flagged as "ata:" will use the parallel ATA transport (PATA). For SATA devices that are attached via a SAS expander, see the SAS paragraph below.
For Fibre Channel (FC) the port name and port identifier are output when --transport is given. In the absence of the --hosts option these ids will be for the target port associated with the device (logical unit) being listed. When the --hosts option is given then the ids are for the initiator port used by the host. Output on the summary line specific to the FC transport is prefixed by "fc:".  If FCoE (over Ethernet) is detected the prefix is changed to "fcoe:".
For iSCSI the target port name is output when --transport is given, in the absence of the --hosts option. This is made up of the iSCSI name and the target portal group tag. Since the iSCSI name starts with "iqn" no further prefix is used. When the --hosts option is given then only "iscsi:" is output on the summary line.
For Serial Attached SCSI the SAS address of the target port (or initiator port if --hosts option is also given) is output. This will be a naa-5 address. For SAS HBAs and SAS targets (such as SAS disks and tape drives) the SAS address will be world wide unique. For SATA disks attached to a SAS expander, the expander provides the SAS address by adding a non zero value to its (i.e. the expander's) SAS address (e.g. expander_sas_address + phy_id + 1). SATA disks directly attached to SAS HBAs seem to have an indeterminate SAS address. Output on the summary line specific to the SAS transport is prefixed by "sas:".
For SATA devices, see the paragraph above on ATA devices. As noted in the previous paragraph, SATA devices attached to SAS expanders will display a manufactured SAS transport address (manufactured by the expander) rather than the SATA device's WWN.
For the SCSI Parallel Interface (SPI) the target port identifier (usually a number between 0 and 15 inclusive) is output when --transport is given, in the absence of the --hosts option. When the --hosts option is given then only "spi:" is output on the summary line.
For the PCIe transport (a.k.a. PCI Express) there at two possible storage types: NVMe and SOP/PQI (SCSI over PCIe). There are very few examples of the latter currently so this utility concentrates on NVMe. NVMe uses its own command set and not SCSI but has many things in common. Rather than re-invent everything currently in use that SCSI has accumulated over nearly 40 years, NVMe is beginning to use some parts of SCSI. A recent example is the SES-3 standard for enclosure management which has been adopted by NVMe.  In SCSI a SES device is a logical unit with a peripheral device type (PDT) of 0xd (for enclosure) so it will appear when the lsscsi utility is invoked without any options. In NVMe is seems that an enclosure with appear as attached to the management interface (MI) of a NVMe controller. This means it should appear when "lsscsi --hosts" is invoked. It is unclear whether such a NVMe controller can have any storage namespaces associated with it. The sg_ses utility (in the sg3_utils package) can then be given that NVMe controller's device name (e.g. /dev/nmve1). When the --transport option is given, after "pcie" the NVMe controller's subsystem vendor id and device id are output, separated by a colon (e.g. "pcie 0x8086:0x390a").
For the SCSI RDMA Protocol (SRP) the IB (InfiniBand) port's GUID is given.  As an example, it has a form like this: 0002:c903:00fa:abcd .
When a USB transport is detected, the summary line will contain "usb:" followed by a USB device name. The USB device name has the form "<b>-<p1>[.<p2>[.<p3>]]:<c>.<i>" where <b> is the USB bus number, <p1> is the port on the host. <p2> is a port on a host connected hub, if present. If needed <p3> is a USB hub port closer to the USB storage device. <c> refers to the configuration number while <i> is the interface number. There is a separate SCSI host for each USB (SCSI) target. A USB SCSI target may contain multiple logical units. Thus the same "usb: <device_name>" string appears for a USB SCSI host and all logical units that belong to the USB SCSI target associated with that USB SCSI host.
For historical reasons and as used by several other Unix based Operating Systems, Linux uses a tuple of integers to describe (a path to) a SCSI device (also know as a Logical Unit (LU)). The last element of that tuple is the so-called Logical Unit Number (LUN). And originally in SCSI a LUN was an integer, at first 3 bits long, then 8 then 16 bits. SCSI LUNs today (SAM-5 section 4.7) are 64 bits but SCSI standards now consider a LUN to be an array of 8 bytes.
Up until 2013, Linux mapped SCSI LUNs to a 32 bit integer by taking the first 4 bytes of the SCSI LUN and ignoring the last 4 bytes. Linux treated the first two bytes of the SCSI LUN as a unit (a word) and it became the least significant 16 bits in the Linux LUN integer. The next two bytes of the SCSI LUN became the upper 16 bits in the Linux LUN integer. The rationale for this was to keep commonly used LUNs small Linux LUN integers. The most common LUN (by far) in SCSI LUN (hex) notation is 00 00 00 00 00 00 00 00 and this becomes the Linux LUN integer 0. The next most common LUN is 00 01 00 00 00 00 00 00 and this becomes the Linux LUN integer 1.
In 2013 it is proposed to increase Linux LUNs to a 64 bit integer by extending the mapping outlined above. In this case all information that is possible to represent in a SCSI LUN is mapped a Linux LUN (64 bit) integer. And the mapping can be reversed without losing information.
This version of the utility supports both 32 and 64 bit Linux LUN integers.  By default the LUN shown at the end of the tuple commencing each line is a Linux LUN as a decimal integer. When the --lunhex option is given then the LUN is in SCSI LUN format with the 8 bytes run together, with the output in hexadecimal and prefixed by '0x'. The LUN is decoded according to SAM-5's description and trailing zeros (i.e. digits to the right) are not shown. So LUN 0 (i.e. 00 00 00 00 00 00 00 00) is shown as 0x0000 and LUN 65 (i.e. 00 41 00 00 00 00 00 00) is shown as 0x0041.  If the --lunhex option is given twice then the full 64 bits (i.e. 16 hexadecimal digits) are shown.
If the --lunhex option is not given on the command line then the environment variable LSSCSI_LUNHEX_OPT is checked. If LSSCSI_LUNHEX_OPT is present then its associated value becomes the number of times the --lunhex is set internally. So, for example, 'LSSCSI_LUNHEX_OPT=2 lsscsi' and 'lsscsi -xx' are equivalent.
This section only applies to the --scsi_id option and only for disk like devices (e.g. not tapes nor enclosures). There are potentially several SCSI identifiers and from revision 164 they are checked in the following order and only the first found is output.
The SCSI identifier preference order is: 3 : NAA based (Network address Authority) 2 : EUI-64 based 8 : SCSI name string (e.g. iSCSI: iqn.1998-01.com.zzware.iscsi:name1) S : serial number from SCSI VPD page 0x80 1 : T10 Vendor Identifier 0 : Vendor Specific Those numbers prefixing each entry are the SCSI 'Designator Types' found in the definition of the Device Identification VPD page (0x83) in SPC/-3, SPC/-4 and SPC/-5. The 'S' of course if not a number and it refers to a different VPD page: the Serial Number VPD page (0x80).
There is a more general --wwn option that should apply to almost all devices. The term "WWN" (world-wide name) comes from the ATA and NVMe standards and corresponds to the "Logical Unit (LU) name" in SCSI. The LU name in SCSI tends to change by transport. For SAS the LU name is the LU's NAA identifier.
Plus there the --unit and the --long-unit options that may be helpful in uniquely identifying storage devices.
Information about this utility including examples can also be found at: https://sg.danny.cz/scsi/lsscsi.html .
Information for this command is derived from the sysfs file system, which is assumed to be mounted at /sys unless specified otherwise by the user. SCSI (pseudo) devices that have been detected by the SCSI mid level will be listed even if the required upper level drivers (i.e. sd, sr, st, osst or ch) have not been loaded. If the appropriate upper level driver has not been loaded then the device file name will appear as '-' rather than something like '/dev/st0'. Note that some devices (e.g. scanners and medium changers) do not have a primary upper level driver and can only be accessed via a SCSI generic (sg) device name.
Generic SCSI devices can also be accessed via the bsg driver in Linux. By default, the bsg driver's device node names are of the form '/dev/bsg/H:C:T:L'. So, for example, the SCSI device shown by this utility on a line starting with the tuple '6:0:1:2' could be accessed via the bsg driver with the '/dev/bsg/6:0:1:2' device node name.
lsscsi version 0.21 or later is required to correctly display SCSI devices in Linux kernel 2.6.26 (and possibly later) when the CONFIG_SYSFS_DEPRECATED_V2 kernel option is not defined.
Written by Doug Gilbert
Report bugs to <dgilbert at interlog dot com>.
Copyright Â© 2003-2021 Douglas Gilbert This software is distributed under the GPL version 2. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
lspci lsusb lsblk
monop(1)                     General Commands Manual                    monop(1)
monop, monop2 - Mono Class Outline Viewer
monop [-r:assembly] [--search] class
-r:assembly Specifies the assembly to use for looking up the type
-a     Renders all of the types in the specified assembly.
--search, -s, -k Searches through all known assemblies for types containing `class'.
--refs Prints a list of the referenced assemblies for an assembly. Requires an assembly to be specified with -r:assembly.
--filter-obsolete, -f Do not show obsolete types and members.
--declared-only, -d Only show members declared in the type.
--private, -p Show private members.
--runtime-version Print runtime version.
-xa    Sets the lookup path to the Xamarin.Android directory.   This will load both the mscorlib from there, and search assemblies in that directory.
-xi    Sets the lookup path to the Xamarin.iOS directory. This will load both the mscorlib from there, and search assemblies in that directory.
Monop is a tool that allows you to view the outline of a class. You can see the signature of each member of the class.   Use monop to explore 1.0 assemblies, use monop2 to explore 2.0 assemblies.
The tool takes one option, the class to view. You must specify the full name of the class, including namespace.
For generic classes, you must specify the generic arguments, for example: monop2 'System.Collections.Generic.List`1' The above is the string representation for the List<T> in System.Collections.Generic
If you are unsure of the full name of the class, you can use the `--search' option to search through all known assemblies.
Visit http://lists.ximian.com/mailman/listinfo/mono-devel-list for details.
Visit http://www.mono-project.com for details
PACSTRAP(8)                                                          PACSTRAP(8)
pacstrap - install packages to the specified new root directory
pacstrap [options] root [packages...]
pacstrap is designed to create a new system installation from scratch. The specified packages will be installed into a given directory after setting up some basic mountpoints. By default, the host system’s pacman signing keys and mirrorlist will be used to seed the chroot.
If no packages are specified to be installed, the base metapackage will be installed.
-C <config> Use an alternate config file for pacman.
-c Use the package cache on the host, rather than the target.
-G Avoid copying the host’s pacman keyring to the target.
-i Prompt for package confirmation when needed (run interactively).
-M Avoid copying the host’s mirrorlist to the target.
-U Use pacman -U to install packages. Useful for obtaining fine-grained control over the installed packages.
-h Output syntax and command line options.
pacman(8)
Bugs can be reported on the bug tracker https://bugs.archlinux.org in the Arch Linux category and title prefixed with [arch-install-scripts] or via arch-projects@archlinux.org.
Maintainers:
•   Dave Reisner <dreisner@archlinux.org>
•   Eli Schwartz <eschwartz@archlinux.org>
For additional contributors, use git shortlog -s on the arch-install-scripts.git repository.
GIT-CLEAR(1)                       Git Extras                       GIT-CLEAR(1)
git-clear - Rigorously clean up a repository
git-clear
Clears the repository to a state that it looks as if it was freshly cloned with the current HEAD. Basically it is a git-reset --hard together with deletion of all untracked files that reside inside the working directory, including those in .gitignore.
Clears the repo.
$ git clear
Written by Daniel ´grindhold´ Brendle <grindhold@gmx.net>
FC(1P)                      POSIX Programmer's Manual                     FC(1P)
fc — process the command history list
fc [-r] [-e editor] [first [last]]
fc -l [-nr] [first [last]]
fc -s [old=new] [first]
The fc utility shall list, or shall edit and re-execute, commands previously entered to an interactive sh.
The command history list shall reference commands by number. The first number in the list is selected arbitrarily. The relationship of a number to its command shall not change except when the user logs in and no other process is accessing the list, at which time the system may reset the numbering to start the oldest retained command at another number (usually 1). When the number reaches an implementation-defined upper limit, which shall be no smaller than the value in HISTSIZE or 32767 (whichever is greater), the shell may wrap the numbers, starting the next command with a lower number (usually 1). However, despite this optional wrapping of numbers, fc shall maintain the time-ordering sequence of the commands. For example, if four commands in sequence are given the numbers 32766, 32767, 1 (wrapped), and 2 as they are executed, command 32767 is considered the command previous to 1, even though its number is higher.
When commands are edited (when the -l option is not specified), the resulting lines shall be entered at the end of the history list and then re-executed by sh.  The fc command that caused the editing shall not be entered into the history list. If the editor returns a non-zero exit status, this shall suppress the entry into the history list and the command re-execution.  Any command line variable assignments or redirection operators used with fc shall affect both the fc command itself as well as the command that results; for example:
fc -s -- -1 2>/dev/null
reinvokes the previous command, suppressing standard error for both fc and the previous command.
The fc utility shall conform to the Base Definitions volume of POSIX.1‐2017, Section 12.2, Utility Syntax Guidelines.
-e editor Use the editor named by editor to edit the commands. The editor string is a utility name, subject to search via the PATH variable (see the Base Definitions volume of POSIX.1‐2017, Chapter 8, Environment Variables).  The value in the FCEDIT variable shall be used as a default when -e is not specified. If FCEDIT is null or unset, ed shall be used as the editor.
-l        (The letter ell.) List the commands rather than invoking an editor on them. The commands shall be written in the sequence indicated by the first and last operands, as affected by -r, with each command preceded by the command number.
-n        Suppress command numbers when listing with -l.
-r        Reverse the order of the commands listed (with -l) or edited (with neither -l nor -s).
-s        Re-execute the command without invoking an editor.
first, last Select the commands to list or edit. The number of previous commands that can be accessed shall be determined by the value of the HISTSIZE variable. The value of first or last or both shall be one of the following:
[+]number A positive number representing a command number; command numbers can be displayed with the -l option.
-number   A negative decimal number representing the command that was executed number of commands previously. For example, -1 is the immediately previous command.
string    A string indicating the most recently entered command that begins with that string. If the old=new operand is not also specified with -s, the string form of the first operand cannot contain an embedded <equals- sign>.
When the synopsis form with -s is used:
*  If first is omitted, the previous command shall be used.
For the synopsis forms without -s:
*  If last is omitted, last shall default to the previous command when -l is specified; otherwise, it shall default to first.
*  If first and last are both omitted, the previous 16 commands shall be listed or the previous single command shall be edited (based on the -l option).
*  If first and last are both present, all of the commands from first to last shall be edited (without -l) or listed (with -l).  Editing multiple commands shall be accomplished by presenting to the editor all of the commands at one time, each command starting on a new line. If first represents a newer command than last, the commands shall be listed or edited in reverse sequence, equivalent to using -r.  For example, the following commands on the first line are equivalent to the corresponding commands on the second:
fc -r 10 20    fc    30 40 fc    20 10    fc -r 40 30
*  When a range of commands is used, it shall not be an error to specify first or last values that are not in the history list; fc shall substitute the value representing the oldest or newest command in the list, as appropriate. For example, if there are only ten commands in the history list, numbered 1 to 10:
fc -l fc 1 99
shall list and edit, respectively, all ten commands.
old=new   Replace the first occurrence of string old in the commands to be re-executed by the string new.
The following environment variables shall affect the execution of fc:
FCEDIT    This variable, when expanded by the shell, shall determine the default value for the -e editor option's editor option- argument. If FCEDIT is null or unset, ed shall be used as the editor.
HISTFILE  Determine a pathname naming a command history file. If the HISTFILE variable is not set, the shell may attempt to access or create a file .sh_history in the directory referred to by the HOME environment variable. If the shell cannot obtain both read and write access to, or create, the history file, it shall use an unspecified mechanism that allows the history to operate properly. (References to history ``file'' in this section shall be understood to mean this unspecified mechanism in such cases.) An implementation may choose to access this variable only when initializing the history file; this initialization shall occur when fc or sh first attempt to retrieve entries from, or add entries to, the file, as the result of commands issued by the user, the file named by the ENV variable, or implementation-defined system start-up files. In some historical shells, the history file is initialized just after the ENV file has been processed. Therefore, it is implementation-defined whether changes made to HISTFILE after the history file has been initialized are effective. Implementations may choose to disable the history list mechanism for users with appropriate privileges who do not set HISTFILE; the specific circumstances under which this occurs are implementation-defined. If more than one instance of the shell is using the same history file, it is unspecified how updates to the history file from those shells interact. As entries are deleted from the history file, they shall be deleted oldest first. It is unspecified when history file entries are physically removed from the history file.
HISTSIZE  Determine a decimal number representing the limit to the number of previous commands that are accessible. If this variable is unset, an unspecified default greater than or equal to 128 shall be used. The maximum number of commands in the history list is unspecified, but shall be at least 128. An implementation may choose to access this variable only when initializing the history file, as described under HISTFILE. Therefore, it is unspecified whether changes made to HISTSIZE after the history file has been initialized are effective.
LC_CTYPE  Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments and input files).
When the -l option is used to list commands, the format of each command in the list shall be as follows:
"%d\t%s\n", <line number>, <command>
If both the -l and -n options are specified, the format of each command shall be:
"\t%s\n", <command>
If the <command> consists of more than one line, the lines after the first shall be displayed as:
"\t%s\n", <continued-command>
0    Successful completion of the listing.
Otherwise, the exit status shall be that of the commands executed by fc.
Since editors sometimes use file descriptors as integral parts of their editing, redirecting their file descriptors as part of the fc command can produce unexpected results. For example, if vi is the FCEDIT editor, the command:
fc -s | more
does not work correctly on many systems.
Users on windowing systems may want to have separate history files for each window by setting HISTFILE as follows:
HISTFILE=$HOME/.sh_hist$$
This utility is based on the fc built-in of the KornShell.
An early proposal specified the -e option as [-e editor [old= new ]], which is not historical practice. Historical practice in fc of either [-e editor] or [-e - [ old= new ]] is acceptable, but not both together. To clarify this, a new option -s was introduced replacing the [-e -].  This resolves the conflict and makes fc conform to the Utility Syntax Guidelines.
HISTFILE  Some implementations of the KornShell check for the superuser and do not create a history file unless HISTFILE is set. This is done primarily to avoid creating unlinked files in the root file system when logging in during single-user mode.  HISTFILE must be set for the superuser to have history.
HISTSIZE  Needed to limit the size of history files. It is the intent of the standard developers that when two shells share the same history file, commands that are entered in one shell shall be accessible by the other shell. Because of the difficulties of synchronization over a network, the exact nature of the interaction is unspecified.
The initialization process for the history file can be dependent on the system start-up files, in that they may contain commands that effectively preempt the settings the user has for HISTFILE and HISTSIZE.  For example, function definition commands are recorded in the history file. If the system administrator includes function definitions in some system start-up file called before the ENV file, the history file is initialized before the user can influence its characteristics. In some historical shells, the history file is initialized just after the ENV file has been processed. Because of these situations, the text requires the initialization process to be implementation-defined.
Consideration was given to omitting the fc utility in favor of the command line editing feature in sh.  For example, in vi editing mode, typing "<ESC>v" is equivalent to:
EDITOR=vi fc
However, the fc utility allows the user the flexibility to edit multiple commands simultaneously (such as fc 10 20) and to use editors other than those supported by sh for command line editing.
In the KornShell, the alias r (``re-do'') is preset to fc -e - (equivalent to the POSIX fc -s).  This is probably an easier command name to remember than fc (``fix command''), but it does not meet the Utility Syntax Guidelines.  Renaming fc to hist or redo was considered, but since this description closely matches historical KornShell practice already, such a renaming was seen as gratuitous.  Users are free to create aliases whenever odd historical names such as fc, awk, cat, grep, or yacc are standardized by POSIX.
Command numbers have no ordering effects; they are like serial numbers. The -r option and -number operand address the sequence of command execution, regardless of serial numbers. So, for example, if the command number wrapped back to 1 at some arbitrary point, there would be no ambiguity associated with traversing the wrap point. For example, if the command history were:
32766: echo 1 32767: echo 2 1: echo 3
the number -2 refers to command 32767 because it is the second previous command, regardless of serial number.
The Base Definitions volume of POSIX.1‐2017, Chapter 8, Environment Variables, Section 12.2, Utility Syntax Guidelines
GCC(1)                                 GNU                                GCC(1)
gcc - GNU project C and C++ compiler
gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-Wpedantic] [-Idir...] [-Ldir...] [-Dmacro[=defn]...] [-Umacro] [-foption...] [-mmachine-option...] [-o outfile] [@file] infile...
Only the most useful options are listed here; see below for the remainder.  g++ accepts mostly the same options as gcc.
When you invoke GCC, it normally does preprocessing, compilation, assembly and linking.  The "overall options" allow you to stop this process at an intermediate stage.  For example, the -c option says not to run the linker.  Then the output consists of object files output by the assembler.
Other options are passed on to one or more stages of processing.  Some options control the preprocessor and others the compiler itself.  Yet other options control the assembler and linker; most of these are not documented here, since you rarely need to use any of them.
Most of the command-line options that you can use with GCC are useful for C programs; when an option is only useful with another language (usually C++), the explanation says so explicitly.  If the description for a particular option does not mention a source language, you can use that option with all supported languages.
The usual way to run GCC is to run the executable called gcc, or machine-gcc when cross-compiling, or machine-gcc-version to run a specific version of GCC.  When you compile C++ programs, you should invoke GCC as g++ instead.
The gcc program accepts options and file names as operands.  Many options have multi-letter names; therefore multiple single-letter options may not be grouped: -dv is very different from -d -v.
You can mix options and other arguments.  For the most part, the order you use doesn't matter.  Order does matter when you use several options of the same kind; for example, if you specify -L more than once, the directories are searched in the order specified.  Also, the placement of the -l option is significant.
Many options have long names starting with -f or with -W---for example, -fmove-loop-invariants, -Wformat and so on.  Most of these have both positive and negative forms; the negative form of -ffoo is -fno-foo. This manual documents only one of these two forms, whichever one is not the default.
Some options take one or more arguments typically separated either by a space or by the equals sign (=) from the option name.  Unless documented otherwise, an argument can be either numeric or a string.  Numeric arguments must typically be small unsigned decimal or hexadecimal integers.  Hexadecimal arguments must begin with the 0x prefix. Arguments to options that specify a size threshold of some sort may be arbitrarily large decimal or hexadecimal integers followed by a byte size suffix designating a multiple of bytes such as "kB" and "KiB" for kilobyte and kibibyte, respectively, "MB" and "MiB" for megabyte and mebibyte, "GB" and "GiB" for gigabyte and gigibyte, and so on.  Such arguments are designated by byte-size in the following text.  Refer to the NIST, IEC, and other relevant national and international standards for the full listing and explanation of the binary and decimal byte size prefixes.
Option Summary Here is a summary of all the options, grouped by type.  Explanations are in the following sections.
Overall Options -c  -S  -E  -o file -dumpbase dumpbase  -dumpbase-ext auxdropsuf -dumpdir dumppfx  -x language -v  -###  --help[=class[,...]] --target-help  --version -pass-exit-codes  -pipe  -specs=file -wrapper @file  -ffile-prefix-map=old=new -fplugin=file -fplugin-arg-name=arg -fdump-ada-spec[-slim]  -fada-spec-parent=unit -fdump-go-spec=file
C Language Options -ansi  -std=standard  -fgnu89-inline -fpermitted-flt-eval-methods=standard -aux-info filename -fallow-parameterless-variadic-functions -fno-asm  -fno-builtin -fno-builtin-function  -fgimple -fhosted  -ffreestanding -fopenacc -fopenacc-dim=geom -fopenmp  -fopenmp-simd -fms-extensions -fplan9-extensions  -fsso-struct=endianness -fallow-single-precision -fcond-mismatch  -flax-vector-conversions -fsigned-bitfields -fsigned-char -funsigned-bitfields  -funsigned-char
C++ Language Options -fabi-version=n  -fno-access-control -faligned-new=n -fargs-in-order=n  -fchar8_t  -fcheck-new -fconstexpr-depth=n -fconstexpr-cache-depth=n -fconstexpr-loop-limit=n -fconstexpr-ops-limit=n -fno-elide-constructors -fno-enforce-eh-specs -fno-gnu-keywords -fno-implicit-templates -fno-implicit-inline-templates -fno-implement-inlines -fmodule-header[=kind] -fmodule-only -fmodules-ts -fmodule-implicit-inline -fno-module-lazy -fmodule-mapper=specification -fmodule-version-ignore -fms-extensions -fnew-inheriting-ctors -fnew-ttp-matching -fno-nonansi-builtins -fnothrow-opt  -fno-operator-names -fno-optional-diags  -fpermissive -fno-pretty-templates -fno-rtti  -fsized-deallocation -ftemplate-backtrace-limit=n -ftemplate-depth=n -fno-threadsafe-statics  -fuse-cxa-atexit -fno-weak  -nostdinc++ -fvisibility-inlines-hidden -fvisibility-ms-compat -fext-numeric-literals -flang-info-include-translate[=header] -flang-info-include-translate-not -flang-info-module-cmi[=module] -stdlib=libstdc++,libc++ -Wabi-tag  -Wcatch-value  -Wcatch-value=n -Wno-class-conversion  -Wclass-memaccess -Wcomma-subscript -Wconditionally-supported -Wno-conversion-null -Wctad-maybe-unsupported -Wctor-dtor-privacy  -Wno-delete-incomplete -Wdelete-non-virtual-dtor  -Wdeprecated-copy -Wdeprecated-copy-dtor -Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion -Weffc++  -Wno-exceptions -Wextra-semi  -Wno-inaccessible-base -Wno-inherited-variadic-ctor -Wno-init-list-lifetime -Winvalid-imported-macros -Wno-invalid-offsetof  -Wno-literal-suffix -Wno-mismatched-new-delete -Wmismatched-tags -Wmultiple-inheritance  -Wnamespaces  -Wnarrowing -Wnoexcept  -Wnoexcept-type  -Wnon-virtual-dtor -Wpessimizing-move -Wno-placement-new  -Wplacement-new=n -Wrange-loop-construct -Wredundant-move -Wredundant-tags -Wreorder  -Wregister -Wstrict-null-sentinel  -Wno-subobject-linkage  -Wtemplates -Wno-non-template-friend  -Wold-style-cast -Woverloaded-virtual -Wno-pmf-conversions -Wsign-promo -Wsized-deallocation -Wsuggest-final-methods -Wsuggest-final-types  -Wsuggest-override -Wno-terminate  -Wuseless-cast  -Wno-vexing-parse -Wvirtual-inheritance -Wno-virtual-move-assign  -Wvolatile -Wzero-as-null-pointer-constant
Objective-C and Objective-C++ Language Options -fconstant-string-class=class-name -fgnu-runtime  -fnext-runtime -fno-nil-receivers -fobjc-abi-version=n -fobjc-call-cxx-cdtors -fobjc-direct-dispatch -fobjc-exceptions -fobjc-gc -fobjc-nilcheck -fobjc-std=objc1 -fno-local-ivars -fivar-visibility=[public|protected|private|package] -freplace-objc-classes -fzero-link -gen-decls -Wassign-intercept -Wno-property-assign-default -Wno-protocol -Wobjc-root-class -Wselector -Wstrict-selector-match -Wundeclared-selector
Diagnostic Message Formatting Options -fmessage-length=n -fdiagnostics-plain-output -fdiagnostics-show-location=[once|every-line] -fdiagnostics-color=[auto|never|always] -fdiagnostics-urls=[auto|never|always] -fdiagnostics-format=[text|json] -fno-diagnostics-show-option -fno-diagnostics-show-caret -fno-diagnostics-show-labels -fno-diagnostics-show-line-numbers -fno-diagnostics-show-cwe -fdiagnostics-minimum-margin-width=width -fdiagnostics-parseable-fixits  -fdiagnostics-generate-patch -fdiagnostics-show-template-tree  -fno-elide-type -fdiagnostics-path-format=[none|separate-events|inline-events] -fdiagnostics-show-path-depths -fno-show-column -fdiagnostics-column-unit=[display|byte] -fdiagnostics-column-origin=origin
Static Analyzer Options -fanalyzer -fanalyzer-call-summaries -fanalyzer-checker=name -fno-analyzer-feasibility -fanalyzer-fine-grained -fanalyzer-state-merge -fanalyzer-state-purge -fanalyzer-transitivity -fanalyzer-verbose-edges -fanalyzer-verbose-state-changes -fanalyzer-verbosity=level -fdump-analyzer -fdump-analyzer-stderr -fdump-analyzer-callgraph -fdump-analyzer-exploded-graph -fdump-analyzer-exploded-nodes -fdump-analyzer-exploded-nodes-2 -fdump-analyzer-exploded-nodes-3 -fdump-analyzer-feasibility -fdump-analyzer-json -fdump-analyzer-state-purge -fdump-analyzer-supergraph -Wno-analyzer-double-fclose -Wno-analyzer-double-free -Wno-analyzer-exposure-through-output-file -Wno-analyzer-file-leak -Wno-analyzer-free-of-non-heap -Wno-analyzer-malloc-leak -Wno-analyzer-mismatching-deallocation -Wno-analyzer-null-argument -Wno-analyzer-null-dereference -Wno-analyzer-possible-null-argument -Wno-analyzer-possible-null-dereference -Wno-analyzer-shift-count-negative -Wno-analyzer-shift-count-overflow -Wno-analyzer-stale-setjmp-buffer -Wno-analyzer-tainted-array-index -Wanalyzer-too-complex -Wno-analyzer-unsafe-call-within-signal-handler -Wno-analyzer-use-after-free -Wno-analyzer-use-of-pointer-in-stale-stack-frame -Wno-analyzer-use-of-uninitialized-value -Wno-analyzer-write-to-const -Wno-analyzer-write-to-string-literal
C and Objective-C-only Warning Options -Wbad-function-cast  -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes  -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wstrict-prototypes  -Wtraditional -Wtraditional-conversion -Wdeclaration-after-statement -Wpointer-sign
Debugging Options -g  -glevel  -gdwarf  -gdwarf-version -ggdb  -grecord-gcc-switches -gno-record-gcc-switches -gstabs  -gstabs+  -gstrict-dwarf -gno-strict-dwarf -gas-loc-support  -gno-as-loc-support -gas-locview-support  -gno-as-locview-support -gcolumn-info -gno-column-info  -gdwarf32  -gdwarf64 -gstatement-frontiers -gno-statement-frontiers -gvariable-location-views -gno-variable-location-views -ginternal-reset-location-views -gno-internal-reset-location-views -ginline-points -gno-inline-points -gvms  -gxcoff  -gxcoff+  -gz[=type] -gsplit-dwarf -gdescribe-dies  -gno-describe-dies -fdebug-prefix-map=old=new -fdebug-types-section -fno-eliminate-unused-debug-types -femit-struct-debug-baseonly  -femit-struct-debug-reduced -femit-struct-debug-detailed[=spec-list] -fno-eliminate-unused-debug-symbols  -femit-class-debug-always -fno-merge-debug-strings  -fno-dwarf2-cfi-asm -fvar-tracking -fvar-tracking-assignments
Program Instrumentation Options -p  -pg  -fprofile-arcs  --coverage  -ftest-coverage -fprofile-abs-path -fprofile-dir=path  -fprofile-generate -fprofile-generate=path -fprofile-info-section -fprofile-info-section=name -fprofile-note=path -fprofile-prefix-path=path -fprofile-update=method -fprofile-filter-files=regex -fprofile-exclude-files=regex -fprofile-reproducible=[multithreaded|parallel-runs|serial] -fsanitize=style  -fsanitize-recover  -fsanitize-recover=style -fasan-shadow-offset=number  -fsanitize-sections=s1,s2,... -fsanitize-undefined-trap-on-error  -fbounds-check -fcf-protection=[full|branch|return|none|check] -fstack-protector -fstack-protector-all  -fstack-protector-strong -fstack-protector-explicit  -fstack-check -fstack-limit-register=reg -fstack-limit-symbol=sym -fno-stack-limit  -fsplit-stack -fvtable-verify=[std|preinit|none] -fvtv-counts  -fvtv-debug -finstrument-functions -finstrument-functions-exclude-function-list=sym,sym,... -finstrument-functions-exclude-file-list=file,file,...
Preprocessor Options -Aquestion=answer -A-question[=answer] -C  -CC  -Dmacro[=defn] -dD -dI  -dM  -dN  -dU -fdebug-cpp  -fdirectives-only -fdollars-in-identifiers -fexec-charset=charset -fextended-identifiers -finput-charset=charset  -flarge-source-files -fmacro-prefix-map=old=new -fmax-include-depth=depth -fno-canonical-system-headers  -fpch-deps  -fpch-preprocess -fpreprocessed  -ftabstop=width  -ftrack-macro-expansion -fwide-exec-charset=charset  -fworking-directory -H  -imacros file -include file -M  -MD  -MF  -MG  -MM  -MMD  -MP  -MQ  -MT -Mno-modules -no-integrated-cpp  -P  -pthread  -remap -traditional -traditional-cpp  -trigraphs -Umacro  -undef -Wp,option -Xpreprocessor option
Assembler Options -Wa,option  -Xassembler option
Linker Options object-file-name  -fuse-ld=linker  -llibrary -nostartfiles -nodefaultlibs  -nolibc  -nostdlib -e entry  --entry=entry -pie -pthread  -r  -rdynamic -s  -static  -static-pie  -static-libgcc -static-libstdc++ -static-libasan  -static-libtsan  -static-liblsan -static-libubsan -shared  -shared-libgcc  -symbolic -T script -Wl,option  -Xlinker option -u symbol  -z keyword
Directory Options -Bprefix  -Idir  -I- -idirafter dir -imacros file  -imultilib dir -iplugindir=dir  -iprefix file -iquote dir  -isysroot dir  -isystem dir -iwithprefix dir  -iwithprefixbefore dir -Ldir -no-canonical-prefixes  --no-sysroot-suffix -nostdinc  -nostdinc++ --sysroot=dir
Code Generation Options -fcall-saved-reg  -fcall-used-reg -ffixed-reg  -fexceptions -fnon-call-exceptions  -fdelete-dead-exceptions  -funwind-tables -fasynchronous-unwind-tables -fno-gnu-unique -finhibit-size-directive -fcommon  -fno-ident -fpcc-struct-return  -fpic  -fPIC  -fpie  -fPIE -fno-plt -fno-jump-tables -fno-bit-tests -frecord-gcc-switches -freg-struct-return  -fshort-enums  -fshort-wchar -fverbose-asm -fpack-struct[=n] -fleading-underscore  -ftls-model=model -fstack-reuse=reuse_level -ftrampolines  -ftrapv  -fwrapv -fvisibility=[default|internal|hidden|protected] -fstrict-volatile-bitfields  -fsync-libcalls
Developer Options -dletters  -dumpspecs  -dumpmachine  -dumpversion -dumpfullversion -fcallgraph-info[=su,da] -fchecking  -fchecking=n -fdbg-cnt-list -fdbg-cnt=counter-value-list -fdisable-ipa-pass_name -fdisable-rtl-pass_name -fdisable-rtl-pass-name=range-list -fdisable-tree-pass_name -fdisable-tree-pass-name=range-list -fdump-debug  -fdump-earlydebug -fdump-noaddr  -fdump-unnumbered -fdump-unnumbered-links -fdump-final-insns[=file] -fdump-ipa-all -fdump-ipa-cgraph  -fdump-ipa-inline -fdump-lang-all -fdump-lang-switch -fdump-lang-switch-options -fdump-lang-switch-options=filename -fdump-passes -fdump-rtl-pass -fdump-rtl-pass=filename -fdump-statistics -fdump-tree-all -fdump-tree-switch -fdump-tree-switch-options -fdump-tree-switch-options=filename -fcompare-debug[=opts] -fcompare-debug-second -fenable-kind-pass -fenable-kind-pass=range- list -fira-verbose=n -flto-report  -flto-report-wpa  -fmem-report-wpa -fmem-report  -fpre-ipa-mem-report  -fpost-ipa-mem-report -fopt-info -fopt-info-options[=file] -fprofile-report -frandom-seed=string -fsched-verbose=n -fsel-sched-verbose  -fsel-sched-dump-cfg -fsel-sched-pipelining-verbose -fstats  -fstack-usage  -ftime-report -ftime-report-details -fvar-tracking-assignments-toggle  -gtoggle -print-file-name=library  -print-libgcc-file-name -print-multi-directory  -print-multi-lib  -print-multi-os-directory -print-prog-name=program  -print-search-dirs  -Q -print-sysroot -print-sysroot-headers-suffix -save-temps  -save-temps=cwd -save-temps=obj  -time[=file]
Machine-Dependent Options AArch64 Options -mabi=name  -mbig-endian  -mlittle-endian -mgeneral-regs-only -mcmodel=tiny  -mcmodel=small  -mcmodel=large -mstrict-align  -mno-strict-align -momit-leaf-frame-pointer -mtls-dialect=desc  -mtls-dialect=traditional -mtls-size=size -mfix-cortex-a53-835769  -mfix-cortex-a53-843419 -mlow-precision-recip-sqrt  -mlow-precision-sqrt  -mlow-precision-div -mpc-relative-literal-loads -msign-return-address=scope -mbranch-protection=none|standard|pac-ret[+leaf +b-key]|bti -mharden-sls=opts -march=name  -mcpu=name  -mtune=name -moverride=string  -mverbose-cost-dump -mstack-protector-guard=guard -mstack-protector-guard-reg=sysreg -mstack-protector-guard-offset=offset -mtrack-speculation -moutline-atomics
Adapteva Epiphany Options -mhalf-reg-file  -mprefer-short-insn-regs -mbranch-cost=num  -mcmove  -mnops=num  -msoft-cmpsf -msplit-lohi -mpost-inc  -mpost-modify  -mstack-offset=num -mround-nearest -mlong-calls  -mshort-calls  -msmall16 -mfp-mode=mode  -mvect-double -max-vect-align=num -msplit-vecmove-early  -m1reg-reg
AMD GCN Options -march=gpu -mtune=gpu -mstack-size=bytes
ARC Options -mbarrel-shifter  -mjli-always -mcpu=cpu  -mA6  -mARC600 -mA7  -mARC700 -mdpfp  -mdpfp-compact  -mdpfp-fast  -mno-dpfp-lrsr -mea  -mno-mpy  -mmul32x16  -mmul64  -matomic -mnorm  -mspfp -mspfp-compact  -mspfp-fast  -msimd  -msoft-float  -mswap -mcrc -mdsp-packa  -mdvbf  -mlock  -mmac-d16  -mmac-24  -mrtsc  -mswape -mtelephony  -mxy  -misize  -mannotate-align  -marclinux -marclinux_prof -mlong-calls  -mmedium-calls  -msdata -mirq-ctrl-saved -mrgf-banked-regs  -mlpc-width=width  -G num -mvolatile-cache  -mtp-regno=regno -malign-call  -mauto-modify-reg -mbbit-peephole  -mno-brcc -mcase-vector-pcrel  -mcompact-casesi -mno-cond-exec  -mearly-cbranchsi -mexpand-adddi  -mindexed-loads -mlra  -mlra-priority-none -mlra-priority-compact mlra-priority- noncompact  -mmillicode -mmixed-code  -mq-class  -mRcq  -mRcw -msize-level=level -mtune=cpu  -mmultcost=num  -mcode-density-frame -munalign-prob-threshold=probability  -mmpy-option=multo -mdiv-rem -mcode-density  -mll64  -mfpu=fpu  -mrf16  -mbranch-index
ARM Options -mapcs-frame  -mno-apcs-frame -mabi=name -mapcs-stack-check  -mno-apcs-stack-check -mapcs-reentrant -mno-apcs-reentrant -mgeneral-regs-only -msched-prolog -mno-sched-prolog -mlittle-endian  -mbig-endian -mbe8  -mbe32 -mfloat-abi=name -mfp16-format=name -mthumb-interwork -mno-thumb-interwork -mcpu=name  -march=name  -mfpu=name -mtune=name -mprint-tune-info -mstructure-size-boundary=n -mabort-on-noreturn -mlong-calls  -mno-long-calls -msingle-pic-base  -mno-single-pic-base -mpic-register=reg -mnop-fun-dllimport -mpoke-function-name -mthumb -marm  -mflip-thumb -mtpcs-frame  -mtpcs-leaf-frame -mcaller-super-interworking  -mcallee-super-interworking -mtp=name -mtls-dialect=dialect -mword-relocations -mfix-cortex-m3-ldrd -munaligned-access -mneon-for-64bits -mslow-flash-data -masm-syntax-unified -mrestrict-it -mverbose-cost-dump -mpure-code -mcmse -mfdpic
AVR Options -mmcu=mcu  -mabsdata  -maccumulate-args -mbranch-cost=cost -mcall-prologues  -mgas-isr-prologues  -mint8 -mdouble=bits -mlong-double=bits -mn_flash=size  -mno-interrupts -mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack -mfract-convert-truncate -mshort-calls  -nodevicelib  -nodevicespecs -Waddr-space-convert  -Wmisspelled-isr
Blackfin Options -mcpu=cpu[-sirevision] -msim -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer -mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly -mno-csync-anomaly -mlow-64k  -mno-low64k  -mstack-check-l1 -mid-shared-library -mno-id-shared-library  -mshared-library-id=n -mleaf-id-shared-library  -mno-leaf-id-shared-library -msep-data -mno-sep-data  -mlong-calls  -mno-long-calls -mfast-fp  -minline-plt -mmulticore  -mcorea  -mcoreb  -msdram -micplb
C6X Options -mbig-endian  -mlittle-endian  -march=cpu -msim -msdata=sdata-type
CRIS Options -mcpu=cpu  -march=cpu  -mtune=cpu -mmax-stack-frame=n -melinux-stacksize=n -metrax4  -metrax100  -mpdebug  -mcc-init -mno-side-effects -mstack-align  -mdata-align  -mconst-align -m32-bit -m16-bit  -m8-bit  -mno-prologue-epilogue  -mno-gotplt -melf  -maout -melinux  -mlinux  -sim  -sim2 -mmul-bug-workaround -mno-mul-bug-workaround
CR16 Options -mmac -mcr16cplus  -mcr16c -msim  -mint32  -mbit-ops -mdata-model=model
C-SKY Options -march=arch  -mcpu=cpu -mbig-endian  -EB -mlittle-endian  -EL -mhard-float  -msoft-float  -mfpu=fpu -mdouble-float  -mfdivdu -mfloat-abi=name -melrw  -mistack  -mmp -mcp  -mcache  -msecurity  -mtrust -mdsp  -medsp  -mvdsp -mdiv -msmart  -mhigh-registers  -manchor -mpushpop  -mmultiple-stld -mconstpool  -mstack-size  -mccrt -mbranch-cost=n  -mcse-cc -msched-prolog -msim
Darwin Options -all_load  -allowable_client  -arch -arch_errors_fatal -arch_only  -bind_at_load  -bundle  -bundle_loader -client_name  -compatibility_version  -current_version -dead_strip -dependency-file  -dylib_file  -dylinker_install_name -dynamic -dynamiclib  -exported_symbols_list -filelist  -flat_namespace -force_cpusubtype_ALL -force_flat_namespace -headerpad_max_install_names -iframework -image_base  -init -install_name  -keep_private_externs -multi_module  -multiply_defined -multiply_defined_unused -noall_load   -no_dead_strip_inits_and_terms -nofixprebinding  -nomultidefs  -noprebind  -noseglinkedit -pagezero_size  -prebind  -prebind_all_twolevel_modules -private_bundle  -read_only_relocs  -sectalign -sectobjectsymbols -whyload  -seg1addr -sectcreate  -sectobjectsymbols  -sectorder -segaddr  -segs_read_only_addr  -segs_read_write_addr -seg_addr_table -seg_addr_table_filename  -seglinkedit -segprot  -segs_read_only_addr -segs_read_write_addr -single_module  -static  -sub_library -sub_umbrella -twolevel_namespace  -umbrella  -undefined -unexported_symbols_list  -weak_reference_mismatches -whatsloaded  -F -gused  -gfull  -mmacosx-version-min=version -mkernel -mone-byte-bool
DEC Alpha Options -mno-fp-regs  -msoft-float -mieee -mieee-with-inexact  -mieee-conformant -mfp-trap-mode=mode -mfp-rounding-mode=mode -mtrap-precision=mode  -mbuild-constants -mcpu=cpu-type  -mtune=cpu-type -mbwx  -mmax  -mfix  -mcix -mfloat-vax  -mfloat-ieee -mexplicit-relocs  -msmall-data -mlarge-data -msmall-text  -mlarge-text -mmemory-latency=time
eBPF Options -mbig-endian -mlittle-endian -mkernel=version -mframe-limit=bytes -mxbpf
FR30 Options -msmall-model  -mno-lsim
FT32 Options -msim  -mlra  -mnodiv  -mft32b  -mcompress  -mnopm