목차
파일 생성
touch
•
새로운 파일을 생성할 때 사용
•
사용 시 파일의 마지막 수정 시간을 변경
cat
•
일반 파일 내용을 출력하는 명령어
•
Shell의 리다이렉션(>, >>) 기능을 통해 파일을 생성하거나 내용 추가 가능
cat > 파일명
파일 내용 작성
# (Ctrl + D: 내용 입력 종료)
# (Ctrl + Z: 파일 저장 후 작성 종료)
Shell
복사
•
Ctrl + Z 는 정상 종료에 대한 커맨드가 아니니 Ctrl + D 로 수행하는 것이 나아보임
echo
•
환경 변수나 문자열을 출력
•
Shell의 리다이렉션 기능을 사용해 파일에 내용을 저장 가능
echo 문자열 # 기본 사용 - 문자열이 그대로 출력됨
echo 문자열 > 파일명 # 새로운 파일에 문자열 작성
echo 추가_문자열 >> 파일명 # 기존 파일에 문자열 추가
Shell
복사
파일 링크
•
파일 시스템에서 파일에 대한 참조를 생성하는 방법
•
링크는 실제 데이터 파일을 가리키는 포인터 역할을 함
Hard Link
ln [original file] [link filename]
•
동일한 파일 시스템 내에서 원본 파일과 동일한 inode를 공유하는 파일
•
원본 파일과 동일한 데이터를 가리킴
•
원본 파일을 삭제하더라도 상관없이 사용 가능
•
디렉토리 링크 불가능
Soft Link / Symbolic Link
ln -s [original file] [link filename]
•
원본 파일의 경로를 가리키는 파일로, 하드 링크와 달리 원본 파일의 경로를 저장
•
원본 파일이 삭제되거나 이동하면 ‘broken link’가 되어 데이터 접근 불가능
•
다른 파일 시스템에서도 생성 가능
•
파일, 디렉토리 모두 링크 가능
i-node
•
Unix 계통 파일 시스템에서 사용되는 자료구조로, 파일에 대한 메타데이터 저장
•
파일 시스템의 모든 파일은 i-node를 가짐
•
메타데이터는 다음과 같은 정보를 포함:
◦
소유권: 파일의 소유자 및 그룹에 대한 정보
◦
허가권: 파일에 대한 읽기, 쓰기, 실행 권한 정보
◦
실제 위치: 파일의 데이터 블록이 저장된 위치에 대한 정보
◦
파일 크기: 바이트 단위의 파일 크기
◦
타임스탬프: 파일의 생성 시간, 수정 시간, 접근 시간 등의 정보
•
각 i-node는 고유 식별번호를 가지며, 이를 통해 파일 시스템에서 파일 참조
◦
식별번호를 통해 파일의 물리적 위치와 메타데이터 연결
•
hard_link 파일과 origin 파일의 inode가 같음을 확인할 수 있음
•
origin 파일을 삭제하니 soft_link의 데이터 접근이 불가능해졌지만 hard_link는 정상 작동함
grep
Global Regular Expression Print
•
시스템 내부에서 패턴과 키워드를 활용한 검색 명렁어
grep [option] "패턴+키워드" [file]
option
옵션 | 의미 |
-n | 라인 표현 |
-i | 대소문자 구분없이 검색 |
-v | 검색 단어가 제외된 내용 검색 |
-b | 문자와 일치하는 줄의 시작점 출력 |
-c | 문자와 일치하는 라인 수 출력 |
-w | 해당 문자열(단어)와 일치한 경우 출력 |
-W | 해당 문자 한 글자와 일치한 경우 출력 |
-A | 특정 문자 아래 추가로 여러 행 출력 |
-B | 특정 문자 위 추가로 여러 행 출력 |
-m | 라인번호와 내용 검 |
정규 표현식 pattern
패턴 | 의미 |
. | 임의 문자 하나 |
? | 문자 존재하거나 존재하지 않음(0, 1) |
* | 문자 미존재 또는 무한대로 존재(0~*) |
+ | 문자 한번 이상 존재(1~*) |
^ | 기호 바로 뒤 문자로 문자열 시작 |
$ | 기호 바로 앞의 문자로 문자열이 끝남 |
{숫자} | 숫자만큼 반복 |
{숫자,} | 숫자 이상만큼 반복 |
{숫자1, 숫자2} | 숫자 1 이상, 숫자 2 이하 만큼 반복 |
(문자열) | 문자나 문자열 묶음 |
[문자1, 문자2,…] | 대괄호 안에 있는 문자들이 존재하는지 검색 |
[^ ] | [ ] 안에 포함되지 않는 문자 |
[:알파벳:] | 알파벳만 검색 |
[:알파벳숫자] | 알파벳과 숫자 검색 |
[:숫자:] | 숫자 검색 |
[:upper:] | 대문자 검색 |
\\ | \ 글자 자체를 검색 |
\d | 모든 숫자 검색
[0-9]와 동일 |
\D | [^0-9]와 동일,
숫자를 제외한 모든 문자 검색 |
\s | 공백 검색 |
\S | 공백이 아닌 문자 검색 |
\w | 숫자 또는 문자 검색
[a-zA-Z0-9]word 를 표현 |
\W | 숫자 또는 문자가 아닌 것 검색
[^a-zA-Z0-9] non word를 표현 |
[ ] | [ ] 안에 포함된 임의의 문자 하나 |
[xy] | 문자 선택, x 와 y 중 하나( x와 y 중에 먼저 나온 단어 검색) |
[^xy] | x 및 y 를 제외한 문자 |
[a-z] | 범위 , a ~ z 사이 문자 |
\^ | escape, ^ 를 문자로 사용함 |
\b | 문자와 공백 사이의 문자 |
\B | 문자와 공백 사이가 아닌 문자 |
\d | 숫자 |
\D | 숫자가 아닌 것 |
패턴 예시
# number
^[0-9]*$
# alphabet
^[a-zA-Z]*$
# KR
^[가-힣]*$
# email
## 계정@도메인.최상위도메인
^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
# phone number
## 3자리-3or4자리-4자리
^\d{3}-\d{3,4}-\d{4}$
## +82-01x-xxxx-xxxx 검증
^\+82-01[0|1]-\d{4}-\d{4}$
# password
## 최소 8자, 최소 1개 문자, 숫자, 특수문자 포함
^(?=.*[A-Za-z])(?=.*\d)(?=.*[@!%*#?&])[A-Za-z\d@!%*#?&]{8,}$
# KR-Resident Registration Number, RRN
## 예시 123456-(1, 2, 3, 4)234567
^\d{6}-[1-4]\d{6}$
## yyMMdd 형식을 맞춘 정규식
^\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])-[1-4]\d{6}$
# Post Code
### 예시 123-456
^\d{3}-\d{3}$
# ID
## 영문조합만 사용, 5~10자 사이
^[a-zA-Z]{5, 10}$
Bash
복사