과제 : 리눅스 운영체제
what?
Linux를 공부합니다
why?
Linux환경에 익숙해지기 위한 개념 학습이 필요
how?
생활코딩 리눅스 영상을 보고 내용을 학습 후 이를 정리
linux file&directory
ls -al : 파일의 목록을 보여줌(감춰진파일까지 전부)
ls : 현재 위치 아래의 파일 보여줌
ls -l : 현재 위치 아래의 파일 자세히 보여줌
pwd : 현재 위치 경로를 보여줌
mkdir [파일이름] : 디렉토리 생성
touch test.txt: 비어있는 파일 생성
cd [파일이름]: 해당 파일로 이동
rm: 파일 및 디렉토리 삭제 명령어
cat: 파일의 내용을 확인할 수 있음
파일과 디렉토리 구분!
drwxrwxr-x : 디렉토리
-rw-rw-r-- : 파일
linux help&man
명령어 --help:해당 명령어의 옵션들을 확인
man 명령어:명령어에 대한 자세한 설명 확인 -> /sort입력 시 sort라는 단어만 찾을 수 있음
sudo
sudo 란? 슈퍼명령어, super user do
예시를 통해 알아보자
sudo를 써주지 않으면 권한 거부.
따라서, sudo를 통해 install가능!
file edit (nano)
nano를 통해 파일을 생성하는 법
nano > enter > html 생성 > ctrl+O( 파일이름생성 ) > enter > ctrl+X( exit )
nano를 통해 파일을 수정하는 법
nano [파일이름]
package manager
apt package manager 를 사용하여 package manager를 알아봅시다.
1) sudo apt-get update를 통해 최신상태로 업데이트
2) sudo apt-cache search htop 를 통해 시스템 상태를 조작하지 않지만 update 명령을 통해 가져온 패키지 메타 데이터에서 각종 유용한 정보를 검색하고 생성
3) sudo apt-get install htop을 통해 htop을 다운로드
4) sudo apt-get install htop를 통해 업데이트도 가능
5) sudo apt-get remove htop를 통해 삭제 가능
file download (wget)
wget 이란????
HTTP 통신 또는 FTP 통신을 사용해 서버에서 파일 또는 콘텐츠를 다운로드할 때 사용하는 소프트웨어
-
how?
주소를 copy 해 wget 명령어 뒤에 paste 하면 파일을 다운로드 할 수 있습니다.
-
wget -O option
wget -O [파일이름] [주소]: 파일을 지정한 이름으로 다운로드 가능
source download (git)
1) git 이 없다면 sudo apt-get install git을 통해 다운로드
2) [오픈소스 코드의 주소]를 copy
3) git clone [오픈소스 코드의 주소] src
([오픈소스 코드의 주소]가 src라는 디렉토리에 다운로드 됨)
4) ls -l을 통해 다운로드를 확인해볼 수 있음
CLI vs GUI
CLI(Command Line Interface)란?
- 글자의 입출력을 통해 사용자와 컴퓨터 간 소통하는 방식
- 대표적인 CLI로는 윈도우의 cmd, 맥의 terminal, 리눅스의 terminal
- 키보드 + 명령어 사용 가능
GUI(Graphic User Interface)란?
- 사용자가 그래픽을 통해 사용자와 소통하는 방식
- 그래픽으로 전달되는 그림이나, 아이콘을 통해서 소통
- 키보드 + 마우스 모두 사용 가능
Q. CLI 와 GUI 중 어떤 것이 컴퓨터 에너지를 많이 쓸까요?
A. 정답은 GUI 방식입니다!
- 일반인들이 사용할때에는 사용하기 쉬운 GUI를 권장합니다. 하지만 서버 컴퓨터나 데이터를 분석하는 시스템 등은 CLI를 사용하는 것으로 용량,cpu,메모리 등을 더 적게 사용할 수 있습니다.
- GUI방식은 배우기 쉽지만 순차적으로 진행하는 일을 자동화하기는 어렵습니다.
Why CLI?
1. sequence execution(순차 실행)
먼저 CLI환경에서 디렉토리에 접근하는 법을 생각해봅시다.
mkdir test를 통해 디렉토리를 생성 > cd test를 통해 디렉토리로 이동
우리는 이 과정을 mkdir test;cd test 이렇게 명령어 한줄로 작성 할 수 있습니다. 컴퓨터는 순서대로 그 명령들을 실행하고, 최종적인 결과만을 알려줍니다.
2. pipline(파이프라인)
- 파이프의 정의 : '무언가를 어느 한 곳에서 다른 곳으로 전송한다'
- 파이프라인(|)의 특성
1) 프로그램과 프로그램을 연결한다
2) 하나의 명령의 실행 결과를 다른 명령의 입력으로 준다
(= 하나의 프로그램의 결과를 다른 프로그램의 입력으로 준다)
(= 하나의 프로세스의 출력의 결과를 다른 프로세스의 입력으로 준다)
✋ 여기서 잠깐 grep 명령어를 알아봅시다!
- EX 1) test.txt 안에서 linux가 포함되어 있는 행만 출력
=>grep linux test.txt명령어 사용- EX 2) ls --help 안에 sort라는 문자가 포함된 행만 출력
=>ls --help | grep sort- EX 3) ls --help 안에 sort라는 문자가 포함되어 있으면서 file이라는 문자도 포함되어 있는 행만 출력
=>ls --help | grep sort | grep file
IO Redirection Output
그림을 통해 알아봅시다
UNIX 계열의 시스템은 어떤 프로그램이 실행되면, 그것을 프로세스라고 합니다.
- command line arguments : 명령어에 부가적으로 붙는 옵션
- 어떤 프로세스가 실행되는 출력값
- standard output : 명령어를 통해 얻은 결과
- standard error
standard output
ls -l 의 내용을 result.txt로 보내기
=>ls-l > result.txt
=>cat result.txt
=> ls -l의 내용이 result.txt로 보내진 것을 확인할 수 있음
- Command line Arguments -> 프로세스 -> Standard Output에 대한 작업을 Redirection
- 즉, 화면으로 출력되는 방향을 다른 곳으로 돌려서 파일에 저장한 것
standard error
첫번째 예시에서는 에러메세지가 reult2.txt에 담기지 않음
why?
첫번째 예시에서 사용한 '>'의 앞에는 1이라는 숫자가 생략되어있고, 이것은 Standard Output을 Redirection 한것입니다. Standard Error를 Redirection을 한 것이 아닙니다. Standard Error를 Redirection 하려면 '>'앞에 2라는 숫자를 넣어주어야 합니다.
'>'는 명령어를 실행할 때마다 새로운 내용을 넣게 됩니다. 로그를 계속해서 추가해 내용을 저장해야 할 경우가 생길 수 있습니다. 그렇다면 내용을 이어붙일 수 있는 방법은 무엇일까요?
바로 '>>' 이렇게 적어주는 것입니다.
IO Redirection Input

