1. echo
- echo $VAR, echo "$VAR", echo "${VAR}" 모두 동일한 기능 수행
- 큰따옴표(")를 쓰면 $a의 실제 값을 출력할 수 있고(변수의 값) 작은따옴표(')를 쓰면 그냥 $a이란 문자열 자체를 출력
2. 특정 라인 출력
1) head 와 tail 명령어를 응용하여 출력
① 범위 출력
25~30번째 줄 출력하고 싶을 때, 다중 명령어를 사용하여 결과값 출력
# head -30 test | tail -6
test 파일의 맨 앞부터 20번째 줄까지 출력하는 결과에서 뒤에서 5째줄까지만 출력
② 특정 라인 출력
21번째 줄을 출력
# head -19 test | tail-1
test 파일의 맨 앞부터 19번째 줄까지 출력하는 결과에서 뒤에서 1줄만 출력
2) sed 명령어를 사용하여 출력
① 범위 출력
16~20번째 줄 출력
# sed -n '16, 20p' test
② 특정 라인 출력
15번째 줄을 출력하고 싶을 때
# sed -n 15p test
③ 특정 행부터 파일 끝까지 출력하고 싶을 때
20번째 줄부터 파일 끝까지 출력
# sed -n '20, $p' test
or
# sed -n "20, \$p" test
여기는 쌍따옴표를 사용하여 '$'문자가 마지막을 의미할 수 있게 역슬래시를 붙여서 특수 문자의
의미를 그대로 지켜줄 수 있게 해준 것입니다.
그렇지 않으면 이 '$'문자가 변수를 나타내는 뜻으로 해석
3) awk 명령어를 사용하여 출력
① 범위 출력
16~20번째 줄 출력하고 싶을 때
# awk "NR >= 16 && NR <= 20" test
② 특정 라인 출력
19번째 줄을 출력하고 싶을 때
# awk 'NR==19' test
③ 특정 행부터 파일 끝까지 출력하고 싶을 때
80번째 줄부터 파일 끝까지 출력하고 싶을 때
# awk "NR >= 80" test
3. 설정파일(conf)에 내용 입력
cat << EOF > [파일 경로]
[내용1]
[내용2]
[내용3]
[내용4]
[내용5]
EOF
※ 마지막 EOF 앞에 공백이 있으면 안됨 (tab 포함)
cat <<EOF > /etc/memcached.conf
-d
logfile /var/log/memcached.log
-m 64
-p 11211
-u memcache
-l 0.0.0.0
-c 4096
EOF
4. 변수에 사용자 입력 받기
① echo와 read 조합
프롬프트 부분과 문자 입력 부분을 확실하게 구분할 있고, 프롬프트의 문자 색을 변경할 수 있다는 장점
echo -n " 입력하세요 : "
read var
② read만 사용
read -p "입력하세요 : "
5. 함수 만들기
함수 명()
{
명령어1
명령어2
}
#IP 받아오는 함수
getIP()
{
i=`cat ~/DB | grep -i $1 | awk '{print $1}'`
echo $i
}
6. 계속 입력받기 (while문)
while [ "$KEY" = "" -o "$KEY" = "y" -o "$KEY" = "Y" ]
do
echo -n " Node name : "
read NODE
if [ "$NODE" = "" ]; then
continue
fi
echo -n " IP : "
read IP
if [ "$IP" = "" ]; then
continue
fi
echo "${IP} ${NODE}" >> /etc/hosts
echo "${IP} ${NODE}" >> ~/DB
#sort -o $DB $DB
echo -n "계속 입력 하겠습니까? (y/n) (default=y) : "
read KEY
done
7. Case문
while :
do
echo "Menu:"
echo "1) Control Node"
echo "2) Compute Node"
echo "3) Network Node"
echo "4) Storage Node"
read node_sel
case $node_sel in
1)
node_sel=0
break
;;
2)
if [ $(cat ~/DB | grep compute* | wc -l) -ne 1 ]; then
echo -n "/etc/hosts에 등록한 compute노드 입력하세요: "
read comnode
else
comnode=$(cat ~/DB | grep compute* | awk '{print $2}')
fi
node_sel=1
break
;;
3)
node_sel=2
break
;;
4)
node_sel=3
break
;;
*)
echo "Error: Unknown Command"
;;
esac
done
8. 이전 실행이 성공했는지 확인
설치가 잘됐는지 확인할때 사용
#설치 체크
if [ "$?" -eq 0 ]; then
echo ' '
echo '----------------------------------------------------------------'
echo '-------------Openstack Package install Success------------------'
echo '----------------------------------------------------------------'
echo ' '
else
echo ' '
echo '----------------------------------------------------------------'
echo '---------------Openstack Package install fail-------------------'
echo '----------------------------------------------------------------'
echo ' '
fi
※ 특수 파라미터
$* | 1부터 시작하는 위치 파라미터의 확장, 큰 따옴표로 구분하고 IFS 특수 변수의 첫 문자로 구분되는 각 파라미터의 값으로 하나의 단어를 확장하며, 전체 파라미터값을 가지고 있다. 만약 IFS가 NULL이거나 해제되어 잇으면 파라미터는 스페이스로 구분 |
$@ | 1부터 시작하는 위치 파라미터의 확장이며, 큰 따옴표로 확장되면 각 파라미터는 하나의 구분 단어로 확장되고, 전체 파라미터값을 가짐 |
$# | 십진수의 위치 파라미터 전체 개수를 의미 |
$? | 최근 실행된 포그라운드 파이프라인의 종료상태를 가지고 있음(0은 정상적으로 종료) |
$- | 실행하자마자 set 내장명령을 통해 또는 쉘 자체에 의해 설정된 현재 옵션 플래그로 확장 |
$$ | 현재 쉘의 프로세스 ID |
$! | 가장 최근에 백그라운드로 실행된 프로세스의 ID를 가지고 있음 |
$0 | 쉘 또는 쉘 스크립트의 이름을 가지고 있음 |
$1,$2...$n | 스크립트에 넘겨진 n번째 아규먼트 |
$_ | 마지막 인수를 출력 |
$0, $1~$n
쉘 스크립트 이름 = test.sh
아규먼트 = 인수 = 인자 = 파라미터 = Alice, Bob, Carol
$0 : test.sh
$1 : Alice
$2 : Bob
$3 : Carol
$# : 3
#!/bin/bash
echo "스크립트 이름 : $0"
echo "첫번째 파라미터 : $1"
echo "두번째 파라미터 : $2"
echo "세번째 파라미터 : $3"
echo "파라미터 개수: $#"
echo "전체 파라미터 : $*"
echo "전체 파라미터 : $@"
7. 리눅스 쉘에서 DB명령어
mysql -e "[DB명령어]"
mysql -e "UPDATE mysql.user SET password = password('1234') WHERE user = 'root';"
mysql -e "UPDATE mysql.user SET plugin='mysql_native_password' WHERE user='root';"
mysql -e "FLUSH PRIVILEGES;"
DB에 패스워드 설정되있는경우
mysql -u[DB계정] -p[DB패스워드] -e "[DB 명령어]"
mysql -uroot -p1234 -e "CREATE DATABASE cinder;"
mysql -uroot -p1234 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'cinder'@'localhost' IDENTIFIED BY '$Open_Pass';".
mysql -uroot -p1234 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'cinder'@'%' IDENTIFIED BY '$Open_Pass';"
mysql -uroot -p1234 -e "FLUSH PRIVILEGES;"
9. 문자열
# vi DB
1.1.1.1 controller
2.2.2.2 compute01
3.3.3.3 compute02
4.4.4.4 cinder
5.5.5.5 neutron
1) 문자열 추출
① controller의 아이피 찾기
# cat DB | grep -i control* | awk '{print &1}'
'리눅스' 카테고리의 다른 글
[리눅스]리눅스 명령어 사전 (0) | 2024.05.20 |
---|---|
[리눅스] 로그 분석 및 도구 (0) | 2022.08.12 |
[Container]LXC (0) | 2021.07.09 |
[리눅스] 우분투 X-Window 설치 (0) | 2021.07.08 |
리눅스 보안 점검(CCE 점검) (0) | 2021.04.28 |