Linux/리눅스 기초와 Shell Script작성

12월 16일

nypd99 2025. 2. 25. 17:42

09:00~09:45 / 클라우드_엔지니어링_리눅스기본_v4 p.1~p.9

  • Multi-user : 리눅스는 여러 사용자가 동시에 시스템에 접근할 수 있도록 하며, 각 사용자에게 독립적인 환경과 권한을 부여
  • Multi-processing : 단일 CPU에서 여러 개의 작업을 동시에 처리하는 것을 의미
  • Multi-tasking : 리눅스는 선점형 멀티태스킹을 통해 여러 작업을 동시에 처리하며, 각 작업은 독립적으로 실행
  • 1991년 핀란드 헬싱키 대학의 리누스 토발즈에 의해 리눅스 커널이 개발 됨

쉘(Shell)

  • 사용자의 명령어를 해석하고 운영체제가 알아 들을 수 있게 지시해주는 것으로, 사용자와 커널을 이어준다.

커널(Kernel)

  • 운영체제의 핵심부분으로써 주로 디바이스관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공 같은 기능을 관리하는 등, 컴퓨터 자원을 관리한다.

10:00~10:45 / p.10~p.14 리눅스 명령어 학습

<uname 명령어>

  • a, –all:

모든 시스템 정보를 출력합니다. 단, -p나 -i 정보가 없는 경우 생략합니다.

  • s, –kernel-name:

s 옵션은 커널 이름을 출력합니다

  • n, –nodename:

네트워크 호스트네임을 출력합니다.

  • r, –kernel-release

r 옵션은 커널의 릴리스 버전을 출력합니다.

  • v, –kernel-version

커널 버전을 출력합니다.

  • m, –machine

m 옵션은 시스템의 하드웨어 아키텍처를 출력합니다.

  • p, –processor

프로세서 타입을 출력합니다. 확인할 수 없는 경우 “unknown”을 출력합니다.

  • i, –hardware-platform

하드웨어 플랫폼 정보를 출력합니다. 확인할 수 없는 경우 “unknown”을 출력합니다.

  • o, –operating-system

o 옵션은 운영체제 이름을 출력합니다.

–help

도움말을 출력하고 종료합니다.

–version

버전 정보를 출력하고 종료합니다.

<ls 명령어>

  • l : 파일들을 나열할때 자세히 출력한다.
  • a : 경로안의 모든 파일을 나열한다.(숨김파일도 포함)
  • R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다.
  • h : 파일크기를 해석파기 편하게 출력한다.
  • r : 출력 결과를 내림차순으로 정렬한다.
  • t : 출력 결과를 파일이 수정된 시간을 기준으로 정렬한다.

11:00~11:45 / p.15~p.16 암호화, 리눅스 명령어 학습

<Key>

  • 대칭키 : 암호화, 복호화 할 때 사용하는 키가 동일한 경우, 1개의 키 사용
  • 비대칭키 : 암호화 할 때 사용하는 키와 복호화할 때 사용하는 키가 다른 경우

<리눅스 서버에 암호 입력 없이 로그인하기>

ssh-copy-id student@192.168.0.14

: 로컬호스트의 공용 키를 원격 호스트의 uthorized_keys 파일에 복사합니다. ssh-copy-id 또한 알맞은 권한을 원격 호스트의 홈, ~/.ssh, ~/.ssh/authorized_keys에 부여합니다.

  • 사용자 정보 보기

<su (Switch User)> - 계정 전환

: 현재 계정을 로그아웃하지 않고 다른 계정으로 전환하는 명령어

-c : 셀을 실행하지 않고, 주어진 명령만을 수행합니다.

-s : 지정된 셀로 로그인합니다.

-, -ㅣ: 지정한 사용자의 환경 변수를 적용하여 로그인합니다.

*su 는 root 계정의 환경 변수를 가져오지 않고, 현재 계정의 환경 변수를 사용

*su - 는 root 디렉토리로 이동(환경 변수를 가져옴)

<sudo (SuperUserDO)> - 권한 빌림

: 현재 계정에서 단순히 root 의 권한 만을 빌리는 명령어

: sudo [command]

: 하나의 명령에 대하여 일시적으로 root 권한을 사용

12:00~12:45 / p.17~p.25, ubuntu22-04 VM설치

<man 명령어>

: manual의 약자. 리눅스나 유닉스 시스템에서 명령어나 함수, 라이브러리, 기타 시스템 작동 방법에 대한 매뉴얼 페이지를 보여준다.

: man [명령어 또는 주제]

  • ⬆️ 또는 k / ⬇️ 또는 j : 한 줄씩 이동
  • PgUp 또는 SpaceBar : 이전 페이지로 이동
  • PgDn 또는 b : 다음 페이지로 이동
  • Enter : 한 줄 밑으로 내려간다
  • /단어 : 특정 단어 검색
  • n : 다음 단어로 이동
  • h : man 명령어에 대한 도움말
  • q : 종료

<man 옵션>

  • -k 키워드 : 해당 ‘키워드’로 발견되는 모든 메뉴얼의 내용을 검색하여 보여준다.
  • -f 키워드 : 해당 ‘키워드’에 대한 완벽히 일치되는 메뉴얼 페이지에 대한 정보를 보여준다.
  • -w 키워드 : man 명령 실행 시에 호출되는 ‘메뉴얼 페이지’ 파일의 위치를 보여준다.
  • -s, -S : 특정 section을 지정할 때 사용한다.

<리눅스 파일 유형>

  • Regular : 일반적인 파일들을 저장하는데 사용된다. 텍스트, 이미지, 바이너리 파일 등
  • Directory : 폴더와 같은 개념. 파일들과 디렉터리를 그룹화하고 구조화한다. 또한 파일의 계층 구조를 나타낸다.
  • Symbolic link : windows의 바로가기와 같은 개념. 특정 파일이나 디렉터리를 간접적으로 가리키는 파일이다. 즉, 가리키는 원본 파일과 가리키는 파일 (Symbolic links)가 따로 존재한다.
  • Device Files : 시스템의 하드웨어 장치를 표현하는 파일이다. 즉, 물리적인 장치와 시스템 간 상호작용을 나타낸다. 블록 장치(ex - 하드 디스크)와 문자 장치(ex - 터미널)로 구분된다.

14:00~14:45 / p.26~p.31 리눅스 명령어 학습

<디렉토리 관련 명령어>

  • pwd : 디렉토리 경로 확인
  • cd : 디렉토리 이동 (change directory)
  • ls : 디렉토리 내용 확인
  • mkdir : 디렉토리 생성
  • rmdir : 디렉토리 삭제
  • cp -r : 디렉토리 복사
  • mv : 디렉토리 잘라내기

15:00~15:45 / p.31~p.37 리눅스 명령어 학습

<touch 명령어 옵션>

-a
현 시간으로 파일의 접근 시간, 변경 시간을 수정
-c
기존 파일이 없으면 파일이 생성되지 않음
-m
현재 시간으로 파일의 수정 시간, 변경 시간을 수정
-d
지정한 시간으로 접근 시간, 수정 시간이 변경되고 변경시간은 현제 시간으로 수정 (yyyy-MM-dd hh:mm:ss 포맷으로 지정)
-r
지정한 파일의 접근 시간, 수정 시간으로 파일이 수정되고 변경 시간은 현재 시간으로 수정
-t
지정한 시간으로 접근 시간, 수정 시간을 수정하고 변경 시간은 현재 시간으로 수정 (yyyyMMddhhmm.ss 포맷으로 지정)

