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
- 第一位表示設定使用者ID
- #第二位表示設定群組ID
- 第三位表示使用者自己的權限位元
- 第四位表示群組的權限
- #第五位表示其他人的權限
上述語句等價於:
open("test", O_CREAT , S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );
int write (int fd, const void *buf, size_t length);
- read( )實作從檔案描述子fd所指定的檔案讀取length個位元組到buf所指向的緩衝區中,傳回值為實際讀取的位元組數
- write( )實作將會將length 個位元組從buf 指向的緩衝區中寫到檔案描述符fd所指向的檔案中,傳回值為實際寫入的位元組數。
int lseek(int fd, offset_t offset, int whence);
SEEK_SET:相對檔案開頭。
SEEK_CUR:相對檔案讀寫指標的目前位置。
SEEK_END:相對文件末尾。
fopen()實作開啟指定檔案filename,其中的mode為開啟模式,Linux系統不區分二進位和文字檔。
- r、rb 以唯讀方式開啟
#
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檔案系統目錄結構
#/bin----存放著最常用的基本指令,如ls 、cp、mkdir 等,這個目錄中的檔案都是可執行的。
/boot----啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,如vmlinuz、initrd.img
#/dev----裝置檔案儲存目錄,應用程式透過對這些文件的讀寫和控制就可以存取實際的設備。
/etc----系統管理所需的設定檔和子目錄,如使用者帳號及密碼設定文件。
/home----一般使用者的家目錄,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的帳號命名的。
/lib----庫檔案存放目錄,系統最基本的動態連線共用程式庫,類似Windows裡的DLL檔。
/lost found----一般情況下是空的,當系統意外崩潰或機器意外關機時會產生一些文件碎片放在這裡。
/mnt----方便使用者暫時掛載別的檔案系統的,如將光驅掛載在/mnt/上,進入該目錄就可以查看光碟機裡的內容
media----自動辨識一些設備掛載到這個目錄下,例如USB、光碟機等等。
/opt----給主機額外安裝軟體所存放的目錄
/proc----作業系統執行時,進程及核心資訊(如CPU、硬碟分割區、記憶體資訊等)就存放在這裡。它是系統記憶體的映射,存在在內存,透過直接存取這個目錄來獲取系統資訊。
/root----超級權限使用者的家目錄
/sbin----超級權限使用者的可執行指令存放目錄,一般使用者無權限執行這個目錄下的指令
-
#/tmp-----存放暫存檔案。
/usr-----系統應用程式與檔案(如指令、說明檔)存放程式的目錄,類似windows下的program files目錄。
/var-----經常被修改的目錄放在這個目錄下,如日誌檔案
/sys----核心裝置樹的一個直覺反映。當一個核心物件被創建的時候,對應的檔案和目錄也在核心物件子系統中被建立。
/initrd---若在啟動過程中使用了initrd 映像作為暫存根檔案系統,則在執行完其上的/linuxrc掛接真正的根檔案系統後,原來的初始RAM檔案系統被對應到/initrd目錄。
Linux檔案系統與裝置驅動程式
相關建議:
python檔案讀寫作業與linux shell變數指令互動執行的方法
以上是Linux檔案操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)
