Linux 經常使用命令

1.1 前言

做爲 Java 後端開發的咱們,開發的項目絕大部分都是部署在 Linux 系統上的,所以熟練使用一些經常使用的 Linux 命令不論是對於平常開發、服務部署或者查找問題都很是有用。如下整理了一些經常使用的 Linux 經常使用命令。linux

1.2 文件管理

1.2.1 ls 命令

ls 命令是 Linux 最經常使用的命令之一,其功能是列出指定目錄下的內容及其相關屬性信息。默認狀態下,ls 命令會列出當前目錄的內容,它也能夠帶上一些參數來實現更多的功能。正則表達式

語法格式:ls [選項] [文件]express

經常使用參數後端

參數 描述
-a 顯示全部文件及目錄(包括以 . 開頭的隱藏文件)
-l 使用長格式列出文件及目錄
-r 將文件以相反次序顯示(默認按照英文字母次序)
-t 根據最後的修改時間排序
-A -a,可是不列出 .(當前目錄)以及 ..(父級目錄)
-S 根據文件大小排序
-R 遞歸列出全部子目錄

Examples安全

ls -a       # 列出全部文件(包括隱藏文件)
ls -l       # 列出文件的詳細信息
ls /        # 列出根目錄(/)下的全部目錄
ls -ltr s*  # 列出當前目錄下全部名稱是 s 開頭的文件
ls -AS      # 列出當前目錄下全部文件及目錄並以文件大小進行排序
複製代碼

1.2.2 chown 命令

Linux 是一種多用戶多任務的操做系統,全部的文件都有一個擁有者。chown 命令就是用來將指定文件的擁有者改成指定的用戶或者組(PS:用戶和組均可以是名稱或者其 ID),文件是以空格分開的要改變權限的文件列表,支持通配符。服務器

語法格式:chown [參數]網絡

經常使用參數dom

參數 描述
-R 對當前目錄下的全部文件與子目錄進行相同的擁有者變動
-c 若該文件擁有者確實已經更改,才顯示其更改動做
-f 若該文件擁有者沒法更改也不顯示錯誤信息
-v 顯示擁有者變動的詳細信息
--version 顯示版本

Examplesssh

# 將 change_usergroup_and_user_demo.txt 文件用戶組與用戶都改成 mghio

[root@mghio ~]# ll change_usergroup_and_user_demo.txt
-rw-r--r-- 1 root root 56 Dec 21 10:17 change_usergroup_and_user_demo.txt
[root@mghio ~]# chown mghio:mghio change_usergroup_and_user_demo.txt
[root@mghio ~]# ll change_usergroup_and_user_demo.txt
-rw-r--r-- 1 mghio mghio 56 Dec 21 10:17 change_usergroup_and_user_demo.txt


# 顯示其更改動做

[root@mghio ~]# ll change_usergroup_and_user_demo.txt
-rw-r--r-- 1 root root 45 Dec 21 10:30 change_usergroup_and_user_demo.txt
[root@mghio ~]# chown -c mghio:mghio change_usergroup_and_user_demo.txt
changed ownership of 'change_usergroup_and_user_demo.txt' to mghio:mghio
複製代碼

1.2.3 cp 命令

cp 命令爲英文單詞 copy 的縮寫,功能爲複製文件或目錄。cp 命令能夠將多個文件複製到一個具體的文件名或者一個已經存在的目錄下,也能夠同時複製多個文件到一個指定的目錄中。socket

語法格式:cp [參數] [文件]

經常使用參數

參數 描述
-f 若目標文件已經存在,則直接覆蓋原文件
-i 若目標文件已經存在,則會詢問是否覆蓋
-p 保留原文件或者目錄的屬性
-r 遞歸複製文件和目錄
-d 當複製符號連接時,把目標文件或者目錄也創建符號連接,並指向和原文件或目錄鏈接的原始文件或目錄
-l 對原文件創建鏈接,而非複製文件
-s 對原文件創建符合鏈接,而非複製文件
-b 覆蓋已經存在的文件目標前將目標文件備份
-v 詳細顯示 cp 命令的執行過程

