본문 바로가기
앨리스 AI

앨리스 AI 트랙 1주차 리눅스 기초

by kjwkjw 2021. 6. 23.

리눅스란?

리눅스는 리누스 토발즈에 의해 만들어진 컴퓨터 운영체제다.

GNU 프로젝트란  Gnu is not Unix의 줄임말이며 유닉스 운영체제를 여러 회사에서 각자 개발하며 소스코드를 공유하지 않는 문화에 대한 반발로 생겼다.

 

리눅스는 응용프로그램->쉘->커널->하드웨어의 계층구조로 이루어졌다.

 

리눅스의 특징

1. 유닉스 기반

2. 멀티 유저와 멀티 태스킹 지원

3. CLI 및 GUI 모두 지원

4. 다양하고 강력한 네트워킹 기능

리눅스의 종류

패키지 형식 패키지 관리자 운영체제 이름
레드햇 .rmp yum CentOS
페도라(Fedora)
데비안 레드햇 .deb Apt 우분투(Ubuntu)
리눅스 민트
라즈비안
안드로이드 .apk Android Package Manager 안드로이드 OS

 

 활용 분야

: 네트워크 서버 장비, 라즈베리파이, 리눅스 관련 개발 서버, 안드로이드, 개인 PC, 블랙박스, TV 셋톱박스, 정밀 의료기기

 

 

우분투란?

데이안 GNU/Linux를 기반으로 제작된 데스크탑 환경을 사용하는 리눅스 배포판

우분투를 사용하는 이유

1. 개인용 pc에 최적화

2. 간결하고 쉽다.

3. 많은 사용자가 있다. (커뮤니티가 활성화)

4. 약 6개월 단위로 업데이트 한다.

 

우분투 LTS 버전

ex) 14.04 LTS, 16.04 LTS, 18.04 LTS

버전 번호 뒤에 LTS는 Long Term Support의 약어로 가장 안정적인 버전이다.

LTS 서버는 5년을 지원한다.

앞에 숫자는 연도를 뜻하고 뒤 숫자는 월을 뜻한다.

 

리눅스의 기초 명령어

 

shell은 커널과 사용자 사이를 이어주는 역할을 한다. 사용자의 명령을 해석하여 커널에 명령을 요청한다.

리눅스에 명령어를 입력하면 shell을 통해 커널에 요청된다.

명령을 커널이 이해할 수 있는 task와 파일로 변환해준다.

 

shell의 종류

이름 키워드
Bourne-Again Shell bash
Bourne Shell Sh
C Shell csh
Korn Shell Ksh

 

bash: 리눅스에서 가장 많이 쓰인다.

sh: shell 스크립트에서 사용됨.

 

bash는 GNU 프로젝트의 일환으로 개발됨

리눅스의 기본 shell은 bash

 

리눅스의 기초 명령어

whoami: 로그인한 사용자의 ID를 알려주는 명령어다.

passwd: 로그인한 사용자와 비밀번호를 변경하는 명령어다.

pwd: 현재 디렉토리 위치를 출력한다.

ls: 현재 디렉토리의 목록을 출력한다.

ls -l: 현재 디렉토리 목록을 상세히 출력한다.

ls -a: 숨겨진 파일이나 디렉토리를 포함하여 출력한다.

ls -al: 숨겨진 파일과 디렉토리를 포함하여 현재 디렉토리의 목록을 상세히 출력한다.

cd: 해당 디렉토리로 이동한다.

--help: 사용하고자 하는 명령어 뒤에 붙어서 사용명령어에 대한 사용방법이 출력된다.

 

간단한 실습

사용자의 이름을 elice로 설정하고 whoami 명령어를 실행했을 때 정상적으로 사용자의 ID를 알려준다.

cd 명령어로 디렉토리를 이동하고  pwd명령어를 사용했을 때 경로가 정상적으로 출력됨을 알 수 있다.

1. ls 명령어를 실행했을 때 해당 디렉토리에 존재하는 파일이나 폴더를 정상적으로 출력한다.

2. -l 옵션을 추가했을 때 해당 디렉토리에 존재하는 파일이나 폴더의 상세정보를 정상적으로 출력한다.

3. -a 옵션을 추가했을 때 해당 디렉토리에 숨겨진 파일을 포함하여 전체 파일이나 폴더를 정상적으로 출력한다.

4. -al 옵샨을 추가했을 때 해당 디렉토라에 전체파일의 상세정보를 정상적으로 출력한다.

 

GUI와 CLI

 

GUI

