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