240605 AWS

PangE·2024년 6월 6일

리눅스 명령어

리눅스는 주로 서버 컴퓨터에서 많이 사용되는 운영체제로 서버 컴퓨터는 GUI(Graphical User Interface) 방식보다 터미널 프로그램으로 원격에서 접속해 CLI(Command Line Interface) 방시그올 서버를 관리하는 것이 일반적이다. 먼저 터미널을 통해 EC2서버에 접속한다. 그러면 터미널 창에 ubunto@ip-?????:~$ 와 같이 표시되는데 이 부분을 프롬프트라고 부른다.
프롬프트는 사용자 명령을 대기하는 CLI 명으롱 줄 대기모드이다.

이 프롬프트를 살펴보면 @ 기호 앞쪽 부분의 사용자 이름과 @ 기호 뒤쪽 부분의 컴퓨터 이름으로 구성되며 그 뒤쪽으로 콜론(:) 문자와 콜론(:) 바로 뒤에 물결표(~)가 보이는데 이 물결표는 현재 작업중인 디렉터리 경로를 나타낸다. 유닉스 계열의 운영체제에서 물결표(~)는 홈디렉터리를 나타내는 문자로 사용되며 현재 접속한 사용자의 홈 디렉터리는 의미한다. 마지막 $ 기호는 현재 접속한 사용자를 표현하는데 이 $ 기호는 일반 사용자를 의미한다. 만약 루트(root,슈퍼유저) 사용자로 접속했다면 이 자리에 $ 기포 대신에 # 기호롤 표시될것이다.

프롬포트는 유닉스 계열의 운영체제에서 네트워크 환경과 다중 사용자를 고려하여 로그인 한 사용자, 호스트, 사용 중인 장치 팔일, 루트 또는 일반 사용자를 표시하는 기능과 사용자와 컴퓨터 간의 질의 응답을 대기하는 커서 등으로 이루어져 있따.

명령어

컴퓨터에게 특정 작업을 지시하기 위해 정의된 텍스트
리눅스는 이런 며령을 토해서 원하는 작업을 수행함

옵션

며령어가 제공하는 부가(세부) 기능을 선택하는 옵션
옵션은 하이픈(-) 뒤에 알파벳 형식의 옵션으로 되어 있음
명령에 따라서 옵션이 없거나 하나 이상을 조합해 지정 할 수 있음

인수

인수는 명령이나 옵션으로 전달되는 입력 값
명령의 사용 용도에 따라서 없거나 하나 이상을 지정할 수 있음

유닉스 계열 운영체제의 멸영은 표준 입력 , 표준 출력, 오류 출력 3가지의 데이터 흐름을 다루는 스트림을 가지고 있다.

표준 입출력 스트림(Standard Input/Output Stream)

  • 표준 입력(Standard Input,stdin) : 키보드로 명령을 입력
  • 표준 출력(Standard Output, stdout) : 결과를 콘솔에 출력
  • 오류 출력(Standard Error,stderr) : 에러를 콘솔에 출력

명령어

#pwd (Print Working Directory) 명령으로 현재 작업 디렉터리 출력

ubuntu@ip- :~$pwd
/home/ubuntu

#whoami 명령으로 현재 접속한 사용자를 출력

ubuntu@ip- :~$whoami
ubuntu

#date 명령으로 시스템의 현재 날짜와 시간 출력

ubuntu@ip- :~$date
Fri Oct 13 09:12:00 UTC 2023

#hostnamectl 명령으로 리눅스의 운영체제 버전 확인

ubuntu@ip- :~$ hostnamectl
ubuntu@ip- :~$ cat /etc/os-release

#명령을 사용한 히스토리를 조회하는 명령과 그 히스토리를 삭제 하는 명령

ubuntu@ip- :~$ history
ubuntu@ip- :~$ history -c

# 프롬포트를 맨 위로 올려 기존 출력 내용을 보이지 않게

ubuntu@ip- :~$clear

# 명령어 도움말 보기

ubuntu@ip- :~$ls --help

# 명령에 정의된 옵션을 잘못 사용하면 아래와 같이 안내 로그를 볼수 있음

ubuntu@ip- :~$ls -help
s: invalid option -- 'e'
Try 'ls --help' for more information.

매뉴얼(manual) 명령으로 directory가 포함된 명령의 목록을 출력

-k 옵션은 검색 옵션으로 인수로 지정한 문자가 포함된 명령의 목록을 출력

ubuntu@ip-172-31-32-120:~$ man -k directory

명령 목록에서 특정 명령을 선택해 세부 매뉴얼을 확인 할 수 있음

ubuntu@ip-172-31-32-120:~$ man ls

리눅스 터미널 명령어

표준 입출력의 흐름을 바꿔주는 기능을 리다이렉션(redirection)이라고 함
*>, <, >>, << 기호를 사용해 표준 출력의 흐름을 콘솔에서 파일로 바꿔주거나 파일을
표준 입력을 통해서 콘솔로 출력해 주는 기능을 제공함