Graphical User Interface의 약자로 사용자가 편리하게 사용할 수 있도록 기능을 아이콘, 이미지 등의 그래픽으로 나타낸 인터페이스다.

windows와 mac모두 GUI를 사용하고 있다,

 

CLI

Command Line Interface의 약자로 문자로 사용자와 컴퓨터가 상호작용하여 동작하는 인터페이스다.

windows와 mac에서 터미널을 열어서 사용할 수 있다.

 

패키지 관리자-apt

우분투에서는 apt로 패키지 관리자를 사용한다.

Advance Packaging Tool의 약자로 데비안 리눅스 또는 파생된 배포판에서 소프트웨어를 설치, 제거, 업데이트할 때 사용된다.

 

apt 명령어

 apt
apt install
apt remove
apt update
apt search
apt show

우분투에서 apt명령어를 사용하여 설치를 할 때 권한을 거부당한다.

sudo라는 키워드로 권한을 획득하여 설치를 할 수 있다.

ex) sudo apt install

 

root

리눅스에서 모든 권한을 가지고 있는 최고 관리자를 뜻한다.

운영체제에 모든 것을 제어할 권리를 가진다.

"sudo 사용할 명령어"의 방식으로 권한을 획득할 수 있다.

 

 

리눅스 파일 시스템

 

파일 시스템

저장 장치 내에서 데이터를 읽소 쓰기 위해 미리 정한 약속(어떤 기준으로?)

파일 저장 및 검색을 할 수 있도록 관리하는 방법(검색방법)

파일을 어떻게 관리할 것인가에 대한 정책

 

디렉토리 + 파일 형태로 구성됐다.

 

디렉토리

리눅스의 파일시스템은 루트 파일 아래에 계층적으로 모든 파일과 디렉토리가 만들어진다.

파일

주기억장치나 디스크처럼 물리적인 하드웨어 저장 공간에 저장되는 데이터의 집합이다.

 

파일시스템의 종류

FAT: 파일 할당테이블(메모리카드에 쓰인다.), 디스크의 공간활용을 제대로 못한다는 단점이 있다. 높은 호환성을 가진다.

NTFS: 윈도우즈NT, 윈도우 시스템에서 이전에 쓰이던 FAT구조를 대체하기 위해서 만들어짐, 시스템 고장과 디스크의 손상을 복구할 수 있다, 보안성도 FAT보다 많이 향상됐다.

EXT: 해쉬를 통해 접근 가능한 h트리를 사용함, 데이터 탐색을 빠르게 할 수 있다.

 

디렉토리의 구조

리눅스 파일 시스템의 디렉토리 구조는 tree형태다.

최상위 root 디렉토리를 시작으로 다양한 폴더들이 존재한다.

bin: 기본적인 명령어들이 저장된 폴더다

boot: 리눅스의 부트로더가 저장된 폴더 리눅스가 시작될 때 건드리는 세팅을 보관 

lib: 라이브러리가 저장되는 폴더

home: 사용자의 home 디렉토리 바탕화면, 문서, 다운로드 등이 존재하는 폴더

 

소유권과 권한

리눅스는 각 파일과 폴더마다 다른 권한을 부여할 수 있다.

ls -al 명령어를 통해 파일 속성을 확인 할 수 있다.

-rw-r-r-1 elice elice 8980 6월 23일 16:50 elice.txt

가장 처음 하이픈(-)은 파일 유형을 나타낸다. - 는 파일이고, d는 폴더유형이다.

rw-r-r-은 파일권한을 나타낸다. 

1은 링크 수를 나타낸다.

alice는 차례로 파일 소유자와 소유 그룹을 나타낸다.

8980은 파일 크기(Byte)를 나타낸다.

날짜는 마지막 변경 시간을 나타낸다.

 

파일의 권한

소유자 그룹 그외 사용자
r w - r - - r - -
4 2 0 4 0 0 4 0 0
6 4 4

r: 읽기 w: 쓰기 x: 실행

소유자는 읽기와 쓰기가 가능하다

그룹과 그외 사용자는 읽기만 가능하다.

또한 권한을 숫자로도 변환 가능하다

읽기:4 쓰기:2 실행:1

 

파일의 권한 변경: chmod 

chmod[파일권한][변경할 파일 위치 또는 이름]

 

소유권 변경: chown

* root 권한이 있어야 실행가능하다.

chown[소유할 유저][소유할 그룹][소유권 변경하고 싶은 디렉토리 or 파일명]

 

간단한 실습

