실습환경 구성하기
wget, git, curl, vim을 설치한다.
yum -y install wget && yum -y install git && yum -y install curl && yum -y install vim
처음 시작 시 vi를 입력하면 자동으로 vim이 실행되도록 하기 위한 설정
vim .bashrc
alias vi=’vim’
방화벽과 selinux 종료
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
내부 자원들 또는 가상 머신들이 서버를 통해 외부와 통신이 가능하도록 IP forward 기능 활성화
vi /etc/sysctl.conf
파일에 net.ipv4.ip_forward = 1 추가
또는
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
업데이트 (yum update)
yum update -y
user1 사용자는 sudo를 통해 루트 명령어 실행 가능. 단, sudo 입력 시 패스워드를 요구하지 말아야 함
vi /etc/sudoers
wheel 검색하여 107 행 주석처리
110행(NOPASSWD 있는 행) 주석제거
재부팅
init 6
# 앞 명령이 정상적으로 실행되어야 뒷 내용도 실행
yum -y install httpd && systemctl enable httpd
# 앞 문장이 오류 발생해도 뒤를 그냥 실행함
yum -y install httpd ; systemctl enable httpd
명령어를 하나하나 작성하지 않고, 스크립트로 작성
#!/bin/bash
#!/bin/bash
# make script
date
who
# chmod u+x test1
# ./test1
touch test1.sh
vi test1.sh
#!/bin/bash
echo -n "what is your name? :"
echo $USER
echo
echo "what is your name? :"
echo $USER
echo -n : 옆에 출력

echo -n "what is your name? :"
read name # 사용자로부터 입력을 받기위해 프롬프트 대기
# 사용자가 입력한 값은 name 변수에 담김
echo $name # 앞에 $가 있으면 이는 변수이다

변수
연관배열
배열은 번호를 이용, 연관 배열은 key-value를 이용하므로 배열은 인덱싱이 가능하다.
연관배열은 자료검색, 관리 등에 유용하다. 또한 JSON형태와 유사하게 key-value를 사용하므로 다른 프로그래밍 언어들과 연계하여 사용하기 유용하다. → NoSQL에 자료 관리가 유용하다.
bash에서도 동일하게 변수, 배열, 연관배열의 사용이 가능하다.
[root@sooyeon ~]# set | grep IFS
IFS=$' \t\n'
IFS는 사용자가 쉘 사용시 각각의 데이터를 구분하는 구분자
공백,탭,줄바꿈이 서로 다른 데이터로 인식한다는 것
예를들어 a:b:c:d는 1개의 데이터인 것
bash에서는 변수를 미리 지정할 필요 없고, 데이터 타입을 지정할 필요도 없다. 변수 선언과 동시에 값을 지정한다. bash는 모든 변수값이 str이다.
name=hello (o) name = hello (x, 명령어 name에 =, hello라는 옵션을 적용한 것으로 취급됨)
name=”hello all”과 같이 떨어져있는 경우에는 “로 묶어주는 것이 좋음
#!/bin/bash
echo "사용자 이름 : " $USER
echo "홈 디렉토리 : " $HOME
exit 0 # 종료 코드를 강제로 0으로 설정
echo $?
[root@sooyeon ~]# ping www.google.com -c 3
PING www.google.com (142.251.42.196) 56(84) bytes of data.
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=1 ttl=110 time=31.9 ms
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=2 ttl=110 time=30.3 ms
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=3 ttl=110 time=31.4 ms
--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2011ms
rtt min/avg/max/mdev = 30.383/31.241/31.915/0.670 ms
[root@sooyeon ~]# echo $?
0
0 : 정상종료
[root@sooyeon ~]# pin www.google.com -c 3
-bash: pin: command not found
[root@sooyeon ~]# echo $?
127
127 : command not found
[root@sooyeon ~]# ping www.test.pri -c 3
ping: www.test.pri: Name or service not known
[root@sooyeon ~]# echo $?
2
2 : name no
0이 아닌 것은 실패
[root@sooyeon 0726]# cat << EOF >test1.sh
> #!/bin/bash
>
> echo "hello all"
> EOF
[root@sooyeon 0726]# cat test1.sh
#!/bin/bash
echo "hello all"
PS1 : 일반 프럼프트
PS2 : >
PS3 : select문에서 주로 사용 1. ~ 2. ~ 3. ~하고 값을 받기위한 프롬프트를 실행
| 명령 | dnf | -y | install | httpd |
|---|---|---|---|---|
| 파라미터변수 | $0 | $1 | $2 | $3 |
#!/bin/bash
echo "hello $1"