1. 파일 읽기 및 생성
파일 읽기
일반 파일 중 텍스트 파일에 대하여 파일 내용 확인 명령어
(바이너리 파일의 경우 이진수 값으로 작성되었기에 내용 확인 자체가 어려움)
cat 명령
텍스트 파일 전체 내용 출력; cat [옵션] 텍스트파일
제어문자 (control character)
실제 출력되지 않고 특정 기능을 갖는 문자
- \n : 줄바꿈, line feed + carriage return, Enter 키 입력시 포함
line feed : 줄바꿈
carriage return : 해당 line 홈 위치 이동
- \t : tab
- \b : backspace
more 명령
텍스트 파일 내용을 페이지 단위로 출력; more <텍스트 파일>
- spacebar : 페이지 단위 출력
- enter 키 : 라인 단위 출력
- q 키 : 종료
- /검색어 : 해당 검색어로 검색
- 파일내용 처음부터 마지막 내용으로만 출력
(처음 -> 마지막 정방향으로만 출력, 이전 화면으로 되돌아가기 불가능)
less 명령
텍스트 파일 내용을 페이지 단위로 출력하고 이전/이후 화면 이동가능; less <텍스트 파일>
- spacebar : 페이지 단위 이동
- j 키 / 아래 방향키 : 다음 라인으로 이동
- k 키 / 위 방향키 : 이전 라인으로 이동
- Ctrl + b 키 : 이전 페이지로 이동
- q 키 : 종료
- enter 키 : 라인 단위 출력
- / 검색어 : 해당 검색어로 출력
head 명령
파일 첫 부분에 일정 개수 내용 출력 ; head [옵션] <텍스트 파일>
- 기본 출력은 10줄
- -<라인 수>- : 지정한 라인 수 만큼 출력
tail 명령
파일 마지막 부분 일정 개수 내용 출력 ; tail <텍스트 파일>
- 기본 출력은 10줄
- -<라인 수>- : 지정한 라인 수만큼 출력
- -f : 파일 내용 출력 종료 X, 주기적으로 파일 내용 출력
=> log 파일 내용 확인시 유용, Ctrl + C 키로 종료
"일반적으로 파일 최신 내용을 보려면 head 보단 tail의 끝부분에서 업데이트가 주로 이뤄지기 때문에 확인 필요 => 주기적 확인을 tail -f에서 하는게 유용"
텍스트 파일 생성
touch 명령
의외로 쓰임새가 많은 명령어
touch <텍스트 파일>
- 새로 생성되는 경우 0 byte 크기의 텍스트 파일 생성
- 기존 파일의 최종 수정 시간 변경, 파일내용 변경 X
ln 명령
하드 링크 (hard link) 파일과 심볼릭 링크 (symbolic link 또는 soft link) 파일 생성
하드 링크 파일
ln <원본 파일명> <하드 링크 파일명>
- 원본 파일에 대한 복사본
- 원본과 동일한 내용을 갖는 파일
- 하드 링크와 원본 파일은 inode 번호 동일
- 하드 링크 파일이 생성되면 inode block의 하드 링크 수 증가
- 원본 파일에 변화가 생기면 하드 링크 파일에도 변화된 내용 반영
=> 원본 파일 내용과 하드 링크 파일 내용은 항상 동일
- 원본 파일이 삭제되어도 하드 링크 파일은 그대로 존재 -> 원본 삭제에 영향 X
- 원본 파일에 대한 복사본 성격으로 여러 개의 하드 링크 파일 생성도 가능 => 백업
심볼릭 링크 (소프트 링크) 파일
ln -s <원본 파일명> <심볼릭 링크 파일명>
- 원본 파일에 대한 링크 정보만 저장 -> 작은 파일 크기
- 원본 파일과 다른 inode 번호
- 원본 파일 내용 변화와 관계 X
- 원본 파일이 삭제되면 심볼릭 링크 파일은 원본 파일의 링크만 가지므로 원본 파일 찾을 수 X
- 파일 종류 문자로 l 사용
- Windows OS의 바로가기와 유사한 기능
"문서 편집기 (텍스트 파일) 또는 컴파일러(compiler, 바이너리 파일)를 사용하여 생성"
2. 문서 (텍스트) 편집기
Linux 텍스트 편집기
행 단위 편집기
행 단위로 문서 내용 입력, 편집 수행
- ed : 현재는 사용 X
- ex : 현재는 사용 x
- sed : 스트림 편집기
화면 단위 편집기
문서를 화면에 표시, 커서 이동을 통해 문서 내용 입력, 편집 수행
- vi / vim : Linux 기본 편집기, 기본 설치
- nano : 배포판에 따라 설치 필요
- emacs : GNU 편집기, 설치 필요
- TeX : 수식 편집기, 설치 필요
GUI 편집기
CLI 환경 위주에서는 사용 불가능, 마우스 사용 가능
vi 편집기
- Linux 기본 편집기
- 작은 실행파일 크기
- 화면 단위 편집기능 제공
- 단축키를 이용하여 편집 및 에디터 기능 수행
- 명령 모드 / 편집 모드 구분
명령 모드
- 문서 편집이나 파일 관련 명령 입력모드
- 명령 입력 가능 상태
- 명령모드 진입은 Esc 키 입력 후 : (colon) 입력
편집 모드
실제 내용 입력 및 편집 모드
- 단축키를 사용하여 편집
(장) 빠른 편집속도
(단) 처음에 사용방법 익히는게 어려움
- 명령 모드에서 사용할 수 있는 명령과 편집 모드에서 사용하는 단축키에 차이 있음
vi 실행
- vi (vim) : vi 실행, 편집할 파일은 별도 지정 X
- vi (vim) <파일명> : 지정한 파일을 vi로 읽어서 실행
- vi 시작 시 명령모드로 실행
vi 종료
- :q : vi 종료 명령, 현재 편집내용에 대한 저장이 필요한 경우 저장하지 않으면 종료 X
- :q! : vi 강제종료 명령, 현재 편집내용 저장유무 상관 X 강제종료
명령 모드 / 편집 모드 전환
- 명령 -> 편집 전환
편집 모드에서 사용하는 단축키 입력
- 편집 -> 명령 전환
Esc 키 입력 후 : (colon) 또는 / (slash) 입력 후 명령 입력
편집 모드 단축키
편집 모드에서 명령 모드 전환은 Esc 키로
편집 모드 상태에서 커서 이동
- 키보드 방향키 사용
- 키보드의 h, j, k, l 키 사용
h : 왼쪽
j : 아래쪽
k : 위쪽
l : 오른쪽
내용 입력
- i 키 : 현재 커서 위치에 입력 (헷갈리면 주로 이거 위주로 쓰는걸 권장)
- a 키 : 현재 커서 위치 다음에 입력
- o 키 : 현재 줄 다음줄에 입력
- I 키 : 현재 줄 Home 위치에 입력
- A 키 : 현재 줄 end 위치에 입력
- O 키 : 현재 줄 이전줄에 입력
내용 수정
- r 키 : 현재 커서위치 내용 한 글자만 수정
- R 키 : 수정 상태 진입, Esc 키 입력 전까지 수정 상태 유지
내용 삭제
- x 키 : 한 글자 삭제
<숫자> X : 숫자 개수만큼 글자 삭제
- dd 키 : 줄 단위 삭제
<숫자> dd 키 : 숫자 개수만큼 줄 삭제
내용 복사
- yy 키 : 줄 단위 복사
<숫자> yy 키 : 숫자만큼의 줄 복사
- p 키 : 붙여넣기
- v 키 : 범위 지정
y 키 : 지정 범위 내용 복사
d 키 : 지정 범위 내용 삭제
내용 이동
dd 키를 이용하여 삭제 후 원하는 위치로 커서 이동 후 p 키 입력
검색 및 바꾸기
- / <검색 문자열> : 현재 커서 위치 이후로 검색
n 키 : 현재 위치에서 파일 끝 방향으로 다음 검색결과 이동
N 키 : 현재 위치에서 파일 처음 방향으로 이전 검색결과 이동
- s/ <문자열 1> <문자열 2> : 현재 커서 위치에서 첫번째 찾은 문자열 1을 문자열 2로 변경
- %s/ <문자열 1> <문자열 2> : 파일 전체에서 문자열 1을 문자열 2로 변경
기타 편집 키
- u 키 : undo
- Ctrl + r 키 : redo
명령모드 단축키
편집 내용 저장
- :w : 처음 vi 실행시 입력한 파일에 현재 편집내용 저장
- :w <파일명> : 지정한 파일명에 현재 편집내용 저장
- :wq : 처음 vi 실행시 입력한 파일에 현재 편집내용 저장 후 vi 종료
새로운 파일 로드
:e <파일명> : 파일명에 해당하는 파일 로드
외부명령 실행
- :! <외부명령> : vi 실행상태에서 외부명령 실행결과 확인 ex) !ls -l
- :!sh : 표준 shell 실행, 표준 shell에서 exit 입력하면 다시 vi로 전환
- :!bash : 표준 bash shell 실행, bash에서 exit 입력하면 다시 vi로 전환
vi 환경설정
-
vi 실행 환경과 관련된 여러 내용을 환경 변수에 등록하여 vi 실행시마다 환경 변수 내용을 기반으로 작동
변수 (variable) : 메모리 공간 ; 원하는 값 저장 및 변경 가능
환경변수 (environment variable) : 명령 or 응용 프로그램의 원할한 동작 수행을 위해 미리 메모리에 저장된 값
-
set 명령을 통한 환경 변수 확인 및 변경
:set all : 전체 환경 변수 내용 출력
:set <환경 변수>=값 : 환경 변수 내용 변경, = 기호 오른쪽 값을 = 기호 왼쪽 환경변수에 저장
ex) set tabstop=4
현재 vi 상태에서 set 명령으로 환경변수를 변경/적용하면 현재 vi에서만 환경변수 내용 적용
-
vi 실행환경을 사용자가 원하는 형태로 구성하기 위해 별도의 환경설정 파일을 만들어 사용자 홈 디렉토리에 저장해두면 vi 실행 시 해당 환경 변수 기반으로 동작
.vimrc : vi 환경설정 파일
.exrc : vi 환경설정 파일
(둘다 dot(.)으로 시작하니 히든파일)
실제 ~/.vimrc 실습파일에 적용한 주요 환경 변수
- set number : line 번호 표시
- set tabstop=4 : tab 간격을 4칸으로
- set ai : auto indent (들여쓰기)
- set si : smart indent
- set hisearch : 검색시 하이라이트
- set nocompatible : 방향키 이동 가능
- set ruler : 상태표시줄에 커서 위치 표시
- set title : 제목 표시
- set mouse=a : 커서 이동을 마우스로 이동 가능하도록 설정
- set bs=indent,eol,start : backspace 사용 가능
- set showmatch : 매치되는 괄호 표시
3. TIF
이전에 혼자서 리눅스를 독학했을 적에는 아무리 해봐도 그 까다로운 vi 에디터에 도저히 적응을 못하겠어서 이후 뭔가 편집할 일이 있으면 항상 gedit으로만 편집하곤 했었다. 이번 강사님이 매우 잘 가르쳐주시는 덕분에 전보다는 vi 에디터랑 많이 친해진 느낌이다. 또 강사님께서 항상 뭔가 모든걸 몽땅 암기하려는 강박을 갖지 말라고 강조하시는게 마음 편하게 만들어줘서 좋다.