IPv6로 의 전환은 IPv4만 지원하는 장비가 아직 존재해서 하지않고 있음.
※ 2001:1:1:1:0:0:0:1/64
=> IPv6주소는 8개의 필드 128개의 비트로 되어 있어 주소 형태가 길다.
=> 주소를 조금 줄여서 쓸 수 있는 방법
1) 연속 된 0은 단 한번 ::으로 대체
2) 앞의 0은 생략 가능(중간 또는 마지막 0은 생략 불가)
=> 위의 내용을 적용하면 2001:1:1:1::1/64
그러나 만약 ::0a2d:41c3:: 이런주소 있다면 잘못된 형태!!
1) 0:0:0a2d:41c3:0:0:0:0
2) 0:0:0:0a2d:41c3:0:0:0
3) 0:0:0:0:0:a2d:41c3:0:0
=> 경우의 수가 많아서 제대로 된 주소를 사용할 수 없음!
=> 연속 된 0은 단 한번 ::으로 대체해야 한다!
FDEC:BA90:0074:000F:BBFF:1011:0000:FFFF
=> 줄여쓰면 FDEC:BA90:74:F:BBFF:1011:0:FFF
=> 중간에 있는 0또는 마지막에 있는 0은 생략이 불가능
=> 0000 이 있는 필드는 하나의 0은 써줘야 함.
사용자(애플리케이션), 셸(Shell), 커널, 하드웨어
echo $SHELL
=> 편집기(vi또는 emacs) 사용
=> 파일명은 자유롭게 지정
=> 파일명의 확장자는 .sh를 사용
=> 파일명에 한글이나 공백문자가 들어가면 문제가 발생
vi showuser.sh
#!/bin/sh
echo "사용자 이름 : " $USER
echo "호스트 이름 : " $HOSTNAME
exit
:wq
ls
=> showuser.sh
file showuser.sh
1) sh 명령어 사용
2) '실행 가능' 상태로 변경 후 실행
sh showuser.sh
=>
사용자 이름 : root
호스트 이름 : localhost.localdomain
cp showuser.sh /home/itwill/
su - itwill
pwd
=> /home/itwill
※ su 명령어 사용 시 '-' 옵션을 붙여야 홈 디렉터리로 이동
ls -l showuser.sh
Permisson(권한): rw- r-- r--
rw- : 소유자(root)
r-- : 소유그룹(root)
r-- : 그 밖의 사람(itwill)
chmod +x showuser.sh
chmod: changing permissions of `showuser.sh': 명령을 허용하지 않음
=> showuser.sh 의 소유자가 root 이므로 itwill 계정으로는 변경 불가능!
exit
=> itwill 계정을 로그아웃!
(root 계정으로)
chmod +x /home/itwill/showuser.sh
su - itwill
showuser.sh
=> bash: showuser.sh: 명령을 찾을 수 없습니다...
=> 실행파일로 변경된 showuser.sh를 명령어로 인식
./showuser.sh
(= /home/itwill/showuser.sh)
=> 실행권한이 있는 스크립트 파일을 sh 명령어 없이
실행하고자 할 때는 '절대경로' 형태로 입력!!
※ 절대 경로 : 파일 명 앞에 '/' 으로 시작
=> env
or printenv
또는 set
명령어 사용
export 환경변수=값
su - itwill
env
=> HOME=/home/itwill
=> ~ : /home/itwill
export HOME=/home
=> 홈 디렉터리를 /home 변경
cd /var/www/html
=> 위치를 /var/www/html로 이동
cd
=> 홈 디렉터리로 이동
=> pwd를 하면 /home이 출력됨!
다시 홈 디렉터리를 /home/itwill로 변경하려면
export HOME=/home/itwill
myname = KJS
=> bash: myname: 명령을 찾을 수 없습니다...
=> 띄어쓰기 금지!
myname=KJS
echo $myname
=> KJS 가 출력
myname="Kang Jin Seok"
echo $myname
=> "Kang Jin Seok"
myname=1+1
echo $myname
=> 1+1
echo $변수명
으로 출력vi myname.sh
#!/bin/sh
myname="Kang Jin Seok"
echo $myname
echo "$myname"
echo '$myname'
echo \$myname
echo 값 입력 :
read myname
echo '$myname' = $myname
exit 0
:wq
vi ID.sh
#!/bin/sh
echo -n "Enter your ID : "
read id
echo -n "Enter your NAME : "
read name
echo -n "Enter your NUMBER : "
read number
echo "Now your ID is $id."
echo "NAME : $name , NUMBER : $number"
:wq
sh ID.sh
[if]
기본 문법
if [ 조건 ]
then
참일 경우 실행
fi
=> '[' 앞 뒤 공백 필요!
=> 마지막에 'fi' 끝내야 함
vi if1.sh
#!/bin/sh
if [ "itwill" = "itwill" ]
then
echo "참 입니다."
fi
exit 0
:wq
if [ 조건 ]
then
참일 경우 실행
else
거짓일 경우 실행
fi
vi if2.sh
#!/bin/sh
if [ "itwll" != "itwill" ]
then
echo "참 입니다."
else
echo "거짓 입니다."
fi
exit 0
= : 두 문자열이 같으면 참
!= : 두 문자열이 같지 않으면 참
-n : 문자열이 NULL(빈 문자열)이 아니면 참
-z : 문자열이 NULL(빈 문자열)이면 참
-eq : 두 수식(또는 변수)이 같으면 참
-ne : 두 수식(또는 변수)이 같지 않으면 참
수식 1 -gt 수식2 : 수식1이 크다면 참
수식 1 -ge 수식2 : 수식1이 크거나 같으면 참
수식 1 -lt 수식2 : 수식1이 작으면 참
수식 1 -le 수식2 : 수식1이 작거나 같으면 참
!수식 : 수식이 거짓이라면 참
vi if3.sh
#!/bin/sh
if [ 100 -eq 200 ]
then
echo "100과 200은 같다."
else
echo "100과 200은 다르다."
fi
exit 0
if [ 조건 ]
then 명령어
elif [ 조건 ]
then 명령어
else 명령어
fi
A와 B의 값을 입력받아
1) 비교값이 같을 때
2) A가 B보다 클 때
3) A가 B보다 작을 때
각각의 조건에 따른 결과값을 출력
셸 스크립트 작성
#!/bin/sh
echo -n "A : "
read A
echo -n "B : "
read B
if [ $A -eq $B ]
then
echo "A is equal to B"
elif [ $A -gt $B ]
then
echo "A is greater than B"
elif [ $A -lt $B ]
then
echo "A is less than B"
fi
-d 파일이름 : 파일이 디렉터리면 참
-e 파일이름 : 파일이 존재하면 참
-f 파일이름 : 파일이 일반 파일이면 참
-g 파일이름 : 파일에 set-group-id가 설정되어 있으면 참
-r 파일이름 : 파일이 읽기 기능이면 참
-w 파일이름 : 파일이 쓰기 가능한 상태이면 참
-x 파일이름 : 파일이 실행 가능한 상태이면 참
-s 파일이름 : 파일 크기가 0이 아니면 참
-u 파일이름 : 파일에 set-user-id가 설정되어 있으면 참
vi if4.sh
#!/bin/sh
if [ -d "/root/test" ]
then
if [ -e "/root/test/newfile.txt" ]
then
echo "파일이 존재합니다."
else
touch /root/test/newfile.txt
fi
else
echo "/root/test 디렉터리가 존재하지 않습니다."
fi
exit 0
:wq
Q. /root/test/newfile.txt 파일이 존재하는지 확인하고
파일이 없다면 "파일이 없습니다" 를 출력하고
만약 파일이 존재하는 경우 이 파일의 크기가 0인지 확인한 후
0이 아니라면 "비어있는 파일이 아닙니다."를
0이라면 어떤 문자든(자유롭게) 입력받아 내용을 추가하는
셸 스크립트를 작성해보자.
Hint) 내용 추가 시 리다이렉트 기호 사용 ('>>')
if [ -f /root/test/newfile.txt ]
then
if [ -s /root/test/newfile.txt ]
then
echo "비어있는 파일이 아닙니다!"
else
echo "파일이 비어있습니다."
echo -n "추가할 문자를 입력하세요. : "
read TEXT
echo $TEXT > /root/test/newfile.txt
fi
else
echo "파일이 없습니다!"
fi