새소식

languages/Linux

[Linux] Bash Shell 기초

  • -

Shell

사용자의 명령을 해석하고 실행하는 명령 해석기. OS뿐만 아니라 모든 종류의 프로그램에 적용되는 일반 요소이다. 리눅스 CLI에서는 bash가 기본(표준) 셸이다. 

 

터미널을 실행하거나 CLI 환경에서 로그인을 하면 자동으로 기본 셸(bash)로 시작하며, 셸 프로그램 이름으로 명령한다.

stty: 터미널 세팅 및 컨트롤 키 변경 명령어

stty -a:  현재 터미널에서 사용 가능한 명령어 보여준다.

 

 

셸의 공통 기능

  • 다수의 내장(built-in) 명령어 제공
  • 메타 문자 사용
  • 입출력 및 오류 재지정 (redirection)
  • 파이프라인
  • 명령어 대치/완성/편집
  • 환경 변수와 지역변수
  • 백그라운드 처리와 작업(프로세스) 제어
  • 셸 프로그래밍

메타문자: 문자 자체가 아닌 별도의 의미를 가지는 문자

메타문자 의미 예시
? 문자 한 개 a?  ab, ac, a3...
* 문자 여러 개 (0개 이상) c*t cat, chat, come at...
[set] set에 있는 하나의 문자 [abc]
[a-z]
[-a-z]
abc 중 하나
모든 소문자 중 하나
-와 모든 소문자 중 하나
[!set] set에 없는 하나의 문자 [!0-9]
[0-9!]
숫자가 아닌 문자
모든 숫자와 !
{s1, s2...} s1 or s2 or ... b{ed,olt,ar}s
ls*.{c,h,o}
beds, bolts. bars
확장자가 .c, .h, .o인 모든 파일 리스트

 

컨트롤 키를 이용한 제어

컨트롤 키 stty 명 기능
^C intr 현재 명령 중지
^D eof 입력의 끝
^/ quit ^C가 동작하지 않을 경우 현재 명령 중지
^S stop 화면 출력 정지
^Q start 화면 출력 다시 시작
^Z susp 현재 명령 일시 중단

 

stty 명령어란 터미널 라인 설정을 출력하거나 변경하는 명령어이다.


명령 해석 기능

명령 문자를 일반 문자로 취급하는 방법

  1. '\n'을 일반 문자로 취급하기
  2. 행의 끝에 / 사용 (\n을 완전히 무시하고 한 줄로 연결)
  3. 인용부호 (')로 연결 (\n을 끝이 아닌 하나의 문자로 취급)

특수 문자를 일반 문자로 취급하는 방법

  1. 인용부호 사용
  2. \ 사용

echo this is \n test
# \뒤의 문자를 일반 문자로 바꾸고 역할을 다함

echo this is '\n' test
# 인용 부호 사용

echo this is \
test
# \는 이어서 쓰는 문자를 한 문장으로 출력해준다

 

echo 2*3>5
# 5라는 파일에 2*3을 저장함

echo '2*3>5'
# 인용 부호 사용

ehco 2\*3\>5
# \ 사용해서 일반 문자 취급

표준 입출력

데이터가 유닉스 시스템에 저장되거나 전송되는 표준방식으로, 다양한 입출력 기기를 추상화하고 공통된 처리 방식을 사용하도록 최초로 시도했다.

  • stdin (0) : 표준 입력
  • stdout(1) : 표준 출력
  • stderr (2) : 표준 오류 출력

 

입출력 재지정 (Redirction)

표준 입력 또는 출력을 파일 등 다른 입출력 장치로 대체하는 것. 메타문자를 이용해서 redirection을 지시한다.

기호 의미
> 출력 redirection
>| 출력 redirection, nocolbber 옵션을 무시하고 덮어 씀
>> 기존 파일에 출력을 추가
< 입력 redirection
>&, &> 표준 출력과 표준 에러를 파일로 redirection
>>&, &>> 표준 출력과 표준 에러를 파일에 추가
1>, 2> 표준 출력과 표준 에러를 따로 지정

 

cat > myfile
This is a test.
# myfile에 This is a test. 지정

cat myfile
# 파일 내용 확인

cat >> myfile
contents append.
# 기존 파일에 내용 추가

set -o noclobber
# 덮어쓰기 금지 옵션
cat > myfile
# 위 옵션 때문에 덮어쓰기 불가

cat >| myfile
overwrite
# 덮어쓰기 금지 옵션을 뚫고 myfile에 overwrite 재지정

 

 

redirection을 이용한 텍스트 파일 편집

>로 표준 입력에서 입력을 받아 myfile로 출력할 수 있다. >>를 통한 redirection은 기존 파일에 추가할 때 쓰인다.

입력 끝 표시는  ^d로 할 수 있다.

 

pipe

한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 사용하는 것. 하나의 커다란 문제를 작은 작업으로 나누어 해결하는 것이 가능하다. 

 

내용 자동 완성

Tab: 함수, 경로명, 파일명 등의 입력 시 텍스트 일부를 입력 후 Tab 키를 누르면 자동 완성된다. 한 번 더 누르면 가능한 모든 완성형을 출력한다.

 

 

 

'languages > Linux' 카테고리의 다른 글

[Linux] 감시 및 관리 명령어  (0) 2024.04.08
[Linux] 파일 관리 명령어 3  (0) 2024.04.08
[Linux] 파일 관리 명령어 2  (1) 2024.04.07
[Linux] 파일 관리 명령어 1  (0) 2024.04.07
[Linux] 셸과 Bash의 개념  (0) 2024.04.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.