스터디/리눅스(Linux)

[리눅스 스터디] 리눅스(Linux) 그대로 따라하기 - 리눅스 쉘(Shell) 이해와 다루기

acqu1esce 2025. 4. 10. 20:58

 

* 해당 교재는 2017년 출판된 것으로 현재 리눅스 버전에서 사용하는 프로그램과는 다를 수 있습니다.

 

서자룡, 청담북스

 

 

 

안녕하세요,

이번 포스팅에서는 리눅스 쉘의 개념부터 아주 기본적인 명령어를 알아보겠습니다!

 

 

 

*리눅스 인터넷 응용프로그램과 오피스 응용프로그램에 대해 궁금하다면 이전 포스팅을 참고하세요.

 

[리눅스 스터디] 리눅스(Linux) 그대로 따라하기 - 인터넷 응용프로그램과 오피스 응용프로그램

* 해당 교재는 2017년 출판된 것으로 현재 리눅스 버전에서 사용하는 프로그램과는 다를 수 있습니다.리눅스 인터넷 응용프로그램 (p.222~227)1. 리눅스에서 파이어폭스 사용하기 리눅스에서는 다양

acqu1esce.tistory.com

 

 

 

 


1. 쉘(shell)이란? (p.535~538)

  • 리눅스 운영체제의 명령작업을 수행할 수 있도록 만들어진 프로그램
    • 사용자가 운영체제에서 어떤 파일들이 존재하는지 알아보기 위해 실행하는 ‘ls’명령을 입력받아 운영체제(커널)에 전달해주는 역할
  • 콘솔(console)
    • 엑스 윈도우 환경에서 터미널 창을 제공
  • 가상콘솔(virtual console)
    • 엑스 윈도우가 발전하기 전 많이 사용
    • 리눅스는 최대 6개의 콘솔을 지원하는데 이를 가상콘솔(터미널)이라고 부름
    • AltF1~F6 키를 눌러 각 콘솔로 전환 가능
    • 엑스 윈도우 환경에서 Ctrl + Alt + F1 키를 누르면 가상콘솔로 전환됨
      • 엑스 윈도우로 다시 돌아가려면 Alt + F8

 

실습

  • 터미널(console)창 실행하기

 

  • 리눅스에서 지원하는 쉘의 종류는 /etc/shells 파일에 정의.
    • cat/etc/shells 명령 실행하여 어떤 쉘을 사용할 수 있는지 확인
      • 기본 쉘인 배시(bash) 가 출력됨
  • 현재 어떤 쉘을 하고 있는지 확인하기 위해 echo $SHELL 명령 실행
    • bash가 출력
  • 대부분 bash 쉘 환경에서 진행하기 때문에 다른 쉘로 바꿀 필요 없음

 

2. 프롬프트(prompt)구조 (p.539)

쉘에 로그인 했을 때 가장 먼저 보이는 프롬프트의 구조

 

[dumca@localhost](<mailto:dumca@localhost>) ~ $

 

 

3. 쉘 환경 변수 설정 (p.539~553)

  • 환경 변수는 쉘 프로그래밍 할 경우와 사용자 환경을 설정하는 경우에 사용.
    • 쉽게 이야기해서 각자 깊숙이 있는 응용프로그램을 쉽게 꺼내쓰기 위해서 미리 변수로 등록해 놓는 것
  • 환경 변수는 사용자가 로그인 할 떄 자동으로 실행되어 사용자의 환경을 설정해 주는 .bash_profile 파일에서 설정가능
  • cat 명령이나 vi 에디터 등으로 이 파일 내용을 보게 되면 사용자의 환경 설정 가능

 

  • export 설정할변수명=값 라는 command로 지금 shell에 전역적으로 해당되는 환경 변수를 세팅
    • export 입력으로 어떤 환경변수 값이 세팅되어 있는지 확인 가능

 

쉘 변수 확인

 

아 모자이크 하기 커찮... 그냥 업로드 할게요 ㅎㅎ;;

 

  • env 명령어로 현재 사용중인 사용자의 쉘변수 출력
    • 쉘 변수 확인 env | grep SHELL
    • 사용자 변수 확인 env | grep USER
    • 경로 변수 확인 env | grep PATH
    • 호스트 이름 확인 env | grep HOSTNAME
    • 로그인 정보 확인 env | grep LOGNAME
    • 로케일 언어 변수 env | grep LANG
    • 사용자 홈 경로 env | grep HOME

 

  • declare | more : env에서 보여주지 않았던 쉘 변수 출력에 대한 정보
    • 쉘 변수 출력하는 명령보다는 변수 선언에 주로 사용

 

4. 쉘 명령어 익히기 (p.554~594)

  • 파일 부분 보기
    • 파일내의 첫 부분에 있는 메시지를 보고자 할 때 출력하는데, 원하는 줄 수와 용량 지정
      • head [옵션] 파일명

 

  • 파일 마지막 부분에 있는 메시지 출력
  • tail [옵션] 파일명

 

  • 입력 문자 출력

 

 

  • 시스템 환경 변수나 입력 내용을 화면에 출력
    • echo [옵션] 문자열

  • echo 문자열 내부 환경 변수의 내용을 출력
  • 파일로 저장하려면 다음과 같이 리다이렉션 > 기호를 사용

 

  • 화면 문자 모두 지우기
    • clear 명령어를 통해 화면상에 보이는 모든 메시지 제거
  • 정렬
    • sort [옵션] 파일 명령으로 텍스트 파일 내의 내용을 정렬

 

  • 파일 찾기
    • find [경로] [옵션] 파일명 명령으로 원하는 파일 서치

 

find는 검색 후 검색한 결과를 처리할 수 있는 행동을 지원

find는 명령 내에서 연산자 사용 가능

 

  • 일반적인 파일 검색
    루트 접근 후 find / -name ping : 최상위 루트 디렉토리 이하의 디렉토리에서 ping를 포함하는 모든 파일을 찾아라!

  • 파일명이 정확히 기억나지 않을 때 파일이름 검색
    find / usr/bin -name wh* : 파일명이 제대로 기억나지 않는 경우, 예를 들어 wh로 시작되는 파일을 검색하려고 할 때

 

이외에도 다양한 방식으로 파일 검색하는 방법은 교재 p.559~566을 참고하세요

 

 

  • grep(global regular expression print) 명령
    • grep은 파일에서 정규식에 맞는 텍스트 라인을 찾아 출력.
    • 정규식이란, 사전에 정의된 특수 문자로 패턴을 표현하는 것

 

grep [옵션] 패턴 [파일]

 

 

  • Sed(streaming editor)
    • 명령 행에서의 텍스트 편집 도구로, vi 에디터와 같은 문서 편집기가 아닌 명령 행이나 스크립트에서 명령을 통해 텍스트 파일에 있는 글자를 특정 패턴에 따라 글자를 선택하여 변경, 입력, 삭제하는 에디터 도구
    • sed [옵션] ‘sed 명령어’ 입력파일
    • sed [옵션] -f sed스크립트파일 입력파일
    • sed 스크립트파일 [옵션] 입력파일

 

편집 라인 위치 선택 → 데이터 추가 → 편집 저장 순서로 이루어지며 추가한 라인을 삭제할 수도 있다.

  • awk
    • 텍스트 파일에서 특정 문자의 패턴을 추출하여 원하는 포맷으로 처리되도록 하는 패턴 검색 후, 처리
    • 마지 텍스트 파일을 DB로 하여 DB 검색하는 것처럼 사용되며 쉘 프로그래밍에서 주로 사용되는 기능
    • awk [-F필드구분자] ‘명령’ 입력파일
    • awk -f awk 스크립트파일 입력파일

 

  • xargs
    • 지정된 명령과 기본 인수 뒤에 표준 입력으로부터 입력되는 문자열을 공백이나 라인으로 구분, 인수로써 명령 행을 만들어 처리
    • ls, find, cat 명령어와 파이프 기호 뒤에 주로 사용
    • xargs [옵션] [명령어]

 

 

  • wc
    • 파일 내의 단어 수를 파악하고자 할 때 사용
    • 행 수, 단어 수, 문자 수를 검사하여 보고
    • wc [-cwl] 파일명

 

