一、Linux發展史
1、Linux前身-Unix
1968年 Multics項目
MIT、Bell實驗室、美國通用電氣有限公司走到了一起,致力于開發Multics項目。到后期由于開發進度不是很好,MIT和Bell實驗室相繼離開這個項目的開發,最終導致項目擱淺。
1970年(Unix元年,時間戳) Unix誕生
當時在開發Multics項目的時候,實驗室中有一個開發成員開發了一款游戲(travel space:遨游太空),因為兩個實驗室相繼離開項目開發,導致這名開發人員沒法玩游戲,后來他提議組織人員重新在Multics項目之上重新的開發,也就出現了1970年的Unix。當時Unix操作系統是使用的匯編語言(機器語言)開發的。
1973年 用C語言重寫Unix
因為匯編語言有一個最大的局限性:對于計算機硬件過于依賴。導致移植性不好,所以后期在1973年使用了C語言對其進行重新開發。
1975年 Bell實驗室允許大學使用Unix。
1975年,bell實驗室允許大學使用Unix操作系統用于教學作用,而不允許用于商業用途。
2、Linux誕生
人物 Linus
Linux的開發作者,Linux之父,李納斯·托瓦茲。Linux誕生時是荷蘭在校大學生。
1991年 0.0.1版本
李納斯當時學校使用的就是Unix操作系統,然后其對系統的底層代碼進行了修改,放到了學校為學生開放的網站上,原先他把文件命名寫成了Linus’s Unix,后期網絡管理發現之后覺得這個名字不好,自己手動的將名字改成Linux。隨后其他同學下載之后發現這個版本還是挺好用的,隨后都把自己代碼貢獻給李納斯。
1992年 0.0.2版本
1994年 1.0版本
2003年 2.6版本
上述所提及的版本號并不是分支版本,而是指Linux的內核版本。
3、開源文化
Linux是開源的操作系統。所謂開源就是指開放源代碼。
人 物 Stallman 斯特曼,開源文化的倡導人。
1983年 GNU計劃
1985年 FSF基金會
1990年 Emacs、GCC(c語言的編譯器)、程序庫
1991年 Stallman去找Linus,商談讓Linux加入其開源計劃(GNU計劃)
1992年 GNU/Linux
4、Linux系統特點
開放性(開源)、多用戶、多任務、良好的用戶界面、優異的性能與穩定性
多用戶多任務:
單用戶:一個用戶,在登錄計算機(操作系統),只能允許同時登錄一個用戶;
單任務:一個任務,允許用戶同時進行的操作任務數量;
多用戶:多個用戶,在登錄計算機(操作系統),允許同時登錄多個用戶進行操作;
多任務:多個任務,允許用戶同時進行多個操作任務;
Windows屬于:單用戶、多任務。
Linux屬于:多用戶、多任務。
目錄結構:
Bin:全稱binary,含義是二進制。該目錄中存儲的都是一些二進制文件,文件都是可以被運行的。
Dev:該目錄中主要存放的是外接設備,例如盤、其他的光盤等。在其中的外接設備是不能直接被使用的,需要掛載(類似windows下的分配盤符)。
Etc:該目錄主要存儲一些配置文件。
Home:表示“家”,表示除了root用戶以外其他用戶的家目錄,類似于windows下的User/用戶目錄。
Proc:process,表示進程,該目錄中存儲的是Linux運行時候的進程。
Root:該目錄是root用戶自己的家目錄。
Sbin:全稱super binary,該目錄也是存儲一些可以被執行的二進制文件,但是必須得有super權限的用戶才能執行。
Tmp:表示“臨時”的,當系統運行時候產生的臨時文件會在這個目錄存著。
Usr:存放的是用戶自己安裝的軟件。類似于windows下的program files。
Var:存放的程序/系統的日志文件的目錄。
Mnt:當外接設備需要掛載的時候,就需要掛載到mnt目錄下。
Linux的基本指令
一、指令與選項
什么是Linux的指令?
指在Linux終端(命令行)中輸入的內容就稱之為指令。
一個完整的指令的標準格式:Linux通用的格式
指令主體(空格) [選項](空格) [操作對象]
一個指令可以包含多個選項
操作對象也可以是多個
例如:需要讓張三同學幫忙去樓下小賣鋪買一瓶農夫山泉水和清風餐巾紙,在這個指令中“買東西”是指令的主體,買的水和餐巾紙是操作的對象,農夫山泉、清風是操作的選項。
二、基礎指令(重點)
1、ls指令
含義:ls (list)
用法1:#ls
含義:列出當前工作目錄下的所有文件/文件夾的名稱
用法2:#ls 路徑
含義:列出指定路徑下的所有文件/文件夾的名稱
關于路徑(重要):
路徑可以分為兩種:相對路徑、絕對路徑。
相對路徑:相對首先得有一個參照物(一般就是當前的工作路徑);
相對路徑的寫法:在相對路徑中通常會用到2個符號“./”【表示當前目錄下】、“…/”【上一級目錄下】。
絕對路徑:絕對路徑不需要參照物,直接從根“/”開始尋找對應路徑;
用法3:#ls 選項 路徑
含義:在列出指定路徑下的文件/文件夾的名稱,并以指定的格式進行顯示。
常見的語法:
ls -l 路徑
ls -la 路徑
選項解釋:
-l:表示list,表示以詳細列表的形式進行展示
-a:表示顯示所有的文件/文件夾(包含了隱藏文件/文件夾)
上述列表中的第一列字符表示文檔的類型,其中“-”表示改行對應的文檔類型為文件,“d”表示文檔類型為文件夾。
在Linux中隱藏文檔一般都是以“.”開頭。
用法4:#ls -lh 路徑
含義:列出指定路徑下的所有文件/文件夾的名稱,以列表的形式并且在顯示文檔大小的時候以可讀性較高的形式顯示
參數含義:
2、pwd指令
用法:#pwd (print working directory,打印當前工作目錄)
3、cd指令
命令:#cd (change directory,改變目錄)
作用:用于切換當前的工作目錄的
語法:#cd 路徑
案例:當前在“/”下,需要使用絕對路徑切換到/usr/local。
案例:當前在/usr/local下,需要使用相對路徑切換目錄到home目錄下的Linux123用戶家目錄中去。
補充:
在Linux中有一個特殊的符號“~”,表示當前用戶的家目錄。
切換的方式:#cd ~
4、mkdir指令
指令:mkdir (make directory,創建目錄)
語法1:#mkdir 路徑 【路徑,可以是文件夾名稱也可以是包含名稱的一個完整路徑】
案例:在當前路徑下創建出目錄“yunweihenniux”
注意:ls列出的結果顏色說明,其中藍色的名稱表示文件夾,黑色的表示文件,綠色的其權限為擁有所有權限。
案例:在指定路徑下創建出一個文件夾“yunweihenniux”
語法2:#mkdir -p 路徑
含義:當一次性創建多層不存在的目錄的時候,添加-p參數,否則會報錯
語法3:#mkdir 路徑1 路徑2 路徑3 …. 【表示一次性創建多個目錄】
5、touch指令
指令:touch
作用:創建文件
語法:#touch 文件路徑 【路徑可以是直接的文件名也可以是路徑】
案例:使用touch來在當前路徑下創建一個文件,命名為Linux.txt
案例:使用touch來同時創建多個文件
案例:使用touch來在“Linux123”用戶的家目錄中創建文件,Linux.txt
6、cp指令
指令:cp (copy,復制)
作用:復制文件/文件夾到指定的位置
語法:#cp 被復制的文檔路徑 文檔被復制到的路徑
案例:使用cp命令來復制一個文件
注意:Linux在復制過程中是可以重新對新位置的文件進行重命名的,但是如果不是必須的需要,則建議保持前后名稱一致。
案例:使用cp命令來復制一個文件夾
注意:當使用cp命令進行文件夾復制操作的時候需要添加選項“-r”【-r表示遞歸復制】,否則目錄將被忽略
7、mv指令
指令:mv (move,移動,剪切)
作用:移動文檔到新的位置
語法:#mv 需要移動的文檔路徑 需要保存的位置路徑
確認:移動之后原始的文件還在不在原來的位置?原始文件是不在原始位置的
案例:使用mv命令移動一個文件
案例:使用mv命令移動一個文件夾
補充:在Linux中重命名的命令也是mv,語法和移動語法一樣。
8、rm指令
指令:rm (remove,移除、刪除)
作用:移除/刪除文檔
語法:#rm 選項 需要移除的文檔路徑
選項:
-f:force,強制刪除,不提示是否刪除
-r:表示遞歸
案例:刪除一個文件
在刪除的時候如果不帶選項,會提示是否刪除,如果需要確認則輸入“y/yes”,否則輸入“n/no”按下回車。
注意:如果在刪除的時候不想頻繁的確認,則可以在指令中添加選項“-f”,表示force(強制)。
案例:刪除一個文件夾
注意:刪除一個目錄的時候需要做遞歸刪除,并且一般也不需要進行刪除確認詢問,所以移除目錄的時候一般需要使用-rf選項。
案例:刪除多個文檔
案例:要刪除一個目錄下有公共特性的文檔,例如都以Linux開頭
其中稱之為通配符,意思表示任意的字符,Linux,則表示只要文件以Linux開頭,后續字符則不管。
9、vim指令
指令:vim (vim是一款文本編輯器)
語法:#vim 文件的路徑
作用:打開一個文件(可以不存在,也可以存在)
案例:使用vim來打開文件
退出打開的文件:在沒有按下其他命令的時候,按下shift+英文冒號,輸入q,按下回車即可
10、輸出重定向
一般命令的輸出都會顯示在終端中,有些時候需要將一些命令的執行結果想要保存到文件中進行后續的分析/統計,則這時候需要使用到的輸出重定向技術。
:覆蓋輸出,會覆蓋掉原先的文件內容
:追加輸出,不會覆蓋原始文件內容,會在原始內容末尾繼續添加
語法:#正常執行的指令 > / >> 文件的路徑
注意:文件可以不存在,不存在則新建
案例:使用覆蓋重定向,保存ls -la 的執行結果,保存到當前目錄下的ls.txt
案例:使用追加重定向,保存ls -la的執行結果到ls.txt中
11、cat指令
作用1:cat有直接打開一個文件的功能。
語法1:#cat 文件的路徑
作用2:cat還可以對文件進行合并
語法2:#cat 待合并的文件路徑1 待合并的文件路徑2 …. 文件路徑n > 合并之后的文件路徑
例如,合并3個文件,并存到一個文件中【配合輸出重定向使用】
三、進階指令(重點)
1、df指令
作用:查看磁盤的空間
語法:#df -h -h表示以可讀性較高的形式展示大小
2、free指令
作用:查看內存使用情況
語法:#free -m -m表示以mb為單位查看
剩余的真實可以用的內存為1665mb。
Swap:用于臨時內存,當系統真實內存不夠用的時候可以臨時使用磁盤空間來充當內存。
3、head指令
作用:查看一個文件的前n行,如果不指定n,則默認顯示前10行。
語法:#head -n 文件路徑 【n表示數字】
4、tail指令
作用1:查看一個文件的未n行,如果n不指定默認顯示后10行
語法:#tail -n 文件的路徑 n同樣表示數字
作用2:可以通過tail指令來查看一個文件的動態變化內容【變化的內容不能是用戶手動增加的】
語法:#tail -f 文件路徑
該命令一般用于查看系統的日志比較多。
5、less指令
作用:查看文件,以較少的內容進行輸出,按下輔助功能鍵(數字+回車、空格鍵+上下方向鍵)查看更多
語法:#less 需要查看的文件路徑
在退出的只需要按下q鍵即可。
6、wc指令
作用:統計文件內容信息(包含行數、單詞數、字節數)
語法:#wc -lwc 需要統計的文件路徑
-l:表示lines,行數
-w:表示words,單詞數 依照空格來判斷單詞數量
-c:表示bytes,字節數
7、date指令(重點)
作用:表示操作時間日期(讀取、設置)
語法1:#date 輸出的形式:2018年 3月 24日 星期六 15:54:28
語法2:#date +%F (等價于#date “+%Y-%m-%d” ) 輸出形式:2018-03-24
語法3:#date “+%F %T” 引號表示讓“年月日與時分秒”成為一個不可分割的整體
等價操作#date “+%Y-%m-%d %H:%M:%S”
輸出的形式:2018-03-24 16:01:00
語法4:獲取之前或者之后的某個時間(備份)
date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符號的可選值:+(之后) 或者 - (之前)
單位的可選值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的時分秒
%Y:表示四位年份
%m:表示兩位月份(帶前導0)
%d:表示日期(帶前導0)
%H:表示小時(帶前導0)
%M:表示分鐘(帶前導0)
%S:表示秒數(帶前導0)
8、cal指令
作用:用來操作日歷的
語法1:#cal 等價于 #cal -1 直接輸出當前月份的日歷
語法2:#cal -3 表示輸出上一個月+本月+下個月的日歷
語法3:#cal -y 年份 表示輸出某一個年份的日歷
9、clear/ctrl + L指令
作用:清除終端中已經存在的命令和結果(信息)。
語法:clear 或者快捷鍵:ctrl + L
需要注意的是,該命令并不是真的清除了之前的信息,而是把之前的信息的隱藏到了最上面,通過滾動條繼續查看以前的信息。
10、管道(重要)
管道符:|
作用:管道一般可以用于“過濾”,“特殊”,“擴展處理”。
語法:管道不能單獨使用,必須需要配合前面所講的一些指令來一起使用,其作用主要是輔助作用。
①過濾案例(100%使用):需要通過管道查詢出根目錄下包含“y”字母的文檔名稱。
ls / | grep y
針對上面這個命令說明:
①以管道作為分界線,前面的命令有個輸出,后面需要先輸入,然后再過濾,最后再輸出,通俗的講就是管道前面的輸出就是后面指令的輸入;
②grep指令:主要用于過濾
②特殊用法案例:通過管道的操作方法來實現less的等價效果(了解)
之前通過less查看一個文件,可以#less 路徑
現在通過管道還可以這么:#cat 路徑|less
③擴展處理:請使用學過的命令,來統計某個目錄下的文檔的總個數?
答:#ls / | wc -l
Linux的基本指令(2)
一、高級指令
1、hostname指令
作用:操作服務器的主機名(讀取、設置)
語法1:#hostname 含義:表示輸出完整的主機名
語法2:#hostname -f 含義:表示輸出當前主機名中的FQDN(全限定域名)
2、id指令
作用:查看一個用戶的一些基本信息(包含用戶id,用戶組id,附加組id…),該指令如果不指定用戶則默認當前用戶。
語法1:#id 默認顯示當前執行該命令的用戶的基本信息
語法2:#id 用戶名 顯示指定用戶的基本信息
驗證上述信息是否正確?
驗證用戶信息:通過文件/etc/passwd
驗證用戶組信息:通過文件/etc/group
3、whoami指令
作用:“我是誰?”顯示當前登錄的用戶名,一般用于shell腳本,用于獲取當前操作的用戶名方便記錄日志。
語法:#whoami
4、ps -ef指令(重點)
指令:ps
作用:主要是查看服務器的進程信息
選項含義:
-e:等價于“-A”,表示列出全部的進程
-f:顯示全部的列(顯示全字段)
執行結果:
列的含義:
UID:該進程執行的用戶id;
PID:進程id;
PPID:該進程的父級進程id,如果一個程序的父級進程找不到,該程序的進程稱之為僵尸進程(parent process ID);
C:Cpu的占用率,其形式是百分數;
STIME:進行的啟動時間;
TTY:終端設備,發起該進程的設備識別符號,如果顯示“?”則表示該進程并不是由終端設備發起;
TIME:進程的執行時間;
CMD:該進程的名稱或者對應的路徑;
案例:(100%使用的命令)在ps的結果中過濾出想要查看的進程狀態
ps -ef|grep “進程名稱”
再例如查看火狐瀏覽器的進程:
5、top指令(重點)
作用:查看服務器的進程占的資源(100%使用)
語法:
進入命令:#top (動態顯示)
退出命令:按下q鍵
輸出的結果:
表頭含義:
PID:進程id;
USER:該進程對應的用戶;
PR:優先級;
VIRT:虛擬內存;
RES:常駐內存;
SHR:共享內存;
計算一個進程實際使用的內存 = 常駐內存(RES)- 共享內存(SHR)
S:表示進程的狀態status(sleeping,其中S表示睡眠,R表示運行);
%CPU:表示CPU的占用百分比;
%MEM:表示內存的占用百分比;
TIME+:執行的時間;
COMMAND:進程的名稱或者路徑;
在運行top的時候,可以按下方便的快捷鍵:
M:表示將結果按照內存(MEM)從高到低進行降序排列;
P:表示將結果按照CPU使用率從高到低進行降序排列;
1:當服務器擁有多個cpu的時候可以使用“1”快捷鍵來切換是否展示顯示各個cpu的詳細信息;
6、du -sh指令
作用:查看目錄的真實大小
語法:#du -sh 目錄路徑
選項含義:
-s:summaries,只顯示匯總的大小
-h:表示以高可讀性的形式進行顯示
案例:統計“/root/yunweihenniux”目錄的實際大小
案例:統計“/etc”目錄實際大小
7、find指令
作用:用于查找文件(其參數有55個之多)
語法:#find 路徑范圍 選項 選項的值
選項:
-name:按照文檔名稱進行搜索(支持模糊搜索)
-type:按照文檔的類型進行搜索
文檔類型:“-”表示文件(在使用find的時候需要用f來替換),“d”表示文件夾
案例:使用find來搜索httpd.conf
find / -name httpd.conf
案例:搜索etc目錄下所有的conf后綴文件
find /etc -name *.conf
案例:使用find來搜索/etc/sane.d/目錄下所有的文件
find /etc/sane.d/ -type f
案例:使用find來搜索/etc/目錄下所有的文件夾
find /etc -type d
8、service指令(重點)
作用:用于控制一些軟件的服務啟動/停止/重啟
語法:#service 服務名 start/stop/restart
例如:需要啟動本機安裝的Apache(網站服務器軟件),其服務名httpd
service httpd start
通過ps命令來檢查httpd服務是否啟動:
9、kill指令(重點)
作用:表示殺死進程 (當遇到僵尸進程或者出于某些原因需要關閉進程的時候)
語法:#kill 進程PID (語法需要配合ps一起使用)
案例:需要kill掉Apache的進程
與kill命令作用相似但是比kill更加好用的殺死進程的命令:killall
語法:#killall 進程名稱
10、ifconfig指令(重點)
作用:用于操作網卡相關的指令。
簡單語法:#ifconfig (獲取網卡信息)
Eth0表示Linux中的一個網卡,eth0是其名稱。Lo(loop,本地回還網卡,其ip地址一般都是127.0.0.1)也是一個網卡名稱。
注意:inet addr就是網卡的ip地址。
11、reboot指令
作用:重新啟動計算機
語法1:#reboot 重啟
語法2:#reboot -w 模擬重啟,但是不重啟(只寫關機與開機的日志信息)
12、shutdown指令
作用:關機 (慎用)
語法1:#shutdown -h now “關機提示” 或者 #shutdown -h 15:25 “關機提示”
案例:設置Linux系統關機時間在12:00
如果想要取消關機計劃的話,則可以按照以下方式去嘗試:
①針對于centos7.x之前的版本:ctrl+c
②針對于centos7.x(包含)之后的版本:#shutdown -c
除了shutdown關機以外,還有以下幾個關機命令:
init 0
halt
poweroff
13、uptime指令
作用:輸出計算機的持續在線時間(計算機從開機到現在運行的時間)
語法:#uptime
14、uname指令
作用:獲取計算機操作系統相關信息
語法1:#uname 獲取操作系統的類型
語法2:#uname -a all,表示獲取全部的系統信息(類型、全部主機名、內核版本、發布時間、開源計劃)
15、netstat -tnlp指令
作用:查看網絡連接狀態
語法:#netstat -tnlp
選項說明:
-t:表示只列出tcp協議的連接;
-n:表示將地址從字母組合轉化成ip地址,將協議轉化成端口號來顯示;
-l:表示過濾出“state(狀態)”列中其值為LISTEN(監聽)的連接;
-p:表示顯示發起連接的進程pid和進程名稱;
16、man指令
作用:manual,手冊(包含了Linux中全部命令手冊,英文)
語法:#man 命令 (退出按下q鍵)
案例:通過man命令查詢cp指令的用法
man cp
二、練習題
1、如何通過命令行重啟linux操作系統? #reboot
2、如何在命令行中快速刪除光標前/后的內容? 前:ctrl + u 后:ctrl + k
3、如何刪除/tmp下所有A開頭的文件? #rm -f /tmp/A*
4、系統重要文件需要備份,如何把/etc/passwd備份到/tmp目錄下?
cp /etc/passwd /tmp/
5、如何查看系統最后創建的3個用戶?
tail -3 /etc/passwd
6、什么命令可以統計當前系統中一共有多少賬戶?
wc -l /etc/passwd #cat /etc/passwd|wc -l
7、如何創建/tmp/test.conf文件?
touch /tmp/test.conf
8、如何通過vim編輯打開/tmp/test.conf?
vim /tmp/test.conf
9、如何查看/etc/passwd的頭3行和尾3行?
head -3 /etc/passwd
tail -3 /etc/passwd
10、如何一次性創建目錄/text/1/2/3/4?
mkdir -p /text/1/2/3/4
11、如何最快的返回到當前賬戶的家目錄?
cd ~ #cd
12、如何查看/etc所占的磁盤空間?
du -sh /etc
13、如何刪除/tmp下所有的文件?
rm -rf /tmp/*
14、嘗試啟動Apache的服務,并且檢查是否啟動成功。
service httpd start
ps -ef|grep httpd
15、使用已學命令殺死Apache的進程。
killall httpd
編輯器之神——vim編輯器
一、vi介紹
Vi編輯器是所有Unix及Linux系統下標準的編輯器,類似于windows系統下的notepad(記事本)編輯器,由于在Unix及Linux系統的任何版本,Vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進一步了解它,Vi也是Linux中最基本的文本編輯器,學會它后,我們將在Linux的世界里暢行無阻,尤其是在終端中。
關于vim:
vi和vim都是Linux中的編輯器,不同的是,vim比較高級,可以視為vi的升級版本。vi使用于文本編輯,但是vim更適用于coding(寫代碼的)。
Vim重點是光標的移動,模式切換,刪除,查找,替換,復制,粘貼,撤銷命令的使用。
二、vim三種模式(重點)
Vim中存在三種模式(大眾的認知):命令模式、編輯模式(輸入模式)、末行模式(尾行模式)。
命令模式:在該模式下是不能對文件直接編輯,可以輸入快捷鍵進行一些操作(刪除行,復制行,移動光標,粘貼等等)【打開文件之后默認進入的模式】;
編輯模式:在該模式下可以對文件的內容進行編輯;
末行模式:可以在末行輸入命令來對文件進行操作(搜索、替換、保存、退出、撤銷、高亮等等);
Vim的打開文件的方式(4種,要求掌握的就前三種):
vim 文件路徑 作用:打開指定的文件
vim +數字 文件的路徑 作用:打開指定的文件,并且將光標移動到指定行
vim +/關鍵詞 文件的路徑 作用:打開指定的文件,并且高亮顯示關鍵詞
vim 文件路徑1 文件路徑2 文件路徑3 作用:同時打開多個文件
重點:先復制出一個/etc/passwd文件,復制當前家目錄下(千萬不要在etc下直接修改?。。。?/p>
后續一切vim命令都是基于/root/passwd文件進行操作。
退出方式:輸入:q按下回車即可
三、命令模式
注意:該模式是打開文件的第一個看到的模式(打開文件即可進入)
1、光標移動
①光標移動到行首
按鍵:shift + 6 或 ^(T字母上面的6,不要按小鍵盤的6)
②光標移動到行尾
按鍵:shift + 4 或 $(R字母的左上角的4,不是小鍵盤的4)
③光標移動到首行
按鍵:gg
④光標移動到末行
按鍵:G
⑤翻屏
向上翻屏:按鍵ctrl + b (before) 或 PgUp
向下翻屏:按鍵ctrl + f (after) 或 PgDn
2、復制操作
①復制光標所在行
按鍵:yy
粘貼:在想要粘貼的地方按下p鍵
②以光標所在行為準(包含當前行),向下復制指定的行數
按鍵:數字yy
③可視化復制
按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),然后按下↑↓←→方向鍵來選中需要復制的區塊,按下y鍵進行復制,最后按下p鍵粘貼
3、剪切/刪除
①剪切/刪除光標所在行
按鍵:dd (刪除之后下一行上移)
注意:dd嚴格意義上說是剪切命令,但是如果剪切了不粘貼就是刪除的效果。
②剪切/刪除光標所在行為準(包含當前行),向下刪除/剪切指定的行
按鍵:數字dd (刪除之后下一行上移)
③剪切/刪除光標所在的當前行之后的內容,但是刪除之后下一行不上移
按鍵:D (刪除之后當前行會變成空白行)
④可視化刪除
按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),上下左右移動,按下D表示刪除選中行,d表示刪選中塊
4、撤銷/恢復
撤銷:輸入:u (不屬于命令模式) 或者 u (undo)
恢復:ctrl + r 恢復(取消)之前的撤銷操作
5、擴展1:光標的快速移動
①快速將光標移動到指定的行
按鍵:數字G
②以當前光標為準向上/向下移動n行
按鍵:數字↑,數字↓
③以當前光標為準向左/向右移動n字符
按鍵:數字←,數字→
④末行模式下的快速移動方式:移動到指定的行
按鍵:輸入英文“:”,其后輸入行數數字,按下回車
四、模式間的切換(重點)
五、末行模式
進入方式:由命令模式進入,按下“:”或者“/(表示查找)”即可進入
退出方式:
a. 按下esc
b. 連按2次esc鍵
c. 刪除末行全部輸入字符
①保存操作(write)
輸入:“:w” 保存文件
輸入:“:w 路徑” 另存為
②退出(quit)
輸入:“:q” 退出文件
③保存并退出
輸入:“:wq” 保存并且退出
④強制 (!)
輸入:“:q!” 表示強制退出,剛才做的修改操作不做保存
⑤調用外部命令(了解)
輸入:“:!外部命令”
例如:
當外部命令執行結束之后按下任意鍵回到vim編輯器打開的內容
⑥搜索/查找
輸入:“/關鍵詞”
例如:我想在passwd文件中搜索“sbin”關鍵詞
在搜索結果中切換上/下一個結果:N/n (next)
如果需要取消高亮,則需要輸入:“:nohl”【no highlight】
⑦替換
??/搜索的關鍵詞/新的內容 替換光標所在行的第一處符合條件的內容
??/搜索的關鍵詞/新的內容/g 替換光標所在行的全部符合條件的內容
:%s/搜索的關鍵詞/新的內容 替換整個文檔中每行第一個符合條件的內容
:%s/搜索的關鍵詞/新的內容/g 替換整個文檔的符合條件的內容
%表示整個文件
g表示全局(global)
⑧顯示行號(臨時)
輸入:“:set nu”[number]
如果想取消顯示,則輸入:“:set nonu”
⑨擴展2:使用vim同時打開多個文件,在末行模式下進行切換文件
查看當前已經打開的文件名稱:“:files”
在%a的位置有2種顯示可能
%a:a=active,表示當前正在打開的文件;
:表示上一個打開的文件
切換文件的方式:
a. 如果需要指定切換文件的名稱,則可以輸入:“:open 已經打開的文件名”
b. 可以通過其他命令來切換上一個文件/下一個文件
輸入:“:bn”切換到下一個文件(back next)
輸入:“:bp”切換到上一個文件(back prev)
六、編輯模式
重點看前2個進入方式:i(insert)、a(after)。
退出方式:按下esc鍵
七、實用功能
1、代碼著色
案例:首先創建簡單的c語言程序
如何控制著色顯示與否?
顯示:“:syntax on” syn
tax:語法
關閉顯示:“:syntax off”
2、vim中計算器的使用
當在編輯文件的時候突然需要使用計算器去計算一些公式,則此時需要用計算器,但是需要退出,vim自身集成了一個簡易的計算器。
a. 進入編輯模式
b. 按下按鍵“ctrl + R”,然后輸入“=”,此時光標會變到最后一行
c. 輸入需要計算的內容,按下回車
八、擴展(3)
1、vim的配置(重點)
Vim是一款編輯器,編輯器也是有配置文件的。
Vim配置有三種情況:
a. 在文件打開的時候在末行模式下輸入的配置(臨時的)
b. 個人配置文件(~/.vimrc,如果沒有可以自行新建)
c. 全局配置文件(vim自帶,/etc/vimrc)
①新建好個人配置文件之后進入編輯
②在配置文件中進行配置
比如顯示行號:set nu
配置好之后vim打開文件就會永遠顯示行號
問題:如果某個配置項,在個人配置文件與全局配置文件產生沖突的時候應該以誰為準?
測試步驟:在兩個配置文件中針對同一個配置項設置不同的值
①先在全局的配置中設置不顯示行號,在個人的配置文件中設置顯示行號,觀察結果
最后顯示行號:說明以個人為準
②先在全局中配置顯示行號,在個人中設置不顯示行號,觀察結果
最后的顯示是不顯示行號,說明以個人為準
結論:如果針對同一個配置項,個人配置文件中存在,則以個人配置文件為準,如果個人配置文件中不存在這一項,則以全局配置文件為準。
2、異常退出
什么是異常退出:在編輯文件之后并沒有正常的去wq(保存退出),而是遇到突然關閉終端或者斷電的情況,則會顯示下面的效果,這個情況稱之為異常退出:
解決辦法:將交換文件(在編程過程中產生的臨時文件)刪除掉即可
rm -f .passwd.swp
3、別名機制(實用)
作用:相當于創建一些屬于自己的自定義命令
例如:在windows下有cls命令,在Linux下可能因為沒有這個命令而不習慣清屏。現在可以通過別名機制來解決這個問題,可以自己創造出cls命令
別名機制依靠一個別名映射文件:~/.bashrc
vim ~/.bashrc
注意:如果想新創造的命令生效,必須要重新登錄當前用戶。
4、退出方式
回顧:之前vim中退出編輯的文件可以使用“:q”或者“:wq”。
除了上面的這個語法之外,vim還支持另外一個保存退出方法“:x”。
說明:
①“:x”在文件沒有修改的情況下,表示直接退出,在文件修改的情況下表示保存并退出;
②如果文件沒有被修改,但是使用wq進行退出的話,則文件的修改時間會被更新;但是如果文件沒有被修改,使用x進行退出的話,則文件修改時間不會被更新的;主要是會混淆用戶對文件的修改時間的認定。
因此建議以后使用“:x”來進行對文件的保存退出。
但是:不要使用X,不要使用X,不要使用X,X表示對文件進行加密操作。
九、作業
1、參考作業文件“httpd-vhosts.conf”的描述;
2、使用別名機制,創建出一個快捷命令“kj”,要求實現按下“kj”回車之后能夠實現:
統計出Apache的服務進程數量。
Linux自有服務(1)
自有服務,即不需要用戶獨立去安裝的軟件的服務,而是當系統安裝好之后就可以直接使用的服務(內置)。
一、運行模式
運行模式也可以稱之為運行級別。
在linux中存在一個進程:init (initialize,初始化),進程id是1。
查看進程:#ps -ef|grep init
該進程存在一個對應的配置文件:inittab(系統運行級別配置文件,位置/etc/inittab)
文件的主要內容:
根據上述的描述,可以得知,Centos6.5中存在7中運行級別/模式。
0 — 表示關機級別(不要將默認的運行級別設置成這個值)
1 — 單用戶模式
2 — 多用戶模式,不帶NFS(Network File Syetem)
3 — 多用戶模式,完全的多用戶模式(不帶桌面的,純命令行模式)
4 — 沒有被使用的模式(被保留模式)
5 — X11,完整的圖形化界面模式
6 — 表示重啟級別(不要將默認的運行級別設置成這個值)
與該級別相關的幾個命令:
init 0 表示關機
init 3 表示切換到不帶桌面的模式
init 5 切換到圖形界面
init 6 重啟電腦
注意:init指令需要超級管理員的權限,普通用戶無法執行。
這些命令其實都是調用的init進程,將數字(運行級別)傳遞給進程,進程去讀配置文件執行對應的操作。
①切換到純命令行模式下(臨時切換,重啟之后又恢復)
init 3
切換之后需要輸入用戶名和密碼,在輸入密碼的時候沒有“*”提示輸入,只要自己確認輸入的密碼沒有錯誤,按下回車即可。
②回到桌面模式
init 5
③設置模式永久為命令行模式
將/etc/inittab文件中的initdefault值設置成3,然后重啟操作系統。
二、用戶與用戶組管理(重點)
Linux系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。
用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,并控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護。
每個用戶賬號都擁有一個惟一的用戶名和各自的密碼。
用戶在登錄時鍵入正確的用戶名和密碼后,就能夠進入系統和自己的主目錄。
要想實現用戶賬號的管理,要完成的工作主要有如下幾個方面:
用戶賬號的添加、刪除、修改以及用戶密碼的管理。
用戶組的管理。
注意三個文件:
/etc/passwd 存儲用戶的關鍵信息
/etc/group 存儲用戶組的關鍵信息
/etc/shadow 存儲用戶的密碼信息
1、用戶管理
①添加用戶
常用語法:#useradd 選項 用戶名
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統默認會從500之后按順序分配uid,如果不想使用系統分配的,可以通過該選項自定義【類似于騰訊QQ的自選靚號情況】
-c comment:添加注釋
案例:創建用戶zhangsan,不帶任何選項
驗證是否成功:
a. 驗證/etc/passwd的最后一行,查看是否有zhangsan的信息;
b. 驗證是否存在家目錄(在Centos下創建好用戶之后隨之產生一個同名家目錄);
擴展:認識passwd文件
用戶名:密碼:用戶ID:用戶組ID:注釋:家目錄:解釋器shell
用戶名:創建新用戶名稱,后期登錄的時候需要輸入;
密碼:此密碼位置一般情況都是“x”,表示密碼的占位;
用戶ID:用戶的識別符;
用戶組ID:該用戶所屬的主組ID;
注釋:解釋該用戶是做什么用的;
家目錄:用戶登錄進入系統之后默認的位置;
解釋器shell:等待用戶進入系統之后,用戶輸入指令之后,該解釋器會收集用戶輸入的指令,傳遞給內核處理;
注意:在不添加選項的時候,執行useradd之后會執行一系列的操作
a. 創建同名的家目錄;
b. 創建同名的用戶組;
案例:添加選項,創建用戶lisi,讓lisi屬于501主組,附加組500,自選靚號666。
注意:查看用戶的主組可以查看passwd文件,查看附加組可以查看group文件。
②修改用戶
常用語法:#usermod 選項 用戶名
Usermod:user modify,用戶修改
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統默認會從500之后按順序分配uid,如果不想使用系統分配的,可以通過該選項自定義【類似于騰訊QQ的自選靚號情況】
-l:修改用戶名
案例:修改zhangsan用戶主組為500,附加組改為501
usermod -g 500 -G 501 zhangsan
案例:修改zhangsan用戶用戶名,改為wangerma
usermod -l 新的用戶名 舊的用戶名
usermod -l wangerma zhangsan
③設置密碼
Linux不允許沒有密碼的用戶登錄到系統,因此前面創建的用戶目前都處于鎖定狀態,需要設置密碼之后才能登錄計算機。
常用語法:#passwd 用戶名
案例:設置wangerma用戶的密碼
在設置密碼的時候也是沒有任何輸入提示的,放心輸入,確保兩次輸入的密碼一致,按下回車即可。
也可以使用弱密碼,但是不建議,否則會看到以下的提示:
設置密碼之后shadow文件中的體現:能夠看出lisi用戶沒有密碼的。
在設置用戶密碼之后可以登錄帳號,例如此處需要登錄wangerma
切換用戶命令:#su [用戶名] (switch user)
如果用戶名不指定則表示切換到root用戶。
切換用戶需要注意的事項:
a. 從root往普通用戶切換不需要密碼,但是反之則需要root密碼;
b. 切換用戶之后前后的工作路徑是不變的;
c. 普通用戶沒有辦法訪問root用戶家目錄,但是反之則可以;
④刪除用戶
常用語法:#userdel 選項 用戶名
Userdel:user delete(用戶刪除)
常用選項:
-r:表示刪除用戶的同時,刪除其家目錄;
案例:刪除wangerma用戶
注意:已經登錄的wangerma用戶刪除的時候提示刪除失敗,但是沒有登錄的lisi用戶可以正常刪除。
解決辦法:簡單粗暴,kill對應用戶的全部進程
提示:所有跟用戶操作的命令(除passwd外)只有root超級管理員有權限執行。
2、用戶組管理
每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬于與它同名的用戶組,這個用戶組在創建用戶時同時創建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。
文件結構:
用戶組名:密碼:用戶組ID:組內用戶名
密碼:X表示占位符,雖然用戶組可以設置密碼,但是絕大部分的情況下不設置密碼;
組內用戶名:表示附加組是該組的用戶名稱;
①用戶組添加
常用語法:#groupadd 選項 用戶組名
常用選項:
-g:類似用戶添加里的“-u”,-g表示選擇自己設置一個自定義的用戶組ID數字,如果自己不指定,則默認從500之后遞增;
案例:使用groupadd指令創建一個新的用戶組,命名為Administrators
②用戶組編輯
常用語法:#groupmod 選項 用戶組名
常用選項:
-g:類似用戶修改里的“-u”,-g表示選擇自己設置一個自定義的用戶組ID數字
-n:類似于用戶修改“-l”,表示設置新的用戶組的名稱
案例:修改Administrators用戶組,將組ID從502改成520,將名稱改為admins
③用戶組刪除
常用語法:#groupdel 用戶組名
注意:當如果需要刪除一個組,但是這個組是某個用戶的主組時,則不允許刪除;如果確實需要刪除,則先從組內移出所有用戶。
三、網絡設置
首先知道網卡配置文件位置:/etc/sysconfig/network-scripts
在目錄中網卡的配置文件命名格式:ifcfg-網卡名稱
ONBOOT:是否開機啟動
BOOTPROTO:ip地址分配方式,DHCP表示動態主機分配協議
HWADDR:硬件地址,MAC地址