리눅스 개념 속성 정리
vi 편집기의 이해
vi 편집기는 기본적으로 명령 모드, 입력 모드, ex명령 모드가 있음
명령 모드 : 처음 접속했을 때의 모드, 다양한 명령어를 통해 입력,삭제,복사,붙여넣기, 검색이 가능
i : 커서 왼쪽에 입력
a : 커서 오른쪽에 입력
o : 커서 아래에 입력
I : 커서 있는 줄 맨 앞에 입력
A : 커서 있는 줄 맨 뒤에 입력
O : 커서 있는 줄 위에 입력
/exp <- 'exp' 라는 문자열을 커서 기준 아래로 검색
?exp <-'exp' 라는 문자열을 커서 기준 위로 검색
n <- 검색에서 같은 방향으로 다음 검색
N <- 검색에서 반대 방향으로 다음 검색
yy : 한줄 복사
p : 붙여넣기
입력 모드 : 명령 모드에서 i,a,o, I,A,O 입력했을 때 진입 가능, 파일 안에 내용을 쓸 수 있고, ESC를 통해 다시 명령모드 진입 가능
ESC : 명령모드 진입
ex 명령모드 : 명령모드 상태에서 : 를 입력해서 진입 가능, vi 설정을 바꾸거나 치환, 검색, 종료, 저장 가능
:wq <- 저장하고 나가기
:w <- 저장
:wq! <- 저장하고 나가기 강제
:s/old/new <- 현재 커서가 있는 줄에서 old를 new로 바꿈
:%s/old/new <- 전체 파일에서 old를 new로 바꿈
:%s/^old/new <- 전체 파일에서 줄의 시작이 old인 것을 new로 바꿈
:%s/old$/new <- 전체 파일에서 줄의 끝이 old인 것을 new로 바꿈
:%s/\<old\>/new <- 전체 파일에서 'old' 인 단어만 new로 바꿈
끝에 /gi 붙이면 대소문자 구분 안함
:%s/linux/window/gi 붙이면 대소문자 구분 안하고 모든 linux , Linux, LINUX 등등을 window로 바꿈
:ab aa aabbb aa 라는 약어를 aabbb 라고 등록한다. 입력 모드에서 aa를 입력하면 자동으로 aabbb로 바뀐다.
:ab <- 현재 등록된 약어 목록 확인
:set nu <- 라인에 줄 추가
:set sm <- 괄호 짝에 색칠
tar 명령어의 이해
tar -zxvf TEST.tar <-- TEST.tar를 현재 디렉토리에 압축 해제
tar -zcvf TEST.tar * <-- 현재 디렉토리의 모든 파일과 디렉토리를 TEST.tar로 압축
-z : gzip 을 사용해서 압축(안쓰면 그냥 tar임, tar는 아카이브 파일이라서 그냥 진짜 묶기만 하는거)
-c : 컴프레스 (압축) / -x : 익스트렉 (추출,풀기)
-v : 비주얼 ( 현황을 출력)
-f : 파일 (기본 옵션으로 제공)
tar -xvf TEST.tar -C ./myfile/ <-- TEST.tar의 내용을 현재 디렉토리의 myfile 안에 풀겠다
옵션 뒤에는 무조건 *.tar가 와야 한다. (압축파일 대상)
tar 쓰면 MAC 타임 보존된다.
패키지 설치와 소스 설치
소스 설치는 말 그대로 소스코드를 다운로드 받아서 내 컴퓨터에 컴파일 하는 방식임
make와 cmake 방식이 있으며, make는 압축 해제 -> 디렉토리 이동 -> configuration -> make -> make install 과정으로 이루어진다. 그럼 Makefile이라고 하는 빌드에 필요한 다양한 옵션이 명시되어 있는 파일을 읽으면서 소스코드를 실제 라이브러리로 빌드하게 된다.
그리고 저걸 하나로 합친게 cmake이다.
cmake는 크로스플랫폼의 호환성을 위해 생겨났다.
make는
1. configure --help # 도움말 확인 가능
2. configure --prefix=/usr/local/apache # 소스 설치 경로
3. make
4. make clean
5. make install
과정으로 이루어진다.
자세한 컴파일 옵션이나 특정 디렉토리에 원하는 패키지를 모두 모아서 관리할 때 유용하며, 설치가 귀찮고 어렵다는 단점이 있다. 그리고 의존성 문제도 있어서 앞서 필요한 모든 라이브러리를 다 미리 설치 해야한다.
패키지 설치는 레드햇 기준으로 rpm과 yum, dnf가 있는데
rpm은 *.rpm이라고 하는 패키지 파일을 인자로 넣어서 패키지를 설치하는 방식이다. 이는 앞선 소스 설치의 과정을 하나의 패키지 파일에 묶어 배포한 형식으로, rpm i 패키지.rpm 형식으로 설치할 수 있다. 이렇게 하면 앞선 소스 설치 처럼 별도의 컴파일 옵션이나 자세한 수정은 할 수 없으며, 마찬가지로 패키지 의존성 문제가 발생해 미리 사전에 의존성 패키지를 모두 준비해야 한다.
그러한 불편함을 개선한 것이 yum과 dnf 명령어로, 온라인 패키지 설치 방식을 사용해 인터넷에서 패키지 파일을 알아서 찾아서 다운로드 한다. 그리고 설치할 때 필요한 의존성 패키지 역시 알아서 다운받아준다. 편리하고 쉽게 설치 가능하지만서버 내부 로컬에서 패키지 관리자에게 모든 것을 맡기기 때문에 패키지의 의존성에 문제가 생기는 등 버전 관리나 패키지관련 오류 점검 시 서버 관리 측면에서 불편할 수 있다.