본문 바로가기
Programming

리눅스 기본명령어 (C)

by 느리게 걷는 즐거움 2024. 6. 20.
반응형

리눅스 명령어 활용: 더욱 다양한 작업을 위한 명령어 가이드

리눅스 명령어는 파일 관리, 시스템 모니터링, 네트워크 설정 등 다양한 작업을 수행할 수 있는 강력한 도구입니다. 이번에는 추가적으로 유용한 명령어들을 소개하고, 각 명령어의 사용법과 예시 코드를 제공하겠습니다.

`grep`

텍스트 검색 및 필터링`grep` 명령어는 파일 내에서 특정 패턴을 검색하거나 텍스트를 필터링하는 데 사용됩니다.

# 파일에서 특정 단어 검색
grep "keyword" filename

# 대소문자 구분 없이 검색
grep -i "keyword" filename

# 정규 표현식으로 검색
grep "^pattern" filename

 

`sed`: 텍스트 스트림 편집기

`sed` 명령어는 텍스트 스트림에서 특정 패턴을 찾아 대체하거나 텍스트를 변형하는 데 사용됩니다.

# 특정 패턴을 다른 문자열로 대체
sed 's/old/new/' filename

# 특정 줄 번호에서 특정 패턴을 다른 문자열로 대체
sed '10s/old/new/' filename

`awk`: 텍스트와 데이터 처리

`awk` 명령어는 텍스트 파일에서 특정 조건을 만족하는 줄을 선택하거나 데이터를 가공하는 데 사용됩니다.

# 공백으로 구분된 필드에서 특정 조건을 만족하는 줄 출력
awk '{ if ($1 == "keyword") print $0 }' filename

# 파일의 각 줄에서 특정 필드 값을 더하기
awk '{ sum += $1 } END { print sum }' filename

 

`sort`: 파일 정렬

`sort` 명령어는 파일의 줄을 정렬하는 데 사용됩니다.

# 파일을 알파벳 순으로 정렬
sort filename

# 역순으로 정렬
sort -r filename

# 숫자로 정렬
sort -n filename

 

`awk`와 `grep`의 결합: 텍스트 데이터 분석

`awk`와 `grep`을 함께 사용하여 텍스트 데이터를 더욱 정밀하게 분석할 수 있습니다.

# 특정 패턴을 포함하는 줄 출력하기
awk '/pattern/ {print}' filename

# 특정 필드의 값을 추출하고, 해당 값이 포함된 줄 출력하기
awk '{ if ($2 >= 50) print $0 }' filename | grep "keyword"


`find`와 `xargs`: 대규모 파일 및 디렉토리 관리

`find`와 `xargs`를 조합하여 대규모 파일이나 디렉토리를 효율적으로 관리할 수 있습니다.

# 특정 디렉토리에서 특정 파일 삭제하기
find /path/to/directory -name "*.tmp" -type f -delete

# 검색 결과에 대해 특정 명령어 적용하기
find /path/to/directory -type f -print | xargs grep "keyword"

 

xargs는 표준 입력에서 데이터를 읽어들여 명령어의 인자로 사용합니다. 기본적으로 입력을 공백이나 개행 문자로 분리하여 처리합니다.

echo 'file1 file2 file3' | xargs rm

위의 예시에서 echo 명령어는 문자열을 출력하고, 이를 xargs rm 명령어에 전달하여 파일들을 삭제하게 됩니다.

주요 옵션

xargs는 다양한 옵션을 지원하여 작업을 더욱 유연하게 제어할 수 있습니다.

-I {}: 입력을 {}로 대체하여 명령어 실행.
-n: 한 번에 처리할 인자의 수를 지정.
-0: NULL (널) 문자를 구분자로 사용하여 입력 처리 (주로 find -print0와 함께 사용).

널문자 옵션을 사용할 때에는 명령어의 출력과 xargs의 입력 데이터가 널문자로 제대로 구분되어야 합니다. 일반적으로는 -print0와 -0 옵션을 짝지어 사용하여 문제 없이 작업을 수행할 수 있습니다. 특히 파일명에 공백이나 특수 문자가 포함된 경우에는 이 옵션을 사용하여 안전하게 처리할 수 있습니다.

# .txt 확장자를 .bak으로 변경
# -I {}: {}는 각 줄의 내용을 대체할 플레이스홀더입니다. 각 파일명이 {}에 들어가게 됩니다.
# 따라서 각 파일에 대해 mv original_filename.txt original_filename.txt.bak와 같은 형태로 명령어가 실행되어, 각 파일명에 .bak이 추가된 백업 파일이 생성됩니다.
ls *.txt | xargs -I {} mv {} {}.bak

# 여러 파일에서 'keyword' 문자열 검색
ls *.txt | xargs grep 'keyword'

# 여러 파일을 하나의 파일로 병합
ls *.log | xargs cat > merged_logs.txt

`rsync`: 원격 및 로컬 파일 동기화

`rsync` 명령어는 파일과 디렉토리를 로컬 간 또는 원격 간에 동기화할 때 사용됩니다.

# 로컬 디렉토리를 원격 서버로 동기화
rsync -avz /path/to/local/directory username@remote_host:/path/to/destination

# 원격 서버의 디렉토리를 로컬로 동기화
rsync -avz username@remote_host:/path/to/remote/directory /path/to/local/destination


`curl`와 `jq`: 웹 API와 JSON 데이터 처리

`curl`과 `jq`를 함께 사용하여 웹 API에서 JSON 데이터를 가져오고 처리할 수 있습니다.

# API에서 JSON 데이터 가져오기
curl -s http://api.example.com/data | jq '.'

# 특정 필드 값 추출하기
curl -s http://api.example.com/data | jq '.field_name'

# JSON 배열에서 필드 값 추출하기
curl -s http://api.example.com/data | jq '.[] | .field_name'

 

`watch`: 명령어 주기적 실행 및 출력 감시

`watch` 명령어는 지정된 간격으로 명령어를 실행하고 그 결과를 실시간으로 감시할 수 있습니다.

# 지정된 간격으로 명령어 실행하기 (예: CPU 사용량 모니터링)
watch -n 1 "ps aux | grep 'process_name'"

 

결론

위에서 소개한 리눅스 명령어들은 다양한 작업을 효율적으로 수행할 수 있도록 도와줍니다. 각 명령어는 다양한 옵션과 조합으로 더욱 강력하게 사용할 수 있습니다. 리눅스 환경에서 이러한 명령어들을 익히고 활용하면 시스템 관리와 작업 수행이 훨씬 더 효율적이고 편리해질 것입니다.

반응형

'Programming' 카테고리의 다른 글

리눅스 명령어 (E)  (0) 2024.06.20
리눅스 기본명령어 (D)  (0) 2024.06.20
Linux 기본명령어 (B)  (0) 2024.06.20
Linux 기본 명령어 (A)  (0) 2024.06.20
Django에서 파일입력 받고 처리하기  (0) 2024.06.16