Linux系統下常用指令學習 之 二
文件查詢和搜索
文件的查詢和搜索也是最常用的操作,在嵌入式 Linux 開發中常常需要在 Linux 源碼文件中查詢某個文件是否存在,或者搜索哪些文件都調用了某個函數等等。
1、命令 find
find 命令用于在目錄結構中查找文件,其命令格式如下:
find [路徑] [參數] [關鍵字]
路徑是要查找的目錄路徑,如果不寫的話表示在當前目錄下查找,關鍵字是文件名的一
部分,主要參數如下:
-name 按照文件名稱查找,查找與 filename 匹配的文件,可使用通配符。
-depth 從指定目錄下的最深層的子目錄開始查找。
-gid<群組識別碼> 查找符合指定的群組識別碼的文件或目錄。
-group<群組名稱> 查找符合指定的群組名稱的文件或目錄。
-size<文件大小> 查找符合指定文件大小的文件。
-type<文件類型> 查找符合指定文件類型的文件。
-user<擁有者名稱>查找符合指定的擁有者名稱的文件或目錄。
我們使用的命令 find / etc / -name vim*
意思是我們現在查找 在 etc文件夾下的 帶有 vim開頭的 文件
2 . 命令 grep
find 命令 用于 在目錄中搜索文件 , 我們有時候需要在文件中搜索一串關鍵字 , grep 就是完成這個功能的,grep 命令用于查找包含指定關鍵字的文件,如果發現某個文件的內容包含所指定的關鍵字,grep 命令就會把包含指定關鍵字的這一行標記出來
grep [參數] 關鍵字 文件列表
grep 一次只能查找一個關鍵字 :
-b 在顯示符合關鍵字的那一列前,標記處該列第 1 個字符的位編號。
-c 計算符合關鍵字的列數。
-d<進行動作> 當指定要查找的是目錄而非文件時,必須使用此參數!否則 grep 指令將
回報信息并停止搜索。
-i 忽略字符大小寫。
-v 反轉查找,只顯示不匹配的行。
-r 在指定目錄中遞歸查找。
例如: 我們在此處使用 grep -ir “ubuntu” /usr
我們分類之后 可以觀察到
文件類型
比如 test1 的第一個字符是“d”,test1.tar.bz2 文件第一個字符是“-”。這些字符表示的
文件類型如下:
- 普通文件,一些應用程序創建的,比如文檔、圖片、音樂等等。
d 目錄文件。
c 字符設備文件,Linux 驅動里面的字符設備驅動,比如串口設備,音頻設備等。
b 塊設備文件,存儲設備驅動,比如硬盤,U 盤等。
l 符號連接文件,相當于 Windwos 下的快捷方式。
s 套接字文件。
p 管道文件,主要指 FIFO 文件。
權限管理 :
Ubuntu 是一個多用戶系統,我們可以給不同的使用者創建不同的用戶賬號,每個用戶使
用各自的賬號登陸,使用用戶賬號的目的一是方便系統管理員管理,控制不同用戶對系統的
訪問權限,另一方面是為用戶提供安全性保護。
裝系統的時候創建的用戶其權限比后面創建的用戶大一點,但是沒有 root 用戶權限大,
Ubuntu 下用戶類型分為以下 3 類:
● 初次創建的用戶,此用戶可以完成比普通用戶更多的功能。
● root 用戶,系統管理員,系統中的玉皇大帝,擁有至高無上的權利。
● 普通用戶,安裝完操作系統以后被創建的用戶。
。Ubuntu 下我們會常跟用戶權限打交道,權限就是用戶對于系
統資源的使用限制情況,root 用戶擁有最大的權限,可以為所欲為,裝系統的時候創建的用
戶擁有 root 用戶的部分權限,其它普通用戶的權限最低。對于我們做嵌入式開發的人一般不
關注用戶的權限問題,因為嵌入式基本是單用戶,做嵌入式開發重點關注的是文件的權限問
題。
對于一個文件通常有三種權限:讀?、寫(w)和執行(x),
我們 舉個 例子
-rw-rw-r-- 1 zuozhongkai zuozhongkai 0 12 月 25 20:44 test.c
這句話 來自于 正點原子 借用一下
我們會發現 其中 -rw-rw-r-- 標示著 文件權限與 用戶 用戶組之間的關系
第一位的“-” 小短橫 - 表示文件類型 剩下的9位 以3位 為1組
即 我們可以分割 - rw- rw- r–
分別表示文件擁有者的權限,文件擁有者所在用
戶組的權限 以及其它用戶權限
后面 還有兩個 數據 例如 這里的 zuozhongkai zuozhongkai
表示著 代表文件擁有者(用
戶) 和 該用戶所在的用戶組
第一個小短橫 “-” 表示 文件類型是 普通文件
接下來是 我們 看出文件的擁有者是 zuozhongkai,其對文件 tesst.c 的權限是“rw-”,也就是對該文件擁有讀和寫兩種權限。
下面的是用戶 zuozhongkai 所在的用戶組也叫做 zuozhongkai,其組內用戶對于文件 test.c 的權限是“rw-”,也是擁有讀和寫這兩種權限。
最后一個 r-- 表示 其它用戶對于文件 test.c 的權限是“r–”,也就是只讀權限。
對于文件,可讀權限表示可以打開查看文件內容,可寫權限表示可以對文件進行修改,可執行權限就是可以運行此文件(如果是軟件的話)。對于文件夾,擁有可讀權限才可以使用命令 ls 查看文件夾中的內容,擁有可執行權限才能進入到文件夾內部。如果某個用戶對某個文件不具有相應的權限的話就不能進行相應的操作,比如根目錄“/”下的文件只有 root 用戶才有權限進行修改,如果以普通用戶去修改的話就會提示沒有權限。
文件的權限有三種 : 讀(r) 寫(w) 執行(x)
我們也可以使用二進制數表示,三種權限就可以使用 3 位二進制數來表示,一種權限對應一個二進制位,如果該位為 1 就表示具備此權限,如果該位為 0 就表示沒不具備此權限,如下表所示:
另外我們也開始使用 a、u、g 和 o 表示文件的歸屬關系,用=、+和-表示文件權限的變化,如下表所示:
對于文件 test.c,我們想要修改其歸屬用戶(zuozhongkai)對其擁有可執行權限,那么就可以使用:u+x。如果希望設置歸屬用戶及其所在的用戶組都對其擁有可執行權限就可以使用:gu+x。
u 是歸屬用戶 + 添加某權限 x 可執行權限 u+x
g歸屬組 u 歸屬用戶 + 添加某種屬性 x 可執行權限 gu+x
我們可以使用另外的 權限管理命令
chmod chown
我們可以通過數字的方法 修改權限
我們可以通過遞歸修改整個文件夾中文件的權限
我們使用的指令是 chmod -R 777 test11
-R 表示遞歸 處理 test11 下所有文件夾的 權限
文件歸屬者修改命令 chown
命令 chown 用來修改某個文件或者目錄的歸屬者用戶或者用戶組,命令格式如下:
chown [參數] [用戶名.<組名>] [文件名/目錄]
其中[用戶名.<組名>]表示要將文件或者目錄改為哪一個用戶或者用戶組,用戶名和組名
用“.”隔開,其中用戶名和組名中的任何一個都可以省略,命令主要參數如下:
-c 效果同-v 類似,但僅回顯更改的部分。
-f 不顯示錯誤信息。
-h 只對符號連接的文件做修改,不改動其它任何相關的文件。
-R 遞歸處理,將指定的目錄下的所有文件和子目錄一起處理。
-v 顯示處理過程。
chown
Linux 磁盤管理
Linux 的磁盤管理體系和 Windows 有很大的區別,在 Windows 下經常會遇到“分區”這個概念,在 Linux 中一般不叫“分區”而叫“掛載點”。 “掛載點”就是將一個硬盤的一部分做成文件夾的形式,這個文件夾的名字就是“掛載點”,不管在哪個發行版的 Linux 中,用戶是絕對看到不到 C 盤、D 盤這樣的概念的,只能看到以文件夾形式存在的“掛載點”.
有四個磁盤設備文件,其中 sd 表示是 SATA硬盤或者其它外部設備,最后面的數字表示該硬盤上的第 n 個分區,比如/dev/sda1 就表示磁盤 sda 上的第一個分區。圖 2.8.2中都是以/dev/sda 開頭的,說明當前只有一個硬盤。如果再插上 U 盤、SD 卡啥的就可能會出現/dev/sdb,/dev/sdc等等。
磁盤管理命令
1.磁盤分區命令 fdisk
如果要對某個磁盤進行分區,可以使用命令 fdisk,命令格如下:fdisk [參數]主要參數如下:-b<分區大小> 指定每個分區的大小。-l 列出指定設備的分區表。-s<分區編號> 將指定的分區大小輸出到標準的輸出上,單位為塊。-u 搭配“-l”參數,會用分區數目取代柱面數目,來表示每個分區的起始地址。
p 顯示現有的分區
n 建立新分區
t 更改分區類型
d 刪除現有的分區
a 更改分區啟動標志
w 對分區的更改寫入到硬盤或者存儲器中。
q 不保存退出。
由于我的 U 盤里面還有一些重要的文件,所以現在不能進行分區,所以就不演示 fdisk 的
分區操作了,后面我們講解裸機例程的時候需要將可執行的 bin 文件燒寫到 SD 卡中,燒寫到
SD 卡之前需要對 SD 卡進行分區,到時候再詳細講解如何使用 fdisk 命令對磁盤進行分區。
2、格式化命令 mkfs
使用命令 fdisk 創建好一個分區以后,我們需要對其格式化,也就是在這個分區上創建一
個文件系統,Linux 下的格式化命令為 mkfs,命令格式如下:
mkfs [參數] [-t 文件系統類型] [分區名稱]
主要參數如下:
fs 指定建立文件系統時的參數
-V 顯示版本信息和簡要的使用方法。
-v 顯示版本信息和詳細的使用方法。
比如我們要格式化 U 盤的分區/dev/sdb1 為 FAT 格式,那么就可以使用如下命令:
mkfs –t vfat /dev/sdb1
3、掛載分區命令 mount
我們創建好分區并且格式化以后肯定是要使用硬盤或者 U 盤的,那么如何訪問磁盤呢?
比如我的 U 盤就一個分區,為/dev/sdb1,如果直接打開文件/dev/sdb1 會發現根本就不是我們
要的結果。我們需要將/dev/sdb1 這個分區掛載到一個文件夾中,然后通過這個文件訪問 U 盤,
磁盤掛載命令為 mount,命令格式如下:
mount [參數] -t [類型] [設備名稱] [目的文件夾]
命令主要參數有:
-V 顯示程序版本。
-h 顯示輔助信息。
-v 顯示執行過程詳細信息。
-o ro 只讀模式掛載。
-o rw 讀寫模式掛載。
-s-r 等于-o ro。
-w 等于-o rw。
掛載點是一個文件夾,因此在掛載之前先要創建一個文件夾,一般我們把掛載點放到
“/mnt”目錄下,在“/mnt”下創建一個 tmp 文件夾,然后將 U 盤的/dev/sdb1 分區掛載到
/mnt/tmp 文件夾里面,
4、卸載命令 umount
當我們不在需要訪問已經掛載的 U 盤,可以通過 umount 將其從卸載點卸除,命令格式如
下:
umount [參數] -t [文件系統類型] [設備名稱]
-a 卸載/etc/mtab 中的所有文件系統。
-h 顯示幫助。
-n 卸載時不要將信息存入到/etc/mtab 文件中
-r 如果無法成功卸載,則嘗試以只讀的方式重新掛載。
-t <文件系統類型> 僅卸載選項中指定的文件系統。
-v 顯示執行過程。
/ 上述磁盤分區 并未認真學習 僅僅是復制粘貼