나의 IT일지
파일 내용 출력 및 파일 내용 편집 본문
명령어
리눅스는 TUI를 기반으로 운영되는 운영체제이기에 터미널이나 콘솔에 명령어를 지정해서 사용하게 된다. 이때, 명령어에는 옵션에 따라 수행되는 기능이 변화하지만, 옵션없이 사용 가능하다.
그리고 디렉토리나 파일을 나타내기 위해서는 경로를 통해 표현하게 되며, 파일은 경우에 따라 마지막에 파일명을 표현해야 한다. 추가적으로 리눅스는 대소문자를 구분하며, 같은 이름을 가진 데이터는 같은 이름으로 만들 수 없다.
경로 종류 | 절대 경로 | 상대 경로 | |
의미 | 최상위(/)가 기준이 되는 경로 | 현 위치(.)가 기준이 되는 경로 | |
예시 | 디렉토리 | /home/test/, /etc/, /, /root 등 | ./yum, vars, ../bin/ 등 |
파일 | /etc/passwd, /etc/shadow, /home/test/바탕화면 등 | ../passwd, shadow, ./test/바탕화면 |
이때, 디렉토리를 뜻하는 "/"는 마지막에만 생략이 가능하며, "."이나 ".."같은 경로가 아닌 문자로 디렉토리 위치를 표현할 수 있다.
문자 | 의미 |
./ | 현재 디렉토리 (생략 가능) |
../ | 상위 디렉토리 |
~ | 현 계정의 홈 디렉토리 |
~[계정] | 지정된 계정의 홈 디렉토리 |
명령어는 왼쪽에서 오른쪽으로 진행되며, 연산자를 사용해서 한번의 명령으로 2개 이상의 명령을 수행시킬 수 있다.
연산자 | 기능 |
&& (and) | 앞의 명령어 성공시 뒤의 명령어 실행, 앞의 명령어 실패시 뒤의 명령어 미실행 |
|| (or) | 앞의 명령어가 성공시 뒤의 명령어 미실행, 앞의 명령어 실패시 뒤의 명령어 실행 |
| (연계) | 파일 내용이나 디렉토리 목록을 출력하는 경우, 앞의 명령어의 결과를 받아 뒤의 명령어로 출력 |
파일 내용 출력 명령어
- cat [옵션] [파일 경로] : 파일의 내용을 출력하는 명령어
- cat [옵션] [파일 1 경로] [파일 2 경로] [파일 3 경로] ... : 문서를 엮어서(연결시켜서) 내용을 출력하는 명령어
옵션 | 기능 |
-n | 줄번호 출력 |
- head [옵션] [파일 경로] : 위에서 기본 10줄 파일의 내용을 출력하는 명령어
- head [옵션] [파일 1 경로] [파일 2 경로] [파일 3 경로] ... : 위에서 기본 10줄 문서들의 내용을 출력하는 명령어
옵션 | 기능 |
-[숫자] | 위에서 숫자에 해당하는 행만큼 출력 |
- tail [옵션] [파일 경로] : 아래에서 기본 10줄 파일의 내용을 출력하는 명령어
- tail [옵션] [파일 1 경로] [파일 2 경로] [파일 3 경로] ... : 아래에서 기본 10줄 문서들의 내용을 출력하는 명령어
옵션 | 기능 |
-n[숫자] | 위에서 숫자에 해당하는 행만큼 출력 |
- more [옵션] [파일 경로] : 화면을 기본단위로 문서를 끊어 보는 명령어, less 명령어와 같은 명령어
- more [옵션] [파일 경로] : 화면을 기본단위로 여러 문서를 끊어 보는 명령어
옵션 | 기능 |
-[숫자] | 기본단위를 숫자만큼 선언 |
사용 키 | 기능 |
enter | 1줄씩 파일 내용 끊어서 출력 |
space | 기본단위로 내용을 끊어서 출력 |
q | 출력 취소 |
- grep [옵션] [필터링 할 문자] [파일 경로] : 문자가 포함되어 있는 행 출력하는 명령어
- grep [옵션] [필터링 할 문자] [파일 1 경로] [파일 2 경로] [파일 3 경로] ... : 파일들 중에 문자가 포함되어 있는 행 출력하는 명령어
옵션 | 기능 |
-c | 문자가 포함된 줄의 갯수 |
-P "[필터링할 문자1 | 필터링할 문자2]" | 다중 필터링 |
-i | 대소문자 구분 x |
-v | 해당 문자를 가진 줄 숨기고 출력 |
파일을 출력할 때 사용하는 명령어이지만 연계연산자를 사용해서 다른 명령어와 연계를 하면 조건에 맞춰서 여러가지 형태의 결과를 출력할 수 있다.
- 예시
- ls -l |grep root : 현 디렉토리에 속해있는 파일/ 디렉토리들 중에 root라는 단어가 있는 행 출력
- ls -l /etc |more : etc디렉토리에 있는 파일/ 디렉토리를 화면 단위로 출력
- cat -n /etc/login.def |head -5 : etc디렉토리에 있는 login.def파일을 앞에 줄번호가 있는 상태에서 위에서 5줄만 출력
리다이렉션
명령어를 통해 출력되는 결과를 파일형태로 저장하는 기능으로, 주로 실행 파일의 코드를 파일로 복사하거나 연계연산자를 통해 파일이나 목록에서 원하는 내용을 파일로 저장해야 하는 경우에 사용한다.
- [출력 명령어] > [파일 경로] : 출력 명령어의 출력 결과의 내용을 파일로 만드는 기능, 만일 파일명이 기존에 존재하는 경우 덮어쓰기
- [출력 명령어] 0> [파일 경로] : 출력 명령어의 내용을 출력하고 파일에는 어떠한 내용도 저장하지 않음
- [출력 명령어] 1> [파일 경로] : 출력 명령어의 내용중 오류 내용은 출력하고 정상내용은 파일에 저장
- [출력 명령어] 2> [파일 경로] : 출력 명령어의 내용중 정상 내용은 출력하고 오류내용은 파일에 저장
- [출력 명령어] >> [파일 경로] : 출력 명령어의 출력 결과의 내용을 파일로 만드는 기능, 만일 파일명이 기존에 존재하는 경우 내용 추가
- [출력 명령어] 0>> [파일 경로] : 출력 명령어의 내용을 출력하고 파일에는 어떠한 내용도 저장하지 않음
- [출력 명령어] 1>> [파일 경로] : 출력 명령어의 내용중 오류 내용은 출력하고 정상내용은 파일에 저장
- [출력 명령어] 2>> [파일 경로] : 출력 명령어의 내용중 정상 내용은 출력하고 오류내용은 파일에 저장
- [출력 명령어] 2>> /dev/null : 출력명령어의 내용중 정상내용만 출력
파일 검색 명령어
- find [디렉토리 경로] [옵션] : 옵션(조건)에 따라 디렉토리에 있는 파일/디렉토리를 검색하는 명령어
- find [디렉토리 경로] [옵션 1] [옵션 2] [옵션 3] ... : 다중 옵션이 전부 일치하는 파일/디렉토리들을 검색
- find [디렉토리 경로] [옵션 1] -o [옵션 2] -o [옵션 3] ... : 다중 옵션중 하나라도 일치하는 파일/디렉토리들을 검색
- find [디렉토리 경로] [옵션 1] -a [옵션 2] -a [옵션 3] ... : 다중 옵션이 전부 일치하는 파일/디렉토리들을 검색
- find [디렉토리 경로] [옵션] -exec [명령어] {} \; : 옵션을 통해 검색된 파일/디렉토리들에게 명령어 적용, 이때 {}는 옵션을 통해 검색된 파일/ 디렉토리들이 들어간다.
- -exec 예시
- ls -l {} \; : 옵션을 통해 검색된 파일/디렉토리들을 자세하게 출력
- rm {} \; : 옵션을 통해 검색된 파일/디렉토리들을 삭제
- cp {} ./ \; : 옵션을 통해 검색된 파일/디렉토리들을 현 디렉토리에 복사
- -exec 예시
옵션 | 기능 |
-name [이름] | 해당 이름을 가지는 파일/ 디렉토리 검색 |
-type [f / d] | 타입으로 검색 (파일 : f , 디렉토리 : d) |
-atime [+n / -n] | n일을 기준으로 파일에 접근한 파일 /디렉토리 ( -n : n일 ~ 현재 , +n : 과거 ~ n일) |
-ctime [+n / -n] | n일을 기준으로 파일의 내용, 속성(권한, inode 등등)이 변경한 파일 /디렉토리 ( -n : n일 ~ 현재 , +n : 과거 ~ n일) |
-mtime [+n / -n] | n일을 기준으로 파일을 수정한 파일 /디렉토리 ( -n : n일 ~ 현재 , +n : 과거 ~ n일) |
-amin [+n / -n] | n분을 기준으로 파일에 접근한 파일 /디렉토리 ( -n : n분 ~ 현재 , +n : 과거 ~ n분) |
-cmin [+n / -n] | n분을 기준으로 파일의 내용, 속성(권한, inode 등등)이 변경한 파일 /디렉토리 ( -n : n분 ~ 현재 , +n : 과거 ~ n분) |
-mmin [+n / -n] | n분을 기준으로 파일을 수정한 파일 /디렉토리 ( -n : n분 ~ 현재 , +n : 과거 ~ n분) |
-newer [파일/디렉토리 경로] | 타겟 파일 수정 후에 수정된 모든 디렉토리 / 파일 |
-perm [-u+[권한] / -g+[권한] / -o+[권한]] | 소유자의 권한이 똑같이 부여되어 있는 파일 / 디렉토리 (-u : 사용자, -g : 그룹, -o : 제 3자) |
파일 편집기
윈도우에서 파일의 내용을 편집하는 메모장 프로그램이 있듯이, 리눅스에도 파일의 내용을 편집할 수 있는 프로그램이 존재한다. 이를 vi편집기라고 하는데, vi편집기란 리눅스에서 텍스트 파일을 생성, 수정할 수 있게 하는 문서 편집 프로그램으로, 기본 모드, 편집 모드, 명령 모드로 나눠져 있다.
- vi [파일 경로] : 해당 파일을 편집할 수 있도록 하는 편집 프로그램을 실행하는 명령어
- 파일이 존재하는 경우, 기존 문서 편집하지만 파일 미 존재할 경우, 해당 파일명으로 새로운 문서 생성
- vi : 이름없는 새 파일 생성
- vi -r [파일경로] : OS이상으로 인해 저장을 하지 못할 경우, 이전에 작업한 내용을 복구하는 명령어
vi 관련 환경설정 파일 | |
/etc/virc | vi 환경설정 |
/etc/vimrc | vim 환경설정 |
기본 모드 단축키
단축키 | 기능 | 단축키 | 기능 |
h | 커서를 왼쪽으로 이동 | gg | 문서 내용의 맨 앞으로 이동 |
j | 커서를 아래쪽으로 이동 | G | 문서 내용의 맨 뒤로 이동 |
k | 커서를 위쪽으로 이동 | 0 | 커서가 위치한 행의 맨 앞으로 이동 |
l | 커서를 오른쪽으로 이동 | $ | 커서가 위치한 행의 맨 뒤로 이동 |
w | 커서가 다음 단어로 이동 후, 단어의 왼쪽에 위치 | H | 화면에서 상단으로 이동 |
e | 커서가 다음 단어로 이동 후, 단어의 오른쪽에 위치 | M | 화면에서 중단으로 이동 |
b | 커서를 이전 단어로 이동 | L | 화면에서 하단으로 이동 |
u | 되돌리기 | ctrl + u | 역 되돌리기 |
x | 커서가 위치한 한 글자 삭제 | p | 붙여넣기 |
dd | 커서가 위치한 행 삭제 | yy | 커서가 위치한 행 복사 |
[숫자]dd | 커서를 기준으로 숫자만큼 행 삭제 | [숫자]yy | 커서를 기준으로 숫자만큼 행 복사 |
dw | w로 이동하는 범위까지 단어 삭제 → 한 단어 삭제 | yw | w로 이동하는 범위까지 단어 복사 → 한 단어 복사 |
de | e로 이동하는 범위까지 단어 삭제 | ye | e로 이동하는 범위까지 단어 복사 |
d$ | 1줄 삭제 | y$ | 1줄 복사 |
d0 | 커서 기준 앞에 있는 내용 1줄 삭제 | y0 | 커서 기준 앞에 있는 내용 1줄 복사 |
dgg | 커서 기준 앞에 있는 모든 내용 삭제 | ygg | 커서 기준 앞에있는 모든 내용 복사 |
dG | 커서기준 뒤에 있는 모든 내용 삭제 | yG | 커서 기준 뒤에 있는 모든 내용 복사 |
a | 한칸 앞에서 시작 (편집모드 진입, 탈출은 ESC) | m[기호] | 해당 위치에 마크 지정 |
i | 그자리에서 시작 (편집모드 진입, 탈출은 ESC) | `[기호] | 지정한 마크로 이동 |
o | 행 추가후 시작 (편집모드 진입, 탈출은 ESC) | ctrl + f | 다음 페이지로 이동 |
s | 글자 삭제후 시작 (편집모드 진입, 탈출은 ESC) | ctrl + b | 이전 페이지로 이동 |
이때, 복사와 삭제는 이동과 조합이 가능한데, 복사(y)다음 이동을 누르면, 커서가 움직이는 만큼 복사가 되며, 삭제(d)다음 이동을 누르면, 커서가 움직이는 만큼 삭제가 된다.
명령 모드 명령어
명령어 | 기능 |
:q | 해당 파일 저장하지 않고 종료 |
:!q | 해당 파일 저장하지 않고 강제 종료 |
:w | 해당 파일 저장 |
:w [파일 경로] | 해당 파일을 지정한 파일명으로 저장 |
:wq | 해당 파일 저장하고 종료 |
:e [파일 경로] | 문서 열기 |
:enew [파일 경로] | 새 문서 열기 |
:e! [파일 경로] | 강제로 문서 열기 |
:enew! [파일 경로] | 강제로 새 문서 열기 |
:set nu | 행 번호 출력 |
:set nonu | 행 번호 숨김 |
:[숫자] | 번호로 이동 |
:s/원본/수정 | 커서 행에 있는 첫 원본내용을 수정내용으로 변경 |
:s/원본/수정/g | 커서 행에 있는 모든 원본내용을 수정내용으로 변경 |
:[행 번호]s/원본/수정 | 행 번호에 있는 첫 원본 내용을 수정내용으로 변경 |
:[행 번호]s/원본/수정/g | 행 번호에 있는 모든 원본 내용을 수정내용으로 변경 |
:%s/원본/수정/g | 해당 파일의 모든 원본 내용을 수정내용으로 변경 |
:[행 번호][행 번호]s/원본/수정 | 해당 행 번호들에 있는 첫 원본 내용을 수정내용으로 변경 |
/[내용] | 내용 검색 (n : 정방향, N : 역방향) |
?[내용] | 내용 검색 (n : 역방향, N : 정방향) |
:![명령어] | 문서를 열었던 위치를 기준으로, vi 잠시 중단 후 쉘 명령어 수행 |
:.![내용] | 커서 위치에서 원본 내용 삭제하고 명령 수행 내용 문서 내 삽입 |
:cd [경로] | 문서수행 위치 변경 |
:[행 번호]![명령어] | 지정된 행에 원본 내용 삭제하고 명령 수행 매용 문서 내 삽입 |
:sp | 창을 절반으로 해서 가로로 분할 |
:[숫자]sp | 행 갯수를 숫자만큼 가진 창과 남은 공간의 창으로 가로 분할 |
:vs | 창을 절반으로 해서 세로로 분할(vim 에서만 사용 가능) |
:[숫자]vs | 열 갯수가 숫자만큼 가진 창과 남은 공간의 창으로 세로 분할 (vim 에서만 사용 가능) |
vi편집기는 2개의 파일을 분할해서 사용할 수 있다. "ctrl + ww"으로 내용 수정할 창을 이동할 수 있으며, "ctrl + wn"으로 제목없는 새 문서를 추가할 수 있다.
'정보보안' 카테고리의 다른 글
WAN와 LAN (0) | 2023.06.09 |
---|---|
정적 IP주소과 정적 라우팅 (0) | 2023.06.08 |
리눅스 싱글 부트와 기본 명령어 (0) | 2023.06.05 |
리눅스와 가상 머신 (1) | 2023.06.02 |
TCP 통신 과정과 프로토콜 헤더 (0) | 2023.06.02 |