cari

Linux文件操作

Sep 13, 2018 pm 06:24 PM
linux

本文实例讲述了python文件读写操作与linux shell变量命令交互执行的方法。分享给大家供大家参考。具体如下:

文件操作的相关系统调用

创建

int creat(const char *filename, mode_t mode);
参数mode 指定新建文件的存取权限,它同umask 一起决定文件的最终权限(mode&umask),其中umask 代表了文件在创建时需要去掉的一些存取权限,它只影响读、写和执行权限,调用函数为int umask(int newmask)。

 

打开

int open(const char *pathname, int flags);
pathname是我们要打开的文件名(包含路径名称,默认在当前路径下)

flags打开的标志

  • O_RDONLY 以只读的方式打开文件


  • O_WRONLY 以只写的方式打开文件


  • O_RDWR 以读写的方式打开文件


  • O_APPEND 以追加的方式打开文件


  • O_CREAT 创建一个文件


  • O_EXEC 如果使用了O_CREAT而且文件已经存在,就会发生一个错误


  • O_NOBLOCK 以非阻塞的方式打开一个文件


  • O_TRUNC 如果文件已经存在,则删除文件的内容

int open(const char *pathname,int flag,mode_t mode)

当flag为O_CREATE,指定mode标志,用来表示文件的访问权限

  • S_IRUSR 用户可以读


  • S_IWUSR 用户可以写


  • S_IXUSR 用户可以执行


  • S_IRWXU 用户可以读、写、执行


  • S_IRGRP 组可以读


  • S_IWGRP 组可以写


  • S_IXGRP 组可以执行


  • S_IRWXG 组可以读、写、执行


  • S_IROTH 其他人可以读


  • S_IWOTH 其他人可以写


  • S_IXOTH 其他人可以执行


  • S_IRWXO 其他人可以读、写、执行


  • S_ISUID 设置用户的执行ID


  • S_ISGID 设置组的执行ID

mode标志也可以用数字来表示文件权限:

每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。

  • 第一位表示设置用户ID


  • 第二位表示设置组ID


  • 第三位表示用户自己的权限位


  • 第四位表示组的权限


  • 第五位表示其他人的权限

open("test", O_CREAT, 10705);
上述语句等价于:
open("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );

 

读写

int read(int fd, const void *buf, size_t length);
int write(int fd, const void *buf, size_t length);

参数fd文件描述符,buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位),返回值为实际读取和写入的字节数。

  • read( )实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数


  • write( )实现将把length 个字节从buf 指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。

 

定位

对于随机文件,我们可以随机地指定位置读写:
int lseek(int fd, offset_t offset, int whence);

lseek()将文件读写指针相对whence移动offset(可取负值)个字节。操作成功时,返回文件指针相对于文件头的位置。

参数whence可以使用如下值:
SEEK_SET:相对文件开头。
SEEK_CUR:相对文件读写指针的当前位置。
SEEK_END:相对文件末尾。
 

关闭

int close(int fd);

 

C库函数的文件操作——独立于具体的操作系统平台

创建和打开

FILE *fopen(const char *path, const char *mode);
fopen()实现打开指定文件filename,其中的mode为打开模式,Linux 系统不区分二进制文件和文本文件。

mode的值

  • r、rb 以只读方式打开


  • w、wb 以只写方式打开。如果文件不存在,则创建该文件,否则文件被截断


  • a、ab 以追加方式打开。如果文件不存在,则创建该文件


  • r+、r+b、rb+ 以读写方式打开


  • w+、w+b、wh+ 以读写方式打开。如果文件不存在,则创建新文件,否则文件被截断


  • a+、a+b、ab+ 以读和追加方式打开。如果文件不存在,则创建新文件

 

读写

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);

  • fread()实现从stream中读取n 个字段,每个字段为size个字节,并将读取的字段放入ptr 所指的字符数组中,返回实际已读取的字段数。


  • write()实现从缓冲区ptr 所指的数组中把n 个字段写到stream 中,每个字段长为size个字节,返回实际写入的字段数。

 

 

关闭

int fclose (FILE *stream);

 

 

Linux文件系统目录结构

003vPl7Rty6E8kZRlAEdc690.jpg

  • /bin----存放着最经常使用的基本命令,如ls、cp、mkdir 等,这个目录中的文件都是可执行的。


  • /boot----启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,如vmlinuz、initrd.img 


  • /dev----设备文件存储目录,应用程序通过对这些文件的读写和控制就可以访问实际的设备。


  • /etc----系统管理所需要的配置文件和子目录,如用户账号及密码配置文件。


  • /home----普通用户的家目录,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。


  • /lib----库文件存放目录,系统最基本的动态连接共享库,类似于Windows里的DLL文件。


  • /lost+found----一般情况下是空的,当系统意外崩溃或机器意外关机时会产生一些文件碎片放在这里。


  • /mnt----方便用户临时挂载别的文件系统的,如将光驱挂载在/mnt/上,进入该目录就可以查看光驱里的内容


  • media----自动识别一些设备挂载到这个目录下,例如U盘、光驱等等。


  • /opt----给主机额外安装软件所存放的目录


  • /proc----操作系统运行时,进程及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。它是系统内存的映射,存在在内存,通过直接访问这个目录来获取系统信息。


  • /root----超级权限用户的家目录


  • /sbin----超级权限用户的可执行命令存放目录,普通用户无权限执行这个目录下的命令


  • /tmp-----存放临时文件。


  • /usr-----系统应用程序和文件(如命令、帮助文件)存放程序的目录,类似于windows下的program files目录。


  • /var-----经常被修改的目录放在这个目录下,如日志文件


  • /sys----内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。


  • /initrd---若在启动过程中使用了initrd 映像作为临时根文件系统,则在执行完其上的/linuxrc挂接真正的根文件系统后,原来的初始RAM文件系统被映射到/initrd目录。

 

