COWSAY(6)

๐Ÿ’– COWSAY(6) ๐Ÿ’–

okay bestie, welcome to the cowsay / cowthink manual page, from the Games Manual section. it's a configurable speaking/thinking cow and honestly? a bit more than that. ๐Ÿ„โœจ


๐ŸŒธ NAME ๐ŸŒธ

cowsay / cowthink โ€” a configurable speaking/thinking cow (and a bit more). she contains multitudes fr fr. ๐Ÿซถ


โœจ SYNOPSIS โœจ

cowsay [-e eye_string] [-f cowfile] [-h] [-l] [-n] [-T tongue_string]
[-W column] [-bdgpstwy]

๐Ÿ’… DESCRIPTION ๐Ÿ’…

so like. cowsay generates an ASCII picture of a cow saying whatever you give her. if you run it with no arguments at all, she just accepts standard input, word-wraps your message at around 40 columns, and prints the cow saying the message to standard output. no notes. iconic behaviour. ๐Ÿ’–

now, if you want to use arbitrary messages with arbitrary whitespace, that's what the -n option is for. specify -n and your message will not be word-wrapped. this is possibly useful if you want to make the cow think or speak in figlet(6). but heads up bestie: if -n is specified, there must not be any command-line arguments left after all the switches have been processed. none. zero. ๐Ÿšซ

the -W option specifies roughly where the message should be wrapped. the default is equivalent to -W 40, i.e. wrap words at or before the 40th column. she's got boundaries, and honestly, good for her. ๐ŸŽ€

if any command-line arguments are left over after all switches have been processed, they become the cow's message. and in that case, the program will not accept standard input for a message. it's one or the other, babe. ๐Ÿ’…


๐Ÿฆ‹ the mood ring modes ๐Ÿฆ‹

there are several provided modes which change the appearance of the cow depending on its particular emotional/physical state. it's giving astrology but for bovines. ๐Ÿ”ฅ

  • -b โ€” initiates Borg mode
  • -d โ€” causes the cow to appear dead
  • -g โ€” invokes greedy mode
  • -p โ€” causes a state of paranoia to come over the cow
  • -s โ€” makes the cow appear thoroughly stoned
  • -t โ€” yields a tired cow
  • -w โ€” somewhat the opposite of -t, and initiates wired mode
  • -y โ€” brings on the cow's youthful appearance

๐Ÿ‘€ eyes, tongue, vibes ๐Ÿ‘€

you may specify the -e option to select the appearance of the cow's eyes, in which case the first two characters of the argument string eye_string will be used. the default eyes are 'oo'. so cute. ๐Ÿฅบ

the tongue is similarly configurable through -T and tongue_string; it must be two characters and does not appear by default. however, it does appear in the 'dead' and 'stoned' modes. make of that what you will. ๐Ÿ’€

โš ๏ธ any configuration done by -e and -T will be lost if one of the provided modes is used. periodt. so pick your lane.

๐Ÿฎ cowfiles, the whole thing ๐Ÿฎ

the -f option specifies a particular cow picture file (a cowfile) to use. if the cowfile spec contains / then it will be interpreted as a path relative to the current directory. otherwise, cowsay will search the path specified in the COWPATH environment variable. to list all cowfiles on the current COWPATH, invoke cowsay with the -l switch. window shopping, but for cows. ๐Ÿ›๏ธโœจ

and if the program is invoked as cowthink then the cow will think its message instead of saying it. introvert cow hours. ๐Ÿ’ญ


๐Ÿงš COWFILE FORMAT ๐Ÿงš

a cowfile is made up of a simple block of perl(1) code, which assigns a picture of a cow to the variable $the_cow. ๐Ÿ’–

should you wish to customize the eyes or the tongue of the cow, then the variables $eyes and $tongue may be used. the trail leading up to the cow's message balloon is composed of the character(s) in the $thoughts variable. ๐ŸŽˆ

any backslashes must be reduplicated to prevent interpolation. the name of a cowfile should end with .cow, otherwise it is assumed not to be a cowfile. also, at-signs (@) must be backslashed because that is what Perl 5 expects. no cap, perl is like that. ๐Ÿช


๐ŸŒˆ COMPATIBILITY WITH OLDER VERSIONS ๐ŸŒˆ

what older versions? :-) ๐Ÿ’€

version 3.x is fully backward-compatible with 2.x versions. if you're still using a 1.x version, consider upgrading. and tell me where you got the older versions, since I didn't exactly put them up for world-wide access. like, how did you even get those bestie. ๐Ÿ˜ญ

oh, just so you know, this manual page documents version 3.03 of cowsay. ๐Ÿ“Œ


๐ŸŒฑ ENVIRONMENT ๐ŸŒฑ

the COWPATH environment variable, if present, will be used to search for cowfiles. it contains a colon-separated list of directories, much like PATH or MANPATH. it should always contain the /usr/share/cowsay/cows directory, or at least a directory with a file called default.cow in it. otherwise she's just standing there with nowhere to look. ๐Ÿ™ˆ


๐Ÿ“ FILES ๐Ÿ“

  • /usr/share/cowsay/cows โ€” holds a sample set of cowfiles. if your COWPATH is not explicitly set, it automatically contains this directory. the mothership. ๐Ÿ‘‘

๐Ÿ’€ BUGS ๐Ÿ’€

if there are any, please notify the author at the address below. (yes that's the whole section. she said "if there are any." confident queen. ๐Ÿ’…)


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Tony Monroe (tony@nog.net), with suggestions from Shannon Appel (appel@CSUA.Berkeley.EDU) and contributions from Anthony Polito (aspolito@CSUA.Berkeley.EDU). shoutout to the cow architects. ๐Ÿซถ


๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

perl(1), wall(1), nwrite(1), figlet(6)


okay that's the whole page bestie, you ate it, you read it, you're basically a cowfile sommelier now. ๐Ÿ„๐Ÿ’–โœจ

that's a wrap on this manual page โ€” and the source/version/date stamp on it is <code>$Date: 1999/11/04 19:50:40 $</code>, so yeah, this cow has been iconic since 1999 and is still serving looks in the Games Manual. slay forever. ๐Ÿ’…๐ŸŒˆ

๐Ÿ“ฆ where this page comes from