1. 程式人生 > >Linux就該這麼學【Part two:新手必須掌握的Linux命令】

Linux就該這麼學【Part two:新手必須掌握的Linux命令】

【2.1強大好用的Shell】

  • 使用者與Linux系統的互動
    在這裡插入圖片描述

Shell的妙處

  • 通過上下方向鍵來調取過往執行過的Linux命令;
  • 命令或引數僅需輸入前幾位就可以用Tab鍵補全;
  • 具有強大的批處理指令碼;
  • 具有實用的環境變數功能。

【2.2 執行檢視幫助命令】

命令名稱 命令引數 命令物件之間請用空格鍵分隔
長格式 man --help
短格式 man -h

開啟終端輸入man man命令來檢視man命令自身的幫助資訊
在這裡插入圖片描述

在這裡插入圖片描述

  • man命令中常用按鍵以及用途
  1. 空格鍵 :向下翻一頁
  2. PaGe down : 向下翻一頁
  3. PaGe up : 向上翻一頁
  4. home : 直接前往首頁
  5. end : 直接前往尾頁
  6. / :從上至下搜尋某個關鍵詞,如“/linux”
  7. ? : 從下至上搜索某個關鍵詞,如“?linux”
  8. n : 定位到下一個搜尋到的關鍵詞
  9. N : 定位到上一個搜尋到的關鍵詞
  10. q : 退出幫助文件
  • man命令幫助資訊的結構以及意義
  1. NAME :命令的名稱
  2. SYNOPSIS :引數的大致使用方法
  3. DESCRIPTION :介紹說明
  4. EXAMPLES :演示(附帶簡單說明)
  5. OVERVIEW :概述
  6. DEFAULTS :預設的功能
  7. OPTIONS :具體的可用選項(帶介紹)
  8. ENVIRONMENT :環境變數
  9. FILES :用到的檔案
  10. SEE ALSO :相關的資料
  11. HISTORY : 維護歷史與聯絡方式

【2.3 常用的系統工作命令】

1 . echo 命令 用於在終端輸出字串或變數提取後的值

在這裡插入圖片描述

用$變數的方式提取變數SHELL的值 並將其輸出到螢幕上
在這裡插入圖片描述
可見終端為Bash(Bourne-Again Shell )直譯器

2 . date 命令

%H 小時(00…23)
%I 小時(01…12)
%k 小時(0…23)
%l 小時(1…12)
%M 分(00…59)
%p 顯示出AM或PM
%r 時間(hh:mm:ss AM或PM),12小時
%s 從1970年1月1日00:00:00到目前經歷的秒數
%S 秒(00…59)
%T 時間(24小時制)(hh:mm:ss)
%X 顯示時間的格式(%H:%M:%S)
%Z 時區 日期域
%a 星期幾的簡稱( Sun…Sat)
%A 星期幾的全稱( Sunday…Saturday)
%b 月的簡稱(Jan…Dec)
%B 月的全稱(January…December)
%c 日期和時間( Mon Nov 8 14:12:46 CST 1999)
%d 一個月的第幾天(01…31)
%D 日期(mm/dd/yy)
%h 和%b選項相同
%j 一年的第幾天(001…366)
%m 月(01…12)
%w 一個星期的第幾天(0代表星期天)
%W 一年的第幾個星期(00…53,星期一為第一天)
%x 顯示日期的格式(mm/dd/yy)
%y 年的最後兩個數字( 1999則是99)
%Y 年(例如:1970,1996等)

預設date命令
在這裡插入圖片描述

按照“年-月-日 小時:分鐘:秒 ”

date "+%Y-%m-%d %H:%M:%S"

在這裡插入圖片描述

將系統的當前時間設定為某一時間:2017年8月6日3點26分 的date命令:

date -s "20170806 15:26:00"

在這裡插入圖片描述

切換root才可允許更改操作
在這裡插入圖片描述

改時間成功!!
怎麼改回當前時間呢?

clock -W

在這裡插入圖片描述
在這裡插入圖片描述

3 . reboot命令:用於重啟系統(root管理員可重啟)

# reboot

在這裡插入圖片描述

4 . poweroff 命令:用於關閉系統(root管理員可重啟)

# poweroff

在這裡插入圖片描述

