Linux(12)-命令行的使用,shell脚本
命令行的使用,shell腳本
- 1.終端shell,man
- 2.shell 編程
- 2.1 shell腳本
- 2.2 注釋
- 2.3 指明所用的shell
- 2.4 支持函數(shù)
- 2.5 使用變量
- 2.6 解析命令行參數(shù)
- 2.7 if, for, case, while
- 3.bash 發(fā)展歷史
Linux入門(mén)很簡(jiǎn)單-第六章筆記
1.終端shell,man
Linux 是一個(gè)內(nèi)核,內(nèi)核管硬件-顯卡、聲卡、內(nèi)存、硬盤(pán)、硬盤(pán)上的程序調(diào)度
Shell–將程序猿操作意圖轉(zhuǎn)述給內(nèi)核。其本質(zhì)是一個(gè)二進(jìn)制程序,路徑/bin/bash。
終端負(fù)責(zé)提供輸入命令的交互界面,去環(huán)境變量Path中喚醒對(duì)應(yīng)的命令程序,執(zhí)行具體的操作。
多種多樣的shell終端–bash,csh,ksh。
ubuntu 中默認(rèn)的shell 是bash。(在/etc/passwd文件中會(huì)表明默認(rèn)的shell終端是什么)
終端輸出
chenyingying@chenyingyingde-Air:~$ // 用戶名@計(jì)算機(jī)名:當(dāng)前目錄$ // $命令提示符,mac的命令提示符為%bash 執(zhí)行的操作:
環(huán)境變量PATH中記錄了bash 找程序的路徑,按照該路徑列表挨個(gè)去找命令程序。 如果報(bào) xxx:command not found, 就需要查看是環(huán)境變量中是否存在該命令的bin文件路徑。如果沒(méi)有請(qǐng)?jiān)O(shè)置相應(yīng)的路徑(第12條)
// 查看環(huán)境變量的內(nèi)容,以冒號(hào)分割各個(gè)路徑 echo $PATH /usr/local/sbin:/usr/local/bin:/Users/chenyingying/anaconda3/bin:/Users/chenyingying/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin提示:/usr/local目錄與/usr目錄結(jié)構(gòu)類似,都包含bin,sbin,lib,incud等目錄。一般來(lái)說(shuō)/usr中存放從軟件源中安裝的軟件,/usr/local中存放用戶用其他方式安裝的軟件。
/usr/sbin–useradd,gdm,smbd,nmbd 管理級(jí)的程序
/usr/bin – 有l(wèi)s命令程序
一般情況下:
要運(yùn)行一個(gè)二進(jìn)制程序,而且該程序不在PATH所包含的所有路徑中(新下載的安裝程序),在運(yùn)行的時(shí)候加上路徑即可,bash 就直接去寫(xiě)的路徑中找相應(yīng)的二進(jìn)制程序了。
./setup.sh // 直接運(yùn)行該二進(jìn)制程序man 命令解說(shuō)員, 查看命令的作用,按Q鍵推出解說(shuō)界面。
pwd- print woking directory --輸出當(dāng)前工作目錄
date–打印當(dāng)前的日期
Linux 軟件設(shè)計(jì)的理念–只做一個(gè)功能,但是要做到最好。通過(guò)多個(gè)程序組合可以實(shí)現(xiàn)任何功能。
bash 會(huì)將所有的通配符都展開(kāi)之后再傳遞給實(shí)際的命令。
2.shell 編程
2.1 shell腳本
把程序打包
chmod +x ./xxx.sh
./xxx.sh
注意:
腳本文件并不要求特定的擴(kuò)展名,只要是文本文件,具有可執(zhí)行的權(quán)限即可。一般習(xí)慣上將腳本文件擴(kuò)展名設(shè)為.sh
shell 腳本語(yǔ)句中,能夠先執(zhí)行兩個(gè)反引號(hào)(和波浪線處于同一個(gè)位置)之間的命令,然后用執(zhí)行的的結(jié)果替代反引號(hào)括住的內(nèi)容。結(jié)合data命令可以實(shí)現(xiàn)當(dāng)前日期文件名設(shè)置。
2.2 注釋
shell 腳本的注釋用#號(hào)
2.3 指明所用的shell
shell 腳本文件第一行說(shuō)明使用的shell (有點(diǎn)類似于解釋器的說(shuō)明)
#!/bin/bash
也可以直接在運(yùn)行腳本程序時(shí)顯式指定
bash xxx.sh
2.4 支持函數(shù)
有一段代碼需要在腳本里使用執(zhí)行多次,可以將其寫(xiě)成一個(gè)函數(shù)直接調(diào)用。
#!/bin/bash # shell 腳本函數(shù)使用dmeo # 定義函數(shù) fun1() { xxxxxxxxx xxxxxx } # 調(diào)用函數(shù),不需要寫(xiě)小括號(hào) fun12.5 使用變量
shell 中的變量類型只有字符串
#!/bin/bash value=128 echo value echo $value # 取變量的值,否則直接使用'value'字符串 player1=YOGA # 似乎空格符號(hào)都不能用,./shell_test.sh: line 5: YOGA: command not found player2=KEN echo ${player1}vs${player2}算術(shù)運(yùn)算
num=8 num=$num+1 echo $num num=8 num=`expr &num+1` echo $num輸出
8+1 ./shell_test.sh: line 12: num+1: command not found expr: syntax error環(huán)境變量–在整個(gè)系統(tǒng)運(yùn)行中都有效的變量.例如PATH,$HOME-當(dāng)前用戶的家目錄,$TZ-本系統(tǒng)所在的時(shí)區(qū),
可以通過(guò)export 讓一個(gè)用戶變量,變成全局變量(環(huán)境變量在當(dāng)前會(huì)話結(jié)束后失效)
2.6 解析命令行參數(shù)
參考
可以在執(zhí)行 Shell 腳本時(shí),向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為:$n。n 代表一個(gè)數(shù)字,1 為執(zhí)行腳本的第一個(gè)參數(shù),2 為執(zhí)行腳本的第二個(gè)參數(shù),以此類推。其中 $0 為執(zhí)行的文件名。
./extract_cyy.sh 123 # 在編寫(xiě)bash 腳本時(shí), 123 可以通過(guò)$1獲取
2.7 if, for, case, while
該有的它都有,不過(guò)我覺(jué)得…應(yīng)該不會(huì)大量用到shell編程吧
(此處略,被虐了再回來(lái)補(bǔ)好吧)
3.bash 發(fā)展歷史
Thomp Shell-Ken Thompson-Unix操作系統(tǒng)接口界面,用來(lái)與人類交流。
Bourne Shell-Steve Bourne-加入控制流的shell–成為后來(lái)的Unix 標(biāo)準(zhǔn)shell。
Bourne Again Shell-Brain Fox-就是后來(lái)的bash,完善了Bourne Shell。
總結(jié)
以上是生活随笔為你收集整理的Linux(12)-命令行的使用,shell脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++(12)--函数基础:按值传递、传
- 下一篇: linux常用解压和压缩文件的命令