링크 ux 셸 입문 4
문자
역할.
*
이전 문자 가 0 번 이나 여러 번 일치 합 니 다.
.
줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
^
일치 하 는 줄 의 첫머리
$
일치 하 는 줄 끝
[]
괄호 안에 있 는 문자 와 일치 합 니 다.
[^]
괄호 를 제외 한 임의의 문자 와 일치 합 니 다.
\{n,m\}
앞의 문자 와 일치 하면 n, m 이상 의 문자 가 나타 납 니 다.
\{n,\}
앞의 문자 와 일치 하 는 횟수 가 적지 않 습 니 다 n
\{n\}
앞 글자 n 번 나타 나 기
테스트
grep "a*" test
779 grep "aa*" test // a
780 grep "aaa*" test // 2 a
781 grep "aaaaa*" test
782 grep "s..d" test // s d
784 grep "s.*d" test // s d
786 grep ".*" test ,
787 grep "^M" test M
788 grep "r$" test r
789 grep "y$" test
792 grep -n "^$" test
793 grep "s[ao]id" test s d a O
794 grep "[0-9]" test
795 grep "[^0-9]" test
796 grep "^[^0-9]" test
797 grep "^[0-9]" test ,
798 grep "\.$" test
799 grep "a\{3,\}" test 3 a
800 grep "a\{3\}" test 3 a
801 grep "a\{3,4\}" test 3 a
802 grep "a\{3,3\}" test 3 a
803 grep "a\{3,4\}id" test a id , a id 3, 4 a
2. 문자 캡 처 명령 cut 필드 캡 처 명령
[mq@mq shell]$ cut -f 1,3 student.txt
[mq@mq shell]$ cut -d ":" -f 1,3 /etc/passwd
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"
root:x:0:0:root:/root:/bin/bash
mq:x:1000:1000:mq:/home/mq:/bin/bash
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|grep -v "root"
mq:x:1000:1000:mq:/home/mq:/bin/bash
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|grep -v "root"|cut -d ":" -f 1
mq
[mq@mq shell]$ df -h |grep "fedora-root"|cut -d " " -f 5
//cut
##printf
%ns
출력 문자열 형
%ni
출력 정수
%m.nf
자리수 와 정수 자리수
[mq@mq shell]$ printf '%s %s %s' 1 2 3 4 5 6
1 2 34 5 6[mq@mq shell]$ printf '%s %s %s ' 1 2 3 4 5 6
1 2 3 4 5 6 [mq@mq shell]$
[mq@mq shell]$ printf "%s
%s
%s
" 1 2 3
1
2
3
[mq@mq shell]$ printf "%s" $(cat mq)//
IDNamegenderMark1LimingM862ScM903GaoM83[mq@mq shell]$
[mq@mq shell]$ printf "%s\t%s\t%s\t%s
" $(cat mq)//
ID Name gender Mark
1 Liming M 86
2 Sc M 90
3 Gao M 83
awk 명령
awk '조건 1 {동작 1} 조건 2 {동작 2}...' 파일 이름 조건 관계 표현 식 조건 동작: 포맷 된 출력 이나 프로 세 스 제어 문
[mq@mq shell]$ cat student.txt
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ awk '{printf $2"\t" $6 "
"}' student.txt
Name Average
Liming 87.66
Sc 85.66
Gao 91.66
[mq@mq shell]$ df -h|awk '{print $1 "\t" $5 "\t" $6}'
%
devtmpfs 0% /dev
tmpfs 1% /dev/shm
tmpfs 1% /run
tmpfs 0% /sys/fs/cgroup
/dev/mapper/fedora-root 16% /
tmpfs 1% /tmp
/dev/sda5 15% /boot
/dev/mapper/fedora-home 16% /home
tmpfs 1% /run/user/42
tmpfs 2% /run/user/1000
/dev/sda2 29% /run/media/mq/
[mq@mq shell]$ df -h|grep sda5|awk '{print $5}'
15%
[mq@mq shell]$ df -h|grep sda5|awk '{print $5}'|cut -d % -f 1
15
BEGIN//모든 처리 전에 BEGIN 뒤에 있 는
[mq@mq shell]$ awk 'BEGIN{printf "This is a transcript
"}{printf $2 "\t" $6 "
"}' student.txt
This is a transcript
Name Average
Liming 87.66
Sc 85.66
Gao 91.66
[mq@mq ~]$ awk '{FS=":"}{print $1 "\t" $3}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
[mq@mq ~]$ awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd // awk
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
// PID
[mq@mq shell]$ cat /etc/passwd|grep "/bin/bash"|awk 'BEGIN {FS=":"}{printf $1 "\t" $3 "
"}'
root 0
mq 1000
END 는 BEGIN 과 반대 입 니 다.
[mq@mq shell]$ awk 'END{printf "end
"}{printf $1 "\t" $6 "
"}' student.txt
ID Average
1 87.66
2 85.66
3 91.66
end
[mq@mq sxhell]$ cat student.txt|grep -v Name|awk '$6>=87 {printf $2 "
"}'
Liming
Gao
sed
경량급 스 트림 편집기: 명령 결 과 를 파이프 문자 로 편집 sed 옵션 '동작' 파일 이름 옵션 - n - e - i 동작: a\추가 c\줄 교체 i: 삽입 d: 삭제 p: 인쇄 s: 문자열 교체 줄 출력:
[mq@mq shell]$ ls
a.txt shell2.sh shell5.sh shellrc test wo.txt
mq shell3.sh shell6.sh shell.sh test.txt
oper1.sh shell4.sh shell7.sh student.txt testx.sh
[mq@mq shell]$ sed '2p' student.txt
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed -n '2p' student.txt
1 Liming 82 95 86 87.66
[mq@mq shell]$ df -h|sed -n '2p'
devtmpfs 1.9G 0 1.9G 0% /dev
[mq@mq shell]$ cat gtest
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed '2,4d' gtest // -i ,
ID Name PHP Linux Mysql Average
[mq@mq shell]$ cat gtest
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed -i '2,4d' gtest
[mq@mq shell]$ cat gtest
ID Name PHP Linux Mysql Average
[mq@mq shell]$ sed '2a hello' gtest
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
hello
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed '2i hello \ //\
> world ' gtest
ID Name PHP Linux Mysql Average
hello
world
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ cat student.txt
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed '3s/74/99/g' student.txt
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 99 96 87 85.66
3 Gao 99 83 93 91.66
(-i)
[mq@mq shell]$ cat gtest
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66
[mq@mq shell]$ sed -i '3s/74/99/g' gtest
[mq@mq shell]$ cat gtest
ID Name PHP Linux Mysql Average
1 Liming 82 95 86 87.66
2 Sc 99 96 87 85.66
3 Gao 99 83 93 91.66
3. 문자 처리 명령 정렬 명령 sort 옵션 파일 이름
sort /etc/passwd // a-z
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
mq:x:1000:1000::/home/hp:/bin/bash
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
nobody:x:99:99:Nobody:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rater:x:1001:1001::/home/rater:/bin/bash
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@_240_centos ~]#sort -r /etc/passwd // z-a
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
mq:x:1000:1000::/home/hp:/bin/bash
halt:x:7:0:halt:/sbin:/sbin/halt
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
----------
[root@VM_47_240_centos ~]# sort -t ":" -k 3,3 /etc/passwd // 3 , , 10 2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hp:x:1000:1000::/home/hp:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
adm:x:3:4:adm:/var/adm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
----------
[root@VM_47_240_centos ~]# sort -nt ":" -k 3,3 /etc/passwd //
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
mysql-proxy:x:994:992:MySQL-Proxy user:/:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
hp:x:1000:1000::/home/hp:/bin/bash
rater:x:1001:1001::/home/rater:/bin/bash
통계 명령 wc 옵션 파일 이름 옵션
옵션
역할.
-l
행 수만 집계 하 다
-w
단어 수 를 집계 하 다
-m
통계 문자 수
[root@VM_47_240_centos ~]# wc -l /etc/passwd
34 /etc/passwd
[root@VM_47_240_centos ~]# df -h |wc -m
325
[root@VM_47_240_centos ~]# df -h |wc -w
43
4. 조건 판단
옵션
역할.
-d
파일 이 존재 하 는 지, 디 렉 터 리 파일 인지 여부
-e
파일 존재 여부 판단
-f
파일 이 존재 하 는 지, 일반 파일 인지 여부
-r
파일 이 존재 하 는 지, 쓰기 권한 이 있 는 지 여부
-w
파일 이 존재 하 는 지, 파일 을 쓸 수 있 는 지 여부
-x
파일 이 존재 하 는 지, 실행 가능 한 지 여부
[root@VM_47_240_centos ~]# test -e /root/install.log
[root@VM_47_240_centos ~]# echo $?
1 //
[root@VM_47_240_centos ~]# test -e /etc/passwd
[root@VM_47_240_centos ~]# echo $?
0 //
[root@VM_47_240_centos ~]# [ -e /etc/passwd ]
[root@VM_47_240_centos ~]# echo $?
0
[mq@mq ~]$ [ -e /home/mq ]
[mq@mq ~]$ echo $?
0
[mq@mq ~]$ [ -e /home/h ]
[mq@mq ~]$ echo $?
1
root
[root@VM_47_240_centos ~]# [ -d /root ] && echo "yes"
yes
존재 여 부 를 판단 하고 쓰기 권한 이 있 습 니 다.
//
[root@VM_47_240_centos ~]# [ -w /etc/passwd ]&& echo "yes"||echo "no"
yes
[root@VM_47_240_centos ~]# [ -w /etc/student ]&& echo "yes"||echo "no"
no
두 파일 비교
옵션
역할.
파일 1 - nt 파일 2
파일 1 대 파일 2 새
파일 1 - ot 파일 2
파일 1 은 파일 2 보다 낡 았 다.
파일 1 - et 파일 2
파일 1 과 파일 2Inode 번호 가 일치 하여 하 드 링크 를 판단 하 는 데 사 용 됩 니 다.
두 정수 비교 (수치 처리)
옵션
역할.
정수 1 - eq 정수 2
정수 1 이 정수 2 와 같 는 지 판단 하 다.
정수 1 - ne 정수 2
정수 1 이 정수 2 와 같 지 않 은 지 판단 하 다.
정수 1 - gt 정수 2
정수 1 이 정수 2 보다 큰 지 판단 하 다.
정수 1 - lt 정수 2
정수 1 이 정수 2 보다 작은 지 판단 하 다.
정수 1 - ge 정수 2
정수 1 이 정수 2 보다 큰 지 판단 하 다.
정수 1 - le 정수 2
정수 1 이 정수 2 보다 작 을 지 판단 하 다.
[root@VM_47_240_centos ~]# [ 23 -gt 22 ]&&echo "yes"||echo no
yes
5 문자열 의 판단
테스트 옵션
역할.
- z 문자열
문자열 이 비어 있 는 지 판단 하기
- n 문자열
문자열 이 비어 있 는 지 여 부 를 판단 합 니 다.
문자열 1 = = 문자열 2
문자열 1 이 문자열 2 와 같은 지 판단 하기
문자열 1! =문자열 2
문자열 1 이 문자열 2 와 같 지 않 은 지 판단 하기
// name
[root@VM_47_240_centos ~]# [ -z "$name" ]&&echo "NULL"||echo "no"
no
[root@VM_47_240_centos mq]# ./shell.sh
!=
[root@VM_47_240_centos mq]# cat shell.sh
#!/bin/bash
aa=1//
bb=2
# aa bb , !=
[ "$aa" == "$bb" ] && echo "="||echo "!="
다 중 조건 판단
옵션
역할.
판단 1 - a 판단 2
논리 와 판단 1 과 판단 2 가 모두 성립 되 어야 최종 결과 가 진실 된다.
판단 1 - o 판단 2
논리 나 판단 이 성립 되면 결 과 는 진실 이다.
!판 가름
논리
[root@VM_47_240_centos ~]# [ -n "aa" -a 24 -gt 26 ]&& echo "yes"||echo no
no aa 24 26 no
[root@VM_47_240_centos ~]# [ -n "aa" -a 27 -gt 26 ]&& echo "yes"||echo no
yes
5. 흐름 제어
if
if [조건];then 프로그램 fi 또는 if [조건 판단 식] then 프로그램 fi
case
for
while######xxxx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.