명시한 파일의 줄 수, 단어 수, 문자 수 파악 가능

 

  • read
    • 사용자로부터 표준입력을 받아들여 변수로 저장
    • read [옵션] 변수

 

  • read 명령 실행 후 변수 입력, 변수 값 확인은 %REPLY
    • test
      • 주어진 조건식을 평가하는 내장 명령어
      • 조건식을 평가하여 참이면 종료값을 0으로, 그렇지 않으면 1로 반환
      • [ 조건식 ]  # 조건식 전후로 공백 사용
        read에 변수명을 지정하여 $변수명으로 변수값 확인

 

  • declare
    • 쉘 스크립트에서 변수를 정의할 때 사용되는 내부 명령으로 typeset 명령어와 동의어
    • declare [옵션] [변수명[=변수값]]

 

  • 읽기 전용의 변수 선언, 변수값 변경 불가
  • 정수형 변수 선언 및 변수 값 변경
  • 배열 선언
  • 변수형 선언 및 변수값 동시 할당

 

  • exit
    • 스크립트를 종료할 때 사용하는 내부 명령으로, 쉘 스크립트의 조건식을 수행하고 빠져나오거나 쉘 스크립트를 마칠 때 맨 마지막 라인에서 사용
    • 쉘에서 로그아웃 할 때 사용
    • exit
  • ture/false
    • 쉘 스크립트에서 명령 실행 결과가 참인가 거짓인가 반환
    • true/false

 

  • set
    • 변수명과 변수값을 지정할 때 사용
    • 변수값은 숫자, 문자, 문자열 등 사용 가능, set 인자에 쓰이는 문자열은 공백에 의해 $1부터 차례대로 대입
    • set [옵션] 인자
    • set 변수 = 변수값

-환경 변수 출력

 

 

- date 명령 결과에 따른 변수 출력

  • date 명령 실행 결과값으로 인자값 설정
  • 공백으로 구분되어 첫 번째 인자값 출력
  • 두 번째, 세 번째 인자값 콤마로 구분하여 출력
  • 네 번째, 마지막 인자값 출력

 

  • unset
    • 선언된 변수를 해제하기 위한 명령어
    • unset [옵션] 변수
  • sleep
    • 주어진 명령을 실행한 후 다음 명령을 실행하기 전에 대기할 시간을 지정하는 명령어
    • sleep 시간
  • time
    • 주어진 작업이 걸리는 시간을 체크하는 명령어
    • time 명령어
  • source
    • 시스템을 재시작하지 않고 변경된 파일로 바로 적용할 수 있게 해주는 내부 명령어
    • source 명령어
  • nohup
    • 로그아웃을 하더라도 실행시킨 프로세스가 종료되지 않고 계속 동작하게 하는 명령어
    • nohup 명령 $

 

5. 쉘 스크립트 작성 (p.594~602)

  • cat > [파일명.sh](<http://파일명.sh>) 로 쉘 스크립트 진입
  • 첫 줄은 #!/bin/bash 로 명시
  • 쉘 스크립트에서 나갈 때는 ctrl+c

 

쉘 스크립트 실행 ./forever.sh 하면, → ‘허가거부’ 메시지와 함께 실행되지 않음

모든 사용자에게 실행 권한 주는 chmod 755 권한 부여,

chmod 755 ./forever.sh 로 실행 → 스크립트에 입력해두었던 출력문 실행

  • 실행 명령어 3가지 중 선택
    • ./forever.sh
    • sh forever.sh
    • bash forever.sh

 

[쉘 스크립트 환경에서의 조건문 예제]

 

 

[쉘 스크립트 환경에서의 반복문 예제]

 

 

 

 


 

 

 

해당 내용에 관련해서 질문이 있다면 댓글 남겨주시고 다음 포스팅도 기대해 주세요!