Linux文件系统与设备驱动

相关推荐:

linux 父目录权限影响子目录文件操作

python文件读写操作与linux shell变量命令交互执行的方法

 

 

Atas ialah kandungan terperinci Linux文件操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Mod Penyelenggaraan Linux: Alat dan TeknikMod Penyelenggaraan Linux: Alat dan TeknikApr 10, 2025 am 09:42 AM

Dalam sistem Linux, mod penyelenggaraan boleh dimasukkan dengan menekan kekunci tertentu pada permulaan atau menggunakan arahan seperti "sudosystemctlrescue". Mod penyelenggaraan membolehkan pentadbir melakukan penyelenggaraan sistem dan penyelesaian masalah tanpa gangguan, seperti membaiki sistem fail, menetapkan semula kata laluan, menampal kelemahan keselamatan, dll.

Operasi Linux Utama: Panduan PemulaOperasi Linux Utama: Panduan PemulaApr 09, 2025 pm 04:09 PM

Pemula Linux harus menguasai operasi asas seperti pengurusan fail, pengurusan pengguna dan konfigurasi rangkaian. 1) Pengurusan Fail: Gunakan arahan MKDIR, Touch, LS, RM, MV, dan CP. 2) Pengurusan Pengguna: Gunakan perintah USERADD, PASSWD, USERDEL, dan USERMOD. 3) Konfigurasi Rangkaian: Gunakan perintah IFConfig, Echo, dan UFW. Operasi ini adalah asas pengurusan sistem Linux, dan menguasai mereka dengan berkesan dapat menguruskan sistem.

Bagaimanakah saya menggunakan sudo untuk memberikan keistimewaan yang tinggi kepada pengguna di Linux?Bagaimanakah saya menggunakan sudo untuk memberikan keistimewaan yang tinggi kepada pengguna di Linux?Mar 17, 2025 pm 05:32 PM

Artikel ini menerangkan cara menguruskan keistimewaan sudo di Linux, termasuk pemberian, pembatalan, dan amalan terbaik untuk keselamatan. Fokus utama adalah pada penyuntingan /etc /sudoers dengan selamat dan mengehadkan akses.Character Count: 159

Bagaimanakah saya melaksanakan pengesahan dua faktor (2FA) untuk SSH di Linux?Bagaimanakah saya melaksanakan pengesahan dua faktor (2FA) untuk SSH di Linux?Mar 17, 2025 pm 05:31 PM

Artikel ini menyediakan panduan untuk menubuhkan dua faktor Pengesahan (2FA) untuk SSH di Linux menggunakan Google Authenticator, perincian pemasangan, konfigurasi, dan langkah penyelesaian masalah. Ia menyoroti manfaat keselamatan 2FA, seperti Sec yang dipertingkatkan

Bagaimanakah saya memantau prestasi sistem di Linux menggunakan alat seperti Top, HTOP, dan VMSTAT?Bagaimanakah saya memantau prestasi sistem di Linux menggunakan alat seperti Top, HTOP, dan VMSTAT?Mar 17, 2025 pm 05:28 PM

Artikel ini membincangkan menggunakan Top, HTOP, dan VMSTAT untuk memantau prestasi sistem Linux, memperincikan ciri unik dan pilihan penyesuaian mereka untuk pengurusan sistem yang berkesan.

Bagaimanakah saya menguruskan pakej perisian di Linux menggunakan pengurus pakej (APT, YUM, DNF)?Bagaimanakah saya menguruskan pakej perisian di Linux menggunakan pengurus pakej (APT, YUM, DNF)?Mar 17, 2025 pm 05:26 PM

Artikel membincangkan menguruskan pakej perisian di Linux menggunakan APT, YUM, dan DNF, yang meliputi pemasangan, kemas kini, dan penyingkiran. Ia membandingkan fungsi dan kesesuaian mereka untuk pengagihan yang berbeza.

Bagaimanakah saya menggunakan Ekspresi Biasa (Regex) di Linux untuk pemadanan corak?Bagaimanakah saya menggunakan Ekspresi Biasa (Regex) di Linux untuk pemadanan corak?Mar 17, 2025 pm 05:25 PM

Artikel ini menerangkan cara menggunakan Ekspresi Biasa (Regex) di Linux untuk pencocokan corak, carian fail, dan manipulasi teks, memperincikan sintaks, arahan, dan alat seperti grep, sed, dan awk.

Bagaimana saya mengkonfigurasi rangkaian di Linux (IP statik, DHCP, DNS)?Bagaimana saya mengkonfigurasi rangkaian di Linux (IP statik, DHCP, DNS)?Mar 14, 2025 pm 04:55 PM

Artikel ini menyediakan panduan untuk mengkonfigurasi rangkaian Linux, memberi tumpuan kepada penubuhan konfigurasi IP statik, DHCP, dan DNS. Ia memperincikan langkah -langkah untuk mengedit fail konfigurasi dan memulakan semula perkhidmatan rangkaian untuk menggunakan perubahan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini