準(zhǔn)備學(xué)習(xí)下大數(shù)據(jù),查了下大數(shù)據(jù)的學(xué)習(xí)步驟,首先進(jìn)行Linux的學(xué)習(xí)。Linx日常開(kāi)發(fā)中還是經(jīng)常使用到的,不過(guò)也沒(méi)有系統(tǒng)的去學(xué)習(xí)過(guò),畢竟公司也有運(yùn)維,也就偷懶了。本來(lái)是根據(jù)劉遄老是的Linux就該這么學(xué),做的閱讀筆記。如果對(duì)這本書有興趣,可以在https://www.linuxprobe.com/docs/LinuxProbe.pdf 在線閱讀,當(dāng)然為了表示支持,我自己也還是買了本實(shí)體書,哈哈ヾ?≧?≦)o
Linux 常見(jiàn)的命令格式
命令名稱 [命令參數(shù)] [命令對(duì)象]
注意,命令名稱、命令參數(shù)、命令對(duì)象用空格鍵分割開(kāi)
執(zhí)行查看幫助命令:man
在才學(xué)習(xí)Linx的時(shí)候,我們會(huì)有很多時(shí)候?qū)Ω鞣N命令的用法并不是特別熟悉,我們可以度娘,google,有時(shí)候還有另一種選擇,就是看linux給我們提供的幫助命令去看各種命令的用法。
例如現(xiàn)在我不清楚man靈力怎么使用,那么我可以通過(guò)man man 來(lái)查看man命令的幫助信息

我這里的是中文幫助文檔,有的出來(lái)會(huì)是英文的,可以設(shè)置,如果系統(tǒng)有中文幫助文檔
man命令的常用按鍵和用途
| 按鍵 | 用途 |
|---|---|
| 空格鍵 | 下一頁(yè) |
| Page Down | 下一頁(yè) |
| Page up | 上一頁(yè) |
| / | 從上至下搜索某個(gè)關(guān)鍵字,并高亮,例如 /man |
| ? | 從下至上搜索某個(gè)關(guān)鍵字,并高亮,例如 /man |
| n | 定位到下一個(gè)搜索到的關(guān)鍵詞,在“/”搜索模式下 |
| N | 定位到上一個(gè)搜索到的關(guān)鍵詞,在“/”搜索模式下 |
| q | 退出幫助文檔 |
幫助文檔的信息一般都會(huì)很多,很長(zhǎng),我們?cè)陂喿x的時(shí)候需要了解幫助文檔的結(jié)構(gòu)
man 命令幫助文檔結(jié)構(gòu)
| 結(jié)構(gòu)名稱 | 代表意義 |
|---|---|
| NAME | 命令名稱 |
| SYNOPSIS | 參數(shù)的大致使用方法 |
| DESCRIPTION | 參數(shù)說(shuō)明 |
| EXAMPLES | 演示(附帶簡(jiǎn)單說(shuō)明) |
| OVERVIEW | 概述 |
| DEFAULTS | 默認(rèn)的功能 |
| OPTIONS | 具體的可用選項(xiàng)(帶介紹) |
| ENVIRONMENT | 環(huán)境變量 |
| FILES | 用到的文件 |
| SEE ALSO | 相關(guān)的資料 |
| HISTORY | 維護(hù)歷史與聯(lián)系方式 |
不過(guò)個(gè)人感覺(jué)我們遇到命令忘記具體怎么用了第一反應(yīng)還是會(huì)度娘或者google吧。
常用的系統(tǒng)工作命令
echo命令
echo是Shell的一個(gè)內(nèi)部指令,用于在屏幕上打印出指定的字符串,例如我們可以通過(guò)shell腳本把實(shí)體文件的內(nèi)容讀出來(lái)打印到屏幕上。
命令格式:
echo [字符串 | $變量]
例1 輸出字符串在屏幕:
[root@localhost ~]# echo sysout test
sysout test
[root@localhost ~]#
例2 輸出變量值在屏幕
這里的變量為$SHELL 是已經(jīng)存在的變量,如果是shell腳本中,也可以輸出自定義的變量
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]#
date 時(shí)間命令
在類UNIX系統(tǒng)中,日期被存儲(chǔ)為一個(gè)整數(shù),其大小為自世界標(biāo)準(zhǔn)時(shí)間(UTC)1970年1月1日0時(shí)0分0秒起流逝的秒數(shù),也就是我們常說(shuō)的時(shí)間戳毫秒數(shù),所以在輸出需要閱讀的時(shí)間的時(shí)候,我們需要用date命令格式化時(shí)間。
命令格式:
date [選項(xiàng)] [+指定的格式]
選項(xiàng)參數(shù)
-d<字符串>:顯示字符串所指的日期與時(shí)間,字符串前后必須加上雙引號(hào);
-s<字符串>:根據(jù)字符串來(lái)設(shè)置日期與時(shí)間,字符串前后必須加上雙引號(hào);
-u:顯示GMT;
--help:在線幫助;
--version:顯示版本信息
參數(shù)
%H 小時(shí),24小時(shí)制(00~23)
%I 小時(shí),12小時(shí)制(01~12)
%k 小時(shí),24小時(shí)制(0~23)
%l 小時(shí),12小時(shí)制(1~12)
%M 分鐘(00~59)
%p 顯示出AM或PM
%r 顯示時(shí)間,12小時(shí)制(hh:mm:ss %p)
%s 從1970年1月1日00:00:00到目前經(jīng)歷的秒數(shù)
%S 顯示秒(00~59)
%T 顯示時(shí)間,24小時(shí)制(hh:mm:ss)
%X 顯示時(shí)間的格式(%H:%M:%S)
%Z 顯示時(shí)區(qū),日期域(CST)
%a 星期的簡(jiǎn)稱(Sun~Sat)
%A 星期的全稱(Sunday~Saturday)
%h,%b 月的簡(jiǎn)稱(Jan~Dec)
%B 月的全稱(January~December)
%c 日期和時(shí)間(Tue Nov 20 14:12:58 2012)
%d 一個(gè)月的第幾天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第幾天(001~366)
%m 月份(01~12)
%w 一個(gè)星期的第幾天(0代表星期天)
%W 一年的第幾個(gè)星期(00~53,星期一為第一天)
%y 年的最后兩個(gè)數(shù)字(1999則是99)
%t 跳格[Tab鍵]
例1 按照默認(rèn)格式查看輸出當(dāng)前系統(tǒng)時(shí)間
[root@localhost ~]# date
2018年 09月 28日 星期五 23:01:06 CST
[root@localhost ~]#
例2 按照“年-月-日 時(shí):分:秒”的個(gè)格式查看當(dāng)前系統(tǒng)時(shí)間
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2018-09-28 23:01:28
[root@localhost ~]#
例3 顯示當(dāng)前天數(shù)是當(dāng)年的第幾天,這個(gè)實(shí)際可以用作備份的時(shí)候做區(qū)分,數(shù)字越大,月靠近當(dāng)前時(shí)間,備份越新
[root@localhost ~]# date "+%j"
271
[root@localhost ~]#
date命令還可以用來(lái)手工設(shè)置時(shí)間
date -s //設(shè)置當(dāng)前時(shí)間,只有root權(quán)限才能設(shè)置,其他只能查看
date -s 20120523 //設(shè)置成20120523,這樣會(huì)把具體時(shí)間設(shè)置成空00:00:00
date -s 01:01:01 //設(shè)置具體時(shí)間,不會(huì)對(duì)日期做更改
date -s "01:01:01 2012-05-23" //這樣可以設(shè)置全部時(shí)間
date -s "01:01:01 20120523" //這樣可以設(shè)置全部時(shí)間
date -s "2012-05-23 01:01:01" //這樣可以設(shè)置全部時(shí)間
date -s "20120523 01:01:01" //這樣可以設(shè)置全部時(shí)間
設(shè)置完時(shí)間后我們還需要寫入bios,避免重啟失效
hwclock -w
擴(kuò)展一下,有時(shí)候我們手工設(shè)置的時(shí)間并不準(zhǔn)確,這個(gè)時(shí)候我們可以設(shè)置互聯(lián)網(wǎng)時(shí)間,使用ntpdate
ntpdate命令:
ntpdate -u 210.72.145.44 :網(wǎng)絡(luò)時(shí)間同步命令
注意:若不加上-u參數(shù), 會(huì)出現(xiàn)以下提示:no server suitable for synchronization found
-u:從man ntpdate中可以看出-u參數(shù)可以越過(guò)防火墻與主機(jī)同步;
210.72.145.44:中國(guó)國(guó)家授時(shí)中心的官方服務(wù)器。
ntp常用服務(wù)器:
中國(guó)國(guó)家授時(shí)中心:210.72.145.44
NTP服務(wù)器(上海) :ntp.api.bz
美國(guó):time.nist.gov
復(fù)旦:ntp.fudan.edu.cn
微軟公司授時(shí)主機(jī)(美國(guó)) :time.windows.com
臺(tái)警大授時(shí)中心(臺(tái)灣):asia.pool.ntp.org
經(jīng)測(cè)試中國(guó)國(guó)家授時(shí)中心與NTP上海服務(wù)器可以正常同步時(shí)間,注意需要加上-u參數(shù)!
reboot 命令
reboot命令用于重啟linux系統(tǒng)

