임베디드 관련 카테고리/Linux command

리눅스에서 자주 사용되는 용어와 개념

CBJH 2024. 9. 26.
728x90
반응형

 

1. 변수 (Variable)

리눅스 쉘에서는 변수에 값을 저장할 수 있습니다. 변수를 선언하고 사용할 때는 아래와 같은 방식으로 작성합니다.

변수 선언:

name="John"

변수 사용:

echo $name
 

이 코드는 **name**이라는 변수에 **John**이라는 값을 저장하고, 그 값을 echo 명령어로 출력합니다.


 

2. 쌍따옴표 (")와 홑따옴표 (')의 차이

리눅스 쉘에서 문자열을 감쌀 때, 쌍따옴표와 홑따옴표는 서로 다른 동작을 합니다.

2.1. 쌍따옴표 ("):

  • 변수 치환명령어 치환을 허용합니다. 즉, 문자열 안에 변수를 포함하거나 명령어 결과를 포함할 수 있습니다.
name="John"
echo "Hello, $name"
  • 출력: Hello, John
  • 설명: 쌍따옴표 안에서는 **$name**이 변수로 치환됩니다.

2.2. 홑따옴표 ('):

  • 변수 치환명령어 치환을 허용하지 않습니다. 즉, 따옴표 안의 내용은 그대로 출력됩니다.
name="John"
echo 'Hello, $name'
  • 출력: Hello, $name
  • 설명: 홑따옴표 안에서는 **$name**이 변수로 해석되지 않고, 텍스트 그대로 출력됩니다.

2.3. 따옴표 결합 사용:

변수와 고정 문자열을 함께 사용할 때는 두 가지 따옴표를 결합해서 사용할 수 있습니다.

name="John"
echo "Hello, $name's computer"
  • 출력: Hello, John's computer
  • 설명: 변수 **$name**은 치환되고, 's computer 부분은 문자열로 그대로 출력됩니다.

3. 파이프 (|)

파이프는 한 명령어의 출력을 다른 명령어의 입력으로 전달하는 기능을 합니다. 즉, 파이프를 사용하면 여러 명령어를 연속으로 실행할 수 있습니다.

예시:

echo "Hello World" | grep "World"
  • 출력: Hello World
  • 설명: echo 명령어가 출력한 문자열을 grep 명령어에 전달하여, **World**가 포함된 줄을 출력합니다.

4. 명령어 치환 ($(...))

리눅스에서는 명령어 치환을 사용하여 명령어의 결과를 변수에 저장하거나 다른 명령어에서 사용할 수 있습니다. 명령어 치환은 $(...) 문법을 사용합니다.

예시:

current_date=$(date)
echo "Today's date is $current_date"
  • 출력: Today's date is (현재 날짜)
  • 설명: **$(date)**는 date 명령어의 결과를 변수 **current_date**에 저장하고, 이 값을 **echo**로 출력합니다.

5. grep

**grep**은 특정 문자열을 파일이나 출력된 텍스트에서 검색하는 명령어입니다. 다양한 옵션을 제공하여 검색 조건을 설정할 수 있습니다.

기본 사용법:

echo "Hello World" | grep "World"
  • 출력: Hello World
  • 설명: **grep "World"**는 입력된 텍스트에서 **World**가 포함된 줄을 찾아 출력합니다.

-q 옵션 (quiet mode) :

  • -q 옵션을 사용하면 검색 결과를 출력하지 않고, 검색 성공 여부만 확인합니다.
echo "Hello World" | grep -q "World"
  • 출력 없음 (성공 여부만 반환)
  • 설명: **grep -q**는 검색된 내용이 있을 때는 성공(0)을 반환하고, 없을 때는 실패(1)를 반환합니다.

6. 변수와 따옴표를 사용하는 이유

쌍따옴표로 변수를 감싸는 이유:

변수를 사용하여 데이터를 처리할 때는 가능한 쌍따옴표로 감싸는 것이 좋습니다. 이는 공백이나 특수 문자가 포함된 값을 안전하게 처리할 수 있도록 해줍니다.

예시:

name="John Doe"
echo $name     # 출력: John Doe (공백이 하나로 축소될 수 있음)
echo "$name"   # 출력: John Doe (원래 공백 유지)
  • 설명: 쌍따옴표 없이 변수를 사용할 경우, 값에 포함된 공백이 잘못 처리될 수 있습니다. 쌍따옴표를 사용하면 공백이 그대로 유지됩니다.

7. -r 옵션 (raw output mode)

  • **-r**는 raw의 약어입니다.
  • jq 명령어에서 사용되며, raw 모드는 데이터를 원시 형태로 출력하는 것을 의미합니다.
  • 기본적으로 jq는 JSON 데이터를 따옴표로 감싸서 출력하는데, -r 옵션을 사용하면 이 따옴표를 제외한 순수 데이터를 출력합니다.

사용 예시:

echo '{"cert": "sample_certificate"}' | jq -r '.cert'
  • 출력: sample_certificate
  • 설명: **jq -r '.cert'**는 cert 필드의 값을 따옴표 없이 출력합니다. -r 옵션을 사용하지 않으면 값이 따옴표로 감싸져 출력됩니다.

8. jq (JSON Query)

  • **jq**는 JSON Query의 약어입니다.
  • JSON 데이터를 다룰 때 사용되는 도구로, JSON 형식의 데이터를 파싱하고 필요한 값을 추출하거나 변환할 수 있습니다.
  • jq는 JSON 데이터 안에서 특정 필드를 선택하거나, 그 값을 가공하는 데 매우 유용합니다.

기본 사용법:

echo '{"key": "value"}' | jq '.key'
  • 출력: "value"
  • 설명: **jq '.key'**는 JSON 데이터에서 **key**라는 필드의 값을 추출합니다.

jq의 추가 예시 (필터링 및 포맷팅):

 
echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq '.[].name'
  • 출력:
     
  • 설명: JSON 배열에서 name 필드를 각각 출력합니다.
"Alice"
"Bob"

-r 옵션과 함께 사용하는 예시:

echo '{"cert": "sample_certificate"}' | jq -r '.cert'
  • 출력: sample_certificate
  • 설명: -r 옵션을 사용하면 JSON 필드의 값이 따옴표 없이 출력됩니다.

9. curl

  • **curl**은 Client URL의 약어로, 리눅스에서 다양한 프로토콜을 사용해 데이터를 전송할 수 있는 도구입니다.
  • 주로 HTTP, HTTPS 요청을 보내 API 서버와 통신하거나 파일을 다운로드하는 데 사용됩니다.

기본 사용법:

curl https://example.com
  • 출력: 웹 페이지의 HTML 코드 출력
  • 설명: **curl**은 지정한 URL로 HTTP 요청을 보내고, 그 응답을 출력합니다.

JSON 데이터를 가져오는 예시:

curl -X GET "https://api.example.com/data"
  • 설명: **curl**은 GET 요청을 보내서 API 서버로부터 JSON 데이터를 가져옵니다.

 

 

요약

 

리눅스에서 쉘 스크립트를 작성할 때, 쌍따옴표와 홑따옴표, 파이프, 명령어 치환 등을 적절히 사용하면 복잡한 작업을 쉽게 처리할 수 있습니다. 각 기능의 차이를 잘 이해하고, 안전하게 스크립트를 작성하는 것이 중요합니다.

 

옵션 및 도구 정리:

  • -q (quiet): grep에서 사용하며, 출력 없이 성공 여부만 반환합니다.
  • -r (raw output): jq에서 사용하며, JSON 필드를 원시 값으로 출력합니다.
  • jq (JSON Query): JSON 데이터를 파싱하고 가공하는 도구입니다.
  • curl (Client URL): 다양한 프로토콜을 사용해 데이터를 전송하는 도구입니다.
  • grep (Global Regular Expression Print): 텍스트에서 특정 패턴을 찾고 출력하는 명령어입니다.

댓글