一肖粮、Linux內(nèi)外部命令的判斷方式以及命令的執(zhí)行流程
1、Linux命令
Linux命令分為內(nèi)部命令(shell自帶的命令)和外部命令(不是shell自帶的命令,由用戶安裝)蜀漆,怎么鑒別是內(nèi)部命令和外部命令呢?可以通過type命令來鑒別
什么是shell呢咱旱?shell是一個(gè)程序确丢,常用的有bash shell,平時(shí)我們通過用戶名和密碼登錄到linux吐限,其實(shí)就是登錄到bash shell程序鲜侥,通過bash shell來操作linux內(nèi)核
命令執(zhí)行流程
那豈不是說使用外部命令效率會(huì)很慢嗎?
其實(shí)一點(diǎn)都不慢诸典,它會(huì)去PATH環(huán)境變量設(shè)置的一堆目錄中查找
2描函、type命令
cd is a shell builtin 表示內(nèi)部命令
ifconfig is hashed (/usr/sbin/ifconfig) 表示外部命令
3、cd命令
cd命令切換文件夾
現(xiàn)在我們cd /usr/sbin
4搂赋、cat命令
通過cat命令查看文件內(nèi)容
通過cat ifconfig來查看ifconfig赘阀,發(fā)現(xiàn)是亂碼文件
5、file命令
file命令查看文件類型
輸入file ifconfig
從輸出信息可以看出它是一個(gè)二進(jìn)制可執(zhí)行文件
6脑奠、whereis命令
whereis命令查看文件位置
find / -name jdk
7基公、echo命令
echo命令用戶打印信息,相當(dāng)于java中的system.out.println
二宋欺、linux查看命令幫助文檔
1轰豆、使用man命令查看相關(guān)命令的含義及描述信息
可以使用回車查看下一行、空格查看下一頁齿诞、q退出
2酸休、使用help查看內(nèi)部命令
一般使用man查看外部命令,help查看內(nèi)部命令
三祷杈、bash shell定義變量以及進(jìn)程簡單管理
1斑司、變量的定義及使用
2、進(jìn)程管理
(1)但汞、ps -ef 命令
查看linux下的應(yīng)用和應(yīng)用的進(jìn)程號(hào)
(2)宿刮、在一個(gè)新窗口輸入vim a,在另外一個(gè)窗口查看進(jìn)程信息 ps -ef私蕾,這個(gè)時(shí)候可以看到有一個(gè)vim a的進(jìn)程
當(dāng)我們?cè)谶@個(gè)窗口中輸入kill -9 1593的話僵缺,另外一個(gè)正在編輯文件的進(jìn)程就會(huì)退出
四、Hash優(yōu)化查詢時(shí)間的原理
在前面我們已經(jīng)講過踩叭,bash shell程序在執(zhí)行命令的一個(gè)過程及原理磕潮,對(duì)于外部命令翠胰,它會(huì)去PATH這個(gè)環(huán)境變量中查找執(zhí)行命令所在的路徑,當(dāng)然在去PATH中尋找之前會(huì)先去hash表中查找這個(gè)命令有沒有執(zhí)行過自脯,執(zhí)行過的話會(huì)記錄在hash表中之景,則此次查找只需從hash表中就可以很方便的找到
五、Linux文件系統(tǒng)介紹
六冤今、文件系統(tǒng)相關(guān)命令
1闺兢、df命令
查看分區(qū)信息 -h 表示文件大小后面會(huì)顯示文件大小
2茂缚、du命令
查看文件的使用情況
3戏罢、ls命令
使用man ls 查看ls命令的相關(guān)介紹
-a:可以查看隱藏文件
-l:以長列表的形式展示文件列表信息
第一位 -:表示文件,d表示文件夾脚囊,b表示塊設(shè)備文件龟糕,c表示字符設(shè)備文件,p表示命令管道文件悔耘,s表示套接字文件讲岁, 從第二位開始往后數(shù)九位表示屬主權(quán)限(每三位一組 rwx:讀、寫衬以、執(zhí)行)缓艳,第11位表示的點(diǎn)表示分隔符,點(diǎn)后面的數(shù)字表示文件有幾個(gè)硬連接看峻,第一個(gè)root代表屬主名阶淘,第二個(gè)root代表這個(gè)第一個(gè)root所在的組織,接下來的5表示文件大小互妓,5后面的日期表示文件最后一次修改的時(shí)間溪窒, 1.txt代表的文件或文件夾的名稱
小結(jié):
4、cd命令
切換文件目錄
cd 文件路徑
cd:切換到家目錄
cd ~:回到家目錄(也就是家目錄)
cd ..:回到上一級(jí)目錄
5冯勉、mkdir命令
創(chuàng)建目錄
mkdir 目錄名
mkdir -p 目錄名澈蚌,級(jí)聯(lián)創(chuàng)建目錄
6、cp命令
cp 被拷貝的文件(可以是路徑加文件名) 拷貝到哪個(gè)位置
復(fù)制目錄使用
cp -r 被拷貝的目錄 目標(biāo)位置
7灼狰、mv命令
移動(dòng)命令
mv 被移動(dòng)的文件 目標(biāo)位置+目標(biāo)文件名
8宛瞄、rm刪除命令
rm 文件名(此中方式的刪除需要再輸入 yes)
rm -f 文件名,無提示直接刪除
rm -rf 文件夾
9交胚、ln命令
ln命令默認(rèn)創(chuàng)建的是硬連接
ln profile a:將a硬連接到profile文件上份汗,他們底層共用一個(gè)文件,刪除他們之中任何一個(gè)
對(duì)另外一個(gè)沒有影響承绸,同時(shí)你也可以使用 ll -i命令查看文件編號(hào)
ln -s profile a:將a軟連接到profile文件裸影,當(dāng)你訪問a的時(shí)候會(huì)去訪問profile,profile再訪問底層文件军熏,當(dāng)將profile刪除了之后a就無法訪問了
10轩猩、stat命令查看文件詳細(xì)信息
11、touch命令
一致時(shí)間、創(chuàng)建新文本
touch 已存在的文件:會(huì)將文件的訪問時(shí)間均践、更新時(shí)間晤锹、改變時(shí)間(即上面stat中介紹的三個(gè)時(shí)間)變成一致
touch 不存在的文件:會(huì)創(chuàng)建一個(gè)新的文本
七、文本相關(guān)的命令
1彤委、cat命令
cat命令查看文件內(nèi)容
cat 1.txt:查看單個(gè)文件內(nèi)容
cat 1.txt 2.txt:查看多個(gè)文件
2鞭铆、more命令
more 1.txt:以分頁的形式查看文件內(nèi)容,按空格:下一頁焦影,回車:下一行(注意它不能回看车遂,回看的話只能用鼠標(biāo)回輪)
3、less命令
less 1.txt:使用空格下一頁斯辰, b看上一頁舶担, 回車看下一行
注意less的話會(huì)把整個(gè)文件內(nèi)容加載到內(nèi)存,如果文件比較大的話彬呻,建議使用more命令查看
4衣陶、head命令
head命令默認(rèn)查看文件前10行內(nèi)容, head 1.txt
head -5 1.txt:查看文件前5行的內(nèi)容
5闸氮、tail命令
tail命令默認(rèn)查看文件后10行的內(nèi)容 tail 1.txt
tail -5 1.txt:查看文件后5行內(nèi)容
tail -f 1.txt:實(shí)時(shí)查看文件增量內(nèi)容
6剪况、| 管道命令
cat b.txt | head -3:管道左邊的命令會(huì)以輸出流的形式交給管道右邊的命令,管道右邊以輸入流的形式接收并且拼到命令的右邊
注意:ls -l 不能接受前面的輸出流蒲跨,這個(gè)怎么辦呢译断?可以通過xargs命令
7、vi文本編輯器命令
vi文本編輯器末行模式的操作
(1)财骨、set設(shè)置
set nu(number的縮寫): 設(shè)置行號(hào)
set nonu(nonumber的縮寫):取消行號(hào)
set readonly:設(shè)置為只讀
(2)镐作、/ 向下查找
n:往下查找
N:往上查找
(3)、? 向上查找
n:往上查找
N:往下查找
(4)隆箩、! 執(zhí)行命令
一般我們會(huì)在/etc/profile文件中設(shè)置一些環(huán)境變量该贾,但是在設(shè)置的時(shí)候可能沒有記住目錄,這時(shí)候我們可以使用如下方式
效果
再次按回車就會(huì)切回到文件中去
(4)捌臊、s 查找并替換
格式 :s/str1/str2/gi
/ : 臨近s命令的第一個(gè)字符邊界字符杨蛋,也可以是 @或#
g : 一行內(nèi)全部替換
i : 忽略大小寫
范圍
n:行號(hào)
. :當(dāng)前光標(biāo)行
+n :偏移n行
-3
%:全文
(5)、刪除
全部刪除 1,$d
刪除前三行
刪除第3~5行數(shù)據(jù)
刪除倒數(shù)第2行
(6)理澎、復(fù)制及黏貼
光標(biāo)挪到最后一行 按下小寫的p
效果圖
八逞力、正則表達(dá)式
1、定義
正則表達(dá)式是對(duì)字符串操作的一種邏輯公式糠爬,就是用事先定義好的一些特殊字符寇荧、及這些特定字符的組合組成一個(gè)"規(guī)則字符串",這個(gè)"規(guī)則字符串"用來表達(dá)對(duì)字符串的一種過濾邏輯执隧。
2揩抡、正則表達(dá)式特定字符
(1)户侥、匹配操作符
\ :轉(zhuǎn)義字符
. :匹配任意單個(gè)字符
[1249a] :匹配中括號(hào)中任意字符
[^12] :匹配中括號(hào)中任意非1和2的字符
[a-k] :匹配中括號(hào)中任意a~k中的一個(gè)字符
^ :行首
$ :行尾
<abc> :單詞首尾邊界(匹配單詞abc)
| :連接操作符
(,) : 選擇操作符
\n :反向引用
(2)、重復(fù)操作符
? :匹配0到1次
- :匹配0到多次
- :匹配1到多次
{n} :匹配n次
{n,} :匹配n到多次
{n,m} :匹配n到m次
3峦嗤、正則表達(dá)式練習(xí)
在Linux中通過grep命令使用正則表達(dá)式來匹配信息
hello shanghai
hello angelababy
hello dilireba
iii250 wyf
hello zhangxinyi
11 hel yhelloubin lo
h2341123i bj
iiii521 fanbingbing
111 hello 222
wo ai bj tam
helloahihelloahi
(1)蕊唐、查找包含hello的行
(2)、查找包含數(shù)字的行
(3)、查找包含了2或者5的行
(4)、查找包含3位數(shù)的行 {}是正則表達(dá)式的字符拒秘,需要加\或者使用grep -E
(5)、包含3位數(shù)字的行
(6)肋僧、查找包含hello這個(gè)單詞的行
(7)、查找出hello為單詞詞首的行
(8)、查找出現(xiàn)2到3次l的行
(9)、查找出 hi hello hi hello 這種結(jié)構(gòu)的行
九俗扇、其它文本處理命令
1硝烂、cut 顯示切割的行數(shù)據(jù)
f :選擇顯示的列
s :不顯示沒有分隔符的行
d :自定義分隔符
2箕别、sort
n :按數(shù)值排序
r :倒序
t :自定義分隔符
K :選擇排序列
u :合并相同行
f :忽略大小寫
angelababy 10
dilireba 11
zhangxinyi 8
zhangxinyi 8
Angelababy 10
3、wc (wordcount)
十滞谢、Linux行編輯器 sed的使用方式
sed:行編輯器串稀,以行為單位進(jìn)行處理,可以將數(shù)據(jù)進(jìn)行替換狮杨、刪除母截、新增、選取等特定工作
1橄教、使用方式
sed [options] 'Command' file ...
2清寇、options
-n :靜默模式,不再默認(rèn)顯示模式空間(內(nèi)存)中的內(nèi)容
-i :直接修改原文件
-e SCRIPT :可以同時(shí)執(zhí)行多個(gè)腳本
-f /PATH/TO/SED_SCRIPT
-r :表示使用擴(kuò)展正則表達(dá)式
3护蝶、Command
d :刪除符合條件的行
p :顯示符號(hào)條件的行
a \string :在指定的行后面追加新行华烟,內(nèi)容為string
\n :可以用于換行
i \string :在指定的行前面添加新行,內(nèi)容為string
c :取代持灰,c的后面可以接字符串
s /pattern/string/修飾符:查找并替換盔夜。默認(rèn)只替換每行中第一次被模式匹配到的字符串
g :行內(nèi)全局替換
i :忽略字符大小寫
s///:s###,s@@@
()堤魁,\1喂链,\2
4、示例
(1)妥泉、顯示文件中的第二行
sed "2p" ctxt
但是在執(zhí)行下面的操作的時(shí)候文本中的內(nèi)容都顯示出來了椭微,它的原理是,打印匹配的行盲链,以及文本中所有的內(nèi)容
(2)蝇率、只顯示第二行
(3)检诗、刪除指定文件靜默空間中的第三行
注意:它刪的是內(nèi)存中的數(shù)據(jù),而不是目標(biāo)文件
(4)瓢剿、刪除源文件中的第三行
sed -i "3d" ctxt
它的原理是先把內(nèi)存中的第3行數(shù)據(jù)刪除逢慌,然后再把內(nèi)存中的數(shù)據(jù)寫回原文件,這時(shí)原文件中的第三行就沒有了
(5)间狂、再每一行的下方加上 yubin
(6)攻泼、在每一行的下方加上 yubin
(7)、將文本中的內(nèi)容替換成hi
(8)鉴象、查找并替換
使用變量的形式
十一忙菠、文本分析工具awk
awk是一個(gè)強(qiáng)大的文本分析工具。
相對(duì)于grep的查找纺弊,sed的編輯牛欢,awk在其對(duì)數(shù)據(jù)分析并生成報(bào)告時(shí),顯得尤為強(qiáng)大淆游。
簡單來說awk就是把文件逐行的讀入傍睹,(空格,制表符)為默認(rèn)分隔符將每行切片犹菱,切開的部分再進(jìn)行各種分析處理拾稳。
awk -F '{pattern + action}' {filenames}
支持自定義分隔符,默認(rèn)是以空格分隔的
支持正則表達(dá)式匹配
支持自定義變量腊脱,數(shù)組 a[1] a[tom] map(key)
支持內(nèi)置變量
ARGC 命令行參數(shù)個(gè)數(shù)
ARGV 命令行參數(shù)排列
ENVIRON 支持隊(duì)列中系統(tǒng)環(huán)境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數(shù)
FS 設(shè)置輸入域分隔符访得,等價(jià)于命令行 -F選項(xiàng)
NF 瀏覽記錄的域的個(gè)數(shù)
NR 已讀的記錄數(shù)
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
支持函數(shù)
print、split陕凹、substr悍抑、sub、gsub
支持流程控制語句
if杜耙、while搜骡、do/while、for泥技、break浆兰、continue
練習(xí)題
passwd文件內(nèi)容解讀:
passwd文件中每行由7個(gè)字段組成,字段與字段之間由:分隔珊豹,第一個(gè)字段代表用戶名簸呈,第二個(gè)字段表示用戶對(duì)應(yīng)的加密后的密碼,第三個(gè)字段表示userId店茶,第四個(gè)字段表示groupId蜕便,第五個(gè)字段表示對(duì)用戶的描述,第六個(gè)字段表示用戶的家目錄贩幻,第七個(gè)字段表示的是這個(gè)用戶默認(rèn)使用的shell
1轿腺、只是顯示/etc/passwd的賬戶
2两嘴、只是顯示/etc/passwd的賬戶和賬戶對(duì)應(yīng)的shell,而賬戶與shell之間以逗號(hào)分割族壳,而且在所有行開始前添加列名name憔辫,shell,在最后一行添加"end"
3仿荆、搜索/etc/passwd有root關(guān)鍵字的所有行
其中$0表示整行
4贰您、統(tǒng)計(jì)/etc/passwd文件中,每行的行號(hào)拢操,每行的列數(shù)锦亦,對(duì)于的完整行內(nèi)容
5、比較麻煩的一道題
統(tǒng)計(jì)報(bào)表:合計(jì)每人1月工資令境, 0:manager杠园,1:worker
Tom 0 2012-12-11 car 3000
John 1 2013-01-13 bike 1000
vivi 1 2013-01-18 car 2800
Tom 0 2013-01-20 car 2500
John 1 2013-01-28 bike 3500
將awk后面的內(nèi)容封裝到一個(gè)文件中(封裝的腳本要遵循一定的格式)
qqq文件的內(nèi)容格式
十二、Linux用戶與權(quán)限
1舔庶、useradd test01 添加test01用戶
2抛蚁、userdel test01 刪除test01用戶
如果僅僅只是執(zhí)行上面這個(gè)操作的話,會(huì)殘留一些文件栖茉,如用戶的家目錄篮绿,以及用戶的mail信息
3、passwd test01 給test01用戶設(shè)置密碼
4吕漂、groupadd share 創(chuàng)建share組
groupdel share 刪除share組
5、usermod -G share test01將test01用戶加入share組
6尘应、chown root:share share/ 改變share文件夾的屬主及屬組信息
7惶凝、chmod g+w share/ 給share文件夾的組增加寫的權(quán)限
chmod:修改文件的權(quán)限 權(quán)限表示方式:字母、數(shù)字
值得注意的是:當(dāng)前給某個(gè)組或者用戶賦權(quán)后犬钢,如果被賦權(quán)的用戶在登錄的過程中被賦權(quán)苍鲜,則需要退出重新登錄(當(dāng)用戶登錄時(shí),會(huì)將權(quán)限信息加載到內(nèi)存)
8玷犹、su test02 切換到test02用戶
十三混滔、Linux軟件安裝與卸載
1、Linux軟件rpm安裝
(1)歹颓、RPM安裝介紹
Linux軟件安裝方式有:一坯屿、基于軟件的源碼進(jìn)行編譯安裝,二巍扛、基于已經(jīng)編譯好的安裝包领跛,下一步下一步的安裝
Redhat提供了rpm(小紅帽包管理)管理體系
rpm軟件包包含依賴檢查,但還需人為解決
(2)撤奸、rpm相關(guān)命令
rpm安裝
rpm -ivh filename(全路徑)
--prefix (指定安裝目錄)
rpm卸載
-e PACKAGE_NAME
其它選項(xiàng)
rpm -qa:查詢已經(jīng)安裝的所有包
查看已經(jīng)安裝的jdk
rpm -q PACKAGE_NAME:查詢指定的包是否已經(jīng)安裝
rpm -qi PACKAGE_NAME:查詢指定包的說明信息
rpm -ql PACKAGE_NAME:查詢指定包安裝后生成的文件列表
rpm -qc PACKAGE_NAME:查詢指定包安裝的配置文件
rpm -qd PACKAGE_NAME:查詢指定包安裝的幫助文檔
rpm -q --scripts PACKAGE_NAME:查詢指定包中包含的腳本
rpm -qf /path/to/somefile:查詢文件是由哪個(gè)rpm包安裝完成的
2吠昭、yum安裝與配置
(1)喊括、yum介紹
yum(全稱為 Yellow dog Updater,Modeified)是一個(gè)Shell前端軟件包管理器(軟件)∈概铮基于RPM包管理郑什,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝,可以自動(dòng)處理依賴性關(guān)系蒲肋,并且一次安裝所有依賴的軟件包蹦误,無需繁瑣地一次次下載,安裝肉津。
原理圖
(2)强胰、配置修改yum國內(nèi)源
目前國內(nèi)有2個(gè)比較有名的軟件源,阿里:http://mirrors.aliyun.com/ 妹沙,163:http://mirrors.163.com/ 偶洋;
如果我給大家提供的兩個(gè)地址,你可以任意選擇一個(gè)距糖,這里我選擇阿里云的國內(nèi)源
點(diǎn)擊centos玄窝,進(jìn)入詳情頁面,按照提供的配置方式修改yum源
步驟1:修改配置文件
由于我這邊沒有wget悍引,首先我通過rpm安裝了一個(gè)wget
wget的rpm安裝包可以http://mirrors.163.com/centos/7/os/x86_64/Packages/ 這個(gè)地址下載
到這里我們就配置好了yum國內(nèi)源
步驟2:yum clean all 清空本地的依賴緩存
步驟3:yum makecache將依賴緩存下載到本地
(3)恩脂、配置yum本地源
如果你現(xiàn)在待得是軍工等企業(yè)的話,是不能夠連接外網(wǎng)的趣斤,針對(duì)這種情況我們可以使用本地源
卸載光盤之后就不能安裝了