Annotation of cci/usr/src/man/man1/fsdb.1m, revision 1.1

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