본문 바로가기
Etc/Computer Science

Linux - CLI 기본 명령어

by 달의 조각 2022. 6. 30.

 

CLI 기본 명령어
패키지와 패키지 매니저
사용 권한
환경변수

절대 경로와 상대 경로
텍스트 에디터 nano

 


 

명령줄 인터페이스(Command-Line Interface, CLI): 명령어로 컴퓨터를 제어한다
그래픽 사용자 인터페이스(Graphic User Interface): 우리가 보통 컴퓨터를 제어하는 방식

🧐 프로그래밍에서 CLI가 중요한 이유

1. 상대적으로 높은 안정성, 속도 - GUI는 그래픽 작업 또한 필요하다
2. 컴퓨터 자원을 적게 사용한다

 


 

CLI 기본 명령어

 

우리가 보통 사용하는 I/O

입력(Input): 마우스, 키보드 등 컴퓨터에 새로운 명령을 전달하는 모든 소스
출력(Output): 모니터, 스피커, 스마트 홈 등

리눅스 I/O

터미널의 키보드 입력과 모니터 출력으로 모든 작업 가능!

1. 아마존 웹 서비스(AWS, Amazon Web Service)의 클라우드 컴퓨팅 같은 경우에 수많은 서버 컴퓨터를 가동하는데, GUI가 아닌 CLI를 이용할 수밖에 없다
2. CLI 서버 컴퓨터 접속 요청 → 서버 컴퓨터 → 출력(모니터) : 직접 서버 컴퓨터로 찾아가지도 않고 모니터로 소통한다!

 


 

폴더와 파일 생성

 

🖥️ 터미널 실행하기

터미널 → + → Ubuntu

프롬프트(Prompt): 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간

 

🎮 pwd: 현재 위치 확인

print working directory

 

🎮 mkdir: 새로운 폴더 생성

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

특정 폴더에 포함된 파일이나 하위 폴더의 리스트 출력

make directories, list

CLI에서 특정 명령어의 옵션을 사용하는 경우, -를 통해 옵션 전달

ls -l  # 폴더나 파일의 포맷을 전부 표현하라
ls -a  # ALL이라는 의미, 숨어 있는 폴더와 파일을 포함
ls -al 또는 ls-la
drwxr-xr-x   # 첫 글자 d: 디렉토리를 의미, cd로 진입 가능
-rw-r--r--   # 첫 글자 -: 파일을 의미

 

 

🎮 cd: 폴더에 진입

change directory

cd Hello\ World  # 폴더 또는 파일 이름에 공백이 있을 때 백슬래시(\)를 이용

 

🎮 touch: 파일 생성

🎮 > :  실행 결과를 파일로 저장

echo  # 뒤의 내용을 화면에 출력한다

출력하는 대신 hi.txt에 저장

 

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

 

 

🤔 원격 서버에 접속한 상태(네트워크로 연결됨)에서 너무 큰 파일을 출력한다면?
💡 굉장히 비효율적이다!

 


 

폴더 · 파일 삭제, 이름 변경, 위치 옮기기

 

 

🎮 rm: 폴더 · 파일 삭제

휴지통을 거치지 않고 삭제된다!

remove

 

❓ 남은 폴더 bye도 삭제하려고 하면 삭제 불가! 명령어 rm은 단일 파일을 삭제할 수 없기 때문이다

💡 옵션을 이용해야 한다

-  # 옵션 사용
r  # recursive : 폴더를 지운다
f  # 질문을 받지 않고 지운다

ls 시 아무것도 뜨지 않음

 

🎮 mv: 폴더 · 파일 이름 변경 or 위치 옮기기

1. 위치 옮기기

실습을 위해 생성한다

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

move

 

2. 이름 변경

mv [변경할 폴더나 파일 이름] [변경하고자 하는 이름]

 

💡 컴퓨터가 파일을 옮기거나 복사하는 방법

     1. 파일의 내용을 잠시 저장한다
     2. 원래 위치의 파일을 삭제한다 → 복사하는 경우에는 제외
     3. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다

 

❓ mv : '원래 위치 = 도착 위치'가 같은 경우에도 파일을 삭제할까?

