리눅스 실습 환경 갖추기
1. 계정 받기
ㄴ server ip : x.x.x.x
ㄴ id : j23
ㄴ pw : 1
2. Putty 설치
putty.exe 다운로드
https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe
ㄴ 위 링크 다운 받아 설치
3. 글꼴 설치(D2coding)
D2coding 글꼴 압축풀고 설치
https://github.com/naver/d2codingfont/blob/master/D2Coding-Ver1.3.2-20180524.zip
자주 사용하는 특수문자들(윈도우에서는 잘 쓰지 않는)
1. ~ : tilde, 물결, 출렁이, HOME --> 홈 디렉터리를 의미(자기 집) ~ace (ace네 집)
2. | : pipe, 파이프 --> 명령어와 명령어를 연결해줌
3. ` : back quote, back tick --> 명령어 결과물 저장
4. ' : single quote, 작은 따옴표, 홑 따옴표
5. " : double quote, 큰 따옴표, 겹 따옴표
자주 사용하는 alias 설정
$alias l='ls -Alh'--> 그동안 입력한 명령어 모두 노출
$alias c='clear' --> 화면 깨끗하게 만들기
$alias h='history' --> 목록보기(자세히)
$alias cp='cp -i' --> -i 옵션 : 물어보고 실행
$alias mv='mv -i' --> -i 옵션 : 물어보고 실행
$alias df='df -h'
$alias du='du -sh' --> 디스크 용량 보기
$alias li='ls -Ali'
$alias lh='ls -Alh'
$alias di='dnf -y install' --> 설치 명령어
$alias dq='dnf list --installed | grep ' --> 설치된 패키지 검색
$alias dc='dnf list --installed | wc -l' --> 설치된 패키지 수 검색
** 주의할 점
1 l I | 구분 --> 1(숫자), l(소문자 L), I(대문자 i), | (pipe, 파이프)
자주 사용하는 명령어
1. who : 로그인 정보
ㄴ who | sort | nl --> sort : 정렬 / nl : 행 번호 붙이기(행 번호를 출력하면서 어떤 사용자가 접속하였는지 정렬)
2. clear : 화면 깨끗하게 만들기
3. whoami : 현재 로그인한 사용자의 id 출력(자신의 id)
4. cal : 이번 달 달력 보기
ㄴ cal 2023 : 2023년 전체 달력 보기
ㄴ cal 12 2000 : 2000년 12월 달력 보기
ㄴ cal 2030 : 2030년 전체 달력 보기
5. date : 현재 날짜와 시간 보기
ㄴ date +%D --> 04/24/23
ㄴ date +%y --> 23
ㄴ date +%Y --> 2023
ㄴ date +%Y%m%d --> 20230424
ㄴ date +%Y%m%d:%H:%M:%S --> 20230424:12:56:39
ㄴ date +%j --> 114 (참고 : https://nsidc.org/data/user-resources/help-center/day-year-doy-calendar)
6. hostname : 시스템의 이름 확인
7. echo ~ : 나의 집은 어디인가?
ㄴ echo $HOME -> 나의 집은 어디인가?
ㄴ echo 문자열 -> 주어진 문자열을 터미널에 출력
ㄴ cd ~j22(계정명) -> 자신을 입력하지 않으면 허가 거부 됨. (자신 : j23(계정명))
-bash: cd: /home/j22: 허가 거부
8. file : 파일의 type을 알 수 있음
** date, cal 과 같은 실행은 권한에 따라' 허가 거부' 될 수 있음
Putty 서버 설정
Host Name(or IP address) : 위에서 주어진 server ip x.x.x.x / port : 22
Connection type : SSH
Saved Sessions : Linux server
> [Open]
Server 에 접속
login as: j23
password:
Putty에서 메시지 보내기
j22에게 메시지 보내기
~$ write j22
메시지를 더이상 받지 않고 싶을 때
~$ mesg no
자주 마주치게 될 오류
1. 허가 거부
~$ mkdir /aa
mkdir: `/aa` 디렉토리를 만들 수 없습니다: 허가 거부
2. 그런 파일이나 디렉터리가 없습니다.
~$ cd korea
-bash: cd: korea: 그런 파일이나 디렉터리가 없습니다
3. 명령어 'kbs' 을(를) 찾을 수 없습니다.
~$ kbs
명령어 'kbs' 을(를) 찾을 수 없습니다. 다음 명령어로 시도하시겠습니까:
echo $변수명 이용하여 변수 출력 해보기
~$ a=60
~$ b=4.5
~$ c=king
~$ echo $a, $c --> a, c : 변수 ($)
60, king
~$ echo $a, $c, $b --> a, c , b : 변수 ($)
60, king, 4.5
~$ t="tong"
~$ tt="tong tong"
~$ echo $tt
tong tong
~$ date
2023. 04. 24. (월) 14:30:56 KST
~$ d='date' --> ''(작은 따옴표로 묶을 경우 date 라는 문자열이 저장됨) / 띄어쓰기 시 에러
~$ echo $d --> d를 출력
date --> date 라는 문자열이 출력됨
**주의
'' 으로 묶을 경우 문자열이 저장 되지만 ``로 묶을 경우 명령어의 실행결과가 저장됨.
명령어 실행결과를 변수에 저장해서 출력해보기
~$ d=`date` --> ` : back tick, back quote
~$ echo $d
2023. 04. 24. (월) 14:31:45 KST
who | sort | nl > a1 --> who | sort | nl 의 실행 결과를 a1 이라는 이름으로 파일로 저장
~$ cal > a2 --> cal 의 실행 결과를 a2 이라는 이름으로 파일로 저장
~$ ls
a1 a2 bb bb.c k k.class k.java t.class t.java y.c yy
file 명령어로 파일 타입 확인하기
~$ file yy (yy 는 명령어 실행 결과가 저장된 파일임)
yy: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=f42f845e433c7273025b4c67 636ccaab0a452577, for GNU/Linux 3.2.0, not stripped
--> 64비트에서 실행 가능한 파일
~$ file y.c
y.c: C source, Unicode text, UTF-8 text
--> c 파일
Putty 에서 java로 코딩하기
java 코드 작성
~$ cd
~$ cat > k.java --> java로 코딩하여 파일 생성 (파일명.java)
public class k{ --> java는 파일과 클래스 명이 같아야 함
public static void main(String[] str){
System.out.println("안녕 자바...");
}
}
생성된 k.java 파일을 행 번호 붙여서 보기
~$ nl k.java --> nl : 행번호 붙여서 보기
1 public class k{
2 public static void main(String[] str){
3 System.out.println("안녕 자바...");
4 }
5 }
java 파일 컴파일
~$ javac k.java --> k.java 파일 컴파일
~$ ls
k.class k.java --> 컴파일 후 k.class 가 생성됨
컴파일 한 java 파일 실행
~$ java k --> 컴파일 한 java 파일 k 실행
안녕 자바...
Putty 에서 C++로 코딩하기
C++ 코드 작성
# vi aa.cpp --> aa 라는 c++ 파일 생성 (파일명.cpp)
#include<iostream> --> c++ 을 이용한 코딩
using namespace std;
int main(void)
{
cout << "Hello C++" << endl;
return 0;
}
C++ 파일 컴파일
# g++ -o aa aa.cpp --> aa 라는 이름으로 aa.cpp 를 컴파일
컴파일 한 C++ 파일 실행
# ./aa --> aa라는 이름으로 컴파일한 aa.cpp 실행
Hello C++
**주의
실행 시 파일 이름 앞에 ./ 붙여줘야 함
Putty 에서 C 언어로 코딩하기
C언어 코드 작성
~$ cat > y.c --> c언어로 코딩 할 파일 생성 (파일명.c)
#include <stdio.h> --> C언어로 코딩
int main(void)
{
puts("\n 안녕 C언어, 난 리눅스야.. \n");
return 0;
}
C 파일 컴파일
~$ gcc y.c -o yy --> y.c 라는 c언어 파일을 yy라는 이름으로 컴파일
~$ ls
k.class k.java y.c yy
~$ yy
yy: 명령을 찾을 수 없습니다 --> 해당 오류 발생 시 앞에 ./ 를 추가해주면 됨
~$ ./yy --> yy 라는 이름으로 컴파일한 y.c 실행
안녕 C언어, 난 리눅스야..
vi 명령어
y.c 파일을 vi 명령어를 이용해 편집
~$ vi y.c --> vi 명령어를 이용해 편집 가능
파일 수정 시
[ESC] > [i] --> 끼워넣기 가능
파일 수정 후
[ESC] > :x --> 저장 후 종료 (:wq 도 가능)
~$ gcc y.c -o yy --> yy라는 이름으로 다시 컴파일(덮어쓰기)
vi 명령어를 이용해 k 라는 파일을 생성하면서 편집
~$ vi k
1 dks
2 dkdkdkkf
수정 후
[ESC] > :q! --> 강제종료
[ESC] > :w --> 저장만 하기
수정 후
[ESC] > :saveas bb.c --> bb 라는 이름의 c 파일로 저장
~$ ls
bb.c k k.class k.java y.c yy
~$ gcc bb.c -o bb --> bb 라는 이름으로 bb.c 파일을 컴파일
~$ ./bb --> bb 라는 이름으로 컴파일 한 bb.c 파일 실행 (실행 시 컴파일 파일명 앞에 ./ 붙여줌)
안녕 C언어, 난 리눅스야..
sqlite3
~$ sqlite3 --> sqlite3 실행
SQLite version 3.37.2 2022-01-06 13:25:41
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> create table Man(name, age); --> Man 이라는 table 생성하면서 변수 정해줌
sqlite> insert into Man values("철수", 20); --> Man 이라는 테이블에 데이터를 삽입
sqlite> insert into Man values("영희", 21); --> Man 이라는 테이블에 데이터를 삽입
sqlite> select * from Man; --> Man 이라는 table 조회
철수|20
영희|21
sqlite> .q --> sqlite 나가기
du -sh
~$ du -sh ~ --> 파일및 디렉토리의 사용량을 확인 할 때 사용하는 명령어 (Disk Usage 약어)
124K /home/j23
~$ quota --> 파일시스템 내에서 설정된 쿼타(quota)의 디스크 사용량 제한 설정 내용을 확인 할 수 있는 명령어
Disk quotas for user j23 (uid 1024):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda4 124 1000000 12000000 23 0 0
**용량 제한 걸어둔 상태
~$ mkdir 44
mkdir: `44` 디렉토리를 만들 수 없습니다: 장치에 남은 공간이 없음 --> 디렉토리 만들기 불가(용량 부족)
~$ ls
a1 a2 bb bb.c k k.class k.java t.class t.java y.c yy
~$ rm -rf a1 --> 강제로 a1을 지움
~$ du -sh ~
120K /home/j23
~$ du -sh /etc --> /etc 의 사용량 확인
du: '/etc/multipath' 디렉터리를 읽을 수 없음: 허가 거부
du: '/etc/tomcat9/Catalina/localhost' 디렉터리를 읽을 수 없음: 허가 거부
du: '/etc/ssl/private' 디렉터리를 읽을 수 없음: 허가 거부
du: '/etc/polkit-1/localauthority' 디렉터리를 읽을 수 없음: 허가 거부
8.3M /etc --> /etc 의 사용량이 8.3M 라는 걸 알 수 있음
dpkg -l
설치된 패키지 목록 확인하는 명령어
dpkg
ㄴ dpkg -l --> 설치된 패키지 목록 확인
ㄴ dpkg -l | wc -l --> wc : word count
apt
ㄴ apt list --installed | -l --> wc : word count (설치된 프로그램 목록과 개수를 모두 알고 싶을 때)
ㄴ apt list --installed | wc -l --> wc : word count (설치된 프로그램의 개수만 알고 싶을 때)
ㄴ apt list --installed | nl --> nl : 행 번호 붙이기
우분투 설치
https://ubuntu.com/
> Download > Get Ubuntu Desktop > Ubuntu Desktop Hompage > Download Ubuntu > Download 22.04.02
** 설치할 것
리눅스 최소 설치
VirtualBox, RockyLinux9
ㄴ VirtualBox 설치 시 c++ 오류 해결 --> https://learn.microsoft.com/ko-kr/cpp/windows/latest-supported-vc-redist?view=msvc-170 에서 c++ 설치 후 VirtualBox 재설치
** Putty 가상머신 만들기
[새로만들기] 선택
Virtual machine Name and Operating System
ㄴ 가상머신 이름 : RockyLinux
Hadware
ㄴ 기본 메모리 : 2048 MB
ㄴ Processors : 2 (CPU)
나머지 default 로 [다음] 선택 > [Finish]
생성한 가상머신 선택 > [설정] 선택
ㄴ 오디오, USB -> 해제
ㄴ 네트워크 > Advanced > 포트포워딩 -> 22, 80, 8080, 8000 추가
ㄴ 저장소 > 컨트롤러 : IDE - 비어있음 선택 > 속성 > 광학 드라이브 : IDE 세컨더리 마스터 옆 아이콘 선택 > 다운 받아둔 Rocky 파일 선택 > 열기
생성한 가상머신 선택 > [시작] 선택
방향키 이용하여 Install Rocky Linux 9.1 선택
언어 선택 > [계속 진행]
설치 요약 > 설정 완료 > [설치 시작] 선택
1. 설치 목적지 > 자동
2. KDUMP > 비활성화
3. 네트워크 및 호스트 이름 > 이더넷 연결됨을 확인 > [완료] 선택
4. 보안 프로파일 > 해제
5. root 비밀번호
ㄴ root 비밀번호
ㄴ root 비밀번호 확인
ㄴ roo 계정 잠금 -> 체크박스 해제
ㄴ root가 비밀번호로 sHH로 로그인하도록 허용 -> 체크박스 체크
6. 나머지는 넘어감
** Putty 에서 root로 로그인
Host Name(or IP address) : 127.0.0.1 / port : 22
Connection type : SSH
Saved Sessions : My_Linux
> [Open]
login as : root
password : 설정한 root 비밀번호
**tip. root 비밀번호 변경
#passwd
New password: [새로운 패스워드 입력]
Retype new password : [새로운 패스워드 한 번 더 입력]
** Linux 개발 환경
- C언어, C++
- Java, Python
- Package 설치하기
명령어
#yum -y install gcc
#yum -y install gcc-c++
#yum -y install java
#yum -y install java-devel
#yum -y install vim
** yum <=> dnf
한 줄로 입력하여 설치
#dnf -y install gcc g++ java java-devel
#yum -y install gcc g++ java java-devel
--> gcc g++ java java-devel 을 한 줄에 모두 써서 설치 가능
** mysql 설치 후 사용
# yum -y install mysql-server --> mysql-server 설치
# systemctl start mysqld --> mysql 시작
# mysql --> mysql 실행
mysql> create database aDB; --> aDB 라는 database 생성
Query OK, 1 row affected (0.01 sec)
mysql> use aDB; --> aDB 라는 database 를 선택하여 사용
Database changed
mysql> create table Man(
-> name char(20),
-> age int); --> Man 이라는 table 생성
Query OK, 0 rows affected (0.02 sec)
mysql> insert into Man values("철수", 20); --> Man 이라는 table 안에 데이터 삽입
Query OK, 1 row affected (0.01 sec)
mysql> insert into Man values("영희", 20); --> Man 이라는 table 안에 데이터 삽입
Query OK, 1 row affected (0.01 sec)
mysql> insert into Man values("훈이", 20); --> Man 이라는 table 안에 데이터 삽입
Query OK, 1 row affected (0.01 sec)
mysql> select * from Man; --> Man 이라는 table 안에 데이터 조회
+--------+------+
| name | age |
+--------+------+
| 철수 | 20 |
| 영희 | 20 |
| 훈이 | 20 |
+--------+------+
3 rows in set (0.00 sec)
mysql> exit --> mysql 종료
Bye
<추가적으로 알아둘 것>
**파이썬으로 2의 제곱근 알아보기
# python3
>>> 2 ** 1
2
>>> 2 ** 2
4
>>> 2 ** 3
8
>>> 2 ** 4
16
>>> 2 ** 5
32
>>> 2 ** 6
64
>>> 2 ** 7
128
>>> 2 ** 8
256
>>> 2 ** 9
512
>>> 2 ** 10
1024
>>> exit() -> python 종료
1 바이트 2^8 256
2 바이트 2^16 65536
4 바이트 2^32 42.9억
8 바이트 2^64 1844 경
**putty 창 내용 복사하고 싶을 때
--> putty 창 긁기만 하면 복사 됨.
**외부에서 내용 복사하여 putty 창에 복사하고 싶을 때
--> 외부에서 ctrl + c 이용해 복사 > putty 창 우클릭
**리눅스에서는 디렉터리도 파일의 한 종류임
'네이버클라우드 > Linux' 카테고리의 다른 글
Linux 4일차 (2023-04-27) Linux System 관리 - 리눅스 설치(Ubuntu Linux) (2) | 2023.04.27 |
---|---|
Linux 3일차 (2023-04-26) Linux System 관리 - 리눅스 설치(Rocky Linux) (2) | 2023.04.26 |
Linux 3일차 (2023-04-26) Linux 기초 명령어 -다양한 명령어, 강력한 CLI (0) | 2023.04.26 |
Linux 3일차 (2023-04-26) Linux 입문 - 파일 분류 권한의 이해 (2) | 2023.04.26 |
Linux 2일차 (2023-04-25) (4) | 2023.04.26 |