cat은 그림의 Unix process에 해당
명령어 cat을 통해 사용자가 키보드를 통해 입력하는 정보를 standard input으로 받음.
명령어 cat을 통해 hello.txt의 내용을 standard input으로 받음.

linux.txt 의 내용이 입력이 되어 one.txt로 들어가게 됨.
Shell vs Kernel
Kernel
- 알맹이, 핵심, 코어
- Kernel이라고 하는 프로그램은 하드웨어 즉, 물리적인 기계를 직접적으로 제어하는 운영체제에서에서 가장 중심이 됨
Shell
- 껍데기, 주변
- 사용자는 Linux에서 Shell을 대상으로 명령를 입력하고
예) ls -al, ls;pwd 등 - 사용자가 커널을 직접적으로 제어할 수 없기에 사용자가 입력한 명령을 해석해서, 커널이 이해할수 있는 방식으로 커널에게 전달
bash vs zsh
Shell 프로그램 : bash,zsh
shell 이라는 카테고리에 속하는 구체적인 제품 중 하나인 bash 프로그램을 쓰고 있다
shell 프로그램 zsh를 사용하고 있다
- bash와 zsh는 유사한 특성을 가짐
- zsh의 경우 bash가 갖고 있지 않은 추가적인 기능들이 있어서 좀 더 편리하다라고 평가를 받고 있음
Shell Script
- 여러개의 명령어를 순차적으로 실행해야하는 명령의 순서를 script로 작성 후 저장하고 필요할 때마다 불러와서 실행함
- 명령을 실행시키는 작업을 한번에 실행 => 자동화
자동으로 backup해주는 shell script를 작성해 봅시다!
1) nano backup을 통해 빈 파일 생성
[backup]파일 안에 쉘스크립트를 적어줌
#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
- #!/bin/bash
- 밑에 작성되는 코드들이 bin/bash 라는 프로그램을 통해서 해석되어야 한다는 표시이다 - if ! [ -d bak ]; then
mkdir bak
- 현재 디렉토리에 bak 파일이 없다면 만들어주고 있다면 만들지 않음 - fi
- 조건문이 끝났다는 것을 알려줌 - cp *.log bak
- 파일중에 .log로 끝나는 파일을 bak라는 디렉토리로 복사
2) backup파일을 실행하려고 하면 접근 권한이 없다는 오류가 남
따라서 실행가능한 파일을 만들려면
$ chmod +x {shell파일명}를 사용해야함 => 실행가능한 모드를 추가한 것
Directory structure

