[Linux] 디렉토리 및 파일 명령어

2024. 10. 12. 21:44·Linux

오늘 포스팅은.. 디렉토리와 파일이란 무엇인지, 그리고 리눅스에서 제공하는 명령어에는 무엇이 있는지 공부하였다.

사실 시험기간이라 한거긴 한데.. 어쨌든 나중에 무조건 도움이 되겠지..

학교 공부는 노션에다 정리하는 편이라 글이 좀 성의 없어 보일 수도 있지만, 나름 열심히 정리 한것이니, 다른 사람들 한테도 도움이 되었으면 좋겠다!

필요한 명령어는 ctrl+f 키로 찾으면서 봅시다


디렉토리와 파일

리눅스는 파일로 보존됨 → 정보 (문서, 이미지, 영상 등)이 파일로 보존된다

사용자의 데이터뿐만 아니라, 시스템을 구성하는 장치(하드,키보드 등) 조차 파일로 다룬다

리눅스 커널도 파일이고, 시스템 설정도 파일에 기록


파일이란?

파일이란 관련있는 정보들의 집합

파일의 종류

 

일반파일

텍스트 파일, 실행 파일, 이미지 파일 등 주로 데이터를 저장

 

디렉토리

파일의 개수가 많아지면, 종류 별로 분류 필요

여러개의 파일의 집합 → 디렉토리 (윈도우에서는 폴더 개념)

리눅스 에서는 디렉토리 조차 파일로 취급

 

심볼릭 링크

원본 파일을 다른 파일명으로 지정한 것(윈도우의 바로가기 개념)

 

장치 파일

하드 디스크나 키보드 같은 각종 장치도 파일로 취급

# 파일의 종류를 알아보는 명령어 -> file 파일명
$ file 다운로드 # 다운로드 파일은 디렉토리 라는 결과 값 출력

file : 리눅스의 주요 디렉토리

# 주요 디렉토리 요약

 # 시스템과 연관된 중요 명령어 포함, 일반 사용자 및 관리자가 사용하는 명령어 실행파일 배치
$ file /bin

# /bin 과 비슷하게 실행파일 보관, 관리자용 명령어 포함, 시스템 종료 명령어 포함(shutdown)
$ file /sbin

# 리눅스에서 돌아가는 다양한 애플리케이션 설정 파일 포함
# 리눅스 자체 설정 파일 포함, 리눅스 관리, 운영에 중요
$ file /etc

# 디바이스 파일이 있는 디렉토리, 디스크나 키보드 등 하드웨어를 다룬다 (device)
$ file /dev

# 사용자 별로 할당되는 홈 디렉토리 (개인용 디렉토리), 사용자 이름으로 구성 , 사용자 자유 설정
$ file /home/Lim

# 설치한 애플리케이션의 파일이 포함되어 있음
# 하위 폴더로 bin, sbin, etc등이 있어 루트 디렉토리와 구조가 비슷하다
$ file /usr

# 동적 데이터를 저장하기 위한 디렉토리 ex. 데이터 로그, 메일 -> 항상 용량 관리가 필요
$ file /var

절대 경로와 상대 경로 명

절대 경로명

  • 반드시 / 로 시작한다.
  • 루트 디렉토리부터 특정 파일이나 디렉토리의 위치에 도달 할 때까지 중간에 있는 모든 디렉토리의 이름을 표시한다
  • 특정 위치 절대 경로명은 정적이다

상대 경로명

  • / 이외 문자로 시작한다
  • 현재 디렉토리 기준으로 서브디렉토리로 내려가면 그냥 서브 티렉토리 명으로 시작
  • 현재 디렉토리 기준, 상위 디렉토리로 가려면 _ _ 로 시작해야함
  • 상대 경로명은 현재 디렉토리를 기준으로 달라진다

pwd : 리눅스의 초기 경로 표시 명령어

# print working directory
$ pwd

윈도우와 리눅스 디렉토리 구조 차이