💡 삭제하지 않고 이름만 변경함!!

 

🎮 cp: 폴더 · 파일 복사

# 폴더 복사 시 옵션 -r 반드시 포함할 것
cp [원본 파일 이름] [복사할 파일 이름]

 

.  # 현재 폴더
..  # 현재 폴더보다 앞에 있는 폴더

폴더 복사를 위해 상위 폴더로 이동
그냥 사용하면 오류 메시지 출력돼서 옵션-rf 사용함

 

# 각 명령어에 포함된 옵션 확인
-h 또는 --help

 


 

관리자 권한과 경로

 

✔️ 컴퓨터 운영체제: 사용자 + 관리자

항상 관리자 권한으로 PC가 실행된다면? 악성 코드가 삽입된 프로그램이 안전 장치 없이 설치된다

충돌: 두 프로그램이 하나의 시스템(운영체제)를 놓고 다투는 과정 → 블루 스크린 출력
이를 보호하기 위해 사용자 계정 컨트롤(UAC, User Account Control)로 사용자와 관리자를 구분한다
(MS사의 윈도우 Vista)

리눅스 기반의 운영체제인 Ubuntu에서도 구분되어 있는데, 새로운 프로그램의 설치와 변경 또는 삭제 시에 관리자 권한이 필요하기 때문에 명령어를 통해 관리자 권한을 빌려 올 수 있다

 

🍃  절대 경로와 상대 경로

절대 경로: pwd로 확인 가능 - 기준점: 루트 폴더(/)
상대 경로: 현재 위치로부터 상대적인 위치를 나타낸다 - 현재 위치 점(.) 폴더 내부(/)

cd ./hi  # 현재 폴더 아래의(안의) hi 폴더로 진입하라

 

🕸️ 관리자 권한

절대 경로의 기준점 루트 폴더(/): Linux의 관리자 영역
관리자 권한이 필요한 경우: 새로운 프로그램 설치, 프로그램 변경 또는 삭제

루트 폴더에서 폴더나 파일을 생성, 변경 또는 삭제할 수 없다(Read-only)

 

whoami : 현재 로그인된 사용자 확인

 

사용자는 폴더 형태로 존재한다
사용자 권한은 사용자 폴더 내에서만 자유롭다

사용자 폴더 경로: ~/

 

🍎 sudo: 관리자 권한을 획득하는 명령어

mkdir와 sudo mkdir로 각각 폴더 하나씩을 생성한다
명령어 sudo는 비밀번호와 함께 사용된다

 

ls -l 명령어를 통해 폴더나 파일이 사용자 또는 관리자의 소유로 생성되었는지 확인 가능하다

밑에 두 줄을 보면 yujung와 root 소유로 각각 폴더가 생성된 것을 확인할 수 있다

 


 

텍스트 에디터 nano

 

CLI 환경에서의 유명한 에디터: vim(vi), emacs
사용하기 쉬운 에디터: nano 에디터

❓ 에디터를 써야 하는 이유?
💡 AWS와 같은 원격 서버 환경에서 원격으로 텍스트 파일을 편집해야 하는 경우가 있다!

 

🪄 nano 실행

nano hello.java  # hello.java를 nano에서 연다
nano # 그냥 실행할 수도 있다

nano

 

🎲 nano에서 파일 열기

^R
또는
^T  # 화살표 키를 이용해 파일 및 디렉토리를 탐색한 후 불러올 수도 있다
또는
nano 파일이름  # 터미널에서 애초에 파일 이름을 지정해서 여는 방법

 

🧩 파일 편집 후 종료

^X  # 명령어 입력 시 저장할지를 물어본다 - Y나 N을 눌러서 결정

 

🔮 파일 저장

^O WriteOut

'Etc > Computer Science' 카테고리의 다른 글

Git  (0) 2022.07.01
Linux - 패키지, 사용 권한, 환경변수  (0) 2022.06.30
Windows 개발 환경 세팅  (0) 2022.06.24
웹 클라이언트와 웹 서버  (0) 2022.06.24
컴퓨터와 프로그래밍의 이해  (0) 2022.06.24

댓글