poweroff 命令
poweroff 會(huì)發(fā)送一個(gè) ACPI 信號(hào)來(lái)通知系統(tǒng)關(guān)機(jī)
擴(kuò)展一下,其實(shí)現(xiàn)在的系統(tǒng)poweroff,shutdown hait其實(shí)沒(méi)有明顯的區(qū)別了
# shutdown ### 關(guān)機(jī)命令,需要root權(quán)限
# shutdown now
# shutdown 13:20
# shutdown -p now ### 關(guān)閉機(jī)器
# shutdown -H now ### 停止機(jī)器
# shutdown -r11:35 ### 在 11:35am 重啟機(jī)器
# halt ### 停止機(jī)器
# halt -p ### 關(guān)閉機(jī)器
# halt --reboot ### 重啟機(jī)器
wget 命令
wget命令用來(lái)從指定的URL下載文件。
命令格式:
wget [參數(shù)] 下載地址
wget 命令的參數(shù)及作用
| 參數(shù) | 作用 |
|---|---|
| -b | 后臺(tái)下載模式 |
| -P | 下載到指定目錄 |
| -t | 最大嘗試次數(shù) |
| -c | 端點(diǎn)續(xù)傳 |
| -p | 下載頁(yè)面內(nèi)所有資源,包括圖片、視頻等 |
| -r | 遞歸下載 |
-a<日志文件>:在指定的日志文件中記錄資料的執(zhí)行過(guò)程;
-A<后綴名>:指定要下載文件的后綴名,多個(gè)后綴名之間使用逗號(hào)進(jìn)行分隔;
-b:進(jìn)行后臺(tái)的方式運(yùn)行wget;
-B<連接地址>:設(shè)置參考的連接地址的基地地址;
-c:繼續(xù)執(zhí)行上次終端的任務(wù);
-C<標(biāo)志>:設(shè)置服務(wù)器數(shù)據(jù)塊功能標(biāo)志on為激活,off為關(guān)閉,默認(rèn)值為on;
-d:調(diào)試模式運(yùn)行指令;
-D<域名列表>:設(shè)置順著的域名列表,域名之間用“,”分隔;
-e<指令>:作為文件“.wgetrc”中的一部分執(zhí)行指定的指令;
-h:顯示指令幫助信息;
-i<文件>:從指定文件獲取要下載的URL地址;
-l<目錄列表>:設(shè)置順著的目錄列表,多個(gè)目錄用“,”分隔;
-L:僅順著關(guān)聯(lián)的連接;
-r:遞歸下載方式;
-nc:文件存在時(shí),下載文件不覆蓋原有文件;
-nv:下載時(shí)只顯示更新和出錯(cuò)信息,不顯示指令的詳細(xì)執(zhí)行過(guò)程;
-q:不顯示指令執(zhí)行過(guò)程;
-nh:不查詢主機(jī)名稱;
-v:顯示詳細(xì)執(zhí)行過(guò)程;
-V:顯示版本信息;
--passive-ftp:使用被動(dòng)模式PASV連接FTP服務(wù)器;
--follow-ftp:從HTML文件中下載FTP連接文件。
例1 下載Linux就該這么學(xué)的PDF
wget http://www.linuxprobe.com/docs/LinuxProbe.pdf
這里如果沒(méi)有指定下載的目錄,就會(huì)下載到當(dāng)前目錄

