Linux를 검색하면 SUSE Linux, Oracle Linux 등을 설치할 수도 있다. Linux는 수십 종류가 있으며, 약간씩 커스터마이징이 되어 있다. 그중에 CentOS와 Obuntu가 제일 대중화되어 있다.
Java를 한다면 Linux 환경에서 일을 하게 될 확률이 매우 높다. 윈도우(맥)은 개발 환경이고, 리눅스는 운영/테스트를 하는 환경이다.
우리가 만든 프로그램과 시스템을 윈도우에서 테스트할 일은 거의 없으며, 대부분 리눅스 서버에서 가동을 하게 된다.
WSL (Windows Subsystem for Linux)
개인 PC면 듀얼 부팅을 하는 방법도 있긴 하지만 불안정하다는 단점이 있다. 그리고 VMWare, VirtualBox 가상머신으로 컴퓨터 안에 또 다른 컴퓨터를 만드는 방식도 있지만 느리다는 단점이 있다.
Docker는 2번과 비슷하긴 하지만, 내부 구조가 다르고 훨씬 가볍다. 하지만 배우는 데 시간이 걸린다.
WSL는 윈도우에 리눅스를 박아놓고 독립적인 시스템으로 돌릴 수 있는 시스템이다. 아무래도 윈도우 기반으로 리눅스가 실행되는 것이므로 완전하진 않지만, 사용하기 간편하며 리눅스와 상당히 비슷하게 구현되어 있다.
2023.12.06 - [Programming/AWS] - [AWS] Elasticsearch 사용을 위한 Ubuntu, WSL 설치
리눅스는 굉장히 다양한데 AWS를 사용할 때에도 Ubuntu와 Linux를 사용하게 되므로, 많이 사용하는 명령어를 짚어두고자 종합해 보았다.
https://docs.rockylinux.org/ko/books/admin_guide/03-commands/
이 글에서 언급하지 않은 명령어 옵션도 다양하므로 Document를 참고하여 사용하는 것을 추천한다.
💡파일 및 디렉터리 관리
ls: 디렉터리 내 파일 목록 확인 (List)
ls 명령어는 현재 디렉터리 내에 있는 파일과 디렉터리의 목록을 표시한다.
기본적으로 목록은 알파벳순으로 정렬되어 표시된다.
- -l: 파일의 자세한 정보를 표시 (파일 종류, 권한, 소유자, 그룹, 크기, 수정 시간 등)
- -a: 숨겨진 파일 및 디렉터리를 포함하여 모든 파일을 표시
- -h: 파일 크기를 보기 쉬운 형식(예: KB, MB)으로 표시
기본적인 파일 및 디렉터리 목록 확인
ls
자세한 파일 정보 표시
ls -l
숨겨진 파일 및 디렉터리까지 모두 포함하여 목록 확인
ls -a
파일 크기를 보기 쉬운 형식으로 표시
ls -lh
여러 옵션 함께 사용
ls -lha
현재 디렉터리의 모든 파일과 디렉터리에 대한 자세한 정보를 보기 쉬운 형식으로 표시하며, 숨겨진 파일도 모두 포함하여 표시한다.
cd: 디렉토리 변경 (Change Directory)
cd 명령어는 작업 디렉터리를 변경하는 데 사용된다.
- cd: 홈 디렉터리로 이동
- cd ..: 상위 디렉터리로 이동
- cd -: 이전 디렉터리로 이동
홈 디렉터리로 이동
cd
Documents 디렉터리로 이동
cd Documents
상위 디렉토리로 이동
cd ..
이전 디렉토리로 이동
cd -
pwd: 현재 작업 디렉터리 확인 (Print Working Directory)
pwd 명령어는 현재 작업 중인 디렉터리의 전체 경로를 출력한다.
pwd
mkdir: 새 디렉터리 생성 (Make Directory)
mkdir 명령어는 새 디렉터리를 생성하는 데 사용한다.
mkdir myfolder
touch: 빈 파일 생성 또는 파일 시간 업데이트
touch 명령어는 빈 파일을 생성하거나 파일의 최근 수정 시간을 현재 시간으로 업데이트한다.
파일이 이미 존재하는 경우에는 최근 수정 시간만 업데이트된다.
touch myfile.txt
rm: 파일 또는 디렉터리 삭제 (Remove)
rm 명령어는 파일이나 디렉터리를 삭제한다.
삭제된 파일은 복구할 수 없으므로 주의해서 사용해야 한다.
rm myfile.txt
cp: 파일 복사 (Copy)
cp 명령어는 파일을 복사하는 데 사용된다.
cp myfile.txt newfile.txt
mv: 파일 이동 또는 이름 변경 (Move)
mv 명령어는 파일을 이동하거나 이름을 변경하는 데 사용된다.
mv myfile.txt documents/
paste: 파일 병합
paste 명령어는 두 개 이상의 파일을 병합한다.
paste file1.txt file2.txt > merged_file.txt
file1.txt와 file2.txt를 병합하여 merged_file.txt를 생성하였다.
💡파일 내용 관리
vi: 텍스트 편집기 (Visual Editor)
vi는 리눅스에서 기본적으로 제공되는 텍스트 편집기로, 텍스트 파일을 열고 편집할 수 있다.
명령 모드(command mode)와 입력 모드(insert mode)로 나뉘어 동작하며, 복사, 붙여 넣기, 저장 및 종료 등의 명령어를 제공한다.
파일을 열어서 내용 수정 후 저장 및 종료하기
vi myfile.txt
파일이 열린 후 수정하고, 저장하려면 esc를 누른 후 :wq를 입력하고 엔터를 누르면 된다.
nano: 간단한 텍스트 편집기
nano는 사용자 친화적인 텍스트 편집기로, 초기 학습이 쉽고 간단한 수정 및 편집 작업에 적합하다.
메뉴와 키 바인딩이 표시되어 있어 사용자가 직관적으로 명령어를 선택할 수 있다.
nano myfile.txt
cat: 파일 내용 출력 (Concatenate)
cat 명령어는 파일의 내용을 터미널에 출력한다.
cat myfile.txt
echo: 문자열 출력
echo 명령어는 주어진 문자열을 터미널에 출력한다.
echo "Hello, World!"
💡에디터 종료 및 옵션
wq: vi에서 저장 후 종료 (Write Quit)
:wq는 vi 에디터에서 파일을 저장하고 종료한다.
:wq
이 명령어를 입력하면 현재 편집 중인 파일이 저장되고 vi 에디터가 종료된다.
q!: vi에서 저장하지 않고 종료 (Quit)
:q! 명령어는 vi 에디터에서 현재 편집 중인 파일을 저장하지 않고 강제로 종료한다.
:q!
이 명령어를 입력하면 현재 편집 중인 파일이 저장되지 않고 vi 에디터가 종료된다.
💡파일 검색 및 조작
file: 파일 유형 확인
file 명령어는 파일의 유형을 확인한다.
Copy code
file myfile.txt
위 명령은 myfile.txt 파일의 유형을 확인한다.
more: 파일 내용 페이지 단위로 출력
more 명령어는 파일의 내용을 페이지 단위로 출력한다.
Copy code
more myfile.txt
위 명령은 myfile.txt 파일의 내용을 페이지 단위로 출력한다.
less: 파일 내용 페이지 단위로 출력
less 명령어는 파일의 내용을 페이지 단위로 출력하며, 상호작용 가능한 스크롤 기능을 제공한다.
Copy code
less myfile.txt
위 명령은 myfile.txt 파일의 내용을 페이지 단위로 출력하고, 스크롤하여 내용을 탐색할 수 있다.
grep: 파일 내에서 특정 문자열 검색 (Global Regular Expression Print)
grep 명령어는 파일 내에서 특정 문자열을 검색한다.
grep "pattern" myfile.txt
myfile.txt 파일에서 "pattern"이라는 문자열을 검색하였다. 그 결과로 myfile.txt 파일에서 "pattern"이라는 문자열이 포함된 모든 줄이 출력된다.
wc: 파일 내 단어, 줄, 문자 수 세기 (Word Count)
wc 명령어는 파일 내 단어, 줄, 문자 수를 세는 데 사용된다.
wc myfile.txt
sort: 파일 내용 정렬
sort 명령어는 파일 내용을 정렬한다.
sort myfile.txt
head: 파일 상위 일부 출력
head 명령어는 파일의 상위 일부를 출력하여 파일의 앞부분을 빠르게 확인하는 데 사용한다.
기본적으로는 파일의 처음부터 상위 10줄을 출력하지만 옵션을 사용하여 출력할 줄 수를 지정할 수도 있다.
head myfile.txt
tail: 파일 하위 일부 출력
tail 명령어는 파일의 하위 일부를 출력한다.
기본적으로는 파일의 마지막 10줄을 출력하지만, 옵션을 사용하여 출력할 줄 수를 조정할 수도 있다.
이 명령어를 사용하여 로그 파일이나 다른 형태의 파일에서 최신 정보를 확인할 수 있다.
tail myfile.txt
💡권한 및 소유자 관리
chmod: 파일 권한 변경 (Change Mode)
chmod 명령어는 파일 또는 디렉터리의 권한을 변경하는 데 사용된다.
chmod 755 myfile.txt
myfile.txt 파일의 권한을 변경하여 소유자에게는 읽기, 쓰기 및 실행 권한을 부여하고, 그룹 및 기타 사용자에게는 읽기 및 실행 권한을 부여한다.
chown: 파일 소유자 변경 (Change Owner)
chown 명령어는 파일 또는 디렉토리의 소유자를 변경하는 데 사용된다.
chown user1 myfile.txt
myfile.txt 파일의 소유자를 user1로 변경한다.
chgrp: 파일 그룹 변경 (Change Group)
chgrp 명령어는 파일 또는 디렉토리의 그룹을 변경하는 데 사용된다.
chgrp group1 myfile.txt
myfile.txt 파일의 그룹을 group1로 변경한다.
💡파일 시스템 및 데이터 관리
find: 파일 시스템에서 파일 검색
find 명령어는 지정된 디렉터리에서 파일을 검색하는 데 사용된다.
파일 이름, 파일 크기, 권한 등 다양한 기준으로 파일을 검색할 수 있다.
find /home/user -name "*.txt"
/home/user 디렉터리에서 확장자가 .txt인 모든 파일을 검색한다.
du: 디스크 사용량 확인 (Disk Usage)
du 명령어는 지정된 디렉터리의 디스크 사용량을 보고한다.
디렉터리의 하위 디렉터리와 파일별로 디스크 사용량을 표시할 수 있다.
du -sh /home/user
/home/user 디렉터리의 총 디스크 사용량을 휴먼 리더블 형식으로 표시한다.
df: 디스크 여유 공간 확인 (Disk Free)
df 명령어는 시스템의 디스크 여유 공간 및 사용량을 보고한다.
각 마운트 된 파일 시스템에 대한 정보를 표시한다.
df -h
시스템의 모든 마운트 된 디스크의 여유 공간과 사용량을 휴먼 리더블 형식으로 표시한다.
mount: 파일 시스템 마운트 확인
mount 명령어는 시스템에 현재 마운트 된 파일 시스템의 목록을 보여준다.
각 파일 시스템의 마운트 포인트와 옵션을 표시한다.
mount | grep sda1
시스템에서 sda1 디스크가 마운트된 위치를 확인한다.
마운트란?
마운트(Mount)와 언마운트(Unmount)는 파일 시스템을 시스템에 연결하고 분리하는 과정을 나타낸다. 이 두 작업은 파일 시스템을 사용하거나 사용하지 않을 때 필요한 기본적인 관리 작업이다.
마운트는 외부 저장 장치 또는 네트워크 리소스와 같은 파일 시스템을 시스템 디렉터리에 연결하는 과정을 말한다. 이를 통해 해당 파일 시스템의 데이터에 접근할 수 있다. 예를 들어, USB 플래시 드라이브를 컴퓨터에 연결하고 해당 드라이브의 파일을 읽거나 쓸 수 있도록 하는 것이 마운트이다. 또는 네트워크 파일 시스템(NFS, Samba 등)을 로컬 디렉터리에 연결하여 사용할 수도 있다.
umount: 파일 시스템 언마운트 (Unmount)
umount 명령어는 마운트 된 파일 시스템을 언마운트한다.
언마운트되면 해당 파일 시스템이 더 이상 접근할 수 없게 된다.
umount /mnt/usb
/mnt/usb에 마운트 된 USB 디스크를 언마운트한다.
언마운트란?
언마운트는 마운트 된 파일 시스템을 시스템에서 분리하는 작업을 말한다. 이 과정에서 파일 시스템과의 연결이 해제되어 해당 디렉터리에서 파일 시스템의 내용에 더 이상 접근할 수 없게 된다. 언마운트는 파일 시스템을 더 이상 사용하지 않거나 다른 용도로 사용하려는 경우, 그리고 안전하게 장치를 제거할 때 사용된다.
💡시스템 관리 및 보안
passwd: 사용자 암호 변경
passwd 명령어는 사용자의 암호를 변경한다.
사용자는 자신의 암호를 변경할 수 있으며, 관리자 권한으로 다른 사용자의 암호도 변경할 수 있다.
passwd username
username 사용자의 암호를 변경한다. 다양한 옵션을 사용할 수 있다.
useradd: 새 사용자 추가
useradd 명령어는 새로운 사용자를 추가한다.
-m 옵션을 사용하면 새로운 사용자의 홈 디렉터리를 생성한다.
useradd -m newuser
newuser라는 새로운 사용자를 생성하고 홈 디렉터리를 생성한다.
userdel: 사용자 삭제
userdel 명령어는 시스템에서 사용자를 삭제한다.
해당 사용자의 홈 디렉터리와 메일 스풀 등 사용자와 관련된 파일도 삭제된다.
userdel username
username 사용자를 시스템에서 삭제한다.
groupadd: 새 그룹 추가
groupadd 명령어는 새로운 그룹을 추가한다
새로운 그룹을 추가하면 해당 그룹의 그룹 아이디(GID)와 그룹 관련 파일이 시스템에 생성된다.
groupadd newgroup
newgroup이라는 새로운 그룹을 생성한다.
groupdel: 그룹 삭제
groupdel 명령어는 시스템에서 그룹을 삭제한다.
해당 그룹에 속한 사용자가 없는 경우에만 그룹이 삭제된다.
groupdel groupname
groupname 그룹을 시스템에서 삭제한다.
💡텍스트 처리 및 검색
sed: 텍스트 편집 및 치환 (Stream Editor)
sed 명령어는 텍스트 파일에서 특정 패턴을 찾아 다른 패턴으로 대체하는 등의 텍스트 편집 작업을 수행한다.
sed 's/old/new/g' myfile.txt
myfile.txt 파일에서 모든 old 문자열을 new로 대체한다.
awk: 텍스트 처리 및 보고서 생성
awk 명령어는 텍스트 파일의 각 줄을 필드로 분리하고 특정한 작업을 수행한다.
보고서 생성, 특정 조건에 맞는 행 추출 등 다양한 작업에 사용된다.
awk '{print $1,$2}' myfile.txt
myfile.txt 파일의 각 행에서 첫 번째와 두 번째 필드를 출력한다.
cut: 파일에서 필드 추출
cut 명령어는 파일의 각 줄에서 특정 필드(열)를 추출한다.
주로 텍스트 파일에서 특정 열을 추출하여 처리하는 데 사용된다.
cut -d',' -f1,3 myfile.csv
myfile.csv 파일에서 쉼표로 구분된 첫 번째와 세 번째 필드를 추출한다.
clear - 터미널 화면 지우기
clear 명령어는 터미널 화면을 지운다.
clear
위 명령은 터미널 화면을 지운다.
참고 자료
리눅스 passwd(명령어), IT 위키, 2021.10.17.
리눅스 기본 명령어 모음 | Linux 의미, 기능, 작성 예시, 코드스테이츠, 2022.12.07.
[Rocky Linux] 15가지 리눅스 기본 명령어 정리, 한빛미디어, 2023.03.08.
Linux 사용자를 위한 명령어, Rocky Linux, 2024.02.08.