Day-11
## windows host….
윈도우 터미널에서…
> bash
# vi .ssh/config
# exit
> ubuntu
# cd /mnt/c/Users/username/
# vi .ssh/config
# vi .ssh/config
# Virtualbox CentOS
Host centos
HostName 192.168.1.134
User root
# Virtualbox Ubuntu
Host ubuntu
HostName 192.168.1.12
User root
# ssh centos
## centos…
# rpm -qa | grep openjdk (rpm -qa : 설치된 쿼리(찾기) openjdk로 되어 있는 것
# yum -y remove java (java 지울것, yum = yellowdog Updater Modified rpm 명령의 패키지 의존성 문제를 완전하게 해결한 프로그램. 인터넷을 통해서 필요한 파일을 저장소에서 자동을 모두 다운로드 해서 설치하는 방식)
# yum -y remove java-1.8.0-openjdk-headless
# rpm -qa | grep openjdk
# ssh ubuntu
## ubuntu..
# apt -y update; apt -y upgrade
### jdk1.8 - CentOS, Ubuntu
## Your Host computer…
# scp jdk-8u361-linux-x64.tar.gz root@192.168.1.12:/tmp (oracle 환경상 바로 wget할 수 없음 , 그래서 사이트에서 링크 가져와서 다운로드함)
## Ubuntu / Centos….
# mkdir -p /usr/java
# cd /usr/java
# mv /tmp/jdk-8u361-linux-x64.tar.gz . (압축파일 불러오기)
# tar xvzf jdk-8u361-linux-x64.tar.gz (tar xvzf로 압축을 푸는 것)
# rm -rf *.tar.gz
# mv jdk1.8.0_361/ jdk1.8 (압축푼 파일이 나옴) mv 를 이용해서 _361 에서 1.8로 바꿈)
# ls
# vi /etc/profile
## centos…
87 #Java1.8
88 export JAVA_HOME=/usr/java/jdk1.8 (Java는 Java_home이라는 export가 필요홈, JAVA_Home 은 환경변수임)
89 export CLASSPATH=$CLASSPATH:$JAVA_HOME/jar/lib/ext:$JAVA_HOME/lib/tools.jar (JAVA는 ClassPath도 필요함 기존에 다른 곳에서도 사용할 수 있어서, 새롭게 정의한 lib/ext lib/tools를 추가하겠다는 의미))
90 export PATH=$PATH:$JAVA_HOME/bin (기존 PATH에 추가한 것을 적용해라)
[root@centos /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8/bin:/root/bin (usr/java/jdk1.8/bin: /을 뺴먹으면 java밖에 사용할 수 없음, 꼭 들어갔는지 확인하기)
## ubuntu….
29 #Java1.8
30 export JAVA_HOME=/usr/java/jdk1.8
31 export CLASSPATH=$CLASSPATH:$JAVA_HOME/jar/lib/ext:$JAVA_HOME/lib/tools.jar
32 export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile (창 안끄고 바로 적용이 가능)
# source ~/.bashrc (개인적으로 프롬프트에서 적용하면 날라가서 , 다시 적용한 것임)
# javac -version
# cd /allnew/java
# javac gugudan.java
# java gugudan
Insert number(0:Exit) : 4
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
Insert number(0:Exit) : 0
## ububntu…..
# cd /allnew
# rm -rf java/*.class
# git add .
# gi t commit -m “class delete”
# git push
## centos….
# git fetch
# git pull
## ububntu…..
# vi .gitignore
1 # .gitignore
2
3 ## c programing
4 c/**/a.out
5 c/**/hello
6 c/**/*.o
7 c/**/test
8
9 ## java
10
11 java/*.class
# git add .
# gi t commit -m “.gitignore update”
# git push
## centos….
# git fetch
# git pull
## github desktop에서도 fetch 한번 하세요..
## atom editor…
## c 아래에 program 폴더 생성
### Quiz1 - even / odd
program : quiz1.c
lib name : libcheckeod.a
lib header : libcheckeod.h
lib source : checkeod.c
## program 아래에 lib 폴더 생성
## lib/libcheckeod.h
int checkeod (int);
## checkeod.c
int checkeod (int x) {
if (x % 2 == 0) (% 나머지 모듈레이션, 남은 값)
return 0;
else
return 1;
}
# gcc -c checkeod.c (c생성)
# ar r libcheckeod.a checkeod.o
# ar rs libcheckeod.a (새롭게 정보 추가)
# mv libcheckeod.a lib
## quiz1.c
#include <stdio.h> (시스템 라이브러리)
#include "libcheckeod.h" (사용자정의 라이브러리)
void main() {
int n;
printf("Input Number : ");
scanf("%d", &n);
if(checkeod(n) == 0) (return= 0 이면 even, return이 1이면 odd)
printf("%d is even number~!! \n", n);
else
printf("%d is odd number~!! \n", n);
}
# gcc -o quiz1 quiz1.c -I ./lib -L ./lib -lcheckeod -L 라이브러리가 있는 경로, lcheckod (li로 시작하고 a로 끝나는걸 제외한 것을 불러들여오겠다)
# ./quiz1
Input Number : 5
5 is odd number~!!
# ./quiz1
Input Number : 6
6 is even number~!!
### Quiz2 - prime number
program : quiz2.c
lib header : libcheckprime.h
lib name : libcheckprime.a
lib source : checkprime.c
## lib/libcheckprime.h
int checkprime(int);
## checkprime.c
int checkprime(int n) {
int i;
for (i=2; i <= n; i++) {
if (n%i == 0)
break;
else
continue;
}
return i;
}
## quiz2.c
#include <stdio.h>
#include "libcheckprime.h"
void main()
{
while (1) (break를 통해서 중단하기 위해, 1을 사용한 이유)
{
int n;
printf("\ninput integer => ");
scanf("%d", &n);
if (n == 0) break;
if (checkprime(n) == n)
printf("%d is a prime number \n", n);
else
printf("%d is not prime number \n", n);
}
}
# gcc -c checkprime.c
# ar r libcheckprime.a checkprime.o
# ar rs libcheckprime.a
# mv libcheckprime.a lib
# gcc -0 quiz2 quiz2.c -l ./lib -L ./lib -lcheckprime (컴파일 하는 이유)
# ./quiz2
input integer => 5
5 is a prime number
input integer => 4
4 is not prime number
input integer => 5
5 is a prime number
input integer => 6
6 is not prime number
input integer => 0
## shell scripts
# cd /allnew/shells
## hello.sh
1 #!/bin/bash (쉘스크립트는 항상 첫줄에 #!/bin/bash 가 들어감, csh은 #!/bin/csh이 들어갈 것)
2
3 echo Hello Shell Scirpt~!!
# chmod +x *.sh (chmod + ax (all이 생략됨)
# ./hello.sh
## str.sh
1 #!/bin/bash
2
3 STR="Have a nice day!!"
4 echo $STR
5
# !ch
# ./str.sh
## if.sh
1 #!/bin/bash
2
3 man=10 (integer, number변수)
4 woman=20
5
6 if [ $man -lt $woman ]
7 then
8 echo woman
9 fi
10
gt / lt / ge/ le/ ne/ eq
# !ch
# ./if.sh
# cp if.sh if1.sh
## if1.sh
1 #!/bin/bash
2
3 echo "File name : $0 "
4 echo "Parameter Count : $# "
5 echo "All parameter : $@ " (string이나 list로 들어감)
6
7 if [ “$1” = ok ]; then ("$1 = string이기 때문에, 숫자가 아님)
8 echo "good~!"
9 else
10 echo "bad~!"
11 fi
# !ch
# ./if1.sh
# ./if1.sh ok
# ./if1.sh bad
# ./if1.sh ok bad
## ifelif.sh
1 #!/bin/bash
2
3 a=0 (숫자변수임)
4
5 echo -n "Input : " (echo -n = echo -new)
6 read a (a = 숫자가 아닌 문자, input 으로 값을 받으니깐)
7
8 if [ $a -ge 90 ]; then
9 echo A
10 elif [ $a -ge 80 ]; then
11 echo B
12 elif [ $a -ge 70 ]; then
13 echo C
14 elif [ $a -ge 60 ]; then
15 echo D
16 else
17 echo F
18 fi
19 echo "Thank you~ bye!"
20
# !ch
# ifelif.sh
Input : 89
B
Thank you~ bye!
## case.sh
1 #!/bin/bash
2
3 case "$1" in ($1 1번째 매개변수를 받았을떄)
4 ko) echo "Seoul" ;;
5 us) echo "Washington" ;;
6 cn) echo "Beijing" ;;
7 jp) echo "Tokyo" ;;
8 *) echo "Enter the contry name~!!" ( *) 4개를 뺀 나머지는 이렇게 출력하겠음 , default)
9 esac
10
# !ch
# ./case.sh
Enter the contry name~!!
# ./case.sh ko
Seoul
# ./case.sh jp
Tokyo
# ./case.sh uk
Enter the contry name~!!
# cp case.sh case_new.sh
# ./case_new.sh
1 #!/bin/bash
2
3 if [ $# -eq 0 ]; then (eq 0 = 파라미터의 값이 없는 것)
4 echo "Enter the contry name~!!"
5 else
6 case "$1" in
7 ko)
8 echo "Seoul" ;;
9 us)
10 echo "Washington" ;;
11 cn)
12 echo "Beijing" ;;
13 jp)
14 echo "Tokyo" ;;
15 *)
16 echo "Your entry => $1 is not in the list." (4개가 아니면)
17 esac
18 fi
# !ch
# ./case_new.sh
## for.sh
1 #!/bin/bash
2
3 for k in L I N U X
4 do
5 echo -n "$k" (echo는 new라인이 필요할때 습관적으로 넣어야함)
6 done
7 echo
# !ch
# for.sh
# cp for.sh for1.sh
## for1.sh
1 #!/bin/bash
2
3 for k in L I N U X (아래로 나올 것임)
4 do
5 echo "$k"
6 done
# !ch
# for1.sh
## for2.sh
1 #!/bin/bash
2
3 row="one two three"
4
5 for mon in $row; do ($row 3개의 반복적은 문자열)
6 for ((i=0; i<9; i++)) do
7 echo "$mon $i"
8 done
9 done
10
##바깥 쪽 for는 3번 안쪽은 9번 돌아 27번 반복
# !ch
# ./for2.sh
## while.sh
1 #!/bin/bash
2
3 a=1
4
5 while [ $a != "0" ]; do
6 echo -n "input : "
7 read a
8
9 if [ $a != "0" ]; then
10 for k in 1 2 3 4 5 6 7 8 9
11 do
12 echo " $a * $k = `expr $a \* $k `" (양쪽 백틱, \* 입력받은 숫자와 곱하기)
13 done
14 fi
15 done
16 echo Exit
# cp while.sh while_new.sh
## while_new.sh
1 #!/bin/bash
2
3 a=1
4
5 while [ $a != "0" ]; do
6 echo -n "input : "
7 read a
8
9 if [ $a != "0" ]; then
10 for ((k=1; k<=9; k++)) do
11 echo " $a * $k = `expr $a \* $k `"
12 done
13 fi
14 done
15 echo Exit
## while2._sh
1 #!/bin/bash
2
3 a=1
4
5 while [ $a != "0" ]; do
6 echo -n "input : "
7 read a
8
9 if [ $a -eq 0 ]; then
10 break;
11 elif [ $a -eq 1 ]; then
12 echo "The number of inputs must be between 2 and 9."
13 elif [ $a -gt 9 ]; then
14 echo "The number of inputs must be between 2 and 9."
15 else
16 for ((k=1; k<=9; k++)) do
17 echo " $a * $k = `expr $a \* $k `"
18 done
19 fi
20 done
21 echo Exit
## while3.sh
1 #!/bin/bash
2
3 a=1
4
5 while [ $a != "0" ]; do
6 echo -n "input : "
7 read a
8
9 if [ $a -eq 0 ]; then
10 break;
11 elif [ $a -eq 1 -o $a -gt 9 ]; then ( -o 는 or 연산)
12 echo "The number of inputs must be between 2 and 9."
13 else
14 for ((k=1; k<=9; k++)) do
15 echo " $a * $k = `expr $a \* $k `"
16 done
17 fi
18 done
19 echo Exit
## while4.sh
1 #!/bin/bash
2
3 row=$1
4
5 if [ $# -eq 0 ]; then
6 echo "This program is have to one parameter~!!"
7 else
8 while [[ 10 -gt $row ]]; do (앞에 변수가오고 뒤에 상수가 와야함)
9 echo $row
10 row=`echo "$row"+1|bc` (echo는 bc row + 1을 전달해주는 것, bc의 입력값)
11 done
12 fi
# !ch
# ./while4.sh
This program is have to one parameter~!!
# ./while4.sh 6
6
7
8
9