程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> 如何將MySQL help contents的內容有層次的輸出

如何將MySQL help contents的內容有層次的輸出

編輯:MYSQL入門知識

經常會遇到這種情況,在一個不能上網的環境通過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
#定義輸出的格式,\t輸出tab,\b相當於backspace一個空格,參考了tree命令的輸出方式。
format="|\t\b"
#刪除第一行和最後一行
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],類似於恢復到上一層目錄下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved