Shell Script
Shell Script
======================================================
반달가면 리눅스 bash script (IFS=$'\n참고)
텍스트파일처리 명령어
유닉스 쉘(Unix Shell)
Bash 입문자를 위한 핵심 요약 정리 (Shell Script)
고급 Bash 스크립팅 가이드
쉘 스크립트에서 날짜 형식을 사용하는 방법
쉘스크립트 기초
리눅스 시스템 시작시에 자동 실행할 파일 등록하기
a=`ls -l`
for ii in "aaaa"
do
echo "${a}""${ii}"
done
echo "$(ls -l)"
======================================================
반복문에서 숫자 출력 자릿수 일정하게 맞추기
for ii in $(seq -f %03g 0 50 150)
do
echo ${ii}
done
반달가면 리눅스 bash script (IFS=$'\n참고)
텍스트파일처리 명령어
유닉스 쉘(Unix Shell)
Bash 입문자를 위한 핵심 요약 정리 (Shell Script)
고급 Bash 스크립팅 가이드
쉘 스크립트에서 날짜 형식을 사용하는 방법
쉘스크립트 기초
리눅스 시스템 시작시에 자동 실행할 파일 등록하기
a=`ls -l`
for ii in "aaaa"
do
echo "${a}""${ii}"
done
echo "$(ls -l)"
======================================================
반복문에서 숫자 출력 자릿수 일정하게 맞추기
for ii in $(seq -f %03g 0 50 150)
do
echo ${ii}
done
====sed 및 awk참고===============================
shell에서 문자열 치환
Sed 명령어
sed 및 awk 사용법
쉘스크립트로 특정명령어중에서 원하는 문자열만 출력
sed 및 awk참고
sed 명령 특수문자 이용은 ₩(역슬러쉬)를 쓰면됨 가령 / 쓸때 ₩/
예 cat file.txt | sed 's/^/₩/aaa/'
공백중 탭공백 삭제sed -e 's/\t//g'
1~8번 줄까지 삭제 sed -e '1,8d'
모든 공백라인 제거 sed -e '/^$/d'
스페이스 공백까지 제거 sed -e '/^ *$/d'
====vi 편집기 참고===============================
1. vi 편집기 들어가 있는 상태에서 라인의 맨 앞에 삽입할 내용( aaa ) 를 다음과 같이 명령어로 입려
:%s/^/aaa/g
2. 라인의 맨 뒤에 특정 단어를 추가하고자 할 경우
vi test.txt
:%s/$/aaa/g
shell에서 문자열 치환
Sed 명령어
sed 및 awk 사용법
쉘스크립트로 특정명령어중에서 원하는 문자열만 출력
sed 및 awk참고
sed 명령 특수문자 이용은 ₩(역슬러쉬)를 쓰면됨 가령 / 쓸때 ₩/
예 cat file.txt | sed 's/^/₩/aaa/'
공백중 탭공백 삭제sed -e 's/\t//g'
1~8번 줄까지 삭제 sed -e '1,8d'
모든 공백라인 제거 sed -e '/^$/d'
스페이스 공백까지 제거 sed -e '/^ *$/d'
====vi 편집기 참고===============================
1. vi 편집기 들어가 있는 상태에서 라인의 맨 앞에 삽입할 내용( aaa ) 를 다음과 같이 명령어로 입려
:%s/^/aaa/g
2. 라인의 맨 뒤에 특정 단어를 추가하고자 할 경우
vi test.txt
:%s/$/aaa/g
====tr 참고===============================
tr을 이용하여 text 바꾸기
ls | tr '\n' ','
====grep 참고===============================
다중 문자열 검색
(A and B)
cat file.txt | grep A | grep B
(A or B)
cat file.txt | grep -A 9 today <---- * today가 들어가는 줄포함 아래로 9줄 보여라
cat file.txt | grep -B 4 today <---- * today가 들어가는 줄포함 위로 4줄 보여라
cat file.txt | grep -A 9 -B 4 today <---- * today가 들더가는 줄포함 아래로 9줄, 위로 4줄 보여라
cat file.txt | grep "A\|B" <---- * \를 사용!
cat file.txt | grep -E "A|B" <---- * E옵션을 사용!
cat file.txt | egrep "A|B" <---- * egrep 사용!
예) ls -lR | grep -v "^d\|^./" <---- * d또는./로 시작하는 라인 검색!
예) ls -lR | grep -Ev "^d|^./" <---- * d또는./로 시작하는 라인 검색!
예) ls -lR | egrep "^d|^./" <---- * d또는./로 시작하는 라인 검색!
tr을 이용하여 text 바꾸기
ls | tr '\n' ','
====grep 참고===============================
다중 문자열 검색
(A and B)
cat file.txt | grep A | grep B
(A or B)
cat file.txt | grep -A 9 today <---- * today가 들어가는 줄포함 아래로 9줄 보여라
cat file.txt | grep -B 4 today <---- * today가 들어가는 줄포함 위로 4줄 보여라
cat file.txt | grep -A 9 -B 4 today <---- * today가 들더가는 줄포함 아래로 9줄, 위로 4줄 보여라
cat file.txt | grep "A\|B" <---- * \를 사용!
cat file.txt | grep -E "A|B" <---- * E옵션을 사용!
cat file.txt | egrep "A|B" <---- * egrep 사용!
예) ls -lR | grep -v "^d\|^./" <---- * d또는./로 시작하는 라인 검색!
예) ls -lR | grep -Ev "^d|^./" <---- * d또는./로 시작하는 라인 검색!
예) ls -lR | egrep "^d|^./" <---- * d또는./로 시작하는 라인 검색!
====쉘스크립트로 메일 보내기===============================
linux-mail-command-examples/
shell-script-to-send-email
자동 백업을 위한 간단한 쉘(Shell) 스크립트 - 메일발송까지
1. apt-get install mailutils
2. echo "hello world" | mail -s "a subject" someone@somewhere.com
3. echo "This is the message body test" | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
4. echo "HTML로메일 보내기" | mail -s "$(echo -e "This is the subject\nContent-Type: text/html")" to@gmail.com -a From:from@gmail.com
====랜덤문자만들기===============================
bash.generate.random.alphanumeric.string.sh
쉘 스크립트 진짜 랜덤 숫자 만들기
aaa=$(cat /dev/urandom | tr -dc [:print:] | tr -d '[:space:]\042\047\134' | fold -w 4 | head -n 1)
echo $aaa
랜덤문자 메일로보내기
aaa=$(cat /dev/urandom | tr -dc [:print:] | tr -d '[:space:]\042\047\134' | fold -w 4 | head -n 1)
echo $aaa | mail -s "a subject" to@gmail.com -a From:from@gmail.com
linux-mail-command-examples/
shell-script-to-send-email
자동 백업을 위한 간단한 쉘(Shell) 스크립트 - 메일발송까지
1. apt-get install mailutils
2. echo "hello world" | mail -s "a subject" someone@somewhere.com
3. echo "This is the message body test" | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
4. echo "HTML로메일 보내기" | mail -s "$(echo -e "This is the subject\nContent-Type: text/html")" to@gmail.com -a From:from@gmail.com
====랜덤문자만들기===============================
bash.generate.random.alphanumeric.string.sh
쉘 스크립트 진짜 랜덤 숫자 만들기
aaa=$(cat /dev/urandom | tr -dc [:print:] | tr -d '[:space:]\042\047\134' | fold -w 4 | head -n 1)
echo $aaa
랜덤문자 메일로보내기
aaa=$(cat /dev/urandom | tr -dc [:print:] | tr -d '[:space:]\042\047\134' | fold -w 4 | head -n 1)
echo $aaa | mail -s "a subject" to@gmail.com -a From:from@gmail.com
====주식가격 실시간 가져오기===============================
shell에서 문자열 치환
Pandas 에서 주가 데이터 가져오기 - 코스피 지수
stock.sh
wget -q -O - http://www.google.com/finance?q=KRX:005930 | grep ref_ -m 1 | sed 's|<[^>]*>||g'
wget -q -O - http://www.google.com/finance?q=KRX:034020 | grep ref_ -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/...$//'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed 's|<[^>]*>||g' | sed 's/,//'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/원//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's/<[^>]*>//g' -e 's/,//' -e 's/원//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=010140 | grep -A 9 no_today -m 1 | sed -e 's/<[^>]*>//g' -e '1,8d' -e 's/,//' -e '/^$/d' -e '/^ *$/d' -e 's/원//' -e 's/\t//g'
공백중 탭공백 삭제sed -e 's/\t//g'
1~8번 줄까지 삭제 sed -e '1,8d'
모든 공백라인 제거 sed -e '/^$/d'
스페이스 공백까지 제거 sed -e '/^ *$/d'
=====다른파일에서 데이타 가져오기==============================
Bash 변수 다른 스크립트로 전달
a="$(cat test/.my_data.txt)"
# .my_data.txt에 0을 넣어둠 b='0'
if [ "$a" = "$b" ]
then echo "0이 맞습니다." # | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
else echo "0이 아닙니다." # | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
fi
shell에서 문자열 치환
Pandas 에서 주가 데이터 가져오기 - 코스피 지수
stock.sh
wget -q -O - http://www.google.com/finance?q=KRX:005930 | grep ref_ -m 1 | sed 's|<[^>]*>||g'
wget -q -O - http://www.google.com/finance?q=KRX:034020 | grep ref_ -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/...$//'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed 's|<[^>]*>||g' | sed 's/,//'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's|<[^>]*>||g' -e 's/,//' -e 's/원//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=034020 | grep no1 -m 1 | sed -e 's/<[^>]*>//g' -e 's/,//' -e 's/원//' -e 's/\t//g'
wget -q -O - http://finance.naver.com/item/main.nhn?code=010140 | grep -A 9 no_today -m 1 | sed -e 's/<[^>]*>//g' -e '1,8d' -e 's/,//' -e '/^$/d' -e '/^ *$/d' -e 's/원//' -e 's/\t//g'
공백중 탭공백 삭제sed -e 's/\t//g'
1~8번 줄까지 삭제 sed -e '1,8d'
모든 공백라인 제거 sed -e '/^$/d'
스페이스 공백까지 제거 sed -e '/^ *$/d'
=====다른파일에서 데이타 가져오기==============================
Bash 변수 다른 스크립트로 전달
a="$(cat test/.my_data.txt)"
# .my_data.txt에 0을 넣어둠 b='0'
if [ "$a" = "$b" ]
then echo "0이 맞습니다." # | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
else echo "0이 아닙니다." # | mail -s "This is the subject" to@gmail.com -a From:from@gmail.com
fi
====압축파일 압축,풀기===============================
tar, gz, zip 압축 및 압축 해제
unzip -P password ./file.zip
====구글드라이브 파일다운===============================
wget -O xxx.zip "https://drive.google.com/uc?export=download&id=0B3lyEYssvPFTTTNNd0p0U2JjdTA"
-참고-
구글 공유링크를 다운로드링크로 변환
https://drive.google.com/file/d/0B3lyEYssvPFTTTNNd0p0U2JjdTAA/view?usp=sharing
위를 빨간부분을 아래의 파란코드 뒤로 복사
https://drive.google.com/uc?export=download&id=0B3lyEYssvPFTTTNNd0p0U2JjdTAA
=====심볼릭링크 symbolic link==============================
리눅스 심볼릭링크 생성 실습
ln -s 원본파일 링크파일
tar, gz, zip 압축 및 압축 해제
unzip -P password ./file.zip
====구글드라이브 파일다운===============================
wget -O xxx.zip "https://drive.google.com/uc?export=download&id=0B3lyEYssvPFTTTNNd0p0U2JjdTA"
-참고-
구글 공유링크를 다운로드링크로 변환
https://drive.google.com/file/d/0B3lyEYssvPFTTTNNd0p0U2JjdTAA/view?usp=sharing
위를 빨간부분을 아래의 파란코드 뒤로 복사
https://drive.google.com/uc?export=download&id=0B3lyEYssvPFTTTNNd0p0U2JjdTAA
=====심볼릭링크 symbolic link==============================
리눅스 심볼릭링크 생성 실습
ln -s 원본파일 링크파일
=====sh 와 ./ 의차이==============================
sh 와 bash의 차이점
bash script 에서 source 명령이 안될 때
sh 와 bash 차이
=====선택문 ==============================
Help With Loop in Case Statement script
while true
do
echo "Would you like to:"
echo "1) See your name"
echo "2) See your current directory"
echo "3) See your home directory"
echo "4) Quit"
echo -n ">> "
read case
case "$case" in
1) echo "username";;
2) echo "$PWD";;
3) echo "$HOME";;
4) break;;
esac
done
===== 파일 존재 유무확인==============================
shell script if 예제 (파일 존재 유무 확인)
shell script (bash) 에서 file 유무 체크하는 방법
FILENAME=$1
if [ -f "$FILENAME" ] ; then
echo "file exist"
else
echo "file not exist"
fi
sh 와 bash의 차이점
bash script 에서 source 명령이 안될 때
sh 와 bash 차이
=====선택문 ==============================
Help With Loop in Case Statement script
while true
do
echo "Would you like to:"
echo "1) See your name"
echo "2) See your current directory"
echo "3) See your home directory"
echo "4) Quit"
echo -n ">> "
read case
case "$case" in
1) echo "username";;
2) echo "$PWD";;
3) echo "$HOME";;
4) break;;
esac
done
===== 파일 존재 유무확인==============================
shell script if 예제 (파일 존재 유무 확인)
shell script (bash) 에서 file 유무 체크하는 방법
FILENAME=$1
if [ -f "$FILENAME" ] ; then
echo "file exist"
else
echo "file not exist"
fi
====1초 마다 특정 작업을 하는 스크립트===============================
1초 마다 특정 작업을 하는 스크립트
#!/bin/bash
### Script Ending time configuration
DATE=`date +%Y%m%d%H`
# Date is 2011090713 this is HOUR setting
#DATE=`date +%Y%m%d%H%M`
# Date is 201109071314 if you want minute setting used this line alse modify the ENDTIME line
ENDTIME=2011090714
### base config
COUNT=0
DIR=$PWD
### loop stage
while true
do
if [ $ENDTIME -eq $DATE ]
then
exit 1 # exit script
else
## Command input stage
ifconfig | tee -a $DIR/Result_$DATE.txt
#echo $DATE > $DIR/Result_$DATE.txt
## Command ending
COUNT=`expr $COUNT + 1`
echo $COUNT >> $DIR/Result_$DATE.txt
sleep 1
fi
done
1초 마다 특정 작업을 하는 스크립트
#!/bin/bash
### Script Ending time configuration
DATE=`date +%Y%m%d%H`
# Date is 2011090713 this is HOUR setting
#DATE=`date +%Y%m%d%H%M`
# Date is 201109071314 if you want minute setting used this line alse modify the ENDTIME line
ENDTIME=2011090714
### base config
COUNT=0
DIR=$PWD
### loop stage
while true
do
if [ $ENDTIME -eq $DATE ]
then
exit 1 # exit script
else
## Command input stage
ifconfig | tee -a $DIR/Result_$DATE.txt
#echo $DATE > $DIR/Result_$DATE.txt
## Command ending
COUNT=`expr $COUNT + 1`
echo $COUNT >> $DIR/Result_$DATE.txt
sleep 1
fi
done
==================
************************************
==================
************************************
==================
************************************
==================
************************************
댓글 없음:
댓글 쓰기