Close Menu
    What's Hot

    YouTube Unblocked Proxy: Overview, Benefits, and Real-World Use Cases

    April 7, 2026

    Linux Kernel Release Frequency Statistics 2026

    April 7, 2026

    How To Use The SSH Login Command

    April 7, 2026
    Facebook X (Twitter) Instagram
    Command Linux
    • About
    • Man Pages
    • Arch Linux
    • Statistics
    • How to
      • Q&A
    • OS
      • Windows
    • Blog
      • Featured
    • MORE
      • Easter Eggs
      • IP Address
    • Write For Us
    • Contact Us
    Command Linux
    Home - man page - M4

    M4

    WillieBy WillieJanuary 24, 2026Updated:January 24, 2026No Comments2 Mins Read

    NAME

    m4 – macro processor  

    SYNOPSIS

    m4 [OPTION]… [FILE]…  

    DESCRIPTION

    Process macros in FILEs. If no FILE or if FILE is `-‘, standard input is read.

    Mandatory or optional arguments to long options are mandatory or optional for short options too.  

    Operation modes:

    –help
    display this help and exit
    –version
    output version information and exit
    -E, –fatal-warnings
    once: warnings become errors, twice: stop execution at first error
    -i, –interactive
    unbuffer output, ignore interrupts
    -P, –prefix-builtins
    force a `m4_’ prefix to all builtins
    -Q, –quiet, –silent
    suppress some warnings for builtins
    –warn-macro-sequence[=REGEXP]
    warn if macro definition matches REGEXP,
    default \$\({[^}]*}\|[0-9][0-9]+\)
     

    Preprocessor features:

    -D, –define=NAME[=VALUE]
    define NAME as having VALUE, or empty
    -I, –include=DIRECTORY
    append DIRECTORY to include path
    -s, –synclines
    generate `#line NUM "FILE"’ lines
    -U, –undefine=NAME
    undefine NAME
     

    Limits control:

    -g, –gnu
    override -G to re-enable GNU extensions
    -G, –traditional
    suppress all GNU extensions
    -H, –hashsize=PRIME
    set symbol lookup hash table size [509]
    -L, –nesting-limit=NUMBER
    change nesting limit, 0 for unlimited [0]
     

    Frozen state files:

    -F, –freeze-state=FILE
    produce a frozen state on FILE at end
    -R, –reload-state=FILE
    reload a frozen state from FILE at start
     

    Debugging:

    -d, –debug[=FLAGS]
    set debug level (no FLAGS implies `aeq’)
    –debugfile[=FILE]
    redirect debug and trace output to FILE (default stderr, discard if empty string)
    -l, –arglength=NUM
    restrict macro tracing size
    -t, –trace=NAME
    trace NAME when it is defined
     

    FLAGS is any of:

    a
    show actual arguments
    c
    show before collect, after collect and after call
    e
    show expansion
    f
    say current input file name
    i
    show changes in input files
    l
    say current input line number
    p
    show results of path searches
    q
    quote values as necessary, with a or e flag
    t
    trace for all macro calls, not only traceon’ed
    x
    add a unique macro call id, useful with c flag
    V
    shorthand for all of the above flags

    If defined, the environment variable `M4PATH’ is a colon-separated list of directories included after any specified by `-I’.

    Exit status is 0 for success, 1 for failure, 63 for frozen file version mismatch, or whatever value was passed to the m4exit macro.  

    AUTHOR

    Written by Rene’ Seindal.

    Willie
    • Website

    Willie has over 15 years of experience in Linux system administration and DevOps. After managing infrastructure for startups and enterprises alike, he founded Command Linux to share the practical knowledge he wished he had when starting out. He oversees content strategy and contributes guides on server management, automation, and security.

    Related Posts

    E2FREEFRAG

    April 7, 2026

    Net::DNS::RR::DHCID

    April 7, 2026

    LOGROTATE

    April 7, 2026

    EVP_MD_CTX_destroy

    April 7, 2026
    Top Posts

    GETOPT

    February 14, 2026

    CTIME

    February 11, 2026

    WRITE

    February 9, 2026

    DEBIAN-DISTRO-INFO

    April 1, 2026
    • Home
    • Contact Us
    • Privacy Policy
    • Terms of Use

    Type above and press Enter to search. Press Esc to cancel.