본문 바로가기
Linux

[Linux] 8. 리눅스 셸의 기능과 기본 사용법

by 상도동개발자 2023. 2. 9.
SMALL

1. 셸의 기능

1-1. 명령어 해석기 기능

- 셸의 기본적인 기능은 사용자와 커널 사이에서 명령을 해석, 번역하는 기능

- 셸이 사용자의 명령을 기다리고있음을 나타내는 표시를 프롬프트라고 함

- 셸은 대기상태로 있다가 사용자의 명령, 스크립트를 읽어들여 내장명령을 판단하고 내장명령은 바로 실행을 진행한다.

 

1-2. 프로그래밍 기능

- 셸 자체 내에는 프로그래밍 기능이 있어 프로그램도 만들 수 있다.

- 셸로 만들어진 프로그램을 셸 스크립트라고 부른다.

 

1-3. 사용자 환경 설정 기능 

- 셸은 사용자 환경 설정을 할 수 있도록 초기화 파일 기능을 제공

- 사용자가 로그인 할 때 초기화 파일이 실행되어 사용자별로 특성에 맞게 초기 환경이 설정 됌

 

2. 셸의 종류

본셸, C셸, 콘셸,배시셸,대시셸이 있다.

 

3. 셸의 기본 사용법

3-1. 셸 지정 및 변경

- 현재 사용중인 셸의 종류를 알아보는 가장 쉬운 방법은 프롬프트 모양을 확인하는것이다. 본셸, 콘셸, 배시셸은 기본 프롬프트가 $이고 C셸은 %다.

- grep 명령어를 이용한 셸 확인

grep 명령어를 이용한 셸 확인 : bash 셸 사용 확인

3-1-1. chsh

사용자 로그인 기본 셸을 변경한다.

- 형식 : chsh [옵션] [사용자명]

- 옵션

옵션 설명
-s shell 지정하는 셸(절대 경로)로 로그인 셸을 바꾼다.
-l /etc/shells 파일에 지정된 셸을 출력한다.

- 사용 예

로그인 셸 변경

3-1-2. 로그인 셸과 서브 셸

- 사용자는 프롬프트에서 다른 셸을 실행 할 수 있는데 이렇게 새로 생성된 셸을 서브 셸이라고 한다.

- 서브셸을 종료하는 방법은 Ctrl + d, exit로 종료 가능하다.

 

3-2. 셸 내장 명령

- 셸은 자체적으로 내장 명령을 가지고 있다.

- 셸 명령은 별도의 파일 없이 셸안에 포함되어 있다. 대표적은 셸 내장 명령은 cd

 

3-3. 출력 명령

배시셸의 출력 명령으로는 echo와 printf가 있다.

3-3-1. echo 명령어

화면에 한 줄의 문자열을 출력한다.

- 형식 : echo [-n] [문자열]

- 옵션

옵션 설명
-n 마지막에 줄 바꿈을 하지 않는다.

- 사용 예

echo 명령어 사용 예시

3-3-2. printf 명령어

자료를 형식화하여 화면에 출력

- 형식 : printf [형식] [인수]

- 옵션 

형식 : %d, \n 등 C 언어의 printf 함수의 형식을 지정 할 수 있다.

- 사용 예

printf 명령어 예시

3-4. 특수문자 사용 방법

셸은 사용자가 더욱 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자를 제공한다.

 

3-4-1. 특수문자 *

- 임의의 문자열을 나타내는 특수문자중 하나

- 셸에서 *는 0개 이상의 문자로 대체

- 주로 여러 파일의 이름을 나열 할때 파일 이름을 간단히 표시하는데 사용

- 명령 실행 시 파일명에 * 사용 시 모든 파일을 의미

- 사용 예

사용 예 의미
ls * 현재 디렉터리의 모든 파일과 서브 디렉터리를 나열한다. 서브 디렉터리의 내용도 출력
cp * /tmp 현재 디렉터리의 모든 파일을 /tmp 디렉터리 아래로 복사
ls -F t* t, tmp, temp와 같이 파일명이 t로 시작하는 모든 파일의 이름과 파일 종류를 출력한다. t도 해당 한다는 데 주의한다.
cp *.txt ../ch3 확장자가 txt인 모든 파일을 상위 디렉터리 아래의 ch3 디렉터리로 복사한다.
ls -l h*d 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력한다. hd,had,hard,h12345d 등 이 조건에 맞는 모든 파일 정보를 볼 수 있다.

3-4-2. 특수문자 ? 와 []

- 하나의 문자를 나타내는데에 사용

- ?는 길이가 1인 임의의 문자, []는 괄호안에 포함된 문자 중 하나는 나타낸다.