공통점 : 둘은 유사한 트리 구조의 디렉터리 구조를 갖는다

차이점 : 윈도우는 물리 디스크가 2개면 디렉토리 트리도 2개 이지만, 리눅스는 항상 시스템 전체의 하나의 디렉토리 트리만 가진다

리눅스는 물리 디스크가 2개여도 하나의 트리만 갖는다 - 중요


cd : 디렉토리 관련 명령어

# 현재 디렉토리 확인
$ pwd

# 디렉토리 이동
$ cd [디렉토리명]

# 홈 디렉토리로 이동
$ cd ~

# 루트 디렉토리로 이동
$ cd /

# 현재 디렉토리 표현
$ cd .

# 상위 디렉토리 표현
$ cd ..

 

ls : 디렉토리 내용 확인

# 현재 디렉토리 내용 확인
$ ls [옵션] [디렉토리]

# 숨김 파일까지 확인
$ ls -a

# 파일 종류 표시 -> / : 디렉토리, @ : 심볼릭 링크, * : 실행 파일
$ ls -F

# 지정한 디렉토리 내용 출력
$ ls 디렉토리명

# 상세 정보 출력 -> 파일 타입, 모드, 소유자, 타임 스탬프 등이 출력
$ ls -l

# 현재 디렉토리의 자체 정보 확인
$ ls -d

# 위 두가지 응용 -> 아래 명령어는 루트 디렉토리의 자체 정보 + 상세 정보 출력
$ ls -ld /

 

mkdir : 디렉토리 생성

# 디렉토리 생성 make directory
$ mkdir [옵션] [디렉토리]

# 디렉토리 하나 만들기
$ mkdir temp
$ ls temp # temp 디렉토리 내용 출력
$ ls # temp를 포함한 현재 위치 기준 디렉토리들을 출력

# 디렉토리 여러개 동시에 생성
$ mkdir tmp1 tmp2 tmp3
$ ls # tmp1 tmp2 tmp3 디렉토리 동시에 생성됨

# [옵션 **-p**] 중간 디렉토리를 자동으로 만들기
$ mkdir temp/mid/low # 만약 여기서 디렉토리가 없다는 오류 발생시 아래 명렁어 입력
$ mkdir -p temp/mid/low # 그러면 중간 디렉토리를 자동으로 만들어준다

 

rmdir : 디렉토리 삭제 → 디렉토리가 반드시 비어 있어야 함

# 디렉토리 삭제 remove directory
$ rmdir [옵션] [디렉토리]

# 디렉토리 삭제 예시
$ rmdir tmp3

 

cat : 파일 내용 연속 출력

# 파일 내용을 출력하는 명령어 concatenate
$ cat [옵션] [파일]

# [옵션 -n] 각 행마다 맨 처음에 인덱스를 붙여준다
$ cat -n [파일]

# 파일 내용 화면 단위 출력
$ more [옵션] [파일]
$ less [옵션] [파일]

# 파일 내용 뒷부분 출력
$ tail [옵션] [파일]

 

cp : 파일 복사

# 파일 복사 copy
$ cp [옵션] [파일1 || 디렉토리1] [파일2 || 디렉토리2]

# 파라미터가 모두 파일인 경우
$ cp /etc/hosts text1
# 위 명령어 실행시, /etc/hosts 에 있는 text1이라는 파일이 ~/linux/example1(현재 디렉토리)로
# 같은 이름을 가지고 복사 됨

# 파라미터가 모두 디렉토리인 경우
$ mkdir temp
$ cp text1 temp
# 현재 디렉토리에 temp라는 디렉토리를 새로 생성
# 현재 디렉토리에 있는 text1 파일을 temp 디렉토리로 복사

 

mv : 파일 이동 , 파일명 변경

# move -> 파일 또는 디렉토리를 이동하거나 이름 변경
$ mv [옵션] [파일1 || 디렉토리1] [파일2 || 디렉토리2]

# 파일명 변경 (파일 -> 파일)
$ mv text1 data1 # 파일 이름이 text1 -> data1 로 바뀜