- / - Root
- 모든 단일 파일 및 디렉토리는 루트 디렉토리에서 시작합니다.
- 루트 사용자 만이 디렉토리 아래에 쓰기 특권이 있습니다.
- / bin - User Binaries
- 사용자가 사용하는 명령어가 있음
예 : ps, ls, ping, grep, cp.
- / sbin - System Binaries
- / bin과 마찬가지로 / sbin도 바이너리 실행 파일을 포함합니다.
- root 사용자(시스템 관리인)가 일반적으로 사용하는 명령어
- 예 : iptables, reboot, shutdown
- / etc - Configuration Files
- 모든 프로그램에 필요한 구성 파일이 들어 있음
- 시스템이 동작하는 방법의 설정을 변경하고 싶다면 이 파일을 찾기
- / dev - Device Files
- 장치 파일을 포함합니다.
- 여기에는 터미널 장치, usb 또는 시스템에 연결된 모든 장치가 포함
- / proc - Process Information
- 시스템 프로세스에 대한 정보가 들어 있습니다.
- 이 파일 시스템은 실행중인 프로세스에 대한 정보를 포함
- / var - Variable Files
- var은 변수 파일을 나타냅니다.
- 증가 할 것으로 예상되는 파일의 내용은이 디렉토리에서 찾을 수 있습니다.
- 임시파일을 저장하기에 좋은 디렉토리
- / tmp - Temporary Files
- 시스템 및 사용자가 만든 임시 파일이 포함 된 디렉토리
- 이 디렉토리의 파일은 시스템이 재부팅 될 때 삭제됨
- / usr - User Programs
- 2 차 수준 프로그램의 바이너리, 라이브러리, 문서 및 소스 코드가 들어있음
- / home - Home Directories
- 모든 사용자가 개인 파일을 저장하는 홈 디렉토리.
- / boot - Boot Loader Files
- 부트 로더 관련 파일
- / lib - System Libraries
- / bin 및 / sbin 아래에있는 바이너리를 지원하는 라이브러리 파일이 들어 있습니다.
- 라이브러리 파일 이름은 ld 또는 lib .so입니다. *
- / opt - Optional add-on Applications
- opt는 선택 사항입니다.
- 개별 공급 업체의 애드온 응용 프로그램을 포함합니다.
- / mnt - Mount Directory
- sysadmin이 파일 시스템을 마운트 할 수있는 임시 마운트 디렉토리.
- / media - Removable Media Devices
- 이동식 장치의 임시 마운트 디렉토리.
- / srv - Service Data
- srv는 서비스를 의미합니다.
- 서버 관련 서비스 관련 데이터가 들어 있습니다.
- 예를 들어, / srv / cvs는 CVS 관련 데이터를 포함합니다.
참고 링크
Author And Source
이 문제에 관하여(과제 : 리눅스 운영체제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@claraqn/리눅스-운영체제-스터디저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)



