Subject:
Re: man pages
From:
Jesse Meyer ####@####.####
Date:
17 May 2003 19:27:03 -0000
Message-Id: <20030517192536.GA620@ping>
On Thu, 15 May 2003, Rahul Sundaram wrote:
> The GNU has been calling man pages outdated stuff and
> replaced them with info pages. Man pages cater to the
> expert who already knows what he deals. If I am a new
> user trying to learn say what ls does from the command
> line, the almost infinite number of options would
> scare me off Linux for the rest of my life.
> [ SNIP ]
>
> An example would demonstrate my point
>
> This is the present form
>
> ?
> Man less
>
> Less- less is opposite of more. (supposed to be brief
> information)
Odd, here's my version:
Less is a program similar to more (1), but which allows
backward movement in the file as well as forward movement.
Also, less does not have to read the entire input file
before starting, so with large input files it starts up
faster than text editors like vi (1). Less uses termcap
(or terminfo on some systems), so it can run on a variety
of terminals. There is even limited support for hardcopy
terminals. (On a hardcopy terminal, lines which should be
printed at the top of the screen are prefixed with a
caret.)
Commands are based on both more and vi. Commands may be
preceded by a decimal number, called N in the descriptions
below. The number is used by some commands, as indicated.
(debian-woody, for the curious)
Remember, your distribution of linux is not everyone's distribution
of linux.
You seem to be confusing "Redhat" or "Redhat-based" with linux.
> [SNIP]
> For example,
>
> The man page for cat says that it is used to
> concatinating files. This is definitely true but is it
> relevant to the user?
>
> We all know that cat is more used for displaying files
> and also that the less command is more appropriate for
> that usually.
Now you seem to be confusing your limited usage of the 'cat'
command with all of its usages.
The cat command is used for concatenating files, either from
stdout, or from the files listed, and to stdout.
Lets say I want to take two log files and combine them into one
log file. A simple 'cat log1 log2 | sort > log3' works wonders,
if each logfile is of the format "timestamp information".
I agree with you, cat is a horrible way to read all but the
shortest files. OTOH, cat does work very well for concatenating
files.
> Let me know what you people think of all this.
When I first started using linux, I thought that the man pages
sucked. I looked online, bought a few books, read a few howtos,
and basically avoided the man pages.
Now, I'm to the point where I find the man pages very useful,
and those howtos and books seem rather limited. I either use
manpages for refreshing my memory, or to see if I can find
some obscure option to do what I wish.
Your proposal seems to cater to the new users and penalizes the
power users. Lets keep the man pages clean and complete, excess
information can either go into howtos or into the shared document
directory, which is /usr/share/doc, on FHS-compliant systems, IIRC.
I agree, a lot of man pages need a rewrite, since man are out of
date or a tad too sparse. OTOH, I don't think linux needs to transform
each and every man page into a hand-holding tutorial.
Just my $.02,
Jesse Meyer
--
...crying "Tekeli-li! Tekeli-li!"... ~ HPL
icq : 34583382 | === ascii ribbon campaign ===
msn : ####@####.#### | () - against html mail
yim : tsunad | /\ - against proprietary attachments
--> -->
<type 'exceptions.IOError'> | Python 2.5.2: /usr/bin/python Sat May 18 23:04:25 2024 |
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/opt/ezmlm-browse-0.20/main.py in main() |
424
|
425 if path is not None:
|
426 main_path(path)
|
427 else:
|
428 main_form()
|
global main_form = <function main_form at 0x8af4c6c> |
/opt/ezmlm-browse-0.20/main.py in main_form() |
378 except ImportError:
|
379 die(ctxt, "Invalid command")
|
380 module.do(ctxt)
|
381
|
382 def main():
|
module = <module 'commands.showmsg' from '/opt/ezmlm-browse-0.20/commands/showmsg.pyc'>, module.do = <function do at 0x8b55bfc>, global ctxt = {'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'} |
/opt/ezmlm-browse-0.20/commands/showmsg.py in do(ctxt={'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}) |
18 write(html('msg-pager') % ctxt)
|
19 write('<hr>')
|
20 sub_showmsg(ctxt, ctxt[MSGNUM])
|
21 write('<hr>')
|
22 write(html('msg-pager') % ctxt)
|
global sub_showmsg = <function sub_showmsg at 0x8af41ec>, ctxt = {'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum' |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=4437) |
229 format_timestamp(ctxt, ctxt)
|
230 write(html('msg-header') % ctxt)
|
231 rec_showpart(ctxt, msg, 0)
|
232 write(html('msg-footer') % ctxt)
|
233 ctxt.pop()
|
global rec_showpart = <function rec_showpart at 0x8af41b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x8b7932c> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8b7932c>, partnum=1) |
205 else:
|
206 for p in part.get_payload():
|
207 partnum = rec_showpart(ctxt, p, partnum+1)
|
208 else:
|
209 write(html('msg-sep') % ctxt)
|
partnum = 1, global rec_showpart = <function rec_showpart at 0x8af41b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x8b7956c> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8b7956c>, partnum=2) |
208 else:
|
209 write(html('msg-sep') % ctxt)
|
210 sub_showpart(ctxt, part)
|
211 return partnum
|
212
|
global sub_showpart = <function sub_showpart at 0x8af4144>, ctxt = {'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x8b7956c> |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 17, 'HTTP_X_FORW...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8b7956c>) |
164 type = ctxt[TYPE] = part.get_content_type()
|
165 ctxt[FILENAME] = part.get_filename()
|
166 template = html('msg-' + type.replace('/', '-'))
|
167 if not template:
|
168 template = html('msg-' + type[:type.find('/')])
|
global template = <function template at 0x8aece9c>, global html = <function html at 0x8aeced4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x8b7a1e0> |
/opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-application-pgp-signature') |
40
|
41 def html(name):
|
42 return template(name + '.html')
|
43
|
44 def xml(name):
|
global template = <function template at 0x8aece9c>, name = 'msg-application-pgp-signature' |
/opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-application-pgp-signature.html') |
31 except IOError:
|
32 if not _template_zipfile:
|
33 _template_zipfile = zipfile.ZipFile(sys.argv[0])
|
34 try:
|
35 f = _template_zipfile.open(n).read()
|
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x8a85a7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20'] |
/usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x8b0078c>, file='-c', mode='r', compression=0, allowZip64=False) |
337 self.filename = file
|
338 modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
|
339 self.fp = open(file, modeDict[mode])
|
340 else:
|
341 self._filePassed = 1
|
self = <zipfile.ZipFile instance at 0x8b0078c>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r' |
<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
args =
(2, 'No such file or directory')
errno =
2
filename =
'-c'
message =
''
strerror =
'No such file or directory'