1. ls -al 명령어로 디렉토리를 확인했을 때 hello.py의 권한을 알 수 있다.

2. chomd 명령어로 7(rwx),5(rx),4(r)로 hello.py 권한을 변경했다.

3. 다시 확인했을 때 권한이 정상적으로 변경됐음을 알 수 있다.

 

 

리눅스 파일 명령어

 

디렉토리 생성: mkdir

mkdir[생성할 디렉토리이름] , mkdir[디렉토리 경로/디렉토리명]

 

빈파일 생성: touch

touch[생성할 파일 이름],  touch[디렉토리 경로/파일명]

 

디렉토리 삭제: rmdir

rmdir[option][삭제할 디렉토리 이름]

지정한 디렉토리에 파일이 있을 경우 삭제 불가

option

-r: 디렉토리와 그 하부 파일까지 삭제

-f: 삭제 여부를 묻지 않고 바로 삭제

-i: 삭제할 것인지 확인을 한다.

-rf: 삭제 여부를 묻지 않고 하부 파일이 있는 디렉토리까지 삭제

 

간단한 실습

 

 

1.  mkdir 명령어를 사용하여 best 디렉토리를 정상적으로 생성했다.

2. touch 명령어를 사용하여 best 디렉토리 안에 korea 빈 파일을 정상적으로 생성했다.

 

파일 명령어

 

파일 및 디렉토리 복사: cp

cp[option][대상 위치 및 이름][복사하고 싶은 위치]

option

-r: 하위 디렉토리와 파일 전체를 복사

-p: 소유주, 그룹, 권한, 시간 정보를 그대로 복사

 

파일 및 디렉토리 이동: mv

mv[대상 위치/이름][이동하고 싶은 위치/이름]

이동하고 싶은 위치에 같은 이름의 파일/ 디렉토리 명이 존재 하지 않을 경우 이동

 

파일 내용 출력: cat

option

-n: 왼쪽에 줄 번호와 함께 내용을 출력한다.

> : 파일의 내용을 덮어쓴다.

>> : 파일의 내용이 있다면 뒤에 내용을 추가한다.

 

파일 검색 : find

find [파일 경로][-name][파일 이름][-type d/f]

지정된 [파일 경로]에서 이름이 [파일 이름]인

파일 및 디렉토리를 검색하는 명령어

 

명령어의 끝에 -type d 혹은 -type f를 작성하여 디렉토리나 폴더만을 검색할 수 있다.

 

명령어 옵션 확인: --help

[사용하려는 명령어] --help

 

간단한 실습

1.  directory를 살펴 봤을 때 hello.py 파일이 있음을 알 수 있다.

2. mv 명령어로 hello.py 파일을 greeting 디렉토리로 이동시켰을 때 문제없이 이동됐음을 알 수 있다.

 

1. directory를 확인 했을 때 greeting과 myinformation 폴더가 있음을 알 수 있다.

2. cp -r 명령어를 사용하여 directory를 하위 디렉토리를 포함하여 elicer_infor 폴더로 복사한다.

3. elicer_infor에 directory가 하위디렉토리를 포함하여 모두 복사됐음을 알 수 있다.

1. cat 명령어를 사용하여 answer.txt를 읽었을 때 "print("my name is Uno)"의 내용이 있음을 알 수 있다.

2. cat answer.txt >> hello.py는 answer.txt의 내용을 hello.py에 추가하는 명령어다.

3. hello.py를 출력했을 때 정상적으로 출력됐음을 알 수 있다.

 

다양한 명령어

1. head: 처음 N줄 출력

2. tail: 마지막 N줄 출력

3. alias: 지정 명령어

4. more: 화면단위 출력

5. diff: 파일 비교

6. su: 현재 사용자 변경

7. which: 절대경로

8. wc: 라인, 단어의 수

9. shutdown: 시스템 종료

 

나노 텍스트 에디터

 

다음과 같은 명령으로 나노 텍스트 에디터를 실행한다.

nano[편집하려는 파일 이름] 

 

단축기

단축기 동작 단축기 동작
Ctrl + O 저장하기 Alt + 6 복사하기
Ctrl + X 종료하기 Ctrl + U 붙여넣기
Ctrl + W 검색하기 Ctrl + ^ 여러 줄 선택

 

 

'앨리스 AI' 카테고리의 다른 글

엘리스 AI 4주차 flask 기초  (0) 2021.07.12
엘리스 AI 3주차 HTML/CSS  (0) 2021.07.05
앨리스 AI 트랙 1주차 GIT  (0) 2021.06.22

댓글