主流Linux系統選擇Bash解釋器做爲命令行終端主要有如下4項優點:node
1:經過上下方向鍵來調取過往執行過的Linux命令;linux
2:命令或參數僅需輸入前幾位就能夠用Tab鍵補全;c++
3:具備強大的批處理腳本;shell
4:具備實用的環境變量功能。緩存
一. 系統幫助命令bash
長格式:man --help網絡
短格式:man -h架構
在man命令幫助信息的界面中,所包含的經常使用操做按鍵及其用途以下表:app
按鍵 | 用處 |
空格鍵 | 向下翻一頁 |
PaGe down | 向下翻一頁 |
PaGe up | 向上翻一頁 |
home | 直接前往首頁 |
end | 直接前往尾頁 |
/ | 從上至下搜索某個關鍵詞,如「/linux」 |
? | 從下至上搜索某個關鍵詞,如「?linux」 |
n | 定位到下一個搜索到的關鍵詞 |
N | 定位到上一個搜索到的關鍵詞 |
q | 退出幫助文檔 |
echo命令用於在終端輸出字符串或變量提取後的值,格式爲「echo [字符串 | $變量]」。運維
[root@raymond ~]# echo hello linux hello linux [root@raymond ~]#
咱們使用$變量的方式提取變量SHELL的值,並將其輸出到屏幕上:
[root@raymond ~]# echo $SHELL /bin/bash [root@raymond ~]#
date命令中的參數以及做用
參數 | 做用 |
%t | 跳格[Tab鍵] |
%H | 小時(00~23) |
%I | 小時(00~12) |
%M | 分鐘(00~59) |
%S | 秒(00~59) |
%j | 今年中的第幾天 |
按照默認格式查看當前系統時間的date命令以下所示:
[root@raymond ~]# date 2018年 03月 08日 星期四 11:18:49 CST
按照「年-月-日 小時:分鐘:秒」的格式查看當前系統時間的date命令以下所示:
[root@raymond ~]# date "+%Y-%m-%d %H:%M:%S" 2018-03-08 11:21:41 [root@raymond ~]# date "+%y-%m-%d %H:%M:%S" 18-03-08 11:22:09
將系統的當前時間設置爲2017年9月1日8點30分的date命令以下所示:
[root@raymond ~]# date -s "20170901 08:30:00" 2017年 09月 01日 星期五 08:30:00 CST
再次使用date命令並按照默認的格式查看當前的系統時間,以下所示:
[root@raymond ~]# date 2017年 09月 01日 星期五 08:30:20 CST
date命令中的參數%j可用來查看今天是當年中的第幾天。這個參數可以很好地區分備份時間的新舊,即數字越大,越靠近當前時間。該參數的使用方式以及顯示結果以下所示:
[root@raymond ~]# date "+%j" 067
reboot命令用於重啓系統,其格式爲reboot。
因爲重啓計算機這種操做會涉及硬件資源的管理權限,所以默認只能使用root管理員來重啓,其命令以下:
[root@raymond ~]# reboot
poweroff命令用於關閉系統,其格式爲poweroff。
該命令與reboot命令相同,都會涉及硬件資源的管理權限,所以默認只有root管理員才能夠關閉電腦,其命令以下:
[root@raymond ~]# poweroff
wget命令用於在終端中下載網絡文件,格式爲「wget [參數] 下載地址」。
若是您沒有Linux系統的管理經驗,當前只需瞭解一下wget命令的參數以及做用,而後看一下下面的演示實驗便可,切記不要急於求成。後面章節將逐步講解Linux系統的配置管理方法,能夠等您掌握了網卡的配置方法後再來進行這個實驗操做。
wget命令的參數以及做用
參數 | 做用 |
-b | 後臺下載模式 |
-P | 下載到指定目錄 |
-t | 最大嘗試次數 |
-c | 斷點續傳 |
-p | 下載頁面內全部資源,包括圖片、視頻等 |
-r | 遞歸下載 |
嘗試使用wget命令從本書的配套站點中下載本書的最新pdf格式電子文檔:
[root@raymond ~]# wget wget https://www.cnblogs.com/docs/blog.pdf
接下來,咱們使用wget命令遞歸下載www.cnblogs.com網站內的全部頁面數據以及文件,下載完後會自動保存到當前路徑下一個名爲www.cnblogs.com的目錄中。執行該操做的命令爲wget -r -pwww.cnblogs.com,該命令的執行結果以下。
[root@raymond ~]# wget wget -r -p https://www.cnblogs.com
ps命令用於查看系統中的進程狀態,格式爲「ps [參數]」。
估計讀者在第一次執行這個命令時都要驚呆一下—怎麼會有這麼多輸出值,這可怎麼看得過來?其實,劉遄老師一般會將ps命令與第3章的管道符技術搭配使用,用來抓取與某個指定服務進程相對應的PID號碼。ps命令的常見參數以及做用以下表所示:
ps命令的參數以及做用
參數 | 做用 |
-a | 顯示全部進程(包括其餘用戶的進程) |
-u | 用戶以及其餘詳細信息 |
-x | 顯示沒有控制終端的進程 |
Linux系統中時刻運行着許多進程,若是可以合理地管理它們,則能夠優化系統的性能。在Linux系統中,有5種常見的進程狀態,分別爲運行、中斷、不可中斷、僵死與中止,其各自含義以下所示:
R(運行):進程正在運行或在運行隊列中等待。
S(中斷):進程處於休眠中,當某個條件造成後或者接收到信號時,則脫離該 狀態。
D(不可中斷):進程不響應系統異步信號,即使用kill命令也不能將其中斷。
Z(僵死):進程已經終止,但進程描述符依然存在, 直到父進程調用wait4()系統函數後將進程釋放。
T(中止):進程收到中止信號後中止運行。
當執行ps aux命令後一般會看到以下表所示的進程狀態,表中只是列舉了部分輸出值,並且正常的輸出值中不包括中文註釋。
[root@raymond ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19364 1556 ? Ss 10:14 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 10:14 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:14 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 10:14 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 10:14 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 10:14 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 10:14 0:07 [events/0] root 8 0.0 0.0 0 0 ? S 10:14 0:00 [cgroup]
如前面所提到的,在Linux系統中的命令參數有長短格式之分,長格式和長格式之間不能合併,長格式和短格式之間也不能合併,但短格式和短格式之間是能夠合併的,合併後僅保留一個-(減號)便可。另外ps命令可容許參數不加減號(-),所以可直接寫成ps aux的樣子。
top命令用於動態地監視進程活動與系統負載等信息,其格式爲top。
top命令至關強大,可以動態地查看系統運維狀態,徹底將它看做Linux中的「強化版的Windows任務管理器」。top命令的運行界面以下圖所示:
top命令執行結果的前5行爲系統總體的統計信息,其所表明的含義以下。
第1行:系統時間、運行時間、登陸終端數、系統負載(三個數值分別爲1分鐘、5分鐘、15分鐘內的平均值,數值越小意味着負載越低)。
第2行:進程總數、運行中的進程數、睡眠中的進程數、中止的進程數、僵死的進程數。
第3行:用戶佔用資源百分比、系統內核佔用資源百分比、改變過優先級的進程資源百分比、空閒的資源百分比等。其中數據均爲CPU數據並以百分比格式顯示,例如「97.1 id」意味着有97.1%的CPU處理器資源處於空閒。
第4行:物理內存總量、內存使用量、內存空閒量、做爲內核緩存的內存量。
第5行:虛擬內存總量、虛擬內存使用量、虛擬內存空閒量、已被提早加載的內存量。
pidof命令用於查詢某個指定服務進程的PID值,格式爲「pidof [參數] [服務名稱]」。
每一個進程的進程號碼值(PID)是惟一的,所以能夠經過PID來區分不一樣的進程。例如,可使用以下命令來查詢本機上sshd服務程序的PID:
[root@raymond ~]# pidof sshd 3613 1811 1521
kill命令用於終止某個指定PID的服務進程,格式爲「kill [參數] [進程PID]」。
接下來,咱們使用kill命令把上面用pidof命令查詢到的PID所表明的進程終止掉,其命令以下所示。這種操做的效果等同於強制中止sshd服務。
[root@raymond ~]# kill 3613 1811 1521
killall命令用於終止某個指定名稱的服務所對應的所有進程,格式爲:「killall [參數] [進程名稱]」。
一般來說,複雜軟件的服務程序會有多個進程協同爲用戶提供服務,若是逐個去結束這些進程會比較麻煩,此時可使用killall命令來批量結束某個服務程序帶有的所有進程。下面以httpd服務程序爲例,來結束其所有進程。因爲RHEL7系統默認沒有安裝httpd服務程序,所以你們此時只需看操做過程和輸出結果便可,等學習了相關內容以後再來實踐。
[root@linuxprobe ~]# pidof httpd 13581 13580 13579 13578 13577 13576 [root@linuxprobe ~]# killall httpd [root@linuxprobe ~]# pidof httpd [root@linuxprobe ~]#
若是咱們在系統終端中執行一個命令後想當即中止它,能夠同時按下Ctrl + C組合鍵(生產環境中比較經常使用的一個快捷鍵),這樣將當即終止該命令的進程。或者,若是有些命令在執行時不斷地在屏幕上輸出信息,影響到後續命令的輸入,則能夠在執行命令時在末尾添加上一個&符號,這樣命令將進入系統後臺來執行。
ifconfig命令用於獲取網卡配置與網絡狀態等信息,格式爲「ifconfig [網絡設備] [參數]」。
使用ifconfig命令來查看本機當前的網卡配置與網絡狀態等信息時,其實主要查看的就是網卡名稱、inet參數後面的IP地址、ether參數後面的網卡物理地址(又稱爲MAC地址),以及RX、TX的接收數據包與發送數據包的個數及累計流量(即下面加粗加線的信息內容):
[root@raymond ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:2B:11:50 inet addr:192.168.65.129 Bcast:192.168.65.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe2b:1150/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:110 errors:0 dropped:0 overruns:0 frame:0 TX packets:104 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10995 (10.7 KiB) TX bytes:10519 (10.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
uname命令用於查看系統內核與系統版本等信息,格式爲「uname [-a]」。
在使用uname命令時,通常會固定搭配上-a參數來完整地查看當前系統的內核名稱、主機名、內核發行版本、節點名、系統時間、硬件名稱、硬件平臺、處理器類型以及操做系統名稱等信息。
[root@raymond ~]# uname -a Linux raymond 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
順帶一提,若是要查看當前系統版本的詳細信息,則須要查看redhat-release文件,其命令以及相應的結果以下:
[root@raymond ~]# cat /etc/redhat-release CentOS release 6.6 (Final)
uptime用於查看系統的負載信息,格式爲uptime。
uptime命令真的很棒,它能夠顯示當前系統時間、系統已運行時間、啓用終端數量以及平均負載值等信息。平均負載值指的是系統在最近1分鐘、5分鐘、15分鐘內的壓力狀況(下面加粗的信息部分);負載值越低越好,儘可能不要長期超過1,在生產環境中不要超過5。
[root@raymond ~]# uptime 16:26:04 up 12 min, 2 users, load average: 0.00, 0.00, 0.00
free用於顯示當前系統中內存的使用量信息,格式爲「free [-h]」。
爲了保證Linux系統不會因資源耗盡而忽然宕機,運維人員須要時刻關注內存的使用量。在使用free命令時,能夠結合使用-h參數以更人性化的方式輸出當前內存的實時使用量信息。
[root@raymond ~]# free -h free: invalid option -- 'h' usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V] -b,-k,-m,-g show output in bytes, KB, MB, or GB -l show detailed low and high memory statistics -o use old format (no -/+buffers/cache line) -t display total for RAM + swap -s update every [delay] seconds -c update [count] times -a show available memory if exported by kernel (>80 characters per line) -V display version information and exit
輸入free -mlot結果以下(漢字是另外添加的):
[root@raymond ~]# free -mlot 內存總量 已用量 可用量 進程共享內存量 磁盤緩衝內存量 緩衝內存量 total used free shared buffers cached Mem: 980 219 761 0 13 85 Low: 980 219 761 High: 0 0 0 Swap: 511 0 511 Total: 1492 219 1273
who用於查看當前登入主機的用戶終端信息,格式爲「who [參數]」。
這三個簡單的字母能夠快速顯示出全部正在登陸本機的用戶的名稱以及他們正在開啓的終端信息。
[root@raymond ~]# who 登錄的用戶名 終端設備 登錄的時間 root tty1 2018-03-09 16:15 root pts/0 2018-03-09 16:16 (192.168.65.1)
last命令用於查看全部系統的登陸記錄,格式爲「last [參數]」。
使用last命令能夠查看本機的登陸記錄。可是,因爲這些信息都是以日誌文件的形式保存在系統中,所以黑客能夠很容易地對內容進行篡改。千萬不要單純以該命令的輸出信息而判斷系統有無被惡意入侵!
[root@raymond ~]# last root pts/0 192.168.65.1 Fri Mar 9 16:16 still logged in root tty1 Fri Mar 9 16:15 still logged in reboot system boot 2.6.32-504.el6.x Fri Mar 9 16:04 - 16:46 (00:42) root pts/1 192.168.65.1 Thu Mar 8 11:17 - 12:45 (01:28) root pts/0 192.168.65.1 Thu Mar 8 09:40 - down (03:05) root tty1 Thu Mar 8 09:39 - down (03:05) reboot system boot 2.6.32-504.el6.x Thu Mar 8 09:39 - 12:45 (03:06) root tty1 Tue Feb 20 11:40 - down (00:11) reboot system boot 2.6.32-504.el6.x Tue Feb 20 11:39 - 11:52 (00:12) ......................省略部分信息............................................................
history命令用於顯示歷史執行過的命令,格式爲「history [-c]」。
history命令應該是做者最喜歡的命令。執行history命令能顯示出當前用戶在本地計算機中執行過的最近1000條命令記錄。若是以爲1000不夠用,還能夠自定義/etc/profile文件中的HISTSIZE變量值。在使用history命令時,若是使用-c參數則會清空全部的命令歷史記錄。還可使用 「!編碼數字」 的方式來重複執行某一次的命令。總之,history命令有不少有趣的玩法等待您去開發。
[root@raymond ~]# history 1 uname -r 2 uname -m 3 uname -a 4 shutdown 5 halt 6 shutdown -h now 7 ifconfig 8 whoami 9 shutnow -h now 10 shutdown -h now 11 shutdown -h now 12 ifconfig 13 ping www.baidu.com 14 ls 15 cd / 16 ls 17 cd ~ 18 ls ...........................省略部分信息.................................................
用 「!編碼數字」的方法顯示命令:
[root@raymond ~]# !180 who root tty1 2018-03-09 16:15 root pts/0 2018-03-09 16:16 (192.168.65.1)
要清空當前用戶在本機上執行的Linux命令歷史記錄信息,可執行以下命令:
[root@raymond ~]# history -c
sosreport命令用於收集系統配置及架構信息並輸出診斷文檔,格式爲sosreport。
當Linux系統出現故障須要聯繫技術支持人員時,大多數時候都要先使用這個命令來簡單收集系統的運行狀態和服務配置信息,以便讓技術支持人員可以遠程解決一些小問題,亦或讓他們能提早了解某些複雜問題。在下面的輸出信息中,加粗的部分是收集好的資料壓縮文件以及校驗碼,將其發送給技術支持人員便可:
[root@raymond ~]# sosreport sosreport (version 2.2) This command will collect diagnostic and configuration information from this CentOS Linux system and installed applications. An archive containing the collected information will be generated in /tmp and may be provided to a CentOS support representative. Any information provided to CentOS will be treated in accordance with the published support policies at: https://access.redhat.com/support/ The generated archive may contain data considered sensitive and its content should be reviewed by the originating organization before being passed to any third party. No changes will be made to system configuration. Press ENTER to continue, or CTRL-C to quit. Please enter your first initial and last name [raymond]: raymond Please enter the case number that you are generating this report for [None]: Running plugins. Please wait ... Completed [64/64] ... Creating compressed archive... Your sosreport has been generated and saved in: /tmp/sosreport-raymond-20180309165822-a515.tar.xz The md5sum is: 617cc419cb126cd1f0f5af7ba825a515 Please send this file to your support representative.
pwd命令用於顯示用戶當前所處的工做目錄,格式爲「pwd [選項]」。
[root@raymond ~]# pwd
/root
cd命令用於切換工做路徑,格式爲「cd [目錄名稱]」。
這個命令應該是最經常使用的一個Linux命令了。能夠經過cd命令迅速、靈活地切換到不一樣的工做目錄。除了常見的切換目錄方式,還可使用「cd -」命令返回到上一次所處的目錄,使用「cd..」命令進入上級目錄,以及使用「cd ~」命令切換到當前用戶的家目錄,亦或使用「cd ~username」切換到其餘用戶的家目錄。例如,可使用「cd 路徑」的方式切換進/etc目錄中:
[root@raymond zgf]# cd /etc
一樣的道理,可以使用下述命令切換到/bin目錄中:
[root@raymond etc]# cd /bin
此時,要返回到上一次的目錄(即/etc目錄),可執行以下命令:
[root@raymond bin]# cd -
/etc
[root@raymond etc]#
還能夠經過下面的命令快速切換到用戶的家目錄:
[root@raymond etc]# cd ~ [root@raymond ~]# pwd /root
ls命令用於顯示目錄中的文件信息,格式爲「ls [選項] [文件] 」。
所處的工做目錄不一樣,當前工做目錄下的文件確定也不一樣。使用ls命令的「-a」參數看到所有文件(包括隱藏文件),使用「-l」參數能夠查看文件的屬性、大小等詳細信息。將這兩個參數整合以後,再執行ls命令便可查看當前目錄中的全部文件並輸出這些文件的屬性信息:
[root@raymond ~]# ls -al 總用量 76 dr-xr-x---. 3 root root 4096 3月 9 16:58 . dr-xr-xr-x. 22 root root 4096 3月 9 16:57 .. -rw-------. 1 root root 1079 11月 23 17:37 anaconda-ks.cfg -rw-------. 1 root root 1759 3月 8 12:45 .bash_history -rw-r--r--. 1 root root 18 5月 20 2009 .bash_logout -rw-r--r--. 1 root root 176 5月 20 2009 .bash_profile -rw-r--r--. 1 root root 176 9月 23 2004 .bashrc -rw-r--r--. 1 root root 100 9月 23 2004 .cshrc -rw-r--r--. 1 root root 22668 11月 23 17:37 install.log -rw-r--r--. 1 root root 5890 11月 23 17:36 install.log.syslog drwxr-xr-x. 3 root root 4096 3月 9 16:58 .systemtap -rw-r--r--. 1 root root 129 12月 4 2004 .tcshrc
若是想要查看目錄屬性信息,則須要額外添加一個-d參數。例如,可以使用以下命令查看/etc目錄的權限與屬性信息:
[root@raymond ~]# ls -ld /etc drwxr-xr-x. 92 root root 4096 3月 9 16:04 /etc
cat命令用於查看純文本文件(內容較少的),格式爲「cat [選項] [文件]」。
Linux系統中有多個用於查看文本內容的命令,每一個命令都有本身的特色,好比這個cat命令就是用於查看內容較少的純文本文件的。cat這個命令也很好記,由於cat在英語中是「貓」的意思,小貓咪是否是給您一種嬌小、可愛的感受呢?
若是在查看文本內容時還想順便顯示行號的話,不妨在cat命令後面追加一個 -n參數:
[root@raymond ~]# cat -n install.log 1 安裝 libgcc-4.4.7-11.el6.x86_64 2 warning: libgcc-4.4.7-11.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 3 安裝 setup-2.8.14-20.el6_4.1.noarch 4 安裝 filesystem-2.4.30-3.el6.x86_64 5 安裝 basesystem-10.0-4.el6.noarch 6 安裝 xml-common-0.6.3-33.el6.noarch 7 安裝 kernel-headers-2.6.32-504.el6.x86_64 8 安裝 ncurses-base-5.7-3.20090208.el6.x86_64 9 安裝 cjkuni-fonts-common-0.2.20080216.1-36.el6.noarch 10 安裝 compat-glibc-headers-2.5-46.2.x86_64 11 安裝 iso-codes-3.16-2.el6.noarch 12 安裝 dmz-cursor-themes-0.4-4.el6.noarch 13 安裝 mailcap-2.1.31-2.el6.noarch 14 安裝 libX11-common-1.6.0-2.2.el6.noarch 15 安裝 tzdata-2014g-1.el6.noarch
more命令用於查看純文本文件(內容較多的),格式爲「more [選項]文件」。
若是須要閱讀長篇小說或者很是長的配置文件,那麼「小貓咪」可就真的不適合了。由於一旦使用cat命令閱讀長篇的文本內容,信息就會在屏幕上快速翻滾,致使本身尚未來得及看到,內容就已經翻篇了。所以對於長篇的文本內容,推薦使用more命令來查看。more命令會在最下面使用百分比的形式來提示您已經閱讀了多少內容。您還可使用空格鍵或回車鍵向下翻頁:
[root@raymond ~]# more install.log 安裝 libgcc-4.4.7-11.el6.x86_64 warning: libgcc-4.4.7-11.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 安裝 setup-2.8.14-20.el6_4.1.noarch 安裝 filesystem-2.4.30-3.el6.x86_64 安裝 basesystem-10.0-4.el6.noarch 安裝 xml-common-0.6.3-33.el6.noarch 安裝 kernel-headers-2.6.32-504.el6.x86_64 安裝 ncurses-base-5.7-3.20090208.el6.x86_64 安裝 cjkuni-fonts-common-0.2.20080216.1-36.el6.noarch 安裝 compat-glibc-headers-2.5-46.2.x86_64 安裝 iso-codes-3.16-2.el6.noarch 安裝 dmz-cursor-themes-0.4-4.el6.noarch 安裝 mailcap-2.1.31-2.el6.noarch 安裝 libX11-common-1.6.0-2.2.el6.noarch 安裝 tzdata-2014g-1.el6.noarch 安裝 glibc-common-2.12-1.149.el6.x86_64 安裝 nss-softokn-freebl-3.14.3-17.el6.x86_64 安裝 glibc-2.12-1.149.el6.x86_64 安裝 ncurses-libs-5.7-3.20090208.el6.x86_64 安裝 bash-4.1.2-29.el6.x86_64 安裝 libattr-2.4.44-7.el6.x86_64 安裝 libcap-2.16-5.5.el6.x86_64 安裝 zlib-1.2.3-29.el6.x86_64 安裝 info-4.13a-8.el6.x86_64 安裝 dbus-libs-1.2.24-7.el6_3.x86_64 安裝 libstdc++-4.4.7-11.el6.x86_64 安裝 freetype-2.3.11-14.el6_3.1.x86_64 安裝 libxml2-2.7.6-14.el6_5.2.x86_64 --More--(5%)
head命令用於查看純文本文檔的前N行,格式爲「head [選項] [文件]」。
在閱讀文本內容時,誰也難以保證會按照從頭至尾的順序往下看完整個文件。若是隻想查看文本中前10行的內容,該怎麼辦呢?head命令能夠派上用場了:
[root@raymond ~]# head -n 10 install.log 安裝 libgcc-4.4.7-11.el6.x86_64 warning: libgcc-4.4.7-11.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 安裝 setup-2.8.14-20.el6_4.1.noarch 安裝 filesystem-2.4.30-3.el6.x86_64 安裝 basesystem-10.0-4.el6.noarch 安裝 xml-common-0.6.3-33.el6.noarch 安裝 kernel-headers-2.6.32-504.el6.x86_64 安裝 ncurses-base-5.7-3.20090208.el6.x86_64 安裝 cjkuni-fonts-common-0.2.20080216.1-36.el6.noarch 安裝 compat-glibc-headers-2.5-46.2.x86_64
tail命令用於查看純文本文檔的後N行或持續刷新內容,格式爲「tail [選項] [文件]」。
咱們可能還會遇到另一種狀況,好比須要查看文本內容的最後20行,這時就須要用到tail命令了。
tail命令的操做方法與head命令很是類似,只須要執行「tail -n 20 文件名」命令就能夠達到這樣的效果。
[root@raymond ~]# tail -n 10 install.log 安裝 rt73usb-firmware-1.8-7.el6.noarch 安裝 ipw2100-firmware-1.3-11.el6.noarch 安裝 ql23xx-firmware-3.03.27-3.1.el6.noarch 安裝 ipw2200-firmware-3.1-4.el6.noarch 安裝 rootfiles-8.1-6.1.el6.noarch 安裝 nss-softokn-freebl-3.14.3-17.el6.i686 安裝 glibc-2.12-1.149.el6.i686 安裝 libgcc-4.4.7-11.el6.i686 安裝 compat-libstdc++-296-2.96-144.el6.i686
[root@raymond ~]# tail -f /var/log/messages Mar 9 16:57:58 raymond kernel: Bridge firewalling registered Mar 9 17:04:06 raymond dhclient[1260]: DHCPREQUEST on eth0 to 192.168.65.254 port 67 (xid=0x42a0c1c7) Mar 9 17:04:06 raymond dhclient[1260]: DHCPACK from 192.168.65.254 (xid=0x42a0c1c7) Mar 9 17:04:08 raymond dhclient[1260]: bound to 192.168.65.129 -- renewal in 788 seconds. Mar 9 17:17:16 raymond dhclient[1260]: DHCPREQUEST on eth0 to 192.168.65.254 port 67 (xid=0x42a0c1c7) Mar 9 17:17:16 raymond dhclient[1260]: DHCPACK from 192.168.65.254 (xid=0x42a0c1c7) Mar 9 17:17:18 raymond dhclient[1260]: bound to 192.168.65.129 -- renewal in 764 seconds. Mar 9 17:30:02 raymond dhclient[1260]: DHCPREQUEST on eth0 to 192.168.65.254 port 67 (xid=0x42a0c1c7) Mar 9 17:30:02 raymond dhclient[1260]: DHCPACK from 192.168.65.254 (xid=0x42a0c1c7) Mar 9 17:30:04 raymond dhclient[1260]: bound to 192.168.65.129 -- renewal in 770 seconds.
tr命令用於替換文本文件中的字符,格式爲「tr [原始字符] [目標字符]」。
在不少時候,咱們想要快速地替換文本中的一些詞彙,又或者把整個文本內容都進行替換,若是進行手工替換,不免工做量太大,尤爲是須要處理大批量的內容時,進行手工替換更是不現實。這時,就能夠先使用cat命令讀取待處理的文本,而後經過管道符(詳見第3章)把這些文本內容傳遞給tr命令進行替換操做便可。例如,把某個文本內容中的英文所有替換爲大寫:
[root@linuxprobe ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z] #VERSION=RHEL7 # SYSTEM AUTHORIZATION INFORMATION AUTH --ENABLESHADOW --PASSALGO=SHA512 # USE CDROM INSTALLATION MEDIA CDROM # RUN THE SETUP AGENT ON FIRST BOOT FIRSTBOOT --ENABLE IGNOREDISK --ONLY-USE=SDA # KEYBOARD LAYOUTS KEYBOARD --VCKEYMAP=US --XLAYOUTS='US' # SYSTEM LANGUAGE LANG EN_US.UTF-8 # NETWORK INFORMATION NETWORK --BOOTPROTO=DHCP --DEVICE=ENO16777728 --ONBOOT=OFF --IPV6=AUTO NETWORK --HOSTNAME=LOCALHOST.LOCALDOMAIN # ROOT PASSWORD ROOTPW --ISCRYPTED $6$PDJJF42G8C6PL069$II.PX/YFAQPO0ENW2PA7MOMKJLYOAE2ZJMZ2UZJ7BH3UO4OWTR1.WK/HXZ3XIGMZGJPCS/MGPYSSOI8HPCT8B/ # SYSTEM TIMEZONE TIMEZONE AMERICA/NEW_YORK --ISUTC USER --NAME=LINUXPROBE --PASSWORD=$6$A9V3INSTNBWEIR7D$JEGFYWBCDOOOKJ9SODECCDO.ZLF4OSH2AZ2SS2R05B6LZ2A0V2K.RJWSBALL2FEKQVGF640OA/TOK6J.7GUTO/ --ISCRYPTED --GECOS="LINUXPROBE" # X WINDOW SYSTEM CONFIGURATION INFORMATION XCONFIG --STARTXONBOOT # SYSTEM BOOTLOADER CONFIGURATION BOOTLOADER --LOCATION=MBR --BOOT-DRIVE=SDA AUTOPART --TYPE=LVM # PARTITION CLEARING INFORMATION CLEARPART --NONE --INITLABEL %PACKAGES @BASE @CORE @DESKTOP-DEBUGGING @DIAL-UP @FONTS @GNOME-DESKTOP @GUEST-AGENTS @GUEST-DESKTOP-AGENTS @INPUT-METHODS @INTERNET-BROWSER @MULTIMEDIA @PRINT-CLIENT @X11 %END
wc命令用於統計指定文本的行數、字數、字節數,格式爲「wc [參數] 文本」。
每次我在課堂上講到這個命令時,總有同窗會聯想到一種公共設施,其實這二者毫無關聯。Linux系統中的wc命令用於統計文本的行數、字數、字節數等。若是爲了方便本身記住這個命令的做用,也能夠聯想到上廁所時好無聊,無聊到數完了手中的如廁讀物上有多少行字。
wc的參數以及做用
參數 | 做用 |
-l | 只顯示行數 |
-w | 只顯示單詞數 |
-c | 只顯示字節數 |
在Linux系統中,passwd是用於保存系統帳戶信息的文件,要統計當前系統中有多少個用戶,可使用下面的命令來進行查詢,是否是很神奇:
[root@raymond ~]# wc -l /etc/passwd 24 /etc/passwd
stat命令用於查看文件的具體存儲信息和時間等信息,格式爲「stat 文件名稱」。
stat命令能夠用於查看文件的存儲信息和時間等信息,命令stat anaconda-ks.cfg會顯示出文件的三種時間狀態(已加粗):Access、Modify、Change。這三種時間的區別將在下面的touch命令中詳細詳解:
[root@raymond ~]# stat install.log File: "install.log" Size: 22668 Blocks: 56 IO Block: 4096 普通文件 Device: 803h/2051d Inode: 654083 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-03-09 16:57:58.684034849 +0800 Modify: 2017-11-23 17:37:16.440997849 +0800 Change: 2017-11-23 17:37:22.584997841 +0800
cut命令用於按「列」提取文本字符,格式爲「cut [參數] 文本」。
在Linux系統中,如何準確地提取出最想要的數據,這也是咱們應該重點學習的內容。通常而言,按基於「行」的方式來提取數據是比較簡單的,只須要設置好要搜索的關鍵詞便可。可是若是按列搜索,不只要使用-f參數來設置須要看的列數,還須要使用-d參數來設置間隔符號。passwd在保存用戶數據信息時,用戶信息的每一項值之間是採用冒號來間隔的,接下來咱們使用下述命令嘗試提取出passwd文件中的用戶名信息,即提取以冒號(:)爲間隔符號的第一列內容:
[root@raymond ~]# head -n 2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@raymond ~]# cut -d: -f1 /etc/passwd root bin daemon adm lp sync shutdown halt mail uucp operator games gopher ftp nobody dbus vcsa abrt haldaemon ntp saslauth postfix sshd tcpdump [root@raymond ~]#
diff命令用於比較多個文本文件的差別,格式爲「diff [參數] 文件」。
在使用diff命令時,不只可使用--brief參數來確認兩個文件是否不一樣,還可使用-c參數來詳細比較出多個文件的差別之處,這絕對是判斷文件是否被篡改的有力神器。例如,先使用cat命令分別查看diff_A.txt和diff_B.txt文件的內容,而後進行比較:
[root@linuxprobe ~]# cat diff_A.txt Welcome to linuxprobe.com Red Hat certified Free Linux Lessons Professional guidance Linux Course [root@linuxprobe ~]# cat diff_B.txt Welcome tooo linuxprobe.com Red Hat certified Free Linux LeSSonS ////////.....//////// Professional guidance Linux Course 接下來使用diff --brief命令顯示比較後的結果,判斷文件是否相同: [root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt Files diff_A.txt and diff_B.txt differ 最後使用帶有-c參數的diff命令來描述文件內容具體的不一樣: [root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt *** diff_A.txt 2017-08-30 18:07:45.230864626 +0800 --- diff_B.txt 2017-08-30 18:08:52.203860389 +0800 *************** *** 1,5 **** ! Welcome to linuxprobe.com Red Hat certified ! Free Linux Lessons Professional guidance Linux Course --- 1,7 ---- ! Welcome tooo linuxprobe.com ! Red Hat certified ! Free Linux LeSSonS ! ////////.....//////// Professional guidance Linux Course
目前爲止,咱們學習Linux命令就像是在夯實地基,雖然表面上暫時還看不到成果,但其實你們的內功已經至關雄厚了。在Linux系統的平常運維工做中,還須要掌握對文件的建立、修改、複製、剪切、改名與刪除等操做。
touch命令用於建立空白文件或設置文件的時間,格式爲「touch [選項] [文件]」。
在建立空白的文本文件方面,這個touch命令至關簡捷,簡捷到沒有必要鋪開去講。好比,touch linuxprobe命令能夠建立出一個名爲linuxprobe的空白文本文件。對touch命令來說,有難度的操做主要是體如今設置文件內容的修改時間(mtime)、文件權限或屬性的更改時間(ctime)與文件的讀取時間(atime)上面。
touch命令的參數及其做用
參數 | 做用 |
-a | 僅修改「讀取時間」(atime) |
-m | 僅修改「修改時間」(mtime) |
-d | 同時修改atime與mtime |
接下來,咱們先使用ls命令查看一個文件的修改時間,而後修改這個文件,最後再經過touch命令把修改後的文件時間設置成修改以前的時間(不少黑客就是這樣作的呢):
[root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg [root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg [root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg [root@linuxprobe ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg [root@linuxprobe ~]# ls -l anaconda-ks.cfg -rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg
mkdir命令用於建立空白的目錄,格式爲「mkdir [選項] 目錄」。
在Linux系統中,文件夾是最多見的文件類型之一。除了能建立單個空白目錄外,mkdir命令還能夠結合-p參數來遞歸建立出具備嵌套疊層關係的文件目錄。
[root@raymond ~]# mkdir raymond [root@raymond ~]# ls anaconda-ks.cfg install.log install.log.syslog raymond [root@raymond ~]# mkdir -p a/b/c [root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog raymond [root@raymond ~]# cd a [root@raymond a]# ls b [root@raymond a]# cd b [root@raymond b]# ls c [root@raymond b]# cd c [root@raymond c]# ls [root@raymond c]#
cp命令用於複製文件或目錄,格式爲「cp [選項] 源文件 目標文件」。你們對文件複製操做應該不陌生,在Linux系統中,複製操做具體分爲3種狀況:
cp命令的參數及其做用
參數 | 做用 |
-p | 保留原始文件的屬性 |
-d | 若對象爲「連接文件」,則保留該「連接文件」的屬性 |
-r | 遞歸持續複製(用於目錄) |
-i | 若目標文件存在則詢問是否覆蓋 |
-a | 至關於-pdr(p、d、r爲上述參數) |
接下來,使用touch建立一個名爲install.log的普通空白文件,而後將其複製爲一份名爲x.log的備份文件,最後再使用ls命令查看目錄中的文件:
[root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog raymond [root@raymond ~]# cp install.log x.log [root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog raymond x.log
mv命令用於剪切文件或將文件重命名,格式爲「mv [選項] 源文件 [目標路徑|目標文件名]」。
剪切操做不一樣於複製操做,由於它會默認把源文件刪除掉,只保留剪切後的文件。若是在同一個目錄中對一個文件進行剪切操做,其實也就是對其進行重命名:
[root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog raymond x.log [root@raymond ~]# mv x.log linux.log [root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog linux.log raymond
rm命令用於刪除文件或目錄,格式爲「rm [選項] 文件」。
在Linux系統中刪除文件時,系統會默認向您詢問是否要執行刪除操做,若是不想老是看到這種反覆的確認信息,可在rm命令後跟上-f參數來強制刪除。另外,想要刪除一個目錄,須要在rm命令後面一個-r參數才能夠,不然刪除不掉。rm -rf可刪除目錄及其下的子目錄。咱們來嘗試刪除前面建立的嵌套目錄a/b/c和linux.log文件:
[root@raymond ~]# ls a anaconda-ks.cfg install.log install.log.syslog linux.log raymond [root@raymond ~]# rm -r a rm:是否進入目錄"a"? y rm:是否進入目錄"a/b"? y rm:是否刪除目錄 "a/b/c"?y rm:是否刪除目錄 "a/b"?y rm:是否刪除目錄 "a"?y [root@raymond ~]# ls anaconda-ks.cfg install.log install.log.syslog linux.log raymond [root@raymond ~]# rm -rf raymond [root@raymond ~]# ls anaconda-ks.cfg install.log install.log.syslog linux.log [root@raymond ~]# rm linux.log rm:是否刪除普通文件 "linux.log"?y [root@raymond ~]# ls anaconda-ks.cfg install.log install.log.syslog [root@raymond ~]#
dd命令用於按照指定大小和個數的數據塊來複制文件或轉換文件,格式爲「dd [參數]」。
dd命令是一個比較重要並且比較有特點的一個命令,它可以讓用戶按照指定大小和個數的數據塊來複制文件的內容。固然若是願意的話,還能夠在複製過程當中轉換其中的數據。Linux系統中有一個名爲/dev/zero的設備文件,每次在課堂上解釋它時都充滿哲學理論的色彩。由於這個文件不會佔用系統存儲空間,但卻能夠提供無窮無盡的數據,所以可使用它做爲dd命令的輸入文件,來生成一個指定大小的文件。
dd命令的參數及其做用
參數 | 做用 |
if | 輸入的文件名稱 |
of | 輸出的文件名稱 |
bs | 設置每一個「塊」的大小 |
count | 設置要複製「塊」的個數 |
例如咱們能夠用dd命令從/dev/zero設備文件中取出一個大小爲560MB的數據塊,而後保存成名爲560_file的文件。在理解了這個命令後,之後就能隨意建立任意大小的文件了:
[root@raymond ~]# 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
考慮到有些讀者會糾結bs塊大小與count塊個數的關係,下面舉一個吃貨的例子進行解釋。假設小明的飯量(即需求)是一個固定的值,用來盛飯的勺子的大小即bs塊大小,而用勺子盛飯的次數即count塊個數。小明要想吃飽(知足需求),則須要在勺子大小(bs塊大小)與用勺子盛飯的次數(count塊個數)之間進行平衡。勺子越大,用勺子盛飯的次數就越少。由上可見,bs與count都是用來指定容量的大小,只要能知足需求,可隨意組合搭配方式。
file命令用於查看文件的類型,格式爲「file 文件名」。
在Linux系統中,因爲文本、目錄、設備等全部這些一切都統稱爲文件,而咱們又不能單憑後綴就知道具體的文件類型,這時就須要使用file命令來查看文件類型了。
[root@raymond ~]# file anaconda-ks.cfg anaconda-ks.cfg: ASCII English text [root@raymond ~]# file /dev/sda /dev/sda: block special
下面將學習如何在Linux系統中對文件進行打包壓縮與解壓,以及讓用戶基於關鍵詞在文本文件中搜索相匹配的信息、在整個文件系統中基於指定的名稱或屬性搜索特定文件。本節雖然只有3條命令,可是其功能都比較複雜並且參數不少。
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@raymond ~]# 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@raymond ~]# mkdir /root/etc [root@raymond ~]# 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 ………………省略部分解壓過程信息………………
grep命令用於在文本中執行關鍵詞搜索,並顯示匹配的結果,格式爲「grep [選項] [文件]」。grep命令的參數及其做用以下表所示:
grep命令的參數及其做用
參數 | 做用 |
-b | 將可執行文件(binary)看成文本文件(text)來搜索 |
-c | 僅顯示找到的行數 |
-i | 忽略大小寫 |
-n | 顯示行號 |
-v | 反向選擇——僅列出沒有「關鍵詞」的行。 |
grep命令是用途最普遍的文本搜索匹配工具,雖然有不少參數,可是大多數基本上都用不到。劉遄老師在總結了近10年的運維工做和培訓教學的經驗後,提出的本書的寫做理念「去掉不實用」絕對不是信口開河。若是一名IT培訓講師的水平只能停留在「技術的搬運工」層面,而不能對優質技術知識進行提煉總結,那對他的學生來說絕非好事。咱們在這裏只講兩個最最經常使用的參數:-n參數用來顯示搜索到信息的行號;-v參數用於反選信息(即沒有包含關鍵詞的全部信息行)。這兩個參數幾乎能完成您往後80%的工做須要,至於其餘上百個參數,即便之後在工做期間遇到了,再使用man grep命令查詢也來得及。
在Linux系統中,/etc/passwd文件是保存着全部的用戶信息,而一旦用戶的登陸終端被設置成/sbin/nologin,則再也不容許登陸系統,所以可使用grep命令來查找出當前系統中不容許登陸系統的全部用戶信息:
[root@raymond ~]# grep /sbin/nologin /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ………………省略部分輸出過程信息………………
find命令用於按照指定條件來查找文件,格式爲「find [查找路徑] 尋找條件 操做」。
本書中曾經屢次提到「Linux系統中的一切都是文件」,接下來就要見證這句話的份量了。在Linux系統中,搜索工做通常都是經過find命令來完成的,它可使用不一樣的文件特性做爲尋找條件(如文件名、大小、修改時間、權限等信息),一旦匹配成功則默認將信息顯示到屏幕上。
find命令中的參數以及做用
參數 | 做用 |
-name | 匹配名稱 |
-perm | 匹配權限(mode爲徹底匹配,-mode爲包含便可) |
-user | 匹配全部者 |
-group | 匹配全部組 |
-mtime -n +n | 匹配修改內容的時間(-n指n天之內,+n指n天之前) |
-atime -n +n | 匹配訪問文件的時間(-n指n天之內,+n指n天之前) |
-ctime -n +n | 匹配修改文件權限的時間(-n指n天之內,+n指n天之前) |
-nouser | 匹配無全部者的文件 |
-nogroup | 匹配無全部組的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2舊的文件 |
--type b/d/c/p/l/f | 匹配文件類型(後面的字幕字母依次表示塊設備、目錄、字符設備、管道、連接文件、文本文件) |
-size | 匹配文件的大小(+50KB爲查找超過50KB的文件,而-50KB爲查找小於50KB的文件) |
-prune | 忽略某個目錄 |
-exec …… {}\; | 後面可跟用於進一步處理搜索結果的命令(下文會有演示) |
這裏須要重點講解一下-exec參數重要的做用。這個參數用於把find命令搜索到的結果交由緊隨其後的命令做進一步處理,它十分相似於第3章將要講解的管道符技術,而且因爲find命令對參數的特殊要求,所以雖然exec是長格式形式,但依然只須要一個減號(-)。
根據文件系統層次標準(Filesystem Hierarchy Standard)協議,Linux系統中的配置文件會保存到/etc目錄中(詳見第6章)。若是要想獲取到該目錄中全部以host開頭的文件列表,能夠執行以下命令:
[root@raymond ~]# find /etc -name "host*" -print /etc/avahi/hosts /etc/host.conf /etc/hosts /etc/hosts.allow /etc/hosts.deny /etc/selinux/targeted/modules/active/modules/hostname.pp /etc/hostname
若是要在整個系統中搜索權限中包括SUID權限的全部文件(詳見第5章),只需使用-4000便可:
[root@raymond ~]# find / -perm -4000 -print /usr/bin/fusermount /usr/bin/su /usr/bin/umount /usr/bin/passwd /usr/sbin/userhelper /usr/sbin/usernetctl ………………省略部分輸出信息………………