首页 > 其他分享 >自制man手册临时使用脚本

自制man手册临时使用脚本

时间:2023-03-16 12:32:49浏览次数:43  
标签:fP RS 自制 apt 手册 TP man

前言

在linux的环境下,许多工具在初次使用或者进阶使用的时候都会用到man手册。 手册纯文本话的东西。自己开发的后台小程序,设置一个简单的手册。在linux的环境中直接查阅也会更加直观。在大平台的项目中,这种小程序的手册不需要其他用户查阅。秉承权限最小化。我们可以通过执行简单脚本,将其导入到临时的手册环境路径中。 当前用户退出终端后就不再使用。

环境

操作系统:window WSL kali 或者 linux 涉及基本命令:gzip 、sed、echo、mkdir、man

针对kali安装man

通过apt-get安装,若网络环境需要走代理.

#[根据网络可选]针对kali机器网络内部走代理才需要设置,否则不需要
# 需要代理的化境很难搞,如果口令有特殊字符还涉及URI编码#
[临时]export http_proxy="http:用户名:口令@代理IP:端口"
[仅针对apt]sudo gedit /etc/apt/apt.conf
替换yourproxyaddress 和proxyport
   Acquire::http::Proxy "http://proxyip:port/";
[针对kali机器]  /etc/apt/apt.conf.d/50kali 
[针对用户]gedit ~/.bashrc 新增
 export http_proxy="http:用户名:口令@代理IP:端口"
#更新
 apt-get update
#查看帮助
apt-get -h
apt-cache search man
#安装手册的
apt-get install man
安装手册
apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix
参考资料

trof说明-即用来制作一些手册的说明

The man macro package is provided to enable users to create their own manual pages from online manual pages that have been processed with either the nroff command or troff command. The man macro package is used with either the nroff command or the troff command

样例说明

  1. 撰写一份需要设置的手册,当前样例手册为asn1c_skeletons.man
  2. 根据需求调整临时脚本mymanpro.sh,当前样例设置章节4,名字为
  • sectionNUM=4
  • definedMANname="asn1c_skeletons" NOTE:生成的的放在当前目录的man4对应设置的章四下,若目录和数字不一样,查阅失败
  1. 使用执行导入,即可使用

环境设置脚本mymanpro.sh

脚本简要说明:根据要求压缩手册到指定目录,将目录环境,通过和原有环境man手册的"MANPATH"进行比对防止重复导入

#!/bin/sh
#Unix Shell Script
#filenamed:mymanpro.sh
#run: . ./mymanpro.sh

sectionNUM=4
definedMANname="asn1c_skeletons"
PWDDIR=`pwd`
ADDMANDIR="${PWDDIR}/man${sectionNUM}"
function ContainedInArr()
{
   arr=("$@")
   arrlen=$#
   echo $arr
   i=1
   while (( $i < $arrlen )) 
   do 
          printf "%3d:%-20s\n" $i ${arr[$i]} 
         if [ ${arr[0]}  = ${arr[$i]} ] 
          then
          echo "In"
          return 1
         fi
        let i++
    done 
  echo "Not In" 
 return 0
}
if [ ! -d  ${ADDMANDIR} ] ;then
 mkdir -p  ${ADDMANDIR}
fi
MYMAN="${PWDDIR}/${definedMANname}.man"
if [ -e ${MYMAN} ] ;then
gzip -c ${MYMAN} >  ${ADDMANDIR}/${definedMANname}.${sectionNUM}.gz 
fi 
# :->space
MANPATHTMP=` echo "${MANPATH}" | sed "s/:/\\x20/g" `

ContainedInArr ${PWDDIR}  ${MANPATHTMP[@]}
if [ $? -eq  0 ] ;then
 export MANPATH=${MANPATH}:${PWDDIR}
fi

操作

  1. 准备操作前目录结构
└─$ pwd
/mnt/d/LinuxRun
└─$ tree
.
├── asn1c_skeletons.man
└── mymanpro.sh
0 directories, 2 files
  1. 执行操作
└─$ source mymanpro.sh
/mnt/d/LinuxRun
  1:/mnt/d/LinuxRun
In
  1. 执行后目录结构
└─$ tree
.
├── asn1c_skeletons.man
├── man4
│   └── asn1c_skeletons.4.gz
└── mymanpro.sh
1 directory, 3 files
  1. 执行查阅章四
man 4 asn1c_skeletons

屏幕截图 2023-03-15 223008.png

样例man手册

.\"Datrilla : 
.TH asn1cDevelopment 1 Usemannuals skeletons
.SH GENERATION CMD
\fP
.PP
.TP
precompile:asn1c -gen-PER TESTModule.asn
.TP
compile:cc -DPDU=Circle -I. -o CircleDecorder.exe *.c

.SH a variety of METHODS
\fP
.PP
.TP
\fBber_\fP Byte-oriented  decoder(could read DER and CER)
.TP
\fBder_\fP 
.TP
\fBper_\fP BIT-oriented
.TP
\fBxer_\fP UTF-8 XML