Examples

# 複製目錄
cp -R source_dir1 dest_dir2/

# 將文件 demo1.txt 更名爲 demo2.txt
cp -f demo1.txt demo2.txt

# 複製多個文件
cp -r file1 file2 file3 dest_dir
複製代碼

1.2.4 mkdir 命令

mkdir 命令是 make directories 的縮寫,其功能是用來建立目錄。默認狀態下,若是要建立的目錄若是已經存在,則提示已存在,而不會繼續建立目錄。全部咱們在建立目錄時,應該要保證新建的目錄與它所在的目錄下的文件沒有重名,同時該命令還能夠一次性建立多個目錄。

語法格式:mkdir [參數] [目錄]

經常使用參數

參數 描述
-p 遞歸建立多級目錄
-m 創建目錄的同時設置目錄的權限
-v 顯示目錄的常見過程

Examples

# 在當前目錄下,建立一個名爲 dir 的子目錄
mkdir dir

# 在目錄 /usr/mghio 下創建子目錄 dir,而且設置文件屬主有讀(4)、寫(2)和執行(1)權限,其它用戶沒法訪問
mkdir -m 700 /usr/mghio/dir

# 一次性建立目錄 dir一、dir二、dir3
mkdir dir1 dir2 dir3

# 遞歸建立目錄
mkdir -p /mghio/dir
複製代碼

1.2.5 mv 命令

mv 命令爲英文單詞 move 的縮寫,功能爲移動文件或者對文件從新命名。mvcp 命令的結果不一樣。mv 命令是將文件整個移走,文件名發生改變,可是個數沒有增長。而 cp 命令是對文件進行復制操做,文件個數增長。

語法格式:mv [參數]

經常使用參數

參數 描述
-i 若存在同名文件,則會詢問是否覆蓋
-f 覆蓋已經存在的文件時,不進行任何提示
-b 當文件存在時,覆蓋前爲其建立一個備份
-u 當原文件比目標文件新或者目標文件不存在時,纔會執行

Examples

# 將文件 file1 重命名爲 file2
mv file1 file2

# 將文件 file 移動到目錄 dest_dir
mv file /dest_dir

