리눅스 쉘 프로그래밍
Text editor
텍스트를 편집하는 프로그램, 리눅스에는 대표적으로 nano, vi, vim 등이 있다.
GUI의 대표 에디터 : Gedit (메모장과 사용법이 거의 똑같음)
CLI의 대표 에디터 : vi (임베디드 환경 리눅스에는 vi 밖에 없는 경우가 많다)
IDE(Integrated Development Environment)와 Text Editor의 차이
1. IDE
- text editor, compiler or interpreter, debugger, and other tools을 모두 포함하는 개념
- Software development에 관련된 complete workflow를 제공
2. Text Editor
- 텍스트 파일을 편집하는 SW 어플리케이션을 의미
- Cut, copy, paste 같은 기초적인 편집 기능 제공
Gedit에서 소스코드 작성하기
Gedit을 실행 후, 다음과 같이 진행
A. 탭을 하나 생성
B. text.c 라고 저장
C. C언어 소스코드 기입
D. 저장 (저장 시, 그림과 같이 문법 컬러가 입혀진다.)
Terminal에서 프로그램을 실행하는 방법 - Foreground, Background
# 1. Foreground 실행
$ gedit "파일의 상대경로"
# 2. Background 실행 : 명령어 뒤에 & 입력
$ gedit "파일의 상대경로" &
vi 종류
1. Vim (Vi Improved)
- Vi의 확장 버전
- Vi의 기능을 대부분 포함 + 몇 가지 추가적인 기능
- 다양한 파일 형식에서 색상 구분 기능을 제공, 파일을 분할하거나 다른 파일을 참조할 수 있는 기능
- 다양한 플러그인을 지원 -> 개인적인 환경에 맞게 수정 가능
2. NeoVim
- NeoVim은 Vim의 포크(Fork)
- Vim의 기능을 대부분 포함 + 몇 가지 추가 기능과 개선된 성능을 제공
- 비동기 처리(Asynchronous processing)를 지원, 더욱 유연한 플러그인 시스템
3. Elvis
- Vi의 또 다른 포크
- Vi와 거의 동일한 기능을 제공, 다양한 플랫폼에서 사용 가능
- 편집기 자체가 가벼움 -> 작은 시스템에서도 사용
- 색상 구분 기능, 마우스 지원 등의 기능을 제공
vi Editor
특징
- 개발 당시, 키보드에 방향키가 없어 H(↼), J(⇀), K(↾), L(⇂) 을 방향키 대용으로 사용했음
- 3가지 모드가 있음 - "명령 모드", "편집 모드", "마지막 행 모드"
1. 명령 모드(Command Mode)
- Vi 에디터의 명령어를 사용하여 파일을 편집
- 사용자가 입력한 대부분의 문자를 명령어로 처리
- 텍스트 검색, 행 복사/잘라내기/붙여넣기, 편집 모드로 전환, 다른 파일 열기/저장하기 등이 있음
- 어떤 모드에서든 Esc 누르면 명령 모드로 전환 가능
2. 편집 모드(Edit Mode)
- 파일의 텍스트를 편집 가능
- 키보드로 직접 텍스트를 입력, 일반적인 텍스트 편집기와 같은 방식으로 작동
- 명령 모드에서 i, a, o 등의 명령어를 사용하여 전환 가능
3. 시각 모드(Visual Mode)
- 사용자가 직접 선택한 영역을 편집할 수 있음
- 명령 모드와 편집 모드 간의 전환 없이 바로 편집 작업을 수행 가능
- 명령 모드에서 v 명령어를 사용하여 전환 가능
vi 버전 확인 후 업그레이드
# 현재 버전 확인 -> 8.1 small version
# Small version은 우분투 처음 설치했을 때의 버전으로, "방향키" 기능이 빠져있음
$ vi --version
# vi upgrade 하기
$ sudo apt install vim -y
# 확인해보면, huge version으로 바뀐 것을 볼 수 있음
$ vi --version
vi를 사용하려면, cmd 창에 vi를 쳐서 에디터를 열면 된다.
Command mode에서 익혀야 하는 단축키
- gg : 글 처음으로 이동하는 명령어
- G : 글 맨 마지막으로 이동하는 명령어
- dd : 한 줄 삭제 (잘라내기)
- 5dd : 현재 커서 위치 기준, 현재 줄 포함 아래로 다섯 줄 삭제
- u : 실행 취소
- Ctrl + r : 실행 취소한 행동을 다시 실행
- /"단어" : 단어 찾기
- n : 다음 검색
- N : 이전 검색
- ":" : Command Line 활성화하기
- :!q : 강제 종료
- :%s/찾을단어/바꿀단어/g : 파일 전체 단어 바꾸기, g는 global option
- :w 파일명 : 특정 파일명으로 저장
- :set : vi를 껐다 키면, setting한 값이 모두 삭제됨 -> 디폴트로 설정하려면, .vimrc 파일을 만들어야 함
- :set nu : number가 세팅됨
- :set nonu : number 없애기
- :set ts=4 : Tab을 네 칸으로 설정
- :set sw=4 : 괄호 { 를 열고 엔터를 치면, 자동 인덴트가 네 칸으로 적용
- :set ls=2 : last 쪽에 status bar 2번 타입으로 보여지기 -> 파일 이름이 하단에 표시됨
Visual mode에서 익혀야 하는 단축키
- 복사하기 : 영역을 선택한 후, y를 누름
- 한 줄 복사하기 : yy 누름
- 붙여넣기
- "p"를 누르면, 커서 뒤쪽에 붙여넣기가 됨
- "P"를 누르면, 커서 앞쪽에 붙여넣기가 됨
.vimrc 파일
vi의 사용자 환경설정 파일
일반적으로 사용자 디렉토리 (~) 에 하나 만들어서 저장
# .vimrc 파일 생성
$ vi ~/.vimrc
# set 명령어로 customize하기
# 다음 내용 기입
set nu
set ts=4
set ls=2
set sw=4
set cindent
GCC 설치
vi로 만든 코드를 사용하기 위해서는, 컴파일러 겸 링커 역할을 수행해주는 GCC가 필요하다.
$ sudo apt install gcc -y
# gcc로, 코드 파일을 실행 파일로 만들라는 명령어
$ gcc [코드 파일 이름] -o [실행 파일 이름]
sudo apt update 와 sudo apt upgrade의 차이
1. $ sudo apt update : 패키지 목록을 업데이트, 설치되어 있는 패키지를 변경하지 않음
2. $ sudo apt upgrade : 설치된 패키지들을 최신 버전으로 업그레이드
따라서, 보통 update를 먼저 실행해 패키지 목록을 업데이트 한 후, upgrade로 패키지를 최신 상태로 유지
가상 임베디드 리눅스 환경 체험