5 . wget 命令:用於在終端中下載網路檔案 “wget [引數] 下載地址”

  • wget命令的引數以及作用
  1. 後臺下載模式 -b
  2. 下載到指定目錄 -P
  3. 最大嘗試次數 -t
  4. 斷點續傳 -c
  5. 下載頁面內所有資源,包括圖片、視訊等-p
  6. 遞迴下載 -r

下載

wget http://www.linuxprobe.com/docs/LinuxProbe.pdf

在這裡插入圖片描述

先解決錯誤wget: unable to resolve host address

更改了「vi /etc/resolv.conf 和 vi /etc/sysconfig/network-scripts/ifcfg-eth0 」
記錄便於以後查錯!!

哭遼 全網搜尋後竟然是因為沒聯網… 對比之前的圖片 wired打開了

在這裡插入圖片描述

使用wget命令遞迴下載www.linuxprobe.com網站內的所有頁面資料以及檔案
下載完後會自動儲存到當前路徑下一個名為www.linuxprobe.com的目錄中
wget -r -p https://www.linuxprobe.com

6 .ps命令:用於檢視系統中的程序狀態 格式為“ps [引數]”

顯示所有程序(包括其他使用者的程序)-a
使用者以及其他詳細資訊-u
顯示沒有控制終端的程序-x

在這裡插入圖片描述

    R(執行):程序正在執行或在執行佇列中等待。
    S(中斷):程序處於休眠中,當某個條件形成後或者接收到訊號時,則脫離該   狀態。
    D(不可中斷):程序不響應系統非同步訊號,即便用kill命令也不能將其中斷。
    Z(僵死):程序已經終止,但程序描述符依然存在, 直到父程序呼叫wait4()系統函式後將程序釋放。
    T(停止):程序收到停止訊號後停止執行。

在這裡插入圖片描述

在這裡插入圖片描述

**7 . top命令 : 用於動態地監視程序活動與系統負載等資訊 **

top

(在這裡提示一下 結束命令 鍵入q即可或按ctrl c)

在這裡插入圖片描述

前5行為系統整體的統計資訊