- 사용 예

사용 예 의미
ls t?.txt t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력한다. t1.txt, t2.txt, ta.txt등이 해당 된다. 단, t.txt는 제외
ls -l tmp[135].txt tmp 다음에 1, 3, 5 중 하나가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력한다. tmp1.txt, tmp3.txt, tmp5.txt 파일이 있으면 해당 파일의 상세 정보를 출력한다. 단, tmp.txt는 제외
ls -l tmp[1-3].txt [1-3]은 1부터 3까지의 범위를 의미한다. 따라서 ls -l tmp[123].txt 와 결과가 같다. 즉 tmp1.txt, tmp2.txt, tmp3.txt 파일이 있으면 해당 파일의 상세 정보를 출력한다.
ls [0-9]* 파일명이 숫자로 시작하는 모든 파일의 목록을 출력한다.
ls [A-Za-z]*[0-9] 파일명이 영문자로 시작하고 숫자로 끝나는 모든 파일의 목록을 출력한다.

3-4-3. 특수문자  ~ 와 -

- 디렉터리를 나타내는 특수문자

- ~만 사용하면 현재 작업 중인 사용자 홈 디렉터리를 나타 냄

- ~로그인ID는 해당 사용자의 홈 디렉터리를 나타낸다.

- -(하이픈)은 cd 명령으로 현재 디렉터리로 이동하기 직전의 디렉터리를 나타낸다.

- 사용 예

사용 예 의미
cp *.txt ~/ch3 확장자가 txt인 모든 파일을 현재 작업 중인 사용자 홈 디렉터리 아래 tmp 디렉터리로 복사
cp ~user2/linux.txt. user2라는 사용자 홈 디렉터리 아래에서 linux.txt 파일을 찾아 현재 디렉터리로 복사
cd - 이전 작업 디렉터리로 이동한다.

3-4-4. 특수문자 ; 과 |

- 명령과 명령을 연결한다.

- ;는 연결된 명령을 왼쪽부터 차례로 실행

- |는 왼쪽 명령을 실행 결과를 오른쪽 명령의 입력으로 전달

- 사용 예

사용 예 의미
date; ls; pwd 왼쪽부터 차례대로 명령을 실행한다. 즉 날짜를 출력한 후 현재 디렉터리의 파일 목록을 출력하고, 마지막으로 현재 작업 디렉터리의 절대 경로를 보여준다.
ls -al / | more 루트 디렉터리에 있는 모든 파일의 상세 정보를 한 화면씩 출력한다. ls -al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력되는 것이다.

3-4-5. 특수문자 ' ' 와 " " 

- 문자를 감싸서 문자열로 만들어준다.

- 문자열 안의 특수문자 기능을 없앤다.

- ' '(작은따옴표) - 모든 특수문자를 일반 문자로 간주한다.

- " "(큰따옴표) - $, `, \ 을 제외한 모든 특수문자를 일반 문자로 간주한다.

- 사용 예

사용 예 의미
echo '$SHELL' $SHELL 문자열이 화면에 출력된다.
echo "$SHELL" 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력된다. bin/bash를 예로 들 수 있다.

3-4-6. 특수문자 ` `

- 감싸인 문자열을 명령으로 해석하여 실행 결과가 변경된다.

- 사용 예

사용 예 의미
echo "Today is `date`" `date` 가 명령으로 해석되어 date 명령의 실행 결과로 바뀐다. 결과적으로 다음과 같이 출력된다. Today is 2021.12.12 (일) 15:42:40 KST
ls /usr/bin/`uname -m` uname -m 명령의 실행 결과를 문자열로 바꾸어 파일 이름으로 사용한다.

3-4-7. 특수문자 \

- 특수문자앞에 사용하며 특수문자의 효과를 없애고 일반 문자처럼 처리한다.

- 사용 예

사용 예 의미
ls -l t\* t*라는 이름을 가진 파일의 상세 정보를 출력한다. \ 없이 t* 를 사용하면 t로 시작하는 파일의 상세 정보를 출력
echo \$SHELL $SHELL을 화면에 출력한다. echo '$SHELL' 과 결과가 같다.

3-4-8. 특수문자 >, <, >>   

- 입출력의 방향을 바꾸는 특수문자

- 사용 예

사용 예 의미
ls -l > res ls -l 명령의 실행 결과를 화면이 아닌 res파일에 저장
ls -l >> res ls -l 명령의 결과를 res 파일의 끝부분에 추가
cat < text cat 명령의 입력을 text 파일에서 받는다.

 

728x90
반응형
LIST

댓글