티스토리 뷰

디렉터리 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줄 제외한 나머지 보여줌
 

head와 tail은 여러 개의 파일을 동시에 읽을 수도 있다.

 
<옵션>
-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= : 확장자 시작 번호 지정

-d 사용 예시
-a 사용 예시
확장자, 파일명까지 설정
확장자, 파일명, 시작 번호까지 설정

 
 
13. 문자열 출력
#grep [찾고자 하는 문자열] [대상 파일명]
 
<옵션>
-n: 행 번호 출력

-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
링크
«   2024/11   »
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
글 보관함