zoukankan      html  css  js  c++  java
  • 如何将MySQL help contents的内容有层次的输出

    经常会遇到这种情况,在一个不能上网的环境通过MySQL客户端登录数据库,想执行一个操作,却忘了操作的具体语法,各种不方便。

    其实,MySQL数据库内置了帮助文档,通过help contents即可查看。

    如下所示:

    可见,该文档涵盖了数据库操作的大部分主题。

    文档分为以上几大类,每个大类又包括更小粒度的类,类最后有具体的topic组成。

    那么这之间的层级关系如何呢?

    昨天想执行一个操作

    mysql> backup table emp to '/tmp/mysqlbackup';

    因为这个backup操作以前没有使用过,准备用MySQL自带的帮助文档来查看具体的用法。本来这个命令所属的类别就有点模糊,譬如Administration和Utility都有可能。最后找了一通,还是没有找到。

    想了想,这样查看帮助文档确实没有太大的效率,如果知道这之间的层级关系就好办了。

    于是,动手写了个脚本,可直观的显示帮助文档中大类与小类,小类与topic之间的关系。

    具体如下:

    #!/bin/bash
    #所有操作都是在/tmp/test中操作,因为中间新建了很多临时文件,方便后续的删除。
    mkdir /tmp/test
    #获取上图的内容重定向到/tmp/test/test.txt文件中
    mysql -uroot -p123456 -e "help contents " > /tmp/test/test.txt
    #定义输出的格式,	输出tab,相当于backspace一个空格,参考了tree命令的输出方式。
    format="|	"
    #删除第一行和最后一行
    sed -i '1d;$d' /tmp/test/test.txt
    cd /tmp/test
    #引入number的作用在于后续格式的输出
    number=0
    
    #后续用了递归调用,这里定义的是函数
    function recursive(){
    filename=$1
    number=$[$number+1]
    
    while read line
    do
    #name要做为文件名,譬如Account Management,利用tr函数是去掉字符中间的空格
    name=`echo $line|tr -d [:blank:]`
    #输出每个分类中的内容,可能是topic,可能是categories
    mysql -uroot -p123456 -e "help $line" > $name
    #取输出文件的第一行的内容,如果是具体的topic,则第一行的内容为:Name: 'ALTER USER',不然就还是categories,需要递归调用
    firstline=`head -1 $name`
    #整个逻辑比较复杂的有两类,一个是Numeric Functions,另一个是PLUGINS。先说PLUGINS,一般对于一个具体的topic,它的输出类似于Name: 'ALTER USER',而PLUGINS
    #对应的输出却是Name: 'SHOW PLUGINS',所以下面的判断语句多了一个"$firstline" = "Name: 'SHOW PLUGINS'",针对的即是PLUGINS。另一比较复杂的是Numeric Functions
    #它下面的topic有除号“/”,而这基本上是不能作为文件名的。所以在下面的判断逻辑中,如果遇到Numeric Functions,就直接打印出该类中的topic,而不进行Name: 'ALTER USER'这样的判断
    if [ "$firstline" = "Name: '$line'" -o "$firstline" = "Name: 'SHOW PLUGINS'" ];then
    
    for i in `seq $[$number-1]`
    do
      echo -ne $format
    done
    echo "├── $line"
    
    else
    #如果不是topic,则代表是categories,可递归进行判断,唯一的例外就是Numeric Functions
    #下面的echo "├── $line"打印出的是categories的名字
    for i in `seq $[$number-1]`
    do
      echo -ne $format
    done
    echo "├── $line"
    
    #遇到Numeric Functions,就直接打印出该类中的topic
    if [ "$line" = "Numeric Functions" ];then
    sed -i '1d;$d' $name
    while read functions 
    do
    for i in `seq $number`
    do
      echo -ne $format
    done
    echo "├── $functions"
    done < $name
    
    else
    #其它的categories,递归调用该函数进行判断。
    sed -i '1d;$d' $name
    recursive $name
    number=$[$number-1]
    
    fi
    fi
    done < $filename
    }
    
    #主函数
    recursive /tmp/test/test.txt
    #处理完毕,删除文件夹
    rm -rf /tmp/test

    因MySQL客户端登录数据库的时候,直接指定了密码,如果直接执行的话,会输出很多“Warning: Using a password on the command line interface can be insecure.”,

    可重定向到一个文件

    # sh 2.sh > 1.txt 

    最后文件中的结果如下:

    ├── Account Management
    |      ├── ALTER USER
    |      ├── CREATE USER
    |      ├── DROP USER
    |      ├── GRANT
    |      ├── RENAME USER
    |      ├── REVOKE
    |      ├── SET PASSWORD
    ├── Administration
    |      ├── BINLOG
    |      ├── CACHE INDEX
    |      ├── FLUSH
    |      ├── FLUSH QUERY CACHE
    |      ├── HELP COMMAND
    |      ├── KILL
    |      ├── LOAD INDEX
    |      ├── RESET
    |      ├── SET
    |      ├── SHOW
    |      ├── SHOW AUTHORS
    |      ├── SHOW BINARY LOGS
    |      ├── SHOW BINLOG EVENTS
    |      ├── SHOW CHARACTER SET
    |      ├── SHOW COLLATION
    |      ├── SHOW COLUMNS
    |      ├── SHOW CONTRIBUTORS
    |      ├── SHOW CREATE DATABASE
    |      ├── SHOW CREATE EVENT
    |      ├── SHOW CREATE FUNCTION
    |      ├── SHOW CREATE PROCEDURE
    |      ├── SHOW CREATE TABLE
    |      ├── SHOW CREATE TRIGGER
    |      ├── SHOW CREATE VIEW
    |      ├── SHOW DATABASES
    |      ├── SHOW ENGINE
    |      ├── SHOW ENGINES
    |      ├── SHOW ERRORS
    |      ├── SHOW EVENTS
    |      ├── SHOW FUNCTION CODE
    |      ├── SHOW FUNCTION STATUS
    |      ├── SHOW GRANTS
    |      ├── SHOW INDEX
    |      ├── SHOW MASTER STATUS
    |      ├── SHOW OPEN TABLES
    |      ├── SHOW PLUGINS
    |      ├── SHOW PRIVILEGES
    |      ├── SHOW PROCEDURE CODE
    |      ├── SHOW PROCEDURE STATUS
    |      ├── SHOW PROCESSLIST
    |      ├── SHOW PROFILE
    |      ├── SHOW PROFILES
    |      ├── SHOW RELAYLOG EVENTS
    |      ├── SHOW SLAVE HOSTS
    |      ├── SHOW SLAVE STATUS
    |      ├── SHOW STATUS
    |      ├── SHOW TABLE STATUS
    |      ├── SHOW TABLES
    |      ├── SHOW TRIGGERS
    |      ├── SHOW VARIABLES
    |      ├── SHOW WARNINGS
    ├── Compound Statements
    |      ├── BEGIN END
    |      ├── CASE STATEMENT
    |      ├── CLOSE
    |      ├── DECLARE CONDITION
    |      ├── DECLARE CURSOR
    |      ├── DECLARE HANDLER
    |      ├── DECLARE VARIABLE
    |      ├── FETCH
    |      ├── GET DIAGNOSTICS
    |      ├── IF STATEMENT
    |      ├── ITERATE
    |      ├── LABELS
    |      ├── LEAVE
    |      ├── LOOP
    |      ├── OPEN
    |      ├── REPEAT LOOP
    |      ├── RESIGNAL
    |      ├── RETURN
    |      ├── SIGNAL
    |      ├── WHILE
    ├── Data Definition
    |      ├── ALTER DATABASE
    |      ├── ALTER EVENT
    |      ├── ALTER FUNCTION
    |      ├── ALTER LOGFILE GROUP
    |      ├── ALTER PROCEDURE
    |      ├── ALTER SERVER
    |      ├── ALTER TABLE
    |      ├── ALTER TABLESPACE
    |      ├── ALTER VIEW
    |      ├── CONSTRAINT
    |      ├── CREATE DATABASE
    |      ├── CREATE EVENT
    |      ├── CREATE FUNCTION
    |      ├── CREATE INDEX
    |      ├── CREATE LOGFILE GROUP
    |      ├── CREATE PROCEDURE
    |      ├── CREATE SERVER
    |      ├── CREATE TABLE
    |      ├── CREATE TABLESPACE
    |      ├── CREATE TRIGGER
    |      ├── CREATE VIEW
    |      ├── DROP DATABASE
    |      ├── DROP EVENT
    |      ├── DROP FUNCTION
    |      ├── DROP INDEX
    |      ├── DROP PROCEDURE
    |      ├── DROP SERVER
    |      ├── DROP TABLE
    |      ├── DROP TABLESPACE
    |      ├── DROP TRIGGER
    |      ├── DROP VIEW
    |      ├── RENAME TABLE
    |      ├── TRUNCATE TABLE
    ├── Data Manipulation
    |      ├── CALL
    |      ├── DELETE
    |      ├── DO
    |      ├── DUAL
    |      ├── HANDLER
    |      ├── INSERT
    |      ├── INSERT DELAYED
    |      ├── INSERT SELECT
    |      ├── JOIN
    |      ├── LOAD DATA
    |      ├── LOAD XML
    |      ├── REPLACE
    |      ├── SELECT
    |      ├── UNION
    |      ├── UPDATE
    ├── Data Types
    |      ├── AUTO_INCREMENT
    |      ├── BIGINT
    |      ├── BINARY
    |      ├── BIT
    |      ├── BLOB
    |      ├── BLOB DATA TYPE
    |      ├── BOOLEAN
    |      ├── CHAR
    |      ├── CHAR BYTE
    |      ├── DATE
    |      ├── DATETIME
    |      ├── DEC
    |      ├── DECIMAL
    |      ├── DOUBLE
    |      ├── DOUBLE PRECISION
    |      ├── ENUM
    |      ├── FLOAT
    |      ├── INT
    |      ├── INTEGER
    |      ├── LONGBLOB
    |      ├── LONGTEXT
    |      ├── MEDIUMBLOB
    |      ├── MEDIUMINT
    |      ├── MEDIUMTEXT
    |      ├── SET DATA TYPE
    |      ├── SMALLINT
    |      ├── TEXT
    |      ├── TIME
    |      ├── TIMESTAMP
    |      ├── TINYBLOB
    |      ├── TINYINT
    |      ├── TINYTEXT
    |      ├── VARBINARY
    |      ├── VARCHAR
    |      ├── YEAR DATA TYPE
    ├── Functions
    |      ├── Bit Functions
    |      |       ├── &
    |      |       ├── <<
    |      |       ├── >>
    |      |       ├── BIT_COUNT
    |      |       ├── ^
    |      |       ├── |
    |      |       ├── ~
    |      ├── Comparison operators
    |      |       ├── !=
    |      |       ├── <
    |      |       ├── <=
    |      |       ├── <=>
    |      |       ├── =
    |      |       ├── >
    |      |       ├── >=
    |      |       ├── BETWEEN AND
    |      |       ├── COALESCE
    |      |       ├── GREATEST
    |      |       ├── IN
    |      |       ├── INTERVAL
    |      |       ├── IS
    |      |       ├── IS NOT
    |      |       ├── IS NOT NULL
    |      |       ├── IS NULL
    |      |       ├── ISNULL
    |      |       ├── LEAST
    |      |       ├── NOT BETWEEN
    |      |       ├── NOT IN
    |      ├── Control flow functions
    |      |       ├── CASE OPERATOR
    |      |       ├── IF FUNCTION
    |      |       ├── IFNULL
    |      |       ├── NULLIF
    |      ├── Date and Time Functions
    |      |       ├── ADDDATE
    |      |       ├── ADDTIME
    |      |       ├── CONVERT_TZ
    |      |       ├── CURDATE
    |      |       ├── CURRENT_DATE
    |      |       ├── CURRENT_TIME
    |      |       ├── CURRENT_TIMESTAMP
    |      |       ├── CURTIME
    |      |       ├── DATE FUNCTION
    |      |       ├── DATEDIFF
    |      |       ├── DATE_ADD
    |      |       ├── DATE_FORMAT
    |      |       ├── DATE_SUB
    |      |       ├── DAY
    |      |       ├── DAYNAME
    |      |       ├── DAYOFMONTH
    |      |       ├── DAYOFWEEK
    |      |       ├── DAYOFYEAR
    |      |       ├── EXTRACT
    |      |       ├── FROM_DAYS
    |      |       ├── FROM_UNIXTIME
    |      |       ├── GET_FORMAT
    |      |       ├── HOUR
    |      |       ├── LAST_DAY
    |      |       ├── LOCALTIME
    |      |       ├── LOCALTIMESTAMP
    |      |       ├── MAKEDATE
    |      |       ├── MAKETIME
    |      |       ├── MICROSECOND
    |      |       ├── MINUTE
    |      |       ├── MONTH
    |      |       ├── MONTHNAME
    |      |       ├── NOW
    |      |       ├── PERIOD_ADD
    |      |       ├── PERIOD_DIFF
    |      |       ├── QUARTER
    |      |       ├── SECOND
    |      |       ├── SEC_TO_TIME
    |      |       ├── STR_TO_DATE
    |      |       ├── SUBDATE
    |      |       ├── SUBTIME
    |      |       ├── SYSDATE
    |      |       ├── TIME FUNCTION
    |      |       ├── TIMEDIFF
    |      |       ├── TIMESTAMP FUNCTION
    |      |       ├── TIMESTAMPADD
    |      |       ├── TIMESTAMPDIFF
    |      |       ├── TIME_FORMAT
    |      |       ├── TIME_TO_SEC
    |      |       ├── TO_DAYS
    |      |       ├── TO_SECONDS
    |      |       ├── UNIX_TIMESTAMP
    |      |       ├── UTC_DATE
    |      |       ├── UTC_TIME
    |      |       ├── UTC_TIMESTAMP
    |      |       ├── WEEK
    |      |       ├── WEEKDAY
    |      |       ├── WEEKOFYEAR
    |      |       ├── YEAR
    |      |       ├── YEARWEEK
    |      ├── Encryption Functions
    |      |       ├── AES_DECRYPT
    |      |       ├── AES_ENCRYPT
    |      |       ├── COMPRESS
    |      |       ├── DECODE
    |      |       ├── DES_DECRYPT
    |      |       ├── DES_ENCRYPT
    |      |       ├── ENCODE
    |      |       ├── ENCRYPT
    |      |       ├── MD5
    |      |       ├── OLD_PASSWORD
    |      |       ├── PASSWORD
    |      |       ├── RANDOM_BYTES
    |      |       ├── SHA1
    |      |       ├── SHA2
    |      |       ├── UNCOMPRESS
    |      |       ├── UNCOMPRESSED_LENGTH
    |      |       ├── VALIDATE_PASSWORD_STRENGTH
    |      ├── Information Functions
    |      |       ├── BENCHMARK
    |      |       ├── CHARSET
    |      |       ├── COERCIBILITY
    |      |       ├── COLLATION
    |      |       ├── CONNECTION_ID
    |      |       ├── CURRENT_USER
    |      |       ├── DATABASE
    |      |       ├── FOUND_ROWS
    |      |       ├── LAST_INSERT_ID
    |      |       ├── ROW_COUNT
    |      |       ├── SCHEMA
    |      |       ├── SESSION_USER
    |      |       ├── SYSTEM_USER
    |      |       ├── USER
    |      |       ├── VERSION
    |      ├── Logical operators
    |      |       ├── !
    |      |       ├── AND
    |      |       ├── ASSIGN-EQUAL
    |      |       ├── ASSIGN-VALUE
    |      |       ├── OR
    |      |       ├── XOR
    |      ├── Miscellaneous Functions
    |      |       ├── DEFAULT
    |      |       ├── GET_LOCK
    |      |       ├── INET6_ATON
    |      |       ├── INET6_NTOA
    |      |       ├── INET_ATON
    |      |       ├── INET_NTOA
    |      |       ├── IS_FREE_LOCK
    |      |       ├── IS_IPV4
    |      |       ├── IS_IPV4_COMPAT
    |      |       ├── IS_IPV4_MAPPED
    |      |       ├── IS_IPV6
    |      |       ├── IS_USED_LOCK
    |      |       ├── MASTER_POS_WAIT
    |      |       ├── NAME_CONST
    |      |       ├── RELEASE_LOCK
    |      |       ├── SLEEP
    |      |       ├── UUID
    |      |       ├── UUID_SHORT
    |      |       ├── VALUES
    |      ├── Numeric Functions
    |      |       ├── %
    |      |       ├── *
    |      |       ├── +
    |      |       ├── - BINARY
    |      |       ├── - UNARY
    |      |       ├── /
    |      |       ├── ABS
    |      |       ├── ACOS
    |      |       ├── ASIN
    |      |       ├── ATAN
    |      |       ├── ATAN2
    |      |       ├── CEIL
    |      |       ├── CEILING
    |      |       ├── CONV
    |      |       ├── COS
    |      |       ├── COT
    |      |       ├── CRC32
    |      |       ├── DEGREES
    |      |       ├── DIV
    |      |       ├── EXP
    |      |       ├── FLOOR
    |      |       ├── LN
    |      |       ├── LOG
    |      |       ├── LOG10
    |      |       ├── LOG2
    |      |       ├── MOD
    |      |       ├── PI
    |      |       ├── POW
    |      |       ├── POWER
    |      |       ├── RADIANS
    |      |       ├── RAND
    |      |       ├── ROUND
    |      |       ├── SIGN
    |      |       ├── SIN
    |      |       ├── SQRT
    |      |       ├── TAN
    |      |       ├── TRUNCATE
    |      ├── String Functions
    |      |       ├── ASCII
    |      |       ├── BIN
    |      |       ├── BINARY OPERATOR
    |      |       ├── BIT_LENGTH
    |      |       ├── CAST
    |      |       ├── CHAR FUNCTION
    |      |       ├── CHARACTER_LENGTH
    |      |       ├── CHAR_LENGTH
    |      |       ├── CONCAT
    |      |       ├── CONCAT_WS
    |      |       ├── CONVERT
    |      |       ├── ELT
    |      |       ├── EXPORT_SET
    |      |       ├── EXTRACTVALUE
    |      |       ├── FIELD
    |      |       ├── FIND_IN_SET
    |      |       ├── FORMAT
    |      |       ├── FROM_BASE64()
    |      |       ├── HEX
    |      |       ├── INSERT FUNCTION
    |      |       ├── INSTR
    |      |       ├── LCASE
    |      |       ├── LEFT
    |      |       ├── LENGTH
    |      |       ├── LIKE
    |      |       ├── LOAD_FILE
    |      |       ├── LOCATE
    |      |       ├── LOWER
    |      |       ├── LPAD
    |      |       ├── LTRIM
    |      |       ├── MAKE_SET
    |      |       ├── MATCH AGAINST
    |      |       ├── MID
    |      |       ├── NOT LIKE
    |      |       ├── NOT REGEXP
    |      |       ├── OCT
    |      |       ├── OCTET_LENGTH
    |      |       ├── ORD
    |      |       ├── POSITION
    |      |       ├── QUOTE
    |      |       ├── REGEXP
    |      |       ├── REPEAT FUNCTION
    |      |       ├── REPLACE FUNCTION
    |      |       ├── REVERSE
    |      |       ├── RIGHT
    |      |       ├── RPAD
    |      |       ├── RTRIM
    |      |       ├── SOUNDEX
    |      |       ├── SOUNDS LIKE
    |      |       ├── SPACE
    |      |       ├── STRCMP
    |      |       ├── SUBSTR
    |      |       ├── SUBSTRING
    |      |       ├── SUBSTRING_INDEX
    |      |       ├── TO_BASE64()
    |      |       ├── TRIM
    |      |       ├── UCASE
    |      |       ├── UNHEX
    |      |       ├── UPDATEXML
    |      |       ├── UPPER
    |      |       ├── WEIGHT_STRING
    ├── Functions and Modifiers for Use with GROUP BY
    |      ├── AVG
    |      ├── BIT_AND
    |      ├── BIT_OR
    |      ├── BIT_XOR
    |      ├── COUNT
    |      ├── COUNT DISTINCT
    |      ├── GROUP_CONCAT
    |      ├── MAX
    |      ├── MIN
    |      ├── STD
    |      ├── STDDEV
    |      ├── STDDEV_POP
    |      ├── STDDEV_SAMP
    |      ├── SUM
    |      ├── VARIANCE
    |      ├── VAR_POP
    |      ├── VAR_SAMP
    ├── Geographic Features
    |      ├── GEOMETRY
    |      ├── GEOMETRY HIERARCHY
    |      ├── SPATIAL
    |      ├── Geometry constructors
    |      |       ├── GEOMETRYCOLLECTION
    |      |       ├── LINESTRING
    |      |       ├── MULTILINESTRING
    |      |       ├── MULTIPOINT
    |      |       ├── MULTIPOLYGON
    |      |       ├── POINT
    |      |       ├── POLYGON
    |      ├── Geometry properties
    |      |       ├── DIMENSION
    |      |       ├── ENVELOPE
    |      |       ├── GEOMETRYTYPE
    |      |       ├── ISEMPTY
    |      |       ├── ISSIMPLE
    |      |       ├── SRID
    |      |       ├── ST_DIMENSION
    |      |       ├── ST_ENVELOPE
    |      |       ├── ST_GEOMETRYTYPE
    |      |       ├── ST_ISEMPTY
    |      |       ├── ST_ISSIMPLE
    |      |       ├── ST_SRID
    |      ├── Geometry relations
    |      |       ├── CONTAINS
    |      |       ├── CROSSES
    |      |       ├── DISJOINT
    |      |       ├── EQUALS
    |      |       ├── INTERSECTS
    |      |       ├── OVERLAPS
    |      |       ├── ST_CONTAINS
    |      |       ├── ST_CROSSES
    |      |       ├── ST_DISJOINT
    |      |       ├── ST_DISTANCE
    |      |       ├── ST_EQUALS
    |      |       ├── ST_INTERSECTS
    |      |       ├── ST_OVERLAPS
    |      |       ├── ST_TOUCHES
    |      |       ├── ST_WITHIN
    |      |       ├── TOUCHES
    |      |       ├── WITHIN
    |      ├── LineString properties
    |      |       ├── ENDPOINT
    |      |       ├── GLENGTH
    |      |       ├── ISCLOSED
    |      |       ├── NUMPOINTS
    |      |       ├── POINTN
    |      |       ├── STARTPOINT
    |      |       ├── ST_ENDPOINT
    |      |       ├── ST_ISCLOSED
    |      |       ├── ST_NUMPOINTS
    |      |       ├── ST_POINTN
    |      |       ├── ST_STARTPOINT
    |      ├── MBR
    |      |       ├── ASYMMETRIC_DECRYPT
    |      |       ├── ASYMMETRIC_DERIVE
    |      |       ├── ASYMMETRIC_ENCRYPT
    |      |       ├── ASYMMETRIC_SIGN
    |      |       ├── ASYMMETRIC_VERIFY
    |      |       ├── CREATE_ASYMMETRIC_PRIV_KEY
    |      |       ├── CREATE_ASYMMETRIC_PUB_KEY
    |      |       ├── CREATE_DH_PARAMETERS
    |      |       ├── CREATE_DIGEST
    |      |       ├── GTID_SUBSET
    |      |       ├── GTID_SUBTRACT
    |      |       ├── MBR DEFINITION
    |      |       ├── MBRCONTAINS
    |      |       ├── MBRDISJOINT
    |      |       ├── MBREQUAL
    |      |       ├── MBRINTERSECTS
    |      |       ├── MBROVERLAPS
    |      |       ├── MBRTOUCHES
    |      |       ├── MBRWITHIN
    |      |       ├── SQL_THREAD_WAIT_AFTER_GTIDS
    |      |       ├── WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS
    |      ├── Point properties
    |      |       ├── ST_X
    |      |       ├── ST_Y
    |      |       ├── X
    |      |       ├── Y
    |      ├── Polygon properties
    |      |       ├── AREA
    |      |       ├── CENTROID
    |      |       ├── EXTERIORRING
    |      |       ├── INTERIORRINGN
    |      |       ├── NUMINTERIORRINGS
    |      |       ├── ST_AREA
    |      |       ├── ST_CENTROID
    |      |       ├── ST_EXTERIORRING
    |      |       ├── ST_INTERIORRINGN
    |      |       ├── ST_NUMINTERIORRINGS
    |      ├── WKB
    |      |       ├── ASBINARY
    |      |       ├── ASTEXT
    |      |       ├── GEOMCOLLFROMWKB
    |      |       ├── GEOMFROMWKB
    |      |       ├── LINEFROMWKB
    |      |       ├── MLINEFROMWKB
    |      |       ├── MPOINTFROMWKB
    |      |       ├── MPOLYFROMWKB
    |      |       ├── POINTFROMWKB
    |      |       ├── POLYFROMWKB
    |      |       ├── ST_ASBINARY
    |      |       ├── ST_ASTEXT
    |      |       ├── ST_GEOMCOLLFROMWKB
    |      |       ├── ST_GEOMFROMWKB
    |      |       ├── ST_LINEFROMWKB
    |      |       ├── ST_POINTFROMWKB
    |      |       ├── ST_POLYFROMWKB
    |      ├── WKT
    |      |       ├── GEOMCOLLFROMTEXT
    |      |       ├── GEOMFROMTEXT
    |      |       ├── LINEFROMTEXT
    |      |       ├── MLINEFROMTEXT
    |      |       ├── MPOINTFROMTEXT
    |      |       ├── MPOLYFROMTEXT
    |      |       ├── POINTFROMTEXT
    |      |       ├── POLYFROMTEXT
    |      |       ├── ST_GEOMCOLLFROMTEXT
    |      |       ├── ST_GEOMFROMTEXT
    |      |       ├── ST_LINEFROMTEXT
    |      |       ├── ST_POINTFROMTEXT
    |      |       ├── ST_POLYFROMTEXT
    |      |       ├── WKT DEFINITION
    ├── Help Metadata
    |      ├── HELP_DATE
    |      ├── HELP_VERSION
    ├── Language Structure
    ├── Plugins
    ├── Procedures
    ├── Storage Engines
    ├── Table Maintenance
    |      ├── ANALYZE TABLE
    |      ├── CHECK TABLE
    |      ├── CHECKSUM TABLE
    |      ├── OPTIMIZE TABLE
    |      ├── REPAIR TABLE
    ├── Transactions
    |      ├── CHANGE MASTER TO
    |      ├── DEALLOCATE PREPARE
    |      ├── EXECUTE STATEMENT
    |      ├── ISOLATION
    |      ├── LOCK
    |      ├── PREPARE
    |      ├── PURGE BINARY LOGS
    |      ├── RESET MASTER
    |      ├── RESET SLAVE
    |      ├── SAVEPOINT
    |      ├── SET GLOBAL SQL_SLAVE_SKIP_COUNTER
    |      ├── SET SQL_LOG_BIN
    |      ├── START SLAVE
    |      ├── START TRANSACTION
    |      ├── STOP SLAVE
    |      ├── XA
    ├── User-Defined Functions
    |      ├── CREATE FUNCTION UDF
    |      ├── DROP FUNCTION UDF
    ├── Utility
    |      ├── EXPLAIN
    |      ├── HELP STATEMENT
    |      ├── USE

    总结:

    整个脚本在写的过程有两点比较有意思。

    1. 函数递归操作,以前没怎么使用Shell进行函数的递归操作。

    2. 借鉴tree的输出格式,对结果进行格式化输出。

    思路如下:首先定义一个number为0,每次进入一次recursive函数,都会把当前的number加1,如果只是这样的话,那number值将一直增长了,所以在上述脚本else调用recursive函数部分,会在其后执行number=$[$number-1],类似于恢复到上一层目录下。

  • 相关阅读:
    C# 小规模查找集合性能测试
    高级前端开发不可或缺的知识
    移动前端开发-单页应用(spa)模型
    移动开发之用视频做背景
    纯CSS打造忙碌光标
    移动前端开发之数据库操作篇
    如何从源码中学习javascript
    Deffered.js的实现原理
    Codeforces Round #381 (Div. 2)
    2017 ZSTU寒假排位赛 #6
  • 原文地址:https://www.cnblogs.com/ivictor/p/5305922.html
Copyright © 2011-2022 走看看