운영체제는 컴퓨터당 하나만 실행이 가능하다. 그런데 우리는 윈도우를 사용하면서 리눅스를 사용하고 싶은데 이때 사용할수 있는 것이 docker이다. 가상화공간을 만들어서 거기서 리눅스를 실행할 수 있게 해준다.

이미지를 다운받으면 images탭에 다운로드 목록을 확인 할 수 있다.
참고
- 운영체제(OS) : Operation System, 컴퓨터를 관리하는 sw
예) 사운드카드 설치, 마이크sw설치, 키보드/마우스 설치 등을 동작시키는 시스템
-OS의 종류 :
1. 윈도우(pc에서 주로 사용),
2. 리눅스(원래는 pc용으로 개발 되었다가, 지금은 기업용으로 많이 사용),
그래서 이걸 알아야 기업컴퓨터에 소스를 올릴수가 있다.
3. 유닉스(기업용컴퓨터) 세개중에 하나를 사용한다.
리눅스/윈도우 OS : 1대 컴퓨터에 여러명이 접속해서 사용하는 프로그램 - 그래서 여러명의 사용자가 자시만의 계정을 만들 수 있다.
리눅스의 명령어는 "명령어 -옵션(생략가능) 매개변수(생략가능)"처럼 띄어쓰기를 기준으로 구성된다.
계정을 만들기 전에 편의상 그룹을 먼저 만들자
위와 같은 명령어를 입력해주면 된다. "groupadd 그룹이름"을 하면 그룹이름을 가진 그룹이 생성됨.
그룹안에 계정을 만들어보자
"useradd 유저명 -s 셀지정 -m -d 홈폴더 -g 그룹명"을 입력해주면된다.
그룹과 계정을 만들었으니 이것들을 관리해보자
계정에 접근할때 필요한 암호를 설정해보자
암호를 설정할 때 암호를 입력하는데 이 때는 입력하는 암호가 눈에 보이지 않는다 하지만 입력은 되고있으니 놀라지 말자.
패스워드 설정에 접근하는 명령어는 다음과 같다.
root@2d5f598932bb:/# passwd oracle
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
패스워드는 두번 입력해야하며, 설정이 완료되면 "password updated successfully"라는 멘트가 뜬다.
관리자 계정이 아닌 작업계정으로 전환해보자.
root@2d5f598932bb:/# su - oracle
oracle@2d5f598932bb:~$
root 계정에서 oracle로 전환하는 것이기에 su -oracle을 입력주니 계정이 oracle로 바꼈다.
oracle@2d5f598932bb:~$ date
Wed Feb 21 02:29:59 UTC 2024
현재 날짜를 볼 수 있다.
oracle@2d5f598932bb:~$ echo Hello
Hello
oracle@2d5f598932bb:~$ echo Hello World
Hello World
원하는 문자열을 출력할 수 있다.
환경변수를 echo뒤에 넣어주면되는 이때 환경변수는 대문자이다.
oracle@2d5f598932bb:~$ echo $SHELL
/bin/bash
현재 어떤 셀을 사용하는지 알 수있다.
계정명@컴퓨터명(ip주소):~$
oracle@2d5f598932bb:~$
root는 #프롬프트를 사용한다.
root@2d5f598932bb:/#
$ 프롬프트 사용한다.
oracle@2d5f598932bb:~$
전에 root에서 작업계정으로 전환하는 것은 su명령어를 사용한다고 했다.
그럼 작업계정에서 root로 전환은 어떻게 할까?
oracle@2d5f598932bb:~$ exit
logout
root@2d5f598932bb:/# su - oracle
oracle@2d5f598932bb:~$
exit로 계정이 root로 바뀌는 것을 볼 수 있다.
ctrl + S를 하면 화면 표시 잠김이 된다. 이때는 입력을 해도 화면에는 입력이 안 되는 것처럼 보이지만 실제로는 입력이 되고 있다.
이 때는 ctrl + Q를 하면 잠김이 해제가 된다.
"ping 사이트 주소"를 입력하면 사이트가 실행중이라면 계속해서 코드가 입력된다. 이때 이것을 끝내게 해야할때 사용하는 코드가 ctrl + C
exit를 하면 작업계정에서 로그아웃하여 관리자 계정으로 넘어간다고 했다. 이때 한번더 exit를 하면 프로그램이 종료된다.
명령어의 일부 문자만 치고 tab을 누르면 일부 문자로 시작하는 명려어가 자동완성된다. 단 이때는 일부문자로 시작하는 명령어가 하나만 있을때이고, 2개 이상이면 tab을 한번 더 눌러 일부문자로 시작하는 명령어의 리스트를 보여준다.
↑를 누르면 이전에 사용했던 명령어를 확인 할 수있다. 다시 돌아올려면 ↓를 누르면 된다.
ctrl + R을 누르면 이전에 사용했던 검색을 할 수 있다.
(failed reverse-i-search)`eco': echo $SHELL
프롬프트 모양이 바뀌고 ''안에 단어가 입력된다. ''안의 단어와 같은 단어가 검색된다. enter을 입력하면 그 명령어를 가져올 수 있다.
윈도우는 프린터, 디스크 등은 일부 작은 프로그램으로 되어있고, 리눅스는 이런 것들이 모두 파일로 관리된다.
현재 자신이 어디에 있는지를 확인할 수 있는 코드이다.
oracle@2d5f598932bb:~$ pwd
/home/oracle
원하는 디렉토리로 이동하는 명령어이다
oracle@2d5f598932bb:~$ cd /usr
oracle@2d5f598932bb:/usr$ pwd
/usr
현재 디렉토리에 있는 파일과 폴더를 볼 수 있는 방법이 여럿 있다. 간단하게 보거나, 자세히 보거나 등으로 말이다.
일단 기본적으로 보는 명령어는 다음과 같다.
oracle@2d5f598932bb:/usr$ ls -lF
total 40
drwxr-xr-x 1 root root 4096 Feb 20 21:01 bin/
drwxr-xr-x 2 root root 4096 Apr 24 2018 games/
drwxr-xr-x 1 root root 4096 Feb 20 20:43 include/
drwxr-xr-x 1 root root 4096 Feb 20 21:01 lib/
drwxr-xr-x 1 root root 4096 May 30 2023 local/
drwxr-xr-x 1 root root 4096 Feb 20 21:01 sbin/
drwxr-xr-x 1 root root 4096 Feb 20 21:01 share/
drwxr-xr-x 2 root root 4096 Apr 24 2018 src/
oracle@2d5f598932bb:/usr$
자세하게(l) 디렉토리에 "/"를 붙여서(F) 파일임을 알수 있다.
어쨌든 파일을 확인 하려면 ls를 사용해야한다.
현재 경로의 디렉토리는 ls로 확인했다. 그럼 현재경로에서 다른 경로의 파일을 보고싶다면 어떻게 해야할까.
oracle@2d5f598932bb:~$ ls /usr
bin games include lib local sbin share src
지금 경로는 usl이 아니지만 usl의 경로에 어떤 파일이 있는지를 확인이 가능하다.
명령어를 tab키로 자동완성 하는 방법을 알아보았다. 그럼 경로는 어떻게 될까? 디렉토리의 자동완성도 같은 tab으로 자동완성을 할 수있다.
홈 폴더 즉 작업 폴더(계정폴더)로 한번에 이동하는 명령어가 있다.
oracle@2d5f598932bb:/usr/lib$ cd ~
oracle@2d5f598932bb:~$ pwd
/home/oracle
oracle@2d5f598932bb:~$
계정 폴더인 oracle로 이동한 것을 확인 할 수 있다.
현재경로로 이동하기 전 경로 이동 할 수 있는 명령어가 있다. 약간 뒤로가기 같은 명령어다.
oracle@2d5f598932bb:~$ pwd
/home/oracle
oracle@2d5f598932bb:~$ cd -
/usr/lib
oracle@2d5f598932bb:/usr/lib$ pwd
/usr/lib
이전 경로인 lib경로로 이동했다.
report폴더에 접근을 하려면 /home/report를 해주어야한다. 근데 /home은 ~와 같기때문에 ~/report를 해주어도 된다.

현재 oracle폴더에서 상위 경로인 home으로 이동하려고 할때 "cd .."을 해주면 바로 이동한다.
해당 경로에서 b로 시작하는 폴더를 찾는 코드이다. ls로 폴더 목록을 나오게 할 수 있고 b*를 해서 b로 시작하는 파일과 폴더를 화면에 출력할 수 있다.
만약 b뒤의 문자가 5자리로 이루어진 파일만 확인하고 싶다면 ?를 이용하면된다. *와의 차이는 ?는 꼭 자릿수를 맞추어주어야한다.

첫 rwx는 만든사람의 권한,
그다음 r-x는 그룹의 권한,
마지막r-x는 다른 사람의 권한이다.
항상 9자리이며 각 rwx자리에서 -이면 권한이 없는것이다.
즉 여기서는 만든사람은 모든권한이 있고, 그룹과 다른 사람들은 쓰기 권한이 없고 읽고 실행만할 수 있다.

또여기서 2는 심볼릭 링크 수
oracle은 만든 사람
dba는 만든 사람의 그룹명
4096은 폴더에서 기본으로 제공하는 용량(4kb)
나머지는 파일 생성일자이다.

-p뒤에 만들고 싶은 하위경로를 "/"를 이용해 적어주면 된다. 굳이 해당폴더 들어가서 하나 만들고 또 들어가서 하나 만들고 안 해도 됨

빈 폴더를 삭제하는 명령어가 있다. 혹시라도 다른 내용이 들어있으면 삭제되지 않음
또한 삭제를 하려면 해당 폴더가 있는 디렉토리로 가야한다.
2021폴더에서 05파일을 삭제해보자.
지금까지 디렉토리를 만들었다. 이번엔 파일을 만들어보자.
work디렉토리에서 새로운 "newfile"이라는 빈 파일을 만들었다.
한번에 여러개도 만들 수 있다.
ls를 하면 폴더는 파란색이고 파일은 하얀색이다.

빈 파일을 다 삭제 했다.
etc파일에서 host로 시작하는 파일중 hostname의 내용을 확인했다. hostname파일에는 주인의 컴퓨터 명이 저장되어있다.
파일내용이 많아 페이지 별로 내용을 보고싶을때 이 기능을 사용할 수 있다.


페이지 조작 방법
- 스페이스바 :
- b 키 :
- q 키 :
- / 찾을 단어 : 아래페이지로 검색
- ? 찾을 단어: 위 페이지로 검색

work에서 newfile이라는 파일을 만들고 newfile을 복사해서 newfile2라는 파일을 만들었다.
여기서 cp는 copy의 약자이다.
현재 디렉토리에 있는 파일을 다른 디렉토리에 복사하고 싶은 경우가 있다. 이 때 다음과 같은 명령어를 사용하면된다.
oracle@345d3756f1ff:~/work$ ls
2021 dir1 newfile newfile2 newfile3 newfile4
oracle@345d3756f1ff:~/work$ cp newfile dir1
newfile을 dir1디렉토리에 복사했다
파일 이름을 바꾸는 명령어와 디렉토리를 이동하는 명령어는 같지만 "mv 파일명" 뒤에 오는 것이 서로 다르다. 이름 변경의 경우 명령어는 다음과 같다.
oracle@345d3756f1ff:~/work$ ls
2021 dir1 newfile newfile2 newfile3 newfile4
oracle@345d3756f1ff:~/work$ cp newfile dir1
oracle@345d3756f1ff:~/work$ mv newfile file1
oracle@345d3756f1ff:~/work$ ls
2021 dir1 file1 newfile2 newfile3 newfile4
newfile1이 file1으로 바뀐것을 볼 수있다.
"mv 파일명" 뒤에 파일명을 입력하면 이름이 바뀐다. 그럼 디렉토리명을 입력하면 어떻게 될까?
oracle@345d3756f1ff:~/work$ mv file1 2021
oracle@345d3756f1ff:~/work$ cd 2021
oracle@345d3756f1ff:~/work/2021$ ls
05 file1
file1이 2021디렉토리로 이동한 것을 볼 수 있다.
"mv 파일명"뒤에 파일명을 입력하면 이름이 바뀌고, 디렉토리를 입력하면 그 디렉토리로 이동하게된다.
단, 현재 디렉토리에 존재하는 디렉토리 내에서만 가능하다.(아니면 파일 이름이 바뀜) 다른 디렉토리로 이동하고싶으면 상대경로나 절대경로를 적어줘야한다.