ps 命令
ps命令用于報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)??梢源钆鋕ill指令隨時(shí)中斷、刪除不必要的程序
命令格式:
ps [參數(shù)]
參數(shù)有很多,不過(guò)我們一般用得最多的就是ps -ef 和 ps -aux
兩個(gè)輸出略有不同,aux要詳細(xì)一些,還會(huì)顯示進(jìn)程狀態(tài),根據(jù)實(shí)際情況使用。
這里的 -ef 是命令系統(tǒng)的兩個(gè)短格式參數(shù),需要注意的是長(zhǎng)格式參數(shù)不能合并,短格式參數(shù)可以合并,只需要保留 一個(gè)-就可以了。
在Linux中進(jìn)程狀態(tài)有5種,運(yùn)行、中斷、不可中斷、僵死、停止,具體含義如下:
- R(運(yùn)行):進(jìn)程正在運(yùn)行或在運(yùn)行隊(duì)列中等待
- S(中斷):進(jìn)程處于休眠中,當(dāng)某個(gè)條件形成或收到信號(hào)后,運(yùn)行
- D(不可中斷):進(jìn)程不響應(yīng)異步信號(hào),即使是使用kill命令也無(wú)法殺死
- Z(僵死):進(jìn)程已經(jīng)終止,但是進(jìn)程描述符還在,知道父類進(jìn)程調(diào)用wait4()系統(tǒng)函數(shù)后將進(jìn)程釋放
- T(停止):進(jìn)程收到停止信號(hào)后停止運(yùn)行
D //無(wú)法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程);
R //正在運(yùn)行可中在隊(duì)列中可過(guò)行的;
S //處于休眠狀態(tài);
T //停止或被追蹤;
W //進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開(kāi)始無(wú)效);
X //死掉的進(jìn)程 (基本很少見(jiàn));
Z //僵尸進(jìn)程;
< //優(yōu)先級(jí)高的進(jìn)程
N //優(yōu)先級(jí)較低的進(jìn)程
L //有些頁(yè)被鎖進(jìn)內(nèi)存;
s //進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);
l //多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ //位于后臺(tái)的進(jìn)程組;
ps -ef

UID //用戶ID、但輸出的是用戶名
PID //進(jìn)程的ID
PPID //父進(jìn)程ID
C //進(jìn)程占用CPU的百分比
STIME //進(jìn)程啟動(dòng)到現(xiàn)在的時(shí)間
TTY //該進(jìn)程在那個(gè)終端上運(yùn)行,若與終端無(wú)關(guān),則顯示? 若為pts/0等,則表示由網(wǎng)絡(luò)連接主機(jī)進(jìn)程。
CMD //命令的名稱和參數(shù)
ps aux

USER //用戶名
%CPU //進(jìn)程占用的CPU百分比
%MEM //占用內(nèi)存的百分比
VSZ //該進(jìn)程使用的虛擬內(nèi)存量(KB)
RSS //該進(jìn)程占用的固定內(nèi)存量(KB)(駐留中頁(yè)的數(shù)量)
STAT //進(jìn)程的狀態(tài)
START //該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間
TIME //該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間
top 命令
top命令相當(dāng)于windows中的任務(wù)管理器

- 第一行:系統(tǒng)時(shí)間,運(yùn)行時(shí)間,登錄用戶數(shù),系統(tǒng)負(fù)載(三個(gè)數(shù)分表代表1分鐘,5分鐘,15分鐘內(nèi)的平均值,值越小,負(fù)載越低)
- 第二行:進(jìn)程總數(shù),運(yùn)行中的線程數(shù),睡眠的進(jìn)程數(shù),停止的進(jìn)程數(shù),僵死的進(jìn)程數(shù)
- 第三行:用戶占用資源百分比,系統(tǒng)內(nèi)核占用資源百分比,改變過(guò)優(yōu)先級(jí)的進(jìn)程資源百分比,空閑的資源百分比。(我們比較關(guān)心的就是空閑資源百分比,也就是99.8 id 這個(gè)參數(shù),表示有99.8%的CPU資源處于空閑狀態(tài))
- 第四行:物理總內(nèi)存量,空閑內(nèi)存量,使用內(nèi)存量,作為內(nèi)核緩存的內(nèi)存量
- 第五行:虛擬內(nèi)存量,虛擬內(nèi)存空閑量,虛擬內(nèi)存使用量,已經(jīng)被提前加載的內(nèi)存量
pidof 命令
pidof命令用于查詢某個(gè)進(jìn)程的進(jìn)程號(hào),進(jìn)程號(hào)是唯一的,所有可以用PID來(lái)區(qū)分不同的進(jìn)程,
命令格式:
pidof [參數(shù)] [服務(wù)名稱]
參數(shù):
-s:僅返回一個(gè)進(jìn)程號(hào);
-c:僅顯示具有相同“root”目錄的進(jìn)程;
-x:顯示由腳本開(kāi)啟的進(jìn)程;
-o:指定不顯示的進(jìn)程ID。
例1返回的ftp服務(wù)的進(jìn)程號(hào)
[root@localhost ~]# pidof vsftpd
1033
[root@localhost ~]#
不過(guò)我們一般不這么查詢進(jìn)程,因?yàn)楝F(xiàn)實(shí)的信息不全,如果有多個(gè)相同服務(wù)的進(jìn)程,我們并不知道具體的路徑,這個(gè)時(shí)候我們一般會(huì)用前文提到的ps -ef 或者ps aux 加上管道符和grep 條件
例如我們現(xiàn)在要查詢ftp進(jìn)程

