리눅스 핵심 개념

메론보이·2024년 5월 21일

리눅스

목록 보기
3/17
post-thumbnail

리눅스 기본 명령어와 파일 관리

명령어 구문

리눅스 명령어는 일반적으로 다음과 같은 구문을 가집니다:

기본 형태

command [options] [arguments]

옵션 (Options): 명령어의 동작을 수정하며 하이픈(-) 또는 대시로 시작하여 한 글자로 구성됩니다.
인수 (Arguments): 대부분의 명령어는 하나 이상의 인수와 함께 사용되며, 일부 명령어는 기본 인수를 가정하기도 합니다.

예제:

ls -al: 현재 디렉토리의 모든 파일을 상세히 목록화합니다.

파일 권한

  • UNIX는 다중 사용자 시스템입니다.
  • 각 파일과 디렉토리는 접근 권한을 변경하여 다른 사용자로부터 보호하거나 접근할 수 있게 할 수 있습니다.

권한은 다음 세 가지 유형으로 나뉩니다:

  • 읽기 (r): 파일을 읽을 수 있음
  • 쓰기 (w): 파일을 쓸 수 있음
  • 실행 (x): 파일을 실행할 수 있음

권한은 세 가지 수준에서 제어됩니다:

  • 사용자 (u): 파일 소유자
  • 그룹 (g): 같은 프로젝트의 사용자
  • 기타 (o): 시스템의 모든 사용자

권한 변경:

chmod ugo+r file 또는 chmod 764 file

소유권 변경:

chown user:group file - 파일의 소유자와 그룹을 변경
chgrp group file - 파일의 그룹을 변경

도움말 명령어

리눅스는 사용자가 명령어 및 시스템 유틸리티에 대한 정보를 찾을 수 있도록 다양한 도움말 명령어를 제공합니다:

  • whatis: 명령어에 대한 간단한 설명 제공
  • --help: 명령어의 사용법 제공
  • man: 명령어에 대한 상세한 매뉴얼 페이지 제공

파일에 텍스트 추가하기

리눅스에서는 여러 가지 방법으로 파일에 텍스트를 추가할 수 있습니다:

  • vi: 텍스트 편집기
  • 리다이렉션: > 또는 >>를 사용하여 명령어 출력을 파일에 추가
  • echo: echo "text" > file 또는 echo "text" >> file

입출력 리다이렉션

리눅스에는 표준 입력, 표준 출력, 표준 오류의 세 가지 리다이렉션이 있습니다:

  • 표준 입력 (stdin, 0): 파일 내용을 명령어에 입력
    cat < file
  • 표준 출력 (stdout, 1): 명령어 출력을 파일에 저장
    ls -l > file
  • 표준 오류 (stderr, 2): 오류 메시지를 파일에 저장
    ls -l /root 2> errorfile

파이프

제목: 리눅스에서 파이프 사용하기

  • 파이프(|)는 한 명령어의 출력을 다른 명령어의 입력으로 연결하는 데 사용됩니다:

구문

command1 | command2

예제: ls -l | more

파일 유지보수 명령어

제목: 파일 유지보수 명령어 사용하기

리눅스에서 파일을 관리하는 데 필수적인 명령어는 다음과 같습니다:

  • cp: 파일 복사
  • rm: 파일 삭제
  • mv: 파일 이동
  • mkdir: 디렉토리 생성
  • rmdir: 디렉토리 제거

파일 표시 명령어

제목: 파일 내용 표시 명령어

리눅스에서 파일 내용을 확인하는 명령어는 다음과 같습니다:

  • cat: 파일 내용 표시
  • more, less: 페이지 단위로 파일 내용 표시
  • head, tail: 파일의 시작 또는 끝 부분 표시

리눅스 필터 및 텍스트 처리 명령어

리눅스는 텍스트 데이터를 처리하기 위한 강력한 명령어를 제공합니다:

cut

개념 및 정의:

  • cut 명령어는 파일이나 입력된 데이터에서 특정 부분을 잘라내어 표준 출력으로 보냅니다.
  • 주로 구분자, 바이트 위치, 또는 문자 위치를 기준으로 데이터를 추출합니다.

언제 사용하는가:

  • 파일이나 데이터에서 특정 필드나 문자 위치의 데이터를 추출할 때 사용합니다.

왜 사용하는가:

  • 대량의 데이터에서 필요한 부분만을 효율적으로 추출할 수 있습니다.

어떻게 사용하는가:

cut [옵션] [파일]

