man 手冊(cè)
1.1 漢化
安裝中文包
sudo apt-get update
sudo apt-get install manpages-zh
1.2 具體使用
//man -L zh_CN open
man 1 open
man 2 open
man 3 open
Part2文件權(quán)限
2.1 權(quán)限理解
在 Ubuntu(以及其他類(lèi) UNIX 操作系統(tǒng))中,文件權(quán)限用于控制誰(shuí)可以對(duì)文件進(jìn)行哪些操作。文件權(quán)限在權(quán)限位組合中表示為一組三位權(quán)限字符串。每個(gè)權(quán)限字符串表示了文件的所有者、組和其他用戶所具有的權(quán)限。 Ubuntu 文件權(quán)限的詳細(xì)說(shuō)明:
一個(gè)權(quán)限字符串由九個(gè)字符組成,這九個(gè)字符可以分成三組,每組三個(gè)字符:
- 第一組 :文件類(lèi)型和所有者權(quán)限
- 第二組 :組權(quán)限
- 第三組 :其他用戶權(quán)限
每組中的三個(gè)字符分別表示讀?。╮)、寫(xiě)入(w)和執(zhí)行(x)權(quán)限。如果某個(gè)權(quán)限位被授予,相應(yīng)的字符為相應(yīng)的字母,如果未授予,則為減號(hào)(-)。
以下是一個(gè)權(quán)限字符串的示例:-rwxr--r--
這個(gè)權(quán)限字符串表示:
- 文件類(lèi)型:普通文件(減號(hào)表示)
- 所有者權(quán)限:讀、寫(xiě)、執(zhí)行
- 組權(quán)限:讀
- 其他用戶權(quán)限:讀
2.2 文件詳細(xì)信息查詢
可以用 ll 命令查看當(dāng)前文件夾下文件詳細(xì)信息
img
或者查看指定文件
zsd@Ubuntu:~/study/linuxStudy$ ls -l test.c
-rw-rw-r-- 1 zsd zsd 08月 2715:34 test.c
在上面的輸出中,-rw-r--r--
就是文件的權(quán)限字符串。第一個(gè)字符 - 表示文件類(lèi)型(普通文件),d 表示隱藏文件,接下來(lái)的三個(gè)字符是所有者權(quán)限,再后面的三個(gè)字符是組權(quán)限,最后的三個(gè)字符是其他用戶權(quán)限。
2.3 權(quán)限更改
要更改文件權(quán)限,可以使用 chmod
命令。例如,要將文件 "test.c" 的所有者權(quán)限設(shè)置為讀、寫(xiě)、執(zhí)行,可以執(zhí)行以下命令:
chmod 700 test.c
這會(huì)將權(quán)限字符串修改為 -rwx------
,表示所有者擁有全部權(quán)限,其他用戶沒(méi)有任何權(quán)限。
Part3****常用函數(shù)接口
3.1 open
open
函數(shù)是一個(gè)系統(tǒng)調(diào)用,用于打開(kāi)一個(gè)文件或者創(chuàng)建一個(gè)新文件,并返回一個(gè)文件描述符(file descriptor),以便后續(xù)對(duì)文件的讀寫(xiě)操作。它是在
頭文件中聲明的,其函數(shù)原型如下:
#include < fcntl.h >
int open(const char *pathname, int flags, mode_t mode);
3.1.1open
函數(shù)的參數(shù)和作用
pathname
(文件路徑) :這是一個(gè)字符串,表示要打開(kāi)或創(chuàng)建的文件的路徑??梢允窍鄬?duì)路徑或絕對(duì)路徑。flags
(標(biāo)志位) :這是一個(gè)整數(shù),用于指定打開(kāi)文件的方式和選項(xiàng)。常見(jiàn)的標(biāo)志位包括:
這些標(biāo)志位可以通過(guò)按位或(|
)組合使用,以滿足特定的需求。例如,O_RDONLY | O_CREAT
表示以只讀方式打開(kāi)文件,如果文件不存在則創(chuàng)建。O_RDONLY
:只讀打開(kāi)。O_WRONLY
:只寫(xiě)打開(kāi)。O_RDWR
:讀寫(xiě)打開(kāi)。O_CREAT
:如果文件不存在,創(chuàng)建文件。O_TRUNC
:如果文件存在,截?cái)辔募▽⑽募笮≈脼?)。O_APPEND
:在文件末尾追加寫(xiě)入。
mode
(文件權(quán)限) :這是一個(gè)整數(shù),僅在創(chuàng)建文件時(shí)使用。它指定了新創(chuàng)建文件的權(quán)限(文件所有者、組和其他用戶的讀寫(xiě)執(zhí)行權(quán)限)。通常使用八進(jìn)制表示,如0644
表示所有者可讀寫(xiě),其他用戶只讀。
3.1.2 函數(shù)返回值
open
函數(shù)的返回值是一個(gè)整數(shù),表示文件描述符。如果成功打開(kāi)或創(chuàng)建文件,返回的文件描述符是一個(gè)非負(fù)整數(shù)。如果出現(xiàn)錯(cuò)誤,返回值為 -1,并可以使用 errno
來(lái)獲取具體的錯(cuò)誤代碼。
3.2 read
read
函數(shù)是一個(gè)系統(tǒng)調(diào)用,用于從文件描述符(file descriptor)中讀取數(shù)據(jù)。它是在
頭文件中聲明的,其函數(shù)原型如下:
#include < unistd.h >
ssize_t read(int fd, void *buf, size_t count);
3.2.1 read 函數(shù)的參數(shù)和作用
fd
(文件描述符) :這是一個(gè)整數(shù)值,表示要從哪個(gè)文件描述符讀取數(shù)據(jù)。文件描述符是一個(gè)用于標(biāo)識(shí)打開(kāi)的文件、套接字等的整數(shù)值。在代碼中,使用了open
函數(shù)來(lái)打開(kāi)文件,并將返回的文件描述符傳遞給了read
函數(shù)。buf
(緩沖區(qū)) :這是一個(gè)指向存儲(chǔ)讀取數(shù)據(jù)的內(nèi)存緩沖區(qū)的指針。read
函數(shù)會(huì)將讀取的數(shù)據(jù)存儲(chǔ)到這個(gè)緩沖區(qū)中。count
(讀取字節(jié)數(shù)) :這是要讀取的最大字節(jié)數(shù)。read
函數(shù)會(huì)嘗試從文件中讀取最多count
字節(jié)的數(shù)據(jù)。
3.2.2 函數(shù)返回值
read
函數(shù)的返回值是一個(gè) ssize_t
類(lèi)型的整數(shù),表示實(shí)際讀取的字節(jié)數(shù)。返回值可以是以下幾種情況之一:
- 如果返回值為正數(shù):表示成功讀取了指定數(shù)量的字節(jié)。
- 如果返回值為 0:表示已經(jīng)到達(dá)文件末尾(End of File,EOF)。
- 如果返回值為 -1:表示出現(xiàn)了錯(cuò)誤。可以通過(guò)檢查
errno
來(lái)獲取具體的錯(cuò)誤代碼。
3.3 write
write
函數(shù)是一個(gè)系統(tǒng)調(diào)用,用于向文件描述符(file descriptor)寫(xiě)入數(shù)據(jù)。它是在
頭文件中聲明的,其函數(shù)原型如下:
#include < unistd.h >
ssize_t write(int fd, const void *buf, size_t count);
3.3.1 write` 函數(shù)的參數(shù)和作用
fd
(文件描述符) :這是一個(gè)整數(shù)值,表示要向哪個(gè)文件描述符寫(xiě)入數(shù)據(jù)。文件描述符是一個(gè)用于標(biāo)識(shí)打開(kāi)的文件、套接字等的整數(shù)值。在代碼中,你使用了open
函數(shù)來(lái)打開(kāi)文件,并將返回的文件描述符傳遞給了write
函數(shù)。buf
(緩沖區(qū)) :這是一個(gè)指向包含要寫(xiě)入數(shù)據(jù)的內(nèi)存緩沖區(qū)的指針。write
函數(shù)會(huì)將緩沖區(qū)中的數(shù)據(jù)寫(xiě)入到文件中。count
(寫(xiě)入字節(jié)數(shù)) :這是要寫(xiě)入的字節(jié)數(shù)。write
函數(shù)會(huì)嘗試將緩沖區(qū)中的前count
字節(jié)的數(shù)據(jù)寫(xiě)入到文件中。
3.3.2 函數(shù)返回值
write
函數(shù)的返回值是一個(gè) ssize_t
類(lèi)型的整數(shù),表示實(shí)際寫(xiě)入的字節(jié)數(shù)。返回值可以是以下幾種情況之一:
- 如果返回值為非負(fù)數(shù):表示成功寫(xiě)入了指定數(shù)量的字節(jié)。
- 如果返回值為 -1:表示出現(xiàn)了錯(cuò)誤??梢酝ㄟ^(guò)檢查
errno
來(lái)獲取具體的錯(cuò)誤代碼。
3.4 close
close
函數(shù)是一個(gè)系統(tǒng)調(diào)用,用于關(guān)閉文件描述符(file descriptor)。它是在
頭文件中聲明的,其函數(shù)原型如下:
#include < unistd.h >
int close(int fd);
3.4.1 close` 函數(shù)的解析
fd
(文件描述符) :這是一個(gè)整數(shù)值,表示要關(guān)閉的文件描述符。文件描述符是一個(gè)用于標(biāo)識(shí)打開(kāi)的文件、套接字等的整數(shù)值。在代碼中,你可能使用了open
函數(shù)來(lái)打開(kāi)文件,并將返回的文件描述符傳遞給了close
函數(shù)。
3.4.2 函數(shù)返回值
close
函數(shù)的返回值是一個(gè)整數(shù)。如果關(guān)閉文件成功,返回值為 0。如果出現(xiàn)錯(cuò)誤,返回值為 -1,并可以通過(guò)檢查 errno
來(lái)獲取具體的錯(cuò)誤代碼。
3.5 函數(shù)使用示例
#include < fcntl.h > // 包含文件操作相關(guān)的頭文件
#include < unistd.h > // 包含系統(tǒng)調(diào)用相關(guān)的頭文件
#include < stdio.h > // 包含標(biāo)準(zhǔn)輸入輸出庫(kù),用于使用 perror 函數(shù)
int main() {
// 打開(kāi)源文件,只讀方式
int src_fd = open("source.txt", O_RDONLY);
if (src_fd == -1) {
perror("Error opening source file");
return1;
}
// 打開(kāi)目標(biāo)文件,寫(xiě)入方式(如果不存在則創(chuàng)建)
int dest_fd = open("destination.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (dest_fd == -1) {
perror("Error opening destination file");
close(src_fd); // 關(guān)閉源文件
return1;
}
// 讀取源文件數(shù)據(jù)并寫(xiě)入目標(biāo)文件
char buffer[1024];
ssize_t bytes_read;
while ((bytes_read = read(src_fd, buffer, sizeof(buffer))) > 0) {
ssize_t bytes_written = write(dest_fd, buffer, bytes_read);
if (bytes_written == -1) {
perror("Error writing to destination file");
close(src_fd); // 關(guān)閉源文件
close(dest_fd); // 關(guān)閉目標(biāo)文件
return1;
}
}
// 檢查讀取過(guò)程中是否出錯(cuò)
if (bytes_read == -1) {
perror("Error reading from source file");
close(src_fd); // 關(guān)閉源文件
close(dest_fd); // 關(guān)閉目標(biāo)文件
return1;
}
// 關(guān)閉文件
if (close(src_fd) == -1) {
perror("Error closing source file");
return1;
}
if (close(dest_fd) == -1) {
perror("Error closing destination file");
return1;
}
printf("File copy successful.n");
return0;
}
Part4make與Makefile
4.1 make 與 Makefile區(qū)別
make
:make
是一個(gè)命令行工具,用于自動(dòng)化構(gòu)建軟件項(xiàng)目。它根據(jù)一組規(guī)則和依賴關(guān)系,檢查源代碼文件的最新修改日期,并確定哪些文件需要重新編譯。make
在 Linux 和類(lèi) UNIX 系統(tǒng)上廣泛使用,以減少手動(dòng)編譯的工作量。
Makefile
:Makefile
是一個(gè)文本文件,其中包含了用于構(gòu)建軟件項(xiàng)目的規(guī)則、依賴關(guān)系和命令。它告訴 make
工具如何編譯和鏈接源代碼文件,以及在構(gòu)建過(guò)程中需要執(zhí)行哪些操作。Makefile
通常包括目標(biāo)(target)、依賴關(guān)系(dependencies)和要執(zhí)行的命令。
4.2 Makefile的編寫(xiě)
# 編譯器
# CC = g++
CC = gcc
# 編譯選項(xiàng)
# CFLAGS = -Wall -std=c++11
# CFLAGS = -Wall -std=c++11 -g
# CFLAGS = -Wall -std=c++11 -static
CFLAGS = -Wall
# 目標(biāo)文件名
TARGET = myprogram
# 所有的源代碼文件
SOURCES = main.c utils.c mytest.c
# 生成目標(biāo)文件的中間文件
OBJECTS = $(SOURCES:.c=.o)
# 默認(rèn)目標(biāo)
all: $(TARGET)
# 生成目標(biāo)文件
$(TARGET): $(OBJECTS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJECTS)
# 編譯每個(gè)源文件到目標(biāo)文件
%.o: %.c
$(CC) $(CFLAGS) -c $ -o $@
# 調(diào)試目標(biāo)
# debug: $(TARGET)
# gdb ./$(TARGET)
# 清理生成的文件
clean:
rm -f $(OBJECTS) $(TARGET)
Part5vim簡(jiǎn)單操作
輸入:help查看幫助,按下Ctrl
+ w 然后按下 q 退出幫助
- 啟動(dòng) Vim :在終端中輸入
vim
命令,后跟文件名,即可啟動(dòng) Vim 并打開(kāi)指定文件: - 模態(tài)編輯 :Vim 有多種模式,其中兩個(gè)主要模式是:
- 正常模式(Normal Mode) :用于導(dǎo)航、刪除、復(fù)制等操作。
- 插入模式(Insert Mode) :用于輸入文本。
- 切換模式 :
- 進(jìn)入正常模式:按下
Esc
鍵。 - 進(jìn)入插入模式:在正常模式下按下
i
鍵(在光標(biāo)前插入)、a
鍵(在光標(biāo)后插入)或其他命令(如o
或O
)。
- 進(jìn)入正常模式:按下
- 保存和退出 :
- 保存文件:在正常模式下按下
:
鍵,然后輸入w
并按下Enter
鍵。 - 保存并退出:在正常模式下按下
:
鍵,然后輸入wq
并按下Enter
鍵。 - 退出不保存:在正常模式下按下
:
鍵,然后輸入q!
并按下Enter
鍵。
- 保存文件:在正常模式下按下
- 基本移動(dòng) :
- 上移:
k
- 下移:
j
- 左移:
h
- 右移:
l
- 上移:
- 刪除和復(fù)制 :
- 刪除字符:在正常模式下按下
x
鍵。 - 復(fù)制行:在正常模式下按下
yy
。
- 刪除字符:在正常模式下按下
- 撤銷(xiāo)和重做 :
- 撤銷(xiāo):在正常模式下按下
u
鍵。 - 重做:在正常模式下按下
Ctrl
+r
鍵。
- 撤銷(xiāo):在正常模式下按下
- 查找和替換 :
- 查找:在正常模式下按下
/
鍵,然后輸入要查找的內(nèi)容并按下Enter
鍵。 - 替換:在正常模式下按下
:
鍵,然后輸入%s/old/new/g
進(jìn)行全局替換。
- 查找:在正常模式下按下
-
接口
+關(guān)注
關(guān)注
33文章
8447瀏覽量
150722 -
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208721 -
文件
+關(guān)注
關(guān)注
1文章
561瀏覽量
24671 -
字符串
+關(guān)注
關(guān)注
1文章
575瀏覽量
20470 -
Makefile
+關(guān)注
關(guān)注
1文章
125瀏覽量
19158
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論