# 디렉토리를 디렉토리로 이동하는 법
$ mv temp1 temp2 

# 파일을 다른 디렉토리로 이동
$ mv data1 temp # data1 이라는 파일을 temp 디렉토리로 이동

# (응용) 파일을 이동하고, 이름도 바꾸기
$ mv text1 temp/data2 # text1 이라는 파일을 temp로 이동하고 data2 로 파일명 변경

# 파일을 여러개 이동
$ mv temp/data1 temp/data2 .
# 위 명령어 사용시 temp 디렉토리 아래의 data1, data2 파일이 현재 경로로 이동 됨

###주의###
# 디렉토리를 디렉토리로 이동할 때 주의할 점 : 
#$ mv temp1 temp2 상황에서 temp2가 존재할 경우에는 하위로 잘 이동함
# 하지만 temp2라는 디렉토리가 없다면 temp1 이 temp2로 이름이 변경됨

 

rm : 파일 삭제

# 파일을 삭제
$ rm [옵션] [파일 || 디렉토리]

#[옵션 -i]
# 파일을 정말 지울 것인가
$ rm -i data1
# 일반 파일 'data1' 을 삭제 할까요?

#[옵션 -r]
# 디렉토리 삭제
$ rm -r temp3

 

디렉토리 삭제 키워드 비교 : rm , rmdir 차이

# rmdir 은 하위 디렉토리가 하나라도 존재하면 삭제 불가

# rm -r 은 하위 디렉토리가 있던 없던 강력하게 삭제 가능 -> 주의 필요

 

touch : 빈 파일 만들기

#빈 파일 만들기
$ touch [파일명]

 

grep : 파일 내용 검색 ( 패턴이 포함된 행 찾아 출력)

# 지정한 패턴이 포함된 행을 검색 grep -> global regular expression print

#grep
$ grep [옵션][패턴][파일]

$ grep abc alphabet.txt
#만약 파일에 알파벳이 한 행에 5글자씩 존재한다면, abcde 를 출력

 

find : 파일 찾기

#지정된 위치에서 검색 조건에 맞는 파일 찾기 find
$ find [경로][검색 조건][동작]

# 검색 조건
# -name [파일명]
# -user [login ID] 등등

# /usr/bin 디렉토리에서 ls파일의 위치를 찾으려면
$ find /usr/bin -name ls

# 설정한 경로에 특정 사용자(user1) 가 소유자인 파일 찾기
$ find /home -user user1

 

'Linux' 카테고리의 다른 글

[Linux] 프로세스, 관리 명령, 포그라운드/백그라운드 프로세스의 작업제어, crontab  (0) 2024.12.02
[Linux] Shell , Bash, Alias  (1) 2024.10.16
[Linux] Vi 와 Vi 명령어  (0) 2024.10.13
[Linux] Unix와 Linux , GUI 와 CLI, 리눅스 기본 명령어  (0) 2024.10.12
'Linux' 카테고리의 다른 글
  • [Linux] 프로세스, 관리 명령, 포그라운드/백그라운드 프로세스의 작업제어, crontab
  • [Linux] Shell , Bash, Alias
  • [Linux] Vi 와 Vi 명령어
  • [Linux] Unix와 Linux , GUI 와 CLI, 리눅스 기본 명령어
xub2
xub2
//given //when //then
  • xub2
    xublog
    xub2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (115)
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (3)
      • Java (22)
        • Java (19)
        • Collections (3)
      • Spring (4)
        • Core (3)
        • MVC (1)
      • DataBase (6)
        • SQL (2)
        • Database Modeling (4)
      • Computer Science (28)
        • Network (22)
        • Software Engineering (3)
        • Operating System (3)
      • Algorithm (14)
        • CT (12)
      • Project (9)
        • Web (0)
        • iOS (8)
        • Python (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xub2
[Linux] 디렉토리 및 파일 명령어
상단으로

티스토리툴바