.\" Copyright (c) 2023-2024 DTB .\" Copyright (c) 2024 Emma Tebibyte .\" .\" This work is licensed under CC BY-SA 4.0. To see a copy of this license, .\" visit . .\" .TH PEEK 1 2024-06-09 "Bonsai Core Utilites 0.13.9" .SH NAME peek \(en read from the standard input, furtively .\" .SH SYNOPSIS peek .RB ( -i ) .\" .SH DESCRIPTION Read input from the standard input with terminal echo disabled. .\" .SH OPTIONS .IP \fB-i\fP Allows input to come from sources other than terminals (pipes). .\" .SH DIAGNOSTICS In the event of an error, a debug message will be printed and the program will exit with the appropriate .BR sysexits.h (3) error code. In order to ensure the user\(cqs terminal is still usable after premature termination, the program attempts to handle the SIGINT signal; if it cannot, an error message is printed and execution continues. If the program is interrupted, it exits unsuccessfully without an error message. .\" .SH RATIONALE This tool was originally written to accept passwords in shell scripts as an extremely simple alternative to the GNU Privacy Guard project\(cqs .BR pinentry (1) utility. Accepting input without showing what is being typed is useful when keying in secrets in public settings or in places where surveillance cameras are installed. .\" .SH CAVEATS This program does nothing to prevent others from seeing the key presses input to a keyboard. It also does not protect against the sound of typing being analyzed to determine what was inputted without needing to see screen or keyboard. Accepting secrets in shell scripts is probably not advisable. On systems that support it, the .BR ioctl (2) command TIOCSTI can be used to insert characters into the standard input. This doesn't allow snooping but can be used for general mischief. .\" .SH EXAMPLES This is an .BR sh (1p) command line that hashes a given password. It uses .BR head (1p) to only accept one line of input, .BR xargs (1p) and .BR printf (1p) to strip the trailing newline, .BR htpasswd (1) from Apache\(cqs utilities to hash the input with the bcrypt algorithm, and .BR cut (1p) to print only the resulting hash: .RS $ peek | head -n 1 | xargs printf '%s' | htpasswd -nBi _ | cut -d : -f 2 .RE This is an .BR sh (1p) command line that allows a user to write blindly into a text file but displaying only written lines. Some writers have the habit of prematurely revising their work and use tools with functionality similar to this to prevent it. It uses .BR mm (1) to pipe the output of the program to both the standard error and the regular file writing.txt: .RS $ echo Input ^D to quit. && peek | mm -eo - >writing.txt .RE .\" .SH AUTHOR Written by DTB .MT trinity@trinity.moe .ME . .\" .SH COPYRIGHT Copyright \(co 2023-2024 DTB. License AGPLv3+: GNU AGPL version 3 or later . .\" .SH SEE ALSO .BR ioctl (2), .BR ioctl_tty (2), .BR read (1), .BR sh (1)