작동 원리:

  • 입력된 데이터 스트림에서 지정된 구분자, 바이트, 또는 문자 위치에 따라 데이터를 추출합니다.

실제 사용 예시:

  • 특정 문자 위치 추출:
cut -c1-3 filename - 파일의 각 라인에서 첫 번째부터 세 번째까지의 문자를 출력합니다.
  • 특정 구분자 사용:
 cut -d':' -f1 /etc/passwd - 콜론 구분자로 나눠진 첫 번째 필드를 출력합니다.

여러 예시들

cut filename = Does not work

cut --version = Check version

cut –c1 filename = List one character

cut –c1,2,4 = Pick and chose character

cut –c1-3 filename = List range of characters

cut –c1-3,6-8 filename = List specific range of characters

cut –b1-3 filename = List by byte size

cut -d: -f 6 /etc/passwd = List first 6th column separated by : (d명령어는 :을 기준으로 자른다는 의미, -f 6은 6번째 열을 출력한다는 의미)

cut -d: -f 6-7 /etc/passwd = List first 6 and 7th column separated by :

ls –l | cut –c2-4 = Only print user permissions of files/di

awk

개념 및 정의:

  • awk는 데이터 추출 및 보고서 생성에 주로 사용되는 강력한 패턴 매칭 언어입니다.
  • 주로 텍스트 파일에서 필드 기반의 데이터를 처리합니다.

언제 사용하는가:

  • 데이터 파일에서 특정 필드를 추출하거나 데이터 변환 및 요약 작업을 수행할 때 사용합니다.

왜 사용하는가:

  • 복잡한 텍스트 처리 및 보고서를 생성할 때 매우 유용하며, 다른 스크립트 언어와 통합하기 쉽습니다.

어떻게 사용하는가:

awk '패턴 {액션}' 파일

작동 원리:

  • 각 라인에 대해 패턴이 일치하는지 확인하고, 일치하는 경우 지정된 액션을 수행합니다.
  • 기본적으로 공백을 기준으로 필드를 나눕니다.

실제 사용 예시:

첫 번째 필드 출력:

awk '{print $1}' filename - 각 라인의 첫 번째 필드를 출력합니다.

특정 조건에 따른 출력:

awk '$3 > 50 {print $1, $3}' filename - 세 번째 필드의 값이 50보다 큰 라인의 첫 번째와 세 번째 필드를 출력합니다.

여러예시들

awk --version = Check version

awk ‘{print $1}’ file = List 1st field from a file

ls –l | awk ‘{print $1,$3}’ = List 1 and 3rd field of ls –l output

ls –l | awk ‘{print $NF}’ = Last field of the output

awk '/Jerry/ {print}' file = Search for a specific word
('//': 슬래시(/)로 감싸진 부분은 패턴 매칭을 의미합니다. 여기서는 "Jerry"라는 단어를 포함하는 모든 줄을 찾습니다
{}: 중괄호({}) 안에 있는 부분은 패턴이 일치하는 줄에 대해 수행할 작업을 지정합니다. print는 해당 줄을 출력하라는 의미)

awk -F: '{print $1}' /etc/passwd = Ouput only 1st field of /etc/passwd
( -F: 필드 구분자를 설정하는 옵션으로, 여기서는 콜론(:)을 필드 구분자로 사용, {}: 중괄호({}) 안에 있는 부분은 각 줄에 대해 수행할 작업을 지정합니다. $1은 첫 번째 필드를 의미하며, print $1은 첫 번째 필드를 출력하라는 의미)

echo "Hello Tom" | awk '{$2="Adam"; print $0}‘ = Replace words field words

cat file | awk '{$2=“Imran"; print $0}‘ = Replace words field words

awk 'length($0) > 15‘ file = Get lines that have more than 15 byte size

ls -l | awk '{if($9 == "seinfeld") print $0;}‘ = Get the field matching seinfeld in /home/iafzal

ls -l | awk '{print NF}‘ = Number of fields

grep 및 egrep

개념 및 정의:

  • grep은 주어진 패턴과 일치하는 텍스트를 검색하고 출력합니다.
  • egrep은 확장된 정규 표현식을 사용한 검색을 지원합니다.

언제 사용하는가:

  • 파일이나 데이터 스트림에서 특정 패턴이나 문자열을 검색할 때 사용합니다.

왜 사용하는가:

  • 대량의 데이터에서 특정 정보를 빠르게 찾을 수 있습니다.

어떻게 사용하는가:

grep [옵션] '패턴' 파일

작동 원리:

  • 입력된 텍스트에서 지정된 패턴과 일치하는 모든 라인을 출력합니다.

실제 사용 예시:

패턴 검색:

grep 'search_term' filename - 파일에서 'search_term'을 포함하는 모든 라인을 출력합니다.

대소문자 무시 검색:

grep -i 'search_term' filename - 대소문자를 구분하지 않고 검색합니다.

여러 예시

grep –-version OR grep --help = Check version or help

grep keyword file = Search for a keyword from a file

grep –c keyword file = Search for a keyword and count

grep –i KEYword file = Search for a keyword ignore case-sensitive

grep –n keyword file = Display the matched lines and their line numbers

grep –v keyword file = Display everything but keyword

grep keyword file | awk ‘{print $1}’ = Search for a keyword and then only give the 1st field

ls –l | grep Desktop = Search for a keyword and then only give the 1st field

egrep –i “keyword|keyword2” file = Search for 2 keywords

sort

개념 및 정의:

  • sort 명령어는 파일의 라인들을 정렬합니다.
  • 기본적으로는 ASCII 값 순서대로 정렬하지만, 옵션을 통해 다양한 방식으로 정렬할 수 있습니다.

언제 사용하는가:

  • 파일의 내용을 정렬하여 보기 쉽게 하거나, 다른 명령어와 결합하여 데이터를 처리할 때 사용합니다.

왜 사용하는가:

  • 데이터를 정렬하여 체계적으로 관리하고 분석하기 쉽게 합니다.

어떻게 사용하는가:

sort [옵션] [파일]

작동 원리:

  • 각 라인을 비교하여 지정된 기준에 따라 정렬합니다.

실제 사용 예시:

기본 정렬:

sort filename - 파일의 내용을 오름차순으로 정렬합니다.

역순 정렬:

sort -r filename - 파일의 내용을 내림차순으로 정렬합니다.

여러 예시

sort –-version OR sort --help = Check version or help

sort file = Sorts file in alphabetical order

sort –r file = Sort in reverse alphabetical order

sort –k2 file = Sort by field number

uniq file = Removes duplicates

sort file | uniq = Always sort first before using uniq their line numbers

sort file | uniq –c = Sort first then uniq and list count

sort file | uniq –d = Only show repeated lines.

uniq

개념 및 정의:

  • uniq 명령어는 파일에서 중복된 라인을 제거합니다. 일반적으로 sort 명령어와 함께 사용됩니다.

언제 사용하는가:

  • 중복된 라인을 제거하여 고유한 라인만을 남기고자 할 때 사용합니다.

왜 사용하는가:

  • 데이터에서 중복을 제거하여 고유 데이터를 분석하거나 관리할 때 유용합니다.

어떻게 사용하는가:

uniq [옵션] [파일]

작동 원리:

  • 입력된 데이터의 연속된 중복 라인을 제거합니다. 따라서 사용 전에 sort로 데이터를 정렬하는 것이 일반적입니다.

실제 사용 예시:

중복 제거:

sort filename | uniq - 파일을 정렬한 후 중복된 라인을 제거합니다.

중복 카운트:

sort filename | uniq -c - 중복된 라인의 개수를 표시합니다.

wc

개념 및 정의:

  • wc는 파일의 라인 수, 단어 수, 바이트 수를 세어줍니다.

언제 사용하는가:

  • 파일의 크기나 내용을 요약하여 보고자 할 때 사용합니다.

왜 사용하는가:

  • 파일의 라인 수, 단어 수, 바이트 수를 확인하여 파일의 크기나 내용을 빠르게 파악할 수 있습니다.

어떻게 사용하는가:

wc [옵션] [파일]

작동 원리:

  • 입력된 파일의 각 라인, 단어, 바이트를 세어 출력합니다.

실제 사용 예시:

전체 카운트:

wc filename - 파일의 라인 수, 단어 수, 바이트 수를 출력합니다.

라인 수 카운트:

단어 수 카운트:

wc -w filename - 파일의 단어 수를 출력합니다.

여러 예시

wc –-version OR wc --help = Check version or help

wc file = Check file line count, word count and byte count

wc –l file = Get the number of lines in a file

wc –w file = Get the number of words in a file

wc –b file = Get the number of bytes in a file

wc DIRECTORY = NOT allowed
ls –l | wc -l = Number of files

grep keyword | wc -l = Number of keyword lines.

파일비교

diff

개념 및 정의:

  • diff 명령어는 두 파일을 비교하여 줄 단위로 차이점을 보여줍니다. - 두 파일의 차이를 찾고, 어디에서 변경되었는지 확인할 때 사용됩니다.

