這些Linux命令,你記得多少?

1.Linux命令的構成

命令名稱 [命令參數] [命令對象]

注意,命令名稱、命令參數、命令對象之間請用空格鍵分隔。

命令對象一般是指要處理的文件、目錄、用戶等資源,而命令參數可以用長格式(完整的選項名稱),也可以用短格式(單個字母的縮寫),兩者分別用–與-作為前綴。Linux新手不會執行命令大多是因為參數比較複雜,參數值需要隨不同的命令和需求情況而發生改變。因此,要想靈活搭配各種參數,執行自己想要的功能,則需要長時間的經驗積累了。

長格式 man --help

短格式 man -h

man命令中常用按鍵以及用途

按鍵 用處

空格鍵 向下翻一頁

PaGe down 向下翻一頁

PaGe up 向上翻一頁

home 直接前往首頁

end 直接前往尾頁

/ 從上至下搜索某個關鍵詞,如“/linux”

? 從下至上搜索某個關鍵詞,如“?linux”

n 定位到下一個搜索到的關鍵詞

N 定位到上一個搜索到的關鍵詞

q 退出幫助文檔

一般來講,使用man命令查看到的幫助內容信息都會很長很多,如果讀者不瞭解幫助文檔信息的目錄結構和操作方法,乍一看到這麼多信息可能會感到相當困惑。man命令的幫助信息的結構如下

結構名稱 代表意義

NAME 命令的名稱

SYNOPSIS 參數的大致使用方法

DESCRIPTION 介紹說明

EXAMPLES 演示(附帶簡單說明)

OVERVIEW 概述

DEFAULTS 默認的功能

OPTIONS 具體的可用選項(帶介紹)

ENVIRONMENT 環境變量

FILES 用到的文件

SEE ALSO 相關的資料

HISTORY 維護歷史與聯繫方式

2. linux基礎命令

2.1 常用系統命令

1.echo命令

echo命令用於在終端輸出字符串或變量提取後的值,格式為“echo [字符串 | KaTeX parse error: Expected 'EOF', got '#' at position 81: …oot@umbrella ~]#̲ echo i am andy…變量的方式提取變量SHELL的值,並將其輸出到屏幕上:


2.date命令

date命令用於顯示及設置系統的時間或日期,格式為“date [選項] [+指定的格式]”。

只需在強大的date命令中輸入以“+”號開頭的參數,即可按照指定格式來輸出系統的時間或日期,這樣在日常工作時便可以把備份數據的命令與指定格式輸出的時間信息結合到一起。例如,把打包後的文件自動按照“年-月-日”的格式打包成“backup-2017-9-1.tar.gz”,用戶只需要看一眼文件名稱就能大概瞭解到每個文件的備份時間了。date命令中常見的參數格式及作用如下所示。

date命令中的參數以及作用

參數 作用

%t 跳格[Tab鍵]

%H 小時(00~23)

%I 小時(00~12)

%M 分鐘(00~59)

%S 秒(00~59)

%j 今年中的第幾天

按照默認格式查看當前系統時間的date命令如下所示:

[root@umbrella ~]# date

Sun Nov 25 19:43:16 CST 2018

將系統的當前時間設置為2017年9月1日8點30分的date命令如下所示:

[root@umbrella ~]# date -s “20170901 8:30:00”

Fri Sep 1 08:30:00 CST 2017

再次使用date命令並按照默認的格式查看當前的系統時間,如下所示:

[root@umbrella ~]# date

Fri Sep 1 08:30:01 CST 2017

3.reboot命令

reboot命令用於重啟系統,其格式為reboot。

由於重啟計算機這種操作會涉及硬件資源的管理權限,因此默認只能使用root管理員來重啟,其命令如下:

[root@umbrella ~]# reboot

4.poweroff命令

poweroff命令用於關閉系統,其格式為poweroff。

該命令與reboot命令相同,都會涉及硬件資源的管理權限,因此默認只有root管理員才可以關閉電腦,其命令如下:

[root@umbrella ~]# poweroff

5.wget命令

wget命令用於在終端中下載網絡文件,格式為“wget [參數] 下載地址”。

wget命令的參數以及作用

參數 作用

-b 後臺下載模式

-P 下載到指定目錄

-t 最大嘗試次數

-c 斷點續傳

-p 下載頁面內所有資源,包括圖片、視頻等

-r 遞歸下載

[root@umbrella ~]# wget https://XXX

6.ps命令

ps命令用於查看系統中的進程狀態,格式為“ps [參數]”。

參數 作用

-a 顯示所有進程(包括其他用戶的進程)

-u 用戶以及其他詳細信息

-x 顯示沒有控制終端的進程

Linux系統中時刻運行著許多進程,如果能夠合理地管理它們,則可以優化系統的性能。在Linux系統中,有5種常見的進程狀態,分別為運行、中斷、不可中斷、僵死與停止,其各自含義如下所示。

R(運行):進程正在運行或在運行隊列中等待。

S(中斷):進程處於休眠中,當某個條件形成後或者接收到信號時,則脫離該狀態。

