Linux 기초 - 1

2021. 9. 1. 11:19·SE Bootcamp 내용 정리

Linux 기초

  • CLI 기본 명령어
  • 패키지와 패키지 매니저
  • nvm, node.js, npm
  • 짝수생성기 만들어보기

CLI 기본 명령어

학습 목표

 

* 리눅스 터미널 실행하기
* 리눅스 터미널 기본 명령어 익히기
    - pwd: 현재 위치 확인
    - mkdir: 디렉토리 생성
    - ls: 폴더나 파일의 목록을 출력
    - nautilus(ubuntu), open(masOS): 현재 폴더를  탐색기로 염
    - cd: 폴더에 진입
    - touch: 새로운 파일을 생성
    - cat: 파일의 내용을 터미널에 출력
    - rm: 폴더나 파일을 삭제
    - mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경
    - cp: 폴더나 파일을 복사
    - sudo: 관리자 권한을 이해
* 명령어 사용시의 키워드 이해
    `/`: 루트 디렉토리
    `~`: 홈 디렉토리
*  절대경로와 상대경로의 차이를 이해
    - 절대경로의 시작은 / (루트 디렉토리)
    - 상대경로의 시작은 . (현재 디렉토리)
* 텍스트 에디터 nano를 이용한 파일 수정 및 저장

기본적인 명령어

프롬프트(Prompt)

터미널에서 키보드 입력을 확인하고 편집할 수 있는 한 줄의 공간
 

Pwd: 현재 위치 확인하기

Print Working Directory의 약자

mkdir: 새로운 폴더 생성

mkdir 생성폴더명

mkdir hellworld

ls: 특정 폴더의 포함된 파일이나 폴더 확인하기

자주 사용하는 옵션

a: all 이라는 뜻; 숨어 있는 폴더나 파일을 포함한 모든 항목 출력
l: 폴더나 파일의 포맷을 전부 표현
    `drwxr-xr-x`
    `-rwxr-xr--`    이런식
→ 시작의 d는 디렉토리(폴더), `-`는 파일을 나타냄

명령어를 이용해 폴더를 GUI 탐색기로 실행

현재 위치를 GUI로 실행하는 명령어
Ubuntu

nautilus .

 
macOS

open .

cd: 폴더에 진입하기

change directory의 약자. 프롬프트로 상호 작용하는 폴더를 다른 폴더로 변경한다는 의미

cd hellworld
  • 폴더 또는 파일의 이름에 공백(띄어쓰기)나 특수문자가 있으면 백슬래시(\)를 이용하여 적용*

touch: 파일 생성하기

touch 파일명.확장자명

touch hi.txt

GUI로 파일에 텍스트 입력하기

Ubuntu와 macOS에도 윈도우의 메모장과 유사한 텍스트 편집기가 존재
→ gedit(Ubuntu) / 텍스트 편집기(text editor)(macOS)

cat: 파일의 내용을 터미널에 출력

cat 파일명.확장자명

cat hi.txt

터미널에 출력될 때, 백슬래시(\)는 이어지는 특수문자를 출력하는 용도이므로, 실제 터미널에는 나타나지 않는다

rm: 폴더나 파일 삭제

remove의 뜻
명령어 rm으로 삭제한 폴더나 파일은 휴지통을 거치지 않고 삭제됨

rm bye.txt

 
폴더를 삭제하려면 옵션을 사용해야 함(rm 만으로는 삭제x)

rm -rf bye

-r: recursive의 뜻. 폴더를 지울 때 사용
-f: force의 뜻. 질문을 받지 않고 지울 때 사용(강제)

mv: 폴더나 파일의 이름을 변경, 위치 옮기기

move의 약자
 
위치 옮기기

mv    폴더나 파일의 이름    도착폴더의 이름

> mv bye.txt bye/

 
폴더나 파일의 이름 변경시

mv 폴더나 파일의 이름    변경하고자하는 이름

> mv bye.txt    helloWorld.txt

cp: 폴더나 파일을 복사

copy의 약자
 
파일을 복사하는 경우

cp 원본 파일 이름    복사할 파일 이름

> cp helloWorld.txt hiComputer.txt

 
폴더를 복사하는 경우: rm 처럼 옵션을 사용해야 함

cp -rf bye hi

관리자 권한과 경로

사용자와 관리자

