現(xiàn)在的主流Linux發(fā)行版中,默認(rèn)使用Bash解釋器作為Shell終端,而Bash作為主流Linux系統(tǒng)的Shell解釋器具有相當(dāng)大的優(yōu)勢。
1.可以使用方向鍵的上下鍵調(diào)取過去執(zhí)行的命令;
2.可以使用Tab補全功能,即手動打出前幾個字母,若以此字符串進行查詢只有一個命令或文件匹配,則補全此命令或文件名;若以此字符串查詢有多個命令或文件,則顯示查詢到的命令列表或文件列表;
3.可以使用glob通配符功能:
*:任意個任意字符;
?:單個任意字符;
[list]:匹配list中的任意字符;
[!list]:不匹配list中的任意字符;
[c1-c2]:匹配c1-c2中的任意單個字符,如[0-9],[a-z];
{string1,string2,...}:匹配{}中的任意一個字符串;
{c1..c2}:匹配c1-c2的全部字符,如{1..10};
4.可以自定義環(huán)境變量以滿足需求;
5.強大的批處理腳本;
幫助命令
作為自學(xué)者,首先需要學(xué)會的就是能看懂每個命令的幫助文檔,那么第一個需要掌握的Linux命令就應(yīng)該是man。
man命令
Linux下的幫助指令,通過man命令可以查看Linux中的命令幫助,配置文件幫助和編程幫助等信息。
語法:
man [options...]
常用選項:
-a:在所有的man手冊中搜索;
-f: 等價于whatis,顯示給定關(guān)鍵字的簡短信息;
-M:指定man手冊搜索的路徑;
-#:指定從#號man手冊中進行搜索;
例如:
man ls
man 8 ifconfig
man -f sleep
| 區(qū)段 | 說明 |
|---|---|
| 1 | 一般命令 |
| 2 | 系統(tǒng)調(diào)用 |
| 3 | 庫函數(shù),包括C標(biāo)準(zhǔn)庫 |
| 4 | 特殊文件和驅(qū)動程序 |
| 5 | 文件格式和約定 |
| 6 | 游戲和屏保 |
| 7 | 雜項 |
| 8 | 系統(tǒng)管理命令和進程 |
系統(tǒng)相關(guān)命令
echo命令
在終端上顯示字符串或變量提取出來的值。
語法:
echo [options...] [$variable|string]
例如:
echo "Hello Linux"
echo $PATH
date命令
顯示或設(shè)置Linux系統(tǒng)時間與日期。
語法:
date [options...] [+dateformat]
常用選項:
-d<字符串>:顯示字符串所指的時間與日期;
-s<字符串>:根據(jù)字符串設(shè)置系統(tǒng)時間與日期;
--help:在線幫助;
常用日期格式:
%H:小時,24小時制(00-23)
%I:小時,12小時制(01-12)
%M:分鐘,(00-59)
%S:秒鐘,(00-59)
%p:顯示am或pm
%Y:完整年份
%y:兩位年份
%m:月份
%d:一個月的第幾天(00-31)
%Z:顯示時區(qū)
%B:完整月份(January-December)
%b:縮寫月份(Jan-Dec)
%A:完整星期幾(Sunday- Saturday)
%a:縮寫星期幾(Sun-Sat)
%j:一年的第幾天(001-365)
%W:一年的第幾個星期(00-53)
%w:一個星期的第幾天(0代表星期天)
%X:顯示的時間格式相當(dāng)于%H:%M:%S
%F:相當(dāng)于%Y:%m:%d
%T:24小時制hh:mm:ss
例如:
date -d "1 day ago" +"%Y:%m:%d"(顯示一天前的日期)
date -d "2017-06-18" +"%Y/%m/%d %H:%M:%S"(日期格式轉(zhuǎn)換,結(jié)果為:2017/06/18 00:00:00)
date -s "2020-01-01 00:00:00" (設(shè)置系統(tǒng)全部時間)
ps命令
查看當(dāng)前系統(tǒng)的進程狀態(tài)。
常用選項:
-a:顯示所有進程;
-u:用戶以及其他信息;
-x:顯示所有程序,不以終端機區(qū)分;
Linux進程常見的狀態(tài)
R:運行,正在運行的進程;
S:中斷,可中斷的睡眠進程;
U:不可中斷,不可中斷的睡眠進程;
Z:僵死,進程已終止,但父進程未詢問其狀態(tài)情況;
T:停止,當(dāng)進程收到SIGSTOP,SIGTIN,SIGTSTP,SIGTOU信號時,停止運行;
kill命令
根據(jù)指定進程號來刪除執(zhí)行中的程序或工作。
常用選項:
-l:列出所有的kill可發(fā)送的信號
-s:指定要發(fā)送的信號
例如:
使用ps查詢相應(yīng)的進程,并使用kill結(jié)束進程
ps | grep vim
kill 3268
killall命令
根據(jù)指定進程名殺死進程,此命令可殺死跟指定進程相關(guān)的所有進程。
常用選項:
-i:交互式殺死進程,對每個要殺死的進程進行詢問;
-s:指定要發(fā)送的信號
例如:
killall vim
poweroff命令
用于系統(tǒng)關(guān)機。
reboot命令
用于系統(tǒng)重啟。
目錄和文件相關(guān)命令
pwd命令
以絕對路徑的形式顯示用戶當(dāng)前的工作目錄。
mkdir命令
用來創(chuàng)建目錄。如果在目錄名的前面沒有加任何路徑名,則在當(dāng)前目錄下創(chuàng)建由dirname指定的目錄;如果給出了一個已經(jīng)存在的路徑,將會在該目錄下創(chuàng)建一個指定的目錄。在創(chuàng)建目錄時,應(yīng)保證新建的目錄與它所在目錄下的文件沒有重名。
常用選項:
-p:遞歸創(chuàng)建目錄
例如:
mkdir -p a/b/c
ls命令
用來顯示目標(biāo)列表。Linux中最常用的命令之一。
語法:
ls [options...] file
常用選項:
-a:顯示所有文件,包括隱藏文件;
-l:以長格式顯示目錄下的文件列表,輸出的信息從左到右代表的依次為:文件類型,權(quán)限模式,硬連接數(shù),屬主,屬組,文件大小,文件最后修改時間,文件名;
例如:
ls -la root(以長格式顯示root目錄下所有文件列表)
cd命令
切換用戶的工作目錄至指定目錄。cd -為Linux中最常用的命令之一。
語法:
cd [options...] dir
常見選項:
-:當(dāng)前工作目錄將被切換到環(huán)境變量"OLDPWD"所表示的工作目錄中;
例如:
cd(進入當(dāng)前用戶的家目錄)
cd -(進入上一個工作目錄)
cd !$(將上一個命令的參數(shù)作為cd的參數(shù)使用)
mv命令
用來移動文件或?qū)ξ募M行重命名
語法:
mv [options...] source target
例如:
mv /etc/fstab /etc/fstab.bak(將etc目錄下的fstab文件進行重命名為fstab.bak)
mv /etc/fstab /tmp(將etc目錄下的fstab文件移動到tmp目錄下)
cp命令
將指定文件復(fù)制到指定目錄中。(若源文件有多個文件,則目標(biāo)文件必須是目錄)
常用選項:
-r/R:遞歸出來,源文件為目錄時使用;
-f:強制復(fù)制;
-v:顯示詳細信息;
例如:
cp /etc/fstab /tmp(將fstab文件復(fù)制到tmp目錄下)
cp /etc/* /tmp/etc.bak/(將etc目錄下所有文件復(fù)制到tmp的etc.bak目錄下)
tree命令
以樹狀形式顯示目錄結(jié)構(gòu)
touch命令
用于創(chuàng)建新文件或設(shè)置文件的時間戳。
常用選項:
-a:僅修改文件的“訪問時間”(atime)
-m:僅修改文件的“修改時間”(mtime)
tar命令
用于文件的打包和壓縮。
常用選項:
-c:創(chuàng)建新的備份文件;
-x:從備份文件中還原文件;
-f:指定備份文件;
-v:顯示文件打包或還原詳細過程;
-z:使用gzip程序?qū)ξ募M行壓縮或解壓;
-j:使用bzip2程序?qū)ξ募M行壓縮或解壓;
-t:列出備份文件中的文件列表;
例如:
tar -cvf log.tar log.log(僅打包,不壓縮)
tar -zcvf log.tar.gz log.log(打包后使用gzip工具進行壓縮)
tar -jcvf log.tar.bz log.log (打包后使用bzip2工具進行壓縮)
tar -zxvf log.tar.gz (解壓縮)
tar -ztvf log.tar.gz(查詢log.tar.gz中所包含的所有文件列表)
其他壓縮工具:
gzip,bzip2,zip
對應(yīng)的解壓縮工具:
gunzip,bunzip2,unzip
grep命令
global search regular and print out the line
強大的文本搜索工具,可以使用標(biāo)準(zhǔn)正則表達式,并把匹配的行打印出來。
語法:
grep [options] match_pattern file
常用選項:
-n:不僅顯示所匹配的行,而且顯示所匹配的行號;
-v:反轉(zhuǎn)查找;
-i:忽略字符大小寫;
-o:只顯示匹配到的字符;
--color=auto:查詢到的字符顏色高亮顯示;
-e:使用擴展正則表達式進行搜索;
例如:
grep /sbin/nologin /etc/passwd(顯示默認(rèn)bin為/sbin/nologin的所有用戶信息)
grep -v /sbin/nologin /etc/paswd(顯示默認(rèn)bin不是/sbin/nologin的所有用戶信息)
find命令
用于在指定目錄下查找文件。
-name:匹配文件名;
-perm:匹配權(quán)限;
-user:匹配屬主;
-group:匹配屬組;
-atime [-n|+n]:匹配訪問時間,“-”代表n天以內(nèi),“+”代表n天以前;
-mtime [-n|+n]:匹配修改時間,“-”代表n天以內(nèi),“+”代表n天以前;
--type :匹配文件類型;
-exec {} ;:若find命令執(zhí)行返回true,這執(zhí)行該命令,{}代表find命令搜索到的所有文件,結(jié)尾;為固定形式;
例如:
find /home -name "*.txt"(搜索home目錄下所有的txt文件)
find . -type f -atime -7(搜索7天內(nèi)被訪問過的所有文件)
find . -user root -type f(搜索屬主為root的所有文件)
find . -type f -mtime +30 -name "*.log" -exec cp {} old ;(將30天前的.log文件移動到old目錄中)