D(不可中斷):進程不響應系統異步信號,即便用kill命令也不能將其中斷。 類似windows不響應

Z(僵死):進程已經終止,但進程描述符依然存在, 直到父進程調用wait4()系統函數後將進程釋放。

T(停止):進程收到停止信號後停止運行。

當執行ps aux命令後通常會看到如下所示的進程狀態,只是列舉了部分輸出值,而且正常的輸出值中不包括中文註釋。

進程狀態

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

進程的所有者 進程ID號 運算器佔用率 內存佔用率 虛擬內存使用量(單位是KB) 佔用的固定內存量(單位是KB) 所在終端 進程狀態 被啟動的時間 實際使用CPU的時間 命令名稱與參數

root 1 0.0 0.4 53684 7628 ? Ss 07:22 0:02 /usr/lib/systemd/systemd

root 2 0.0 0.0 0 0 ? S 07:22 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 07:22 0:00 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S< 07:22 0:00 [kworker/0:0H]

root 7 0.0 0.0 0 0 ? S 07:22 0:00 [migration/0]

……………… 省略部分輸出信息 ………………

如前面所提到的,在Linux系統中的命令參數有長短格式之分,長格式和長格式之間不能合併,長格式和短格式之間也不能合併,但短格式和短格式之間是可以合併的,合併後僅保留一個-(減號)即可。另外ps命令可允許參數不加減號(-),因此可直接寫成ps aux的樣子。


7.top命令

top命令用於動態地監視進程活動與系統負載等信息,其格式為top。

top命令執行結果的前5行為系統整體的統計信息,其所代表的含義如下。

第1行:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鐘、5分鐘、15分鐘內的平均值,數值越小意味著負載越低)。

第2行:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數。

第3行:用戶佔用資源百分比、系統內核佔用資源百分比、改變過優先級的進程資源百分比、空閒的資源百分比等。其中數據均為CPU數據並以百分比格式顯示,例如“97.1 id”意味著有97.1%的CPU處理器資源處於空閒。

第4行:物理內存總量、內存空閒量、內存使用量、作為內核緩存的內存量。

第5行:虛擬內存總量、虛擬內存空閒量、虛擬內存使用量、已被提前加載的內存量。


8.pidof命令

pidof命令用於查詢某個指定服務進程的PID值,格式為“pidof [參數] [服務名稱]”。

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

[root@umbrella ~]# pidof sshd

2156

9.kill命令

kill命令用於終止某個指定PID的服務進程,格式為“kill [參數] [進程PID]”。

接下來,我們使用kill命令把上面用pidof命令查詢到的PID所代表的進程終止掉,其命令如下所示。這種操作的效果等同於強制停止sshd服務。

[root@umbrella ~]# kill 2156


10.killall命令

killall命令用於終止某個指定名稱的服務所對應的全部進程,格式為:“killall [參數] [服務名稱]”。

通常來講,複雜軟件的服務程序會有多個進程協同為用戶提供服務,如果逐個去結束這些進程會比較麻煩,此時可以使用killall命令來批量結束某個服務程序帶有的全部進程。下面以httpd服務程序為例,來結束其全部進程。由於RHEL7系統默認沒有安裝httpd服務程序,因此大家此時只需看操作過程和輸出結果即可,等學習了相關內容之後再來實踐。

[root@umbrella ~]# pidof httpd

13581 13580 13579 13578 13577 13576

[root@umbrella ~]# killall httpd

[root@umbrella ~]# pidof httpd

[root@umbrella ~]#

如果我們在系統終端中執行一個命令後想立即停止它,可以同時按下Ctrl + C組合鍵(生產環境中比較常用的一個快捷鍵),這樣將立即終止該命令的進程。或者,如果有些命令在執行時不斷地在屏幕上輸出信息,影響到後續命令的輸入,則可以在執行命令時在末尾添加上一個&符號,這樣命令將進入系統後臺來執行。

2.2系統狀態檢測命令

作為一名合格的運維人員,想要更快、更好地瞭解Linux服務器,必須具備快速查看Linux系統運行狀態的能力,因此接下來會逐個講解與網卡網絡、系統內核、系統負載、內存使用情況、當前啟用終端數量、歷史登錄記錄、命令執行記錄以及救援診斷等相關命令的使用方法。這些命令都超級實用,還請讀者用心學習,加以掌握。

1.ifconfig命令

ifconfig命令用於獲取網卡配置與網絡狀態等信息,格式為“ifconfig [網絡設備] [參數]”。

使用ifconfig命令來查看本機當前的網卡配置與網絡狀態等信息時,其實主要查看的就是網卡名稱、inet參數後面的IP地址、ether參數後面的網卡物理地址(又稱為MAC地址),以及RX、TX的接收數據包與發送數據包的個數及累計流量:

[root@umbrella ~]# ifconfig

ens33: flags=4163 mtu 1500

inet 192.168.145.128 netmask 255.255.255.0 broadcast 192.168.145.255

inet6 fe80::66dd:da59:6b72:d4f1 prefixlen 64 scopeid 0x20

