1. 리눅스 Shell
→ 사용자와 운영체제 커널 사이의 인터페이스 역할
1) 명령어
명령어 | 의미 |
id | 아이덴티티 정보 |
pwd | 커맨드라인 위치 경로 |
ls | 파일과 폴더목록 -l : 자세한 정보 출력 -a : 숨겨진 파일 표시 -t : 시간순 출력 --hide=파일명 : 검색결과에서 배제 |
date | 현재 시간 |
echo | 출력명령어 |
cat | 내용물 확인 |
type 명령어 | 명령어 경로 조회 |
> : 파일 덮어쓰기
>> : 파일 이어쓰기
uname 명령어 : 기본 정보 출력
date 명령어
2) 명령어 조회하기
type 명령어를 통해 해당 명령어의 실제 위치를 확인할 수 있다.
또한, 위와 같이 해당 명령어를 수행하는 실제 실행 코드를 조회할 수 있다.
2. 셸과 커널의 역할
1) 셸의 역할
→ 사용자의 명령을 커널이라는 실제로 실행하는 심부름꾼에게 전달하는 전령
- 사용자 명령 입력 시
① 매칭되는 명령어 조회
② 존재하는 명령어라면 커널에 전달
③ 커널이 실행하고 결과를 화면에 표현
2) 겹치는 명령어의 실행 우선순위
ex) /bin/date와 /bin/user/date라는 두 개의 date가 존재한다면? /bin/date가 실행
→ 우선순위는 무조건 경로가 짧은 쪽
3) 셸과 커널이 분리된 이유
특정 부분에서 오류 발생 시 일체형이라면 유지보수가 힘들지만,
분리형인 경우 문제가 생긴 부분만 교체하면 되고 다른 요소와 조합해 사용하기도 수월
3. 프롬프트
1) 프롬프트
@을 기점으로 왼쪽은 사용자명, 오른쪽은 호스트명
whoami : 계정명
hostname : 호스트명
$ : 일반 사용자 계정
# : root 계정
4. 셸의 종류
※ 셸의 경우 기본적으로는 대화형 방식(직접 명령어를 입력하여 제어하는 것)을 수행한다.
- 보편적으로는 bash를 가장 많이 사용
- mac 환경인 경우 커스터마이징이 용이해 zsh 사용
$만 나타난 셸이 sh
최상단에 bash가 열려있으나 로그인된 상태는 아니므로 logout 명령을 적어도 exit을 입력하라고 한다.
5. 터미널과 셸의 관계
※ 터미널과 셸은 다르다.
- 터미널이라는 프로그램을 이용하여 컴퓨터의 입출력 받음
- 해당 입출력은 셸이 해석하고, 해석 후 유효한 명령인 경우 커널 실행