UI(1)

✨ UI(1) β€” the "who even IS this user" tool ✨

okay bestie, listen. this is ui, a general commands manual page, and it's literally about showing you info on local users. it's giving detective energy but make it cute. πŸ’…


🌸 NAME 🌸

ui β€” show information about local users πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

ui [-hvVL] [-F separator] [-m separator] [-t format] [-d]
   [[-xXO] module1.so [options] [-- [-xXO] module2.so [options] [...]]]
   [-c filename] [user] | [-f filename] [...]

πŸ’– DESCRIPTION πŸ’–

so here's the vibe: ui uses loadable modules to display all kinds of info about a local user. you can throw in multiple usernames or filenames (see -f for that one, bestie). and if you give it no arguments at all, or a username/filename that's literally just -? then it reads the arguments from standard input. slay. ✨

  • -d β€” loads the default modules (passwd.so, mail.so and login.so). you can drop this literally anywhere in the module list, it's flexible like that. 🫢
  • -t format β€” picks an alternate time format for modules that have time values. for the actual format syntax, go check the strftime(3) manual page. iykyk. πŸ•
  • -c filename β€” loads a configuration file. you can use this more than once if you're feeling extra. details are down below, keep scrolling. πŸ“„
  • -O filename β€” loads a module. all the switches that come after this one are options for this module. to end the options for this module, hit it with --. this option can be used more than once. and because of the way module chaining is implemented, the same module can be loaded more than once. no cap. πŸ”
  • -x filename β€” like -O but it chains module1.so's output to module2.so's input. heads up though: this only works if the module is chainable. specify it more than once for unlimited chaining. go off. πŸ”—
  • -X filename β€” same as -x, except it doesn't output module1.so info, it only passes the strings to module2.so for processing. sneaky but make it useful. 🀫
  • -F separator β€” alternate character used to separate fields. standard escape sequences are supported. 🌈
  • -m separator β€” alternate character used to separate multi string values. standard escape sequences are supported too, bestie. 🌸
  • -f β€” gets information for the owners of the specified files. πŸ‘€
  • -L β€” if the -f option is specified and the file is a symbolic link, this gets owner information for the file the link points to, not the link itself. follow the link, main character. πŸ”
  • -v β€” be verbose when possible. some modules may limit their display, and this should show everything available. important: this is reset for each loaded module unless specified twice. so if you want it to stick, say it twice. periodt. πŸ—£οΈ
  • -h β€” displays help text. but plot twist: a module must be specified either with the -O command line option or loaded via configuration file -c for a module's help text to be displayed. no module, no help. πŸ’€
  • -V β€” version information. that's it, that's the whole thing. ⭐

πŸ’œ RETURN VALUES πŸ’œ

returns 1 on failure and 0 on success. also note that a module's return value affects this exit status, so don't come for me if a module is out here changing the ending. 😀


πŸ¦‹ FILES πŸ¦‹

  • PREFIX/lib/userinfo β€” the default location of loadable modules. that's where they live. 🏠

✨ EXAMPLES ✨

the following will load two modules, specify module options and load a configuration file. module options end when -- is reached. so clean, so iconic:

ui -O module.so -switches -- -O another.so -- -c filename `users`

🌈 SEE ALSO 🌈

strftime(3), passwd(5), aliases(5), forward(5), utmp(5), lastlog(5), ld.so(8) dlopen(3)


πŸ“ CONFIGURATION FILE SYNTAX πŸ“

okay so important: there is no default configuration file that will be loaded, so you'll have to create one yourself and load it with the -c command-line option. you're the author of your own destiny, bestie. πŸ’…

  • empty lines, and everything to the right of a '#', are ignored. 🚫
  • if you need a '#' in your options, escape it with a '\'.
  • this file should contain any modules you want loaded and their options, separated by one or more whitespace characters, on one line per module.

each module should have a .so filename extension. if a module filename begins with a ~, it will be expanded to your home directory. some module options may require quoting β€” single and double quotes are supported and may also be escaped with a backslash character. multiple configuration files may be specified and may also be used with the -O command-line option. the order of module loading and output is dependent on the order of the module stack and any module options. 🧚

if you want module chaining, put a '>' or '-' at the beginning of the module name, before any '~'. this is the same as specifying -x or -X on the command line, respectively. the following module β€” which may also be chained β€” will be chained to this module. πŸ”—


πŸ‘‘ AUTHORS πŸ‘‘

Ben Kibbey <bjk@luxsci.net>


and that's the whole page, babe. this one shipped as Debian, dated December 05, 2004, under UI(1) β€” yes it's old, no it's not expired, it's vintage. πŸŽ€βœ¨ bye bestie, go read your users. 🫢

πŸ“¦ where this page comes from