티스토리 뷰
쉘(Shell)이란?
-컴퓨터 운영체제에서 사용자와 시스템간의 상호작용을 중개하는 프로그램, 많은 시스템 콜들을 안전하게 사용할 수 있게 해줍니다. 사용자와 커널 사이에서 동작하여 사용자가 하드웨어와 직접적으로 상호작용할 수 있게 하고 편리한 환경을 제공합니다.
쉘의 특징
- 명령어 해석
-쉘은 사용자가 입력한 명령어를 해석하고 실행하는데, 이를 통해 다양한 작업을 수행할 수 있습니다. - 대화형 환경(interactive)
-사용자가 명령어를 입력하면 즉시 결과를 반환하고, 사용자의 입력에 따라 동적으로 작업을 수행하게 됩니다. 이를통해 결과를 실시간으로 확인하고 작업을 수정하거나 조작할 수 있습니다. - 환경설정
- 쉘을 통해 환경변수, 별칭(alias)등을 정의하고 관리할 수 있습니다. (별칭이란 사용자가 특정 작업의 명령어를 사용자에 맞게 명령어를 변경하여 사용하는것을 말합니다.)
한줄 명령어
- newline(줄바꿈) - 엔터와 같으며, 각 줄에 따라 개별적으로 해석하고 실행합니다.
$ command1
$ command2
$ command3
- ;(세미콜론) - 여러 명령어를 한 줄에 작성할때 사용되며,순차적으로 실행합니다.
$ command1; command2; command3
- &&(논리적 AND 연산자) - 앞의 명령어가 성공적으로 실행된 경우에만 다음 명령어를 실행합니다.
$ command1 && command2
내장 명령어 (Builtin Command) vs 외부 명령어(External Command)
- 내장 명령어
-쉘 자체에 내장되어 있는 명령어, 쉘의 메모리에 상주하고 바로 실행되며,운영체제의 기능을 직접적으로 사용합니다. 대표적인 예로는 cd, mkdir ,echo등이 있으며, 이들은 빠르고 효율적입니다.
- 외부 명령어
-쉘 외부에 별도의 실행가능한 프로그램으로 존재하는 명령어이며,이러한 명령어는 특정 경로에 위치한 실행가능한 파일이며, 쉘이 이것을 찾아서 실행합니다.대표적인 예로는 ls , grep , git등이 있습니다.
변수선언
-쉘에서 값을 저장하고 나중에 참조할 수 있는 이름으로 사용되는 변수를 선언할 수 있습니다. 일반적으로 변수이름은 대문자, 소문자 밑줄로 구성이되며 등호를 사용해 생성할 수 있습니다.
($ 0~9 , $? , $! 등은 지정된 변수로 이미 시스템에서 사용중인 변수입니다.)
- 변수생성(띄어쓰기 x)
name="John"
- 변수 확인
echo $name
- 변수삭제
unset name
IFS(Internal Field Separator)
-쉘에서 문자열을 필드로 분리하는데 사용되는 구분자(separator)입니다. 즉 문자열을 나눌 때 기준이 되는 문자를 정의하는 환경 변수입니다. 기본값으로는 공백,탭,개행 문자가 있습니다.
string="apple,banana,orange"
IFS=',' read -ra fields <<< "$string"
해당 예시를 보면 string에 ,(쉼표)를 기준으로 3개의 단어가 있습니다. 하지만 기본 IFS값에 쉼표가 없으니 IFS로 나눠도 한줄로 표시가 되게 되는데, IFS=','로 나누는 기준을 변경하게 되면,위의 string이 쉼표를 기준으로 나뉘어 출력됩니다.
변수 보간(Variable interpolation) vs 명령어 보간(Command interpolation)
-쉘에서 문자열 내에 변수나 명령어를 삽입하여 값을 확장하는 기능입니다
변수 보간
-문자열 내에서 변수를 사용해 변수의 값을 확장하는 기능입니다. 쉘에서 변수이름앞에 $기호를 사용해 수행합니다.
name="John"
echo "My name is $name"
명령어 보간
-문자열 내에서 명렁어를 실행하고 그 결과를 문자열에 삽입하는 기능입니다.역따옴포(' ')또는 $()로 감싸 사용됩니다.
current_dir=$(pwd)
echo "Current datetime is $current_dir"
환경변수 설정
- export
-쉘에서 환경변수를 설정할 수 있는 명령어,
- setenv(),putenv
-프로그램 내에서 환경변수를 설정하는 코드, c프로그램으로 조작할 수 있습니다.
globbing
-쉘에서 파일이름을 패턴매칭하여 해당 패턴과 일치하는 파일들의 목록을 가져오는 명령어입니다.
* - 어떤 문자열이든 다 찾는 기능
ex) *.txt -> .txt인 파일 다찾음
? - 하나의 문자와 일치하는 것을 찾는 기능
ex) ?.txt -> 이름이 한글자인 .txt파일을 다찾음
[] - 대괄호 안의 문자중 하나와 일치하는 것을 찾는 기능
[aeiou].txt -> 파일이 모음으로 시작하는 .txt파일을 다찾음
파일 리다이렉션(file redirection)
-쉘에서 표준 입력,표준 출력 표준에러의 방향을 변경하여 파일로 입출력을 변경하는 기능입니다. 파일 리다이렉션을 사용해 명령어의 입출력을 터미널이 아닌 파일로 전환할 수 있는 기능입니다. (>>처럼 두개연속으로 있는것은 append(이어쓰기)입니다.
< (표준 입력 리다이렉션)
- 파일을 표준입력으로 리다이렉션하는 명령어, 파일의 내용을 명령어의 입력으로 사용함.
sort < input.txt # input.txt 파일의 내용을 sort 명령어의 입력으로 사용
> (표준 출력 리다이렉션)
- 파일을 표준 출력으로 리다이렉션 하는 명령어, 명령어의 결과를 파일에 출력
ls -l > file.txt # ls -l 명령어의 결과를 file.txt 파일로 저장
2> (표준 에러 리다이렉션)
-표준 에러를 파일로 리다이렉션, 명령어의 에러 메세지를 파일에 출력
command 2> error.txt # command의 에러 메시지를 error.txt 파일로 저장
파이프(Pipe)
-쉘에서 두개 이상의 명령어를 연결하여 하나의 명령어의 출력을 다른 명령어의 입력으로 전달하는 기능, 여러명령어를 조합하여 더 복잡한 작업을 수행할 수 있습니다. 앞의 명령어 부터 순차적으로 수행되며, 앞의 명령어의 출력이 뒤의 명령어의 입력으로 전달됩니다.
ls -l | grep "example"
(ls -l로 현재 디렉토리의 파일 목록을 가져온후 , 그중에서 "example"이라는 문자열을 포함하는 파일만 필터링하는 명령어)
'OS' 카테고리의 다른 글
OS(운영체제)의 구조와 원리 (0) | 2023.09.24 |
---|---|
동시성(Concurrency) (0) | 2023.05.29 |
메모리 Stack변화 (0) | 2023.05.15 |
Address Translation 변환 과정 (VA -> PA) (0) | 2023.05.15 |
Copy-on-Write (mmap) (0) | 2023.05.08 |
- Total
- Today
- Yesterday
- 클라우드
- 데이터베이스
- 프로토콜
- 파인튜닝
- 도커
- 자바
- 데이터
- 메세지큐
- 깃허브
- 배포
- DB
- 테이블
- 서버
- IP주소
- 소프트웨어공학
- 깃
- 웹소켓
- 컴퓨터구조
- 자동화
- 스프링
- 쿼리
- nat
- 컨테이너
- JPA
- sql
- 인공지능
- 네트워크
- 보안
- 포트포워딩
- 문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |