시스템 프로그래밍[4-13]

Turtle·2024년 6월 2일
0
post-thumbnail

❓쉘(Shell)

셸은 그 기본 원리만 알면 쉽게 개발할 수 있는 프로그램 중 하나이기 때문에, 셸의 종류는 무궁무진하게 많다. 지금 이 순간에도 새로운 자작 셸이 탄생하고 있을 지도 모른다. 이 포스팅에서는 리눅스에서 주로 많이 접할 수 있는 셸들에 대해서만 다루어 보도록 하겠다.

셸은 크게 본셸(Bourne Shell) 계열과 C셀 계열로 나뉜다. 둘은 첫 눈에 보기에도, 즉 사용자 프롬프트에서부터 차이점이 명확하게 보이기 때문에 헷갈릴 가능성은 걱정하지 않아도 된다. 사용자 프롬프트가 '$'이면 본셸 계열, '%'이면 C셸 계열을 사용하고 있다는 것이다. 대부분의 셸들은 본셸 계열의 기능을 포함하여 확대, 발전한 형태이다. C셸은 본셸의 모든 기능과 명령어 히스토리(history), 별명(alias), 작업 제어 기능을 추가로 가지고 있다.

❓히스토리

Bash 쉘은 입력된 명령들을 기억하는 히스토리 기능을 갖고 있다.

history [-rh] [번호]

지금까지 입력된 명령들(히스토리)을 리스트한다.
Bash 쉘에서는 히스토리 기능을 이용하여 이미 실행된 명령을 간단하게 재실행할 수 있다.

형태의미
!!바로 전 명령 재실행
!n이벤트 번호가 n인 명령 재실행
!시작문자열시작문자열로 시작하는 최후 명령 재실행
!?서브문자열서브문자열을 포함하는 최후명령 재실행

❓리스트 변수

하나의 변수에 여러개의 값(문자열)들을 저장할 수 있는 변수를 리스트 변수(list variable)라고 한다.

리스트 사용의미
${name[i]}리스트 변수 name의 i번째 원소
${name[*]} , ${name[@]}리스트 변수 name의 모든 원소
${#name[*]}, ${#name[@]}리스트 변수 name 내의 원소 개수

❓ 환경 변수 및 지역 변수

환경 변수는 값이 자식 프로세스에게 상속되지만 지역변수는 그렇지 않다.
환경 변수는 시스템 전체에 적용되는 변수이고
지역변수는 현재 터미널에서만 적용되는 변수이다.

0개의 댓글