ether 00:0c:29:0f:ee:42 txqueuelen 1000 (Ethernet)

RX packets 2400 bytes 170222 (166.2 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 992 bytes 732530 (715.3 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1 (Local Loopback)

RX packets 8 bytes 544 (544.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 8 bytes 544 (544.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2.uname命令

uname命令用於查看系統內核與系統版本等信息,格式為“uname [-a]”。

在使用uname命令時,一般會固定搭配上-a參數來完整地查看當前系統的內核名稱、主機名、內核發行版本、節點名、系統時間、硬件名稱、硬件平臺、處理器類型以及操作系統名稱等信息。

[root@umbrella ~]# uname -a

Linux umbrella 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

順帶一提,如果要查看當前系統版本的詳細信息,則需要查看centos-release文件,其命令以及相應的結果如下:

[root@umbrella ~]# cat /etc/centos-release

CentOS Linux release 7.4.1708 (Core)

3.uptime命令

uptime用於查看系統的負載信息,格式為uptime。

uptime命令真的很棒,它可以顯示當前系統時間、系統已運行時間、啟用終端數量以及平均負載值等信息。平均負載值指的是系統在最近1分鐘、5分鐘、15分鐘內的壓力情況(下面加粗的信息部分);負載值越低越好,儘量不要長期超過1,在生產環境中不要超過5。

[root@umbrella ~]# uptime

20:26:58 up 1:13, 1 user, load average: 0.00, 0.01, 0.05

4.free命令

free用於顯示當前系統中內存的使用量信息,格式為“free [-h]”。

為了保證Linux系統不會因資源耗盡而突然宕機,運維人員需要時刻關注內存的使用量。在使用free命令時,可以結合使用-h參數以更人性化的方式輸出當前內存的實時使用量信息。表2-8所示為在電腦上執行free -h命令之後的輸出信息。

[root@umbrella ~]# free -h

total used free shared buff/cache available

Mem: 976M 133M 702M 6.7M 140M 683M

Swap: 2.0G 0B 2.0G

5.who命令

who用於查看當前登入主機的用戶終端信息,格式為“who [參數]”。

這三個簡單的字母可以快速顯示出所有正在登錄本機的用戶的名稱以及他們正在開啟的終端信息。表2-9所示為執行who命令後的結果。

[root@umbrella ~]# who

表2-9 執行who命令的結果

登陸的用戶名 終端設備 登陸到系統的時間

root :0 2018-08-24 17:52 (:0)

root pts/0 2018-08-24 17:52 (:0)

[root@umbrella ~]# who

root pts/0 2018-11-25 20:14 (192.168.145.1)

6.last命令

last命令用於查看所有系統的登錄記錄,格式為“last [參數]”。

使用last命令可以查看本機的登錄記錄。但是,由於這些信息都是以日誌文件的形式保存在系統中,因此黑客可以很容易地對內容進行篡改。千萬不要單純以該命令的輸出信息而判斷系統有無被惡意入侵!

[root@umbrella ~]# last

root pts/0 192.168.145.1 Sun Nov 25 20:14 still logged in

root pts/0 192.168.145.1 Sun Nov 25 19:14 - 20:14 (00:59)

reboot system boot 3.10.0-693.el7.x Sun Nov 25 19:12 - 21:53 (02:40)

root tty1 Sat Nov 24 23:53 - 23:54 (00:00)

root pts/0 192.168.145.1 Sat Nov 24 21:41 - 23:53 (02:11)

root pts/1 192.168.145.1 Sat Nov 24 21:39 - 21:40 (00:01)

root pts/0 192.168.145.1 Sat Nov 24 19:49 - 21:41 (01:51)

reboot system boot 3.10.0-693.el7.x Sat Nov 24 19:48 - 21:53 (1+02:04)

root pts/0 192.168.145.1 Sat Nov 24 19:47 - down (00:01)

root tty1 Sat Nov 24 19:46 - 19:49 (00:02)

reboot system boot 3.10.0-693.el7.x Sat Nov 24 19:45 - 19:49 (00:03)

root pts/0 192.168.145.1 Sat Nov 24 19:45 - crash (00:00)

root tty1 Sat Nov 24 19:41 - 19:45 (00:04)

reboot system boot 3.10.0-693.el7.x Sat Nov 24 19:38 - 19:49 (00:10)

root tty1 Sat Nov 24 19:20 - 19:38 (00:18)

reboot system boot 3.10.0-693.el7.x Sat Nov 24 19:18 - 19:49 (00:30)

root tty1 Fri Nov 16 23:17 - 23:18 (00:00)

reboot system boot 3.10.0-693.el7.x Fri Nov 16 23:16 - 19:49 (7+20:33)

wtmp begins Fri Nov 16 23:16:00 2018

………………省略部分登錄信息………………

7.history命令

history命令用於顯示歷史執行過的命令,格式為“history [-c]”。

history命令應該是作者最喜歡的命令。執行history命令能顯示出當前用戶在本地計算機中執行過的最近1000條命令記錄。如果覺得1000不夠用,還可以自定義/etc/profile文件中的HISTSIZE變量值。在使用history命令時,如果使用-c參數則會清空所有的命令歷史記錄。還可以使用“!編碼數字”的方式來重複執行某一次的命令。總之,history命令有很多有趣的玩法等待您去開發。

[root@umbrella ~]# history

1 ls

2 pwd

3 shutdown

4 shutdown now

5 ipconfig

6 clear

7 ifconfig

8 ls

9 vim /etc/sysconfig/network-scripts/ifcfg-ens33

10 vi /etc/sysconfig/network-scripts/ifcfg-ens33

11 ping www.baidu.com

12 vi /etc/sysconfig/network-scripts/ifcfg-ens33

13 ls

[root@umbrella ~]# !100

who

root pts/0 2018-11-25 20:14 (192.168.145.1)

歷史命令會被保存到用戶家目錄中的.bash_history文件中。Linux系統中以點(.)開頭的文件均代表隱藏文件,這些文件大多數為系統服務文件,可以用cat命令查看其文件內容。

HISCONTRO=ignorespace

[root@umbrella ~]# cat ~/.bash_history

要清空當前用戶在本機上執行的Linux命令歷史記錄信息,可執行如下命令:

[root@umbrella ~]# history -c

2.3工作目錄切換命令

工作目錄指的是用戶當前在系統中所處的位置。只需簡單瞭解一下這裡的操作實驗即可,如果不能完全掌握也沒有關係,畢竟Linux系統的知識體系太過龐大,每一位初學人員都需要經歷這麼一段時期。

1.pwd命令

pwd命令用於顯示用戶當前所處的工作目錄,格式為“pwd [選項]”。

[root@umbrella ~]# pwd

/root

2.cd命令

cd命令用於切換工作路徑,格式為“cd [目錄名稱]”。

這個命令應該是最常用的一個Linux命令了。可以通過cd命令迅速、靈活地切換到不同的工作目錄。除了常見的切換目錄方式,還可以使用“cd -”命令返回到上一次所處的目錄,使用“cd…”命令進入上級目錄,以及使用“cd ~”命令切換到當前用戶的家目錄,亦或使用“cd ~username”切換到其他用戶的家目錄。例如,可以使用“cd 路徑”的方式切換進/etc目錄中:

[root@umbrella ~]# cd /etc

同樣的道理,可使用下述命令切換到/bin目錄中:

[root@umbrella etc]# cd /bin

此時,要返回到上一次的目錄(即/etc目錄),可執行如下命令:

[root@umbrella bin]# cd -

/etc

[root@umbrella etc]#

還可以通過下面的命令快速切換到用戶的家目錄:

[root@umbrella etc]# cd ~

cd …是回到上一級目錄

cd . 是當前目錄

cd / 是回到根目錄

cd ~ 回到用戶主目錄/Home目錄

3.ls命令

ls命令用於顯示目錄中的文件信息,格式為“ls [選項] [文件] ”。

所處的工作目錄不同,當前工作目錄下的文件肯定也不同。使用ls命令的“-a”參數看到全部文件(包括隱藏文件),使用“-l”參數可以查看文件的屬性、大小等詳細信息。將這兩個參數整合之後,再執行ls命令即可查看當前目錄中的所有文件並輸出這些文件的屬性信息:

[root@umbrella /]# ls -al

total 20

dr-xr-xr-x. 17 root root 224 Nov 16 23:01 .

dr-xr-xr-x. 17 root root 224 Nov 16 23:01 …

lrwxrwxrwx. 1 root root 7 Nov 16 22:57 bin -> usr/bin

dr-xr-xr-x. 5 root root 4096 Nov 16 23:02 boot

drwxr-xr-x. 20 root root 3240 Nov 25 19:13 dev

drwxr-xr-x. 75 root root 8192 Nov 25 19:13 etc

drwxr-xr-x. 3 root root 17 Nov 16 23:01 home

lrwxrwxrwx. 1 root root 7 Nov 16 22:57 lib -> usr/lib

lrwxrwxrwx. 1 root root 9 Nov 16 22:57 lib64 -> usr/lib64

drwxr-xr-x. 2 root root 6 Nov 5 2016 media

drwxr-xr-x. 2 root root 6 Nov 5 2016 mnt

drwxr-xr-x. 2 root root 6 Nov 5 2016 opt

dr-xr-xr-x. 107 root root 0 Nov 25 19:12 proc

dr-xr-x—. 2 root root 151 Nov 24 19:48 root

drwxr-xr-x. 23 root root 680 Nov 25 19:13 run

lrwxrwxrwx. 1 root root 8 Nov 16 22:57 sbin -> usr/sbin

drwxr-xr-x. 2 root root 6 Nov 5 2016 srv

dr-xr-xr-x. 13 root root 0 Nov 25 19:12 sys

drwxrwxrwt. 9 root root 4096 Nov 25 20:50 tmp

drwxr-xr-x. 13 root root 155 Nov 16 22:57 usr

drwxr-xr-x. 19 root root 267 Nov 16 23:16 var

如果想要查看目錄屬性信息,則需要額外添加一個-d參數。例如,可使用如下命令查看/etc目錄的權限與屬性信息:

[root@umbrella /]# ls -ld /etc

drwxr-xr-x. 75 root root 8192 Nov 25 19:13 /etc

Linux系統中“一切都是文件”,而對服務程序進行配置自然也就是編輯程序的配置文件。如果不能熟練地查閱系統或服務的配置文件,那以後工作時可就真的要尷尬了。

1.cat命令

cat命令用於查看純文本文件(內容較少的),格式為“cat [選項] [文件]”。

Linux系統中有多個用於查看文本內容的命令,每個命令都有自己的特點,比如這個cat命令就是用於查看內容較少的純文本文件的。

如果在查看文本內容時還想順便顯示行號的話,不妨在cat命令後面追加一個-n參數:

[root@umbrella zzhtest]# cat -n test.txt

1 echo $SHELL

2 echo HelloWorld!

3 echo I love Linux!

4 echo I am a code monkey!

5 echo I love China!

6 echo I love watching movie!

7 echo I love the world!

8 echo I love everything in this world!

………………省略部分輸出信息………………

2.more命令

more命令用於查看純文本文件(內容較多的),格式為“more [選項]文件”。

如果需要閱讀長篇小說或者非常長的配置文件,那麼“小貓咪”可就真的不適合了。因為一旦使用cat命令閱讀長篇的文本內容,信息就會在屏幕上快速翻滾,導致自己還沒有來得及看到,內容就已經翻篇了。因此對於長篇的文本內容,推薦使用more命令來查看。more命令會在最下面使用百分比的形式來提示已經閱讀了多少內容。您還可以使用空格鍵或回車鍵向下翻頁:

[root@umbrella zzhtest]# more test.txt

echo $SHELL

echo HelloWorld!

echo I love Linux!

echo I am a code monkey!

echo I love China!

echo I love watching movie!

echo I love the world!

echo I love everything in this world!

echo $SHELL

echo HelloWorld!

echo I love Linux!

echo I am a code monkey!

echo I love China!

echo I love watching movie!

echo I love the world!

echo I love everything in this world!

3.less命令

用於查看文本文件(較多),可以上翻(和more對比)

4.head命令

head命令用於查看純文本文檔的前N行,格式為“head [選項] [文件]”。

在閱讀文本內容時,誰也難以保證會按照從頭到尾的順序往下看完整個文件。如果只想查看文本中前20行的內容,該怎麼辦呢?head命令可以派上用場了:

[root@umbrella zzhtest]# head -n 20 test.txt

echo $SHELL

echo HelloWorld!

echo I love Linux!

echo I am a code monkey!

echo I love China!

echo I love watching movie!

echo I love the world!

echo I love everything in this world!

echo $SHELL

echo HelloWorld!

echo I love Linux!

5.tail命令

tail命令用於查看純文本文檔的後N行或持續刷新內容,格式為“tail [選項] [文件]”。

我們可能還會遇到另外一種情況,比如需要查看文本內容的最後20行,這時就需要用到tail命令了。tail命令的操作方法與head命令非常相似,只需要執行“tail -n 20 文件名”命令就可以達到這樣的效果。tail命令最強悍的功能是可以持續刷新一個文件的內容,當想要實時查看最新日誌文件時,這特別有用,此時的命令格式為“tail -f 文件名”:

[root@umbrella ~]# tail -f /var/log/messages

May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack

May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack

May 4 07:56:38 localhost vmusr[12982]: [ warning] [Gtk] gtk_disable_setlocale() must be called before gtk_init()

May 4 07:56:50 localhost systemd-logind: Removed session c1.

Aug 1 01:05:31 localhost systemd: Time has been changed

Aug 1 01:05:31 localhost systemd: Started LSB: Bring up/down networking.

Aug 1 01:08:56 localhost dbus-daemon: dbus[1124]: [system] Activating service name=‘com.redhat.SubscriptionManager’ (using servicehelper)

Aug 1 01:08:56 localhost dbus[1124]: [system] Activating service name=‘com.redhat.SubscriptionManager’ (using servicehelper)

Aug 1 01:08:57 localhost dbus-daemon: dbus[1124]: [system] Successfully activated service ‘com.redhat.SubscriptionManager’

Aug 1 01:08:57 localhost dbus[1124]: [system] Successfully activated service ‘com.redhat.SubscriptionManager’

6.tr命令

tr命令用於替換文本文件中的字符,格式為“tr [原始字符] [目標字符]”。

在很多時候,我們想要快速地替換文本中的一些詞彙,又或者把整個文本內容都進行替換,如果進行手工替換,難免工作量太大,尤其是需要處理大批量的內容時,進行手工替換更是不現實。這時,就可以先使用cat命令讀取待處理的文本,然後通過管道符把這些文本內容傳遞給tr命令進行替換操作即可。例如,把某個文本內容中的英文全部替換為大寫:

[root@umbrella zzhtest]# cat demo.txt | tr [a-z] [A-Z]

I LOVE EVERYTHING IN THIS WORLD!

I LOVE STUDING LINUX!

I HATE SOMETHING BAD!

I WISH TO WORK FOR ALIBABA!

[root@umbrella zzhtest]# cat demo.txt

I love everything in this world!

I love studing linux!

I hate something bad!

I wish to work for Alibaba!

7.wc命令

wc命令用於統計指定文本的行數、字數、字節數,格式為“wc [參數] 文本”。

Linux系統中的wc命令用於統計文本的行數、字數、字節數等。如果為了方便自己記住這個命令的作用,也可以聯想到上廁所時好無聊,無聊到數完了手中的如廁讀物上有多少行字。wc的參數以及相應的作用如下所示。

wc的參數以及作用

參數 作用

-l 只顯示行數

-w 只顯示單詞數

-c 只顯示字節數

在Linux系統中,passwd是用於保存系統賬戶信息的文件,要統計當前系統中有多少個用戶,可以使用下面的命令來進行查詢,是不是很神奇:

[root@umbrella zzhtest]# wc -l /etc/passwd

19 /etc/passwd

8.stat命令

stat命令用於查看文件的具體存儲信息和時間等信息,格式為“stat 文件名稱”。

stat命令可以用於查看文件的存儲信息和時間等信息,命令stat anaconda-ks.cfg會顯示出文件的三種時間狀態:Access、Modify、Change。這三種時間的區別將在下面的touch命令中詳細詳解:

[root@umbrella zzhtest]# stat demo.txt

File: ‘demo.txt’

Size: 105 Blocks: 8 IO Block: 4096 regular file

Device: fd00h/64768d Inode: 33575319 Links: 1

Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:usr_t:s0

Access: 2018-11-25 22:29:41.983937040 +0800

Modify: 2018-11-25 22:29:16.963937193 +0800

Change: 2018-11-25 22:29:16.963937193 +0800

Birth: -

9.cut命令

cut命令用於按“列”提取文本字符,格式為“cut [參數] 文本”。

在Linux系統中,如何準確地提取出最想要的數據,這也是我們應該重點學習的內容。一般而言,按基於“行”的方式來提取數據是比較簡單的,只需要設置好要搜索的關鍵詞即可。但是如果按列搜索,不僅要使用-f參數來設置需要看的列數,還需要使用-d參數來設置間隔符號。passwd在保存用戶數據信息時,用戶信息的每一項值之間是採用冒號來間隔的,接下來我們使用下述命令嘗試提取出passwd文件中的用戶名信息,即提取以冒號(:)為間隔符號的第一列內容:

[root@umbrella ~]# head -n 2 /etc/passwd

root❌0:0:root:/root:/bin/bash

bin❌1:1:bin:/bin:/sbin/nologin

[root@umbrella ~]# cut -d: -f1 /etc/passwd

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

operator

games

ftp

nobody

dbus

polkitd

unbound

colord

usbmuxd

avahi

avahi-autoipd

libstoragemgmt

saslauth

qemu

rpc

rpcuser

nfsnobody

rtkit

radvd

ntp

chrony

abrt

pulse

gdm

gnome-initial-setup

postfix

sshd

tcpdump

umbrella

10.diff命令

diff命令用於比較多個文本文件的差異,格式為“diff [參數] 文件”。

在使用diff命令時,不僅可以使用–brief參數來確認兩個文件是否不同,還可以使用-c參數來詳細比較出多個文件的差異之處,這絕對是判斷文件是否被篡改的有力神器。例如,先使用cat命令分別查看diff_A.txt和diff_B.txt文件的內容,然後進行比較:

[root@umbrella zzhtest]# vim comp_a.txt

[root@umbrella zzhtest]# vim comp_b.txt

[root@umbrella zzhtest]# cat comp_a.txt

echo I love China!

echo I love my mom!

[root@umbrella zzhtest]# cat comp_b.txt

echo I love China!

echo I love my mom.

[root@umbrella zzhtest]# diff --brief comp_a.txt comp_b.txt

Files comp_a.txt and comp_b.txt differ

[root@umbrella zzhtest]# diff -c comp_a.txt comp_b.txt

*** comp_a.txt 2018-11-25 22:40:16.183933164 +0800

— comp_b.txt 2018-11-25 22:40:57.195932913 +0800

*** 1,2 ****

echo I love China!

! echo I love my mom!

— 1,2 ----

echo I love China!

! echo I love my mom.

如果相同,則沒有打印信息

[root@umbrella zzhtest]# diff -c comp_a.txt comp_b.txt

[root@umbrella zzhtest]# diff --brief comp_a.txt comp_b.txt

2.5 文件目錄管理命令

1.touch命令

touch命令用於創建空白文件或設置文件的時間,格式為“touch [選項] [文件]”。

在創建空白的文本文件方面,這個touch命令相當簡捷,簡捷到沒有必要鋪開去講。比如,touch umbrella 命令可以創建出一個名為umbrella 的空白文本文件。對touch命令來講,有難度的操作主要是體現在設置文件內容的修改時間(mtime)、文件權限或屬性的更改時間(ctime)與文件的讀取時間(atime)上面。touch命令的參數及其作用如下所示。

touch命令的參數及其作用

參數 作用

-a 僅修改“讀取時間”(atime)

-m 僅修改“修改時間”(mtime)

-d 同時修改atime與mtime

接下來,我們先使用ls命令查看一個文件的修改時間,然後修改這個文件,最後再通過touch命令把修改後的文件時間設置成修改之前的時間(很多黑客就是這樣做的呢):

[root@umbrella ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg

[root@umbrella ~]# echo “Visit the Thinkmo .com to learn linux skills” >> anaconda-ks.cfg

[root@umbrella ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg

[root@umbrella ~]# touch -d “2017-05-04 15:44” anaconda-ks.cfg

[root@umbrella ~]# ls -l anaconda-ks.cfg

-rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg

2.mkdir命令

mkdir命令用於創建空白的目錄,格式為“mkdir [選項] 目錄”。

在Linux系統中,文件夾是最常見的文件類型之一。除了能創建單個空白目錄外,mkdir命令還可以結合-p參數來遞歸創建出具有嵌套疊層關係的文件目錄。

[root@umbrella ~]# mkdir umbrella

[root@umbrella ~]# cd umbrella

[root@umbrella umbrella ]# mkdir -p a/b/c/d/e

[root@umbrella umbrella ]# cd a

[root@umbrella a]# cd b

[root@umbrella b]#

3.cp命令

cp命令用於複製文件或目錄,格式為“cp [選項] 源文件 目標文件”。大家對文件複製操作應該不陌生,在Linux系統中,複製操作具體分為3種情況:

如果目標文件是目錄,則會把源文件複製到該目錄中;

如果目標文件也是普通文件,則會詢問是否要覆蓋它;

如果目標文件不存在,則執行正常的複製操作。

cp命令的參數及其作用如下所示。

cp命令的參數及其作用

參數 作用

-p 保留原始文件的屬性

-d 若對象為“鏈接文件”,則保留該“鏈接文件”的屬性

-r 遞歸持續複製(用於目錄)

-i 若目標文件存在則詢問是否覆蓋

-a 相當於-pdr(p、d、r為上述參數)

接下來,使用touch創建一個名為install.log的普通空白文件,然後將其複製為一份名為x.log的備份文件,最後再使用ls命令查看目錄中的文件:

[root@umbrella ~]# touch install.log

[root@umbrella ~]# cp install.log x.log

[root@umbrella ~]# ls

install.log x.log

4.mv命令

mv命令用於剪切文件或將文件重命名,格式為“mv [選項] 源文件 [目標路徑|目標文件名]”。

剪切操作不同於複製操作,因為它會默認把源文件刪除掉,只保留剪切後的文件。如果在同一個目錄中對一個文件進行剪切操作,其實也就是對其進行重命名:

[root@umbrella ~]# mv x.log linux.log

[root@umbrella ~]# ls

install.log linux.log

5.rm命令 慎用 rm -rf /*

rm命令用於刪除文件或目錄,格式為“rm [選項] 文件”。

在Linux系統中刪除文件時,系統會默認向您詢問是否要執行刪除操作,如果不想總是看到這種反覆的確認信息,可在rm命令後跟上-f參數來強制刪除。另外,想要刪除一個目錄,需要在rm命令後面一個-r參數才可以,否則刪除不掉。我們來嘗試刪除前面創建的install.log和linux.log文件:

[root@umbrella ~]# rm install.log

rm: remove regular empty file ‘install.log’? y

[root@umbrella ~]# rm -f linux.log

[root@umbrella ~]# ls

[root@umbrella ~]#

6.dd命令

dd命令用於按照指定大小和個數的數據塊來複制文件或轉換文件,格式為“dd [參數]”。

dd命令是一個比較重要而且比較有特色的一個命令,它能夠讓用戶按照指定大小和個數的數據塊來複制文件的內容。當然如果願意的話,還可以在複製過程中轉換其中的數據。Linux系統中有一個名為/dev/zero的設備文件。因為這個文件不會佔用系統存儲空間,但卻可以提供無窮無盡的數據,因此可以使用它作為dd命令的輸入文件,來生成一個指定大小的文件。dd命令的參數及其作用如下所示。

dd命令的參數及其作用

參數 作用

if 輸入的文件名稱

of 輸出的文件名稱

bs 設置每個“塊”的大小

count 設置要複製“塊”的個數

例如我們可以用dd命令從/dev/zero設備文件中取出一個大小為560MB的數據塊,然後保存成名為560_file的文件。在理解了這個命令後,以後就能隨意創建任意大小的文件了:

[root@umbrella ~]# dd if=/dev/zero of=560_file count=1 bs=560M

1+0 records in

1+0 records out

587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s

dd命令的功能也絕不僅限於複製文件這麼簡單。如果您想把光驅設備中的光盤製作成iso格式的鏡像文件,在Windows系統中需要藉助於第三方軟件才能做到,但在Linux系統中可以直接使用dd命令來壓制出光盤鏡像文件,將它變成一個可立即使用的iso鏡像:

[root@umbrella ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-umbrella .Com.iso

7311360+0 records in

7311360+0 records out

3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s

考慮到有些讀者會糾結bs塊大小與count塊個數的關係,下面舉一個吃貨的例子進行解釋。假設小明的飯量(即需求)是一個固定的值,用來盛飯的勺子的大小即bs塊大小,而用勺子盛飯的次數即count塊個數。小明要想吃飽(滿足需求),則需要在勺子大小(bs塊大小)與用勺子盛飯的次數(count塊個數)之間進行平衡。勺子越大,用勺子盛飯的次數就越少。由上可見,bs與count都是用來指定容量的大小,只要能滿足需求,可隨意組合搭配方式。

7.file命令

file命令用於查看文件的類型(普通文件 目錄 鏈接文件 塊文件),格式為“file 文件名”。

在Linux系統中,由於文本、目錄、設備等所有這些一切都統稱為文件,而我們又不能單憑後綴就知道具體的文件類型,這時就需要使用file命令來查看文件類型了。

[root@umbrella ~]# file anaconda-ks.cfg

anaconda-ks.cfg: ASCII text

[root@umbrella ~]# file /dev/sda

/dev/sda: block special

2.6 打包壓縮

在網絡上,人們越來越傾向於傳輸壓縮格式的文件,原因是壓縮文件體積小,在網速相同的情況下,傳輸時間短。下面將學習如何在Linux系統中對文件進行打包壓縮與解壓,以及讓用戶基於關鍵詞在文本文件中搜索相匹配的信息、在整個文件系統中基於指定的名稱或屬性搜索特定文件。本節雖然只有3條命令,但是其功能都比較複雜而且參數很多,因此放到了本章最後講解。

1.tar命令

tar命令用於對文件進行打包壓縮或解壓,格式為“tar [選項] [文件]”。

在Linux系統中,常見的文件格式比較多,其中主要使用的是.tar或.tar.gz或.tar.bz2格式,我們不用擔心格式太多而記不住,其實這些格式大部分都是由tar命令來生成的。

tar命令的參數及其作用

參數 作用

-c 創建壓縮文件

-x 解開壓縮文件

-t 查看壓縮包內有哪些文件

-z 用Gzip壓縮或解壓

-j 用bzip2壓縮或解壓

-v 顯示壓縮或解壓的過程

-f 目標文件名

-p 保留原始的權限與屬性

-P 使用絕對路徑來壓縮

-C 指定解壓到的目錄

首先,-c參數用於創建壓縮文件,-x參數用於解壓文件,因此這兩個參數不能同時使用。其次,-z參數指定使用Gzip格式來壓縮或解壓文件,-j參數指定使用bzip2格式來壓縮或解壓文件。用戶使用時則是根據文件的後綴來決定應使用何種格式參數進行解壓。在執行某些壓縮或解壓操作時,可能需要花費數個小時,如果屏幕一直沒有輸出,一方面不好判斷打包的進度情況,另一方面也會懷疑電腦死機了,因此非常推薦使用-v參數向用戶不斷顯示壓縮或解壓的過程。-C參數用於指定要解壓到哪個指定的目錄。-f參數特別重要,它必須放到參數的最後一位,代表要壓縮或解壓的軟件包名稱。一般使用“tar -czvf 壓縮包名稱.tar.gz 要打包的目錄”命令把指定的文件進行打包壓縮;相應的解壓命令為“tar -xzvf 壓縮包名稱.tar.gz”。下面我們來逐個演示下打包壓縮與解壓的操作。先使用tar命令把/etc目錄通過gzip格式進行打包壓縮,並把文件命名為 etc.tar.gz:

[root@umbrella ~]# tar czvf etc.tar.gz /etc

tar: Removing leading `/’ from member names

/etc/

/etc/fstab

/etc/crypttab

/etc/mtab

/etc/fonts/

/etc/fonts/conf.d/

/etc/fonts/conf.d/65-0-madan.conf

/etc/fonts/conf.d/59-liberation-sans.conf

/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf

/etc/fonts/conf.d/59-liberation-mono.conf

/etc/fonts/conf.d/66-sil-nuosu.conf

………………省略部分壓縮過程信息………………

接下來將打包後的壓縮包文件指定解壓到/root/etc目錄中(先使用 mkdir命令來創建/root/etc目錄):

[root@umbrella ~]# mkdir /root/etc

[root@umbrella ~]# tar xzvf etc.tar.gz -C /root/etc

etc/

etc/fstab

etc/crypttab

etc/mtab

etc/fonts/

etc/fonts/conf.d/

etc/fonts/conf.d/65-0-madan.conf

etc/fonts/conf.d/59-liberation-sans.conf

etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf

etc/fonts/conf.d/59-liberation-mono.conf

etc/fonts/conf.d/66-sil-nuosu.conf

etc/fonts/conf.d/65-1-vlgothic-gothic.conf

etc/fonts/conf.d/65-0-lohit-bengali.conf

etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf

………………省略部分解壓過程信息………………


你學到了嗎?


分享到:


相關文章: