리눅스 프로그램의 계층
User <-> Shell <-> Kernel
: 시스템 커널 동작과 유저 프로그램 사이의 인터페이스를 제공
커맨드 해독기 또는 그래픽 유저 인터페이스이다.
기본적으로 Unix/Linux 쉘은 명령어 라인 인터페이스이다. (CLIs)
: 리눅스에서 가장 많이 사용되는 명령어
Shell은 프로그램이다.
새로운 셸을 호출하면 새로운 프로세스가 생성된다(자식 프로세스)
이전 셸을 새로운 셸의 부모 프로세스가 된다. -> PPID
커맨드 라인 인수 : 커맨드 이름 뒤의 단어
일반적으로 "-" 또는 "--"로 시작하는 옵션 : 작동하는 파일이름, 디렉토리
";" : 명령을 순차적으로 실행
"&" : 명령을 동시에 실행
: 직렬에서 여러개의 명령어를 사용할 때 이전 명령의 결과를 현재 명령의 표준 입력으로 순차적으로 처리
: 임시 문자열 값을 저장한다.
ex) files="notes.text report.text"
"="앞 뒤에 공백이 없어야한다.
달러 마크($)와 함께 쉘 변수 값을 사용한다.
환경 변수 : 특별한 유형의 쉘 변수는 쉘에서 실행되는 프로그램에 전달 됨
"env" 명령어는 환경 변수를 나열한다.
쉘 프롬프트를 변경하는 것은 현재 쉘에서만 적용되고 새 쉘을 시작하면 재설정된다.
영구적으로 설정하기 위해서는 구성파일을 사용한다.
".bashrc"를 vi를 이용하여 편집하고 명령을 작성할 수 있다. 그러나 현재 쉘에 바로 적용되지는 않기 때문에 "source.vashrc"를 통해 현재 쉘에 변경 사항을 적용 시킬 수 있다.
alias : 다른 명령의 별칭 만들기
ex) alias lf=“ls –F”
alias ls=“ls –l”
alias rm=“rm –i”
alias mv=“mv –i”
alias cp=“cp –i”
unalias : 별칭 삭제
: 실행가능한 쉘 파일을 "쉘 스크립트 파일" 이라고 한다.
생성방법 : 첫번째 줄에 "#!/bin/bash"라고 명시하고 변수 및 명령을 나열한다.
실행방법 : chmod를 사용하여 파일에 실행가능 권한을 부여한 후 실행한다.
변수 : 스크립트 파일은 변수를 가질 수 있다.
-쉘 변수와 동일, 유형이 없다, 문자열만 가능, 변수 이름은 숫자나 특수 문자로 시작할 수 없다, "$"로 다양한 옵션으로 확장이 가능하다.
변수에 대한 따옴표
'문자열' : 문자열 의미
"문자열" : 문자열이지만 명령어
연산자 : +,-,*,/,%를 수행, 정수 기반, 연산자 앞뒤에 공백이 필요하다.
범위에 대한 표현 : {시작..끝}, {시작..끝..증가}
while문 : 조건이 참인동안 명령 수행 <-> until문 : 조건이 거짓인 동안 명령 수행
select 문
쉘은 주어진 변수들 중 선택하고, 선택한 변수로 명령이 수행된다.
break 문으로 select문을 종료할 수 있다.
function
: 사용자는 명시적 기능을 정의할 수 있다.
함수(){
상태
반환 값
}
exec 명령
exec fd<file : 파일 설명자 fd로 입력 파일을 열기
exec fd>file : 파일 설명자 fd로 출력 파일 열기