IT/RHEL
[RHCE] Bash Scripting
트래이닝맨
2014. 8. 7. 15:04
728x90
반응형
3.Bash Scripting
*인용
=====
# export ABC=test
# echo ${ABC}
# echo $ABC
test
#echo $(date)
#echo `date`
#echo "$(date)"
*for문
======
for var in a b c;do
command1;
command2;
done
*if 문
======
종료상태값 확인 : echo $?
0 :정상/ 1:비정상 / 2:에러(grep만)
0 - grep root /etc/passwd
root:~~~~~
1 - grep ROOT /etc/passwd
#
2 - grep root /etc/passwdd
grep: /etc/passwdd: No such file or directory
*인용
=====
# export ABC=test
# echo ${ABC}
# echo $ABC
test
#echo $(date)
#echo `date`
#echo "$(date)"
*for문
======
for var in a b c;do
command1;
command2;
done
*if 문
======
종료상태값 확인 : echo $?
0 :정상/ 1:비정상 / 2:에러(grep만)
0 - grep root /etc/passwd
root:~~~~~
1 - grep ROOT /etc/passwd
#
2 - grep root /etc/passwdd
grep: /etc/passwdd: No such file or directory
*tty
=====
echo test >&1
echo test > /dev/pts/0
출력할 화면을 지정한다.
*read문
======
read -p 'Enter your first and last name: ' FIRST SECOND
echo $FIRST($1)
echo $SECOND($2)
$# => 총 Argument count
$@ => 모든 Arguments
텍스트처리도구
===========
*diff
해석방법 : diff A B
A가 B와 같아지려면
1c1
< name
------
> Lee
A의 1번라인이 B의 1번라인과 같게 변경하면된다.
sdiff
diff3
*PATCH
=====
echo test >&1
echo test > /dev/pts/0
출력할 화면을 지정한다.
*read문
======
read -p 'Enter your first and last name: ' FIRST SECOND
echo $FIRST($1)
echo $SECOND($2)
$# => 총 Argument count
$@ => 모든 Arguments
텍스트처리도구
===========
*diff
해석방법 : diff A B
A가 B와 같아지려면
1c1
< name
------
> Lee
A의 1번라인이 B의 1번라인과 같게 변경하면된다.
sdiff
diff3
*PATCH
======
diff -u f1 f3 > mypatch1
patch f1 mypatch1
만약에 백업을 남기고 싶으면 patch -b f1 mypatch1
보면 f1.orig 파일이 남아 있다.
diff -u f1 f3 > mypatch1
patch f1 mypatch1
만약에 백업을 남기고 싶으면 patch -b f1 mypatch1
보면 f1.orig 파일이 남아 있다.
patch fi <mypatch1 ( 다시 원복할때)
*sort
=====
-n 숫자정렬
-k 정렬필드
-t 구분자
sort -t: -k3 -n /etc/passwd
*uniq
=====
-u 고유한 행
-d 중복 항목이 있는 행
-c 각 행을 항목 수에 한번 표시
*tr
=====
대/소문자 변경때 사용
echo -n 'Enter yes or no: '
read answer
answer="$(echo $answer|tr 'A-Z' 'a-z')"
echo answer
Yes ==> yes
*sed
=====
ex)
sed 's/cat/dog' pets
sed 's/cat/dog/g' pets
sed 's/cat/dog/gi' pets (i= ignore cae)
sed '10,35s/cat/dog/' pets 줄라인 지정
sed '1,25d' pets 라인수지정 삭제
sed -e 's/cat/dog/g' -e /s/cow/goat/g' pets
*sort
=====
-n 숫자정렬
-k 정렬필드
-t 구분자
sort -t: -k3 -n /etc/passwd
*uniq
=====
-u 고유한 행
-d 중복 항목이 있는 행
-c 각 행을 항목 수에 한번 표시
*tr
=====
대/소문자 변경때 사용
echo -n 'Enter yes or no: '
read answer
answer="$(echo $answer|tr 'A-Z' 'a-z')"
echo answer
Yes ==> yes
*sed
=====
ex)
sed 's/cat/dog' pets
sed 's/cat/dog/g' pets
sed 's/cat/dog/gi' pets (i= ignore cae)
sed '10,35s/cat/dog/' pets 줄라인 지정
sed '1,25d' pets 라인수지정 삭제
sed -e 's/cat/dog/g' -e /s/cow/goat/g' pets
(문제)
1> nologin을 포함하는 행삭제
sed '/nologin/d' /etc/passwd
2> bash 패턴을 ksh로 치환
sed 's/bash/ksh/g' /etc/passwd
sed -n 's/bash/ksh/p' /etc/passwd ==> 변경된 내용만 보고싶을때
-n ==> 디폴트 출력을 하지 않겠다.(출력될 스트링이 명령어가 아닐때 모든것은 출력)
3>bin 패턴은 BIN으로
nologin 패턴은 NOLOGIN으로
1~10행까지
sed -n '1,10s/bin/BIN/gp' mypass |sed 's/nologin/NOLOGIN/'
*Regular Expression
1> nologin을 포함하는 행삭제
sed '/nologin/d' /etc/passwd
2> bash 패턴을 ksh로 치환
sed 's/bash/ksh/g' /etc/passwd
sed -n 's/bash/ksh/p' /etc/passwd ==> 변경된 내용만 보고싶을때
-n ==> 디폴트 출력을 하지 않겠다.(출력될 스트링이 명령어가 아닐때 모든것은 출력)
3>bin 패턴은 BIN으로
nologin 패턴은 NOLOGIN으로
1~10행까지
sed -n '1,10s/bin/BIN/gp' mypass |sed 's/nologin/NOLOGIN/'
*Regular Expression
=================
*의 의미
shell : 모든것
RE : 선행패턴과 0번이상 일치하는
예) lve
love
looove
#grep 'lo*ve' test ==>모두 잡아낸다.
lve
love
looove
*암호수명
=======
/etc/shadow 개인별로 적용되는 날짜 (가장 우선)
/etc/login.defs 전체적으로 적용되는 날짜
PASS_MIN_DAYS 최소 암호사용기간 (바로바로 변경이 불가능)
root의 aging을 확인
#chage -l root
root의 Max Aging을 90으로 변경
#chage -M 90 root
/etc/default/useradd
최초 user가 생성될때 적용되는 것들.
왜 매번 user가 생성될때마다 그룹이 생성이 되는가?
(/etc/login.defs file에 USERGROUPS_ENAB Yes로 되어 있기 때문이다.)
*의 의미
shell : 모든것
RE : 선행패턴과 0번이상 일치하는
예) lve
love
looove
#grep 'lo*ve' test ==>모두 잡아낸다.
lve
love
looove
*암호수명
=======
/etc/shadow 개인별로 적용되는 날짜 (가장 우선)
/etc/login.defs 전체적으로 적용되는 날짜
PASS_MIN_DAYS 최소 암호사용기간 (바로바로 변경이 불가능)
root의 aging을 확인
#chage -l root
root의 Max Aging을 90으로 변경
#chage -M 90 root
/etc/default/useradd
최초 user가 생성될때 적용되는 것들.
왜 매번 user가 생성될때마다 그룹이 생성이 되는가?
(/etc/login.defs file에 USERGROUPS_ENAB Yes로 되어 있기 때문이다.)
반응형