# 將目錄 dir 下的全部文件移到當前目錄
mv /dir/* .
複製代碼

1.3 文檔編輯

1.3.1 cat 命令

Linux 系統中有不少用於查看文件內容的命令,cat 命令就是用來查看內容較少的純文本內容文件的。當文件內容較大時,文本內容會在屏幕上快速滾屏,咱們一般都看不到所顯示的內容。對於較長文件內容能夠按 Ctrl+S 鍵來中止滾屏,以及 Ctrl+Q 鍵來恢復滾屏,按 Ctrl+C(中斷)鍵則能夠終止該命令的執行。對於大文件,推薦使用下文說的 more 命令。

語法格式:cat [參數] [文件]

經常使用參數

參數 描述
-n 顯示行數(一個空行顯示一個編號)
-s 顯示行數(多個空行只算一個編號)
-b 顯示行數(空行不編號)
-E 每行結束顯示 $ 符號
-T TAB 字符顯示爲 ^| 符號
--version 顯示版本信息

Examples

# 查看文件內容 
cat demo.txt

# 查看文件內容,並顯示行號
cat -n demo.txt

# 產查看文件的內容,並添加行數編號後輸出到另一個文件中
cat -n mghio.log > mghio_with_line_number.log

# 清空文件內容
cat /dev/null > /mghio/demo.txt

# 持續寫入文件內容,直到碰到 `EOF` 符號後結束並保存
cat > demo.txt << EOF
> Hello, World
> mghio
> EOF
複製代碼

1.3.2 more 命令

more 命令用於將內容較長的文本文件內容(沒法在一屏顯示完)進行分屏顯示,而且支持顯示時定位關鍵字。對於內容比較少的文本內容推薦使用 cat 命令查看。

語法格式:more [參數] [文件]

經常使用參數

參數 描述
-num 指定每屏顯示的內容行數
-l more 在一般狀況下把 ^L 當遇到這個字符就會暫停,這個參數能夠屏蔽這個特性
-f 計算實際的行數,而非自動換行的行數
-p 先清除屏幕在顯示文本文件的剩餘內容
-c -p 類似,不滾屏,先顯示內容在清除內容
-s 多個空行壓縮成一行顯示
-u 禁止下劃線
+/pattern 在每一個文檔顯示前搜尋該字(pattern),而後該字串以後開始顯示
+num 從第 num 行開始顯示

查看時的命令操做

命令 描述
Space 鍵 顯示文本的下一屏內容
Enter 鍵 向下 n 行,須要定義,默認爲 1 行
\ 接着輸入一個模式,能夠在文本中尋找下一個相匹配的模式
H 鍵 顯示幫助屏
B 鍵 顯示上一屏內容
Q 鍵 退出 more 命令
Ctrl + F、空格鍵 向下滾動一屏
Ctrl + B 返回上一屏
= 輸出當前的行號
:f 輸出文件名和當前的行號
V 調用 vi 編輯器
! 調用 Shell, 並執行命令

Examples

# 顯示文件 demo.txt 的內容和已顯示的百分比,顯示以前先清屏
more -dc demo.txt

# 顯示文件 demo.txt 的內容,每 10 行顯示一次,並且在顯示以前先清屏
more -c -10 demo.txt

# 顯示文件 demo.txt 的內容,每 5 行顯示一次,並且在顯示以後再清屏
more -p -5 demo.txt

# 從第 20 行開始顯示文件 demo.txt 的內容
more +20 demo.txt
複製代碼

1.3.3 tail 命令

tial 命令用於顯示文件尾部的內容,默認在屏幕上顯示指定文件的末尾 10 行。若是給定的文件不止一個,則在顯示的每一個文件前面加一個文件名標題,若是沒有指定文件或者文件名爲 -,則讀取標準輸入。

語法格式:tail [參數]

經常使用參數

命令 描述
--retry 便是在 tail 命令啓動時,文件不可訪問或者文件稍後變得不可訪問,都始終嘗試打開文件。使用此選項時須要與 —f 一塊兒使用
-c 輸出文件尾部的 NN 爲整數) 個字節內容
-f 顯示文件最新追加的內容
-n 輸出文件的尾部 NN 爲整數) 行內容

Examples

# 顯示文件 demo.txt 的最後 10 行
tail demo.txt

# 顯示文件 demo.txt 的內容,從第 20 行至文件末尾
tail +20 demo.txt

# 顯示文件 demo.txt 的最後 10 個字符
tail -c 10 demo.txt
複製代碼

1.3.4 grep 命令

grep 是英文 global search regular expression and print out the line 的簡稱。是全面搜索正則表達式,並將其打印出來。這個命令能夠結合正則表達式使用,使用很是普遍。grep 命令的選項用於對搜索過程的補充,而其命令的模式十分靈活,能夠是變量、字符串、正則表達式,須要注意的是,當咱們的模式中包含了空格的話,要使用雙引號將其引發來。

語法格式:grep [參數]

參數列表

命令 描述
-i 搜索時,忽略大小寫
-c 只輸出匹配行的數量
-l 只列出符合匹配的文件名,不列出具體匹配行
-n 列出全部匹配行,顯示行號
-h 查詢多文件時不顯示文件名
-s 不顯示不存在、沒有匹配文本的錯誤信息
-v 顯示不包含匹配文本的全部行
-w 匹配整詞
-x 匹配整行
-r 遞歸搜索
-q 禁止輸出任何結果,已退出狀態表示搜索是否成功
-b 打印匹配行距文件頭部的偏移量(以字節爲單位)
-o -b 結合使用,打印匹配的詞距文件頭部的偏移量(以字節爲單位)

Examples

# 支持多文件查詢並支持使用通配符

[root@mghio ~]# grep mghio file_* /usr/demo
file_1:mghio
file_1:mghioddkjflkdjfdlkfjlsdkj
file_2:mghio
file_4:dkfjlmghioejfkds
file_4:mghio djftgf
file_4:twetmghioedkfgj


# 列出全部的匹配行,並顯示行號
[root@mghio ~]# grep mghio file_* /usr/demo
file_1:1:mghio
file_1:3:mghioddkjflkdjfdlkfjlsdkj
file_2:4:mghio
file_4:8:dkfjlmghioejfkds
file_4:11:mghio djftgf
file_4:20:twetmghioedkfgj
複製代碼

1.3.5 echo 命令

echo 命令用於在終端設備上輸出字符串或者變量提取後的值,這是在 Linux 系統中最經常使用的幾個命令之一,在 Linux 系統中,人們通常使用在變量前加上 $ 符號的方式提取出變量的值,例如:$PATH,而後再用 echo 命令予以輸出。或者直接使用 echo 命令輸出一段字符串到屏幕上,起到給用戶提示的做用。

語法格式:echo [參數] [字符串]

經常使用參數

命令 描述
-n 不輸出結尾的換行符
-e"\a" 發出警告音
-e"\b" 刪除前面的一個字符
-e"\c" 結尾不加換行符
-e"\f" 換行,光標仍然停留在原來的座標位置
-e"\n" 換行,光標移至行首
-e"\r" 光標移至首行,可是不換行
-E 禁止反斜槓轉義,與 -e 參數功能相反

Examples

# 輸出一段字符串
[root@mghio ~]#  echo "mghio.cn" 
mghio.cn

# 輸出變量提取後的值
[root@mghio ~]# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

# 對內容進行轉義,不讓$符號的提取變量值功能生效
[root@mghio ~]# echo \$PATH
$PATH

# 使用反引號符執行命令,並輸出其結果到終端
[root@mghio ~]# echo `date`
Sat Dec 21 15:30:24 CST 2019
複製代碼

1.4 網絡通信

1.4.1 ssh 命令

ssh 命令是 openssh 套件中的客戶端鏈接工具,能夠給予 ssh 加密協議實現安全的遠程登陸服務器,實現對服務器的管理。

語法格式:ssh [參數] [主機]

經常使用參數

命令 描述
-1 強制使用 ssh 協議版本 1
-2 強制使用 ssh 協議版本 2
-4 強制使用 IPv4 地址
-6 強制使用 IPv6 地址
-A 開啓認證代理鏈接轉發功能
-a 關閉認證代理鏈接轉發功能
-b<IP地址> 使用本機指定的地址做爲對位鏈接的源 IP 地址
-C 請求壓縮全部數據
-F<配置文件> 指定 ssh 指令的配置文件,默認的配置文件爲 /etc/ssh/ssh_config
-f 後臺執行 ssh指令
-g 容許遠程主機鏈接本機的轉發端口
-i<身份文件> 指定身份文件(即私鑰文件)
-l<登陸名> 指定鏈接遠程服務器的登陸用戶名
-N 不執行遠程指令
-o<選項> 指定配置選項
-p<端口> 指定遠程服務器上的端口
-q 靜默模式,全部的警告和診斷信息被禁止輸出

Examples

# 登陸遠程服務器
[root@mghio ~]# ssh 112.67.239.127

# 用 mghio 用戶鏈接遠程服務器
[root@linuxcool ~]# ssh -l mghio 112.67.239.127
複製代碼

1.4.2 sftp 命令

sftp 命令全稱是 Secure File Transfer Protocol。是一個交互式的文件傳輸程序,sftp 命令的運行和使用與 ftp 類似,可是 sftp 命令對傳輸的全部信息使用 ssh 加密 ,它還支持公鑰認證和壓縮等功能。

語法格式:sftp [參數] [IP或主機名]

經常使用參數

命令 描述
-B 指定傳輸文件緩衝區的大小
-l 使用 ssh 協議版本 1
-b 指定批處理文件
-C 使用壓縮
-o 指定 ssh 選項
-F 指定 ssh 配置文件
-R 指定一次能夠容忍多少請求數

Examples

# 使用 sftp 命令鏈接到服務器
[root@mghio ~]# sftp 112.67.239.127

# 指定傳輸文件是緩衝區大小
[root@mghio ~]# sftp -B 256 112.67.239.127

# 在傳輸過程當中使用壓縮
[root@linuxcool ~]# sftp -C 112.67.239.127
複製代碼

1.4.3 telnet 命令

telnet 命令的功能是遠端登入,執行 telnet 指令開啓終端機階段做業,並登入遠端主機。telnet 命令能夠幫助你從這臺路由器遠程登錄到遠端開啓了 telnet 服務的設備,包括路由器、交換機、Linux 服務器等,而且配置當前路由器的 telnet 服務。

語法格式:telnet [參數]

經常使用參數

命令 描述
-8 容許使用 8 位字符資料,包括輸入與輸出
-a 嘗試自動登入遠端系統
-b 使用別名指定遠端主機名稱
-c 不讀取用戶專屬目錄裏的 .telnetrc 文件
-d 啓動排錯模式
-e 設置脫離字符
-E 濾除脫離字符
-f 此參數的效果和指定 -F 參數相同
-F 使用 Kerberos V5 認證時,加上此參數可把本地主機的認證數據上傳到遠端主機
-k 使用 Kerberos 認證時,加上此參數讓遠端主機採用指定的領域名,而非該主機的域名
-K 不自動登入遠端主機
-l 指定要登入遠端主機的用戶名稱
-L 容許輸出8位字符資料
-n 指定文件記錄相關信息
-r 使用相似 rlogin 指令的用戶界面
-S 設置 telnet 連線所需的 IP TOS 信息
-x 假設主機有支持數據加密的功能,就使用它
-X 關閉指定的認證形態

Examples

# 登陸遠程主機
[root@mghio ~]# telnet 112.67.239.127

# 鏈接本地主機,端口號爲 23
[root@mghio ~]# telnet localhost 23
複製代碼

1.4.4 netstat 命令

netstat 命令用於顯示各類網絡相關信息,如網絡鏈接、路由表、接口狀態、多播成員等。從總體上看,netstat 的輸出結果爲兩部分:一個是 Active Internet connections 稱爲 有源 TCP 鏈接,其中 Recv-QSend-Q%OA 的是接收隊列和發送隊列。另外一個是 Active UNIX domain sockets,稱爲有源Unix域套接口(和網絡套接字同樣,可是隻能用於本機通訊,性能能夠提升一倍)。

語法格式:netstat [參數]

經常使用參數

命令 描述
-a 顯示全部連線中的 Socket
-p 顯示正在使用 Socket 的程序識別碼和程序名稱
-u 顯示 UDP 傳輸協議的連線情況
-i 顯示網絡界面信息表單
-n 直接使用 IP 地址,不經過域名服務器

Examples

# 顯示詳細的網絡情況
[root@mghio ~]# netstat -a

# 顯示當前 UDP 鏈接情況
[root@mghio ~]# netstat -nu

# 顯示網卡列表
[root@mghio ~]# netstat -i
Kernel Interface table 
Iface MTU Met  RX-OK  RX-ERR  RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg 
eth0 1500   0  181864   0      0       0     141278   0     0     0    BMRU 
lo   16436  0   3362    0      0       0     3362     0     0     0    LRU
複製代碼
相關文章
相關標籤/搜索