cat 명령은 파일을 연결하고 내용을 표준 출력으로 프린트 하는 명령

다음은 표준 출력을 output.txt 파일로 리다이렉션 하는 명령으로

리다이렉션은 실행 결과를 콘솔 보다 파일로 출력할 경우 많이 사용함

리눅스 파일시스템 -디렉터리 구조


파일 시스템 - 파일 리스트 조회

최상위 루트 디렉터리의 파일 및 디렉터리 목록을 출력

$ ls /

명령에 정의된 옵션을 조합해 다양한 형식으로 조회할 수 있음

-l (long) 파일과 디렉터리의 목록을 상세하게 출력

-a (all) 숨김 파일을 포함한 모든 파일을 출력

-h (human-readable)용량을 읽기 편하게 변환해 출력(보통 l과 함께 사용)

-d (directory) 디렉터리의 정보만 출력

-R (recursive) 하위 디렉터리의 내용까지 반복해 출력

$ ls -a -l –h /
$ ls -alh /

home 디렉터리의 파일 및 디렉터리 목록을 출력

$ ls -al /home

/home과 /usr 디렉터리의 파일 및 디렉터리 목록을 출력

$ ls -al /home /usr

리눅스 파일 시스템 – 디렉터리 생성 및 이동

linux_study 디렉터리 생성

$ mkdir linux_study

docker_study 디렉터리 생성

$ mkdir docker_study

docker_study 디렉터리로 이동

$ cd docker_study

현재 디렉터리의 상위 디렉터리로 이동

$ cd ..

linux_study 디렉터리로 이동

$ cd linux_study

현재 접속한 사용자 디렉터리로 이동 – /home/ubuntu로 이동함

$ cd ~

리눅스 파일 시스템 – 파일 복사 및 이동

로컬 컴퓨터의 AWS_STUDY 폴더에 file01.txt, file02.txt를 복사하고

터미널을 새창으로 실행해서 아래 명령으로 EC2 서버의 ubuntu 폴더에 복사

6b@DESKTOP-SG0H2SB MINGW64 /d/AWS_Study
$ scp -i MyEc2-01.pem file*.txt ubuntu@ec2-13-125-149-254.ap-northeast-
2.compute.amazonaws.com:~
file01.txt 100% 1086 120.4KB/s 00:00
file02.txt 100% 389 51.6KB/s 00:00

EC2 SSH 접속 터미널 창으로 이동해 복사가 잘 되었는지 확인

ubuntu@ip-172-31-32-120:~$ ls -al
-rw-r--r-- 1 ubuntu ubuntu 1086 Oct 17 08:50 file01.txt
-rw-r--r-- 1 ubuntu ubuntu
389 Oct 17 08:50 file02.txt

cp 명령은 파일 또는 디렉터리를 복사하는 명령

현재 디렉터리의 file01.txt를 linux_study 디렉터리에 복사

$ cp file01.txt linux_study/

file01.txt, file02.txt를 linux_study 디렉터리에 복사, 같은 파일은 덮어씀

$ cp file01.txt file02.txt linux_study/

mv 명령은 파일 또는 디렉터리를 이동하는 명령

현재 디렉터리의 file01.txt를 linux_study 디렉터리로 이동

$ mv file01.txt -i ./linux_study
mv: overwrite './linux_study/file01.txt'? Y

linux_study 디렉터리의 파일 목록 확인

$ ls -al linux_study
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 17 09:13 .
drwxr-x--- 16 ubuntu ubuntu 4096 Oct 17 09:13 ..
-rw-r--r--
1 ubuntu ubuntu 1086 Oct 17 09:13 file01.txt
-rw-r--r--
1 ubuntu ubuntu
389 Oct 17 09:12 file02.txt

linux_study 디렉터리로 이동

$ cd linux_study

cp는 파일 또는 디렉터리를 복사하는 명령

현재 디렉터리의 file01.txt를 같은 디렉터리의 file01cp.txt 파일로 복사

$ cp file01.txt file01cp.txt

mv는 파일 또는 디렉터리 이동 명령으로 이름을 변경하는데도 사용

상위 디렉터리의 file02.txt 파일의 이름을 file02mv.txt 파일로 변경해 현재 디렉터리로 이동함

$ mv ../file02.txt ./file02mv.txt

현재 linux_study 디렉터리 안의 파일 목록 확인

$ ls -al
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 17 17:16 ./
drwxr-x--- 16 ubuntu ubuntu 4096 Oct 17 16:50 ../
-rw-r--r--
1 ubuntu ubuntu 1086 Oct 17 09:13 file01.txt
-rw-r--r--
1 ubuntu ubuntu 1086 Oct 17 17:15 file01cp.txt
-rw-r--r--
1 ubuntu ubuntu
389 Oct 17 09:12 file02mv.txt

현재 사용자 디렉터리로 이동(/home/ubuntu)

$ cd ~

linux_study 폴더와 그 안의 모든 디렉터리 및 파일을 /home 폴더에 복사

cp 명령을 관리자 권한으로 실행하기 위해 앞에 sudo 명령을 사용함

-r : 하위 폴더 포함, -f : 존재할 경우 덮어쓰기, -v : 진행 상황 출력

$ sudo cp -rfv ./linux_study /home

linux_study 폴더를 /home/linux_mv 폴더로 이동

-f : 존재할 경우 덮어쓰기, -v : 진행 상황 출력

$ sudo mv -fiv ./linux_study /home/linux_mv

/home 디렉터리 안의 파일 목록 확인

$ ls -al /home
drwxr-xr-x 5 root root
4096 Oct 18 01:45 .
drwxr-xr-x 19 root root
4096 Oct 10 05:10 ..
drwxr-xr-x 3 ubuntu ubuntu 4096 Oct 18 01:48 linux_mv
drwxr-xr-x 2 root root
4096 Oct 18 01:18 linux_study
drwxr-x--- 16 ubuntu ubuntu 4096 Oct 18 01:49 ubuntu

리눅스 파일 시스템 – 파일 내용 출력

mv로 폴더가 이동되었기 때문에 /home/linux_study 폴더를 복사해 옴

$ cp –rf /home/linux_study ./
$ cd linux_study

cat은 파일의 내용을 연속적으로 모두 출력 – 내용이 길면 스크롤 됨

$ cat file01.txt

more는 파일의 내용을 화면 단위로 출력 – 스크롤 안됨

$ more file01.txt

less는 파일의 내용을 출력하고 앞뒤로 스크롤 하며 이동할 수 있음

$ less file01.txt

file01.txt 파일 내용의 앞부분 5행 출력 (기본 값 10행)

$ head -5 file01.txt

file01.txt 파일 내용의 뒷부분 5행 출력 (기본 값 10행)

$ tail -5 file01.txt

리눅스 파일 시스템 – 파일 생성 및 편집

echo는 텍스트, 변수를 콘솔에 출력하는 명령

$ echo 1234567890

touch는 빈 텍스트 파일을 생성하고 파일 시간을 바꾸는 명령

$ touch touch01.txt
$ touch touch02.txt touch03.txt

몇 분 후 touch 명령을 다시 실행하면 파일 시간이 현재 시간으로 변경됨

$ touch touch01.txt

vi는 지정한 파일을 vi Editor로 실행해 주는 명령(파일이 없으면 생성함)

vi Editor는 전통적으로 널리 사용되는 유닉스 계열의 텍스트 편집기

$ vi vi01.txt

vim은 vi Editor에서 undo, syntax coloring, split windows 등의

기능을 추가해 vi Editor를 개선(improve)한 텍스트 편집기

GUI에서 텍스트 에디터를 사용하던 사용자가 vim을 처음 만나면 당황스러워 하는데 다
른 에디터 들은 실행하면 바로 편집이 가능한 반면 vim은 그렇지가 않아서 그런 것 같
다. vim에는 mode라는 개념이 있어서 처음 사용자가 당황스러울 수 있으며 vim의
mode에는 사용자 선택에 따라서 다음과 같이 4가지 mode가 존재한다.

  • Normal Mode :
  • vim을 처음 실행, Insert, Command, Visual 모드에서 ESC 입력 했을 때
  • 커서가 두껍고 복사와 붙여 넣기, 삭제, 찾기 및 치환 명령
  • Insert Mode :
  • Normal 모드에서 i, a 키를 누르면 Insert 모드로 진입, 문서 내용 편집
  • Command Mode :
  • Normal 모드 또는 Insert 모드에서 콜론(:) 입력 했을 때
  • 문서 일부 또는 전체 저장, 파일 읽기, 프로그램 종료 명령
  • Visual Mode :
  • Normal 모드에서 v 키를 누르면 Visual 모드에 진입(Ctrl+v, Shift+v)
  • Ctrl+v : Visual block 모드, Shift+v : Visual line 모드, 문서 내 범위 지정

vim의 모드에 대한 이미지로 vim을 실행하면 맨 처음에 중앙에 있는 Normal 모드로
진입하고 이 후에는 사용자의 키 입력에 따라서 그림과 같이 각각의 모드로 전환된다.
vim 편집기에서 사용하는 명령이 많아서 02.Vi 명령.pdf 파일을 참고 하자.

리눅스 파일 시스템 – 파일 및 디렉터리 삭제

test01 폴더를 만들고 linux_study 폴더의 모든 .txt 파일을 복사

$ mkdir test01
$ cp ./*.txt test01/
$ cd test01

rm은 지정한 파일을 삭제하는 명령, touch01.txt, touch02.txt 파일 삭제

$ rm touch01.txt touch02.txt

touch로 시작하는 폴더 및 파일 삭제

-r : 하위 폴더 포함, -f : 강제로 폴더 및 파일 삭제

$ rm -rf touch*

rm으로 폴더를 삭제할 때는 –r 옵션을 사용

$ cd ..
$ rm test01
rm: cannot remove 'test01': Is a directory
$ rm –r test01

0개의 댓글