Linux
Linux可以做什么
-
個(gè)人桌面系統(tǒng)
- 管理桌面
- 聽音樂,看視頻
- 使用文字處理嘀趟,電子表格等文件
- 使用網(wǎng)頁,發(fā)送電子郵件
- 網(wǎng)絡(luò)聊天
- 玩游戲
-
系統(tǒng)服務(wù)器
- 連接Internrt網(wǎng)絡(luò)
- 使用Linux作為防火墻,路由器和DHCP服務(wù)器來保護(hù)和管理專用網(wǎng)絡(luò)
- 運(yùn)行WEB服務(wù)器(Apache,MySQL和PHP)
- 運(yùn)行郵件服務(wù)器(使用exim或其他郵件傳輸代理)
- 運(yùn)行郵件服務(wù)器(使用CUPS)
- 運(yùn)行文件服務(wù)器(使用FTP,samba,NFS)
嵌入式系統(tǒng)
- 嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)為基礎(chǔ)略板,并且硬件可裁剪,適用于對(duì)功能慈缔,可靠性蚯根,成本,體積,功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)颅拦。
Linux的特性
- 自由,免費(fèi)教藻,開源
- 無需不停的重新引導(dǎo)
- 在不干擾其他服務(wù)的情況下啟動(dòng)/停止服務(wù)
- 軟件的可移植性
- 可下載的應(yīng)用程序--綠色軟件
- 沒有隱藏在代碼或寄存器中的設(shè)置
- 成熟的桌面系統(tǒng):GNOME,KDE,X Windows
- 不受病毒的困擾
流行的Linux版本
- Red Hat
- Fedora Core
- SUSE
- Ubuntu
Linux的市場
- 汽車市場
- 辦公Office
- 醫(yī)療器械
- 飛機(jī)航空
- 智能家居
- 手機(jī)
- 路由器
- 辦公設(shè)備
Linux下的操作系統(tǒng)組件
-
Linux內(nèi)核
- 內(nèi)核是Linux系統(tǒng)的最底層距帅,提供了系統(tǒng)的核心功能,并允許進(jìn)程以一種有序的方式訪問硬件
Shell
文件系統(tǒng)
實(shí)用程序
- LINUX啟動(dòng)過程
- 設(shè)備加電————BIOS自檢————Grub/Lilo引導(dǎo)啟動(dòng)————裝載Linux內(nèi)核————系統(tǒng)初始化————用戶登錄
- 系統(tǒng)初始化:內(nèi)核的初始化將啟動(dòng)系統(tǒng)進(jìn)程和腳本括堤,INIT進(jìn)程是系統(tǒng)開始的第一個(gè)工作碌秸,他是其他所有進(jìn)程的父進(jìn)程,并一直處于運(yùn)行狀態(tài)悄窃。使用top命令查看進(jìn)程讥电,可以發(fā)現(xiàn)init進(jìn)程的id號(hào)永遠(yuǎn)是第一個(gè)。
- Linux文件系統(tǒng)類型
- EXT2和EXT3都是操作系統(tǒng)默認(rèn)使用的文件系統(tǒng)類型轧抗,EXT3屬于日志文件系統(tǒng)恩敌,是EXT2文件系統(tǒng)的升級(jí)版,EXT4是EXT3的升級(jí)版
- swap類型的文件系統(tǒng)在Linux系統(tǒng)的安裝系統(tǒng)横媚。
- Linux的目錄結(jié)構(gòu)
- Linux目錄使用樹形目錄結(jié)構(gòu)纠炮,在整個(gè)系統(tǒng)中只存在一個(gè)根目錄
- /bin:存儲(chǔ)用戶命令,/usr/bin/存放用戶命令灯蝴。
- /boot:Linux的內(nèi)核及引導(dǎo)系統(tǒng)程序所需要的文件
- /home:如果建立一個(gè)用戶“XX”,那么在home下會(huì)出現(xiàn)一個(gè)對(duì)應(yīng)的/home/XX路徑恢口,作為用戶的主目錄。
- /root:根用戶(超級(jí)用戶的主目錄)
- /dev:儲(chǔ)存設(shè)備文件
- /mnt:系統(tǒng)引導(dǎo)后被掛載的文件系統(tǒng)的掛載點(diǎn)
- /usr:系統(tǒng)中占用硬盤空間最大的目錄穷躁,很多程序與文件都存放在該目錄下
- /tmp:用戶程序的臨時(shí)目錄耕肩。
- /:根目錄
- /etc:系統(tǒng)相關(guān)配置的文件
- /lib:共享庫目錄
Linux操作:
-
打開終端
- ctrl+alt+t
- 點(diǎn)擊左上角的搜索按鈕,輸入terminal问潭,出來一個(gè)終端選項(xiàng)
注意:點(diǎn)擊左邊圖表終端猿诸,將終端鎖定在桌面
-
關(guān)閉終端
- exit/logout
-
關(guān)機(jī)
- 右上角
- 在終端下怎么關(guān)機(jī)
- sudo shutdown -h now
- sudo init 0
-
怎么獲取超級(jí)管理員權(quán)限
- su+一個(gè)數(shù):
- 如果認(rèn)證失敗
- sudo passwd進(jìn)行修改超級(jí)用戶管理員權(quán)限的密碼
- 從超級(jí)用戶--普通用戶exit
- su+一個(gè)數(shù):
-
修改登錄/用戶密碼
- sudo passwd XXX用戶
-
shell基本命令
- pwd:顯示當(dāng)前工作路徑
- ls:list顯示當(dāng)前工作路徑下的目錄或文件
- ls -l:顯示當(dāng)前目錄下所有文件并且告知文件的相關(guān)屬性。-l 加文件名睦授。
- ls -a:顯示當(dāng)前目錄下所有文件(包括隱藏文件:點(diǎn)開頭)
- ls -al:上兩種操作集合两芳。
- ls 具體路徑:顯示具體目錄下的子文件或者子目錄。
- 清屏
- ctrl + l
- clear
- 切換目錄:
- cd:change directory:改變當(dāng)前的工作路徑
- cd +具體路徑:切換到具體路徑下面
- cd :切換到用戶主目錄下面
- cd .:代表當(dāng)前路徑
- cd ..:代表當(dāng)前目錄的上級(jí)目錄
- cd :代表用戶主目錄/home/xx用戶
- cd -:代表回到上一次操作的目錄
- cd Tab:補(bǔ)全當(dāng)前系統(tǒng)下已有的文件名去枷,補(bǔ)全文件名
-
新建目錄
- mkdir:makedirectory:創(chuàng)建目錄
- mkdir+文件名:在當(dāng)前工作路徑下進(jìn)行創(chuàng)建目錄文件
- mkdir -p 1010/1009:創(chuàng)建1010的同時(shí)創(chuàng)建1009(遞歸創(chuàng)建)
- 刪除目錄:
- rmdir:remove directory:刪除目錄怖辆。
- rmdir+目錄名:刪除空目錄,不能刪除非空目錄删顶。
- rm -r +目錄名:刪除非空目錄
- touch:創(chuàng)建普通文件
- touch+文件名:在當(dāng)前目錄下創(chuàng)建普通文件
- 刪除文件:
- rm+文件名:在當(dāng)前目錄下刪除對(duì)應(yīng)的文件
- 拷貝文件
- cp 要拷貝的文件 拷貝去的目錄
- 移動(dòng)或是重命名
- mv:move移動(dòng)文件
- mv 要移動(dòng)的文件 目標(biāo)文件夾
- mv 要修改的文件 新的文件名
- 查看文件卻不打開文件
- cat 文件名
- 文件權(quán)限的修改:
- //- rw- r-- r--
- 第一個(gè)字母決定文件是什么文件
- -代表是普通文件
- d代表是目錄文件
- 第2到第4個(gè)字母竖螃,決定文件屬主用戶對(duì)齊文件執(zhí)行的權(quán)限r(nóng)wx;r:可讀逗余,w:可寫特咆,x:可執(zhí)行。
- 第5到第七個(gè),決定于屬主用戶同組的其他用戶執(zhí)行的權(quán)限
- 最后幾個(gè)決定與他不同組的其他用戶執(zhí)行的權(quán)限腻格。
-chmod的使用- Chmod 744 1.sh
- chmod u+x 1.sh u+x1.sh——————u:user代表屬主用戶画拾,g:group代表同組其他用戶,o:other不同組的用戶菜职。a:代表所有用戶青抛。‘+’代表加某個(gè)權(quán)限酬核,‘-’代表減某個(gè)權(quán)限蜜另。
- chmod u+x,g+w嫡意,o+x 1.sh
-
shell操作
-
安裝包
- sudo apt-get install
-
vi
vi是一個(gè)文本編輯器
vim是vi的升級(jí)版
sudo apt-get install vim
-
vim的使用
- 打開文件 vim 1.sh
- 插入數(shù)據(jù) 按下i鍵举瑰,等待左下角出現(xiàn)Insert,開始寫數(shù)據(jù)
- 保存:按下ESC進(jìn)入非可編輯模式輸入w:保存蔬螟,q退出此迅,q!不保存退出促煮,wq邮屁!忽略前面內(nèi)容,wq:保存退出菠齿。
- vim的快捷鍵:
- dd刪除光標(biāo)所在的一行
- u撤銷上一次的操作
- yy復(fù)制一行p粘貼剛才那一行
- 數(shù)字+yy或dd復(fù)制刪除這么多行
- shift+v進(jìn)入可視化模式上下鍵選擇多行進(jìn)行刪除或復(fù)制
-
gedit
- gedit 是一個(gè)文本編輯器
-
vim 的基本配置
-
cd/etc/vim
sudo vim vimc
set mouse=a /設(shè)置鼠標(biāo)選中
set nu/行號(hào)
syntax on /語法高亮
set autoindent/自動(dòng)縮進(jìn)
set tabstop=4/設(shè)置tab寬度
-
-
shell腳本執(zhí)行
- chmod +x 1.sh
./1.sh
- sh 1.sh
注意:最好用第一種
-
:代表注釋單行
- shell腳本是一種弱類型語言佑吝,不需要指定數(shù)據(jù)類型。
- 如果shell腳本某一行出錯(cuò)绳匀,不會(huì)影響我整個(gè)程序的運(yùn)行芋忿。
-
標(biāo)識(shí)符的硬性規(guī)范:
- 不能由數(shù)字開頭
- 只能由字母,下劃線疾棵,數(shù)字構(gòu)成
- 不能與shell腳本的關(guān)鍵字相同戈钢,如 if,printf是尔,echo殉了,case等。
- 建議:
- 不準(zhǔn)用拼音拟枚,多查字典
- 建議使用駝峰命名規(guī)范numOfStudent
- 見名知義
-
變量
- 變量的定義
變量=值
- 如果變量沒有定義薪铜,那么這個(gè)變量默認(rèn)為空
注意點(diǎn):
1 變量一定以出來就要給他一個(gè)值,否則會(huì)語法錯(cuò)誤恩溅。
2 =左右兩邊不能由空格
3 如果右邊是字符串隔箍,用""栝起來-
變量的使用
以$符號(hào)開頭
變量的刪除
value=9 echo "$value" unset value echo "$value"
- unset:刪除變量,不要加$ - 刪除之后脚乡,默認(rèn)為空
- 只讀變量
- readonly value=7表明這個(gè)變量不能再被賦值
- readonly的變量修飾的變量不能被unset刪除蜒滩。
-
echo簡單用法
value="hello" echo "$value",'$value',$value echo "{$value}1"可輸出hello1
- echo:表示輸出命令,輸出echo后面的內(nèi)容,會(huì)自動(dòng)換行俯艰。
- echo后面加"",'',不加
- 'value',輸出$value
- 不加捡遍,降低程序的可讀性
- 加""能避免上面兩個(gè)缺點(diǎn)
-
shell轉(zhuǎn)義字符
- \n:代表換行
- \t:相當(dāng)于敲了tab的寬度
- \c:關(guān)閉echo命令本身換行的功能
- 如果是./XX.sh運(yùn)行shell腳本,必須開啟轉(zhuǎn)義
value="hello" echo "$value\n"是不會(huì)換行的 開啟轉(zhuǎn)義字符對(duì)特殊字符的處理 echo -e "${value}\n"
- 如果是sh XX蟆炊。sh運(yùn)行shell腳本稽莉,必須開啟轉(zhuǎn)義
value="hello" echo -e "${value}\n"
字符串相關(guān)處理
value="hello" lengh=${#value} echo "${lengh}"
- 字符串拼接
value="hello" value1="world" value2="${value} ${value1}" echo "${value2}"
- 字符串裁剪
value="hello world" value1="${value:6:5}"(:6代表字符串從0開始數(shù)到了第6位開始裁,:5為截取的長度)
- printf
- %s:是一個(gè)占位符涩搓,嚴(yán)格意義上是輸出字符串類型的,但是在shell腳本里任何類型都能輸出。
- %f:也是一個(gè)占位符劈猪,如果是%f昧甘,后面必須是小數(shù)類型的占位。
- %.3f代表小數(shù)點(diǎn)后面保存3位
- %6.3符,6代表整個(gè)數(shù)據(jù)所占寬度為6個(gè)字符战得,如果不夠充边,左邊用空格補(bǔ)全。
- %m.nf常侦,如果m<n+1+小數(shù)點(diǎn)前面的數(shù)字個(gè)數(shù)浇冰,m無效。反之有效聋亡。
- %-m.nf:左對(duì)齊肘习。
- %d:也是一個(gè)占位符,如果是%d坡倔,后面必須是整數(shù)類型的占位漂佩。
- %c:沒錯(cuò),還是一個(gè)占位符罪塔,后面必須是字符類型投蝉。
- \n:轉(zhuǎn)義字符
value="hello" value1=999 printf "value=%s\n" "${value}"http://輸出一行 printf "value=%s\nvalue1=%d" "${value}" "${value1}"http://輸出多個(gè)變量的值 用法:printf是輸出""里面的內(nèi)容
- read使用
printf "請(qǐng)輸入一個(gè)值:" read value printf "這個(gè)數(shù)為%s\n" "${value}"
此處已經(jīng)有點(diǎn)亂,和C語言差別好多
- read 盡量不要同時(shí)輸入多個(gè)值:如——read value value1
- 運(yùn)算符的使用+ — * /
expr是計(jì)算整數(shù)類型行的數(shù)據(jù)
運(yùn)算符左右都要有空格
``和$()是取結(jié)果集
注意*必須要通過\轉(zhuǎn)義,不然會(huì)出錯(cuò)
``與$()不但可以取整數(shù)運(yùn)算的結(jié)果征堪,還可以取shell命令的結(jié)果集瘩缆,比如:result=
ls
或者$(ls)result='expr num1 % num2'=num1/num2商...余數(shù)
num=1 num1=2 num2=`expr $num + $num1` //num2=`expr $num \* ¥num1` echo "${num2}"
- let關(guān)鍵字
num1=1 num2=2 let num3=num1+num2 echo "${num3}"
- 可以用在 + - * / % ++ --
- ++ --(都只能用在let里,不能在expr里使用)
- 后綴++
num1=1 let num2=num1++ printf "num1=%s\n" "${num1}" printf "num2=%s\n" "${num2}"http://num2=1,num=2
- 前綴++
num1=1 let num2=++num1 printf "num1=%s\n" "${num1}" printf "num2=%s\n" "${num2}"http://num2=2,num=2
- 后綴--
num1=1 let num2=num-- printf "num1=%s\n" "${num1}" printf "num2=%s\n" "${num2}"http://num2=1,num=0
- 前綴 --
num1=1 let num2=--num printf "num1=%s\n" "${num1}" printf "num2=%s\n" "${num2}"http://num2=0,num=0
- +=
num1=1 let num2+=num1 printf "num2=%s\n" "${num2}"http://num2=3
- 整數(shù)之間的關(guān)系運(yùn)算符
- \ > \ < \ >= \ <= != ==
- -gt -ge -lt -le -eq -nq
- 在關(guān)系運(yùn)算符中佃蚜,運(yùn)算結(jié)果是一個(gè)邏輯庸娱,如果關(guān)系表達(dá)式成立,邏輯值為1爽锥,否則為0涌韩。
- 除!=氯夷,==都要用\轉(zhuǎn)義
- !=可以用\轉(zhuǎn)義也可以不用\轉(zhuǎn)義
- \ =,=,==,==(由編譯器決定臣樱,mac支持=,=)
num1=1 num2=2 num3=`expr $num1 \> $num2` echo "${num3}"
- 如果一個(gè)數(shù)大于5,然后輸出這個(gè)數(shù),否則如果這個(gè)數(shù)小于5雇毫,然后說明這個(gè)數(shù)小于5
if [] then 語句體 elif then 語句體 else 語句體 fi 注意點(diǎn)1. []左右兩邊都要有空格 2. 關(guān)系運(yùn)算符用-gt 等表示
printf "請(qǐng)輸入一個(gè)數(shù):" read num if [ $num -gt 5 ] then echo "${num}" elif [ $num -lt 5 ] then printf "%s小于5\n" "${num}" else printf "這個(gè)數(shù)等于5" fi
- 總結(jié):
- else可以沒有玄捕,如果有else,必須放在最后面棚放,else下面沒有then
- elif可以沒有枚粘,必須要放在if與else中間的位置
- if語句只能執(zhí)行一個(gè)分支
- if結(jié)束的標(biāo)志fi
-