<mkdir 명령어 옵션>

  • mkdir -m 옵션 : 디렉토리의 접근 권한을 설정한다.
  • mkdir -p 옵션 : 여러 덱스의 하위 디렉토리를 생성시에 사용한다.
  • mkdir -v 옵션 : 디렉토리 생성시 메세지를 출력한다.
  • mkdir -z 옵션 : SELinux 보안 컨텍스트 설정을 한다. [직접 확인 필요]
  • mkdir --help 옵션 : 도움말을 출력한다.
  • mkdir --version : mkdir 정보를 출력한다

<mkdir과 touch의 차이>

mkdir은 디렉토리 생성

touch는 파일 생성

<cp 명령어> - 파일/디렉토리 복사(copy)

  • i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻습니다. (cp: overwrite ‘[파일 이름]’?)
  • b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성합니다.
  • f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 합니다.
  • r : 하위 디렉토리 까지 모두 복사합니다.
  • a : 원본 파일의 속성, 링크 정보까지 모두 복사합니다.
  • p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사합니다.
  • v : 복사 진행 상태를 출력합니다.

<mv 명령어> - 파일/디렉토리 이름 변경과 이동

mv [옵션][이동할 파일][이동 될 위치]

  • b : 이동될 파일이 존재하면 백업파일을 만듦
  • i : 이동될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻습니다.
  • b : 이동될 파일이 이름이 이미 존재할 경우, 백업파일을 생성합니다.
  • f :이동 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 합니다.
  • n :이동 될 파일이 이름이 이미 존재 할 경우, 덮어쓰기를 하지 않습니다.
  • r : 하위 디렉토리 까지 모두 이동합니다.
  • v : 이동 진행 상태를 출력합니다.

<rm 명령어> - 파일/디렉토리 제거

rm [옵션][삭제할 디렉토리/파일]

rm [옵션][삭제 대상1][삭제 대상2][삭제 대상3] …

rm -rf* : 현재 위치의 모든 파일 제거(즉시 삭제)

  • f : 강제로 파일이나 디렉토리를 삭제하고 대상이 없는 경우에는 메시지를 출력하지 않습니다.
  • r : 디렉토리 내부의 모든 내용을 삭제합니다.
  • d : 비어있는 디렉토리들만 제거
  • i : 매번 삭제할때마다 사용자에게 삭제할것인지 묻습니다.
  • l : 3개의 이상의 파일을 삭제하거나 디렉토리 내부가 비어있지 않을때만 삭제할것인지 묻습니다.
  • v : 삭제되는 대상의 정보를 출력합니다.
  • head : file의 앞부분의 일부를 보여줌
  • tail : file의 뒷부분의 일부를 보여줌
  • more : 파일의 앞부분부터 화면의 라인 만큼 읽어들여 보여줌. 위에서 아래로의 단방향으로만 이동이 가능. space키를 이용하면 화면의 크기만큼 아래로 이동하며 enter를 이용하면 한칸씩 이동하며 이후 라인을 보여줌.
  • less : 전체 파일을 다 읽지 않고 하면의 크기에 해당하는 라인만 읽어줌. more 보다 빠름.

16:00~16:45 / p.38~p.43 shell, 리눅스 명령어 학습, git설치

<Shell 종류>

  • Bourne Shell : 벨 연구소의 스티브본이 개발, 많은 셀 스크립트의 기반이 되는 셀
  • C Shell : C언어 구문과 유사, Bourne Shell을 확장하여 히스토리, 작업제어, 엘리어스 등 기능 추가, 개발자들에게 유용한 기능들을 제공
  • TC Schell : C Shell에 명령 행 완성과 명령 행 편집 기능을 추가
  • Korn Shell : Bourne Shell 과 호환되며 C Shell의 많은 기능을 포함, Unix 계열에서 많이 사용
  • Bourne Again Shell (bash) : 리눅스에서 가장 많이 사용되는 Shell로 Bourne Shell을 토대로 C Shell과 Korn Shell 의 기능들을 통합시켜 개발

<Redirection>

  • </<<: 입력 방향 재지정
  • >/>>: 출력 방향 재지정
  • >: 덮어씀
  • >>: 추가됨

17:00~17:50 / 정리