輸入命令按下enter鍵就會開始執(zhí)行,如果輸入的命令很長蒸走,可以使用反斜杠\來轉(zhuǎn)義enter符號惊楼,使命令連續(xù)到下一行。
在linux環(huán)境中大小寫是不同的
基本命令:
1.顯示日期和事件的命令:date
如果想要輸出特定格式的日期和事件需要帶上參數(shù)
例如:date +%Y/%m/%d
date +%H:%M
2.顯示日歷的命令:cal
cal的基本能語法:cal [[month] year]
可以顯示某年的日歷:例如杰捂,cal 2009
可以顯示某年某月的日歷:例如舆床,cal 9 2009
3.計算器命令:bc
輸入bc命令就進入bc這個軟件的工作環(huán)境,就可以像在windows中一樣進行加減乘除嫁佳,
+加法挨队,-減法,*乘法蒿往,/除法盛垦,^指數(shù),%余數(shù)瓤漏。
bc默認是輸出整數(shù)的腾夯,如果要輸出全部小數(shù),就必須執(zhí)行scale=number蔬充,其中number就是小數(shù)點后的位數(shù)蝶俱。
要離開bc宏所,需要輸入quit才能離開bc軟件環(huán)境伐债。
重要的功能鍵
1.tab鍵:用于補全命令或者補全文件
2.ctrl+c:用于中斷目前正在運行的命令
3.ctrl+d:表示鍵盤輸入結(jié)束儒将,也可以用來代替exit的輸入儒飒。
在命令行中直接按下兩次tab鍵惰爬,可以看到總共有多少個命令可以供當(dāng)前用戶使用箩祥。
查看命令的用法:
可以使用man 命令名來查看命令的具體用法志电。
其中man是manual的縮寫骇笔。
linux關(guān)機:
數(shù)據(jù)同步寫入磁盤中:在關(guān)機前可以使用命令sync將內(nèi)存中尚未被更新的數(shù)據(jù)就會被寫入硬盤中。
關(guān)機命令:shutdown竿拆、reboot宙拉、halt、poweroff
系統(tǒng)執(zhí)行等級:
run level 0:關(guān)機
run level 3:純命令行模式
run level 5:含有圖形界面模式
run level 6:重啟
可以使用init命令來切換各種模式如输,例如想要關(guān)機的話鼓黔,也可以使用init 0。
Linux下文件權(quán)限的概念
Linux文件屬性
ls -al 列出所有的文件不见,-al表示列出所有的文件詳細的權(quán)限和屬性澳化。
例如
[1] [2] [3] [4] [5] [6] [7]
[權(quán)限] [連接] [所有者][用戶組][文件容量] [修改日期] [文件名]
drwxr-x--- 4 root root 4096 Sep 8 14:06 .gconfd
-rwxr-xr-x 1 root root 1024 Jan 3 11:01 install.log
1.第一列文件的類型與權(quán)限
第一列由10個字符組成:
第一個字符代表這個文件是目錄、文件或者鏈接文件等
其中d表示目錄稳吮,
-表示是文件
l表示是連接文件
接下來的字符中缎谷,以三個字符為一組,均是rwx的組合灶似,其中r表示可讀列林,w表示可寫,x表示可執(zhí)行酪惭。如果沒有相應(yīng)的權(quán)限就用-表示希痴。
這三組分別表示的權(quán)限是:
第一組為”文件所有者的權(quán)限“
第二組為”同用戶組的權(quán)限“
第三組為”其他非本用戶組的權(quán)限“
2.第二列表示有多少個文件名連接到此節(jié)點上
3.第三列表示這個文件或目錄的所有者賬號
4.第四列表示這個文件所屬的用戶組
5.第五列表示這個文件的大小,默認單位為B
6.第六列表示這個文件的創(chuàng)建日期或這個文件的修改日期春感。
7.第七列表示這個文件名
改變文件屬性和權(quán)限:
chgrp(change group):改變文件的所屬用戶組
chown(change owner):改變文件所有者
chmod:改變權(quán)限砌创,權(quán)限的設(shè)置有兩種方式,使用數(shù)字或者符號來進行權(quán)限的更改鲫懒。
數(shù)字類型改變權(quán)限:
使用數(shù)字分別代表各個權(quán)限嫩实,其中:
r:4
w:2
x:1
owner、group窥岩、others三種身份各自有自己的rwx權(quán)限甲献,三個權(quán)限的分?jǐn)?shù)需要累加。例如
owner = rwx = 4 + 2 + 1=7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0
那么這個文件的權(quán)限數(shù)字就是770
符號類型改變權(quán)限:
使用u颂翼,g晃洒,o分別代表user、group疚鲤、others三種身份的權(quán)限锥累,a表示所有身份
例如:
一個文件的權(quán)限為:-rwxr-xr-x
user:有可讀、可寫集歇、可執(zhí)行的權(quán)限
group:有可讀、可執(zhí)行的權(quán)限
others:有可讀语淘、可執(zhí)行的權(quán)限
可以使用命令 chmod u=rwx诲宇,go=rx install.log
給install.log文件的所有用戶增加寫權(quán)限
chmod a+w install.log
給install.log文件的所有用戶去掉可執(zhí)行權(quán)限
chmod a-x install.log
Linux下文件沒有所謂的擴展名际歼,一個linux文件能不能被執(zhí)行,與文件名沒有一點關(guān)系姑蓝,而是權(quán)限中有x鹅心,就代表這個文件可以被執(zhí)行。
通常會以適當(dāng)?shù)臄U展名來表示文件是什么種類的纺荧。例如旭愧,.sh表示腳本或批處理文件,.Z宙暇、.tar输枯、.tar.gz、.zip占贫、.tgz都表示壓縮文件桃熄。
Linux目錄配置:
FHS(Filesystem Hierarchy Standard)標(biāo)準(zhǔn)用于讓用戶能夠了解到已安裝的軟件通常放置在哪個目錄下。FHS根據(jù)文件系統(tǒng)使用的頻繁與否和是否允許用戶隨意改動型奥,而將目錄定義成四種交互作用的形態(tài)瞳收。分別如下:
可分享的 不可分享的
不變的:/usr(軟件放置處)、/opt(第三方軟件) /etc(配置文件)厢汹、/boot(開機與內(nèi)核文件)
可變動的: /var/mail(用戶郵件信箱) /var/run(程序相關(guān))螟深、/var/lock(程序相關(guān))
/var/spool/news(新聞組) /var/lock(程序相關(guān))
可分享的:可以分享給其他系統(tǒng)掛載使用的目錄,所以包括可執(zhí)行文件與用戶的郵件等數(shù)據(jù)烫葬,是能夠分享給網(wǎng)絡(luò)上的其他主機掛載用的目錄界弧。
不可分享的:自己機器上運行的設(shè)備文件或者程序有關(guān)的socket文件等,不適合分享給其他主機厘灼。
不變的:數(shù)據(jù)不經(jīng)常變動夹纫。
可變動的:數(shù)據(jù)經(jīng)常變動
根目錄(/):是整個系統(tǒng)最重要的目錄,不僅所有其他目錄是由根目錄衍生出來的设凹,而且根目錄與開機舰讹、還原、系統(tǒng)修復(fù)等操作有關(guān)闪朱。根目錄所在的分區(qū)越小越好月匣,并且應(yīng)用程序所安裝的軟件最好不要與根目錄在同一個分區(qū)。
開機過程中僅有根目錄會被掛載奋姿,其他的分區(qū)會在開機完成之后才會持續(xù)進行掛載锄开,因此根目錄下與開機過程有關(guān)的目錄就不能夠與根目錄放到不同的分區(qū)去。有如下這些目錄:
/etc:配置文件
/bin:重要執(zhí)行文件
/dev:所需要的設(shè)備文件
/lib:執(zhí)行文件所需的函數(shù)庫與內(nèi)核所需的模塊
/sbin:重要的系統(tǒng)執(zhí)行文件
/usr(UNIX software resource)unix操作系統(tǒng)軟件資源称诗,所有系統(tǒng)默認的軟件都會放置在該目錄下萍悴,因此這個目錄有點類似與windows下的“C:\Windows”和“C:\Program files”。
/var 放置一些緩存、登錄文件以及某些軟件運行所產(chǎn)生的文件癣诱。
相對路徑和絕對路徑:
絕對路徑:由根目錄/開始寫起的文件名或目錄名稱计维。
相對路徑:相對于當(dāng)前路徑
.:或者./表示當(dāng)前路徑
..:或者../表示上層目錄
目錄管理
幾個特殊的目錄
. 代表此層目錄
.. 代表上層目錄
代表前一個工作目錄
~ 代表“目前用戶身份”所在的主文件夾
~account 代表account這個用戶的主文件夾
幾個常見的處理目錄的命令
cd:切換目錄
剛登錄時會回到自己的主文件夾,主文件夾有一個代表符號就是~撕予,cd ~會回到個人的主文件夾中鲫惶,僅輸入cd和輸入cd ~相同。
pwd:顯示當(dāng)前目錄
pwd [-p] 其中-p表示顯示當(dāng)前路徑实抡,而不是使用連接路徑欠母。加上-p可以讓我們?nèi)〉谜_的目錄名稱。
mkdir:創(chuàng)建一個新目錄
mkdir [-mp] 目錄名稱吆寨,其中m參數(shù)表示配置文件夾的權(quán)限赏淌。p參數(shù)表示遞歸創(chuàng)建所需要的所有目錄
rmdir:刪除一個空目錄
rmdir [-p] 目錄名,其中p參數(shù)表示連同上層空的目錄一起刪除鸟废。要刪除的目錄中必定不能存在其他的目錄或文件猜敢。
執(zhí)行文件路徑的變量:$PATH
例如查看文件屬性的命令是ls,而ls完整的文件名是/bin/ls盒延,為什么我們可以在任何地方執(zhí)行l(wèi)s這個命令呢缩擂,這是因為環(huán)境變量PATH的幫助。當(dāng)我們輸入ls的時候添寺,系統(tǒng)會依照PATH的設(shè)置去每個PATH定義的目錄中查找文件名為ls的可執(zhí)行文件胯盯,如果在PATH定義的目錄中含有多個文件名為ls的可執(zhí)行文件,那么先查詢到的同名命令先被執(zhí)行计露。
文件與目錄管理
查看文件與目錄:ls
-a:列出全部文件博脑,連同隱藏文件(開頭為.的文件)一起列出來
-d:僅列出目錄本身,而不列出目錄內(nèi)的文件數(shù)據(jù)
-l:列出長數(shù)據(jù)串票罐,包括文件的屬性與權(quán)限等數(shù)據(jù)
如果只執(zhí)行l(wèi)s叉趣,默認顯示的只有非隱藏文件的文件名、以文件名進行排序及文件名代表的顏色顯示文件類型该押。
我們可以加上一些參數(shù)來顯示我們想要的信息疗杉。
例如:ls -al 將主文件夾下的所有文件顯示出來,其中包括隱藏文件蚕礼,顯示文件的屬性和權(quán)限烟具。
可以通過man ls來查看ls的具體用法復(fù)制、移動和刪除
- 復(fù)制: cp [-adfilprsu] 源文件 目標(biāo)文件
其中 -a相當(dāng)于-pdr參數(shù)
-d表示源文件為連接文件的屬性奠蹬,則復(fù)制連接文件屬性而非文件本身
-i表示若目標(biāo)文件已經(jīng)存在時朝聋,在覆蓋時會先詢問操作的進行
-p表示連同文件的屬性一起復(fù)制過去
-r表示遞歸持續(xù)復(fù)制,用于目錄的復(fù)制
在默認條件下囤躁,cp的源文件和目的文件的權(quán)限是不同的冀痕,目的文件的所有者通常會是命令操作者本身荔睹。 - 刪除:rm [-fir] 文件或目錄
-f表示force,忽略不存在的文件金度,不會出現(xiàn)告警信息
-i表示刪除之前會詢問用戶是否操作
-r表示遞歸刪除 - 移動:mv [-fiu] 源文件 目的文件
-f表示force的意思应媚,如果目的文件已經(jīng)存在严沥,不會詢問直接覆蓋
-i表示如果目的文件存在時猜极,會詢問是否覆蓋
-u表示如果目的文件存在,其源文件比較新時消玄,才會更新
也可以多個源文件或目錄全部移動到目錄中
mv [option] source1 source2 .... directory
- 取得路徑的文件名和目錄名稱
完成的文件名(包含目錄名稱和文件名)可能會很長跟伏,怎么知道哪個是文件名哪個是目錄名,可以通過basename和dirname來獲取
basename /etc/sysconfig/network
取到的文件名為network
dirname /etc/sysconfig/network
取到的目錄名為/etc/sysconfig
文件內(nèi)容查閱
- 直接查看文件內(nèi)容可以使用cat翩瓜、tac受扳、nl命令,一次性將數(shù)據(jù)全部顯示在屏幕上
- cat [-AbEnTv]
-A表示相當(dāng)于-vET的集合參數(shù)
-v表示列出一些看不出來的特殊字符
-n表示打印出行號兔跌,連同空白行也會有行號
-E表示將結(jié)尾的斷行字符$顯示出來
-T表示將tab按鍵以^I顯示出來 - tac 由最后一行到第一行反向在屏幕上顯示出來
- nl [-bnw] 文件 添加行號打印
-b表示指定行號指定的方式勘高,有兩種方式
-b a 表示不論是否為空行,也同樣顯示行號
-b t 表示如果有空行坟桅,空的那一行不要列出行號(默認值)
-n表示列出行號表示的方法
-n ln 表示行號在屏幕的最左邊顯示
-n rn 表示行號在自己字段的最右方顯示华望,且不加0
-n rz 表示行號在自己字段的最右方顯示,且加0
-w表示行號字段占用的位數(shù)
- 可翻頁查看
- more 一頁一頁翻動
在more命令運行的過程中仅乓,有幾個有用的按鍵
空格鍵 代表向下翻一頁
enter 代表向下滾動一行
:f 表示立即顯示出文件名以及目前顯示的行數(shù)
q 表示離開more命令赖舟,不再顯示該文件的內(nèi)容
b或者ctrl+b 表示往回翻頁,只對文件有用 - less 一頁一頁翻動
在less命令運行的過程中夸楣,有幾個有用的按鍵
空格鍵 代表向下翻一頁
[PageDown] 代表向下翻一頁
[PageUp] 代表向上翻一頁
/字符串 代表向下查詢字符串的功能
?字符串 代表向上查詢字符串的功能
n 重復(fù)前一個查詢(與/或者宾抓?有關(guān))
N 反向重復(fù)前一個查詢(與/或者?有關(guān))
q 表示退出less命令
- 數(shù)據(jù)選取
- head [-n number] 文件 取前面幾行
默認情況下顯示前面10行
如果number為負數(shù)豫喧,則顯示所有的行石洗,但是不包括最后負數(shù)絕對值行 - tailf [-n number] 文件 取后面幾行
默認顯示后10行
如果number為正數(shù),則表示只列出number行之后的數(shù)據(jù)
上面列出的所有文件查閱命令都是查閱純文本文件
- 查閱非純文本文件使用od
od [-t TYPE] 文件
-t后面可以接各種類型的輸出
a 表示利用默認的字符來輸出
c 表示使用ASCII字符來輸出
d[size] 表示使用十進制來輸出數(shù)據(jù)紧显,每個整數(shù)占用size字節(jié)
f[size]表示使用浮點數(shù)來輸出數(shù)據(jù)讲衫,每個數(shù)占用size字節(jié)
o[size]表示使用八進制來輸出數(shù)據(jù),每個整數(shù)占用size字節(jié)
x[size]表示使用十六進制來輸出數(shù)據(jù)鸟妙,每個整數(shù)占用size字節(jié) - 修改文件時間或創(chuàng)建新文件
文件有三個變動的時間
- modification time(mtime):當(dāng)文件的內(nèi)容更改時焦人,會更新這個時間
- status time(ctime):當(dāng)文件的狀態(tài)改變時,會更新這個時間重父,例如權(quán)限或?qū)傩员桓牧恕?/li>
- access time(atime):當(dāng)文件的內(nèi)容被取用時花椭,會更新這個時間。
ls -l命令會顯示文件內(nèi)容上次被更改的時間房午。
ls -l --time=atime 命令顯示的時間就是文件剛才被使用的時間
ls -l --time=ctime 命令顯示的時間就是文件狀態(tài)被更改的時間
修改文件的時間使用命令touch
touch [-acdmt] 文件
參數(shù)
-a表示僅修改訪問時間
-c表示修改文件的時間矿辽,如果文件不存在則不會創(chuàng)建文件
-d表示后面可以接與修改的日期而不是目前的日期,也可以使用--date=“日期或時間”
-m表示僅修改mtime
-t表示后面可以接欲修改的時間而不是目前的日期,格式為 [YYMMDDhhmm]
使用touch 文件命令時袋倔,如果文件不存在就會創(chuàng)建該文件
例如touch test.log 當(dāng)test.log文件不存在的時候就會去創(chuàng)建該文件雕蔽。
- 文件默認權(quán)限與隱藏權(quán)限
- 文件默認權(quán)限
umask 用戶在創(chuàng)建文件或目錄的時候的,文件或目錄的默認權(quán)限宾娜。
例如:
unmask
顯示權(quán)限數(shù)字
unmask
0022
顯示權(quán)限符號
unmask -s
u=rwx,g=rx,o=rx
默認情況下批狐,如果用戶創(chuàng)建文件,則默認沒有可執(zhí)行權(quán)限(x)前塔,只有r嚣艇、w這兩個選項,即默認權(quán)限是-rw-rw-rw(666)
默認情況下华弓,如果用戶創(chuàng)建目錄食零,則默認所有權(quán)限均開放,即為drwx-rwx-rwx(777)
unmask的分?jǐn)?shù)是指“該默認值需要拿掉的權(quán)限”寂屏,例如上面的022表示用戶沒有被拿掉任何權(quán)限贰谣,用戶組和其他被拿掉了寫的權(quán)限。
如何使用unmask修改新建文件的默認權(quán)限迁霎,直接在unmask后面加上分?jǐn)?shù)就好了
比如:
···
unmask 002 就表示用戶和用戶組的讀寫權(quán)限不被拿掉吱抚,其他會被拿掉寫的權(quán)限
···
- 查看文件類型file
file命令可以查看文件的類型
6.文件的查詢 - 查找文件
whereis [-bmsu] 文件或目錄名
-b表示只找二進制文件
-m表示只找在說明文件manual路徑下的文件
-s表示只找source源文件
-u表示查找不在上述三個選項中的其他特殊文件
locate [-ir] keyword
-i表示忽略大小寫的差異
-r表示后邊可以接正則表達式的顯示方式
有時候當(dāng)你查找剛新建的文件時,會有找不到的情況欧引,是因為locate命令是去尋找已經(jīng)創(chuàng)建的數(shù)據(jù)庫/var/lib/mlocate里面的數(shù)據(jù)频伤,而數(shù)據(jù)庫的創(chuàng)建默認是每天執(zhí)行一次。
find [PATH] [option] [action]
參數(shù)主要如下:
1.與時間有關(guān)的參數(shù)
-atime芝此,-ctime憋肖,-mtime
以-mtime為例,
-mtime n :n為數(shù)字婚苹,意思就是查找在n天之前的“一天之內(nèi)”被修改過的文件
-mtime +n :列出在n天之前(不包含n天本身)被更改過的文件
-mtime -n :列出在n天之內(nèi)(含n天本身)被更改過的文件
-newer file :file為一個存在的文件岸更,列出比file還要新的文件名
例如:
find / -mtime 0 表示找到從現(xiàn)在開始過去24小時內(nèi)有改動過的文件,0表示當(dāng)前的時間
find /etc -newer /etc/passwd 表示找到比/etc/passwd新的文件
2.與用戶或用戶組名有關(guān)的參數(shù)
-uid n 其中n表示數(shù)字膊升,即用戶的ID怎炊,也稱為UID
-gid n 其中n表示數(shù)字,即用戶組名的ID廓译,也稱為GID
-user name 其中name為用戶的賬號名稱
-group name 其中name為用戶組名
-nonuser 表示尋找文件的所有者不存在在/etc/passwd中的文件
-nongroup 表示尋找文件的所有用戶組不存在于/etc/group中的文件
例如:
find /home -user vbird 表示查找home下屬于用戶vbird的文件
find / -nonuser 查找系統(tǒng)中不屬于任何人的文件
3.與文件權(quán)限及名稱有關(guān)的參數(shù)
-name filename 查找文件名為filename的文件
-size [+-] SIZE 查找比size大(+)或衅浪痢(-)的文件
-type TYPE表示查找文件類型為TYPE的文件
-perm mode表示查找文件權(quán)限剛好等于mode的文件
-perm -mode表示查找文件權(quán)限必須全部包括mode的權(quán)限的文件
例如 查找文件權(quán)限為-rwxr--r--的文件,即權(quán)限744非区,那么文件權(quán)限為-rwxr-xr-x(755)的文件也會被列出來瓜挽,因為-rwxr-xr-x的屬性包括了-rwxr--r--的屬性
-perm +mode表示查找文件權(quán)限包含任一mode的權(quán)限的文件,例如查找-rwxr-xr-x征绸,但是另一個文件屬性包括-rw-------的文件也會被列出來久橙,因為它有-rw屬性存在
4.其他可進行的操作
-exec command :其中command表示其他命令俄占,-exec表示接其他命令來處理查詢的結(jié)果
-print 表示將結(jié)果打印在屏幕上
vim程序編輯器
vi和vim的區(qū)別是vim是vi的高級版本
為什么要學(xué)vim
1.所有的linux like 系統(tǒng)都會內(nèi)置vi文本編輯器,而其他的文本編輯器不一定有
2.很多軟件的編輯接口都會主動調(diào)用vi
3.vim有程序編輯的能力淆衷,可以主動以字體顏色辨別語法的正確性缸榄,方便設(shè)計
vi的使用:
vi有三種模式:一般模式、編輯模式祝拯、命令行模式
一般模式:使用vi打開一個文件的時候就進入了一般模式甚带,在這個模式中可以按左右鍵移動光標(biāo),可以刪除字符或刪除整行鹿驼,也可以復(fù)制粘貼你的文件數(shù)據(jù)欲低。但是不可以編輯文件。
編輯模式:在一般模式下按下“i 畜晰、I、o瑞筐、O凄鼻、a、A聚假、r块蚌、R”等任何一個字母才會進入編輯模式,按esc退出編輯模式
命令行模式:在一般模式下膘格,輸入“:峭范、/、瘪贱?”就進入了纱控,命令行模式,在這個模式下可以進行讀取菜秦、保存文件甜害,離開vi等操作。
編輯牧師和命令行模式之間是不可以切換的球昨。
一般模式切換到命令行模式可用的按鈕
:w 表示將編輯的內(nèi)容寫入到硬盤中
:w! 表示如果文件屬性為 只讀時尔店,強制寫入該文件
:q表示離開vi
:q!表示如果文件有修改過,不保存強制退出主慰,
:wq表示保存后離開
vim的用法和vi完全一樣
管道命令
管道命令僅會處理standard out嚣州,對于standard error output會予以忽略
管道命令必須要能夠接收來自前一個命令的數(shù)據(jù)成為standard input繼續(xù)處理才行
選取命令:cut,grep
1.cut -d ‘分隔符’ -f field
cut -c 字符范圍
-d表示分隔符
-f表示與-d分隔符一起使用共螺,表示取分割后的第幾段
-c表示以字符為單位取出固定字符區(qū)間
以“行”為單位進行處理的選取
例如:
echo $path |cut -d ':' -f 5 表示將取出的path變量用:分割后取第五段
export
輸出
declare -x HISTSIZE="1000"
declare -x INPUTRC="/etc/inputrc"
export |cut -c 12-
輸出為
HISTSIZE=“1000”
INPUTRC=“/etc/inputrc”
表示取第12個字符之后的所有字符串輸出该肴,因為是以行為單位進行處理的
2.grep
grep [-acinv] [--color=auto] '查找的字符串' filename
其中
-a表示將binary文件以text文件的放肆查找數(shù)據(jù)
-c表示計算找到“查找字符串”的次數(shù)
-i表示忽略大小寫的不同
-n表示輸出行號
-v表示反向選擇,即顯示出沒有‘查找字符串’內(nèi)容的那一行璃谨。
--color=auto表示將找到的關(guān)鍵字部分加上顏色
例如:
last |grep 'root' 表示將last當(dāng)中出現(xiàn)root的那一行列出來
last |grep ‘root’ | cut -d “ ” -f 1 表示將last當(dāng)中出現(xiàn)root的那一行列出來并用空格分隔開后取一個列沙庐。
正則表達式
首先學(xué)習(xí)一下grep命令的一些高級參數(shù)
grep [-A] [-B] [--color=auto] ‘搜索字符串’ filename
其中:
-A :后面可加數(shù)字鲤妥,表示after的意思,除了列出該行外拱雏,后續(xù)的n行也列出來棉安。
-B :后面可加數(shù)字,表示before的意思铸抑,除了列出該行外贡耽,前面的n行也列出來。
--color=auto表示將選取的數(shù)據(jù)添加顏色
grep是一個很常用的命令鹊汛,grep在數(shù)據(jù)中查找一個字符串時蒲赂,是以整行為單位來進行數(shù)據(jù)的選取的。假如一個文件有10行刁憋,其中有兩行具有你查找的字符串滥嘴,則將那兩行顯示在屏幕上,其他的丟棄至耻。
例如
1.查找特定的字符
grep -n 'the' regular_express.txt
表示在regular_express.txt文件中查找含有the字符串的行
2.利用中括號[]來查找集合字符
[]里面不論有幾個字符若皱,它都只代表某“一個”字符
grep -n 't[ae]st' regular_express.txt
表示在regular_express.txt中查找字符串test或者tast
grep -n 'oo' regular_express.txt
表示在regular_express.txt中查找字符串oo
grep -n ‘[^g]oo’ regular_express.txt
表示在regular_express.txt中查找字符串前不包含g的oo字符串
grep -n '[^a-z]oo' regular_express.txt
表示在regular_express.txt中查找oo前面不能有小寫字符的oo字符串
grep -n '[0-9]' regular_express.txt
表示在regular_express.txt中查找有數(shù)字的行
3.行首與行尾字符^$
linux中的斷行字符是$
grep -n '^the' regular_express.txt
表示在regular_express.txt中查找在行首出現(xiàn)的the
grep -n ‘^[a-z]’ regular_express.txt
表示在regular_express.txt中查找開頭是小寫字符的行
grep -n '^[a-zA-Z]' regular_express.txt
表示在regular_express.txt中查找開頭不是英文字母的行
^ 出現(xiàn)在[]之外表示定位在首行,^ 出現(xiàn)在[]中表示方向選擇
grep -n '\.$' regular_express.txt
表示找到行尾結(jié)束為小數(shù)點.的那一行
grep -n '^$'regular_express.txt
表示找出哪以行是空白行
grep -v '^$' regular_express.txt |grep -v '^#'
不輸出空行和以#開頭的行
4.任意一個字符.與重復(fù)字符*
.(小數(shù)點):代表一定有一個任意字符
*(星號):代表重復(fù)前一個字符0到無窮次的意思
例如:
grep -n 'g..d' regular_express.txt
表示找出以g開頭尘颓,d結(jié)尾的中間有兩個字符的字符串
o*表示空字符或者一個o字符以上
oo*表示至少一個o以上
ooo*表示至少兩個o以上
grep -n 'ooo*' regular_express.txt
表示查找至少有兩個o以上的字符
grep -n 'goo*g' regular_express.txt
表示以g開頭結(jié)尾走触,中間至少有一個o的字符串
grep -n 'g.*g' regular_express.txt
表示以g開頭結(jié)尾中間任意字符的字符串
.*表示零個或多個任意字符
5.限定連續(xù)RE字符范圍{}
因為符號{}在shell中是有特殊意義的,因此必須要使用轉(zhuǎn)義字符\來讓它失去特殊意義才行疤苹。
例如
grep -n 'o\{2\}' regular_express.txt
表示找到連續(xù)兩個o的字符串
grep -n 'go\{2,5\}' regular_express.txt
表示查找g后面接2到5個o的字符串
grep -n ‘go\{2,\}’ regular_express.txt
表示g后面接至少兩個o的字符串
基礎(chǔ)正則表達式字符
^word 表示待查找的字符word在首行
word$ 表示待查找的字符在結(jié)尾
.(小數(shù)點)表示一定有一個任意字符的字符
\表示轉(zhuǎn)義字符互广,將特殊符號的特殊意義去掉
*表示重復(fù)零個或無窮多個前一個字符
[list]表示從字符集合list中找出想太選取的一個字符
[n1-n2]表示從字符集中查找想要選取的字符范圍
[^n1-n2]表示從字符集中查找不要的字符串或范圍
{n,m}表示連續(xù)n到m個前一個字符,若為{n}表示連續(xù)n個前一個字符卧土,{n,}表示連續(xù)n個以上前一個字符惫皱。
sed命令
sed命令可以將數(shù)據(jù)進行替換、刪除夸溶、新增逸吵、選取特定行等
sed [-nefr] [動作]
其中
-n表示使用安靜模式,在一般sed用法中缝裁,所有來自STDIN的數(shù)據(jù)一般都會被列出在屏幕上扫皱,但如果加上-n參數(shù)后,則只有經(jīng)過sed特殊命令處理的那一行才會被列出來捷绑。
-e表示直接在命令行模式上進行sed的動作編輯
-f表示直接將sed的動作寫在一個文件內(nèi)
-r表示sed的動作支持的是擴展型的正則表達式韩脑,默認是基礎(chǔ)型的正則表達式
-i表示直接修改讀取的內(nèi)容,而不是由屏幕輸出
動作說明:
[n1[,n2]] function
n1粹污,n2:不一定會存在段多,一般代表選擇進行動作的行
function 有下面的參數(shù)
a表示新增,a后面可以接字符串壮吩,而這些字符串會在新的一行出現(xiàn)(目前的下一行)
c表示替換进苍,c的后面可以接字符串加缘,這些字符串可以替換n1,n2之間的行
d表示刪除
i表示插入觉啊,i后買呢可以接字符串拣宏,而這些字符串會在新的一行出現(xiàn)(目前的上一行)
p表示打印,將某個選擇的數(shù)據(jù)打印出來杠人,通常會和參數(shù)-n一起運行
s表示替換勋乾,可以直接進行替換工作,sed ‘s/要被替換的字符串/新的字符串/g'
例如
n1 /etc/passwd | sed '2,5d'
表示將2到5行刪除
n1 /etc/passwd | sed '3,$d'
表示刪除第3行到最后一行
n1 /etc/passwd | sed '2a drink tea'
表示在第2行的后面增加一行嗡善,如果要在第2行的前面增加一行辑莫,使用參數(shù)i
如果要增加兩行以上,則需要每行之間必須要以反斜杠\來進行新行的增加
n1 /etc/passwd | sed '2a drink tea or ......\
drink bear ?'
n1 /etc/passwd | sed '2,5c No 2-5 number'
表示將2到5行內(nèi)容替換成No 2-5 number
awk 數(shù)據(jù)處理工具
awk是非常棒的數(shù)據(jù)處理工具罩引。
awk '條件類型1{動作1} 條件類型2{動作2} 條件類型3{動作3}....' filename
awk主要是處理每一行的字段內(nèi)的數(shù)據(jù)各吨,而默認的字段的分隔符是空格鍵或[tab]鍵。
例如
last -n 5 表示僅取前5行
root pts/1 192.168.1.100 still logged in
root pts/1 192.168.1.100 (01:41)
root pts/1 192.168.1.100 (00:00)
root pts/1 192.168.1.100 (02:00)
root pts/1 192.168.1.100 (03:00)
想要輸出賬號和ip
last -n 5 | awk '{print $1 "\t" $3}'
表示輸出以空格或tab鍵分開的第1和第3個字段蜒程,并且以tab鍵分割
$0表示一整行
awk內(nèi)置變量有:
NF 表示每一行($0)擁有的字段總數(shù)
NR 表示目前awk所處理的是“第幾行”的數(shù)據(jù)
FS 表示目前的分隔符绅你,默認是空格鍵
例如:
last -n 5|awk '{print $1 "\t lines: " NR "\t columes: " NF}'
root lines:1 columes: 6
root lines:2 columes: 4
root lines:3 columes: 4
root lines:4 columes: 4
root lines:5 columes: 4
awk的邏輯運算符
> 大于
< 小于
>= 大于或等于
<= 小于或等于
== 等于
!= 不等于
例如:
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'
輸出:
root:x:0:0:root:/root:/bin/bash
bin 1
daemon 2
以下省略
表示用:分割,打印第三個字段小于10的行的1昭躺,3字段
我們發(fā)現(xiàn)上面會輸出第一行奇怪的數(shù)據(jù),是因為當(dāng)讀入第一行的時候伪嫁,變量之間還是以空格鍵進行分隔的领炫,所有,我們雖然定義了FS=":"张咳,但是卻在第二行后開始生效帝洪,我們可以利用BEGIN這個關(guān)鍵字。
cat /etc/passwd | awk 'BEGIN {FS=":"} $3<10 {print $1 "\t " $3}'
root 0
bin 1
daemon 2
使用awk進行計算統(tǒng)計
例如
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
cat pay.txt | awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} NR>=2{total=$1+$2+$3 printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}'
輸出如下:
Name 1st 2nd 3th Total
VBird 23000 24000 25000 72000.00
DMTsai 21000 20000 23000 64000.00
格式輸出中脚猾,在printf的格式設(shè)置中葱峡,務(wù)必加上\n,才能進行分行
在awk中變量可以直接使用龙助,不用加上$符號
循環(huán)執(zhí)行的例行性工作調(diào)度
crontab進行工作調(diào)度
crontab [-u username] [-l | -e | -r]
-u表示只有root才能進行這個任務(wù)
-e表示編輯crontab的工作內(nèi)容
-l表示查閱crontab的工作內(nèi)容
-r表示刪除crontab的所有工作內(nèi)容
例如
crontab -e
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
其中由6個字段組成
分別表示的意義是:
分鐘 小時 日期 月份 周 命令
0-59 0-23 1-31 1-12 0-7 命令
其中周的0和7都表示星期日
表示任意時刻
,(逗號)表示分隔時段的意思砰奕,例如0 3,6 * * * commond,表示在3和6時執(zhí)行
-(減號)表示一段時間范圍,例如20 8-12 * * * commond,表示8到12時之間每小時的20分執(zhí)行提鸟。
/n(斜線)表示每隔n單位間隔的意思军援,例如/5 * * * * commond,表示每隔5分鐘執(zhí)行一次称勋。
執(zhí)行crontab -e這個crontab其實是/usr/bin/crontab這個執(zhí)行文件胸哥。
Linux中的>和&
表示將輸出重定向
&表示任務(wù)在后臺執(zhí)行,不加表示臨時運行赡鲜,關(guān)閉窗口項目即停止運行
幾個基本符號及其含義:
/dev/null 表示空設(shè)備文件
0 表示stdin標(biāo)準(zhǔn)輸入
1 表示stdout標(biāo)準(zhǔn)輸出
2 表示stderr標(biāo)準(zhǔn)錯誤
例如:
command>/dev/null 表示將commond的標(biāo)準(zhǔn)輸出重定向到設(shè)備文件/dev/null中
2>&1表示將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出空厌,&相當(dāng)于等效于標(biāo)準(zhǔn)輸出
nohup命令即項目在運行前新建一個nohup.out文件用來記錄該項目的運行日志情況庐船。
scp -r 源文件路徑 root@ip:目標(biāo)文件路徑