.SH BASIC TYPE C LANGUAGE FILE *\.c
\fP
.TP
\fBBOOLEAN\fP
.TP
\fBINTEGER\fP
.TP
\fBENUMERATED\fP
.TP
\fBREAL\fP
.TP
\fBBIT_STRING\fP
.TP
\fBOCTET_STRING\fP
.TP
\fBNULL\fP
.TP
\fBconstr_SEQUENCE\fP SEQUENCE
.TP
\fBconstr_SEQUENCE_OF\fP SEQUENCE OF
.TP
\fBconstr_SET\fP SET
.TP
\fBconstr_SET_OF\fP SET OF
.TP
\fBconstr_CHOICE\fP CHOICE
.TP
SelectionType | TaggedType   @ref x.680 for more description
.TP
\fBOBJECT_IDENTIFIER\fP
.TP
\fBRELATIVE-OID\fP
.TP
EmbeddedPDVType ::= EMBEDDED PDV|ExternalType ::= EXTERNAL @ref x.680(200207) for more description
.TP  
\fBRestrictedCharacterStringType x.680(200207) Annex H or x680 11.25.4\fP
\fP
.RS
\fBBMPString\fP
.RE
\fP
.RS 
\fBGeneralString\fP
.RE
\fP
.RS
\fBGraphicString\fP
.RE
\fP
.RS
\fBIA5String\fP
.RE
\fP
.RS
\fBISO646String\fP 
.TP
\fBNumericString\fP
.RE
\fP
.RS
\fBPrintableString\fP
.TP
\fBTeletexString\fP
.RE
\fP
.RS
\fBT61String\fP
.RE
\fP
.RS
\fBUniversalString\fP
.TP
\fBUTF8String\fP
.RE
\fP
.RS
\fBVideotexString\fP
.RE
\fP
.RS
\fBVisibleString\fP
.RE
.TP
UnrestrictedCharacterStringType ::= CHARACTER STRING  @ref x.680(200207) 40 for more description 
.TP
\fBGeneralizedTime\fP
.TP
\fBUTCTime\fP
.TP
\fBObjectDescriptor\fP
.TP
\fBconstraints\fP

标签:fP,RS,自制,apt,手册,TP,man
From: https://blog.51cto.com/datrilla/6123612

相关文章

  • 新手必看的jQuery参考手册主要API
    本文整理了一些主要的jQueryAPI,其中包括jQuery核心函数和方法、jQuery属性参考手册、jQueryCSS操作、jQuery选择器、jQuery文档操作、jQuery筛选操作、jQuery事件方法、j......
  • 跟老杜从零入门MyBatis到架构思维(六)MyBatis核心配置文件-transactionManager
    MyBatis核心配置文件详解transactionManager配合视频教程观看,更易学习理解,课程讲解从Mybatis的一些核心要点与实战中的运用,一直过渡到MyBaits源码,由表及里的代入架构思维。......
  • 征信合规管理检查手册
    征信合规管理检查手册为进一步做好征信合规与信息安全季度自查自纠工作,根据监管最新要求,结合自查审计、监管检查发现的问题,拟定征信合规管理检查手册,制定了《征信合规管......
  • linux自定义man搜索路径
    很多时候,在linux我们源码编译库代码时候会自定义安装路径,这使得man查询的时候无法找到库文档,默认的man搜索路径可以使用下面命令查看:$man-w/usr/local/share/man:/usr/......
  • postman调试grpc接口
    一直用postman调试http接口,很顺手。这次试了下调试grpc接口,方便  然后导入proto文件  选择调用的grpc接口,调用 ......
  • Topman苹果谷歌浏览器设置
    打开谷歌浏览器的方式跟之前的不一样,需要命令的方式打开:步骤:按住command+空格键,输入terminal.app,如下图:   在终端输入:open-n/Applications/Google\Chrome.a......
  • 【漏洞复现】Pharmacy Management System远程代码执行漏洞(CVE-2022-30887)
    PharmacyManagementSystem远程代码执行漏洞(CVE-2022-30887)0x01i春秋靶场介绍多语言药房管理系统(MPMS)是用PHP和MySQL开发的,该软件的主要目的是在药房和客户之......
  • 从0开始自制解释器——实现多个整数的加减法
    在上一篇我们实现了一个可以计算两个多位整数加减法的计算器。本章我们继续来给这个计算器添加功能,这次要给它添加可以连续计算多个整数相加减的功能。例如我们可以计算1......
  • Cannot invoke \"jakarta.persistence.EntityManager.getDelegate()\" because \"e
    使用JDK17+SpringBoot3.0+JPA+QueryDsl来构建一个restful的服务定义了一个实体@EntitypublicclassUser{//略}一个jpa的默认repo实现@Repositorypublic......
  • 3.docker 搭建kafka和kafka-manager集群
    1.搭建zookeeper集群docker-compose.yml文件version:'3.1'services:zoo1:image:zookeeperrestart:alwayshostname:zoo1ports:-2181:2181environment:ZOO_M......