struct stat { dev_t st_dev; /* node*/ mode_t st_mode; /* 하드 링크*/ uid_t st_uid; 그룹 ID */ dev_t st_rdev; /* 장치 유형 */ off_t st_off; /* 파일의 바이트 수*/ unsigned long st_blksize; /* 블록 수*/ time_t st_atime; /* 마지막 수정 시간* / time_t st_ctime; /* 마지막 변경 시간(속성 참조) */};이러한 속성에 대해 하나씩 알아보겠습니다. 특정 파일의 속성을 보려면 다음을 사용하세요.
통계명령을 실행하면 위 구조에 따라 정보가 나열됩니다. 게다가,
ㅋㅋㅋ이 명령은 다음과 같은 특정 매개변수를 따른 후에 파일의 관련 속성을 표시할 수도 있습니다.
-엘매개변수.
파일 형식은 위에 해당합니다.
st_mode일반 파일, 기호 링크(하드 링크, 소프트 링크), 파이프 파일, 장치 파일(기호 장치, 블록 장치), 소켓 파일 등과 같은 다양한 파일 유형이 있습니다. 다양한 파일 유형은 다양한 기능과 역할에 해당합니다.
$ ls -ltotal 12drwxr-xr-x 2 루트 루트 4096 2007-12-07 20:08 Directory_fileprw-r--r-- 1 루트 루트 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1 루트 루트 3, 1 2007-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 루트 루트 1, 3 2007-12-07 21:43 null_char_dev_file-rw-r--r-- 2 루트 루트 506 2007-12-07 21:55 Regular_file-rw -r--r-- 2 루트 루트 506 2007-12-07 21:55 일반_파일_하드_linklrwxrwxrwx 1 루트 루트 12 2007-12-07 20:15 일반_파일_소프트_링크 -> 일반_파일$ stat 디렉토리_파일/ 파일: `directory_file/' 크기: 4096 블록: 8 IO 블록: 4096 디렉토리장치: 301h/769d Inode: 521521 링크: 2액세스: (0755/drwxr-xr-x) Uid: ( 0/ 루트) Gid: ( 0/ 루트)액세스: 2007-12-07 20:08:18.000000000 +0800수정: 2007- 12-07 20:08:18.000000000 +0800변경: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file 파일: `null_char_dev_file' 크기: 0 블록: 0 IO 블록: 4096자 특수 파일장치: 301h/769d Inode: 521240 링크: 1 장치 유형: 1,3액세스: (0644/crw-r--r--) Uid: ( 0/ 루트) Gid: ( 0/ 루트) 액세스: 2007-12-07 21 :43:38.000000000 +0800수정: 2007-12-07 21:43:38.000000000 +0800변경: 2007-12-07 21:43:38.000000000 +0800
설명: 합격
ㅋㅋㅋ명령 결과의 각 줄의 첫 번째 문자가 서로 다른 것을 볼 수 있으며 이는 단지 다른 파일 유형을 반영할 뿐입니다.
디디렉토리를 나타냅니다.
-일반 파일(또는 하드 링크)을 나타냅니다.
엘심볼릭 링크를 나타냅니다.
피파이프라인 파일을 나타냅니다.
비그리고
기음각각 블록 장치와 문자 장치를 나타냅니다.
에스표현하다
소켓문서). 존재하다
통계명령의 결과에서 위의 작업에서 볼 수 있듯이 두 번째 줄 끝에서 설명을 찾을 수 있습니다.
디렉토리_파일디렉토리입니다,
통계명령 결과에 사용됨
예배 규칙서대표하고,
null_char_dev_file그것은 사용한다
캐릭터 특수 파일설명하다.
일반적으로 디렉터리, 일반 파일, 심볼릭 링크만 사용되며 다른 유형의 파일은 거의 발견되지 않습니다. 그러나 이러한 파일은 여전히 자체 용도가 있습니다. 임베디드 개발이나 프로세스 통신 등을 수행하는 경우 장치 파일, 명명된 파이프 (FIFO). 다음은 이들 간의 차이점을 반영하는 간단한 작업입니다(구체적인 원리는 다음 섹션 "쉘 프로그래밍 패러다임 파일 시스템"에서 소개됩니다. 관심이 있는 경우 미리 온라인에 접속하여 장치 파일의 역할을 찾을 수도 있습니다. , 블록 장치와 문자 장치의 차이점, 드라이버에 관련 장치 드라이버를 작성하는 방법 등).
일반 파일의 경우: 문자 모음이므로 읽고 쓸 수 있습니다.
$ echo hello, 세계 > 정규_파일$ cat 정규_파일hello, 세계
디렉터리에 새 파일이 생성될 수 있으므로 디렉터리를 폴더라고도 합니다. 디렉터리 파일의 구조는 실제로 그 아래에 각 파일의 이름을 저장합니다.
$ cd 디렉토리_파일$ 터치 파일1 파일2 파일3
명명된 파이프의 경우 작업이 더 흥미롭습니다. 읽으려는 경우 내용이 없으면 차단되고, 쓰려는 경우 누군가 읽지 않는 한 차단됩니다. 일반적으로 프로세스 통신에 사용됩니다. 두 개의 터미널을 열 수 있습니다
제1터미널그리고
제2터미널, 시도해 보세요:
Terminal1$ cat fifo_pipe #처음에는 여기를 차단하고 다음 쓰기 작업이 발생할 때까지 테스트 문자열을 인쇄하지 않습니다.terminal2$ echo test > fifo_pipe
블록 디바이스는 캐릭터 디바이스, 디바이스 파일에 해당됩니다.
/dev/hda1그리고
/dev/null, USB 플래시 드라이브를 사용했거나 간단한 스크립트를 작성한 적이 있다면 이전에 이 방법을 사용했어야 합니다. :-)
$ mount hda1_block_dev_file /mnt # 하드 디스크의 첫 번째 파티션을 /mnt에 마운트합니다(마운트 원리는 다음 섹션에서 설명합니다) $ echo somefewfef > /dev/null #/dev/null은 블랙홀과 같습니다. 실종됨 일단 안으로 들어가면 모든 것이 사라집니다
마지막 두 파일은
일반_파일파일의 하드링크와 소프트링크를 읽고 쓰면 내용은 같지만 삭제하면 서로 아무런 관련이 없습니다. 전자는 원본 파일이라고 할 수 있지만 후자는 그런 파일을 가지고 있습니다.
아이노드, 그러나 실제 저장공간이 없으므로 사용을 권장합니다.
통계다음을 포함하여 둘 사이의 차이점을 확인하는 명령
블록,
아이노드동등하며 사용을 고려할 수도 있습니다.
차이점크기를 비교해보세요.
$ ls 일반_파일*ls 일반_파일* -l-rw-r--r-- 2 루트 루트 204800 2007-12-07 22:30 일반_파일-rw-r--r-- 2 루트 루트 204800 2007-12-07 22 :30 Regular_file_hard_linklrwxrwxrwx 1 루트 루트 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ rm Regular_file # 원본 파일을 삭제합니다 $ cat Regular_file_hard_link # 하드 링크가 아직 있고 내용도 남아 있습니다 fefe$ cat Regular_file_soft_linkcat: Regular_file_soft_link: 해당 파일이나 디렉터리가 없습니다
소프트링크 파일 자체는 그대로 있지만 내용 자체를 저장하지 않기 때문에 아무것도 읽을 수 없습니다. 이것이 소프트링크와 하드링크의 차이입니다.
하드 링크는 파일 시스템을 교차할 수 없지만 소프트 링크는 교차할 수 있다는 점에 유의해야 합니다. 또한 디렉토리에 대한 하드 링크를 생성하는 것도 허용되지 않습니다.
파일 형식은 Linux 파일 시스템 수준에서 위의 형식으로 구분되지만 일반 파일은 여전히 (파일 내용의 "데이터 구조"에 따라) 일반 텍스트 파일, 실행 파일 등으로 구분될 수 있습니다.
꼬마 요정문서,
odt문서,
jpg사진 형식,
교환파티션 파일,
꼬마 요정파일의 작동 원리에 관심이 있다면 참고 자료를 읽어 보는 것이 좋습니다.
꼬마 요정파일의 관련 부분인 이 부분은 임베디드 Linux 엔지니어에게 매우 중요합니다.
다양한 유형의 일반 파일에는 자체 운영 도구가 있지만 직접 읽고 쓸 수는 있습니다. 이러한 도구에 대해 먼저 언급하고 자세한 내용은 나중에 설명하겠습니다.
od: 8진수 또는 기타 형식으로 파일 내용을 "내보냅니다".
문자열: 파일의 문자를 읽습니다(인쇄 가능한 문자).
gcc,
gdb,
읽기,objdump
기다리다:꼬마 요정
파일 분석 및 처리 도구(gcc
컴파일러,gdb
디버거,읽기
ELF 파일을 분석하고,objdump` 디컴파일 도구)
또 다른 매우 중요한 명령을 추가합니다.
파일, 이 명령은 다양한 유형의 파일 속성을 보는 데 사용됩니다. 그리고
통계명령과 비교하여 일반 파일을 추가로 식별할 수 있습니다.
통계표시된 명령
일반 파일. 왜냐하면
일반 파일다양한 구조가 있을 수 있으므로 운영 체제의 지원을 받아 다르게 해석되고 다른 작업을 수행할 수 있습니다. Linux에서는 사용자가 파일 형식을 쉽게 식별할 수 있도록 파일에 특정 접미사를 추가하지만, Linux 운영 체제에서는 파일 접미사가 아닌 파일 헤더를 기준으로 다양한 형식의 파일을 식별하므로 파일 형식을 해석하기가 더욱 어렵습니다. 해당 파일. 오류가 발생하기 쉽습니다. 다음은 간략한 소개입니다
파일명령의 사용법.
$ 파일 ././: 디렉토리$ 파일 /etc/profile/etc/profile: ASCII 영어 텍스트$ 파일 /lib/libc-2.5.so/lib/libc-2.5.so: ELF 32비트 LSB 공유 객체, Intel 80386, 버전 1(SYSV), 스트립되지 않음$ 파일 /bin/test/bin/test: ELF 32비트 LSB 실행 파일, Intel 80386, 버전 1(SYSV), 동적으로 연결됨(공유 라이브러리 사용), 제거된$ 파일 /dev/hda/dev/hda: 블록 특수(3/0)$ 파일 /dev/console/dev/console: 특수 문자(5/1) $ cp /etc/profile .$ tar zcf profile.tar.gz profile$ 파일 profile.tar.gzprofile.tar.gz: Unix의 gzip 압축 데이터, 마지막 수정 날짜: 1월 4일 화요일 18:53:53 2000$ mkfifo fifo_test$ 파일 fifo_testfifo_test: fifo(이름이 지정된 파이프)
더 많은 사용법 보기
파일명령 매뉴얼, 정보
파일명령의 구현 원리는 다음을 참조하십시오.
마법설명서(보세요
/etc/파일/매직파일, 파일이 무엇인지 이해하기
매직넘버기다리다).
다중 사용자 시스템인 Linux는 여러 사용자가 동일한 시스템을 사용할 수 있는 매우 편리한 기능을 제공합니다. 예를 들어, 시스템의 파일에 대해 서로 다른 파일에 대한 운영 권한을 할당하기 위해 소유자를 통해 서로 다른 사용자를 구분합니다. 사용자는 여러 그룹에 속할 수 있으므로 관리의 용이성을 위해 파일 소유자에는 파일이 속한 사용자와 파일이 속한 사용자 그룹이 포함됩니다. 먼저, Linux에서의 사용자 및 그룹 관리에 대해 간략하게 소개하겠습니다.
Linux는 사용자 생성과 같이 사용자 및 그룹을 관리하기 위한 명령 세트를 제공합니다.
사용자 추가그리고
그룹 추가, 사용자를 삭제하는 데 사용됨
사용자델그리고
그룹델,게다가,
비밀번호이 명령은 사용자 비밀번호를 변경하는 데 사용됩니다. 물론 Linux는 두 가지 해당 구성도 제공합니다.
/etc/passwd그리고
/etc/그룹또한 일부 시스템에서는 구성 파일에 비밀번호를 별도로 입력하기도 합니다.
/etc/shadow가운데. 자세한 사용법은 다음 정보를 참조하세요. 여기서는 파일과 사용자 간의 일부 관계만 소개합니다.
$ chown 사용자 이름:그룹 이름 파일 이름
디렉터리에 있는 모든 파일의 소유자를 반복적으로 수정하려면 다음을 추가하면 됩니다.
-아르 자형옵션.
이 섹션의 시작 부분에 나열된 파일 구조에서 사용자만 있음을 알 수 있습니다.
ID및 그룹
ID정보이지만,
ls -l결과에는 사용자 이름과 그룹 이름 정보가 표시됩니다. 먼저 살펴보겠습니다
-N결과:
$ ls -n 정규_파일-rw-r--r-- 1 0 0 115 2007-12-07 23:45 정규_파일$ ls -l 정규_파일-rw-r--r-- 1 루트 루트 115 2007-12-07 23:45 일반_파일
보시다시피,
ls -n표시된 사용자
ID및 그룹
ID,그리고
ls -l그들의 이름이 표시됩니다. 위에서 언급한 두 가지 구성 파일을 기억하세요.
/etc/passwd그리고
/etc/그룹파일? 그들은 각각 사용자를 저장합니다
ID사용자 이름, 그룹
ID그룹명과 대응관계가 있어서 생각하기 쉽습니다.
ls -l구현 시 명령이 파일 구조를 통과하는 방법
ID정보는 해당 이름 정보를 찾습니다. 당신이 옳고 싶다면
ls -l명령 구현을 더 잘 이해하려면 다음을 사용할 수 있습니다.
스트레이스두 구성 파일을 모두 읽는지 추적하여 확인합니다.
$ strace -f -o strace.log ls -l Regular_file$ cat strace.log | egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
설명하다:
스트레이스시스템 호출 및 신호를 추적하는 데 사용할 수 있습니다. ~처럼
gdb다른 강력한 도구와 마찬가지로 시스템을 기반으로 합니다.
ptrace시스템 호출 구현.
사실 소유자와 권한을 별도로 도입하는 것은 좋지 않습니다. 둘의 조합만으로도 다중 사용자 시스템이 가능하기 때문입니다. 그렇지 않으면 특정 파일에 대해 서로 다른 사용자의 작업을 격리할 수 없으므로 파일 작업이 권한은 아래에 소개되어 있습니다.
~에서
ls -l명령 결과의 첫 번째 열의 마지막 9자에서 다음과 유사한 정보를 볼 수 있습니다.
rwxr-xr-x, 이는 파일 구조에 해당합니다.
st_mode부분(
st_mode파일 형식 정보와 파일 권한 정보의 두 부분으로 구성됩니다. 이러한 유형의 정보는 세 부분으로 나눌 수 있습니다.
wx,
RX,
RX, 각각 해당 파일이 속한 파일에 대한 사용자, 그룹 및 기타 그룹의 작업 권한에 해당합니다.
wx둘 중 하나는 읽기 가능, 쓰기 가능, 실행 가능을 의미합니다.
-해당 권한이 없음을 나타냅니다. 이에 따라 다음과 같이 8진수로 표현될 수 있습니다.
rwxr-xr-x2진수 111101101로 표현할 수 있고, 해당 8진수는 755이다. 이 때문에 파일의 작업 권한을 수정하는 방법은 여러 가지가 있으며 모두 다음을 통해 수행할 수 있습니다.
chmod수정하라는 명령입니다.
예를 들어
일반_파일모든 사용자가 읽고, 쓰고, 실행할 수 있도록 파일 권한을 수정합니다.
rwxrwxrwx, 111111111로 표현할 수도 있고 8진수로 번역하면 777입니다. 이 권한은 두 가지 방법으로 수정할 수 있습니다.
$ chmod a+rwx 일반_파일
또는
$ chmod 777 일반_파일
설명하다:
에이사용된 사용자를 참조합니다. 사용자에게 읽기, 쓰기 및 실행 권한만 부여하려는 경우 다음을 수행할 수 있습니다.
에이다음으로 교체
유;그리고
+권한을 추가하면 됩니다. 반대로 특정 권한을 제거하려면 다음을 사용하세요.
-,그리고
wx읽기 가능, 쓰기 가능, 실행 가능에 해당합니다. 더 많은 사용법 보기
chmod명령 도움말.
실제로 이러한 권한 외에도 보안과 관련된 두 가지 권한이 더 있습니다.
setuid/setgid읽기 전용 제어 등
파일(프로그램 또는 명령)이 설정된 경우
setuid/setgid권한이 있으면 사용자는 다음을 수행할 수 있습니다.
뿌리따라서 이로 인해 보안 위험이 발생할 수 있습니다. 파일에 대한 읽기 전용 권한이 설정된 경우 사용자는 파일에 대해 읽기 가능한 권한만 가지게 되어 다음과 같은 상황을 방지할 수 있습니다.
rm -rf"가증스러운" 작전은 특정한 축복을 가져옵니다.
기본적으로 시스템은 일반 사용자의 실행을 허용하지 않습니다.
비밀번호명령, 통과
setuid/setgid, 일반 사용자는 이를 실행할 수 있는 권한을 부여받을 수 있습니다.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ su #루트 사용자로 전환하고 " 고정 비트"를 추가합니다. $ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ exit$ passwd #일반 사용자는 이 명령을 실행하여 비밀번호를 수정할 수 있습니다.
설명하다:
세트이드그리고설정비트는 일반 사용자가뿌리사용자의 역할은 실행만 수행됩니다.뿌리계정으로만 실행할 수 있는 프로그램이나 명령입니다.
이는 어느 정도 관리의 편의성을 제공하지만, 예를 들어 위의 작업을 통해 일반 사용자는 계정을 수정하는 대신 계정을 수정할 수 있습니다.
뿌리각 사용자에 대해 이 작업을 수행하는 계정입니다. ~에 대한
setuid/setgid자세한 설명은 마지막 추천정보를 참고해주세요.
읽기 전용 권한의 예: 다양한 오작동(예:
:``rm -rf)
$ chattr +i 일반_파일$ lsattr 일반_파일----i-------- 일반_파일$ rm 일반_파일 # 불변 비트를 추가한 후에는 파일에 대해 "파괴적인" 활동을 수행할 수 없습니다. rm: 쓰기 방지 제거. 일반 파일 `regular_file'? yrm: `regular_file'을 제거할 수 없습니다: 작업이 허용되지 않습니다$ chattr -i Regular_file #일반 작업을 수행하려면 이 비트를 제거할 수 있습니다$ rm Regular_file
설명하다:
채팅파일에 대한 특별한 권한을 설정하는 데 사용할 수 있습니다. 자세한 사용법은 다음을 참조하세요.
채팅돕다.
일반 파일의 경우 파일 크기는 파일 내용의 크기입니다. 특수 파일로서 다양한 파일 정보가 디렉토리 구조로 구성되어 저장되므로 일반적으로 파일 수는 고정되어 있습니다. 즉, 크기를 파일 이름의 길이로 나눈 값입니다. 장치 파일의 "파일 크기"는 장치의 주요 및 부 장치 번호에 해당하며 유명한 파이프 파일의 크기는 특수한 읽기 및 쓰기 속성으로 인해 항상 0입니다. 하드 링크(디렉터리 파일은 하드 링크를 만들 수 없음)는 기본적으로 원본 파일의 완전한 복사본이므로 해당 크기는 원본 파일의 크기와 같습니다. 소프트 링크는 단지
아이노드, 원본 파일에 대한 포인터를 저장하므로 크기는 원본 파일 이름의 바이트 수에 불과합니다. 다음으로 시연을 통해 메모리를 늘립니다.
원본 파일 및 링크된 파일의 파일 크기 예:
$ echo -n abcde > Regular_file #regular_file에 5바이트 쓰기 $ ls -l Regular_file*-rw-r--r-- 2 root root 5 2007-12-08 15:28 Regular_file-rw-r--r -- 2 루트 루트 5 2007-12-08 15:28 Regular_file_hard_filerwxrwxrwx 1 루트 루트 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 루트 루트 22 2007-12-08 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# j} #소프트 링크는 자신이 가리키는 원본 파일의 파일 이름 바이트 수를 정확히 저장합니다. 12 22장치 번호에 해당하는 파일 크기: 메이저 및 마이너 장치 번호
$ ls -l hda1_block_dev_filebrw-r--r-- 1 루트 루트 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 루트 루트 1, 3 2007-12-07 21:43 null_char_dev_file
보충: 메인
(주), 회(부) 장치 번호에는 다른 기능이 있습니다. 장치 파일이 열리면 커널은 주요 장치 번호(
메이저 번호) 커널에 주요 장치 번호로 등록된 드라이버를 찾으려면(다음을 수행할 수 있음)
고양이 /proc/장치등록된 드라이버 번호와 주요 장치 번호) 및 보조 장치 번호(
마이너 번호)은 커널을 통해 드라이버 자체에 전달됩니다("Linux 입문서"의 10장 참조). 따라서 커널의 경우 해당 드라이버를 찾아 주요 장치 번호를 통해 장치를 식별할 수 있고, 드라이버의 경우 장치의 다른 부분(예: 파티션을 통해 여러 부분으로 나누어진 하드웨어) 부분, 나타남
hda1,
hda2,
hda3등), 예를 들어 요구 사항이 다른 난수 생성(예:
/dev/무작위그리고
/dev/urandom기다리다).
디렉토리 파일의 크기, 왜 이럴까요? 아래 디렉터리 구조의 크기를 살펴보세요. 디렉터리 파일의 블록은 디렉터리의 모든 파일 이름에 대한 항목을 저장합니다.
$ ls -ld 디렉토리_파일/drwxr-xr-x 2 루트 루트 4096 2007-12-07 23:14 디렉토리_파일/
디렉토리의 구조는 다음과 같습니다.
struct dirent { long d_ino; off_t d_off; unsigned short d_reclen[NAME_MAX+1] /* 파일 이름파일의 시간 속성은 파일에 대한 사용자의 작업 정보를 기록할 수 있으며 관리자가 시스템 관리, 파일 버전 정보 확인 등에 참조할 수 있는 정보를 제공합니다. 따라서 문서를 읽을 때 다음을 사용하는 것이 좋습니다.
고양이읽기 도구를 기다리세요. 편집 도구를 사용하지 마세요.
정력읽어보세요. 수정 작업을 하지 않더라도 저장 명령이 실행되면 파일의 타임스탬프 정보가 수정되기 때문입니다.
파일 이름은 파일 구조에 저장되지 않고 해당 파일이 위치한 디렉터리 구조에 저장됩니다. 따라서 파일 이름은 동일한 디렉터리 수준 내에서 고유해야 합니다.
파일의 경우 일반적인 작업에는 생성, 삭제, 수정, 읽기, 쓰기 등이 포함됩니다. 다양한 작업에 해당하는 "비하인드 스토리 작업"은 다음 장 "쉘 프로그래밍 패러다임 파일 시스템 작업"에서 자세히 분석됩니다.
소켓파일은 C 언어를 통해 생성할 수 있는 특수한 형태의 파일이다. 여기서는 소개하지 않는다(명령어를 사용하여 직접 생성할 수 있는지는 알 수 없다).
$ touch Regular_file # 일반 파일 만들기 $ mkdir Directory_file # 더 많은 파일을 포함할 수 있는 디렉터리 파일 만들기 $ ln Regular_file Regular_file_hard_link # 하드 링크, 원본 파일의 전체 복사본 $ ln -s Regular_file Regular_file_soft_link # 파일 포인터와 유사 , 원본 파일 $ mkfifo fifo_pipe # 또는 mknod fifo_pipe p를 통해 생성된 FIFO는 선입선출 특성을 충족합니다. $ mknod hda1_block_dev_file b 3 1 #블록 장치 $ mknod null_char_dev_file c 1 3 #문자 장치
파일을 생성하면 실제로 파일 시스템에 노드가 추가됩니다(
inode) 노드 정보는 파일 시스템의 노드 테이블에 저장됩니다. 좀 더 직설적으로 말하면 나무에 새 잎(파일)이나 가지(디렉토리 파일, 잎이 자라는 종류)가 자라는 것을 의미할 수 있습니다.나무
명령 또는ls 명령은 시각적으로 표시됩니다. 일상적인 사용의 관점에서 파일 시스템은 매우 유사하고 기억하기 쉽기 때문에 역트리로 볼 수 있습니다.
$ 트리 현재 디렉토리
또는
$ ls 현재 디렉토리
파일 삭제의 가장 직접적인 인상은 파일이 더 이상 존재하지 않는다는 것입니다.
ㅋㅋㅋ또는
나무이 명령은 나무에서 가지가 잘리는 것처럼, 나뭇잎이 뽑히는 것처럼 제시됩니다. 실제로 이러한 파일은 삭제 후 바로 사라지는 것이 아니라 삭제 표시만 되어 있기 때문에, 삭제 후 해당 디스크 공간을 "덮어주는" 관련 디스크 쓰기 작업이 없으면 원칙적으로 복구가 가능합니다. , 이러한 작업은 번거로운 경우가 많으므로 백업 작업 등 중요한 데이터를 삭제하기 전에 다시 한 번 생각해 보시기 바랍니다.) 해당 방법은 이후 안내를 참조하시기 바랍니다.
파일을 삭제하는 특정 명령은 다음과 같습니다.
RM, 빈 디렉토리를 삭제하려면 다음을 사용할 수 있습니다.
rmdir주문하다. 예를 들어:
$ rm 일반_파일$ rmdir 디렉토리_파일$ rm -r 디렉토리_파일_not_empty
RM두 가지 매우 중요한 매개변수가 있는데, 그 중 하나는
-에프, 이 명령은 매우 "야만적"이며 아마도 많은 Linux 사용자에게 고통을 안겨줄 것입니다.
-나, 이 명령은 매우 "부드럽습니다". 아마도 많은 사용자가 짜증을 느낄 것입니다. 어떤 것을 사용하는지는 귀하의 "기분"에 따라 다릅니다. 적절한 백업 작업을 수행했거나 치명적인 결과를 피하기 위해 효과적인 조치를 취했다면 이러한 작업을 수행할 때 더 편안함을 느낄 수 있습니다.
파일 복사는 일반적으로 파일 내용의 "임시" 복사본을 의미합니다. 이 섹션 시작 부분의 소개를 통해 파일의 하드 링크와 소프트 링크도 어떤 의미에서는 "파일 복사"라는 점을 이해해야 합니다. 읽기 및 쓰기의 경우 "파일 내용. 예를 들어:
사용
CP파일을 정상적으로 복사하는 명령(디렉토리를 복사하려면
-아르 자형옵션)
$ cp 일반_파일 일반_파일_복사$ cp -r 디렉토리_파일 디렉토리_파일_복사
하드 링크 생성(
링크그리고
복사차이점은 후자는 동기적으로 업데이트되지만 전자는 복사한 후에는 더 이상 관련이 없다는 점입니다.
$ ln 일반_파일 일반_파일_하드_링크
소프트 링크 생성
$ ln -s 일반_파일 regluar_file_soft_link
파일 이름을 수정하면 실제로는 파일 이름 식별자만 수정됩니다. 통과할 수 있다
mv파일 이름을 수정하는 명령(예: 이름 바꾸기)
$ mv 정규_파일 정규_파일_새_이름
파일 편집은 실제로 파일 내용을 조작하는 것으로, 이는 주로 파일 내용 읽기, 쓰기, 추가, 삭제 등을 포함합니다. 이러한 작업은 일반적으로 명령줄 편집기와 같은 특수 편집기를 통해 수행됩니다.
정력,
이맥스및 그래픽 인터페이스
지디트,케디트기다리다. 특정 파일인 경우 이미지 처리 소프트웨어와 같은 특수 편집 및 처리 도구가 있습니다.
단, 문서 편집 소프트웨어
오픈오피스기다리다. 이러한 도구에는 일반적으로 전용 튜토리얼이 있습니다.
다음은 Linux에서 리디렉션을 통한 일반적인 파일 편집 작업에 대한 간략한 소개입니다.
파일을 만들고 쓰기
ABCDE
$ echo abcde > new_regular_file
위 파일에 다른 줄을 추가하세요
ABCDE
$ echo abcde >> new_regular_file
파일을 한 줄씩 읽기
$ LINE을 읽는 동안 do echo $LINE;
팁: 리디렉션이 포함된 문자열 변수를 명령으로 실행하려면 다음을 사용하세요.
평가그렇지 않으면 리디렉션을 해석할 수 없습니다. 예를 들어,
$ 리디렉션=echo abcde >test_redirect_file$ $redirect #여기 >는 리디렉션으로 해석되는 대신 > 문자로 인쇄됩니다. abcde >test_redirect_file$ eval $redirect #이것은 >를 리디렉션$으로 해석합니다. cat test_redirect_fileabcde
파일을 압축하고 압축을 푸는 것은 어떤 의미에서는 파일 내용의 전송을 용이하게 하기 위한 것이지만 커널 및 파일 시스템 이미지 파일 등과 같은 특정 용도도 있을 수 있습니다. (자세한 관련 지식은 후속 자료를 참조하십시오)
다음은 몇 가지 일반적인 압축 및 압축 해제 방법입니다.
타르
$ tar -cf file.tar 파일 #압축 $ tar -xf file.tar #압축해제
gz
$ gzip -9 파일 $ gunzip 파일
tar.gz
$ tar -zcf 파일.tar.gz 파일$ tar -zxf 파일.tar.gz
bz2
$ bzip2 파일$ bunzip2 파일
tar.bz2
$ tar -jcf 파일.tar.bz2 파일$ tar -jxf 파일.tar.bz2
위의 시연을 통해 매우 명확해집니다.
타르,
bzip2,bunzip2,
gzip,총집합
지휘하는 역할인가? 아직 명확하지 않다면 더 많은 작업을 수행하고 위 명령 중 일부를 비교하고 해당 설명서를 확인하세요.타르야...
파일 검색은 특정 디렉토리 계층의 파일 시스템에서 특정 속성을 가진 파일의 위치를 찾는 것을 의미합니다. 이 위치를 전체 네트워크로 확장하면 다음과 같이 표현할 수 있습니다.
URL로컬 주소의 경우 주소는 다음과 같이 표현될 수 있습니다.
파일://+로컬 경로. Linux 시스템의 로컬 경로는 다음으로 시작합니다.
/예를 들어, 각 사용자의 홈 디렉터리는 다음과 같이 나타낼 수 있습니다.
파일:///홈/. 다음은 로컬 파일 검색의 몇 가지 방법만을 소개합니다.
찾다이 명령은 사용자의 요청에 따라 필요한 파일을 찾을 때까지 지정된 디렉터리 계층의 모든 파일을 검색하는 "적시" 검색 방법을 제공합니다. 그리고
업데이트됨+찾기"빠른" 검색 전략을 제공합니다.
업데이트됨로컬 파일 데이터베이스를 업데이트하고 생성하는 동시에
위치하고 있다해당 파일을 빠르게 찾으려면 파일 이름으로 이 데이터베이스를 검색하세요. 전자는 다양한 파일 속성을 통한 검색을 지원하고 인터페이스(
-exec옵션)은 검색된 파일을 처리하는 데 사용됩니다. 따라서 "단일 명령" 스크립트 팬에게는 큰 편의성을 제공하지만, 파일 이름을 기반으로 검색하는 경우에는
업데이트됨+찾기이 방법은 검색 효율성을 크게 향상시킵니다. 다음은 이 두 가지 방법에 대한 간략한 소개입니다.
찾다기본 명령 사용법 시연
$ find ./ -name *.c -o -name *.h # 모든 C 언어 파일 찾기, -o is 또는 $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# 찾은 파일을 c_files로 이동합니다. 이 사용법은 매우 흥미롭습니다.위의 사용법을 사용할 수 있습니다
xargs명령 대체
$ find ./ -name *.c -o -name *.h 명령, 예를 들어 수정해야 할 사항
모든 파일 이름 접미사를 대문자로 변경합니다.
$ find ./ -name *.c -o -name *.h | xargs -i ./toupper.sh '{}' ./c_files/toupper.sh소문자를 대문자로 변환하기 위해 구현해야 하는 처리 파일입니다. 구체적인 구현은 다음과 같습니다.
$ cat toupper.sh#!/bin/bash# {}는 현재 줄로 확장되어 이 스크립트의 첫 번째 인수가 됩니다FROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COM업데이트됨+찾기기본 사용법 시연
$ 업데이트됨 # 라이브러리 업데이트 $ 찾기 찾기*.gz # 찾기 문자열이 포함된 모든 gz 압축 패키지 찾기
실제로 위의 두 명령 외에도 Linux에는 명령 검색 도구도 있습니다.
어느그리고
어디에, 전자는 특정 명령의 전체 경로를 반환하는 데 사용되는 반면 후자는 특정 명령, 소스 파일,
man 파일의 경로입니다. 예를 들어find 명령의 절대 경로:
$ find/usr/bin/find$ 여기서 findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
내용을 기반으로 파일을 검색하려면 다음을 수행해야 합니다.
찾다그리고
업데이트됨+찾기게다가
어느,
어디에우리가 할 수 있는 일은 아무것도 없어 대안은
grep,
sed명령을 기다리면 전자가 추가됩니다.
-아르 자형앞으로는 매개변수를 사용하여 지정된 디렉터리의 파일에서 지정된 파일 콘텐츠를 검색한 다음 사용할 수 있습니다.
-나매개변수를 전달한 후 파일 내용을 바꿀 수 있습니다. 기본적인 사용법은 이전 장에서 자세히 소개되었으므로 여기서는 반복하지 않겠습니다.
이러한 명령은 파일 작업에 매우 의미가 있다는 점을 강조할 가치가 있습니다. 파일 시스템 구조를 어느 정도 추상화하여 전체 파일 시스템의 동작을 단일 파일의 동작으로 단순화하는데, 단일 파일이 텍스트 부분만 고려하면 결국 이전의 문자열 동작으로 변환되게 된다. 이전 섹션에서 논의한 내용. 파일의 조직 구조와 파일 간의 관계를보다 명확하게 이해하기 위해 다음 섹션에서 파일 시스템에 대해 자세히 설명합니다.
파일 I/O에서 Linux 가상 파일 시스템 살펴보기
Linux 파일 시스템 분석
"Linux 코어" 9장 파일 시스템
Linux 장치 드라이버, 제3판
팁: Linux I/O 리디렉션에 대한 몇 가지 팁
Intel 플랫폼에서 Linux의 ELF 파일 동적 링크 로드, 구문 분석 및 예제 분석:
1부,
2부
쉘 스크립트 디버깅 기술
ELF 파일 형식 및 프로그램 로딩 실행 과정 요약
Linux에서의 C 언어 프로그래밍 - 파일 작업
Linux에서 C 언어 프로그래밍의 파일 작업 부분
파일 시스템 계층 표준
Linux 시스템에서 삭제된 Ext3 파일을 복구하는 방법 알아보기
mc를 사용하여 삭제된 파일 복구
Linux ext3 실수로 삭제 및 복구 원칙
Linux 압축/압축 해제 방법의 전체 목록
모든 것이 바이트입니다
파일과 파일 시스템의 중요성을 고려하여 파일, 파일 시스템, 프로그램, 프로세스의 세 가지 하위 섹션으로 나누어 소개합니다. "파일" 섹션에서는 주로 파일의 기본 속성과 일반적인 동작을 소개합니다. "파일 시스템" 섹션에서는 리눅스 파일 시스템의 구조와 파일 시스템의 다양한 부분을 심도 있게 논의합니다. 특정 파일 시스템의 일반적인 구조 분석, 기본 드라이버의 작동 원리), "프로그램 및 프로세스" 섹션에서는 실행 파일의 관련 내용(다양한 프로그램 유형, 로딩 및 실행 프로세스, 서로 다른 파일 간의 상호 작용 포함)에 대해 구체적으로 설명합니다. 프로세스 [명령 파이프 및 이름 없는 파이프, 신호 통신], 프로세스 제어 등)
또한, 파일 읽기, 쓰기, 실행, 삭제, 수정, 복사, 압축/압축 풀기 등 일반적인 파일 작업을 모두 고려하는 것이 가장 좋습니다.
저는 오후에 상하이에서 돌아왔습니다. 대회 결과는 "나빴습니다". 하지만 이제 중요한 것은 결승전을 통해 많은 단점을 발견하고 시스템 개발에서 디자인의 핵심 역할을 발견했다는 것입니다. , 그리고 상하이가 아름다운 도시라는 것을 알게 되었습니다. SJTU도 아름다운 대학이었습니다. 돌아 왔을 때, 나는 경쟁으로 인해 2 주 동안 놓친이 블로그를 정리하기 시작했습니다.
12 월 15 일에 파일 검색 부분을 추가하십시오