윈도우 OS의 초기 버전은 항상 관리자 권한으로 실행되었음
→ 이는 개발지식이 없는 사용자가 정보를 탈취 발생(악성코드 삽입)
→ 또한 프로그램의 충돌(2개의 프로그램이 하나의 os를 놓고 다투는 과정)로 인한 블루스크린 발생
 
이 점을 해결하기 위해 ms사에서는 사용자 계정 컨트롤(UAC)를 탑재함
 
리눅스 기반 운영체제에도 이는 존재(사실은 리눅스가 먼저 도입)
→ ubuntu에서는 사용자가 절대 관리자 권한에 접근할 수 없도록 구분해둠
→ 다만 특정 명령어를 통해 잠시 빌려올 수 있다

절대 경로와 상대 경로

절대경로: 기준점(루트폴더 /)으로부터의 절대적인 위치
→ 특정 폴더나 파일이 루트폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지?
 
상대경로: 현재위치가 기준점
→ 현재 위치는 .(점) 상위 폴더는 ..(점 2개)

상위 폴더의 상위폴더로 특정 파일 이동
> mv helloWorld.txt ../../

> cd ../../

관리자(root) 권한

절대 경로의 기준점인 루트폴더(/)는 리눅스의 관리자 영역
→ 어떤 일이 있어도 일반 사용자에게 권한을 완전히 주지 않음
 

현재 로그인된 사용자를 확인하는 명령어: 

> whoami

 
사용자 권한은 [username] 폴더 내에서만 자유롭게 사용할 수 있다
→ username에 맞게 폴더를 생성하기 때문에 그 해당 폴더 내에서만 권한을 사용 가능하도록 제한
→ 타 사용자끼리 침범 불가. But, 관리자 권한을 이용하면 가능
→ 관리자 권한으로 변경한 내용은 사용자 권한으로 해결할 수 없다
 

사용자 폴더의 경로(path)는 ~/ 로 표시됨
> cd ~/
# 사용자 폴더의 경로인 `/home/[username]’ 으로 이동됨

sudo: 관리자 권한을 “일시적으로” 획득하는 명령어

프로그램을 설치, 변경 또는 삭제하기 위해서는 관리자 권한이 필요
명령어 sudo는 “기본적인 CLI 명령어의 앞”에 작성
 

명령어 sudo를 이용해 생성한 폴더나 파일의 경우 소유자는 루트(root)

> sudo mkdir sudoMkdir
> ls -l
# 권한이 root임을 확인 가능

텍스트 에디터 nano

CLI 환경에서 유명한 에디터는 vim(vi), emacs 등이 있지만 이것들은 진입 장벽이 높다
→ 제대로 사용하기 위해서는 따로 학습을 해야할 정도
 
반면에 nano 에디터는 사용법이 간단하다
→ 대부분의 리눅스 환경에 탑재되어 있음

nano 실행

> nano hello.js    #hello.js를 nano에서 열기
> nano        # 그냥 실행하기

파일 열기(파일 읽기): ^R

ctrl+R)
그래도 가장 쉬운 방법은 터미널에서 파일 지정해서 여는 방법이다

> nano 파일이름

파일 편집 후 종료: ^X

ctrl+X

파일 저장: ^O

nano를 종료하지 않고 파일을 저장하는 것
writeOut의 뜻
ctrl+O

'SE Bootcamp 내용 정리' 카테고리의 다른 글

git 기초  (0) 2021.09.02
Linux 기초 - 2  (0) 2021.09.02
css 기초 - 2  (0) 2021.08.31
css 기초 - 1  (0) 2021.08.27
html 기초  (0) 2021.08.27
'SE Bootcamp 내용 정리' 카테고리의 다른 글
  • git 기초
  • Linux 기초 - 2
  • css 기초 - 2
  • css 기초 - 1
레실이
레실이
  • 레실이
    레실이의 티스토리
    레실이
  • 전체
    오늘
    어제
    • 분류 전체보기 (91)
      • SE Bootcamp 내용 정리 (63)
      • 알고리즘 연습 (7)
      • Project 주저리 (4)
      • 기술 면접 source (3)
      • 개발 일상 (12)
      • 생성 AI 활용 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    promise
    PickAndDrink
    node
    state
    ubuntu
    DOM
    비동기
    CORS
    CSR
    데이터베이스
    IT
    useRef
    useState
    mongoDB
    CSS
    JS
    인증/보안
    Linux
    JavaScript
    Ajax
    알고리즘
    문자열
    MVC
    node.js
    객체
    fastapi
    ORM
    Python
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레실이
Linux 기초 - 1
상단으로

티스토리툴바