1. 程式人生 > >練習筆記:linux常見命令

練習筆記:linux常見命令

一 命令的基本格式
df 檢視掛載的盤
linux的管理員是root  而非adminstrator [root@localhost~ ]#
root 當前登入的使用者
locahost 主機名 和windows不同點在於 同一個區域網絡下主機名可以相同 windows則不可以
~當前所在的目錄(家目錄)  超級使用者是在root  普通使用者在home
#超級使用者的提示符號 普通使用者則是$提示 pwd可以檢視當前所在的目錄
cd 切換目錄 cd/usr/local/src  就切換到了src目錄下 命令的格式: 命令【選項】【引數】
選項是可以任選的 用來調整命令的的功能  多個選項可以寫在一起 比如 ls -al 顯示所有檔案的和其詳細資訊
簡化選項 用-   完整選項-- 比如 -a與--all都是一樣的功能 顯示當前目錄下的所有檔案 包括隱藏檔案 
注意:選項不能單獨使用 必須和命令一起
比如顯示當前目錄下的所有檔案  ls -a 而不能直接-a     注意!!老問題  Is command not found  報錯 是因為  ls而非Is  L的小寫 而非i的大寫  新手常見錯誤 查詢目錄中的內容 ls 也注意 !linux中區分大小寫!!
ls [選項][檔案或者目錄]  如果省略檔案或者目錄 則預設是使用者當前所在的目錄
ls -a :顯示所有檔案 包括隱藏檔案  在linux中  開頭是.的檔案都是隱藏檔案   隱藏檔案可以輕易的查詢到不管是linux還是windows  隱藏檔案一般是系統檔案 以免被誤操作
ls -l 顯示詳細資訊   會顯示:檔案許可權 引用計數(表示被呼叫的次數)  所有者 所屬組 檔案大小 最後一次的修改時間 檔名
Is -d 檢視目錄屬性
Is -h 人性化顯示檔案大小  比如把1200直接顯示為1.2k
ls -i 顯示inode   inode 即是檔案的ID號 每個檔案都有一個id號 系統查詢的時候通過id號查詢檔案  這個命令顯示檔案的id號 linux中的許可權:  預設是10位   第一位程式碼檔案型別  linux沒有拓展名這種東西  只能靠第一位來表示檔案型別 只有7種
在linux中一切皆是檔案 包括硬體!
常見 的三種   如果第一位是- 表示是個普通檔案  d表示目錄  |軟連結檔案(快捷方式)
系統的四種 塊裝置檔案 套接字檔案  字元裝置檔案 管道檔案 /dev目錄下的就是硬體裝置檔案 除了第一位之外  剩下的9位 每三位為一組  分別是  u 所有者  g所屬組 o 其他人  比如 使用者組 同一個使用者組裡許可權一樣
r讀 w寫 x執行 二,檔案處理命令
2.1.目錄處理命令    目錄是也是檔案  目錄檔案  類似windos中資料夾的概念 1.建立目錄mkdir   英文意思:make directories
mkdir -p 【目錄名】
-p 是遞迴建立   比如要建立nchu下面的lxx  而且當前沒有nchu這個目錄的時候  就要mkdir -p nchu/lxx  注意:用ls查詢的時候 子目錄是不會顯示出來的  需要用cd命令進去 2.切換所在目錄:cd
cd【目錄】 英文意思 change directory
cd ~   或者cd  入當前使用者的家目錄(即使使用者登陸所在的目錄)    ps:補充  ctrl + l 清屏
cd - 回到上次的目錄
cd .. 進入上級目錄
cd . 進入當前目前 (等於沒有動) 相對路徑:參照當前所在目錄 進行查詢  比如 [root@localhost ~]# cd ../usr/local/src/       (..進入上級目錄)
絕對路徑:參照根目錄 一級一級的查詢  linux的根目錄是root  也就是超級使用者的家目錄 tab 可以按兩下 進行目錄補全和目錄補全 比如cd  /  按兩下tab 可以列出所有當前目錄下的目錄和檔案 3.刪除空目錄
rmdir   英文意思:remove empty directories
只能刪除空目錄!  比如刪除之前的lxx  不能刪除nuch 裡面有laixiaoxing 這個目錄 所以非空
所以用的比較少 常見的是 rm  -rf    英文意思:remove
rm 可以直接刪除檔案  但是如果要刪除目錄  需要加上r選項    比如 rm -r   (但是刪的時候每個檔案都問一次yes or no)
rm -rf    可以強制刪除目錄和檔案  選項f是強制刪除  注意!! 如果使用了 rm -rf  / 會把根目錄的東西全部刪掉  這是讓linux 自殺     linux的root是真的root  許可權非常高 幾乎到頂
注意!!!  rm -rf /tmp/ 是刪除這個系統目錄   tmp是臨時檔案的目錄      會造成一定影響 
                  rm -rf /tmp/* 是刪除這個目錄下面的所有檔案
linux 刪除一定要小心 4.複製命令 
cp  英文copy
cp  【選項】【原檔案或者目錄】【目標目錄】
選項:
-r  複製目錄
-p 連帶檔案屬性複製
-d 若原始檔是連結檔案 則複製連結屬性
-a 相當於 -pdf    如果加了-a選項  複製的檔案或者目錄將與原始檔和目錄一模一樣  包括時間  但是i節點不一樣 !! 與硬連結有區別 可以在進行復制的時候對檔案進行改名
cp  annaconda-ks.cfg  /tmp/ana   則是將 annaconda-ks.cfg 複製到了tmp目錄下 且檔名為ana    (注意 linux下沒有後綴名這說法) 5.剪下或者改名命令:mv 命令英文願意:move
格式: mv 【原檔案或者目錄】【目標目錄】    將檔案剪下到另一個目錄中去 注意:在剪下檔案和目錄的時候都不需要 加-r 改名的用法:原始檔所在目錄和目標目錄在同一個目錄下  就是改名  linux通過這種方法給檔案改名
三,linux常見目錄的作用 在掛載的時候 第一塊盤叫sda  第二塊叫sdb  依次類推   
第一塊盤的 第一個邏輯分割槽 叫sda1  第二個邏輯分割槽 sda2 等等
第二塊盤的邏輯分割槽依次叫sdb1  sdb2 等等 cd / 即可到根目錄下  ls可以列出所有目錄 常見目錄 以及作用
/根目錄 
/bin  命令儲存目錄(普通使用者就可以讀取的命令)    
根目錄下的bin和sbin 與usr目錄下的bin和sbin 這四個目錄都是用來儲存作業系統命令的
sbin 裡面的命令 只有超級使用者可以執行
/sbin
/usr
/boot  啟動目錄 啟動相關檔案 
/dev 裝置檔案儲存目錄  特殊檔案儲存  裡面都是硬體檔案
/etc 配置檔案儲存目錄 
/home 普通使用者的家目錄
/lib 系統庫的儲存目錄 以下三個是空目錄  用來掛載裝置  掛載類似於分配碟符  只要是空目錄都可以  包括自己建的
/mnt 系統掛載目錄 掛載移動U盤    老式的linux中只有這個
/media 掛載目錄   掛載光碟
 /misc   掛載目錄  掛載磁帶機 /root 超級使用者的家目錄 不代表是根目錄
/tmp 臨時目錄 儲存臨時資料
/sbin 命令儲存目錄(超級使用者才能使用的目錄) /proc 直接寫入記憶體的   這兩個不能直接操作 是記憶體的掛載點 也就是記憶體的掛載點
/sys
/usr 系統軟體資源目錄
    /usr/bin/系統命令(普通使用者)
   /usr/sbin/系統命令(超級使用者)
/var 系統相關文件內容 可以在家目錄root或者home 下  以為tmp  中隨便玩  其他檔案不能隨便改
四:連結命令
ln  英文意思 link   功能描述 生成連結檔案
ln -s [原檔案][目標檔案]
選項 : -s 建立軟連結 硬連結:1.擁有相同的i節點和儲存bloock塊  可以看作是同一個檔案 2.可通過i節點識別 3.不能跨分割槽  4.不能針對目錄使用 硬碟的分割槽:分為資料塊  索引表  索引表中有檔案的id號   
如果檔案a與檔案b 與索引表中的id號都相同  那就是這兩個檔案是硬連結  也就是是同一個檔案  即使檔名不一樣 檔名就算不一樣  檔案也是一樣的  包括i節點
即使建立硬連結後 刪除了其中一任何一個檔案 另一個不會受影響 vi 編輯器開啟某個檔案  vi 【路徑+檔名】
比如:vi  /tmp/ana.hard    
修改:
:w   儲存檔案但不退出vi
:w file 將修改另外儲存到file中,不退出vi
:w!   強制儲存,不推出vi
:wq  儲存檔案並退出vi
:wq! 強制儲存檔案,並退出vi
q:  不儲存檔案,退出vi
:q! 不儲存檔案,強制退出vi
:e! 放棄所有修改,從上次儲存檔案開始再編輯 軟連結:
1.類似windows快捷方式
2.軟連結擁有自己的i節點和block塊,但是資料塊中只儲存原檔案的路徑和檔名,沒有實際的檔案資料
3.lrwxrwxrwx  l軟連結  rwx讀寫執行  三個許可權
軟連結的檔案許可權都是rwxrwxrwx  (那就是777許可權111 111 111)    雖然顯示的是777但是實際上檔案許可權取決於原檔案
4.修改任意檔案,另一個都改變
5.刪除原檔案 軟連結不能使用 注意!! 軟連結  如何原檔案刪除或者移動了位置   就不能用了  但是windows上移動原檔案 不會有影響
 注意!! 建立軟連結 的時候路徑  一定要寫絕對路徑  如果不寫絕對路徑 只會在當前目錄尋找原檔案  找不到就會閃爍報錯 五:檔案搜尋命令
1.檔案搜尋命令 locate
格式: locate  檔名
touch 是建立一個新檔案  touch lxx   在當前目錄建立了一個lxx檔案
比如locate  .log 既可以搜尋到所有帶這個檔名的檔案   並不僅限於在當前資料夾尋找
locate不能搜尋到最新的資料 因為locate是搜尋   /var/lib/mlocare   這個後臺資料庫  所以會非常快  但是這個資料庫是一天一更新  而非時刻更新 所以不能搜尋到最新的檔案
 但是 可以用updatedb  這個命令強制更新下資料庫   再查詢 則可以找到了 locate的缺點是隻可以按照檔名來搜尋 (類似是模糊查詢) 優點是快  
注意!!!  locate是按照 etc/updatedb.conf  配置檔案來進行搜尋   在配置檔案中設定了一堆不搜尋的目錄 比如tmp u盤  .svn .git等等
所以即使在tmp中有符合條件的檔案 也不會搜尋出來 配置檔案有三個命令分別如下
PRUNE_BIND_MOUNTS="yes"  是否生效配置  yes為生效 no不生效
PRUNEFS=#搜尋時,不搜尋的檔案系統
PRUNENNAMES=#搜尋時 不搜尋的檔案型別
 PRUNEPATHS=#搜尋時,不搜尋的路徑 2.搜尋命令的命令 whereis
  用來搜尋命令檔案所在的位置
比如 whereis ls   就可以找到ls命令所在的檔案位置 類似的命令還有 whoami 檢視我是誰  
whatis  ls  檢視ls命令是幹嘛的 注意:只能whereis 只能查詢系統命令  普通檔案是不能找到的    
另外:  whereis  會把這個命令的可執行檔案和幫助文件都找出來
如果是加了選項
-b 只查詢可執行檔案  一般都在bin或者sbin裡面
-m只查詢幫助檔案 which  會看到命令所在位置和這個命令的別名  前提是有別名 注意:shell自帶的命令 用whereis 或者whichis是找不到的  比如cd 補充:在linux中可執行檔案必須要寫絕對路徑才能執行 但是這樣很麻煩  每次都要輸入那麼多的東西  因此有了環境變數$PATH 用於簡化使用者的操作環境
$PATH 在上面定義了路徑  就可以不用打絕對路徑    這個跟windows都是一樣的  注意!用echo $PATH可以檢視到  必須是$PATH  小寫是不支援的 3.linux最強大的命令  find命令
find [搜尋範圍][搜尋條件]
#搜尋檔案 find / -name install.log  這個範圍搜尋會非常慢  耗費大量系統資源  搜了整個根  這個只會搜尋的install.log 這個檔案  而非是模糊查詢  除非使用萬用字元
#避免大範圍搜尋 會非常耗費系統資源
#find是在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配 萬用字元: *    匹配任意內容 ?  匹配任意一個字元 [ ]   匹配任意一箇中括號內的字元 find /root -name "install.log *"  表示在root目錄下搜包含install.log的檔案 find /root -name "*[cd]" 表示搜尋所有以c或者d結尾的檔案    注意:不加萬用字元  就是完全匹配 要一模一樣才行 find /root -iname install.log     -iname是不區分大小寫的完全匹配     find /root  -user root   搜尋所有者是root的檔案       -user是按所有者搜尋 find  user 按所有者查詢檔案 find /root  -nouser   查詢沒有所有者的檔案  (外來檔案  以及核心產生的檔案  以及垃圾檔案 都是沒有所有者的)   -mtime 選項  按時間查詢檔案 比如  find /var/log/ -mtime +10  查詢/var/log/目錄 下  10天前修改的檔案 -10 10天內修改的檔案 10  10天當天修改的檔案 +10 10天前修改的檔案 atime 檔案訪問的時間 ctime 改變檔案屬性的時間 mtime 修改檔案內容的時間 find . -size  25k    按大小查詢  查詢在當前目錄下大小是25K的檔案    .表示當前目錄 -25k 小於25k   +25k 大於25k      這個k是小寫 也可以按M查詢    M是大寫 注意 如果按照大小查詢的時候  不帶單位 則是以資料塊為單位 按照i節點搜尋檔案 find  /root  -inum 262421  查詢在root目錄下  i節點是262421的檔案 邏輯選項  -a    英文and  邏輯與  兩個條件都滿足               -o  英文or  邏輯或  兩個條件滿足一個即可  find /etc -size +20k -a -size -50k   查詢/etc目錄下  大於20kb並且小於50kb的檔案 補充:-exec/-ok 命令 {} \;  對搜尋結果進行操作     如果是-ok 命令 {} \;  則會有不斷的問y  或者n  比如  find /etc -size +20k -a -size -50k -exec ls -lh {} \;  查詢/etc目錄下 大於20kb且小於50kb的檔案  並顯示詳細資訊 4.grep命令  grep [選項] 字串 檔名 在檔案當中匹配符合條件的字串   。  是在檔案裡面進行查詢匹配  查詢檔案裡面的內容   包含這個字串的內容 選項: -i 忽略大小寫 -v 排除指定字串 比如    grep ”size“  install.log  則是在install.log裡面把所有包含size的字串  整個列出來 find命令:在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配  萬用字元是完全匹配  grep命令:在檔案當中搜尋符合條件的字串,如果需要匹配,則使用正則表示式進行匹配,正則表示式時包含匹配 即是會把包含這個字串的都列出來 六:幫助命令 man 命令名  英文意思 manual 文件 比如 man ls 進入幫助文件  在幫助文件中 可以按上下方向鍵移動   也可以按n鍵下移  shift+n 上移    如果要確定找某個選項 只需要按/ + -選項名  比如 /-d  則會查詢-d選項 按 q是退出 幫助文件   man的級別  可以通過man  man檢視到 1:檢視命令的幫助 2:檢視可被核心呼叫的函式的幫助 3:檢視函式和函式庫的幫助 4:檢視特殊檔案的幫助(主要是/dev目錄下的檔案) 5:檢視配置檔案的幫助 6:檢視遊戲的幫助 7:檢視其他雜項的幫助 8:檢視系統管理員可用命令的幫助 9:檢視和核心相關檔案的幫助   (這個未必存在 ) man -f  命令   檢視命令的幫助級別   與whatis有異曲同工之妙  輸出是一模一樣的 舉例  man -f passwd  會看到passwd命令有1和5兩個幫助級別  用 man 5 passwd 可以檢視到passwd的命令配置檔案資訊 比如 man  -4  null    man  -8   ipconfig 如果一個命令有多個等級號  需要手動指定等級  否則預設開啟的是最小的那個等級號的幫助 man -k 命令  可以檢視到所有包含該命令名的幫助內容 其他幫助命令 比如 --help      ls --help shell  linux的命令直譯器作用  使用者與計算機互動的介面  help shell 獲取shell命令幫助 whereis ls 只要能找到命令可執行檔案在哪 就不是shell自帶的命令 help cd  檢視cd的幫助文件 注意!!!help 只能獲取內部命令的幫助 比如cd     ls這種非shell自帶的命令是不行的 info 也可以獲取幫助    比如 info ls  但是info 命令進去的是一個大的幫助文件    info ls 是進入了這個文件並定位到了ls 這個小節的內容 info命令 -回車:進入子幫助頁面(帶有*號標記) -u:進入上層頁面 -n:進入下一個幫助小節 -p:進入上一個幫助小節 -q:退出 七:壓縮與解壓縮命令 windows下的常用壓縮格式: .zip   .gz   .bz2    .rar    .7z linux 下的常用壓縮格式: .zip    .tar.gz      .tar.bz2 .zip 在兩個系統上都是通用的 命令格式 zip  壓縮檔名  原始檔      注意!!壓縮檔名可以不是一定要用.zip結尾   因為linux不是以拓展名識別檔案 軟體包 常用的在linux中都是用紅顏色表示 壓縮目錄的方式 zip -r 壓縮檔名 源目錄     ps:加上選項引數 -r 就可以壓縮目錄檔案 解壓縮命令   unzip  解壓縮.zip檔案 linux中的典型壓縮格式 .gz  與windows不通用  但是可以在windows下解壓縮    但是windows下的壓縮格式rar 不能在linux下不能解壓縮 gzip 原始檔  壓縮為.gz格式的壓縮檔案  原始檔會消失    會自動生成一個原始檔名.gz的壓縮檔案 gzip -c 原始檔 >壓縮檔案 壓縮為.gz格式 原始檔保留 例如: gzip -c cangls > cangls.gz 這個是用了輸出重定向   是把命令的結果輸出到指定檔案 比如 ls >aaa   這時候把ls命令的結果輸出到了aaa檔案中 用cat命令檢視aaa檔案內容   cat aaa 可以看到 gzip -r 目錄 壓縮目錄下所有的子檔案 但是不能壓縮目錄 解壓縮命令 gunzip  壓縮檔名   或者  gzip -d  壓縮檔名 解壓縮目錄   gunzip  -r  目錄名 .bz2格式壓縮 bzip2 原始檔名 壓縮為 .bz2格式 不保留原始檔 bzip2 -k 原始檔 壓縮只之後保留原始檔 注意:bzip2命令不能壓縮目錄 解壓縮命令 bzip2 -d 壓縮檔名 解壓縮  -k 保留壓縮檔案 或者 bunzip2 壓縮檔案 解壓縮 -k 保留壓縮檔案 打包命令tar   將目錄打包為.tar 檔案   然後就可以用bzip 或者bzip2 命令進行壓縮 tar  -cvf 打包檔名 原始檔 選項:    -c :打包   -v:顯示過程: -f:指定打包後的檔名 例如:  tar -cvf laixiaoxing.tar  lxx 解打包命令 tar -xvf  已打包檔名 -x 解打包 快捷打包壓縮 tar -zcvf 壓縮包名.tar.gz 原始檔 -z:壓縮為.tar.gz 格式       補充:實際上是先打包為.tar格式,再壓縮為.gz格式 tar -zxvf 壓縮包名.tar.gz -x :解壓縮.tar.gz格式 tar  -jcvf 壓縮包名 .tar.bz2 原始檔 -j:壓縮為.tar.bz2格式 tar -jxvf 壓縮包名.tar.bz2 -x:解壓縮.tar.bz2格式 壓縮多個檔案的方法  只需要再原始檔後面再加個空格再加原始檔就行了 例如 tar -zcvf /tmp/test.tar.gz  jp anaconda-ks.cfg 檢視壓縮包內容 但是不解壓 tar -ztvf  壓縮包檔案 -t  即是test 可以檢視裡面的內容 八:linux的關機與重啟命令 date命令 可以檢視系統當前時間 shutdown 命令 shutdown 【選項】【時間】 -c  取消前一個關機命令 -h 關機 -r 重啟 時間處如果寫now  就是立刻生效 shutdown -r  05:30   這是意思在05:30分的時候重啟 但是一旦執行這個命令  控制檯會一直在等  將無法進行其他操作  按ctrl+c可以中止該命令 所以要讓這個命令在後臺執行 shutdown -r 05:30 & 此時想終止了  shutdown -c 即可 其他關機命令: halt  poweroff init 0 不建議用 其他重啟命令 reboot init 6 系統執行級別: 0關機 1單使用者  類似windows的安全模式  2不完全多使用者,不含FNFS服務  普通字元介面 3完全多使用者  一般啟動的就是3 4未分配 5圖形介面 6重啟 檢視當前系統的執行級別  runlevel 會顯示  上一級別 當前級別   如果是N  則表示空 3 cat /etc/inittab 進入系統啟動配置檔案 修改系統預設執行級別 id:3:initdefault  將3改成5就是圖形介面 前提是安裝了  也可以改成以上的除了0和6之外的選項 linux可以同時允許登陸256個使用者,一定要正確退出,不然就會佔掉一個位置 windows則差距太遠 windowsserver2003只允許同時登陸2個  2008 4個或者8個 退出登陸命令: logout 九:linux的掛載命令 在linux中所有儲存裝置 光碟 U盤等等都需要先掛載才能用 掛載命令 mount  檢視系統中已掛載的裝置  /dev/sda5 on / type ext4 (rw)  dev目錄儲存的硬體裝置   s表示sici介面  a表示第一個硬碟  b表示第二個  依次類推   5代表的是第一個邏輯分割槽   1234表示主分割槽 一個硬碟最多1個主分割槽      意思是sda5是/目錄 自動掛載 mount -a  根據配置檔案 /etc/fstab的內容 自動掛載 掛載命令格式 mount [-t 檔案系統] [-o 特殊選項] 裝置檔名 掛載點    (掛載點 是已經存在的空目錄) 選項: -t 檔案系統:加入檔案系統型別來指定掛載的型別 可以ext3 ext4 iso9660(這個是光碟型別)等檔案系統  在centOS6以上的版本上 ext4是預設 -o 特殊選項:可以指定掛載的額外選項 -o的特殊選項引數有如下: atime/noatime   更新訪問時間/不更新訪問時間  預設為更新 async/sync 非同步/同步 預設為非同步 defult 定義預設值 相當於這裡所有的預設值 auto/noauto 自動/手動  mount -a 命令執行時,是否自動安裝/etc/fstab檔案內容掛載  預設為自動 exec/noexec 執行/不執行  設定是否允許在檔案系統中執行可執行檔案 預設是exec允許 remount 重新掛載已經掛載的檔案系統 一般用於指定修改特殊許可權(因為修改完後需要重新掛載才會生效) rw/ro 讀寫/只讀  檔案系統掛載時,是否具有讀寫許可權  預設我rw suid/nosuid 具有/不具有suid許可權 預設是具有 user/nouser 允許/不允許 普通使用者掛載 設定檔案系統是否允許普通使用者掛載 預設是不允許 只有root可以掛載分割槽 usrquota 寫入代表檔案系統支援使用者磁碟配額 。預設是不支援 grpquota 寫入代表檔案系統支援組磁碟配額 預設是不支援 一般在linux中#是註釋  但是 在指令碼中  #!/bin/bash   這個#是表示之後的是指令碼命令 這個必須寫! 不然不是純的linux 指令碼比如包含複雜腳步 就執行不了 例如在home目錄下   vi hello.sh 進入之後 #!/bin/bash echo "hello word"  :wq儲存退出 chmod 755 hello.sh  賦予755許可權  即-rwxr-xr-x  也就是111101101  一定要賦予許可權 不然不能執行  然後用 ./hello.sh呼叫 或者 /home/hello.sh 呼叫 就可以輸出hello word 如果輸入命令  mount -o remount,noexec /home/  再執行hello.sh 則會許可權不夠   哪怕你是root 且檔案有執行許可權