커리큘럼
셸
터미널과 셸
터미널
터미널은 컴퓨터와 사용자 사이에 상호작용을 할 수 있도록 연결하는 장치이다. 이 때, 사용자가 컴퓨터에 명령을 전달하는 장치를 입력 장치, 컴퓨터가 사용자에게 결과를 보여주는 장치를 출력 장치라고 한다.
지금 이야기하는 것은 1960~70년대, 터미널이 실제 물리적인 하드웨어 장치였던 역사를 말하는 것이다. 연산은 터미널과 연결된 대형 컴퓨터에서 진행하고, 그 대형 컴퓨터는 여러 명이 공유해서 사용하는 형태였다. 그래서 각 사용자가 컴퓨터와 상호작용 할 수 있도록 도와주던 장치가 하드웨어 터미널이다. 현대에는 대부분 소프트웨어 형태의 터미널 에뮬레이터를 사용한다.
셸
셸은 CLI 프로그램이다. 사용자는 셸을 통해서 명령을 내리고 결과를 확인할 수 있다. 터미널이 컴퓨터오라 사용자 사이를 연결해주는 하드웨어고, 셸은 OS와 사용자 사이의 상호작용을 지원하는 소프트웨어이다.
터미널과 셸
네트워크로 원격 운영체제의 터미널에 연결해서 셸을 사용할 수도 있다. 과거에는 텔넷을 사용했지만, 이제는 데이터가 암호화되는 SSH(Secure Shell) 프로토콜을 사용해서 통신한다.
셸 스크립트
셸에서 동작할 수 있는 명령을 모아놓은 파일을 셸 스크립트라고 한다. 여러 명령을 한 파일에 모아서 실행하는 방식이라, 여러 명령을 자동화할 수 있다. 예를 들어, 일정 주기로 로그를 삭제하는 동작을 자동으로 등록하고 싶다면 셸 스크립트로 로그 파일을 삭제하는 코드를 작성한 뒤, crontab에 등록하면 된다.
실습: 셸 스크립트 작성하기**
- SSH를 사용하여 라즈베리파이에 원격으로 접속했다.
- ‘echo “Message”’를 입력해보자.
- 스크립트를 작성해보자. 먼저 hello.sh를 생성하면서 vim으로 파일을 열어준다.
- 사진과 같이 스크립트를 작성한다.
- 스크립트의 실행권한을 추가한다.
- 마지막으로 실행 시켜보자.
shabang
shabang(셔뱅)은 스크립트 파일임을 알려주는 문자열이다.
위 사진의 #!/bin/bash 라고 적혀 있는 것이 셔뱅이며 어떤 인터프리터를 사용할지 지정하는 역할을 한다. 우리는 bash로 실행시키기 때문에 bash를 지정해주고 있다.
기본 명령어
명령어 형식
기본 명령어 형식은 다음과 같다. $ 명령어 [옵션] [인자]
man man [옵션] [섹션] 페이지
manual의 약자로 각종 명령어나 개념에 대한 매뉴얼인 맨 페이지를 호출하는 명령어다. 잘 모르는 명령어에 대해 자세히 알고 싶으면 man을 사용할 수 있다.
페이지는 조회할 대상을 의미하며, 개념일 수도 있고 명령어일 수도 있다. 섹션은 각 페이지를 기준에 맞게 분류해서 번호를 붙인 것이다.
섹션 번호 | 의미 |
---|---|
1 | 실행 프로그램이나 셸 명령어 |
2 | 시스템 콜(System call) |
3 | 라이브러리에 정의된 함수 |
4 | 특수 파일 |
5 | 파일 포맷과 컨벤션 |
6 | 게임 |
7 | 기타 내용 |
8 | 시스템 관리 명령 |
9 | 커널 루틴(비표준) |
맨 페이지 내에서 텍스트를 검색하려면 / 을 누르고 검색어를 입력한다. 여러 개가 검색된다면 n을 눌러서 다음 검색어 위치로 이동할 수 있다. q를 누르면 페이지를 닫는다.
man ls를 명령하면 다음과 같이 ls에 대한 메뉴얼을 확인할 수 있다.
ls ls [옵션] [파일]
ls는 list의 약자로, 파일 목록을 화면에 출력한다. 리눅스는 디렉토리도 파일로 취급하므로, 디렉토리도 함께 출력이 되며 특수 파일도 조회할 수 있다.
ls의 주요 옵션은 다음과 같다.
옵션 | 설명 |
---|---|
-a | 모든 파일 출력 |
-l | 파일의 여러 속성을 포함해 길게 출력 |
-t | 생성된 순서로 파일 출력(오래된 파일이 가장 뒤로) |
-R | 하위 모든 디렉터리 순회 |
-h | 사람이 읽기 좋은 크기(KB, MB, GB)로 파일 출력 |
루트 디렉토리를 확인해보았다.
cd cd [디렉토리]
cd는 change directory의 약자로 현재 작업 디렉토리(CWD, current working directory)의 위치를 이동하는 명령어다.
홈 디렉토리로 이동 후 파일 확인
루트 디렉토리로 이동 후 파일 확인
pwd
pwd는 print working directory의 약자로, 현재 작업 디렉토리를 절대 경로로 조회하는 명령어이다. 상대 경로는 현재 작업 디렉토리(cwd)를 기준으로 파일 경로를 나타내고, 절대 경로는 루트 디렉토리를 기준으로 나타낸다.
cat cat [옵션] [파일]
cat은 파일의 내용을 연결하거나 조회한다. concatenate 혹은 catenate에서 cat이 유래되었다. cat에서는 여러 옵션을 사용할 수 있지만, 파일 내용과 함께 줄 번호를 출력하는 -n을 주로 사용한다. 파일 부분에 파일 이름을 입력하면 파일 내용이 화면에 출력된다. 두 개 이상의 파일 이름을 입력하면 각 파일의 내용이 연결되어 화면에 출력된다.
exit exit [종료 코드]
exit은 현재 실행 중인 셸을 종료한다.
nano nano [파일]
nano는 텍스트 편집기이다. nano로 파일을 생성하거나 파일을 열어서 수정할 수 있다. 작성자 본인은 nano 보다는 vim을 사용하는데, 둘 다 잘 사용하지는 못한다. 그래도 vim을 사용하는 비율이 더 높아서 굳이 이 내용을 깊게 읽어보진 않았다.
'개발 > 코딩자율학습단' 카테고리의 다른 글
[코딩자율학습단 13기] 6일차, 소프트 링크와 하드 링크 (0) | 2025.03.15 |
---|---|
[코딩자율학습단 13기] 5일차, 디렉토리 및 실습 (0) | 2025.03.15 |
[코딩자율학습단 13기] 4일차, 리눅스 파일 (0) | 2025.03.15 |
[코딩자율학습단 13기] 2일차, 리눅스 설치 (0) | 2025.03.15 |
[코딩자율학습단 13기] 1일차, 리눅스 소개 (0) | 2025.03.15 |