언제 사용하는가:

  • 두 파일의 차이점을 줄 단위로 비교할 때.
  • 소스 코드나 설정 파일에서 변경 사항을 검토할 때.

왜 사용하는가:

  • 파일의 변경된 부분을 정확하게 찾아낼 수 있습니다.
  • 코드 리뷰나 파일 버전 관리에서 유용합니다.

어떻게 사용하는가:

diff [옵션] 파일1 파일2

작동 원리:

  • 두 파일을 줄 단위로 비교하여 다른 부분을 찾아내고, 차이점을 표시합니다.
  • 기본적으로 수정된 줄을 포함한 몇 줄의 문맥을 함께 표시하여 이해를 돕습니다.

실제 사용 예시:

기본 비교:

diff file1.txt file2.txt
두 파일의 차이점을 줄 단위로 비교하여 출력합니다.

문맥 줄 추가:

diff -c file1.txt file2.txt
차이점 주변의 몇 줄을 포함하여 비교 결과를 표시합니다.

확장된 유니파이드 포맷:

diff -u file1.txt file2.txt
좀 더 읽기 쉬운 유니파이드 형식으로 비교 결과를 출력합니다.

cmp 명령어

개념 및 정의:

  • cmp 명령어는 두 파일을 바이트 단위로 비교하여 차이점을 찾아냅니다.
  • 파일의 정확한 바이트 비교를 통해 차이를 확인할 수 있습니다.

언제 사용하는가:

  • 두 파일의 바이트 단위 비교가 필요할 때.
  • 바이너리 파일이나 정확한 바이트 차이를 확인하고자 할 때.

왜 사용하는가:

  • 두 파일의 정확한 바이트 차이를 확인할 수 있습니다.
  • 파일의 무결성 검증이나 바이너리 파일 비교에서 유용합니다.

어떻게 사용하는가:

cmp [옵션] 파일1 파일2

작동 원리:

  • 두 파일을 바이트 단위로 비교하여 첫 번째 다른 바이트를 찾아내고, 그 위치를 표시합니다.
  • 기본적으로 차이가 발견되면 즉시 멈추고, 위치와 바이트 값을 출력합니다.

실제 사용 예시:

기본 비교:

cmp file1.bin file2.bin
두 파일을 바이트 단위로 비교하여 첫 번째 다른 위치를 출력합니다.

차이점 상세 출력:

cmp -l file1.bin file2.bin
모든 차이점을 바이트 단위로 상세히 출력합니다.

비교 결과 무시:

cmp -s file1.bin file2.bin
차이점 여부만을 확인하고 결과를 출력하지 않습니다. 이 옵션은 스크립트에서 유용합니다.

결론
diff와 cmp 명령어는 각각 줄 단위 및 바이트 단위로 파일을 비교하는데 사용됩니다.
diff는 텍스트 파일 비교에, cmp는 바이너리 파일 비교에 주로 사용됩니다.

파일 압축 및 압축 해제 명령어

tar

개념 및 정의:

  • tar 명령어는 여러 파일과 디렉토리를 하나의 파일로 묶어주는 명령어입니다.
  • tar은 "Tape Archive"의 약자입니다.

명령어

동작

  • c(소문자): 새로운 묶음 파일 생성
  • x: 묶음 파일을 품
  • t: 묶음 파일 해제 전에 묶인 경로를 표시
  • C(대문자): 지정된 디렉터리에 묶음 파일을 품. 지정하지 않으면 묶을 때와 동일한 디렉터리에 해제

옵션

  • f(필수): 묶음 파일의 이름을 지정. 원래 tar는 테이프장치 백업이 기본(생략하면 테이프로 보냄)
  • v: 파일이 묶이거나 풀리는 과정을 표시
  • J(대문자): tar + xz
  • z(소문자): tar + gzip
  • j(소문자): tar + bzip2

언제 사용하는가:

  • 여러 파일을 하나의 파일로 묶을 때.
  • 파일을 백업하거나 전송할 때.

어떻게 사용하는가:

파일 묶기: tar -cvf archive.tar file1 file2 directory/
묶은 파일 해제: tar -xvf archive.tar
내용 확인: tar -tvf archive.tar

작동 원리:

  • tar 명령어는 파일과 디렉토리를 읽고 이를 하나의 tarball 파일로 묶거나, tarball 파일을 해제하여 원래의 파일과 디렉토리 구조로 복원합니다.

실제 사용 예시:

파일 묶기:

tar -cvf backup.tar /home/user/docs
/home/user/docs 디렉토리의 모든 파일을 backup.tar로 묶습니다.

