因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的输出格式,对结果进行格式化输出。