CLI

지은·2022년 9월 1일
0

Node.js Library

목록 보기
1/14
post-thumbnail

I/O(Input/Output)

: 컴퓨터를 조작하기 위한 입력과 출력

입력 소스(Input source) : 컴퓨터에 새로운 명령을 전달하는 모든 소스로 마우스, 키보드, 카메라, 마이크 등

출력 소스(Outut surce) : 화면(시각적 출력), 스피커(청각적 출력), 스마트홈으로 연결한 전구나 가전제품 등


CLI

  • CLI(Command Line Interface) : 글자의 입출력을 통해 사용자와 컴퓨터 간 소통하는 방식
  • GUI(Graphical User Interface) : 그래픽을 이용해 사용자와 소통하는 방식

CLI 명령어(CLI command)

프롬프트(Prompt)

: 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
프롬프트에 입력한 명령어를 실행하려면 Enter 키를 누르면 된다.

명령어(Command)

옵션

  • 명령어에는 옵션이 있는데, 특정 명령어의 옵션을 사용하는 경우에는 -를 이용해 옵션을 입력했다고 컴퓨터에 전달한다.
  • - 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않는다.

-h --help
각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인할 수 있다.

cp
cp -h
cp --help

pwd : 현재 위치 확인하기

pwd (print working directry) : 현재 위치(경로)를 확인할 수 있는 명령어

  • CLI에서 폴더를 열거나 닫으면서 이동하면 현재 위치가 헷갈릴 수 있는데, 그럴때마다 pwd 명령어를 치면 컴퓨터는 현재 작업 중인 폴더의 위치를 출력한다.
  • directory : 폴더
    pwd를 실행하면 /Users/[사용자명]이 출력된다.

mkdir : 새로운 폴더 생성하기

mkdir (make directories) : 폴더를 생성하는 명령어

mkdir myNewFolder # myNewFolder라는 폴더를 생성한다.

폴더 또는 파일의 이름에 공백이나 특수문자가 있으면 앞에 백슬래시\를 붙여 적용한다.

mkdir my\ new\ folder # my new folder 라는 폴더를 생성한다.

ls : 현재 경로에 포함된 파일이나 폴더 확인하기

ls : list
특정 폴더에 포함된 파일이나 하위 폴더 리스트를 출력하는 명령어
ls를 실행했을 때 :

ls의 옵션

-l (all) : 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력한다.
-a : 폴더나 파일의 포맷(format)을 전부 표현한다.

ls -l을 실행했을 때 :

drwxr-xr-x   2 jieunchun  staff     64  9  1 09:23 myNewFolder # 폴더
-rw-r--r--   1 jieunchun  staff     42  8 11 17:28 .zprofile # 파일

여기서 가장 왼쪽에 출력되는 글자가 d로 출력된 경우 폴더를 나타내고, -로 출력된 경우 파일을 나타낸다.

open . : 폴더를 GUI의 탐색기로 실행하기

open . : macOS에서 현재 위치를 GUI로 실행하는 명령어
open .을 실행했을 때 :


cd : 폴더에 진입하기

cd(change directory) : 프롬프트에서 상호작용하는 폴더를 다른 폴더로 변경하는 명령어

cd Desktop # 데스크탑 폴더에 진입한다.
cd .. # 상위 폴더로 진입한다.
cd / # 루트 폴더로 진입한다.
  • 폴더는 cd 명령어를 통해 진입할 수 있지만, 파일은 진입할 수 없다.

touch : 파일 생성하기

touch [file_name] : 파일을 생성하는 명령어

touch memo.txt # memo.txt 라는 텍스트 파일을 생성한다.

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

cat [file_name] : 파일의 내용을 터미널에 출력하는 명령어

cat memo.txt # 파일의 내용인 myemail@gmail.com이 출력된다.

CLI에서 파일의 내용을 수정하려면 어떻게 해야할까?
➡️ CLI에서 텍스트를 편집할 수 있도록 CLI 전용 텍스트 편집기가 있다.

CLI 텍스트 에디터


rm : 폴더나 파일 삭제하기

rm (remove) : 폴더나 파일을 삭제하는 명령어

  • 명령어 rm으로 삭제한 폴더나 파일은 휴지통을 거치지 않고 삭제된다.
  • 명령어 rm은 단일 파일만 삭제할 수 있다.
    만약 폴더를 삭제하려면 옵션을 이용한다.
rm memo.txt # memo.txt를 삭제한다.

rm의 옵션

-r (recursive) : 폴더를 지울 때 사용하는 옵션
-f (force) : 질문을 받지 않고 지울 때 사용하는 옵션

rm -rf myNewFolder # myNewFolder를 삭제한다.

mv : 폴더나 파일 이동시키기, 이름 변경하기

mv [file_name] [folder_name] (move) : 폴더나 파일을 이동할 때 사용하는 명령어

mv memo.txt myNewFolder/ # memo.txt를 myNewFolder로 이동한다.

폴더나 파일의 이름을 변경하는 데에 사용할 수도 있다.
mv [file_name] [file_name]

mv memo.txt myMemo.txt # 파일명을 memo에서 myMemo로 변경한다.

