Linux常用命令
1. ls命令
就是list的縮寫,通過ls命令不僅可以查看linux文件夾包含的文件,而且可以查看文件權限
- ls -a 列出所有文件,包含以“ . ”開始的隱藏文件
- ls -r 反序排列
- ls -S 以文件大小排列
- ls -t 以文件修改時間排列
- ls -l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來
eg: ls -l *.sh 列出所有以.sh結尾的文件
2. cd 命令
- cd - 進入上一次工作目錄
- cd ~ 進入“家"目錄
- cd / 進入要進的目錄
3. pwd命令
- pwd 常看當前工作目錄
4. mkdir命令
創建文件夾
- mkdir a 當前目錄創建名爲a的文件夾
- mkdir -p /test/tep/a1/a2 在test目錄下創建路徑爲tep/a1/a2目錄
5. rm 命令
刪除一個目錄中的一個或多個文件或目錄,如果沒有-r選項,則rm不能刪除目錄,只能刪除文件夾
- rm *.txt 刪除該目錄下所有的.txt的文件,但是刪除錢要逐一詢問確認
- rm -rf tmp 刪除test目錄的所有文件夾與文件,且不用確認
6.rmdir命令
刪除一個空目錄
7. mv 命令
移動文件或修改文件名
- mv a.txt b.txt 將文件a.txt重命名爲b.txt
- mv a.txt b.txt c.txt /home 將a.txt,b.txt,c.txt移動到home目錄下
- mv * /home 將當前所有的文件移動到home目錄下
8. cp命令
將源文件複製到目標文件,或者將多個文件複製到目標目錄
-r 複製目錄及目錄內所有文件
-a 複製的文件與源文件時間一樣
-s 創建文件的快捷方式
9. cat命令
-
一次顯示整個文件:cat a.txt
-
將幾個文件合併爲一個文件 cat a.txt b.txt > c.txt
-
鍵盤創建一個文件:cat >a.txt 只能創建新文件,不能編輯已有的文件
cat>a.txt hello word >EOF
-
cat -n a.txt 輸出所有行號
-
cat -b 輸出所有非空行號
10.more命令
功能類似cat,more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,q退出more
- +n 從第n行開始顯示
- -n 定義每屏幕顯示n行
- ls -l | more -5 ,顯示當前目錄下的文件信息,一屏幕顯示5條
11.less命令
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會加載整個文件
- less a.txt b.txt 查看多個文件
12. head命令
head 用來顯示檔案的開頭至標準輸出中,默認head命令打印其相應文件的開頭10行。
-n 顯示的行數
- head -n 10 a.txt 顯示a.txt前10行
13.tail命令
用於顯示指定文件末尾內容,常用查看日誌文件
- tail -n 20 a.log 查看a.log後20行
- tail -f a.long 循環讀取(常用於查看遞增日誌文件)
14. which命令
which 查看可執行文件的位置
- which cd cd命令是否存在,存在輸出該命令的位置信息
15. find命令
在文件樹中查找文件,並作出相應的處理
find pathname -options [-print -exec -ok …]命令參數:
pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的文件輸出到標準輸出。
-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' { } \;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。
命令選項:
-name 按照文件名查找文件
-perm 按文件權限查找文件
-user 按文件屬主查找文件
-group 按照文件所屬的組來查找文件。
-type 查找某一類型的文件,諸如:
b - 塊設備文件
d - 目錄
c - 字符設備文件
l - 符號鏈接文件
p - 管道文件
f - 普通文件
-size n :[c] 查找文件長度爲n塊文件,帶有c時表文件字節大小
-amin n 查找系統中最後N分鐘訪問的文件
-atime n 查找系統中最後n*24小時訪問的文件
-cmin n 查找系統中最後N分鐘被改變文件狀態的文件
-ctime n 查找系統中最後n*24小時被改變文件狀態的文件
-mmin n 查找系統中最後N分鐘被改變文件數據的文件
-mtime n 查找系統中最後n*24小時被改變文件數據的文件
(用減號-來限定更改時間在距今n日以內的文件,而用加號+來限定更改時間在距今n日以前的文件。 )
-maxdepth n 最大查找目錄深度
-prune選項來指出需要忽略的目錄。在使用-prune選項時要當心,因爲如果你同時使用了-depth選項,那麼-prune選項就會被find命令忽略
-newer 如果希望查找更改時間比某個文件新但比另一個文件舊的所有文件,可以使用-newer選項
eg:
1.在當前目錄查找壹.log結尾的文件
find ./ -name '*.log' 特別注意有一個單引號
2.在/opt目錄下,查找權限爲777的文件
find /opt -perm 777
3.查找大於1K的文件
find -size +1000c
find -size 1000c 查找等於1000字符的文件
-exec
參數後面跟的是command命令,它的終止是以;爲結束標誌的,
所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,
所以前面加反斜槓。{} 花括號代表前面find查找出來的文件名。
4. 查找home/test目錄下的普通文件,修改時間大於10天的,刪除掉
find /home/test f -mtime +10 -exec rm -rf {} \;
5. 查找home/test目錄下以.txt文件名結尾的文件,刪除掉
find /home/test -name '.txt' -exec rm -rf {} \;
6. 查找home/test目錄下文件名以password 開頭的文件,內容包含“pkg"字符的文件
find /home/test/ 'password*' -exec grep "pkg" {} \;
7. 用 exec選項執行cp命令
find /home/test '.txt' -exec cp {} /home/test2
16. chmod命令
用於改變linux系統文件或目錄的訪問權限。用它控制文件或目錄的訪問權限。該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
權限範圍:
u :目錄或者文件的當前的用戶
g :目錄或者文件的當前的羣組
o :除了目錄或者文件的當前用戶或羣組之外的用戶或者羣組
a :所有的用戶及羣組
權限代號:
r :讀權限,用數字4表示
w :寫權限,用數字2表示
x :執行權限,用數字1表示
- :刪除權限,用數字0表示
s :特殊權限
實例:
(1)增加文件t.log所有用戶可執行權限
chmod a+x t.log
(2)撤銷原來所有的權限,然後使擁有者具有可讀權限,並輸出處理信息
chmod u=r t.log -c
(3)給file的屬主分配讀、寫、執行(7)的權限,給file的所在組分配讀、執行(5)的權限,給其他用戶分配執行(1)的權限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)將test目錄及其子目錄所有文件添加可讀權限
chmod u+r,g+r,o+r -R text/ -c
17.tar 命令
用來壓縮和解壓文件
常用參數:
-c 建立新的壓縮文件
-f 指定壓縮文件
-r 添加文件到已經壓縮文件包中
-u 添加改了和現有的文件到壓縮包中
-x 從壓縮包中抽取文件
-t 顯示壓縮文件中的內容
-z 支持gzip壓縮
-j 支持bzip2壓縮
-Z 支持compress解壓文件
-v 顯示操作過程
實例:
(1)將文件全部打包成tar包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)將/etc下的所有文件及目錄打包到指定目錄,並使用gz壓縮
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看剛打包的文件內容(一定加z,因爲是使用gzip壓縮的)
tar -ztvf /tmp/etc.tar.gz
(4)解壓
tar -zxvf /tem/etc.tar.gz
18. df命令
顯示磁盤空間使用情況。獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息,如果沒有文件名被指定,則所有當前被掛載的文件系統的可用空間將被顯示
顯示磁盤的使用情況
df -h
df -l
19. du命令
du命令也是查看使用空間的,但是與df命令不同的是Linux du命令是對文件和目錄磁盤使用的空間的查看
常用參數:
-a 顯示目錄中所有文件大小
-k 以KB爲單位顯示文件大小
-m 以MB爲單位顯示文件大小
-g 以GB爲單位顯示文件大小
-h 以易讀方式顯示文件大小
-s 僅顯示總計
-c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和
實例:
(1)以易讀方式顯示文件夾內及子文件夾大小
du /home/test/a.txt -h
20. date命令
顯示或設定系統的日期與時間
命令參數:
-d<字符串> 顯示字符串所指的日期與時間。字符串前後必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串前後必須加上雙引號。
-u 顯示GMT。
%H 小時(00-23)
%I 小時(00-12)
%M 分鐘(以00-59來表示)
%s 總秒數。起算時間爲1970-01-01 00:00:00 UTC。
%S 秒(以本地的慣用法來表示)
%a 星期的縮寫。
%A 星期的完整名稱。
%d 日期(以01-31來表示)。
%D 日期(含年月日)。
%m 月份(以01-12來表示)。
%y 年份(以00-99來表示)。
%Y 年份(以四位數來表示)。
實例:
(1)顯示下一天
date +%Y%m%d --date="+1 day" //顯示下一天的日期
(2)-d參數使用
date -d "nov 22" 今年的 11 月 22 日是星期三
date -d '2 weeks' 2周後的日期
date -d 'next monday' (下週一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上個月是幾月)
date -d next-month +%Y%m(下個月是幾月)
21. grep命令
強大的文本搜索命令,grep(Global Regular Expression Print)全局正則表達式搜索
grep [option] pattern file|dir
常用參數:
-A n --after-context顯示匹配字符後n行
-B n --before-context顯示匹配字符前n行
-C n --context 顯示匹配字符前後n行
-c --count 計算符合樣式的列數
-i 忽略大小寫
-l 只列出文件內容符合指定的樣式的文件名稱
-f 從文件中讀取關鍵詞
-n 顯示匹配內容的所在文件中行數
-R 遞歸查找文件夾
grep的規則表達式:
^ #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
$ #錨定行的結束 如:'grep$'匹配所有以grep結尾的行。
. #匹配一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,然後是p。
* #匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格後緊跟grep的行。
.* #一起用代表任意字符。
[] #匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一個不在指定範圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
\(..\) #標記匹配字符,如'\(love\)',love被標記爲1。
\< #錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\> #錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
x\{m\} #重複字符x,m次,如:'0\{5\}'匹配包含5個o的行。
x\{m,\} #重複字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
x\{m,n\} #重複字符x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。
\w #匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,然後是p。
\W #\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。
\b #單詞鎖定符,如: '\bgrep\b'只匹配grep。
22. ps命令
ps(process status),用來查看當前運行的進程狀態,一次性查看,如果需要動態連續結果使用top
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)
ps工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
命令參數:
-A 顯示所有進程
a 顯示所有進程
-a 顯示同一終端下所有進程
c 顯示進程真實名稱
e 顯示環境變量
f 顯示進程間的關係
r 顯示當前終端運行的進程
-aux 顯示所有包含其它使用的進程
實例:
(1)顯示當前所有進程環境變量及進程間關係
ps -ef
(2)顯示當前所有進程
ps -A
(3)與grep聯用查找某進程
ps -aux | grep apache
(4)找出與 cron 與 syslog 這兩個服務有關的 PID 號碼
ps aux | grep '(cron|syslog)'
23. kill 命令
發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果任無法終止該程序可用“-KILL” 參數,其發送的信號爲SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程。
常用參數:
-l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
-a 當處理當前進程時,不限制命令名和進程號的對應關係
-p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
-s 指定發送信號
-u 指定用戶
實例:
(1)先使用ps查找進程pro1,然後用kill殺掉
kill -9 $(ps -ef | grep pro1)
24. free命令
顯示系統內存使用情況,包括物理內存、交互區內存(swap)和內核緩衝區內存。
命令參數:
-b 以Byte顯示內存使用情況
-k 以kb爲單位顯示內存使用情況
-m 以mb爲單位顯示內存使用情況
-g 以gb爲單位顯示內存使用情況
-s<間隔秒數> 持續顯示內存
-t 顯示內存使用總合
實例:
(1)顯示內存使用情況
free
free -k
free -m
(2)以總和的形式顯示內存的使用信息
free -t
(3)週期性查詢內存使用情況
free -s 10
25. wc命令
wc(word count)功能爲統計指定的文件中字節數、字數、行數,並將統計結果輸出
命令格式:
wc [option] file..
命令參數:
-c 統計字節數
-l 統計行數
-m 統計字符數
-w 統計詞數,一個字被定義爲由空白、跳格或換行字符分隔的字符串
實例:
(1)查找文件的 行數 單詞數 字節數 文件名
wc text.txt 結果:7 8 70 test.txt
(2)統計輸出結果的行數
cat test.txt | wc -l
(3) 統計一個單詞出現的次數,在a.txt中查找'word'單詞數量
grep -o word a.txt | wc -l
26. netstat命令
-a或--all:顯示所有連線中的Socket;
-A<網絡類型>或--<網絡類型>:列出該網絡類型連線中的相關地址;
-c或--continuous:持續列出網絡狀態;
-C或--cache:顯示路由器配置的快取信息;
-e或--extend:顯示網絡其他相關信息;
-F或--fib:顯示FIB;
-g或--groups:顯示多重廣播功能羣組組員名單;
-h或--help:在線幫助;
-i或--interfaces:顯示網絡界面信息表單;
-l或--listening:顯示監控中的服務器的Socket;
-M或--masquerade:顯示僞裝的網絡連線;
-n或--numeric:直接使用ip地址,而不通過域名服務器;
-N或--netlink或--symbolic:顯示網絡硬件外圍設備的符號連接名稱;
-o或--timers:顯示計時器;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-r或--route:顯示Routing Table;
-s或--statistice:顯示網絡工作信息統計表;
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-v或--verbose:顯示指令執行過程;
-V或--version:顯示版本信息;
-w或--raw:顯示RAW傳輸協議的連線狀況;
-x或--unix:此參數的效果和指定"-A unix"參數相同;
--ip或--inet:此參數的效果和指定"-A inet"參數相同。
eg1: 顯示 PID 和進程名稱
netstat -p
eg2: 查看端口服務
netstat -antp | grep ssh
eg3. 列出所有端口情況
netstat -a # 列出所有端口
netstat -at # 列出所有TCP端口
netstat -au # 列出所有UDP端口
eg4.查詢端口是否被佔用
netstat -anlp | grep 80