1. 學會使用命令幫助
1.1. 概述
在linux終端,面對命令不知道怎麼用,或不記得命令的拼寫及引數時,我們需要求助於系統的幫助文件; linux系統內建的幫助文件很詳細,通常能解決我們的問題,我們需要掌握如何正確的去使用它們;
- 在只記得部分命令關鍵字的場合,我們可通過man -k來搜尋;
- 需要知道某個命令的簡要說明,可以使用whatis;而更詳細的介紹,則可用info命令;
- 檢視命令在哪個位置,我們需要使用which;
- 而對於命令的具體引數及使用方法,我們需要用到強大的man;
下面介紹這些命令;
1.2. 命令使用
檢視命令的簡要說明
簡要說明命令的作用(顯示命令所處的man分類頁面):
$whatis command
正則匹配:
$whatis -w "loca*"
更加詳細的說明文件:
$info command
使用man
查詢命令command的說明文件:
$man command
eg:man date
使用page up和page down來上下翻頁
在man的幫助手冊中,將幫助文件分為了9個類別,對於有的關鍵字可能存在多個類別中, 我們就需要指定特定的類別來檢視;(一般我們查詢bash命令,歸類在1類中);
man頁面所屬的分類標識(常用的是分類1和分類3)
(1)、使用者可以操作的命令或者是可執行檔案
(2)、系統核心可呼叫的函式與工具等
(3)、一些常用的函式與資料庫
(4)、裝置檔案的說明
(5)、設定檔案或者某些檔案的格式
(6)、遊戲
(7)、慣例與協議等。例如Linux標準檔案系統、網路協議、ASCⅡ,碼等說明內容
(8)、系統管理員可用的管理條令
(9)、與核心有關的檔案
前面說到使用whatis會顯示命令所在的具體的文件類別,我們學習如何使用它
eg:
$whatis printf
printf (1) - format and print data
printf (1p) - write formatted output
printf (3) - formatted output conversion
printf (3p) - print formatted output
printf [builtins] (1) - bash built-in commands, see bash(1)
我們看到printf在分類1和分類3中都有;分類1中的頁面是命令操作及可執行檔案的幫助;而3是常用函式庫說明;如果我們想看的是C語言中printf的用法,可以指定檢視分類3的幫助:
$man 3 printf
$man -k keyword
查詢關鍵字 根據命令中部分關鍵字來查詢命令,適用於只記住部分命令的場合;
eg:查詢GNOME的config配置工具命令:
$man -k GNOME config| grep 1
對於某個單詞搜尋,可直接使用/word來使用: /-a; 多關注下SEE ALSO 可看到更多精彩內容
檢視路徑
檢視程式的binary檔案所在路徑:
$which command
eg:查詢make程式安裝路徑:
$which make
/opt/app/openav/soft/bin/make install
檢視程式的搜尋路徑:
$whereis command
當系統中安裝了同一軟體的多個版本時,不確定使用的是哪個版本時,這個命令就能派上用場;
2.檔案及目錄管理
檔案管理不外乎檔案或目錄的建立、刪除、查詢、移動,有mkdir/rm/mv
檔案查詢是重點,用find來進行查詢;find的引數豐富,也非常強大;
檢視檔案內容是個大的話題,文字的處理有太多的工具供我們使用,在本章中只是點到即止,後面會有專門的一章來介紹文字的處理工具;
有時候,需要給檔案建立一個別名,我們需要用到ln,使用這個別名和使用原檔案是相同的效果;
2.1. 建立和刪除
- 建立:mkdir
- 刪除:rm
- 刪除非空目錄:rm -rf file目錄
- 刪除日誌 rm log (等價: $find ./ -name “log” -exec rm {} ?
- 移動:mv
- 複製:cp (複製目錄:cp -r )
檢視當前目錄下檔案個數:
$find ./ | wc -l
複製目錄:
$cp -r source_dir dest_dir
2.2. 目錄切換
- 找到檔案/目錄位置:cd
- 切換到上一個工作目錄: cd -
- 切換到home目錄: cd or cd ~
- 顯示當前路徑: pwd
- 更改當前工作路徑為path: $cd path
2.3. 列出目錄項
- 顯示當前目錄下的檔案 ls
- 按時間排序,以列表的方式顯示目錄項 ls -lrt
以上這個命令用到的頻率如此之高,以至於我們需要為它建立一個快捷命令方式:
在.bashrc 中設定命令別名:
alias lsl='ls -lrt'
alias lm='ls -al|more'
這樣,使用lsl,就可以顯示目錄中的檔案按照修改時間排序;以列表方式顯示;
-
給每項檔案前面增加一個id編號(看上去更加整潔):
>ls | cat -n
1 a 2 a.out 3 app 4 b 5 bin 6 config
注:.bashrc 在/home/你的使用者名稱/ 資料夾下,以隱藏檔案的方式儲存;可使用 ls -a 檢視;
2.4. 查詢目錄及檔案
搜尋檔案或目錄:
$find ./ -name "core*" | xargs file
查詢目標資料夾中是否有obj檔案:
$find ./ -name '*.o'
遞迴當前目錄及子目錄刪除所有.o檔案:
$find ./ -name "*.o" -exec rm {} \;
find是實時查詢,如果需要更快的查詢,可試試locate;locate會為檔案系統建立索引資料庫,如果有檔案更新,需要定期執行更新命令來更新索引庫:
$locate string
尋找包含有string的路徑:
$updatedb
與find不同,locate並不是實時查詢。你需要更新資料庫,以獲得最新的檔案索引資訊。
2.5. 檢視檔案內容
檢視檔案:cat vi head tail more
顯示時同時顯示行號:
$cat -n
按頁顯示列表內容:
$ls -al | more
只看前10行:
$head - 10 **
顯示檔案第一行:
$head -1 filename
顯示檔案倒數第五行:
$tail -5 filename
檢視兩個檔案間的差別:
$diff file1 file2
動態顯示文字最新資訊:
$tail -f crawler.log
2.6. 查詢檔案內容
使用egrep查詢檔案內容:
egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012
egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2
2.7. 檔案與目錄許可權修改
- 改變檔案的擁有者 chown
- 改變檔案讀、寫、執行等屬性 chmod
- 遞迴子目錄修改: chown -R tuxapp source/
- 增加指令碼可執行許可權: chmod a+x myscript
chmod語法
chmod語法:chmod [-cfvR] [--help] [--version] mode file...
引數說明
mode : 許可權設定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
- u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
- + 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
- r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
其他引數說明:
- -c : 若該檔案許可權確實已經更改,才顯示其更改動作
- -f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
- -v : 顯示許可權變更的詳細資料
- -R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更)
- --help : 顯示輔助說明
- --version : 顯示版本
chown語法:
chown [-cfhvR] [--help] [--version] user[:group] file...
引數 :
- user : 新的檔案擁有者的使用者 ID
- group : 新的檔案擁有者的使用者組(group)
- -c : 顯示更改的部分的資訊
- -f : 忽略錯誤資訊
- -h :修復符號連結
- -v : 顯示詳細的處理資訊
- -R : 處理指定目錄以及其子目錄下的所有檔案
- --help : 顯示輔助說明
- --version : 顯示版本
2.8. 給檔案增加別名
建立符號連結/硬連結:
ln cc ccAgain :硬連線;刪除一個,將仍能找到;
ln -s cc ccTo :符號連結(軟連結);刪除源,另一個無法使用;(後面一個ccTo 為新建的檔案)
2.9. 管道和重定向
- 批處理命令連線執行,使用 |
- 串聯: 使用分號 ;
- 前面成功,則執行後面一條,否則,不執行:&&
- 前面失敗,則後一條執行: ||
ls /proc && echo suss! || echo failed.
能夠提示命名是否執行成功or失敗;
與上述相同效果的是:
if ls /proc; then echo suss; else echo fail; fi
重定向:
ls proc/*.c > list 2> &l 將標準輸出和標準錯誤重定向到同一檔案;
等價的是:
ls proc/*.c &> list
清空檔案:
:> a.txt
重定向:
echo aa >> a.txt
2.10. 設定環境變數
啟動帳號後自動執行的是 檔案為 .profile,然後通過這個檔案可設定自己的環境變數;
安裝的軟體路徑一般需要加入到path中:
PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH
2.11. Bash快捷輸入或刪除
快捷鍵:
Ctl-U 刪除游標到行首的所有字元,在某些設定下,刪除全行
Ctl-W 刪除當前游標到前邊的最近一個空格之間的字元
Ctl-H backspace,刪除游標前邊的字元
Ctl-R 匹配最相近的一個檔案,然後輸出
2.12. 綜合應用
查詢record.log中包含AAA,但不包含BBB的記錄的總數:
cat -v record.log | grep AAA | grep -v BBB | wc -l