컴퓨터가 폴더나 파일을 옮기는 방법

  1. 파일을 잠시 저장한다.
  2. 원래 위치에 있는 파일을 삭제한다.
  3. 도착 폴더에서 1에서 저장해둔 내용으로 새로운 파일을 생성한다.
  • 명령어 mv에 입력하는 파일의 원래 위치와 도착 폴더의 위치가 같고, 이름만 다른 경우, 컴퓨터는 파일을 삭제하고 새롭게 생성하는 대신 파일의 이름만 변경한다.

cp : 폴더나 파일 복사하기

cp [file_name] [file_name] (copy) : 폴더나 파일을 복사하는 명령어

cp memo.txt memo2.txt # memo.txt를 복사해 memo2.txt를 생성

폴더를 복사하기 위해 명령어 cp를 사용하려면, 명령어 rm으로 폴더를 삭제할 때처럼 메세지가 출력된다. 따라서, 폴더를 복사하려면 옵션을 이용한다.

cp의 옵션

r (recursive) : 폴더를 복사할 때 사용하는 옵션
f (force) : 질문을 받지 않고 복사할 때 사용하는 옵션

cp -rf myNewFolder mySecondFloder # myNewFolder를 복사해 mySecondFloder 생성

컴퓨터가 폴더나 파일을 복사하는 방법

  1. 파일을 잠시 저장한다.
  2. 원래 위치에 있는 파일을 삭제한다.
  3. 도착 폴더에서 1에서 저장해둔 내용으로 새로운 파일을 생성한다.
  • 파일을 옮기는 과정에서 원래 위치의 파일을 삭제하는 과정이 빠진다.

경로

절대 경로

  • 명령어 pwd로 확인할 수 있다.
  • 루트 폴더(/)를 기준으로 한다.
/Users/jieunchun/Desktop/myNewFolder # 루트폴더(/)에 폴더 jieunchun이 있다.
  • ~/ = /Users/[username]/ : 루트 폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태
~/Desktop/myNewFolder # 위의 경로와 같다.

상대 경로

  • 특정 폴더 또는 파일의 위치를 기준으로 나타낸다.
    . : 현재 폴더
    .. : 상위 폴더
    / : 폴더 내부를 의미
    ./ : 현재 폴더보다 아래의 폴더로 진입 (.은 현재 폴더, /은 폴더 내부)
cd ./myNewFolder # 현재 폴더보다 아래의 myNewFolder로 진입한다.
  • 대부분의 CLI명령어는 경로를 인식한다.
mv memo.txt ../ ../ # memo.txt는 상위 폴더로 2번 이동시킨다.

관리자 권한

컴퓨터의 운영체제에는 사용자와 관리자가 있다.

  • 사용자 : 프로그램을 실행할 수 있지만, 변경할 수 없도록 제한된 권한을 가지고 있는 계정
  • 관리자 : 프로그램을 설치하거나 변경, 삭제할 수 있는 권한을 가지고 있는 계정

관리자 권한이 생긴 이유

과거의 Windows에는 사용자가 없었고, 항상 관리자 권한으로 실행되었다.
때문에 악성코드가 삽입된 프로그램이 어떠한 안전장치도 없이 설치되거나, 시스템 설정을 변경하는 프로그램들로 인해 프로그램이 충돌하여 시스템이 마비되고 블루스크린이 뜨곤 했다. 사용자를 이런 것들로부터 보호하고자 사용자 계정과 사용자 계정 컨트롤이 만들어졌다.

사용자 계정 컨트롤(UAC, User Account Control)

: 사용자가 모르는 사이에 시스템 설정을 변경하는 악성코드가 실행될 때, 접근 권한을 막아 사용자를 보호한다.


CLI로 관리자 권한을 획득하고 사용하는 방법

루트 폴더(/) : 관리자 권한 영역으로 사용자 권한으로는 어떠한 폴더나 파일도 생성하거나 변경, 삭제할 수 없다.

➡️ 루트 폴더에서 명령어 mkdir을 이용해 폴더 test를 생성하면, Read-only file system이라는 에러가 나온다.


whoami

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

  • 명령어 whoami로 확인할 수 있는 사용자는 폴더의 형태로 존재하는데, 이는 Users/폴더에서 username 폴더를 확인할 수 있다.

  • 사용자 권한은 username 폴더 내에서만 자유롭게 사용할 수 있다. 반면, 관리자 권한을 이용하면 다른 사용자 폴더에도 영향을 끼칠 수 있고, 시스템 자체에도 접근이 가능하다.


sudo

sudo(substitute user do) : 사용자 환경에서 관리자 권한을 획득하는 명령어

  • 기본적인 CLI 명령어 앞에 작성하여, 관리자의 권한을 일시적으로 획득한다.
mkdir justMkdir # 사용자 권한으로 justMkdir 폴더를 생성한다.
sudo mkdir sudoMkir # 관리자 권한으로 sudoMkdir 폴더를 생성한다.
  • 명령어 sudo를 이용해 생성한 폴더의 소유자는 루트이다. (= 관리자의 권한으로 생성되었다는 뜻)
    ls -l : 특정 폴더나 파일이 사용자의 소유로 생성되었는지, 관리자의 소유로 생성되었는지 확인할 수 있다.

정리

  • 관리자 권한은 사용자가 프로그램을 설치, 변경 또는 삭제하는 권한을 차단하여 시스템을 안전하게 보호한다.
  • 사용자는 주어진 권한만 사용할 수 있으며, 프로그램을 설치, 변경 또는 삭제하기 위해서는 관리자 권한을 획득하여야 한다.
profile
개발 공부 기록 블로그

0개의 댓글