ㅇputty로 리눅스 서버에 접속하는 방법
클라이언트 ------------------------------> 서버
내 자리 노트북 서버실에 있는 대형 서버
서버 엔지니어, dba, 데이터 엔지니어, 데이터 분석가
1. oracle vm virtual box의 메뉴 파일 -> 호스트 네트워크 관리자를 열어 아이피주소 확인 : 192.168.56.1
2. 리눅스 서버에 /etc/hosts.allow 파일안에 192.168.56.1을 등록해줘야함.
바탕화면 -> 내폴더 -> 다른위치 -> etc -> hosts.allow파일을 열어 아래의 내용을 입력 -> 저장
sshd: 192.168.56.1
(리눅스 서버의 아이피 주소를 지정하는 것)
3. 리눅스 터미널 창에서 ifconfig 명령어를 치고 나오는 10.0.2.15확인
[root@localhost ~]# ifconfig
4. 포트포워딩
192.168.56.1와 10.0.2.15를 서로 링크를 맞춰줌.
외부에서 192.168.56.1을 통해 접속하면 10.0.2.15로 자동 연결
5. 구글에서 putty를 다운로드 받습니다.
putty는 접속을 편하게 해주는 툴
오픈해서 root로 로그인 1234로 비밀번호 누르면 됨
ㅇputty에서 글씨 키우는 방법
다크모드 해제하는 방법 : colors -> use systerm colors 체크
리눅스 서버를 먼저 켜고 putty로 접속해야지 리눅스 서버도 켜지 않고 putty로 접속하면 안됨.
문제50. 직업이 SALESMAN인 사원들의 이름과 직업과 월급을 출력하시오.
[root@localhost ~]# awk '$3 == "SALESMAN" {print $2, $3, $6}' emp.txt
MARTIN SALESMAN 1250
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
WARD SALESMAN 1250
# 대/소문자 변환 함수 사용 가능
# awk 'tolower($3) == "salesman" {print $2, $3, $6}' emp.txt
# awk '$3 == toupper("salesman") {print $2, $3, $6}' emp.txt
문제51. 직업이 salesman인 사원들의 이름, 직업, 월급을 출력하는데 월급이 높은 사원부터 출력하시오.
[root@localhost ~]# awk '$3 == "SALESMAN" {print $2, $3, $6}' emp.txt | sort -nrk 3
문제52. 네이버 영화 리뷰 파일인 reviewData2.csv를 리눅스 서버에 올리시오.
c드라이브 아래에 있는 리눅스 공용폴더(share)에 데이터를 넣어둠.
[root@localhost ~]# cd /media
[root@localhost media]# ls
sf_share
[root@localhost media]# cd sf_share
[root@localhost sf_share]# pwd
/media/sf_share
[root@localhost sf_share]# ls
dept2.txt emp.txt jobs.txt reviewData2.csv
문제53. /media/sf_share 밑에 있는 reviewData2.csv를 /root밑에 복사합니다.
[root@localhost sf_share]# cp /media/sf_share/reviewData2.csv /root/reviewdata2.csv
파일명 바꾸는 방법 : mv 원래이름 변경할이름
문제54. 네이버 영화 리뷰에서 모가디슈가 포함된 행들을 출력하시오
[root@localhost sf_share]# grep -i '모가디슈' reviewdata2.csv
문제55. 위에서 출력된 행들이 전부 몇개인지 출력하시오
[root@localhost ~]# grep -i '모가디슈' reviewdata2.csv | wc -l
3581
문제56. reviewdata2.csv 의 컬럼들은 콤마로 구분되어 있음. 첫번째 열이 모가디슈인 행들을 모두 출력하세요.
[root@localhost ~]# awk -F ',' '$1 == "모가디슈"' reviewdata2.csv
설명 : csv 파일은 콤마(,)로 구분되어져 있으므로 -F옵션을 쓰고 ','로 구분되어 있다고 지정해줘야함.
문제57. 위에서 출력되고 있는 결과를 moga.csv로 저장하시오.
[root@localhost ~]# awk -F ',' '$1 == "모가디슈"' reviewdata2.csv >> moga.csv
[root@localhost ~]# ls -l moga.csv #파일생성 확인
-rw-r--r--. 1 root root 432416 3월 11 11:54 moga.csv
문제58. moga.csv에서 영화평점이 10점인 리뷰들만 출력하시오.
[root@localhost ~]# awk -F ',' '$2 == 10' moga.csv
문제59. 위의 출력되는 행들이 전부 몇 행인지 출력하시오.
[root@localhost ~]# awk -F ',' '$2 == 10' moga.csv | wc -l
1873
문제60. moga.csv에서 영화평점이 1점인 리뷰들만 출력하시오.
[root@localhost ~]# awk -F ',' '$2 == 1 {print $3}' moga.csv
[root@localhost ~]# awk -F ',' '$2 == 1 {print $3}' moga.csv | wc -l
704
문제61. moga.csv에서 구교환 이라는 단어를 포함하고 있는 행들을 출력하시오.
[root@localhost ~]# grep -i '구교환' moga.csv
[root@localhost ~]# grep -i '구교환' moga.csv | wc -l
73
문제62. reviewdata2.csv에 나오는 영화명을 출력하는데 중복제거해서 출력하시오.
[root@localhost ~]# awk -F ',' '{print $1}' reviewdata2.csv | sort -k 1 | uniq
[root@localhost ~]# awk -F ',' '{print $1}' reviewdata2.csv | sort -k 1 | uniq | wc -l
1744
문제63. (점심시간 문제) reviewdata2.csv에서 구교환이 나오는 모든 영화명을 출력하시오.
[root@localhost ~]# grep -i '구교환' reviewdata2.csv | awk -F ',' '{print $1}' | sort -k 1 | uniq
모가디슈
반도
16 echo 명령어
출력하고자 하는 글자를 출력할 때 사용하는 명령어
파이썬으로 예를 들면 print와 같은 것. 변수안에 들어있는 데이터를 출력하는 명령어
[root@localhost ~]# a=1
[root@localhost ~]# echo $a
1
[root@localhost ~]# b='scott'
[root@localhost ~]# echo $b
scott
변수 안에 있는 값을 출력하려면 $를 앞에 붙여줘야 함.
17 diff 명령어
두 파일간의 차이점을 찾아서 알려주는 명령어
#문법
diff emp.txt emp2.txt
예제. 리눅스 서버 > 내폴더 안의 emp.txt를 복사해 emp3.txt를 만들고 emp3.txt를 열러 ALLEN의 월급을 9000으로 변경해줌. 파일간의 차이점을 알기 위해 먼저 셋팅함.
[root@localhost ~]# diff emp.txt emp3.txt
6c6
< 7499 ALLEN SALESMAN 7698 1981-02-11 1600 300 30
---
> 7499 ALLEN SALESMAN 7698 1981-02-11 9000 300 30
문제64. 네이버 영화리뷰 데이터인 reviewdata2.csv를 복사해서 reviewdata3.csv로 생성합니다.
[root@localhost ~]# diff reviewdata2.csv reviewdata3.csv
1,2d0
< 모가디슈,10,정만식 배우님 덕분에 보러갔는데 가족들과 간만에 너무 재밌게 봤어요~~ 시간 가는줄 모르고 봤습니다
< 모가디슈,10,너무재밌었음 ㅋㅋㅋ 영화관에서 꼭보
18 find 명령어
검색하고자 하는 파일을 찾을 때 사용하는 명령어
#문법
find 디렉토리 -name 파일명 -print
[root@localhost ~]# find /root -name 'emp.txt' -print
/root/emp.txt
하위 디렉토리 밑에 있는 모든 emp.txt를 다 찾아서 검색해줌.
문제65. /root 디렉토리 밑에 test300이라는 디렉토리를 생성하시오.
[root@localhost ~]# mkdir test300
[root@localhost ~]# ls -ld test300
drwxr-xr-x. 2 root root 6 3월 11 14:07 test300
ls -ld <- 디렉토리 리스트 검색할 때 사용하는 옵션
문제66. /root 디렉토리 밑에 있는 emp.txt를 복사해서 /root/test300 밑에 붙여넣으시오.
[root@localhost ~]# cp /root/emp.txt /root/test300/emp.txt
문제67. /root 디렉토리 밑에 emp.txt가 있는지 찾아보시오.
[root@localhost ~]# find /root -name 'emp.txt' -print
/root/emp.txt
/root/test300/emp.txt
문제68. /root 디렉토리 바로 밑에 있는 emp.txt만 있는지 검색하시오.
[root@localhost ~]# find /root -maxdepth 1 -name 'emp.txt' -print
/root/emp.txt
-maxdepth 1 : 이 옵션을 쓰면 root 디렉토리 안에 있는 파일들만 검색됨.
19 tar 명령어
파일을 압축하고 압축을 해제하는 명령어
# 압축할 때
tar cvf 압축파일명 압축파일대상
# 압축 해제할 때
tar xvf 압축파일명 압축을 해제할 위치
#옵션
c : compress, 여러개의 파일을 하나로 만들어라~
v : view, 과정을 보여줘
f : file, 생성되는 파일명을 지정
x : extract, 묶어있는 파일을 풀어줘~
-C : 압축이 풀릴 위치 지정
문제69. /root 밑에 emp로 시작하는 확장자.txt 파일들이 뭐가 있는지 검색하시오.
[root@localhost ~]# ls -l emp*.txt
-rwxrwx---. 1 root root 1036 3월 10 11:29 emp.txt
-rw-r--r--. 1 root root 2072 3월 10 13:49 emp2.txt
-rwxrwx---. 1 root root 1036 3월 11 13:49 emp3.txt
문제70. 현재 디렉토리에 emp로 시작하는 모든 txt파일을 empall.tar라는 이름으로 압축하시오.
[root@localhost ~]# tar cvf empall.tar ./emp*.txt # ./ : 현재 디렉토리를 가리킴
./emp.txt
./emp2.txt
./emp3.txt
[root@localhost ~]# ls -l empall.tar
-rw-r--r--. 1 root root 10240 3월 11 14:23 empall.tar
문제71. dept2.txt가 /root 밑에 있는지 찾아보시오.
[root@localhost ~]# find /root -name 'dept2.txt' -print
/root/dept2.txt
문제72. dept2.txt를 복사해서 dept3.txt와 dept4.txt를 생성하시오.
[root@localhost ~]# cp /root/dept2.txt /root/dept3.txt
[root@localhost ~]# cp dept2.txt dept3.txt
문제73. /root 밑에 있는 dept로 시작하는 모든 txt파일을 deptall.tar라는 이름으로 압축하시오.
[root@localhost ~]# tar cvf deptall.tar ./dept*.txt
./dept2.txt
./dept2_backup.txt
./dept3.txt
[root@localhost ~]# ls -l deptall.tar
-rw-r--r--. 1 root root 10240 3월 11 14:30 deptall.tar
묹제74. /root 밑에 test1000이라는 디렉토리를 생성하시오.
[root@localhost ~]# cd
[root@localhost ~]# mkdir test1000
[root@localhost ~]# ls -ld test1000
drwxr-xr-x. 2 root root 6 3월 11 14:46 test1000
문제75. /root 밑에 있는 empall.tar 파일을 /root 밑에 있는 test1000디렉토리로 이동시키시오.
[root@localhost ~]# cd
[root@localhost ~]# mv empall.tar ./test1000/
[root@localhost ~]# cd test1000
[root@localhost test1000]# ls
empall.tar
문제76. /root 밑에 test1000밑에 있는 empall.tar 파일의 압축을 푸시오.
[root@localhost test1000]# tar xvf empall.tar
./emp.txt
./emp2.txt
./emp3.txt
[root@localhost test1000]# ls
emp.txt emp2.txt emp3.txt empall.tar
tar는 압축을 한다는것보다는 하나로 합쳐주는 도구
하나로 합친것을 압축하려면 z옵션을 써야함.
문제77. /root 밑에 있는 emp로 시작하는 text파일을 하나로 묶어서 압축하시오.
[root@localhost ~]# tar -zcvf empall2.tar.gz emp*.txt
emp.txt
emp2.txt
emp3.txt
[root@localhost ~]# ls -l empall2.tar.gz
-rw-r--r--. 1 root root 535 3월 11 14:54 empall2.tar.gz
[root@localhost ~]# cd test1000
[root@localhost test1000]# ls -l empall.tar
-rw-r--r--. 1 root root 10240 3월 11 14:23 empall.tar
기존 tar파일은 10240인데 압축파일은 535로 데이터의 크기가 작아진 걸 확인할 수 있음.
문제78. /root 밑에 test4000이라는 디렉토리를 만드시오.
[root@localhost test1000]# cd
[root@localhost ~]# mkdir test4000
[root@localhost ~]# ls -ld test4000
drwxr-xr-x. 2 root root 6 3월 11 14:58 test4000
문제79. /root 밑에 있는 empall2.tar.gz파일을 /root/test4000으로 이동시키시오.
[root@localhost ~]# mv empall2.tar.gz ./test4000/
[root@localhost ~]# cd test4000
[root@localhost test4000]# ls
empall2.tar.gz
문제80. /root/test4000밑에 있는 empall2.tar.gz 파일의 압축을 푸시오.
[root@localhost test4000]# cd /root/test4000
[root@localhost test4000]# tar -zxvf empall2.tar.gz
emp.txt
emp2.txt
emp3.txt
문제81. 윈도우에서 유방암 데이터(wisc_bc_data.csv)와 독버섯 데이터(mushrooms.csv) 2개를 압축해서 data8.tar.gz파일로 압축하고 리눅스 서버로 올리시오.
[root@localhost ~]# cd /media
[root@localhost media]# cd sf_share
[root@localhost sf_share]# ls
data7.tgz dept2.txt jobs.txt reviewData2.csv
data8.tgz emp.txt mushrooms.csv wisc_bc_data.csv
[root@localhost sf_share]# cp data8.tgz /root/data8.tgz
[root@localhost sf_share]# cd
[root@localhost ~]# tar -zxvf data8.tgz
wisc_bc_data.csv
mushrooms.csv
20 sed 명령어
grep명령어는 파일의 특정 내용을 검색하는 기능을 갖는다면, sed 명령어는 검색뿐만 아니라 내용을 변경할 수도 있음.
[root@localhost ~]# sed 's/KING/yyy/' emp.txt
emp.txt에서 KING을 yyy로 보이게 하겠다는 것. yyy로 변경해서 보여주기만 하는것이지 실제로 데이터가 변경되는 것은 아님.
문제83. sec 's/KING/yyy' emp.txt 이 명령어로 출력된 결과를 emp900.txt로 저장하시오.
[root@localhost ~]# sed 's/KING/yyy/' emp.txt >> emp900.txt
[root@localhost ~]# cat emp900.txt
7839 yyy PRESIDENT 0 1981-11-17 5000 0 10
7698 BLAKE MANAGER 7839 1981-05-01 2850 0 30
7782 CLARK MANAGER 7839 1981-05-09 2450 0 10
7566 JONES MANAGER 7839 1981-04-01 2975 0 20
7654 MARTIN SALESMAN 7698 1981-09-10 1250 1400 30
7499 ALLEN SALESMAN 7698 1981-02-11 1600 300 30
7844 TURNER SALESMAN 7698 1981-08-21 1500 0 30
7900 JAMES CLERK 7698 1981-12-11 950 0 30
7521 WARD SALESMAN 7698 1981-02-23 1250 500 30
7902 FORD ANALYST 7566 1981-12-11 3000 0 20
7369 SMITH CLERK 7902 1980-12-09 800 0 20
7788 SCOTT ANALYST 7566 1982-12-22 3000 0 20
7876 ADAMS CLERK 7788 1983-01-15 1100 0 20
7934 MILLER CLERK 7782 1982-01-11 1300 0 10
문제84. emp.txt에서 직업 salesman을 analyst로 변경되어서 출력되게끔 sed명령어를 작성하시오.
[root@localhost ~]# sed 's/SALESMAN/ANALYST/' emp.txt
문제85. 위에서 출력된 결과가 emp905.txt로 저장되게 하시오.
[root@localhost ~]# sed 's/SALESMAN/ANALYST/' emp.txt >> emp905.txt
21 cp 명령어
파일을 복사하는 명령어
#문법
cp 파일명 복사할파일명
cp 위치/파일명 위치/복사할 파일명
cp emp.txt emp400.txt
[root@localhost ~]# mkdir test9000
[root@localhost ~]# cp /root/emp.txt /root/test9000/emp400.txt
문제86. /root밑에 backup이라는 디렉토리를 생성하시오.
[root@localhost ~]# mkdir backup
[root@localhost ~]# ls -ld backup
drwxr-xr-x. 2 root root 6 3월 11 15:54 backup
문제87. /root 밑에 backup이라는 디렉토리에 /root밑에 있는 확장자가 .txt인 파일들을 모두 복사하시오.
[root@localhost ~]# cp *.txt ./backup/
[root@localhost ~]# cd backup
[root@localhost backup]# ls
dept2.txt emp.txt emp900.txt jobs_tail.txt result49.txt
dept2_backup.txt emp2.txt emp905.txt notsalesman.txt
dept3.txt emp3.txt jobs.txt result44.txt
문제88. /root 밑에 backup2라는 디렉토리를 만들고 root 밑에 있는 확장자 .txt파일들을 모두 복사하시오.
[root@localhost backup]# cd
[root@localhost ~]# mkdir backup2
[root@localhost ~]# cp *.txt /root/backup2
[root@localhost ~]# cd backup2
[root@localhost backup2]# ls
dept2.txt emp.txt emp900.txt jobs_tail.txt result49.txt
dept2_backup.txt emp2.txt emp905.txt notsalesman.txt
dept3.txt emp3.txt jobs.txt result44.txt
22 mv 명령어
파일의 이름을 바꾸거나 파일을 다른 디렉토리로 이동하는 명령어
#cd
#mv 기존파일명 새로운파일명
#mv 위치/기존파일명 새로운위치/파일명
[root@localhost backup2]# cd
[root@localhost ~]# mv dept2.txt dept.txt
문제89. /root 밑에 backup3라는 디렉토리를 만드시오.
[root@localhost ~]# cd
[root@localhost ~]# mkdir backup3
[root@localhost ~]# ls -ld backup3
drwxr-xr-x. 2 root root 6 3월 11 16:06 backup3
문제90. /root 밑에 있는 dept.txt를 /root/backup3 밑으로 이동 시키시오.
[root@localhost ~]# cd
[root@localhost ~]# mv dept.txt /root/backup3
[root@localhost ~]# cd backup3
[root@localhost backup3]# ls
dept.txt
23 chown 명령어
파일이나 디렉토리의 소유자를 변경하는 명령어
[root@localhost backup3]# cd
[root@localhost ~]# ls -l emp.txt
-rwxrwx---. 1 root root 1036 3월 10 11:29 emp.txt
-rwxrwx--- : 권한정보
1 : 링크
root : 소유자
root : 그룹
1036 : 파일크기
3월 10 11:29 : 생성 또는 수정날짜
emp.txt : 파일명
문제91. 위의 emp.txt의 소유자를 oracle로 변경하고 그룹도 oracle로 변경하시오.
[root@localhost ~]# chown oracle:oracle emp.txt
[root@localhost ~]# ls -l emp.txt
-rwxrwx---. 1 oracle oracle 1036 3월 10 11:29 emp.txt
문제92. /root 밑에 있는 emp.txt를 /home/oracle 밑으로 이동시키시오.
[root@localhost ~]# mv emp.txt /home/oracle
[root@localhost ~]# cd /home/oracle
[root@localhost oracle]# ls
emp.txt
문제93. oracle유저로 스위치 유저 하시오.
[root@localhost ~]# whoami
root
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ whoami
oracle
터미널 창의 프롬프트가 #이 아니라 $로 변경되었음.
문제94. 현재 디렉토리가 어딘지 확인하시오.
[oracle@localhost ~]$ cd
[oracle@localhost ~]$ pwd
/home/oracle
oracle 유저의 집에 있음.
문제95. 다시 root 유저로 스위치 유저 하시오.
[oracle@localhost ~]$ su -
암호:
마지막 로그인: 금 3월 11 16:25:18 KST 2022 일시 pts/0
[root@localhost ~]# whoami
root
oracle유저에서 root로 위와 같이 접속 할 때는 암호를 물어봄. 암호는 입력은 되지만 화면에 보이지 않음.
접속하게 되면 $ 에서 다시 #으로 프롬프트 창이 변경됨.
문제96. (오늘의 마지막 문제) moga.csv를 moga2.csv로 복사하고 moga2.csv에서 데이터를 검색하는데 영화평점이 7 이상인 행의 건수를 출력하고, 영화평점이 7보다 작은 행의 건수를 각각 출력하시오.
[root@localhost ~]# cp moga.csv moga2.csv
[root@localhost ~]# ls -l moga2.csv
-rw-r--r--. 1 root root 432416 3월 11 16:47 moga2.csv
[root@localhost ~]# awk -F ',' '$2 < 7' moga2.csv | wc -l
1173
[root@localhost ~]# awk -F ',' '$2 >= 7' moga2.csv | wc -l
2395
'Study > class note' 카테고리의 다른 글
리눅스 / 리눅스 vi편집기 명령어1 (0) | 2022.03.14 |
---|---|
리눅스 / 리눅스 명령어3 (0) | 2022.03.14 |
리눅스 / 리눅스 명령어 (0) | 2022.03.10 |
리눅스 설치 (1) | 2022.03.08 |
빅분기 실기를 위한 예제 (0) | 2022.03.08 |