묶은 파일 해제:

tar -xvf backup.tar
현재 디렉토리에 backup.tar의 내용을 해제합니다.

내용 확인:

tar -tvf backup.tar
backup.tar의 내용을 목록으로 보여줍니다.

더많은 예시

tar cvf my.tar /etc/sysconfig/
-> 묶기

tar cvfJ my.tar.xz /etc/sysconfig/
-> 묶기 + xz 압축

tar cvfz my.tar.gz /etc/sysconfig/
-> 묶기 + gzip 압축

tar cvfj my.tar.bz2 /etc/sysconfig/
-> 묶기 + bzip2 압축

tar tvf my.tar
-> 파일 확인

tar xvf my.tar
-> tar 풀기

tar cxvf newdir my.tar
-> newdir에 tar 풀기

tar xfJ my.tar.xz
-> xz 압축 해제 + tar 풀기

tar xfz my.tar.gz
-> gzip 압축 해제 + tar 풀기

tar xfg my.tar.bz2
-> bzip2 압축 해제 + tar 풀기

gzip

개념 및 정의:

  • gzip 명령어는 파일을 압축하여 크기를 줄여주는 명령어입니다.
  • 주로 tar 명령어와 함께 사용되어 tarball 파일을 압축합니다.

언제 사용하는가:

  • 파일의 크기를 줄여 저장 공간을 절약하고 전송 속도를 높일 때.

어떻게 사용하는가:

파일 압축: gzip filename
압축 해제: gzip -d filename.gz

작동 원리:

  • gzip은 파일을 읽어 압축 알고리즘을 적용하고, 압축된 데이터를 .gz 확장자로 저장합니다.
  • 반대로 압축을 해제할 때는 압축 알고리즘을 역으로 적용하여 원래의 파일로 복원합니다.

실제 사용 예시:

파일 압축:

gzip data.txt
data.txt 파일을 압축하여 data.txt.gz로 만듭니다.

압축 해제:

gzip -d data.txt.gz
data.txt.gz 파일의 압축을 해제하여 data.txt로 복원합니다.

gunzip (gzip -d)

개념 및 정의:

  • gunzip 명령어는 gzip으로 압축된 파일을 해제하는 명령어입니다. - gzip -d 명령어와 동일한 기능을 합니다.

언제 사용하는가:

  • gzip으로 압축된 파일을 원래 상태로 복원할 때.

왜 사용하는가:

  • gzip으로 압축된 파일을 다시 사용하기 위해 압축을 해제합니다.

어떻게 사용하는가:

압축 해제: gunzip filename.gz 또는 gzip -d filename.gz
작동 원리:
gunzip은 gzip으로 압축된 파일을 읽어, 압축 알고리즘을 역으로 적용하여 원래의 파일로 복원합니다.

실제 사용 예시:

압축 해제:

gunzip archive.tar.gz
archive.tar.gz 파일의 압축을 해제하여 archive.tar로 복원합니다.
gzip -d archive.tar.gz - 동일한 기능을 수행합니다.

xz

개념

  • 확장명 xz로 파일을 압축하거나 xz 파일을 압출 해제합니다.
  • 비교적 최신 압축 명령으로 압축률이 뛰어납니다.
# xz 파일이름  
-> '파일이름' 파일을 '파일이름.xz' 파일로 압축
-> 압축 대상 파일은 삭제

# xz -d 파일이름.xz(d는 Decompress의 의미)
-> '파일이름.xz' 파일을 '파일이름' 파일로 압축 해제

# xz -l 파일이름.xz(l는 List의 의미)
-> '파일이름.xz' 압축 파일에 포함된 파일 목록과 압출률 등을 출력

# xz -k 파일이름(k는 Keep의 의미)
-> 압축 후 기존 파일을 삭제하지 않음

bzip2

개념

  • 확장명 bz2로 파일을 압축하거나 bz2 파일을 압축 해제함
# bzip2 파일이름
-> '파일이름' 파일을 '파일이름.bz2' 파일로 압축

# bzip2 -d 파일이름.bz2
-> '파일이름.bz2' 파일을 '파일이름' 파일로 압축 해제

시스템 정보 찾기

제목: 리눅스 시스템 정보 찾기

리눅스에서 시스템 정보를 확인하는 명령어는 다음과 같습니다:

  • uname -a: 시스템의 모든 정보 출력
  • cat /etc/redhat-release: 배포판 버전 확인
  • dmidecode: 하드웨어 정보 확인

0개의 댓글