Annotation of 43BSDTahoe/man/man8/fsdb.8, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1988 Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" This code is derived from software contributed to Berkeley by
        !             5: .\" Computer Consoles Inc.
        !             6: .\"
        !             7: .\" Redistribution and use in source and binary forms are permitted
        !             8: .\" provided that the above copyright notice and this paragraph are
        !             9: .\" duplicated in all such forms and that any documentation,
        !            10: .\" advertising materials, and other materials related to such
        !            11: .\" distribution and use acknowledge that the software was developed
        !            12: .\" by the University of California, Berkeley.  The name of the
        !            13: .\" University may not be used to endorse or promote products derived
        !            14: .\" from this software without specific prior written permission.
        !            15: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
        !            16: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
        !            17: .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            18: .\"
        !            19: .\"    @(#)fsdb.8      6.2 (Berkeley) 7/9/88
        !            20: .\"
        !            21: .TH FSDB 8 "July 9, 1988"
        !            22: .UC 7
        !            23: .SH NAME
        !            24: fsdb \- file system debugger
        !            25: .SH SYNOPSIS
        !            26: .B /etc/fsdb
        !            27: .RB [ options ]
        !            28: special
        !            29: .SH OPTIONS
        !            30: The options available to
        !            31: .I fsdb\^
        !            32: are:
        !            33: .RS
        !            34: .PD 0
        !            35: .TP 13
        !            36: .B -?
        !            37: display usage
        !            38: .TP 13
        !            39: .B -o
        !            40: override some error conditions
        !            41: .TP 13
        !            42: .B "-p'string'\^"
        !            43: set prompt to string
        !            44: .TP 13
        !            45: .B -w
        !            46: open for write
        !            47: .PD
        !            48: .RE
        !            49: .SH DESCRIPTION
        !            50: Since
        !            51: .I fsdb
        !            52: reads the disk raw,
        !            53: it is able to circumvent normal
        !            54: file system security.
        !            55: Extreme caution is advised
        !            56: in determining its availability
        !            57: on the system.
        !            58: Suggested permissions are 600
        !            59: and owned by bin.
        !            60: .PP
        !            61: .I Fsdb\^
        !            62: can be used
        !            63: to patch up 
        !            64: a damaged file system
        !            65: after a crash.
        !            66: It has conversions
        !            67: to translate block and i-numbers
        !            68: into their corresponding disk addresses.
        !            69: Also included are mnemonic offsets
        !            70: to access different parts
        !            71: of an inode.
        !            72: These greatly simplify the process
        !            73: of correcting control block entries
        !            74: or descending the file system tree.
        !            75: .PP
        !            76: .I Fsdb\^
        !            77: contains several error-checking routines
        !            78: to verify inode and block addresses.
        !            79: These can be disabled if necessary 
        !            80: by invoking 
        !            81: .I fsdb\^
        !            82: with the
        !            83: .IR \-o
        !            84: option
        !            85: or by the use of the
        !            86: .IR o
        !            87: command.
        !            88: .PP
        !            89: .I Fsdb\^
        !            90: reads a block at a time
        !            91: and will therefore work with raw as well as block
        !            92: I/O. 
        !            93: A buffer management routine 
        !            94: is used to retain commonly used
        !            95: blocks of data
        !            96: in order to reduce the number of read system calls.
        !            97: All assignment operations result
        !            98: in an immediate write-through
        !            99: of the corresponding block.
        !           100: Note that in order to modify
        !           101: any portion of the disk,
        !           102: .IR fsdb
        !           103: must be invoked with the
        !           104: .IR -w
        !           105: option.
        !           106: .PP
        !           107: Wherever possible,
        !           108: .IR adb- like
        !           109: syntax was adopted
        !           110: to promote the use
        !           111: of
        !           112: .IR fsdb
        !           113: through familiarity.
        !           114: .PP
        !           115: Numbers are considered hexadecimal by default.
        !           116: However, the user has control over how data is
        !           117: to be displayed
        !           118: or accepted.
        !           119: The
        !           120: .IR base
        !           121: command will display
        !           122: or set the input/output base.
        !           123: Once set,
        !           124: all input will default to this base
        !           125: and all output will be shown in this base.
        !           126: The base can be overriden temporarily for input by
        !           127: preceding hexadecimal numbers with '0x', preceding
        !           128: decimal numbers with '0t', or
        !           129: octal numbers with '0'.
        !           130: Hexadecimal numbers beginning with a-f or A-F must
        !           131: be preceded with '0x'
        !           132: to distinguish them from commands.
        !           133: .PP
        !           134: Disk addressing by
        !           135: .IR fsdb
        !           136: is at the byte level.
        !           137: However,
        !           138: .IR fsdb
        !           139: offers many commands to convert
        !           140: a desired inode, directory entry,
        !           141: block, superblock etc. to a
        !           142: byte address.
        !           143: Once the address has been calculated,
        !           144: .IR fsdb
        !           145: will record the result in
        !           146: .IR dot
        !           147: (see next paragraph).
        !           148: .PP
        !           149: Several global values are maintained by
        !           150: .IR fsdb :
        !           151: the current base (referred to as
        !           152: .IR base ),
        !           153: the current address (referred to as
        !           154: .IR dot ),
        !           155: the current inode (referred to as
        !           156: .IR inode ),
        !           157: the current count (referred to as
        !           158: .IR count ),
        !           159: and the current type (referred to as
        !           160: .IR type ).
        !           161: Most commands use the preset value of
        !           162: .IR dot
        !           163: in
        !           164: their execution.
        !           165: For example,
        !           166: .RS
        !           167: .PD 0
        !           168: .TP 7.2n
        !           169: > 2:inode
        !           170: .PD
        !           171: .RE
        !           172: will first set the value of
        !           173: .IR dot
        !           174: to 2, ':' will alert the start of a command,
        !           175: and the
        !           176: .IR inode
        !           177: command will set
        !           178: .IR inode
        !           179: to 2.
        !           180: A count is specified after a ','.
        !           181: Once set,
        !           182: .IR count
        !           183: will remain at this value
        !           184: until a new command is encountered
        !           185: which will then reset the value back to 1 (the default).
        !           186: So, if
        !           187: .RS
        !           188: .PD 0
        !           189: .TP 7.2n
        !           190: > 2000,400/X
        !           191: .PD
        !           192: .RE
        !           193: is typed,
        !           194: 400 hex longs are listed
        !           195: from 2000,
        !           196: and when completed,
        !           197: the value of
        !           198: .IR dot
        !           199: will be 2000 + 400 * sizeof (long).
        !           200: If a carriage-return is then typed,
        !           201: the output routine will use the
        !           202: current values of
        !           203: .IR dot ,
        !           204: .IR count ,
        !           205: and
        !           206: .IR type
        !           207: and display 400 more hex longs.
        !           208: A '*' will cause the entire block to
        !           209: be displayed.
        !           210: .PP
        !           211: End of fragment, block and file are maintained by
        !           212: .IR fsdb.
        !           213: When displaying data as fragments or blocks,
        !           214: an error message will be displayed when the end of fragment
        !           215: or block is reached.
        !           216: When displaying data using the
        !           217: .IR db,
        !           218: .IR ib,
        !           219: .IR directory,
        !           220: or
        !           221: .IR file
        !           222: commands an error message is displayed if the
        !           223: end of file is reached.
        !           224: This is mainly needed
        !           225: to avoid passing the
        !           226: end of a directory or file
        !           227: and getting unknown and unwanted results.
        !           228: .PP
        !           229: An example showing several commands and
        !           230: the use of carriage-return would be:
        !           231: .RS
        !           232: .PD 0
        !           233: .TP 7.2n
        !           234: > 2:ino; 0:dir?d
        !           235: .br
        !           236: or
        !           237: .PD
        !           238: .RE
        !           239: .RS
        !           240: .PD 0
        !           241: .TP 7.2n
        !           242: > 2:ino; 0:db:block?d
        !           243: .PD
        !           244: .RE
        !           245: The two examples are synonymous for getting to the first
        !           246: directory entry of the root of the file system.
        !           247: Once there,
        !           248: subsequent carriage-returns (or +, -) will advance to subsequent
        !           249: entries.
        !           250: Note that
        !           251: .RS
        !           252: .PD 0
        !           253: .TP 7.2n
        !           254: > 2:inode; :ls
        !           255: .br
        !           256: or
        !           257: .PD
        !           258: .RE
        !           259: .RS
        !           260: .PD 0
        !           261: .TP 7.2n
        !           262: > :ls /
        !           263: .PD
        !           264: .RE
        !           265: is again synonymous.
        !           266: .SH EXPRESSIONS
        !           267: .PP
        !           268: The symbols recognized by
        !           269: .I fsdb\^
        !           270: are:
        !           271: .TP 7.2n
        !           272: .B carriage-return
        !           273: update the value of
        !           274: .IR dot
        !           275: by the current value of
        !           276: .IR type
        !           277: and display using the current value of
        !           278: .IR count .
        !           279: .TP 7.2n
        !           280: .B #
        !           281: numeric expressions may be composed of +, -, *, and % operators
        !           282: (evaluated left to right) and may use parentheses.  Once evaluated,
        !           283: the value of
        !           284: .IR dot
        !           285: is updated.
        !           286: .TP 7.2n
        !           287: .BI , " count"\^
        !           288: count indicator.  The global value of
        !           289: .IR count
        !           290: will be updated to 
        !           291: .IR count .
        !           292: The value of
        !           293: .IR count
        !           294: will remain until a new command is run.
        !           295: A count specifier of '*' will attempt to show a
        !           296: .IR blocks's
        !           297: worth of information.
        !           298: The default for
        !           299: .IR count
        !           300: is 1.
        !           301: .TP 7.2n
        !           302: .BI ? " f\^"
        !           303: display in structured style with format
        !           304: specifier
        !           305: .IR f
        !           306: (see FORMATTED OUTPUT section).
        !           307: .TP 7.2n
        !           308: .BI / " f\^"
        !           309: display in unstructured style with format
        !           310: specifier
        !           311: .IR f
        !           312: (see FORMATTED OUTPUT section).
        !           313: .TP 7.2n
        !           314: .B .
        !           315: the value of
        !           316: .IR dot .
        !           317: .TP 7.2n
        !           318: .BI + "e\^"
        !           319: increment the value of
        !           320: .IR dot
        !           321: by the expression
        !           322: .IR e.
        !           323: The amount actually incremented is dependent
        !           324: on the size of
        !           325: .IR type :
        !           326: .br
        !           327: .nf
        !           328:      dot = dot + e * sizeof (type)
        !           329: .fi
        !           330: The default for
        !           331: .IR e
        !           332: is 1.
        !           333: .TP 7.2n
        !           334: .BI - "e\^"
        !           335: decrement the value of
        !           336: .IR dot
        !           337: by the expression
        !           338: .IR e
        !           339: (see +).
        !           340: .TP 7.2n
        !           341: .BI * "e\^"
        !           342: multiply the value of
        !           343: .IR dot
        !           344: by the expression
        !           345: .IR e.
        !           346: Multiplication and division don't
        !           347: use
        !           348: .IR type.
        !           349: In the above calculation of
        !           350: .IR dot ,
        !           351: consider the
        !           352: sizeof (
        !           353: .IR type )
        !           354: to be 1.
        !           355: .TP 7.2n
        !           356: .BI % "e\^"
        !           357: divide the value of
        !           358: .IR dot
        !           359: by the expression
        !           360: .IR e
        !           361: (see *).
        !           362: .TP 7.2n
        !           363: .BI < " name\^"
        !           364: restore an address saved in register
        !           365: .IR name .
        !           366: .IR name
        !           367: must be a single letter or digit.
        !           368: .TP 7.2n
        !           369: .BI > " name\^"
        !           370: save an address in register
        !           371: .IR name .
        !           372: .IR name
        !           373: must be a single letter or digit.
        !           374: .TP 7.2n
        !           375: .BI = " f"
        !           376: display indicator.
        !           377: If
        !           378: .IR f
        !           379: is a legitimate format specifier
        !           380: (see FORMATTED OUTPUT
        !           381: section),
        !           382: then the value of
        !           383: .IR dot
        !           384: is displayed using
        !           385: format specifier
        !           386: .IR f .
        !           387: Otherwise,
        !           388: assignment is assumed
        !           389: (see next item).
        !           390: .TP 7.2n
        !           391: .BI = " [s] [e]\^"
        !           392: assignment indicator.
        !           393: The address pointed to by
        !           394: .IR dot
        !           395: has its contents changed to the value of the
        !           396: expression
        !           397: .IR e
        !           398: or to the
        !           399: .IR ASCII
        !           400: representation of the
        !           401: quoted (") string
        !           402: .IR s.
        !           403: This may be useful for changing
        !           404: directory names or
        !           405: .IR ASCII
        !           406: file information.
        !           407: .TP 7.2n
        !           408: .BI =+ " e\^"
        !           409: incremental assignment.
        !           410: The address pointed to by
        !           411: .IR dot
        !           412: has its contents incremented by expression
        !           413: .IR e .
        !           414: .TP 7.2n
        !           415: .BI =- " e\^"
        !           416: decremental assignment.
        !           417: The address pointed to by
        !           418: .IR dot
        !           419: has its contents decremented by expression
        !           420: .IR e .
        !           421: .SH COMMANDS
        !           422: .PP
        !           423: A command must be prefixed by a ':' character.
        !           424: Only enough letters of the command
        !           425: to uniquely
        !           426: distinguish it are needed.
        !           427: Multiple commands may be entered
        !           428: on one line by separating
        !           429: them by a space, tab or ';'.
        !           430: .PP
        !           431: In order to view a potentially
        !           432: unmounted disk in a reasonable
        !           433: manner,
        !           434: .I fsdb\^
        !           435: offers the
        !           436: .IR cd ,
        !           437: .IR pwd ,
        !           438: .IR ls
        !           439: and
        !           440: .IR find
        !           441: commands.
        !           442: The functionality of these
        !           443: commands substantially matches those of
        !           444: its
        !           445: .IR UNIX
        !           446: counterparts
        !           447: (see individual command for details).
        !           448: The '*', '?', and '[-]' wild card
        !           449: characters are available.
        !           450: .TP 7.2n
        !           451: .BI base=b
        !           452: display or set base.  As stated above,
        !           453: all input and output is governed by
        !           454: the current
        !           455: .IR base .
        !           456: If the '=b' is left off,
        !           457: the current
        !           458: .IR base
        !           459: is displayed.
        !           460: Otherwise, the current
        !           461: .IR base
        !           462: is set
        !           463: to
        !           464: .IR b.
        !           465: Note that this is interpreted
        !           466: using the old value of
        !           467: .IR base ,
        !           468: so to ensure correctness use the '0', '0t', or '0x'
        !           469: prefix when changing the
        !           470: .IR base.
        !           471: The default for
        !           472: .IR base
        !           473: is hexadecimal.
        !           474: .TP 7.2n
        !           475: .B block
        !           476: convert the value of
        !           477: .IR dot
        !           478: to a block address.
        !           479: .TP 7.2n
        !           480: .B cd dir
        !           481: change the current directory
        !           482: to directory
        !           483: .IR dir.
        !           484: The current values of
        !           485: .IR inode
        !           486: and
        !           487: .IR dot
        !           488: are also updated.
        !           489: If no
        !           490: .IR dir
        !           491: is specified,
        !           492: then change directories to
        !           493: inode 2 ("/").
        !           494: .TP 7.2n
        !           495: .B cg
        !           496: convert the value of
        !           497: .IR dot
        !           498: to a cylinder group.
        !           499: .TP 7.2n
        !           500: .B directory
        !           501: If the current
        !           502: .IR inode
        !           503: is a directory,
        !           504: then the value of
        !           505: .IR dot
        !           506: is converted to a directory
        !           507: slot offset in that directory
        !           508: and
        !           509: .IR dot
        !           510: now points to
        !           511: this entry.
        !           512: .TP 7.2n
        !           513: .B file
        !           514: the value of
        !           515: .IR dot
        !           516: is taken as
        !           517: a relative block count from the
        !           518: beginning of the file.
        !           519: The value of
        !           520: .IR dot
        !           521: is updated to the first byte
        !           522: of this block.
        !           523: .IR
        !           524: .TP 7.2n
        !           525: .BI find " dir [-name n] [-inum i]\^"
        !           526: find files by name or i-number.
        !           527: .IR find
        !           528: recursively searches
        !           529: directory
        !           530: .IR dir
        !           531: and below for filenames whose
        !           532: i-number matches
        !           533: .IR i
        !           534: or whose name
        !           535: matches pattern
        !           536: .IR n .
        !           537: Note that only one of the two options
        !           538: (-name or -inum)
        !           539: may be used at one time.
        !           540: Also, the -print is not needed or
        !           541: accepted.
        !           542: .TP 7.2n
        !           543: .BI fill "=p\^"
        !           544: fill an area of disk with pattern
        !           545: .IR p.
        !           546: The area of disk
        !           547: is delimited by
        !           548: .IR dot
        !           549: and
        !           550: .IR count .
        !           551: .TP 7.2n
        !           552: .B fragment
        !           553: convert the value of
        !           554: .IR dot
        !           555: to
        !           556: a fragment address.
        !           557: The only difference between the
        !           558: .IR fragment
        !           559: command and the
        !           560: .IR block
        !           561: command is the amount that
        !           562: is able to be displayed.
        !           563: .TP 7.2n
        !           564: .B inode
        !           565: convert the value of
        !           566: .IR dot
        !           567: to an inode address.
        !           568: If successful,
        !           569: the current value of
        !           570: .IR inode
        !           571: will be updated as well as
        !           572: the value of
        !           573: .IR dot.
        !           574: As a convenient shorthand,
        !           575: if ':inode' appears at the
        !           576: beginning of the line,
        !           577: the value of
        !           578: .IR dot
        !           579: is set to the current
        !           580: .IR inode
        !           581: and that inode is displayed
        !           582: in inode format.
        !           583: .TP 7.2n
        !           584: .BI ls " [-R] [-l] pat1 pat2 ...\^"
        !           585: list directories or files.
        !           586: If no file is specified,
        !           587: the current directory is assumed.
        !           588: Either or both of the
        !           589: options may be used (but, if used,
        !           590: .IR must
        !           591: be specified before the
        !           592: filename specifiers).
        !           593: Also, as stated above,
        !           594: wild card characters are
        !           595: available and multiple
        !           596: arguments may be given.
        !           597: The long listing shows only
        !           598: the i-number and the name;
        !           599: use the
        !           600: .IR inode
        !           601: command with '?i'
        !           602: to get more information.
        !           603: .TP 7.2n
        !           604: .B override
        !           605: toggle the value of override.
        !           606: Some error conditions may be
        !           607: overriden
        !           608: if override is toggled on.
        !           609: .TP 7.2n
        !           610: .BI prompt " p\^"
        !           611: change the fsdb prompt to
        !           612: .IR p.
        !           613: .IR p
        !           614: must be surrounded by (")s.
        !           615: .TP 7.2n
        !           616: .B pwd
        !           617: display the current working directory.
        !           618: .TP 7.2n
        !           619: .B quit
        !           620: quit
        !           621: .IR fsdb .
        !           622: .TP 7.2n
        !           623: .B sb
        !           624: the value of
        !           625: .IR dot
        !           626: is taken as a cylinder group
        !           627: number and then converted to
        !           628: the address of the superblock
        !           629: in that cylinder group.
        !           630: As a shorthand, ':sb' at
        !           631: the beginning of a line
        !           632: will set the value of
        !           633: .IR dot
        !           634: to 
        !           635: .IR the
        !           636: superblock and display it
        !           637: in superblock format.
        !           638: .TP 7.2n
        !           639: .B !
        !           640: escape to shell
        !           641: .SH INODE COMMANDS
        !           642: In addition to the above commands,
        !           643: there are several commands that deal with inode
        !           644: fields and operate directly on the current
        !           645: .IR inode
        !           646: (they still require the ':').
        !           647: They may be used to more easily display
        !           648: or change the particular fields.
        !           649: The value of
        !           650: .IR dot
        !           651: is only used by the ':db'
        !           652: and ':ib' commands.
        !           653: Upon completion of the command,
        !           654: the value of
        !           655: .IR dot
        !           656: is changed to point to
        !           657: that particular field.
        !           658: For example,
        !           659: .RS
        !           660: .PD 0
        !           661: .TP 7.2n
        !           662: > :ln=+1
        !           663: .PD
        !           664: .RE
        !           665: would
        !           666: increment the link count of the current
        !           667: .IR inode
        !           668: and set the value of
        !           669: .IR dot
        !           670: to the address of the link
        !           671: count field.
        !           672: .TP 7.2n
        !           673: .B at
        !           674: access time.
        !           675: .TP 7.2n
        !           676: .B bs
        !           677: block size.
        !           678: .TP 7.2n
        !           679: .B ct
        !           680: creation time.
        !           681: .TP 7.2n
        !           682: .B db
        !           683: use the current value of
        !           684: .IR dot
        !           685: as a direct block index,
        !           686: where direct blocks number from
        !           687: 0 - 11.
        !           688: In order to display the block
        !           689: itself, you need to 'pipe' this
        !           690: result into the
        !           691: .IR block
        !           692: or
        !           693: .IR fragment
        !           694: command.
        !           695: For example,
        !           696: .br
        !           697: .nf
        !           698:      > 1:db:block,20/X
        !           699: .fi
        !           700: would get the contents of
        !           701: data block field 1 from the inode and
        !           702: convert it to a block address.
        !           703: 20 longs are then displayed in hexadecimal
        !           704: (see FORMATTED OUTPUT section).
        !           705: .TP 7.2n
        !           706: .B gid
        !           707: group id.
        !           708: .TP 7.2n
        !           709: .B ib
        !           710: use the current value of
        !           711: .IR dot
        !           712: as an indirect block index
        !           713: where indirect blocks number from
        !           714: 0 - 2.
        !           715: This will only get the indirect block itself
        !           716: (the block containing the pointers to the actual blocks).
        !           717: Use the
        !           718: .IR file
        !           719: command and start at block 12 to get to the actual
        !           720: blocks.
        !           721: .TP 7.2n
        !           722: .B ln
        !           723: link count.
        !           724: .TP 7.2n
        !           725: .B mt
        !           726: modification time.
        !           727: .TP 7.2n
        !           728: .B md
        !           729: mode.
        !           730: .TP 7.2n
        !           731: .B maj
        !           732: major device number.
        !           733: .TP 7.2n
        !           734: .B min
        !           735: minor device number.
        !           736: .TP 7.2n
        !           737: .B nm
        !           738: although listed here,
        !           739: this command actually
        !           740: operates on the directory
        !           741: name field.
        !           742: Once poised at the desired
        !           743: directory entry (using the
        !           744: .IR directory
        !           745: command),
        !           746: this command will allow
        !           747: you to change or display
        !           748: the directory name.
        !           749: For example,
        !           750: .br
        !           751: .nf
        !           752:      > 7:dir:nm="foo"
        !           753: .fi
        !           754: will get the 7th directory
        !           755: entry of the current
        !           756: .IR inode
        !           757: and change its name to foo.
        !           758: Note that names
        !           759: cannot be made larger than the
        !           760: field is set up for.
        !           761: If an attempt is made,
        !           762: the string is truncated to fit
        !           763: and a warning message to this
        !           764: effect is displayed.
        !           765: .TP 7.2n
        !           766: .B sz
        !           767: file size.
        !           768: .TP 7.2n
        !           769: .B uid
        !           770: user id.
        !           771: .SH FORMATTED OUTPUT
        !           772: .PP
        !           773: There are two styles
        !           774: and many format types.
        !           775: The two styles are structured and
        !           776: unstructured.
        !           777: Structured output is used to display
        !           778: inodes, directories, superblocks and the
        !           779: like.
        !           780: Unstructured just displays
        !           781: raw data.
        !           782: The following table shows the
        !           783: different ways of displaying:
        !           784: .TP 7.2n
        !           785: .B ?
        !           786: .RS
        !           787: .PD 0
        !           788: .TP 13
        !           789: .B c
        !           790: display as cylinder groups
        !           791: .TP 13
        !           792: .B i
        !           793: display as inodes
        !           794: .TP 13
        !           795: .B d
        !           796: display as directories
        !           797: .TP 13
        !           798: .B s
        !           799: display as superblocks
        !           800: .PD
        !           801: .RE
        !           802: .TP 7.2n
        !           803: .B /
        !           804: .RS
        !           805: .PD 0
        !           806: .TP 13
        !           807: .B b
        !           808: display as bytes
        !           809: .TP 13
        !           810: .B c
        !           811: display as characters
        !           812: .TP 13
        !           813: .B o O
        !           814: display as octal shorts or longs
        !           815: .TP 13
        !           816: .B d D
        !           817: display as decimal shorts or longs
        !           818: .TP 13
        !           819: .B x X
        !           820: display as hexadecimal shorts or longs
        !           821: .PD
        !           822: .RE
        !           823: .PP
        !           824: The format specifier immediately follows
        !           825: the '/' or '?' character.
        !           826: The values displayed by '/b' and all '?'
        !           827: formats are displayed in the current
        !           828: .IR base .
        !           829: Also,
        !           830: .IR type
        !           831: is appropriately updated
        !           832: upon completion.
        !           833: .SH EXAMPLES
        !           834: .TP 16
        !           835: > 2000+400%(20+20)=D
        !           836: will display 2010 in decimal (use of
        !           837: .IR fsdb
        !           838: as a calculator
        !           839: for complex arithmetic).
        !           840: .TP 16
        !           841: > 386:ino?i
        !           842: display i-number 386 in an inode format.
        !           843: This now becomes the current
        !           844: .IR inode .
        !           845: .TP 16
        !           846: > :ln=4
        !           847: changes the link count for the 
        !           848: current
        !           849: .IR inode
        !           850: to 4.
        !           851: .TP 16
        !           852: > :ln=+1
        !           853: increments the link count by 1.
        !           854: .TP 16
        !           855: > :ct=X
        !           856: display the creation time as a hexadecimal long.
        !           857: .TP 16
        !           858: > :mt=t
        !           859: display the modification time in time format.
        !           860: .TP 16
        !           861: > 0:file/c
        !           862: displays, in
        !           863: .IR ASCII ,
        !           864: block zero of the file associated
        !           865: with the
        !           866: current
        !           867: .IR inode .
        !           868: .TP 16
        !           869: > 2:ino,*?d
        !           870: displays the first blocks worth of directory entries for
        !           871: the root inode of this file system.
        !           872: It will stop prematurely if the eof is reached.
        !           873: .TP 16
        !           874: > 5:dir:inode; 0:file,*/c
        !           875: changes the current inode to that
        !           876: associated with the 5th directory entry
        !           877: (numbered from zero)
        !           878: of the current
        !           879: .IR inode.
        !           880: The first logical block of the file
        !           881: is then displayed in
        !           882: .IR ASCII .
        !           883: .TP 16
        !           884: > :sb
        !           885: displays the superblock of this file system.
        !           886: .TP 16
        !           887: > 1:cg?c
        !           888: displays cylinder group information and summary
        !           889: for cylinder group 1.
        !           890: .TP 16
        !           891: > 2:inode; 7:dir=3
        !           892: changes the i-number for the 
        !           893: seventh directory slot in the root directory to 3.
        !           894: .TP 16
        !           895: > 7:dir:nm="name"
        !           896: changes the name field
        !           897: in the directory slot to
        !           898: .IR name .
        !           899: .TP 16
        !           900: > 2:db:block,*?d
        !           901: displays the third block of the current
        !           902: .IR inode
        !           903: as directory entries.
        !           904: .TP 16
        !           905: > 3c3:fragment,20:fill=0x20
        !           906: get fragment 3c3 and fill 20
        !           907: .IR type
        !           908: elements
        !           909: with 0x20.
        !           910: .TP 16
        !           911: > 2050=0xffff
        !           912: set the contents of address 2050 to 0xffffffff.
        !           913: 0xffffffff may be truncated depending on the current
        !           914: .IR type.
        !           915: .TP 16
        !           916: > 1c92434="this is some text"
        !           917: will place the
        !           918: .IR ASCII
        !           919: for the string at
        !           920: 1c92434.
        !           921: .SH SEE ALSO
        !           922: fsck(8), dir(4), fs(4).
        !           923: .SH BUGS
        !           924: .PP
        !           925: Extreme caution is advised in
        !           926: determining the availability
        !           927: of
        !           928: .IR fsdb
        !           929: on the system.
        !           930: Suggested permissions are 600 and
        !           931: owned by bin.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.