방송대/UNIX시스템
텍스트 편집
피클s
2022. 9. 25. 21:43
편집기
리눅스와 텍스트 파일
- 리눅스 시스템에서 중요한 설정 정보나 셸 스크립트가 텍스트 파일로 존재함.
- 텍스트파일은 공유가 쉽고 간편하게 편집가능하다.
리눅스 편집기 종류
- gedit : GNOME 데스크톱에서 제공
- emacs : 화면 단위 편집기로 다양한 기능을 제공하나 사용법이 어려움
- vi : 가장 보편적인 화면 편집기
- vim : vi의 개선버전. 마우스, 다중 undo, 다중탭을 지원
vi 편집기
vi 명령어
vi [options] [fimename]
모드
- 명령모드 : 커서이동, 삭제, 복사/붙여넣기 등
- 라인모드 : 저장, 검색, 대치(:, /, ? 으로 진입)
- 입력모드 : 텍스트 입력모드. (i, a, o, c 로 진입, esc로 명령모드로 변환)
- 비주얼모드 : 블록 지정해서 복사 / 삭제 가능
종료
- ZZ : 명령모드에서 종료
- :q : 변경내용이 없다면 종료
- :q! : 저장하지 않고 강제 종료
- :wq : 저장하고 종료
- :x [filename] : 새로운 파일이름으로 저장하고 종료
- :x! [filename] : 같은 파일 이름이 있다면 덮어씀
텍스트 입력
- a : 현재 커서 위치의 오른쪽부터 텍스트 추가
- A : 현재 라인의 끝에 텍스트 추가
- i : 현재 커서 위치부터 택스트 삽입
- I : 현재 라인의 처음에 텍스트 삽입
- o : 현재 라인의 아래에 새로운 줄을 만들고 삽입
- O : 현재 라인의 위에 새로운 줄을 만들고 삽입
커서 이동
- hjkl : ←↓↑→
- Ctrl+f, Ctrl+b : 페이지 업, 페이지 아운
- w : 다음 단어의 첫 자로 이동
- b : 앞 단어의 첫 자로 이동
- 0 : 현재 라인의 첫 칸으로 이동
- $ : 현재 라인의 마지막 칸
- 숫자G : 숫자 번째 라인으로 이동
- G : 가장 마지막 라인으로 이동
- 숫자j : 현재 라인에서 아래로 숫자만큼 이동
텍스트 삭제
- x : 커서 위치의 한 문자 삭제
- dw : 커서 위치부터 다음 단어 전까지 삭제
- d$ 또는 D : 커서의 위치부터 현재 라인의 끝까지 삭제
- d0 : 커서 왼쪽부터 현재 라인의 처음까지 삭제
- dd : 현재 라인 삭제
- dG : 현재 라인부터 파일 끝까지 삭제
- d숫자G : 현재 라인부터 라인 번호 숫자 까지 삭제
- 숫자dw : 커서 위치부터 숫자 단어 삭제
- 숫자dd : 현재 라인부터 숫자 라인 삭제
텍스트 변경
- r : 커서 위치의 한 문자를 대치.
- R : 커서의 위치부터 계속 대치할 수 있고 입력모드로 전환
- s 또는 cl : 커너 위치의 문자가 삭제되고 입력모드로 전환
- S 또는 cc : 현재 라인에 존재하는 문자가 삭제되고 현재 라인에서 입력모드 전환
- cw : 커서 위치부터 단어의 끝까지 삭제되고 입력모드 전환
- cb : 커서 왼쪽부터 단어의 앞까지 삭제되고 입력모드 전환
- c) : 커서 위치부터 문장의 끝까지 삭제되고 입력모드 전환
- c} : 커서 위치부터 문단의 끝까지 삭제되고 입력모드 전환
복사/붙여넣기
dd 명령과 같은 삭제 명령 후 붙여넣기 할 수 있다. 사실상 잘라내기/붙여넣기
- yy : 라인 복사
- 숫자yy : 현재 라인부터 숫자 라인 복사
- yw : 커서 위치부터 다음단어 앞까지 복사
- y$ : 커서 위치부터 라인 끝까지 복사
- y0 : 커서 왼쪽부터 라인 앞까지 복사
- y^ : 위와 같으나 라인 앞의 빈킨은 복사하지 않음
- yG : 현재 라인부터 파일 끝까지 복사
- y) : 커서 위치부터 한 문장 복사
- y} : 커서 위치부터 한 문단을 복사
- p : 아래 라인에 붙여넣기
- P : 윗 라인에 붙여넣기
블록 지정하기
블록을 지정하고 y(복사) / x(삭제) 후 p를 이용해서 붙여넣기
- v : 비주얼 모드에서 한 번에 한 문자씩 선택
- V : 비주얼 모드에서 한 번에 한 라인씩 선택
명령 취소 및 기타 명령
- u : 실행 취소 undo
- Ctrl + r : 실행 취소를 취소 redo
- :e! : 마지막으로 저장한 후의 작업을 취소하고 다시 작업
- :n : n번째 라인으로 이동
- J 또는 :j : 현재 라인과 아래 라인을 합침
- :!command : 쉘 명령 command를 수행
- :sh : vi를 빠져나가 쉘 명령을 수행. exit를 입력하면 vi로 돌아옴
- :se nu : 왼쪽에 라인 번호 표시
- Ctrl + g : 화면 하단에 파일 이름, 전체 라인 수, 현재 라인의 상대 위치를 퍼센티지로 표시
- :r filename : 지정된 파일의 내용을 읽어 현재 커서의 아래 줄에 추가
검색
- f문자 : 한 라인에서 해당 문자를 커서 다음 위치부터 찾음
- ; : 한 라인에서 검색을 반복
- /패턴 : 순방향(커서 뒤, 아래 방향)으로 패턴을 검색하여 커서를 이동
- /패턴/ + 숫자 : 패턴을 검색하고 그 뒤(+) 숫자 번째 라인으로 이동
- ?패턴 : 역방향으로 패턴을 검색하여 커서 이동
- ?패턴?-숫자 : 패턴을 검색하고 그 앞(-) 숫자 번째 라인으로 이동
- n : 이전 검색을 같은 방향으로 반복
- N : 이전 검색을 반대 방향으로 반복
검색과 대치
:[g][address]s/패턴/대치문자[/옵션]
- [g][address] : 검색 범위로, %는 파일 전체, 없으면 커서 다음 나오는 검색 대상 한번만, g는 커서 다음부터 파일 마지막 까지
- s는 패턴을 찾아 대치하라는 명령
- [/옵션] : 옵션이 없다면 한 번만 대치, /g를 한다면 모든 패턴 대치
ex)
- :s/패턴/대치 : 커서가 위치한 라인에서 첫 번째 등장하는 패턴을 대치
- %s/패턴/대치 : 파일 전체에서 첫 번째 등장하는 패턴에 대하여 대치
- :%s/패턴/대치/g : 파일 전체에 등장하는 모든 패턴을 대치
- :1,10s/패턴/대치/g : 1~10 라인에 등장하는 모든 패턴을 대치
파일 찾기와 문자열 검색
locate 명령
locate [option] pattern
- 문자열 패턴이 (기본적으로 /로 시작하는) 파일 이름에 포함될 때, 해당 파일의 이름을 출력하는 명령
- 절대 경로 상의 디렉터리나 파일 이름에 문자열이 포함되면 출력한다.
- -b 옵션 : 마지막 이름만 검색
- 접근 불가 파일은 출력 안됨.
find 명령
find [pathnames] [expression]
검색 위치에서 조건에 맞는 파일 찾고 명령을 수행할 수 있다.
파일 이름, 소유자, 접근권한, 크기, 수정시간 등의 속성을 조건으로 사용할 수 있다.
pathname을 지정하지 않으면 현재 디렉터리와 서브 디렉터리를 기준으로 한다.
expressrion이 주어지지 않으면 -print 가 주어진다.(검색된 파일 절대경로가 출력)
예)
find /etc -iname '*passwd*' : 이름에 passwd를 포함하는 파일을 찾음
find ~ | wc -l : 사용자가 가지고 있는 파일의 총 개수를 출력 함.
fine 조건지정
- -cname n : 파일 또는 디렉터리 내용이나 파일 속성의 마지막 수정시간이 정확히 n분인 경우
- -cname -n : 파일 또는 디렉터리 내용이나 파일 속성의 마지막 수정시간이 n분보다 작은 경우
- -cname +n : 파일 또는 디렉터리 내용이나 파일 속성의 마지막 수정시간이 n분보다 큰 경우
- -cnewer file : 파일 또는 디렉터리의 내용이나 파일 속성의 마지막 수정시간이 지정된 file보다 최근 것임을 의미
- -empty : 파일 또는 디렉터리가 비어 있는 조건
- -name pattern : 파일 또는 디렉터리 이름이 패턴과 매칭되는 경우
- -iname pattern : 대소문자를 구분하지 않고 이름이 매칭되는 파일
- -nouser : 파일 또는 디렉터리가 유효한 사용자에 속해 있지 않은 경우
- -perm mode : 파일 또는 디렉터리의 접근권한이 모드와 같은 경우로 8진수 표기법이나 기호 표기법으로 표시
- -size n : 파일 또는 디렉터리의 크기가 n인 조건. b(512바이트 블록), c(바이트), k(킬로바이트), M(메가), G(기가) ...
- -type c : 파일 타입 b (블록 디바이스), c(문자 디바이스), d(디렉터리), f(정규파일), l(심볼릭 링크) 등이 있음
- -user name : 소유자 이름이나 UID의 파일 검색
find 명령 액션
- -delete : 파일 삭제
- -ls : 파일 정보 자세히
- -print : 경로 포함하여 출력
- -quit : 매칭되는 것이 있다면 종료
- -exec command {} ; : 임의의 command를 수행한다. -ok 를 사용하면 확인 과정을 거친다.
grep 명령
grep [options] pattern [files]
- 파일에서 지정된 문자열 패턴을 포함한 라인을 찾아 출력
- -r : 디렉터리가 지정될 때 모든 파일을 대상으로 검색
- -i : 대소문자 구별 없음
- -V : 매칭이 일어나지 않는 라인 출력