MySQL help contents 의 내용 을 차원 있 게 출력 하 는 방법 추천
사실 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]을 실행 합 니 다.위 디 렉 터 리 로 복원 하 는 것 과 유사 합 니 다.
이 편 은 MySQL help contents 의 내용 을 차원 있 게 출력 하 는 방법 을 추천 합 니 다.바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 사랑 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.