第1行:系統時間、執行時間、登入終端數、系統負載(三個數值分別為1分鐘、5分鐘、15分鐘內的平均值,數值越小意味著負載越低)。
第2行:程序總數、執行中的程序數、睡眠中的程序數、停止的程序數、僵死的程序數。
第3行:使用者佔用資源百分比、系統核心佔用資源百分比、改變過優先順序的程序資源百分比、空閒的資源百分比等。其中資料均為CPU資料並以百分比格式顯示,例如“97.1 id”意味著![有](https://img-blog.csdnimg.cn/20181109154848380.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NlYW5ZaTE3OA==,size_16,color_FFFFFF,t_70)97.1%的CPU處理器資源處於空閒。
第4行:實體記憶體總量、記憶體使用量、記憶體空閒量、作為核心快取的記憶體量。
第5行:虛擬記憶體總量、虛擬記憶體使用量、虛擬記憶體空閒量、已被提前載入的記憶體量。

8 . pidof 命令 : 用於查詢某個指定服務程序的PID值 “pidof [引數] [服務名稱]”

每個程序的程序號碼值(PID)是唯一的,因此可以通過PID來區分不同的程序。例如,可以使用如下命令來查詢本機上sshd服務程式的PID:

pidof sshd

在這裡插入圖片描述

**9.kill命令用於終止某個指定PID的服務程序 “kill [引數] [程序PID]” **

使用kill命令把上面用pidof命令查詢到的PID所代表的程序終止掉

kill 1588

這種操作的效果等同於強制停止sshd服務。

在這裡插入圖片描述

10 .killall命令:終止某個指定名稱的服務所對應的全部程序 “killall [引數] [服務名稱]”

killall命令來批量結束某個服務程式帶有的全部程序

在這裡插入圖片描述

【2.4 系統狀態檢測命令】

1.ifconfig命令 :獲取網絡卡配置與網路狀態等資訊 “ifconfig [網路裝置] [引數]”

ifconfig命令 檢視本機當前的網絡卡配置與網路狀態等資訊

網絡卡名稱 
inet引數後面的IP地址 
ether引數後面的網絡卡實體地址(又稱為MAC地址)  
以及RX、TX的接收資料包與傳送資料包的個數及累計流量

在這裡插入圖片描述

2.uname命令:用於檢視系統核心與系統版本等資訊 “uname [-a]”

-a引數來完整地檢視當前系統的核心名稱、主機名、核心發行版本、 節點名、系統時間、硬體名稱、硬體平臺、處理器型別以及作業系統名稱等資訊

在這裡插入圖片描述

如果要檢視當前系統版本的詳細資訊 則需要檢視redhat-release檔案

cat /etc/redhat-release

在這裡插入圖片描述

3.uptime命令:檢視系統的負載資訊 uptime

顯示當前系統時間、系統已執行時間、啟用終端數量以及平均負載值等資訊

平均負載值指的是系統在最近1分鐘、5分鐘、15分鐘內的壓力情況
負載值越低越好 儘量不要長期超過1 在生產環境中不要超過5
在這裡插入圖片描述

4.free命令: 顯示當前系統中記憶體的使用量資訊 “free [-h]”

-h引數以更人性化的方式輸出當前記憶體的實時使用量資訊

在這裡插入圖片描述

在這裡插入圖片描述

5.who命令: 檢視當前登入主機的使用者終端資訊 “who [引數]”

顯示出所有正在登入本機的使用者的名稱以及他們正在開啟的終端資訊
在這裡插入圖片描述

在這裡插入圖片描述

6.last命令:檢視所有系統的登入記錄 “last [引數]”

由於這些資訊都是以日誌檔案的形式儲存在系統中
因此黑客可以很容易地對內容進行篡改
千萬不要單純以該命令的輸出資訊而判斷系統有無被惡意入侵!

在這裡插入圖片描述

7.history命令:顯示歷史執行過的命令 “history [-c]”

可以自定義/etc/profile檔案中的HISTSIZE變數值
在使用history命令時 如果使用-c引數則會清空所有的命令歷史記錄
還可以使用“!編碼數字”的方式來重複執行某一次的命令

歷史命令會被儲存到使用者家目錄中的.bash_history檔案中

在這裡插入圖片描述

8 .sosreport命令 :收集系統配置及架構資訊並輸出診斷文件 sosreport

當Linux系統出現故障需要聯絡技術支援人員時
大多數時候都要先使用這個命令來簡單收集系統的執行狀態和服務配置資訊
以便讓技術支援人員能夠遠端解決一些小問題
亦或讓他們能提前瞭解某些複雜問題
在這裡插入圖片描述

2.5 工作目錄切換命令

1.pwd命令 :顯示使用者當前所處的工作目錄 “pwd [選項]”

pwd

在這裡插入圖片描述

2.cd命令 :用於切換工作路徑 “cd [目錄名稱]”

“cd -”命令返回到上一次所處的目錄
“cd…”命令進入上級目錄
“cd ~”命令切換到當前使用者的home目錄
“cd ~username”切換到其他使用者的home目錄

“cd 路徑”的方式切換進/etc目錄中:

在這裡插入圖片描述

3.ls命令 :目錄中的檔案資訊 “ls [選項] [檔案] ”

ls命令的“-a”引數看到全部檔案(包括隱藏檔案)
“-l”引數可以檢視檔案的屬性、大小等詳細資訊
兩個引數整合之後,再執行ls命令即可檢視當前目錄中的所有檔案並輸出這些檔案的屬性資訊:

在這裡插入圖片描述

如果想要檢視目錄屬性資訊
則需要額外新增一個-d引數
在這裡插入圖片描述

2.6 文字檔案編輯命令

1.cat命令 :檢視純文字檔案(內容較少的) “cat [選項] [檔案]”

【-n 顯示行號】
在這裡插入圖片描述

2.more命令 : 檢視純文字檔案(內容較多的) “more [選項]檔案”

cat命令閱讀長篇的文字內容
資訊就會在螢幕上快速翻滾
內容很快翻篇
對於長篇的文字內容:more命令會在最下面使用百分比的形式來提示您已經閱讀了多少內容(使用空格鍵或回車鍵向下翻頁)在這裡插入圖片描述

在這裡插入圖片描述

3.head命令 : 檢視純文字文件的前N行 “head [選項] [檔案]”

head -20 initial-setup-ks.cfg
head -n 20 initial-setup-ks.cfg

在這裡插入圖片描述

4.tail命令 : 檢視純文字文件的後N行或持續重新整理內容 “tail [選項] [檔案]”

在這裡插入圖片描述

tail命令可以持續重新整理一個檔案的內容
當想要實時檢視最新日誌檔案時 命令格式為“tail -f 檔名”

在這裡插入圖片描述

5.tr命令 : 替換文字檔案中的字元 “tr [原始字元] [目標字元]”

把某個文字內容中的英文全部替換為大寫:

在這裡插入圖片描述

6.wc命令 : 統計指定文字的行數、字數、位元組數 “wc [引數] 文字”

只顯示行數-l
只顯示單詞數-w
只顯示位元組數-c

passwd是用於儲存系統賬戶資訊的檔案
要統計當前系統中有多少個使用者
在這裡插入圖片描述

7.stat命令 : 檢視檔案的具體儲存資訊和時間等資訊 “stat 檔名稱”

命令stat anaconda-ks.cfg會顯示出檔案的三種時間狀態 :Access、Modify、Change

在這裡插入圖片描述

8.cut命令 : 用於按“列”提取文字字元 “cut [引數] 文字”

按基於“行”的方式來提取資料是比較簡單的 只需要設定好要搜尋的關鍵詞即可
如果按列搜尋,不僅要使用-f引數來設定需要看的列數,還需要使用-d引數來設定間隔符號

passwd在儲存使用者資料資訊時,使用者資訊的每一項值之間是採用冒號來間隔的,接下來我們使用下述命令嘗試提取出passwd檔案中的使用者名稱資訊,即提取以冒號(:)為間隔符號的第一列內容:

在這裡插入圖片描述

9.diff命令 : 用於比較多個文字檔案的差異 “diff [引數] 檔案”

–brief引數來確認兩個檔案是否不同
-c引數來詳細比較出多個檔案的差異之處

使用cat命令分別檢視diff_A.txt和diff_B.txt檔案的內容,然後進行比較

在這裡插入圖片描述

2.7 檔案目錄管理命令

1.touch命令 : 用於建立空白檔案或設定檔案的時間 “touch [選項] [檔案]”

touch linuxprobe命令可以創建出一個名為linuxprobe的空白文字檔案

設定檔案內容的修改時間(mtime)
檔案許可權或屬性的更改時間(ctime)
檔案的讀取時間(atime)

僅修改“讀取時間”(atime) -a
僅修改“修改時間”(mtime) -m
同時修改atime與mtime -d

ls命令檢視一個檔案的修改時間,然後修改這個檔案,最後再通過touch命令把修改後的檔案時間設定成修改之前的時間

在這裡插入圖片描述

2.mkdir命令 : 用於建立空白的目錄 “mkdir [選項] 目錄”

mkdir命令還可以結合-p引數來遞迴創建出具有巢狀疊層關係的檔案目錄

在這裡插入圖片描述

3.cp命令 : 用於複製檔案或目錄 “cp [選項] 原始檔 目標檔案”

如果目標檔案是目錄,則會把原始檔複製到該目錄中;
如果目標檔案也是普通檔案,則會詢問是否要覆蓋它;
如果目標檔案不存在,則執行正常的複製操作。

保留原始檔案的屬性 -p
若物件為“連結檔案”,則保留該“連結檔案”的屬性 -d
遞迴持續複製(用於目錄) -r
若目標檔案存在則詢問是否覆蓋 -i
相當於-pdr(p、d、r為上述引數) -a

touch建立一個名為install.log的普通空白檔案
再將其複製為一份名為x.log的備份檔案
ls命令檢視目錄中的檔案:
在這裡插入圖片描述

4.mv命令 : 用於剪下檔案或將檔案重新命名 “mv [選項] 原始檔 [目標路徑|目標檔名]”

剪下預設把原始檔刪除掉 只保留剪下後的檔案
如果在同一個目錄中對一個檔案進行剪下操作 其實也就是對其進行重新命名

在這裡插入圖片描述

5.rm命令 : 用於刪除檔案或目錄 “rm [選項] 檔案”

在Linux系統中刪除檔案時
系統會預設向您詢問是否要執行刪除操作
如果不想總是看到這種反覆的確認資訊
可在rm命令後跟上-f引數來強制刪除
想要刪除一個目錄
需要在rm命令後面一個-r引數才可以
否則刪除不掉

我們來嘗試刪除前面建立的install.log和linux.log檔案:
在這裡插入圖片描述

6.dd命令 : 用於按照指定大小和個數的資料塊來複制檔案或轉換檔案 “dd [引數]”

dd也可以在複製過程中轉換其中的資料
Linux系統中有一個名為/dev/zero的裝置檔案,每次在課堂上解釋它時都充滿哲學理論的色彩。因為這個檔案不會佔用系統儲存空間,但卻可以提供無窮無盡的資料,因此可以使用它作為dd命令的輸入檔案,來生成一個指定大小的檔案。

if	輸入的檔名稱
of	輸出的檔名稱
bs	設定每個“塊”的大小
count	設定要複製“塊”的個數

例如我們可以用dd命令從/dev/zero裝置檔案中取出一個大小為560MB的資料塊,然後儲存成名為560_file的檔案。在理解了這個命令後,以後就能隨意建立任意大小的檔案了:

在這裡插入圖片描述

在這裡插入圖片描述

7.file命令 : 用於檢視檔案的型別 “file 檔名”

在這裡插入圖片描述

2.8 打包壓縮與搜尋命令

1.tar命令 : 用於對檔案進行打包壓縮或解壓 “tar [選項] [檔案]”

建立壓縮檔案 -c
解開壓縮檔案 -x
檢視壓縮包內有哪些檔案 -t
用Gzip壓縮或解壓 -z
用bzip2壓縮或解壓 -j
顯示壓縮或解壓的過程 -v (建議使用顯示過程)
目標檔名 -f
保留原始的許可權與屬性 -p
使用絕對路徑來壓縮 -P
指定解壓到的目錄 -C

在這裡插入圖片描述

在這裡插入圖片描述

2.grep命令 : 用於在文字中執行關鍵詞搜尋 並顯示匹配的結果 “grep [選項] [檔案]”

將可執行檔案(binary)當作文字檔案(text)來搜尋 -b
僅顯示找到的行數 -c
忽略大小寫 -i
顯示搜尋到資訊的行號 -n
引數用於反選資訊(即沒有包含關鍵詞的所有資訊行) -v

在Linux系統中,/etc/passwd檔案是儲存著所有的使用者資訊,而一旦使用者的登入終端被設定成/sbin/nologin,則不再允許登入系統,因此可以使用grep命令來查找出當前系統中不允許登入系統的所有使用者資訊:

在這裡插入圖片描述

3.find命令 : 用於按照指定條件來查詢檔案 “find [查詢路徑] 尋找條件 操作”

匹配名稱 -name
匹配許可權(mode為完全匹配,-mode為包含即可) -perm
匹配所有者 -user
匹配所有組 -group
匹配修改內容的時間(-n指n天以內,+n指n天以前) -mtime -n +n
匹配訪問檔案的時間(-n指n天以內,+n指n天以前)-atime -n +n
匹配修改檔案許可權的時間(-n指n天以內,+n指n天以前) -ctime -n +n
匹配無所有者的檔案 -nouser
匹配無所有組的檔案 -nogroup
匹配比檔案f1新但比f2舊的檔案 -newer f1 !f2
匹配檔案型別(後面的字幕字母依次表示塊裝置、目錄、字元裝置、管道、連結檔案、文字檔案) --type b/d/c/p/l/f
匹配檔案的大小(+50KB為查詢超過50KB的檔案,而-50KB為查詢小於50KB的檔案) -size
忽略某個目錄 -prune

根據檔案系統層次標準(Filesystem Hierarchy Standard)協議,Linux系統中的配置檔案會儲存到/etc目錄中
如果要想獲取到該目錄中所有以host開頭的檔案列表,可以執行如下命令:

如果要在整個系統中搜索許可權中包括SUID許可權的所有檔案 只需使用-4000即可:

在這裡插入圖片描述

進階實驗:在整個檔案系統中找出所有歸屬於linuxprobe使用者的檔案並複製到/root/findresults目錄。

該實驗的重點是“-exec {} ;”引數,其中的{}表示find命令搜尋出的每一個檔案,並且命令的結尾必須是“;”。完成該實驗的具體命令如下:

在這裡插入圖片描述