1、 Linux文件和目錄
Windows 和 Linux 文件系統
![全面系統地總結Linux的基本操作(上)](http://p2.ttnews.xyz/loading.gif)
在 windows 平臺下,打開"計算機",我們看到的是一個個的驅動器盤符:每個驅動器都有自己的根目錄結構,這樣形成了多個樹並列的情形,如圖所示:
![全面系統地總結Linux的基本操作(上)](http://p2.ttnews.xyz/loading.gif)
在 Linux 下,我們是看不到這些驅動器盤符,我們看到的是文件夾(目錄):
類 Unix 系統目錄結構 ubuntu 沒有盤符這個概念,只有一個根目錄/,所有文件都在
它下面:
Linux 目錄
/:根目錄,一般根目錄下只存放目錄,在 Linux 下有且只有一個根目錄。所有的東西都是從這裡開始。當你在終端裡輸入"/home",你其實是在告訴電腦,先從/(根目錄)開始,再進入到 home 目錄。
/bin、/usr/bin: 可執行二進制文件的目錄,如常用的命令 ls、tar、mv、cat 等。
/boot : 放 置 linux 系 統 啟 動 時 用 到 的 一 些 文 件 , 如 Linux 的 內 核 文 件 :/boot/vmlinuz,系統引導管理器:/boot/grub。
/dev:存放 linux 系統下的設備文件,訪問該目錄下某個文件,相當於訪問某個設備,常用的是掛載光驅 mount /dev/cdrom /mnt。
/etc:系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件 有 /etc/inittab 、 /etc/fstab 、 /etc/init.d 、 /etc/X11 、 /etc/sysconfig 、/etc/xinetd.d。
/home:系統默認的用戶家目錄,新增用戶賬號時,用戶的家目錄都存放在此目錄下,~表示當前用戶的家目錄,~edu 表示用戶 edu 的家目錄。
/lib、/usr/lib、/usr/local/lib:系統使用的函數庫的目錄,程序在執行過程中,需要調用一些額外的參數時需要函數庫的協助。
/lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下。
/mnt: /media:光盤默認掛載點,通常光盤掛載於 /mnt/cdrom 下,也不一定,可以選擇任意位置進行掛載。
/opt:給主機額外安裝軟件所擺放的目錄。
/proc:此目錄的數據都在內存中,如系統核心,外部設備,網絡狀態,由於數據都存 放 於 內 存 中 , 所 以 不 佔 用 磁 盤 空 間 , 比 較 重 要 的 目 錄 有 /proc/cpuinfo 、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系統管理員 root 的家目錄。
/sbin、/usr/sbin、/usr/local/sbin:放置系統管理員使用的可執行命令,如 fdisk、shutdown、mount 等。與 /bin 不同的是,這幾個目錄是給系統管理員 root 使用的命令,一般用戶只能"查看"而不能設置和使用。
/tmp:一般用戶或正在執行的程序臨時存放文件的目錄,任何人都可以訪問,重要數據不可放置在此目錄下。
/srv:服務啟動之後需要訪問的數據目錄,如 www 服務需要訪問的網頁數據存放在 /srv/www 內。
/usr:應用程序存放目錄,/usr/bin 存放應用程序,/usr/share 存放共享數據,/usr/lib 存 放不 能直 接運 行的 ,卻 是許 多 程序 運行 所必 需的 一些 函 數庫 文件 。
/usr/local: 存 放 軟 件 升 級 包 。 /usr/share/doc: 系 統 說 明 文 件 存 放 目 錄 。
/usr/share/man: 程序說明文件存放目錄。
/var:放置系統執行過程中經常變化的文件,如隨時更改的日誌文件 /var/log,
/var/log/message:所有的登錄文件存放目錄,/var/spool/mail:郵件存放的目錄,
/var/run:程序或服務啟動後,其 PID 存放在該目錄下。
用戶目錄
位於/home/user,稱之為用戶工作目錄或家目錄,表示方式:
絕對路徑
從/目錄開始描述的路徑為絕對路徑,如:
<code>cd /home/<code>
<code>ls /usr/<code>
相對路徑
從當前位置開始描述的路徑為相對路徑,如:
<code>cd ../..//<code>
<code>ls abc/def/<code>
每個目錄下都有.和..
. 表示當前目錄
.. 表示上一級目錄,即父目錄
根目錄下的.和..都表示當前目錄
2 、Linux命令基本用法
很多人可能在電視或電影中看到過類似的場景,黑客面對一個黑色的屏幕,上面飄著
密密麻麻的字符,梆梆一頓敲,就完成了竊取資料的任務。
Linux 剛出世時沒有什麼圖形界面,所有的操作全靠命令完成,就如同電視裡的黑
客那樣,充滿了神秘與晦澀。
近幾年來,儘管 Linux 發展得非常迅速,圖形界面越來越友好,但是在真正的開發
過程中,Linux 命令行的應用還是佔有非常重要的席位,而且許多 Linux 功能在命
令行界面要比圖形化界面下運行的快。可以說不會命令行,就不算會 Linux。
Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盤操作、文件
存取、目錄操作、進程管理、文件權限設定等。Linux 發行版本最少的命令也有 200
多個,這裡只介紹比較重要和使用頻率最多的命令。
2.1 命令使用方法
Linux 命令格式:
<code>command [-options] [parameter1] …/<code>
說明:command: 命令名,相應功能的英文單詞或單詞的縮寫 [-options]:選項,可
用來對命令進行控制,也可以省略,[]代表可選 parameter1 …:傳給命令的參數:可以
是零個一個或多個.例:
2.2 查看幫助文檔
<1>--help
一般是 linux 命令自帶的幫助信息
如:ls --help
<2>man(有問題找男人,manual)
man 是 linux 提供的一個手冊,包含了絕大部分的命令、函數使用說明
該手冊分成很多章節(section),使用 man 時可以指定不同的章節來瀏覽。
例:man ls ; man 2 printf
man 中各個 section 意義如下:
Standard commands(標準命令)
System calls(系統調用,如 open,write)
Library functions(庫函數,如 printf,fopen)
Special devices(設備文件的說明,/dev 下各種設備)
File formats(文件格式,如 passwd)
Games and toys(遊戲和娛樂)
Miscellaneous(雜項、慣例與協定等,例如 Linux 檔案系統、網絡協定、ASCII 碼;environ 全局變量)
Administrative Commands(管理員命令,如 ifconfig)
man 是按照手冊的章節號的順序進行搜索的。man 設置瞭如下的功能鍵:
空格鍵 顯示手冊頁的下一屏
Enter 鍵 一次滾動手冊頁的一行
b 回滾一屏
f 前滾一屏
q 退出 man 命令
h 列出所有功能鍵
/word 搜索 word 字符串
2.3 命令自動補全
在敲出命令的前幾個字母的同時,按下 tab 鍵,系統會自動幫我們補全命令.
2.4 歷史命令
當系統執行過一些命令後,可按上下鍵翻看以前的命令,history 將執行過的命令列
舉出來.
3、 Linux命令-文件,磁盤操作
3.1 查看文件信息:ls
ls 是英文單詞 list 的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於 DOS 下的 dir 命令。
Linux 文件或者目錄名稱最長可以有 265 個字符,"."代表當前目錄,".."代表上一級目錄,以"."開頭的文件為隱藏文件,需要用 -a 參數才能顯示。
ls 常用參數:
參數 含義
<code>-a 顯示指定目錄下所有子目錄與文件,包括隱藏文件/<code>
<code>-l 以列表方式顯示文件的詳細信息/<code>
<code>-h 配合 -l 以人性化的方式顯示文件大小/<code>
圖中列出的信息含義如下圖所示:
與 DOS 下的文件操作類似,在 Unix/Linux 系統中,也同樣允許使用特殊字符來同時引
用多個文件名,這些特殊字符被稱為通配符。
通配符 含義
- * 文件代表文件名中所有字符
- ls te* 查找以 te 開頭的文件
- ls *html 查找結尾為 html 的文件
- ? 代表文件名中任意一個字符
- ls ?.c 只找第一個字符任意,後綴為.c 的文件
- ls a.? 只找只有 3 個字符,前 2 字符為 a.,最後一個字符任意的文件
- [] ["和"]"將字符組括起來,表示可以匹配字符組中的任意一個。"-"用於表示字符範圍。
- [abc] 匹配 a、b、c 中的任意一個
- [a-f] 匹配從 a 到 f 範圍內的的任意一個字符
- ls [a-f]* 找到從 a 到 f 範圍內的的任意一個字符開頭的文件
- ls a-f 查找文件名為 a-f 的文件,當"-"處於方括號之外失去通配符的作用
- \\ 如果要使通配符作為普通字符使用,可以在其前面加上轉義字符。"?"和"*"處於方括號內時不用使用轉義字符就失去通配符的作用。
- ls \\*a 查找文件名為*a 的文件
3.2 輸出重定向命令:>
Linux 允許將命令執行結果重定向到一個文件,本應顯示在終端上的內容保存到指定文
件中。如:ls > test.txt ( test.txt 如果不存在,則創建,存在則覆蓋其內容 )
注意: >輸出重定向會覆蓋原來的內容,>>輸出重定向則會追加到文件的尾部。
3.3 分屏顯:more
查看內容時,在信息過長無法在一屏上顯示時,會出現快速滾屏,使得用戶無法看清文
件的內容,此時可以使用 more 命令,每次只顯示一頁,按下空格鍵可以顯示下一頁,按下
q 鍵退出顯示,按下 h 鍵可以獲取幫助。
3.4 管道:|
管道:一個命令的輸出可以通過管道做為另一個命令的輸入。管道我們可以理解現實生
活中的管子,管子的一頭塞東西進去,另一頭取出來,這裡" | "的左右分為兩端,左端
塞東西(寫),右端取東西(讀)。
【指令 1】正確輸出,作為【指令 2】的輸入
3.5 清屏:clear
clear 為清除終端上的顯示(類似於 DOS 的 cls 清屏功能),也可使用快捷鍵:Ctrl + l.
3.6 切換工作目錄:cd
在使用 Unix/Linux 的時候,經常需要更換工作目錄。cd 命令可以幫助用戶切換工作目錄。Linux 所有的目錄和文件名大小寫敏感. cd 後面可跟絕對路徑,也可以跟相對路徑。
如果省略目錄,則默認切換到當前用戶的主目錄。
命令 含義
- cd 切換到當前用戶的主目錄(/home/用戶目錄),用戶登陸的時候,默認的目錄就是用戶的主目錄。
- cd ~ 切換到當前用戶的主目錄(/home/用戶目錄)
- cd . 切換到當前目錄
- cd .. 切換到上級目錄
- cd - 可進入上次所在的目錄
注意:如果路徑是從根路徑開始的,則路徑的前面需要加上" / ",如 " /mnt ",通常進入某個目錄裡的文件夾,前面不用加" / "。
3.7 顯示當前路徑:pwd
使用 pwd 命令可以顯示當前的工作目錄,該命令很簡單,直接輸入 pwd 即可,後面不帶參數。
3.8 創建目錄:mkdir
通過 mkdir 命令可以創建一個新的目錄。參數-p 可遞歸創建目錄。需要注意的是新
建目錄的名稱不能與當前目錄中已有的目錄或文件同名,並且目錄創建者必須對當前目
錄具有寫權限。
3.9 刪除目錄:rmdir
可使用 rmdir 命令刪除一個目錄。必須離開目錄,並且目錄必須為空目錄,不然提
示刪除失敗。
3.10 刪除文件:rm
可通過 rm 刪除文件或目錄。使用 rm 命令要小心,因為文件刪除後不能恢復。為了
防止文件誤刪,可以在 rm 後使用-i 參數以逐個確認要刪除的文件。
常用參數及含義如下表所示:
參數 含義
- -i 以進行交互式方式執行
- -f 強制刪除,忽略不存在的文件,無需提示
- -r 遞歸地刪除目錄下的內容,刪除文件夾時必須加此參數
3.11 建立鏈接文件:ln
Linux 鏈接文件類似於 Windows 下的快捷方式。
鏈接文件分為軟鏈接和硬鏈接。
軟鏈接:軟鏈接不佔用磁盤空間,源文件刪除則軟鏈接失效。
硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。
使用格式:
- ln 源文件 鏈接文件
- ln -s 源文件 鏈接文件
如果沒有-s 選項代表建立一個硬鏈接文件,兩個文件佔用相同大小的硬盤空間,即使刪除了源文件,鏈接文件還是存在,所以-s 選項是更常見的形式。
注意:如果軟鏈接文件和源文件不在同一個目錄,源文件要用絕對路徑,不能用相對路徑。
3.12 查看或合併文件:cat
3.13 文本搜索:grep
Linux 系統中 grep 命令是一種強大的文本搜索工具,grep 允許對文本文件進行模式查找。如果找到匹配模式, grep 打印包含模式的所有行。在 grep 命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep'a '1.txt。
grep 一般格式為:
<code>grep [-選項] '搜索內容串'文件名/<code>
常用選項說明:
選項 含義
- -v 顯示不包含匹配文本的所有行(相當於求反)
- -n 顯示匹配行及行號
- -i 忽略大小寫
grep 搜索內容串可以是正則表達式。正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個"規則字符串",這個"規則字符串"用來表達對字符串的一種過濾邏輯。
grep 常用正則表達式:
選項 含義
- ^a 行首,搜尋以 m 開頭的行;grep -n '^a' 1.txt
- ke$ 行尾,搜尋以 ke 結束的行;grep -n 'ke$' 1.txt
- . (點)匹配一個非換行符的字符;匹配 e 和 e 之間有任意一個字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt
- [Ss]igna[Ll] 匹配 [] 裡中一系列字符中的一個;搜尋匹配單詞 signal、signaL、Signal、SignaL 的行;grep -n '[Ss]igna[Ll]' 1.txt
3.14 查找文件:find
find 命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬主的文件。
常用用法:
選項 含義
- find ./ -name test.sh 查找當前目錄下所有名為 test.sh 的文件
- find ./ -name '*.sh' 查找當前目錄下所有後綴為.sh 的文件
- find ./ -name "[A-Z]*" 查找當前目錄下所有以大寫字母開頭的文件
- find /tmp -size 2M 查找在/tmp 目錄下等於 2M 的文件
- find /tmp -size +2M 查找在/tmp 目錄下大於 2M 的文件
- find /tmp -size -2M 查找在/tmp 目錄下小於 2M 的文件
- find ./ -size +4k -size -5M 查找當前目錄下大於 4k,小於 5M 的文件
- find ./ -perm 777 查找當前目錄下權限為 777 的文件或目錄
3.15 拷貝文件:cp
cp 命令的功能是將給出的文件或目錄複製到另一個文件或目錄中,相當於 DOS 下的copy 命令。
常用選項說明:
選項 含義
- -a 該選項通常在複製目錄時使用,它保留鏈接、文件屬性,並遞歸地複製目錄,簡單而言,保持文件原有屬性。
- -f 已經存在的目標文件而不提示
- -i 交互式複製,在覆蓋目標文件之前將給出提示要求用戶確認
- -r 若給出的源文件是目錄文件,則 cp 將遞歸複製該目錄下的所有子目錄和文件,目標文件必須為一個目錄名。
- -v 顯示拷貝進度
3.16 移動文件:mv
用戶可以使用 mv 命令來移動文件或目錄,也可以給文件或目錄重命名。常用選項說明:
選項 含義
- -f 禁止交互式操作,如有覆蓋也不會給出提示
- -i 確認交互方式操作,如果 mv 操作將導致對已存在的目標文件的覆蓋,系統會詢問是否重寫,要求用戶回答以避免誤覆蓋文件
- -v 顯示進度
3.17 歸檔管理:tar
計算機中的數據經常需要備份,tar 是 Unix/Linux 中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
tar 使用格式: tar [參數] 打包文件名 文件
tar 命令很特殊,其參數前面可以使用"-",也可以不使用。
常用參數:
選項 含義
- -c 生成檔案文件,創建打包文件
- -v 列出歸檔解檔的詳細過程,顯示進度
- -f 指定檔案文件名稱,f 後面一定是.tar 文件,所以必須放選項最後
- -t 列出檔案中包含的文件
- -x 解開檔案文件
注意:除了 f 需要放在參數的最後,其它參數的順序任意。
3.18 文件解壓縮:gzip
tar 與 gzip 命令結合使用實現文件打包、壓縮。 tar 只負責打包文件,但不壓縮,用
gzip 壓縮 tar 打包後的文件,其擴展名一般用 xxxx.tar.gz。gzip 使用格式如下:
gzip [選項] 被壓縮文件
常用選項:
選項 含義
- -d 解壓
- -r 壓縮所有子目錄
tar 這個命令並沒有壓縮的功能,它只是一個打包的命令,但是在 tar 命令中增加一個選項(-z)可以調用 gzip 實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
壓縮用法:tar cvzf 壓縮包包名 文件 1 文件 2 ...
-z :指定壓縮包的格式為:file.tar.gz
解壓用法: tar zxvf 壓縮包包名
-z :指定壓縮包的格式為:file.tar.gz
解壓到指定目錄:-C (大寫字母"C")
3.19 文件解壓縮:bzip2
tar 與 bzip2 命令結合使用實現文件打包、壓縮(用法和 gzip 一樣)。
tar 只負責打包文件,但不壓縮,用 bzip2 壓縮 tar 打包後的文件,其擴展名一般用xxxx.tar.bz2。
在 tar 命令中增加一個選項(-j)可以調用 bzip2 實現了一個壓縮的功能,實行一個先打包後
壓縮的過程。
壓縮用法:tar -jcvf 壓縮包包名 文件...(tar jcvf bk.tar.bz2 *.c)
解壓用法:tar -jxvf 壓縮包包名 (tar jxvf bk.tar.bz2)
3.20 文件解壓縮:zip、unzip
通過 zip 壓縮文件的目標文件不需要指定擴展名,默認擴展名為 zip。
壓縮文件:zip [-r] 目標文件(沒有擴展名) 源文件
解壓文件:unzip -d 解壓後目錄文件 壓縮文件
3.21 查看命令位置:which
閱讀更多 猿小力 的文章