一、選項和參數的區別
在經過上一次的系統安裝后我們已經成功登陸,登陸LInux后,我們就可以在#或$符后面去輸入命令,有的時候命令后面還會跟着“選項”(英文名:options)或“參數”(英文名:agruments)。即Linux中的命令格式為:
command [options] [arguments] //中括號表示可選的,即有些命令不需要選項也不需要參數,但有的命令在運行時需要多個選項或參數。
options(選項):選項是調整命令執行行為的開關,即,選項不同決定了命令的顯示結果不同。
選項分為長選項和短選項。
短選項:例如-h,-l,-s等。(- 后面接單個字母)
1、短選項都是使用 ‘-’ 引導,當有多個短選項時,各選項之間使用空格隔開
2、有些命令的短選項可以組合,例如 -l -h 可以組合為-lh
3、有些命令的短選項可以不帶 - ,這通常叫做BSD風格的選項。例如ps aux
4、有些短選項需要帶選項本身的參數,例如 -L 512M
長選項:例如 --help,--list 等。(-- 后面接單詞)
1、長選項都是完整的單詞
2、長選項通常不能組合
3、如果需要加參數,長選項的參數通常需要 "=",例如 --size=1G
agruments(參數):
參數是指命令的作用對象。
例如 ls 命令,不加參數的時候顯示是當前目錄,也可以加參數,例如 ls /dev,則輸出的結果是 /dev 目錄。
小結一下:
選項是限定結果的顯示結果
短選項( - ):只能修飾一個字符的選項,例如:ls -a,當然多個短選項可以合並,例如tar -cvf
長選項( -- ):既可以修飾單個字符,也可以修飾一個單詞,例如:chkconfig --list,chkconfig --add xxx,service --status-all
參數是指命令的作用對象
我這里簡單說明了選項和參數的區別,但具體Linux中哪條命令有哪些選項和參數,需要我們靠經驗積累或者查看Linux的幫助了(man幫助命令)。
二、權限管理:UNIX權限:U(rwx)g(rwx)0(rwx)
r --可讀權限
w --可寫權限
x --可執行權限
也可以用數字來表示 :
r=4 w=2 x=1
例:rwx = 7(4+2+1) ; rw = 6 (4+2) ; r-w = 5 (4+0+1) ; r-- = 4 (4+0+0) ; --x = 1 (0+0+1);
示例:
(1)# chmod 777 test1 --賦予test1可讀可寫可執行權限(所有權限)
(2)# chmod 755 test1 --賦予test1用戶所有權限,組可讀可執行權限,其他用戶可讀可執行權限
三、Linux入門基礎命令--文件和目錄常用操作命令
在學習之前我們得先了解一下絕對路徑和相對路徑這兩個概念
絕對路徑:
在Linux中,絕對路徑是從/(即根目錄)開始的,例如 /usr、/etc/X11。如果一個路徑是從 / 開始的,它一定是絕對路徑。舉幾個示例
[root@srv1 ~]# pwd --判斷當前用戶所在的位置,也就是說他現在到底位於哪里
/root --用戶當前位於/root
[root@srv1 doc]# cd /usr/share/doc/ --以絕對路徑方式進入/usr/share/doc目錄下
[root@srv1 doc]# pwd --判斷用戶當前所在的位置
/usr/share/doc --用戶位於/usr/share/doc,看來已經達到目的了
相對路徑:
是以 . 或 .. 開始的, .用戶當前操作所在的位置,而 .. 表示上級目錄,在路徑中, . 表示用戶當前所在的目錄,而 .. 上級目錄,要把 . 和 .. 當做目錄來看,這里也舉幾個例子
[root@srv1 ~]# pwd --通過pwd來判斷當前用戶所在的位置
/root --得出目錄處於/root目錄中;
[root@srv1 ~]# cd . --我們進入 .
[root@srv1 ~]# pwd --判斷當前用戶所在的位置
/root --得出在root目錄中
[root@srv1 ~]# cd .. --我們切入/root的上級目錄
[root@srv1 /]# pwd --判斷當前用戶所在的位置
/ --用戶當前處於 /(根目錄)中
下面來講講Linux中文件和目錄中常用命令的【命令作用】,【命令語法】,【常用選項】,【參數說明】和【命令示例】
1.ls
【命令作用】
列出文件和目錄的內容
【命令語法】
ls [選項] [參數]
【常用選項】
-l --以長格式顯示,列出文件的詳細信息,如創建者,創建時間,文件的讀寫權限列表等等
-L --列出文件的鏈接名,Link(鏈接)
-A --列出除了 "." 和 ".."以外的文件
-a --列出文件下所有的文件,包括以 "." 和 ".."開頭的隱藏文件 (Linux下文件隱藏文件是以 . 開頭的,如果存在 .. 代表存在着父目錄)
-d --列出目錄本身而非目錄內的文件,通常要與-l一起使用
-i --顯示每個文件的inode號
-R --同時列出所有子目錄層,與-l相似,只是不顯示出文件的所有者,相當於編程中的“遞歸”實現
-t --按照時間進行文件的排序,Time(時間)
-F --在每一個文件的末尾加上一個字符說明該文件的類型。"@" 表示符號鏈接、"l" 表示FIFOS、"/" 表示目錄、"=" 表示套接字。
-s --在每個文件的后面打印出文件的大小,size(大小)
-S --以文件的大小進行排序
【參數說明】
目錄或文件 (需要注意絕對路徑和相對路徑,詳解請看第二部分開頭)
【命令示例】
# ls -l --以長格式列出當前目錄中的文件及目錄
2.pwd
【命令作用】
查看”當前工作目錄“的完整路徑
【命令語法】
pwd [選項]
【常用選項】
無
【參數說明】
一般情況下不帶任何參數
【命令示例】
# pwd --查看默認工作目錄的完整路徑
3.cd
【命令作用】
顯示當前目錄的名稱,或更改當前的目錄(打開特定目錄)
【命令語法】
cd [選項] [參數]
【常用選項】
無
【參數說明】
切換用戶當前目錄,例如 . 表示當前目錄 .. 表示上一級目錄 ,~ 表示家目錄 / 表示根目錄
【命令示例】
[root@srv1 ~]# cd --切換到前期用戶家目錄
[root@srv1 ~]# cd . --切換到當前目錄
[root@srv1 ~]# cd .. --切換到當前目錄上一級目錄
[root@srv1 /]# cd ~ --切換到用戶家目錄
[root@srv1 ~]# cd / --切換到根目錄下
4.touch
【命令作用】
創建空文件或文件時間戳修改
【命令語法】
touch [選項] [參數]
【常用選項】
-a --修改文件的存取時間
-m --修改文件的變動時間
-t --使用指定的日期時間,而非現在的時間
-c --如果要修改的文件不存在,此選項使touch不去創建它
-d --使用時間值 time代替指定文件的戳記值.可以包含月份名,時區名以及`am'和 `pm'等等
-f --此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題
-r --把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同
-t 使用指定的日期時間,而非現在的時間
【參數說明】
創建文件的文件名
【命令示例】
# touch /home123 --在home目錄下創建文件123 (這是一個絕對路徑)
5.echo
【命令作用】
在顯示器上顯示一段文字,一般起到一個提示的作用
補充說明:echo會將輸入的字符串送往標准輸出。輸出的字符串間以空白字符隔開, 並在最后加上換行號。
【命令語法】
echo [選項] [參數]
【常用選項】
-e --允許下面列出的加反斜線轉義的字符進行解釋
\n --換行符
\f --換頁符
\t --水平制表符
\v --縱向制表符
【參數說明】
需要打印的內容或變量
【命令示例】
(1)文本的直接輸入:
# echo 'Welcome To WCZY'
(2) 輸出變量的值:假設定義一個變量:
# bl="Welcome To WCZY"
# echo $bl
解釋:bl是定義的變量名,=號后面是賦值,字符串需要用“”括起來。$后面直接跟上變量名即可
(3)echo 后跟單雙引號的區別:
解釋:echo后的單引號表示強引用,單引號里面是什么就輸出什么,而雙引號是弱引用,變量的值會代替變量名輸出。
(4)選項中加入 -e ,轉義字符可用:
\t:插入制表符,即跳格顯示
echo -e “Hello Linux\tHello World”
不加 -e 的對比,如下:
echo "Hello Linux\tHello World"
6.mkdir
【命令作用】
創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。
【命令語法】
mkdir [選項] [參數]
【常用選項】
-p --可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄(遞歸)
-v --每次創建新目錄都顯示信息
-m --設定權限<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask
【參數說明】
需要創建的目錄
【命令示例】
(1)創建一個空目錄
# mkdir test1
(2)遞歸創建多個目錄
# mkdir -p test2/test22
(3)創建權限為777的目錄
# mkdir -m 777 test3
test3 的權限為rwxrwxrwx
(4)創建新目錄都顯示信息
# mkdir -v test4
7.cp
【命令作用】
復制文件或者目錄
【命令語法】
cp [選項] 源 目標
【常用選項】
-f --如果目標文件無法打開則將其移除並重試(當 -n 選項存在時則不需再選此項)
-n --不要覆蓋已存在的文件(使前面的 -i 選項失效)
-i --覆蓋前詢問(使前面的 -n 選項失效)
-p --保持指定的屬性(默認:模式,所有權,時間戳),如果可能保持附加屬性:環境、鏈接、xattr 等
-P --不跟隨源文件中的符號鏈接
-R,-r --復制目錄及目錄內的所有項目
-v --顯示過程 (通常與-r一起使用)
-s --對源文件建立符號連接,而非復制文件
【參數說明】
源文件
目標文件
【命令示例】
(1)將home目錄中的abc文件復制到根目錄下
# cp /home/abc /
(2)目標文件存在時,會詢問是否覆蓋
# cp /home/abc /
解釋:目標文件存在時,會詢問是否覆蓋。這是因為cp是cp -i的別名。目標文件存在時,即使加了-f標志,也還會詢問是否覆蓋。
(3)復制整個目錄
當目標目錄不存在時
解釋:注意目標目錄存在與否結果是不一樣的。目標目錄存在時,整個源目錄被復制到目標目錄里面
(4)復制的abc文件建立一個連結檔abc.log
# cp -s abc abc.log
8.mv
【命令作用】
移動文件或者將文件改名(move (rename) files),經常用來備份文件或者目錄。
【命令語法】
mv [選項] 源文件或目錄 目標文件或目錄
【常用選項】
-b --若需覆蓋文件,則覆蓋前先行備份
【參數說明】
源文件
目標文件
【命令示例】
(1)文件改名
# mv abc qwe
解釋:將文件abc重命名為qwe
(2)移動文件
# mv test3 test4
9.rmdir
【命令作用】
刪除空目錄
【命令語法】
rmdir [選項] 目錄
【常用選項】
-p --遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標准輸出上顯示相應的信息。
-v --顯示指令執行過程
【參數說明】
需要刪除的目錄
【命令示例】
(1)不能刪除非空目錄
# rmdir bus
(2)遞歸刪除當前目錄下的1/2/3/4/5/6目錄
# rmdir -pv 1/2/3/4/5/6
10.rm
【命令作用】
刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對於鏈接文件,只是刪除了鏈接,原有文件均保持不變。
rm是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在 /(根目錄)下執行rm * -rf)。所以,我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什么東西,操作時保持高度清醒的頭腦。
【命令語法】
rm [選項] 文件
【常用選項】
-f --忽略不存在的文件,從不給出提示
-r --指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
【參數說明】
需要刪除的文件或目錄
【命令示例】
(1)刪除某個文件時,系統會先詢問是否刪除
# rm 文件名
解釋:輸入rm qwe命令后,系統會詢問是否刪除,輸入y后就會刪除文件,不想刪除文件則輸入n。
(2)強制刪除某個文件
# rm-rf abc.log
解釋:強制刪除文件abc.log
11.nano
【命令作用】
文本編輯器
【命令語法】
nano [選項] [+行,列] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
# nano abc 編輯名為abc的文本
12.vi/vim
【命令作用】
文本編輯器,若文件存在則是編輯,若不存在則是創建並編輯
【命令語法】
vim [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
# vim abc 編輯名為abc的文本
13.shred
【命令作用】
用隨機值重寫覆蓋文件,讓文件無法恢復
【命令語法】
shred [選項] 文件 [參數]
【常用選項】
-n --自行指定重寫覆蓋的次數,默認為三次
-s --覆蓋指定的字節數(可接受K、M、G等等的單位)
-u --在重寫覆蓋后截斷和刪除文件
-v --顯示過程
-z --添加一個帶有0的最終覆蓋,以隱藏分解
【參數說明】
指定要覆蓋的文件名
【命令示例】
# shred -n 3 -u app 覆蓋app文件三次,並刪除
14.cat
【命令作用】
連接文件並在標准輸出上輸出。這個命令常用來顯示文件內容,或者將幾個文件連接起來顯示,或者從標准輸入讀取內容並顯示,它常與重定向符號配合使用。
【命令語法】
cat [選項] [參數]
【常用選項】
-E --在每行結束顯示 $
-n --給所有輸出行編號
-v --使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
【參數說明】
文件名
【命令示例】
(1)將123和456的內容輸入到789里
# cat 123 456 > 789
(2)顯示123文件內容和換行符
# cat -E 123
(3)顯示123文件內容
# cat 123
(4)顯示123文件內容和行號
# cat -n 123
15.nl
【命令作用】
計算文件中行號。nl 可以將輸出的文件內容自動的加上行號!其默認的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 。 等等的功能。
【命令語法】
nl [選項] [參數]
【常用選項】
-b a --表示不論是否為空行,也同樣列出行號(類似 cat -n)
-b t --如果有空行,空的那一行不要列出行號(默認值)
【參數說明】
文件名
【命令示例】
(1)用nl列出/(根目錄)123文件里的內容
# nl /123
(2)用 nl 列出/123文件的內容,空本行也加上行號
# nl -b a /123
16.tac
【命令作用】
倒序查看指定文件內容
【命令語法】
tac [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
# tac /123 --倒敘查看/123文件內容
17.more
【命令作用】
類似 cat ,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能 。more命令從前向后讀取文件,因此在啟動時就加載整個文件。
【命令語法】
more [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
(1)# more [文件名] --分屏查看指定文件內容
(2)顯示文件中從第3行起的內容
# more +3 /123
(3)從文件中查找第一個出現"1a"字符串的行,並從該處前兩行開始顯示輸出
# more +/1a /123
(4)列一個目錄下的文件,由於內容太多,我們應該學會用more來分頁顯示。這得和管道 | 結合起來
# ls -l | more -7
解釋:每頁顯示7個文件信息,按 Ctrl+F 或者 空格鍵 將會顯示下5條文件信息。
18.less
【命令作用】
工具也是對文件或其它輸出進行分頁顯示的工具,應該說是Linux正統查看文件內容的工具,功能極其強大。less 的用法比起 more 更加的有彈性。在 more 的時候,我們並沒有辦法向前面翻, 只能往后面看,但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往后翻看文件,更容易用來查看一個文件的內容!除此之外,在 less 里頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜。
【命令語法】
less [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
(1)# less 123 --查看文件123內容
(2)ps查看進程信息並通過less分頁顯示
# ps -ef |less
(3)瀏覽多個文件
# less 123 456
輸入 :n 后,切換到 456;輸入 :p 后,切換到123
*附加備注*
1.全屏導航
ctrl + F --向前移動一屏
ctrl + B --向后移動一屏
ctrl + D -- 向前移動半屏
ctrl + U -- 向后移動半屏
2.單行導航
j -- 向前移動一行
k -- 向后移動一行
3.其它導航
G -- 移動到最后一行
g -- 移動到第一行
q / ZZ -- 退出 less 命令
4.其它有用的命令
v -- 使用配置的編輯器編輯當前文件
h -- 顯示 less 的幫助文檔
&pattern -- 僅顯示匹配模式的行,而不是整個文件
5.標記導航
當使用 less 查看大文件時,可以在任何一個位置作標記,可以通過命令導航到標有特定標記的文本位置:
ma -- 使用 a 標記文本的當前位置
'a -- 導航到標記 a 處
19.head
【命令作用】
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標准輸出中,而 tail 想當然爾就是看檔案的結尾。
【命令語法】
head [選項] [參數]
【常用選項】
-q --隱藏文件名
-v --顯示文件名
-c --<字節> 顯示字節數
-n --<行數> 顯示的行數
-# --顯示文件開頭#行內容
【參數說明】
文件名
【命令示例】
(1)#head 123 --顯示文件123前十行內容
(2)#head -12 123 --顯示文件123前十二行內容
(3)# head -n -5 123 --顯示文件123除了最后5行的全部內容
(4)# head -c -7 123 --顯示文件123的除了最后7個字節以外的內容
20.tail
【命令作用】
從指定點開始將文件寫到標准輸出.使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,並且不但刷新,使你看到最新的文件內容.
【命令語法】
tail [必要參數] [選擇參數] [文件]
【常用選項】
-f -- 跟蹤顯示文件新追加的內容
-# --顯示末尾到#號的內容
-n --顯示行數
【參數說明】
文件名
【命令示例】
(1)循環查看文件內容
# tail -f 888 --ping 192.168.0.1 > 888 & //在后台ping遠程主機。並輸出文件到888;這種做法也使用於一個以上的檔案監視。用Ctrl+c來終止
(2)從第5行開始顯示文件
# tail -n +5 123 --從第五行開始顯示文件123的內容
(3)顯示文件末尾內容
# tail -n 5 123 --從后五行開始顯示文件123的內容
21.grep
【命令作用】
文本過濾,模糊查找
【命令語法】
grep [選項] [需要查找的內容] [參數]
【常用選項】
--color=auto --對匹配到的文本着色顯示
-v --顯示不能夠被pattern匹配到的行
-i --忽略字符大小寫
-n --顯示行號
-q --靜默模式,不輸出任何信息;
-A # --after, 后#行
-B # --before, 前#行
-C # --context, 前后各#行
【參數說明】
文件名
【命令示例】
(1)# grep a /123 --在根目錄下的文件123中查找含字母a的行
(2)# grep -i a /123 --在根目錄下的文件123中查找含a或者A的行
(3)# grep -n a /123 --在根目錄下的文件123中查找含a的行,並顯示行號
(4)# grep -v a /123 --在根目錄下的文件123中查找不含a的行
22.cut
【命令作用】
剪切
【命令語法】
cut [選項] [文件]
【常用選項】
-d --指明分隔符 (通常與-f一起使用)
-f --指定區域
【參數說明】
文件名
【命令示例】
# cut -d : -f 1,4,7 /etc/passwd --顯示etc目錄下passwd文件的第1,4,7行
23.sort
【命令作用】
對文件進行排序
【命令語法】
sort [選項] [參數]
【常用選項】
-f --忽略字符大小寫
-r --逆序
-t DELIMITER --字段分隔符
-k # --以指定字段為標准排序
-n --以數值大小進行排序
-u --uniq,排序后去重
【參數說明】
文件名
【命令示例】
(1)# sort -r /123 以倒序的方式顯示根目錄下123文件內容
(2)# sort -k 3 -t : -n /etc/passwd 以etc目錄中的passwd文件中的第三列為主,按數值方式排序
24.tr
【命令作用】
字符替換和刪除(通常接在管道符后面使用)
【命令語法】
tr [選項] [參數]
【常用選項】
-d --刪除文件中的指定字符
【參數說明】
源字符串
【命令示例】
(1)# echo "HELLO" | tr 'A-Z' 'a-z' --將大寫字母轉成小寫字母
(2)# echo "HELLO" | tr -d 'L,H' --刪除L和H這兩個字符
25.wc
【命令作用】
統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。
【命令語法】
wc [選項] 文件
【常用選項】
-c --統計字節數
-w --統計字數。一個字被定義為由空白、跳格或換行字符分隔的字符串
-l --統計行數
-m --統計字符數。這個標志不能與 -c 標志一起使用
【參數說明】
文件名
【命令示例】
(1)# wc -l /123 --查看123有多少行
(2)# wc -w /123 --查看123中有多少個字數
(3)# wc -c /123 --查看文件123的大小是多少
(4)# ls -l | wc -l --統計當前目錄下的文件數
26.uniq
【命令作用】
刪除排序文件中的重復行,通常與sort一起使用
【命令語法】
uniq [選項] [參數]
【常用選項】
-c --顯示每行重復出現的次數
-d --僅顯示重復過的行
-u --僅顯示不曾重復的行
【參數說明】
文件名
【命令示例】
(1)查找文件123中的重復行
# sort 123 |uniq -d
(2)統計所有字符出現的次數
# sort 123 |uniq -c
(3)查找123中僅出現過一次的行
# sort 123 |uniq -u
27.tee
【命令作用】
既輸出到文件又輸出到屏幕
【命令語法】
tee [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
# ls | tee 123 --將ls看到的內容輸出到屏幕並寫入到555.log文件里
28.diff
【命令作用】
比較文件之間的差異
【命令語法】
diff [參數] [文件1或目錄1] [文件2或目錄2]
【常用選項】
無
【參數說明】
文件1或目錄1
文件2或目錄2
【命令示例】
# diff a1 a2 --對比a1和a2的不同
29.du
【命令作用】
查看使用空間,但是與df命令不同的是Linux du命令是對文件和目錄磁盤使用的空間的查看,還是和df命令有一些區別的.
【命令語法】
du [選項] [參數]
【常用選項】
-s --僅顯示總計,只列出最后加總的值
-h --以K,M,G為單位,提高信息的可讀性
-a --顯示目錄中個別文件的大小
【參數說明】
目錄名
【命令示例】
(1)# du -s /home --顯示home目錄的大小
(2)# du -h /home --顯示home目錄大小。以K,M,G為單位
(3)# du -a /mnt --顯示mnt目錄下的文件大小詳細情況
30.ln
【命令作用】
創建軟硬鏈接,不帶選項為硬鏈接。
為某一個文件在另外一個位置建立一個同步的鏈接.當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。
【命令語法】
ln [選項] [參數]
【常用選項】
-b --刪除,覆蓋以前建立的鏈接
-s --軟鏈接(符號鏈接)
【參數說明】
源文件
被鏈接的文件
【科普】:
Linux文件系統中,有所謂的鏈接(link),我們可以將其視為檔案的別名,而鏈接又可分為兩種 : 硬鏈接(hard link)與軟鏈接(symbolic link),硬鏈接的意思是一個檔案可以有多個名稱,而軟鏈接的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬鏈接是存在同一個文件系統中,而軟鏈接卻可以跨越不同的文件系統
軟鏈接:
1.軟鏈接,以路徑的形式存在。類似於Windows操作系統中的快捷方式
2.軟鏈接可以 跨文件系統 ,硬鏈接不可以
3.軟鏈接可以對一個不存在的文件名進行鏈接
4.軟鏈接可以對目錄進行鏈接
硬鏈接:
1.硬鏈接,以文件副本的形式存在。但不占用實際空間
2.不允許給目錄創建硬鏈接
3.硬鏈接只有在同一個文件系統中才能創建(不能跨分區進行)
區別:
a.硬鏈接不會產生新的inode,軟鏈接則會產生新的inode
b.刪除源文件之后,硬鏈接仍然可用,但軟鏈接就不可用
c.硬鏈接只能用於文件,而軟鏈接可以用於文件和目錄
d.硬鏈接不能跨分區,而軟鏈接可以
這里有兩點要注意:
第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化
第二,ln的鏈接又分軟鏈接和硬鏈接兩種,軟鏈接就是ln –s 源文件 目標文件,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接 ln 源文件 目標文件,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。
ln指令用在鏈接文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則會把前面指定的所有文件或目錄復制到該目錄中。若同時指定多個文件或目錄,且最后的目的地並非是一個已存在的目錄,則會出現錯誤信息
【命令示例】
(1)# ln -s 123 link123 --為123文件創建軟鏈接link123,如果123丟失,link123將失效
(2)# ln 123 ln123 --為123創建硬鏈接ln123,123與ln123的各項屬性相同
(3)結合前兩步示例,鏈接完畢后刪除和重建鏈接原文件
解釋:
1.源文件123被刪除后,並沒有影響硬鏈接文件;軟鏈接文件在Linux系統下不斷的閃爍,提示源文件123已經不存在
2.重建源文件123后,軟鏈接不在閃爍提示,說明已經鏈接成功,找到了鏈接文件系統;重建后,硬鏈接文件並沒有受到源文件影響,硬鏈接文件的內容還是保留了刪除前源文件的內容,說明硬鏈接已經失效
31.type
【命令作用】
查看命令的類型
例:
alias:別名
keyword:關鍵字,Shell保留字
function:函數,Shell函數
builtin:內建命令,Shell內建命令
file:文件,磁盤文件,外部命令
unfound:沒有找到
【命令語法】
type [選項] [參數]
【常用選項】
-t --簡單顯示命令屬於外部命令,內部命令還是別名命令
-p --若命令為外部命令,則顯示其絕對路徑
【參數說明】
命令名
【命令示例】
(1)type cat --查看cat屬於什么命令
(2)type -t cat --簡單顯示cat屬於什么命令
(3)type -p cat --顯示外部命令cat的絕對路徑
32.file
【命令作用】
確定文件類型
如果文件系統確定成功,則輸出文件類型,輸出的文件類型如下:
text :文件中只有ASCII碼字符,可以將字符終端顯示文件內容
executable:文件可以運行
data:其他類型文件,此類文件一般是二進制文件或不能再字符終端上直接顯示的文件
【命令語法】
file [選項] [參數]
【常用選項】
無
【參數說明】
文件名,或者目錄名
【命令示例】
# file 123 --查看文件123的類型
33.stat
【命令作用】
查看文件屬性
【命令語法】
stat [選項] [參數]
【常用選項】
-f --顯示文件系統狀態
【參數說明】
文件名,或者目錄名
【命令示例】
# stat 123 --顯示文件123的屬性
34.which
【命令作用】
我們經常在Linux要查找某個文件,但不知道放在哪里了,可以使用下面的一些命令來搜索:
which --查看可執行文件的位置
whereis --查看文件的位置
locate --配合數據庫查看文件位置
find --實際搜尋硬盤查詢文件名稱
which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令
【命令語法】
which [可執行的文件名稱]
【常用選項】
無
【參數說明】
命令名
【命令示例】
(1) # which which --用which去找出which
解釋:竟然會有兩個which,其中一個是alias(別名命令),意思是輸入which會等於后面的那串命令
(2)# which cd --查找cd的絕對路徑
解釋:發現並沒有找到cd的位置(絕對路徑),因為 cd 是 bash 內建的命令,但是 which 默認是找 PATH 內所規范的目錄,所以找不到
35.whatis
【命令作用】
查看幫助文件的位置。
使用makewhatis命令可將當前系統上所有的幫助手冊及與之對應的關鍵字創建為一個數據庫
【命令語法】
whatis [選項] [參數]
【常用選項】
無
【參數說明】
命令名
【命令示例】
# whatis cat --查看命令cat的作用
36.whereis
【命令作用】
whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息
和find相比,whereis查找的速度非常快,這是因為Linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和下面即將介紹的locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率自然會很高。
但是該數據庫文件並不是實時更新,默認情況下時一星期更新一次,因此,我們在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻無法查找到,原因就是因為數據庫文件沒有被更新。
【命令語法】
whereis [選項] [參數]
【常用選項】
-b --僅查找二進制程序和命令
-m --僅查找man幫助手冊文件
-s --僅查找源代碼文件
【參數說明】
命令名
【命令示例】
(1)查看cp文件及相關文件路徑
# whereis cp
(2)# where -b cp --只將cp的二進制文件查找出來
# where -m cp --查找cp的man幫助
# where -s cp --查找cp源代碼文件
37.locate
【命令作用】
快速定位文件的路徑。
依賴於事先構建的索引;索引的構建是在系統較為空閑時自動進行(周期性任務);手動更新數據庫(updatedb);索引構建過程需要遍歷整個根文件系統,極消耗資源;
工作特點是:查找速度快,模糊查找,非實時查找
【命令語法】
locate [選項] [參數]
【常用選項】
無
【參數說明】
文件名
【命令示例】
(1)# locate pwd --和pwd相關的所有文件
(2)# locate /etc/sh --搜索在etc目錄下所有以sh開頭的文件
38.find
【命令作用】
用於在文件樹種查找文件,並作出相應的處理
【命令語法】
find [選項] [參數]
【常用選項】
-name --按照文件名查找文件
-iname --按照文件名查找文件,不區分字母大小寫
-user --查找屬於指定用戶的所有文件
-group --按照文件所屬的組來查找文件
-uid -- 查找屬主為指定的 UID 號的文件
-gid --查找屬組為指定的 GID 號的文件
-size --根據文件大小來查找文件
-type --根據文件類型查找
f (普通文件)
d (目錄文件)
b (塊設備)
c (字符設備)
s (套接字文件)
p (管道文件)
l (符號鏈接文件)
-exec COMMAND {} \ --對查找到的每個文件執行由COMMAND指定的命令;{}: 用於引用查找到的文件名稱自身
注意:find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令;有些命令不能接受過多參數,此時命令執行可能會失敗;另一種方式可規避此問題:
【參數說明】
要查的起始目錄,查找的名稱是什么
【命令示例】
(1)根據關鍵字查找
# find . -name "*.1"
解釋:在當前目錄中查找,以1結尾的文件, "." 代表當前目錄
(2)根據權限進行查找
# find . -perm 777
解釋:在當前目錄中查找權限為777的文件
(3)按類型查找
# find -type f -name "*6"
解釋:在當前目錄中,查找以6結尾的普通文件
(4)按大小查找文件
# find . -size +1000c -print
解釋:在當前目錄下,查找大於1K的文件
39.help
【命令作用】
查看內部命令的幫助信息
【命令語法】
help [選項] [參數]
【常用選項】
無
【參數說明】
指定命令名顯示幫助信息
【命令示例】
# help pwd --查看內部命令pwd的幫助信息
40.man
【命令作用】
命令幫助手冊
【命令語法】
man [選項] [參數]
【常用選項】
無
【參數說明】
所要搜索幫助信息的命令
【命令示例】
# man cd 查看cd的幫助信息