드디어 두자리수를 채운 10일차가 되었습니다.
어제 기수들과 첫 회식이 있었기 때문에 하루 미뤄지게 되었습니다.
앞으로 더 공부를 잘하기 위해 반 분위기도 중요하다고 생각해 다들 모인 자리였는데 정말 재밌었어요.
그럼 교육 내용으로 넘어가겠습니다!
10일차는 접근제어리스트에 대해 배웠습니다.
단순히 리눅스 내에서 rwx로 소유자와 그룹 그리고 다른사람을 제어한다고 생각했는데 이 ACL로 같은 그룹끼리더라도 권한을 다르게 줄 수 있었습니다.
이 ACL이 필요한 이유에 대해 생각해보았는데 예를 들면 회사내의 여러 부서들이 각각 그룹이라면 그 부서의 장들만 볼 수 있는 문서를 생각해볼 수 있습니다.
그리고 10일차는 특별한 날이었는데요.
그 이유는 바로 옆반의 모의해킹 과정의 프로젝트 발표가 잇었기 때문입니다.
난독화, ip카메라 모의침투, 스텔스 백도어, 머신러닝 등 여러 작품을 보았는데요.
다들 5개월동안 실력을 많이 쌓으셨다는 것을 느낄 수 있었습니다.
지금은 아직 먼 얘기인 것 같지만 몇개월만 지나면 우리도 프로젝트를 해야한다는 압박감이 벌써 부터 느껴졌습니다.
프로젝트를 어떤 주제로 할 지 종종 생각해봐야겠습니다.
'KITRI 교육' 카테고리의 다른 글
2017.07.28 교육 12일차 - 파일 시스템 및 논리 볼륨 관리 (0) | 2017.07.28 |
---|---|
2017.07.27 교육 11일차 - 디스크 관리 (0) | 2017.07.27 |
2017.07.25 교육 09일차 - 디렉토리 구조 및 확장 권한 (0) | 2017.07.25 |
2017.07.24 교육 08일차 - 사용자 및 그룹관리 (0) | 2017.07.24 |
2017.07.21 교육 07일차 - 프로세스 제어 및 파일 압축과 해제 (0) | 2017.07.22 |
안녕하세요!
이번 포스팅은 vi 편집기입니다.
vi 편집기는 윈도우의 메모장 같은 프로그램입니다.
vi는 visual editor의 약자입니다.
이번에 배울 vi 편집기는 특히 리눅스를 처음 사용해 보시는 분에게는 완전 낯선 부분입니다.
메모장처럼 생겨서 메모장이지 않은... 마우스를 사용했던 메모장과는 다르게 오로지 키보드로 사용을 해야하기 때문에 상당히 애먹는 부분입니다.
하지만 모든 명령어에 익숙하다면 훨씬 더 편하다고 말하더군요.
저는 아직 거기까지는 모르겠습니다.
그럼 포스팅을 시작하도록 하겠습니다.
먼저 vi를 실행시켜 줍니다.
실행법은 vi (파일명)입니다.
여기서 저는 파일명을 test.txt라고 했는데 아무거로나 하셔도 상관없습니다.
아시리라 믿지만 리눅스에서 . 뒤에 확장자처럼 보이는 것은 확장자가 아닙니다.
여러 파일을 분간하기 위해 사용할 뿐입니다.
저는 텍스트 파일임을 알려주기 위해 눈에 익숙한 .txt를 사용하였습니다.
그렇게 되면 이런 메모장과 비슷한 화면이 보여집니다.
이 화면은 현재 커멘드 모드입니다.
vi에는 총 3가지의 모드가 있는데요.
그 중 하나입니다.
여기서 i를 눌러봅니다.
이 모드는 에디트 모드입니다.
파일을 수정할 수 있는 모드예요.
메모장처럼 글씨를 쓸 수 있는 모드라고 생각하시면 됩니다.
아무 글씨나 써주세요.
그 이유는 파일을 저장한 후 다시 켯을 때 제대로 저장이 되어 있나 확인해보기 위함입니다.
esc를 누른 후, :wq라고 입력해주시면 원래 입력하던 곳이 아닌 맨 밑에 글씨가 써지게 되는데요.
이 모드가 바로 라스트 라인 모드입니다.
:wq는 write하고, quit을 한다는 의미입니다.
저장후 종료라는 말이라고 생각하시면 됩니다.
더 자세한 명령어는 뒤에서 설명하도록 하겠습니다.
vi 명령어로 파일을 다시 열어주시면 아까 전 그 내용이 그대로 임을 확인할 수 있답니다.
아까와 같이 i를 눌러 here을 써줍시다.
방금 커서가 있던 곳의 앞에서부터 써집니다.
처음의 상황으로 돌아가 a를 눌러주시고 here을 써줍니다.
커서의 뒤에 here이 써지는 것을 확인할 수 있어요.
처음에는 커서 위치도 헷갈리고, i와 a가 복잡하시겠지만 조금 익숙해지시면 능숙하게 다루실 수 있을거에요!
다시 처음의 상황으로 돌아가 a를 눌러주시고 here을 써보세요.
커서 밑에 줄에 here이 써지는 것을 확인할 수 있답니다.
입력할 수 있는 큰 단축키는 이렇게 i, a, o 입니다.
그 외의 명령어도 한 번 보고 넘어 갈게요.
명령어 |
설명 |
a |
텍스트 뒤에 커서를 위치시키고 입력을 받습니다. |
A |
텍스트가 위치한 줄의 가장 뒷부분에 커서를 위치시키고 입력을 받습니다. |
i |
텍스트가 앞에 커서를 위치시키고 입력을 받습니다. |
I |
텍스트가 위치한 줄의 가장 앞부분에 커서를 위치시키고 입력을 받습니다. |
o |
커서가 위치한 줄의 아래에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. |
O |
커서가 위치한 줄의 위에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. |
처음부터 전부 외울 필요는 없다고 생각해요.
하지만 알고 넘어가는 것과 모르고 넘어가는 것은 많이 다르겠죠?
다음은 커멘드 모드에서 커서를 이동하는 명령어를 살펴보겠습니다.
이 부분은 정리된 표만으로 충분하다고 생각해 표만 올립니다.
키 조합 |
커서 이동 설명 |
h, 왼쪽 화살표, 백스페이스 키 |
왼쪽으로 한 칸 이동 |
j, 아래쪽 화살표 |
한 줄 아래로 이동 |
k, 위쪽 화살표 |
한 줄 위로 이동 |
l, 오른쪽 화살표, 스페이스 키 |
오른쪽으로 한 칸 이동 |
w |
한 단어 앞으로 이동 |
b |
한 단어 뒤로 이동 |
e |
현재 단어의 끝으로 이동 |
$ |
한 줄 끝으로 이동 |
0(숫자) |
한 줄의 시작으로 이동 |
Enter 키 |
한 줄 아래로 이동 |
G |
파일의 제일 마지막 줄로 이동 |
1G |
파일의 제일 첫 번째 줄로 이동 |
:n |
n번째 줄로 이동 |
nG |
n번째 줄로 이동 |
Ctrl + F |
화면 사이즈만큼 다음 화면으로 이동 |
Ctrl + D |
화면 사이즈의 절반만큼 다음 화면으로 이동 |
Ctrl + B |
화면 사이즈만큼 이전 화면으로 이동 |
Ctrl + U |
화면 사이즈의 절반만큼 이전 화면으로 이동 |
Ctrl + L |
화면 재 갱신 |
w, b, G 정도 암기해두시고 가면 편리할거에요!
다음 실습을 위해 몇 글자 더 적었습니다.
이번엔 삭제에 관련된 명령어입니다.
마찬가지로 표를 먼저 확인할게요.
명령어 |
기능 |
R |
ESC 키를 입력할 때 까지 커서가 위치한 부분의 오른쪽부터 텍스트를 대체하여 입력합니다. 기존에 있던 내용은 삭제됩니다. |
C |
텍스트를 입력 후 ESC 키를 입력할 대 까지 커서가 위치한 부분으로부터 줄의 끝 부분까지 삭제되고 입력한 텍스트로 대체됩니다. |
s |
커서가 위치한 부분의 글자를 삭제한 후 입력합니다. |
x |
커서가 위치한 부분의 글자를 삭제합니다. |
dw |
커서가 위치한 부분부터 한 단어를 삭제합니다. |
dd |
커서가 위치한 줄을 삭제합니다. |
D |
커서가 위치한 부분부터 해당 줄의 끝부분까지 삭제합니다. |
:n,nd |
n번째 줄부터 n번째 줄까지 삭제합니다. |
경험상 dd와 x를 자주 이용해요.
여기서 R과 C가 설명이 조금 헷갈릴 수 있을 것 같아 화면으로 준비했습니다.
먼저 R 입니다.
R은 한마디로 한글에서 insert 키를 눌러 수정 상태가 되었다고 보면 돼요.
이렇게 line위를 바로 덮어 쓸 수 있답니다.
다음은 C 입니다.
C도 R과 비슷한데 커서 뒤의 줄을 전부 삭제 후 입력해주는 명령어입니다.
아래 화면에서 확인하실 수 있습니다.
다음은 수정과 관련된 명령어입니다.
명령어 |
기능 |
cw |
커서가 위치한 부분의 단어 끝까지 변경하여 덮어쓰기 합니다. |
r |
커서가 위치한 부분의 글자 하나를 대체합니다. |
J |
커서가 위치한 부분의 아랫줄의 내용을 커서가 위치한 줄로 이동시킵니다. |
xp |
커서가 위치한 부분의 글자와 오른쪽의 글자의 위치를 변경합니다. |
~ |
커서가 위치한 부분의 글자의 대소문자를 변경합니다. |
u |
명령어 실행 전으로 되돌립니다. |
U |
커서가 위치한 줄의 모든 변경사항을 변경이전으로 되돌립니다. |
. |
바로 전에 입력한 명령어를 재실행합니다. |
자주 쓰이는 명령어는 r, u정도 되겠습니다.
vi에 익숙하지 못한 사용자는 자주 Ctrl + Z 로 되돌아가려고 할텐데요.
그때마다 화면이 이상하게 개지기 마련입니다.
u라는 명령어는 Ctrl + Z와 같은 기능이므로 꼭 기억해주세요!
다음은 커멘드 모드에서 패턴을 검색하고 변환하는 명령어입니다.
명령어 |
기능 |
/string |
현재 화면에서 다음 화면 순으로 단어를 검색합니다. |
?string |
현재 화면에서 이전 화면 순으로 단어를 검색합니다. |
n |
단어를 검색한 상태에서 다음 검색 결과를 확인합니다. |
N |
단어를 검색한 상태에서 이진 검색 결과를 확인합니다. |
:%s/(바꿀 단어)/(새 단어)/g |
찾아 바꾸기 입니다. |
이 중에서 맨 마지막 찾아 바꾸기에 대해 조금 더 알아보도록할게요.
만약 line을 line/jul로 바꾸고 싶다면
:%s/line/line/jul/g 일까요?
정답은 밑에서 확인해보도록 하겠습니다.
글씨가 깨져 잘 안보이기 때문에 다시 써드리면
:%s/line/line\/jul/g 입니다.
C언어에서 특수문자를 출력하고 싶을 때와 상황을 같게 생각하시면 됩니다.
\라는 문자를 사용하면 그 뒤 문자는 특수 행동을 하지 않습니다.
아래는 변환 결과 출력 화면입니다.
다음은 복사 및 붙여넣기 명령이입니다.
마우스로 클릭이 되지 않다보니 상당히 불편한데요.
리눅스에서는 보통 줄 단위로 복사를 하게 됩니다.
명령어 |
기능 |
yy |
한 줄을 복사하여 임시 버퍼 공간에 저장합니다. |
p |
임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣습니다. |
P |
임시 버퍼 공간에 저장된 텍스트를 커서의 윗줄에 붙여 넣습니다. |
:n,n co n |
n번째 줄부터 n번째 줄까지 복사하여 n번째 줄의 아래에 붙여 넣습니다. |
:n,n m n |
n번째 줄부터 n번째 줄까지 잘라내어 n번째 줄의 아래에 붙여 넣습니다. |
다음은 라스트 라인 모드에서 저장 및 종료하는 명령어입니다.
명령어 |
기능 |
:w |
수정한 파일을 저장합니다. |
:w (파일명) |
수정한 파일을 다른 이름으로 저장합니다. |
:wq |
수정한 파일을 저장 후 종료합니다. |
:x |
수정한 파일을 디스크에 저장한 후 종료합니다. |
ZZ |
수정한 파일을 디스크에 저장한 후 종료합니다. |
:q! |
수정한 파일을 저장하지 않고 종료합니다. |
전부 많이 쓰이는 명령어이므로 잘 외워두세요!
마지막으로 환경 변수 활성화 및 비활성화 명령어입니다.
라스트 라인 모드에서 실행할 수 있습니다.
먼저 가장 잘 쓰이는 :set nu 입니다.
화면에 줄 번호를 출력해줍니다.
매우 편리한 기능이에요!
다음은 :set list 입니다.
이 기능은 아래 화면처럼 숨겨진 기호를 표시해줍니다.
줄의 끝이나 tab 등을 표시해줍니다.
다음은 :set showmode 입니다.
이 명령어는 초기에 미리 설정되어 있습니다.
아까 위에서 보신 에디트 모드로 들어갔을 때 하단에 INSERT가 보이는 것이 이 때문입니다.
반대로 :set noshowmode를 해주시면 없앨 수 있어요.
전 아직 왜 없애는 기능이 있는 지 모르겠습니다.
저 표시가 있어야만 안심하고 vi를 쓸 수 있다고 믿고 있답니다.
중요한 명령어만 살펴보았지만 표로 한 번 더 정리해보았습니다.
명령어 |
기능 |
:set nu |
화면에 줄 번호를 출력합니다. |
:set nonu |
화면에 줄 번호를 숨깁니다. |
:set ic |
검색시 대소문자를 구분하지 않습니다. |
:set noic |
검색시 대소문자를 구분합니다. |
:set list |
숨겨진 기호들을 표시합니다. |
:set nolist |
숨겨진 기호들을 표시하지 않습니다. |
:set showmode |
vi 편집기의 현재 모드를 표시합니다. |
:set noshowmode |
vi 편집기의 현재 모드를 표시하지 않습니다. |
:set |
vi 편집기의 모든 환경변수를 출력합니다. |
:set all |
vi 편집기의 모든 환경변수를 활성화합니다. |
여기까지 vi 편집기 명령어에 대한 포스팅이었습니다.
이 외에도 많은 명령어가 있지만 이정도만 알아두셔도 vi 편집기를 사용하시는 데는 충분할거에요!
저는 다음에 또 다른 포스팅으로 찾아뵙겠습니다.
'보안 지식 창고 > [리눅스]' 카테고리의 다른 글
[리눅스] /etc/passwd 및 /etc/shadow 파일 (0) | 2017.07.29 |
---|---|
[리눅스] 퍼미션 이해 (0) | 2017.07.28 |
[리눅스] 파일 및 디렉토리 검색 (0) | 2017.07.25 |
[리눅스] 하드링크 및 심볼릭링크 (0) | 2017.07.24 |
[리눅스] 디렉토리 및 파일 내용 변경 (0) | 2017.07.23 |
햇빛은 쨍쨍, 9일차 교육이 진행되었습니다.
학교에서 2학년 때 리눅스를 한 번 듣고, 3학년 때 몇몇 실습을 혼자 진행해 본 양 보다 리눅스 교육을 시작하고 7일째되는 이 시간이 리눅스를 더 많이 공부한 것 같아요.
그만큼 앉은 자리에서 리눅스만 보고 있답니다.
띄엄띄엄 보는 것이 아닌 하루에 적어도 8시간을 리눅스만 공부하다보니 자연스레 그 지식 또한 향상되는 것 같아요.
아직 이렇다할 실력은 늘지 않았지만 전에는 어설프게 알고 있던 지식들이 좀 더 확실히 머리에 박힙니다.
오늘은 root 디렉토리에서 큰 틀로 어떤 구조로 되어있고, 각각은 어떤 역할인지 살펴보고 확정 권한에 대해 배웠습니다.
이 두가지 모두 알고있는 내용이긴 하지만 개념이 잘 잡혀있지 않고, 책을 보지 않고는 답할 수 없는 내용이 많은 부분이었습니다.
오늘 내용은 자격증 시험에도 종종 나오는 부분이기 때문에 굉장히 좋았습니다.
기초를 더 탄탄히 잡아 리눅스를 확실히 이해하는 순간이 왔으면 하네요.
다음 시간이 더 기대되는 교육 날이었습니다.
'KITRI 교육' 카테고리의 다른 글
2017.07.27 교육 11일차 - 디스크 관리 (0) | 2017.07.27 |
---|---|
2017.07.26 교육 10일차 - ACL(접근제어리스트) (0) | 2017.07.27 |
2017.07.24 교육 08일차 - 사용자 및 그룹관리 (0) | 2017.07.24 |
2017.07.21 교육 07일차 - 프로세스 제어 및 파일 압축과 해제 (0) | 2017.07.22 |
2017.07.20 교육 06일차 - vi 편집기 사용 및 퍼미션 이해 (0) | 2017.07.20 |