티스토리 뷰
디렉터리 vs 파일 vs 파일 시스템
디렉터리도 파일임.
모든 파일은 객체. 모든 객체는 고유 식별자가 있음.
1. 명령어의 구분
1) 내부 명령어
: 처음부터 셸에 있었던 명령어(리눅스 자체에서 가지고 있는 명령어)
- 상대적으로 양이 많지 않다.
- alias도 내부 명령어에 들어감
2) 외부 명령어: 내부 명령어를 제외한 모든 명령어
2. 기본 명령어
1) #cd
> #cd .
> #cd ..
> #cd [이동할 디렉터리명] *디렉터리로만 이동이 가능하다. 파일 안으로는 이동이 불가능하다.*
> #cd - : 이전에 있었던 디렉터리로 이동
> #cd, #cd ~ : 현재 계정의 홈 디렉터리로 이동
"~" 자체가 홈 디렉터리를 의미하므로, #cd와 #cd~의 역할이 같음
2) #ls : 현재 디렉터리 목록 출력
3. 디렉터리 생성/수정/삭제
1) 디렉터리 생성
> #mkdir [생성할 디렉터리]
<옵션>
-p: 하위 디렉터리 한 번에 생성
2) 디렉터리 삭제
> #rmdir [삭제할 디렉터리] : 빈 디렉터리만 삭제 가능
> #rm [옵션] [삭제할 디렉터리] : 빈 디렉터리 뿐만 아니라 파일/디렉터리가 존재하는 디렉터리도 삭제 가능
<옵션> * 리눅스는 옵션을 조합해서 쓸 수 있음 *
-r: 파일/하위 디렉터리까지 삭제
-rf: 삭제 여부 묻지 않음. (편리하지만 위험한 옵션)
-i: 삭제 여부 묻기. (이 옵션이 디폴트로 들어가 있음)
[속성 /파일유형] |
[허가권] | [링크수] | [소유자명] | [그룹명] | [파일크기] | [수정 날짜] | [파일 /디렉터리명] |
d | rwxr-xr-x. | 2 | root | root | 6 | 2월 18 16:10 | test |
- | rw-r--r--. | 1 | root | root | 0 | 2월 18 16:10 | test.txt |
d: 디렉터리
-: 일반 파일
l (엘) : 심볼릭 링크
b : 블록 장치 파일
c : 문자 장치 파일
4. 파일 생성(빈 파일O, 빈 디렉터리X), 수정 날짜 변경
#touch [파일/디렉터리명]
* 이때, 파일은 생성/수정날짜 변경 모두 가능하지만, 디렉터리는 생성은 불가능하며 수정날짜 변경만 가능함 *
5. 파일/디렉터리 복사
#cp [원본 파일] [복사본 파일]
* 여러 개를 복사하는 것은 현재 위치한 디렉터리에서만 가능하다.
* 서로 다른 디렉터리에서 절대경로를 활용하여 여러 디렉터리를 복사하는 것은 불가능하다.
* 복사본 파일이 들어갈 곳이 디렉터리명이면 그대로 디렉터리에 들어가지만, 파일명이면 복사본 파일이 해당 파일명으로 이름이 변경되어 복사된다.
<옵션>
-r: 파일/디렉터리(디렉터리를 복사할 때에는 이 옵션을 주어야 함)
6. 파일/디렉터리 옮기기(이동) & 이름 변경
1) 파일/디렉터리 이동
#mv [원본 파일/디렉터리] [이동할 목적지 디렉터리]
2) 파일명 변경
#mv [원본 파일] [변경할 파일명]
* 이때, 변경할 파일명과 동일한 파일명이 있다면, 덮어쓸 것인지 확인한다.
* 변경할 파일명과 동일한 디렉터리명이 있다면, 파일명이 변경되는 것이 아닌 해당 디렉터리로 이동하게 된다.
* 즉, 파일명을 변경하고 싶다면 해당 디렉터리에 동일한 파일명 혹은 디렉터리명이 없어야 한다.
3) 디렉터리명 변경
#mv [원본 디렉터리] [변경할 디렉터리명]
* 변경할 디렉터리명과 동일한 디렉터리명이 있을 경우,
디렉터리명이 변경되는 것이 아닌 해당 디렉터리로 이동하게 된다.
* 변경할 디렉터리명과 동일한 파일명이 있을 경우, 덮어쓸 것인지 확인한다. (아래의 상황이 예시)
하지만 이때 'y'를 입력하게 될 경우 디렉터리 'test7'은 디렉터리가 아닌 파일'test6'를 덮어 쓸 수 없다고 표시된다.
디렉터리는 파일이지만, 파일은 디렉터리가 아니므로.
* 즉, 디렉터리명을 변경하고 싶다면 해당 디렉터리에 동일한 파일명 혹은 디렉터리명이 없어야 한다.
⭐결론: mv 명령어를 통해 디렉터리를 이동하려면 해당 디렉터리명이 존재해야 하며, 이름을 바꾸려면 해당 파일/디렉터리명이 존재하지 않아야 함.
7. 시간/날짜/연도를 확인/설정
#date [MMDDHHmmYY.ss]
#date 월일시분연도.초
[time 자동 설정] - 날짜 시간 확인한 후 자동화 시키는 과정
> /etc/chrony.conf
> 3행 주석 처리 후 아래 항목 추가
server time.bora.net iburst
server send.mx.cdnetworks.com iburst
> ESC 키를 누른후, shift + ; -> wq 입력하여 빠져나온다.
#systemctl restart chronyd
#timedatectl (명령어를 통해 시간을 보거나 설정할 수 있음)
#date
8. 리다이렉션(내용 덮어쓰기)
> 표준 출력/입력
> 표준 출력 = 덮어쓰기
1) #cat A : A 파일의 내용을 출력
2) #cat A > B : A를 B로 출력하라(덮어쓰라)
* cp와 cat의 차이점: cp는 파일과 디렉터리 모두 복사하여 덮어쓰기가 가능하지만, cat은 파일만 가능하다.
* cat [디렉터리] > [디렉터리] 혹은 cat [디렉터리] > [파일] 혹은 cat [파일] > [디렉터리] 모두 불가능 하다.
⭐결론: 표준 출력(=덮어쓰기)는 cat [파일] > [파일] 만 가능한 것이다.
3) #cat A >> B : A를 B에 추가하라
4) cat 명령어로 파일 생성
#cat > [파일명], 파일 내용 입력, CTRL + D를 통해 저장하고 빠져나오기
-표준 출력
A 1> B
-표준 오류 출력
A 2> B
-표준 입력
< B
<옵션>
-n: 행 번호 출력
-b: 빈 행 제외하고 출력
9. 파이프
> 2개 이상의 명령어를 연결할 때 사용
10. 파일 부분 출력
#head [옵션] [파일명] -> head는 기본이 +
#head -n 10 [파일명] -> 특정 파일을 위에서부터 10줄 읽기
#head -n -10 [파일명] -> 아래에서부터 10줄 제외한 나머지 보여줌
#tail [옵션] [파일명] -> tail은 기본이 -
#tail -n 10 [파일명] -> 특정 파일을 아래에서부터 10줄 읽기
#tail -n +10 [파일명] -> 위에서부터 9줄 제외한 나머지 보여줌
<옵션>
-n: 줄 수
-c: 용량
-f: 파일 내용 모니터링. CTRL + C를 통해 나감. (특히 log 파일 쪽. 변동사항 실시간 모니터링 가능)
* 단, 빈 파일을 덮어씌우는 것은 적용이 되지 않는다. 원래 같으면 빈 파일이 되어야 하지만 그대로임. *
11. 파일 내용 페이지 단위로 출력
1) cat 명령어 이용
# cat [파일명] | more : 너무 많은 내용을 지닌 파일이 있을 경우, 페이지 단위(스페이스) 혹은 줄 단위(엔터)로 차근차근 읽고 싶을 때 사용(다 읽으면 알아서 빠져나옴)
# cat [파일명] | less : 엔터, 스페이스, 방향키 사용 가능. (다 읽어도 빠져나오지 않음. q를 눌러 빠져나옴)
2) more/less 단독 사용
# more [파일명] : 너무 많은 내용을 지닌 파일이 있을 경우, 페이지 단위(스페이스) 혹은 줄 단위(엔터)로 차근차근 읽고 싶을 때 사용(다 읽으면 알아서 빠져나옴) cat 사용시와 차이점? 얼마나 읽었는지 퍼센트도 나와있음
# less [파일명] : 엔터, 스페이스, 방향키 사용 가능. (다 읽어도 빠져나오지 않음. q를 눌러 빠져나옴)
12. 파일 내용 분할
#split [파일명]
>확장자 설정
# split -l 10 -d -a 4 --additional-suffix=.bak passwd
> 분할된 파일 합치기
#cat x*(나눠진 모든 파일 선택) > korea.txt -> korea.txt에 합쳐진 내용이 들어감
<옵션> - 자르는 기준이 됨
-l + 숫자: 줄 수로 자르기
-C + 숫자: 바이트 수
-n + 숫자: 파일 갯수 지정
-d: 확장자를 숫자로 지정(디폴트는 xaa, xab ... 형식)
-a + 숫자: 확장자 자릿수 지정. 자릿수를 몇 개로 할 것인지 숫자도 붙여주어야 함.
--additional-suffix= : 확장자명 지정
--numeric-suffixes= : 확장자 시작 번호 지정
13. 문자열 출력
#grep [찾고자 하는 문자열] [대상 파일명]
<옵션>
-n: 행 번호 출력
14 .행 번호 붙이기
#nl [파일명]
> numberline의 줄임말. 해당 파일의 행 번호를 표시하여 출력함
<옵션>
-i + 숫자: 행번호 공차수열의 등차를 설정
-v + 숫자: 초기값 설정
===================
< 번외 명령어 >
# date : 날짜, 요일, 시, 분, 초, 나라까지 나오는 명령어
# cal : 현재 날짜가 포함된 '달'을 달력 형식으로 보여주는 명령어
# cal -y : 올해의 달력을 보여주는 명령어
# cal -yj : 올해의 달력을 365일 기준으로 몇 일인지 보여주는 명령어
# cal -3 : 현재 날짜가 포함된 '달'의 전 달과 다음 달을 달력 형식으로 보여주는 명령어
#cal 05 2025 : 2025년 5월을 달력 형식으로 보여주는 명령어
#cal -y 1963 : 1963년의 12달 모두를 달력 형식으로 보여주는 명령어
#man + 궁금한 명령어
#궁금한 명령어 + --help 혹은 -h
- Total
- Today
- Yesterday
- 비주얼스튜디오
- 앱개발
- D&C
- 프론트엔드
- 개발계발
- 익스플로러
- 프로그래밍언어
- VisualStudio
- vscode
- 데이터구조
- 바이트코드
- 의사코드
- SWLIfeCycle
- 소스파일
- 사이트만들기
- 구글크롬
- 웹개발자
- 알고리즘
- 브라우저
- 브라우저뜻
- ADL
- 구현
- jre
- Abstraction
- javase
- 기계어
- jvm
- SW생명주기
- 데이터추상화
- 크롬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |