国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

命令行的使用

2024-06-28 14:31:38
字體:
供稿:網(wǎng)友
  1. 命令行

(1) $符號在命令中表示引用變量,可以export設(shè)置變量。

例如查看環(huán)境變量命令:echo $PATH

此處就是通過$引用PATH變量(這是個全局變量)

例如:

d

??

當(dāng)我們直接敲一個命令的時候,bash就去PATH變量記載的路徑中尋找該程序。如果想運(yùn)行一個自己安裝的二進(jìn)制程序,則需要先加上該命令所在的路徑。

(2) man? 命令

Man命令時專門解釋其他命令的命令

??

2.?? 這樣使用shell

2.1?? 理解目錄結(jié)構(gòu)

  • 可以通過Ctrl? +? Alt? +? F1打開終端,Ctrl? +? Alt? +? F7再回到圖形界面

??

2.2?? 翻舊帳-history命令

如果想查看很久之前輸入過的命令,可以用該命令查看。默認(rèn)情況下顯示前1000條命令。也可以指定要顯示的命令條數(shù)

history N

注:history命令并不像ls命令那樣是一個獨(dú)立的命令,它是一個bash的關(guān)鍵字,也就時說history命令只在特定版本的bash上有用。

??

2.3 more or less——命令的分頁顯示

[more]

More是一個用來閱讀文本的命令,它有分頁的功能。他可以從文件或者獲取的數(shù)據(jù)流中先顯示一屏,等用戶按下回車鍵的時候再顯示下一屏,直到顯示完。當(dāng)然也可以不等顯示完直接按q推出。例如查看當(dāng)前運(yùn)行的所有進(jìn)程:

ps -A | more

注意:上述命令中有一個"|"符號。該符號稱為管道符,這個符號的意思就是把前一個命令的輸出內(nèi)容交給后一個命令,作為后一個命令的數(shù)據(jù)輸入。上述命令就是把ps -A輸出的那一堆字符交給more命令,然后more命令在處理之后按屏幕顯示給用戶。

[less]

less和more命令實現(xiàn)的功能基本一致,只不過less命令比more命令要強(qiáng)大一些。對于more命令之前看過的東西時不能回頭再去看得,只能往下翻頁去看,知道看完之后自動退出。而less命令可以用上下箭頭來翻閱,并且看完之后是不會自動推出的,一定要按q鍵退出。

注意:著兩個命令都可以直接查看文件

less /文件路徑/文件名

??

2.4 通配符

linux使用"*"來代表任意個字符,"?"代表任意一個字符。

??

3. shell編程

3.1 把命令行打包執(zhí)行

場景:

把一張SD卡插進(jìn)電腦,然后運(yùn)行mount命令進(jìn)行掛載:

sudo mout /dev/sdb1 /mnt/

然后把里面的所有照片拷貝進(jìn)來

cp /mnt/*.jpg /home/zhanglu/Picture

之后把這些照片壓縮放在同一個目錄備份:

tar -czvf /home/zhanglu/Backup/pic.tar.gz /mnt/*.jpg

備份完了之后把卡里的文件全部刪除:

rm /mnt/*.jpg

最后卸載這個SD卡:

sudo umount /mnt/

如上,每次在拷貝照片的時候都要輸入上述好幾條命令,比較麻煩,有沒有比較簡單的批處理方法呢?

【高級批處理——shell腳本】

要寫個shell腳本很簡單,找個編輯器把上述命令按照順序拷貝進(jìn)去保就OK。于是我們寫一個這樣的文件:

sudo mout /dev/sdb1 /mnt/

cp /mnt/*.jpg /home/zhanglu/Picture

tar -czvf /home/zhanglu/Backup/pic.tar.gz /mnt/*.jpg

rm /mnt/*.jpg

sudo umount /mnt/

然后保存起來隨便取個名字:dailybackup.sh。到目前為止這個腳本還不能運(yùn)行,因為我們還沒有賦予他可以運(yùn)行的權(quán)限,執(zhí)行下面命令賦予可運(yùn)行權(quán)限

chmod +x ./dailybackup.sh

這時候腳本就可以運(yùn)行了。

注意:shell腳本不要求特定的擴(kuò)展名,只要是文本文件并且擁有可執(zhí)行權(quán)限就OK.但是我們一般還是以sh結(jié)尾。

【靈活的shell腳本】

腳本是完成了,但是比較蛋疼的是我每天打包備份的文件名可能不一樣,但是腳本中的寫死了。這時候就需要修改一下腳本。

sudo mout /dev/sdb1 /mnt/

cp /mnt/*.jpg /home/zhanglu/Picture

tar -czvf /home/zhanglu/Backup/pic`date %Y%m%d`.tar.gz /mnt/*.jpg

rm /mnt/*.jpg

sudo umount /mnt/

這回腳本中使用了"`"符號,"`"符號的意思是:先執(zhí)行兩個"`"之間的命令,用執(zhí)行后的輸出代替兩個"`"之間的內(nèi)容哦能否,包括"`"本身。

注意:這里的"`"不是單引號" ' ",而是鍵盤上和"~"位于同一個鍵的反引號。

上述腳本中的兩個反引號的作用就是以年月日的格式打印當(dāng)前時間。

??

3.2 規(guī)范的shell腳本

(1)要有必要的注釋,shell腳本中使用"#"作為注釋的開頭

(2)指明使用的shell

有時候可以看到一個shell腳本的開頭是這樣的:

#! /bin/bash

"#!"放在一起并且還出現(xiàn)在腳本的第一行那就不是注釋啦!這一行的意思時運(yùn)行這個腳本所需要的shell。

我們linux系統(tǒng)中有很多的shell,比如bash,tcsh,ksh等。這些不同的shell他們的語法以及特性大多時不一樣的。因此在運(yùn)行腳本的時候需要指定用哪個shell。

當(dāng)然你也可以不加這一樣代碼,這時候你就要告訴系統(tǒng)你用的時那個shell,例如用bash運(yùn)行,需要下面的命令:

bash ./dailybackup.sh

??

3.3 使用函數(shù)

Shell腳本像大多數(shù)編程語言一樣,也支持函數(shù)。如果有一段代碼需要在腳本里面反復(fù)執(zhí)行多次,不必反復(fù)的寫多份,只需要將他們寫成一個函數(shù),需要的時候直接調(diào)用就行。比如自動備份的腳本:

#!/bin/bash

#自動備份腳本

dailybackup() {

udo mout /dev/sdb1 /mnt/

cp /mnt/*.jpg /home/zhanglu/Picture

tar -czvf /home/zhanglu/Backup/pic`date %Y%m%d`.tar.gz /mnt/*.jpg

rm /mnt/*.jpg

sudo umount /mnt/

}

dailybackup #調(diào)用函數(shù)的時候不許要寫小括號

??

3.4 在shell腳本中使用變量

(1)用戶變量——新手拈來

Shell中的變量比較隨意簡單,不必聲明,隨用隨寫,如下:

value = 28

這就獲得了一個內(nèi)容是28的變量,那么怎么引用這個變量呢?在引用變量的時候需要在變量名稱前面加上"$"符號,用來表示這是一個變量。例如:

#! /bin/bash

value = 28

echo value #輸出value

echo $ value ?#輸出28

所以在使用變量的時候前面一定要加上"$",否則就會被當(dāng)作一般的字符串處理的。

??

不過有時候變量的引用可能會緊跟著字符串,這時候需要進(jìn)行特殊處理:

#! /bin/bash

Word1 = hello

word2 = world

echo $word1BIG$word2

這時候輸出的是 helloworld,而不是helloBIGworld。因為系統(tǒng)把$word1BIG當(dāng)作一個變量的引用了,然而我們根本沒有這個變量,因此就會打印空白。如果想讓shell理解我們的意圖這時候我們可以加上大括號

echo ${word1}BIG${word2}

??

(2)變量類型——只有字符串

在shell腳本中沒有整型,浮點(diǎn)型等其他的數(shù)據(jù)類型,僅僅有字符串。如果要進(jìn)行數(shù)字的數(shù)學(xué)運(yùn)算需要使用exPR命令

num=1

num=`expr $num + 2`

??

(3)環(huán)境變量——在哪兒都能用

上面咱們定義的變量是用戶變量,除了自己定義的用戶變量之外還有一種變量就是系統(tǒng)變量。比如之前見到的PATH,和HOME變量。

所謂的環(huán)境變量有點(diǎn)類似C語言中的全局變量,就是在整個系統(tǒng)中都有效。用戶變量就是只在一個腳本中有效。在其他的腳本中無法訪問。而系統(tǒng)變量可以在任何地方訪問。想要定義一個全局變量也很簡單,只要在變量前面加上export:

提示:環(huán)境變量在當(dāng)前會話結(jié)束后失效

??

(4)特殊變量——一堆符號

除了用戶變量和系統(tǒng)變量外還有其他一些比較特殊的變量,這些特殊變量有以下特征:

  • 看著就比較特殊
  • 腳本執(zhí)行時自動被設(shè)定
  • 不可修改

特殊變量主要就下面這些

  • $n——這里n時一個0~9的數(shù)字。這個變量代表了執(zhí)行腳本所加的第n個參數(shù),n=0代表代表腳本本身的名稱
  • $*——這個變量代表執(zhí)行腳本所加的所有的參數(shù)(不包括腳本名稱本身)
  • $#——執(zhí)行腳本所加的變量個數(shù)
  • $$——該腳本的PID

??

3.5 shell中的條件判斷

(1)if和fi

??

??

??

??

??


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘肃省| 栾城县| 乌海市| 曲沃县| 道孚县| 普陀区| 徐汇区| 达拉特旗| 普兰店市| 湟中县| 万荣县| 无棣县| 手机| 惠来县| 兴文县| 长宁县| 济阳县| 阜康市| 吴忠市| 梁平县| 枣阳市| 垣曲县| 博乐市| 饶河县| 隆子县| 德清县| 石景山区| 阆中市| 响水县| 台前县| 广安市| 新化县| 灌云县| 读书| 临洮县| 勐海县| 湘阴县| 嘉荫县| 上林县| 新河县| 内丘县|