Wednesday, November 2, 2011

how to print man page from linux

Some time it is necessary to print a Linux man or info page. To print a ls command man page type the following command:

$ man ls | col -b | lpr -P hp1_floor2
Where,

col -b : To format man page output, it will not show any special character such as backspaces
lpr -P hp1_floor2 : hp1_floor2 is the printer name of the Linux/UNIX printer queue

To print the man page with effects such as italic and bold fonts on the HP Laser Jet printer, enter:
$ zcat /usr/share/man/man1/ls.1.gz | groff -man -Tps | lpr -P hp1_floor2

You can save man page as a ps file, enter:
zcat /usr/share/man/man1/ls.1.gz | groff -man -Tps >top.ps

Where,

zcat : Open compressed /usr/share/man/man1/ls.1.gz file
groff : Go through groff document formatting system, which is responsible for formatting of man page with effects such as italic and bold fonts on both screen and printer
lpr -P hp1_floor2 : hp1_floor2 is the printer name of the Linux/UNIX printer queue

Here is a shell script that we have installed on all Linux workstations, it saves man page in a text file and later user can print it using lpr command.

#!/bin/bash
# Linux shell script to save man pages to text file
# so that later user can print them
# Created by nixcraft , under GPL v2.0 or above.
# ----------------------------------------------------------------------
CMDS="$@"
OUTDIR="/tmp/$USER.man"
[ ! -d "$OUTDIR" ] && mkdir -p "$OUTDIR" :
for i in $CMDS
do
man "${i}" col -b > "$OUTDIR/${i}.txt"
done
echo "**********************************************************"
echo "All man pages saved to $OUTDIR directory"
echo "Just goto \"$OUTDIR\" directory and type the following command
to print man page(s):"
echo "lpr *.txt"
echo "**********************************************************"
exit 0


Just type the script-name followed by Linux commands, for example to print a man page of ls and bash type
$ saveman "ls bash"

No comments:

Post a Comment