我們可以看到返回的PID都是一樣的,而且我們還多了些信息可以更準(zhǔn)確的判斷。
kill 命令
kill命令用于終止系統(tǒng)進(jìn)程,根據(jù)pid來(lái)殺死進(jìn)程
命令格式:
kill [參數(shù)] [pid]
為了保證無(wú)條件終止進(jìn)程,我們一般會(huì)帶參數(shù)kill -9 無(wú)條件殺死進(jìn)程
killall 命令
killall命令也是用戶殺死進(jìn)程,不過(guò)不是根據(jù)PID,是根據(jù)進(jìn)程名進(jìn)行殺死,會(huì)殺死同名的所有進(jìn)程。
命令格式:
killall [參數(shù)] [進(jìn)程名]
ifconfig 命令
ifconfig命令用于查看網(wǎng)卡配置和網(wǎng)絡(luò)狀態(tài)等信息
命令格式:
ifconfig [網(wǎng)絡(luò)設(shè)備] [參數(shù)]
uname 命令
uname命令用于返回系統(tǒng)的內(nèi)核與系統(tǒng)版本信息,一那么會(huì)用uname -a查看完整信息
[root@localhost ~]# uname -a
Linux localhost.localdomain 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
[root@localhost ~]#
如果要查看當(dāng)前版本的詳細(xì)信息可以進(jìn)入/etc/redhat-release 查看
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@localhost ~]#
uptime 命令
uptime命令用于查看系統(tǒng)負(fù)載信息
[root@localhost ~]# uptime
23:11:31 up 1:26, 2 users, load average: 0.00, 0.01, 0.05
[root@localhost ~]#
顯示內(nèi)容分別為系統(tǒng)時(shí)間,系統(tǒng)運(yùn)行時(shí)間,連接的終端數(shù),負(fù)載信息(1分鐘,5分鐘,15分鐘內(nèi)壓力情況,負(fù)載值越低越好,盡量不要長(zhǎng)期超過(guò)1,現(xiàn)網(wǎng)不要超過(guò)5)
free 命令
free 用于顯示當(dāng)前系統(tǒng)中內(nèi)存的使用量信息
命令格式:
free [-h]
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 179M 1.4G 9.0M 229M 1.4G
Swap: 2.0G 0B 2.0G
[root@localhost ~]#
表頭分別表示,內(nèi)存總量,使用量,空閑可用量,進(jìn)程共享內(nèi)存量,緩存的內(nèi)存量
who 命令
who 用于查看當(dāng)前登入主機(jī)的用戶終端信息。
命令格式:
who [參數(shù)]
[root@localhost ~]# who -H
名稱 線路 時(shí)間 備注
root tty1 2018-10-03 19:14
root pts/0 2018-10-03 19:14 (192.168.101.116)
[root@localhost ~]#
last 命令
last命令用于查看日志中記錄的用戶登錄信息
命令格式:
last [參數(shù)]
root@localhost ~]# last
root pts/0 192.168.101.116 Wed Oct 3 19:14 still logged in
root tty1 Wed Oct 3 19:14 still logged in
history 命令
history命令用于顯示執(zhí)行過(guò)的命令,并且可以根據(jù)!行號(hào)重新執(zhí)行。
下面就是顯示15條歷史記錄,并根據(jù)行號(hào)重新執(zhí)行
[root@localhost ~]# history 15
641 shutdown -h now
642 free -h
643 who
644 who -H
645 last
646 clear
647 history 10
648 last
649 history
650 history 15
651 ! 643
652 who
653 clear
654 history15
655 history 15
[root@localhost ~]# !652
who
root tty1 2018-10-03 19:14
root pts/0 2018-10-03 19:14 (192.168.101.116)
[root@localhost ~]#
如果要清空當(dāng)前用戶的歷史記錄,可以用history -c
sosreport 命令
sosreport 命令用于收集系統(tǒng)配置及架構(gòu)信息并輸出診斷文。
命令格式:
sosreport
pwd 命令
pwd命令用戶顯示用戶當(dāng)前目錄
命令格式:
pwd [選項(xiàng)]
[root@localhost ~]# pwd
/root
[root@localhost ~]#
cd 命令
cd 命令為切換工作目錄的命令
命令格式:
cd [目錄名稱]
出了cd 切換目錄,還可以cd -返回上一次所處目錄,cd.. 返回上一級(jí)目錄,cd ~ 返回當(dāng)前用戶的根目錄
[root@localhost etc]# cd /home/vsftpd/
[root@localhost vsftpd]# cd ..
[root@localhost home]# cd -
/home/vsftpd
[root@localhost vsftpd]# cd ~
[root@localhost ~]#
ls 命令
ls命令用于顯示目錄中的文件信息
命令格式:
ls [選項(xiàng)] [文件]
ls 命令的 -a 參數(shù)可以查看當(dāng)前目錄下的所有文件(包含隱藏文件),-1 參數(shù)可以查看文件大小,屬性等信息,所有我們一般組合使用
[root@localhost test]# ls -al
總用量 19636
drwxr-xr-x. 2 ftpuser ftp 28 9月 25 23:37 .
drwxr-xr-x. 3 ftpuser ftp 18 6月 23 16:32 ..
-rw-r--r--. 1 root root 20105266 6月 10 14:24 LinuxProbe.pdf
[root@localhost test]#
cat 命令
cat 命令用于查看內(nèi)容較少的純文本文件,cat -n 可以顯示行號(hào)
命令格式:
cat [選項(xiàng)] [文件]
[root@localhost ~]# cat -n anaconda-ks.cfg
1 #version=DEVEL
2 # System authorization information
3 auth --enableshadow --passalgo=sha512
4 # Use CDROM installation media
5 cdrom
...... 省略 ......
more 命令
cat命令是在屏幕上快速翻滾,一直到底部,如果文本太長(zhǎng),應(yīng)該使用more 命令,可以翻頁(yè)查看,按q退出
[root@localhost ~]# more -10 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
--More--(16%)
head 命令
head命令用于查看純文本文件的前N行
命令格式
head [選項(xiàng)] [文件]
例1:查看文本的前10行
[root@localhost ~]# head -n 10 anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
[root@localhost ~]#
tail 命令
tail命令用于查看純文本文件的后N行或者持續(xù)刷新內(nèi)容
命令格式:
tail [選項(xiàng)] [文件名]
例1:查看日志文件最后20行
[root@localhost log]# tail -n 20 messages
Oct 5 21:58:36 localhost systemd: Time has been changed
Oct 5 21:58:37 localhost chronyd[619]: Forward time jump detected!
Oct 5 21:58:37 localhost chronyd[619]: Can't synchronise: no selectable sources
Oct 5 22:00:01 localhost systemd: Started Session 27 of user root.
Oct 5 22:00:01 localhost systemd: Starting Session 27 of user root.
Oct 5 22:00:49 localhost chronyd[619]: Selected source 85.199.214.101
...... 省略 ......
例2:持續(xù)輸出日志
[root@localhost log]# tail -f messages
Oct 5 22:02:14 localhost chronyd[619]: Selected source 5.103.139.163
Oct 5 22:02:55 localhost chronyd[619]: Selected source 85.199.214.100
Oct 5 22:10:01 localhost systemd: Started Session 29 of user root.
...... 省略 ......
tr 命令
tr命令用于替換文本中的字符,一般是配合cat命令和管道符一起使用
命令格式:
tr [原始字符串] [替換后的字符串]
例1:把文本的小寫字母全部替換為大寫字母
[root@localhost test]# cat text.txt
sfalk
fadfjoiw
ksjfo
fdsddffffffffffffffffsfalj
[root@localhost test]# cat text.txt | tr [a-z] [A-Z]
SFALK
FADFJOIW
KSJFO
FDSDDFFFFFFFFFFFFFFFFSFALJ
[root@localhost test]# cat text.txt
sfalk
fadfjoiw
ksjfo
fdsddffffffffffffffffsfalj
[root@localhost test]#
這里需要注意,這么替換只是輸出的新的字符串替換了,原始文件里的內(nèi)容并沒(méi)有替換
wc 命令
wc命令用于統(tǒng)計(jì)文件的行數(shù),字?jǐn)?shù),字節(jié)數(shù)
命令格式:
wc [參數(shù)] 文件
參數(shù)
-l: 只顯示行數(shù)
-w: 只顯示單詞數(shù)
-c: 只顯示字節(jié)數(shù)
[root@localhost test]# wc -lwc text.txt
4 4 48 text.txt
[root@localhost test]# wc -l text.txt
4 text.txt
[root@localhost test]# wc -w text.txt
4 text.txt
[root@localhost test]# wc -c text.txt
48 text.txt
[root@localhost test]# wc text.txt
4 4 48 text.txt
[root@localhost test]#
stat 命令
stat 命令用于查看文件的具體存儲(chǔ)信息和時(shí)間等信息,
命令格式:
stat 文件名稱
[root@localhost test]# stat text.txt
文件:"text.txt"
大?。?8 塊:8 IO 塊:4096 普通文件
設(shè)備:803h/2051d Inode:51529453 硬鏈接:1
權(quán)限:(0644/-rw-r--r--) Uid:( 1001/ ftpuser) Gid:( 50/ ftp)
環(huán)境:system_u:object_r:user_home_t:s0
最近訪問(wèn):2018-10-05 22:47:33.236049862 +0800
最近更改:2018-10-05 22:47:28.126584747 +0800
最近改動(dòng):2018-10-05 22:47:28.130585118 +0800
創(chuàng)建時(shí)間:-
[root@localhost test]#
cut 命令
cut 命令用于提取有規(guī)律的表格類似的文本文件的指定內(nèi)容
命令格式:
cut [參數(shù)] 文本
參數(shù)
-b:僅顯示行中指定直接范圍的內(nèi)容;
-c:僅顯示行中指定范圍的字符;
-d:指定字段的分隔符,默認(rèn)的字段分隔符為“TAB”;
-f:顯示指定字段的內(nèi)容;
-n:與“-b”選項(xiàng)連用,不分割多字節(jié)字符;
--complement:補(bǔ)足被選擇的字節(jié)、字符或字段;
--out-delimiter=<字段分隔符>:指定輸出內(nèi)容是的字段分割符;
--help:顯示指令的幫助信息;
--version:顯示指令的版本信息。
例1:提取文本第2列的內(nèi)容
[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# cut -d\| -f1 table
no1
no2
no3
no4
no5
[root@localhost test]#
這里因?yàn)槲募?code>| 分隔符為管道符,所以用 \ 進(jìn)行轉(zhuǎn)義
diff 命令
diff命令用于比較多個(gè)文件的差異,--brief參數(shù)可以確認(rèn)兩個(gè)文件是否相同,-c 參數(shù)可以詳細(xì)展示文本之間的差異
[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# cat table-c
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1-c|no4-2
no5|no5-1|no5-2[root@localhost test]# diff table table-c
4c4
< no4|no4-1|no4-2
---
> no4|no4-1-c|no4-2
[root@localhost test]# diff --brief table table-c
文件 table 和 table-c 不同
[root@localhost test]# diff -c table table-c
*** table 2018-10-05 23:29:18.774393927 +0800
--- table-c 2018-10-05 23:40:56.965393057 +0800
***************
*** 1,5 ****
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
! no4|no4-1|no4-2
no5|no5-1|no5-2
\ 文件尾沒(méi)有 newline 字符
--- 1,5 ----
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
! no4|no4-1-c|no4-2
no5|no5-1|no5-2
\ 文件尾沒(méi)有 newline 字符
[root@localhost test]#
touch 命令
touch命令用于創(chuàng)建空白文件或者設(shè)置文件時(shí)間
命令格式:
touch [選項(xiàng)] [文件]
選項(xiàng):
-a:或--time=atime或--time=access或--time=use 只更改存取時(shí)間;
-c:或--no-create 不建立任何文件;
-d:<時(shí)間日期> 使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間;
-f:此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問(wèn)題;
-m:或--time=mtime或--time=modify 只更該變動(dòng)時(shí)間;
-r:<參考文件或目錄> 把指定文件或目錄的日期時(shí)間,統(tǒng)統(tǒng)設(shè)成和參考文件或目錄的日期時(shí)間相同;
-t:<日期時(shí)間> 使用指定的日期時(shí)間,而非現(xiàn)在的時(shí)間;
--help:在線幫助;
--version:顯示版本信息。
例1:創(chuàng)建一個(gè)空白文件,并修改其時(shí)間屬性
[root@localhost test]# ls
table table-c
[root@localhost test]# touch text
[root@localhost test]# stat text
文件:"text"
大?。? 塊:0 IO 塊:4096 普通空文件
設(shè)備:803h/2051d Inode:51103711 硬鏈接:1
權(quán)限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環(huán)境:unconfined_u:object_r:user_home_t:s0
最近訪問(wèn):2018-10-07 17:55:20.901853419 +0800
最近更改:2018-10-07 17:55:20.901853419 +0800
最近改動(dòng):2018-10-07 17:55:20.901853419 +0800
創(chuàng)建時(shí)間:-
[root@localhost test]# touch -d "2018-10-07 18:01" text
[root@localhost test]# stat text
文件:"text"
大小:0 塊:0 IO 塊:4096 普通空文件
設(shè)備:803h/2051d Inode:51103711 硬鏈接:1
權(quán)限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環(huán)境:unconfined_u:object_r:user_home_t:s0
最近訪問(wèn):2018-10-07 18:01:00.000000000 +0800
最近更改:2018-10-07 18:01:00.000000000 +0800
最近改動(dòng):2018-10-07 17:56:12.921950703 +0800
創(chuàng)建時(shí)間:-
[root@localhost test]#
mkdir 命令
mkdir命令用于創(chuàng)建文件夾,-p 參數(shù)用戶創(chuàng)建多級(jí)文件夾
命令格式:
mkdir [選項(xiàng)] 文件夾
[root@localhost test]# ls
table table-c text
[root@localhost test]# mkdir folder
[root@localhost test]# ls
folder table table-c text
[root@localhost test]# cd folder/
[root@localhost folder]# mkdir -p a/b
[root@localhost folder]# ls
a
[root@localhost folder]# cd a
[root@localhost a]# ls
b
cp 命令
cp命令用于復(fù)制文件
命令格式:
cp [選項(xiàng)] 源文件 目標(biāo)文件
選項(xiàng)
-a:此參數(shù)的效果和同時(shí)指定"-dpR"參數(shù)相同;
-d:當(dāng)復(fù)制符號(hào)連接時(shí),把目標(biāo)文件或目錄也建立為符號(hào)連接,并指向與源文件或目錄連接的原始文件或目錄;
-f:強(qiáng)行復(fù)制文件或目錄,不論目標(biāo)文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問(wèn)用戶;
-l:對(duì)源文件建立硬連接,而非復(fù)制文件;
-p:保留源文件或目錄的屬性;
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
-s:對(duì)源文件建立符號(hào)連接,而非復(fù)制文件;
-u:使用這項(xiàng)參數(shù)后只會(huì)在源文件的更改時(shí)間較目標(biāo)文件更新時(shí)或是名稱相互對(duì)應(yīng)的目標(biāo)文件并不存在時(shí),才復(fù)制文件;
-S:在備份文件時(shí),用指定的后綴“SUFFIX”代替文件的默認(rèn)后綴;
-b:覆蓋已存在的文件目標(biāo)前將目標(biāo)文件備份;
-v:詳細(xì)顯示命令執(zhí)行的操作。
mv 命令
mv 命令用于剪切或重命名文件/文件夾,可以單個(gè),也可以批量
命令格式:
mv [選項(xiàng)] 源文件 [目標(biāo)路徑|目標(biāo)文件名]
[root@localhost test]# ls
folder table table-c text
[root@localhost test]# mv text textNew
[root@localhost test]# ls
folder table table-c textNew
[root@localhost test]# mv textNew folder/textNew2
[root@localhost test]# ls
folder table table-c
[root@localhost test]# cd folder/
[root@localhost folder]# ls
a textNew2
[root@localhost folder]#
rm 命令
rm 命令用于刪除文件,我們一般刪除用rm -rf xxx 其中f表示強(qiáng)制刪除,r表示文件夾遞歸刪除
命令格式:
rm [選項(xiàng)] 文件
[root@localhost test]# ls
folder table table-c
[root@localhost test]# rm -rf folder
[root@localhost test]# ls
table table-c
[root@localhost test]#
dd 命令
dd:用指定大小的塊拷貝一個(gè)文件,并在拷貝的同時(shí)進(jìn)行指定的轉(zhuǎn)換,具體感覺(jué)比較復(fù)雜,可以自行g(shù)oogle
注意:指定數(shù)字的地方若以下列字符結(jié)尾則乘以相應(yīng)的數(shù)字:b=512;c=1;k=1024;w=2
參數(shù):
1. if=文件名:輸入文件名,缺省為標(biāo)準(zhǔn)輸入。即指定源文件。< if=input file >
2. of=文件名:輸出文件名,缺省為標(biāo)準(zhǔn)輸出。即指定目的文件。< of=output file >
3. ibs=bytes:一次讀入bytes個(gè)字節(jié),即指定一個(gè)塊大小為bytes個(gè)字節(jié)。
obs=bytes:一次輸出bytes個(gè)字節(jié),即指定一個(gè)塊大小為bytes個(gè)字節(jié)。
bs=bytes:同時(shí)設(shè)置讀入/輸出的塊大小為bytes個(gè)字節(jié)。
4. cbs=bytes:一次轉(zhuǎn)換bytes個(gè)字節(jié),即指定轉(zhuǎn)換緩沖區(qū)大小。
5. skip=blocks:從輸入文件開(kāi)頭跳過(guò)blocks個(gè)塊后再開(kāi)始復(fù)制。
6. seek=blocks:從輸出文件開(kāi)頭跳過(guò)blocks個(gè)塊后再開(kāi)始復(fù)制。
注意:通常只用當(dāng)輸出文件是磁盤或磁帶時(shí)才有效,即備份到磁盤或磁帶時(shí)才有效。
7. count=blocks:僅拷貝blocks個(gè)塊,塊大小等于ibs指定的字節(jié)數(shù)。
8. conv=conversion:用指定的參數(shù)轉(zhuǎn)換文件。
ascii:轉(zhuǎn)換ebcdic為ascii
ebcdic:轉(zhuǎn)換ascii為ebcdic
ibm:轉(zhuǎn)換ascii為alternate ebcdic
block:把每一行轉(zhuǎn)換為長(zhǎng)度為cbs,不足部分用空格填充
unblock:使每一行的長(zhǎng)度都為cbs,不足部分用空格填充
lcase:把大寫字符轉(zhuǎn)換為小寫字符
ucase:把小寫字符轉(zhuǎn)換為大寫字符
swab:交換輸入的每對(duì)字節(jié)
noerror:出錯(cuò)時(shí)不停止
notrunc:不截短輸出文件
sync:將每個(gè)輸入塊填充到ibs個(gè)字節(jié),不足部分用空(NUL)字符補(bǔ)齊。
file 命令
file 命令用于查看文件類型,也就是我們說(shuō)的文件格式,在linux種,文本,目錄,設(shè)置這些都是文件
[root@localhost test]# ls
table table-c
[root@localhost test]# file table
table: ASCII text
[root@localhost test]# cd ..
[root@localhost file]# file test/
test/: directory
[root@localhost file]#
tar 命令
tar 命令用于對(duì)文件進(jìn)行打包壓縮或解壓,在linux上主要使用的是.tar 或.tar.gz 或.tar.bz2 格式,所有我們可以用tar命令
命令格式:
tar [選項(xiàng)] [文件]
-c 參數(shù)用于創(chuàng)建壓縮文件, -x 參數(shù)用于解壓文件, 因此這兩個(gè)參數(shù)不能同時(shí)使用。
其次,-z 參數(shù)指定使用 Gzip 格式來(lái)壓縮或解壓文件,-j 參數(shù)指定使用 bzip2 格式來(lái)壓縮或解壓文件。一般用tar -czvf 壓縮文件,用tar -xzvf 解壓文件。
[root@localhost file]# tar czvf test.tar.gz test
test/
test/table
test/table-c
[root@localhost file]# ls
test test.tar.gz
[root@localhost file]# tar -tf test.tar.gz
test/
test/table
test/table-c
[root@localhost file]# mkdir test2
[root@localhost file]# tar -xzvf test.tar.gz -C test2
test/
test/table
test/table-c
[root@localhost file]# ls
test test2 test.tar.gz
[root@localhost file]# cd test2
[root@localhost test2]# ls
test
[root@localhost test2]# cd test/
[root@localhost test]# ls
table table-c
[root@localhost test]#
grep 命令
grep命令是文本搜索匹配工具,參數(shù)特別多,最常用的為 -n 新手搜索到的信息的行號(hào),-v反選信息
[root@localhost test]# cat table
no1|no1-1|no1-2
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2[root@localhost test]# grep no1-2 table
no1|no1-1|no1-2
[root@localhost test]# grep -n no1-2 table
1:no1|no1-1|no1-2
[root@localhost test]# grep -v no1-2 table
no2|no2-1|no2-2
no3|no3-1|no3-2
no4|no4-1|no4-2
no5|no5-1|no5-2
[root@localhost test]#
find 命令
find 命令用于安置指定條件查詢文件,除了查找還可以使用-exec 執(zhí)行后續(xù)操作,例如復(fù)制
命令格式:
find [查找路徑] 尋找條件 操作
尋找條件:
-amin<分鐘>:查找在指定時(shí)間曾被存取過(guò)的文件或目錄,單位以分鐘計(jì)算;
-anewer<參考文件或目錄>:查找其存取時(shí)間較指定文件或目錄的存取時(shí)間更接近現(xiàn)在的文件或目錄;
-atime<24小時(shí)數(shù)>:查找在指定時(shí)間曾被存取過(guò)的文件或目錄,單位以24小時(shí)計(jì)算;
-cmin<分鐘>:查找在指定時(shí)間之時(shí)被更改過(guò)的文件或目錄;
-cnewer<參考文件或目錄>查找其更改時(shí)間較指定文件或目錄的更改時(shí)間更接近現(xiàn)在的文件或目錄;
-ctime<24小時(shí)數(shù)>:查找在指定時(shí)間之時(shí)被更改的文件或目錄,單位以24小時(shí)計(jì)算;
-daystart:從本日開(kāi)始計(jì)算時(shí)間;
-depth:從指定目錄下最深層的子目錄開(kāi)始查找;
-expty:尋找文件大小為0 Byte的文件,或目錄下沒(méi)有任何子目錄或文件的空目錄;
-exec<執(zhí)行指令>:假設(shè)find指令的回傳值為True,就執(zhí)行該指令;
-false:將find指令的回傳值皆設(shè)為False;
-fls<列表文件>:此參數(shù)的效果和指定“-ls”參數(shù)類似,但會(huì)把結(jié)果保存為指定的列表文件;
-follow:排除符號(hào)連接;
-fprint<列表文件>:此參數(shù)的效果和指定“-print”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fprint0<列表文件>:此參數(shù)的效果和指定“-print0”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fprintf<列表文件><輸出格式>:此參數(shù)的效果和指定“-printf”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fstype<文件系統(tǒng)類型>:只尋找該文件系統(tǒng)類型下的文件或目錄;
-gid<群組識(shí)別碼>:查找符合指定之群組識(shí)別碼的文件或目錄;
-group<群組名稱>:查找符合指定之群組名稱的文件或目錄;
-help或——help:在線幫助;
-ilname<范本樣式>:此參數(shù)的效果和指定“-lname”參數(shù)類似,但忽略字符大小寫的差別;
-iname<范本樣式>:此參數(shù)的效果和指定“-name”參數(shù)類似,但忽略字符大小寫的差別;
-inum<inode編號(hào)>:查找符合指定的inode編號(hào)的文件或目錄;
-ipath<范本樣式>:此參數(shù)的效果和指定“-path”參數(shù)類似,但忽略字符大小寫的差別;
-iregex<范本樣式>:此參數(shù)的效果和指定“-regexe”參數(shù)類似,但忽略字符大小寫的差別;
-links<連接數(shù)目>:查找符合指定的硬連接數(shù)目的文件或目錄;
-iname<范本樣式>:指定字符串作為尋找符號(hào)連接的范本樣式;
-ls:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出;
-maxdepth<目錄層級(jí)>:設(shè)置最大目錄層級(jí);
-mindepth<目錄層級(jí)>:設(shè)置最小目錄層級(jí);
-mmin<分鐘>:查找在指定時(shí)間曾被更改過(guò)的文件或目錄,單位以分鐘計(jì)算;
-mount:此參數(shù)的效果和指定“-xdev”相同;
-mtime<24小時(shí)數(shù)>:查找在指定時(shí)間曾被更改過(guò)的文件或目錄,單位以24小時(shí)計(jì)算;
-name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-newer<參考文件或目錄>:查找其更改時(shí)間較指定文件或目錄的更改時(shí)間更接近現(xiàn)在的文件或目錄;
-nogroup:找出不屬于本地主機(jī)群組識(shí)別碼的文件或目錄;
-noleaf:不去考慮目錄至少需擁有兩個(gè)硬連接存在;
-nouser:找出不屬于本地主機(jī)用戶識(shí)別碼的文件或目錄;
-ok<執(zhí)行指令>:此參數(shù)的效果和指定“-exec”類似,但在執(zhí)行指令之前會(huì)先詢問(wèn)用戶,若回答“y”或“Y”,則放棄執(zhí)行命令;
-path<范本樣式>:指定字符串作為尋找目錄的范本樣式;
-perm<權(quán)限數(shù)值>:查找符合指定的權(quán)限數(shù)值的文件或目錄;
-print:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式為每列一個(gè)名稱,每個(gè)名稱前皆有“./”字符串;
-print0:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式可以自行指定;
-prune:不尋找字符串作為尋找文件或目錄的范本樣式;
-regex<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:將find指令的回傳值皆設(shè)為True;
-typ<文件類型>:只尋找符合指定的文件類型的文件;
-uid<用戶識(shí)別碼>:查找符合指定的用戶識(shí)別碼的文件或目錄;
-used<日數(shù)>:查找文件或目錄被更改之后在指定時(shí)間曾被存取過(guò)的文件或目錄,單位以日計(jì)算;
-user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
-version或——version:顯示版本信息;
-xdev:將范圍局限在先行的文件系統(tǒng)中;
-xtype<文件類型>:此參數(shù)的效果和指定“-type”參數(shù)類似,差別在于它針對(duì)符號(hào)連接檢查。
例1:查找table文件,名復(fù)制到a文件中,需要注意,-exec{} \; 結(jié)尾是 \;
[root@localhost test]# mkdir a
[root@localhost test]# ls
a table table-c
[root@localhost test]# find /home/vsftpd/java/file/test -name "table" -exec cp -a {} a/ \;
[root@localhost test]# cd a/
[root@localhost a]# ls
table
[root@localhost a]# cd ..
[root@localhost test]# ls
a table table-c