歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

命令行的使用

命令行 (1) $符號在命令中表示引用變量,可以export設置變量。   例如查看環境變量命令:echo $PATH   此處就是通過$引用PATH變量(這是個全局變量)   例如:   d         當我們直接敲一個命令的時候,bash就去PATH變量記載的路徑中尋找該程序。如果想運行一個自己安裝的二進制程序,則需要先加上該命令所在的路徑。   (2) man  命令   Man命令時專門解釋其他命令的命令         2.   這樣使用shell   2.1   理解目錄結構   可以通過Ctrl  +  Alt  +  F1打開終端,Ctrl  +  Alt  +  F7再回到圖形界面       2.2   翻舊帳-history命令   如果想查看很久之前輸入過的命令,可以用該命令查看。默認情況下顯示前1000條命令。也可以指定要顯示的命令條數   history N   注:history命令並不像ls命令那樣是一個獨立的命令,它是一個bash的關鍵字,也就時說history命令只在特定版本的bash上有用。         2.3 more or less——命令的分頁顯示   [more]   More是一個用來閱讀文本的命令,它有分頁的功能。他可以從文件或者獲取的數據流中先顯示一屏,等用戶按下回車鍵的時候再顯示下一屏,直到顯示完。當然也可以不等顯示完直接按q推出。例如查看當前運行的所有進程:   ps -A | more   注意:上述命令中有一個"|"符號。該符號稱為管道符,這個符號的意思就是把前一個命令的輸出內容交給後一個命令,作為後一個命令的數據輸入。上述命令就是把ps -A輸出的那一堆字符交給more命令,然後more命令在處理之後按屏幕顯示給用戶。   [less]   less和more命令實現的功能基本一致,只不過less命令比more命令要強大一些。對於more命令之前看過的東西時不能回頭再去看得,只能往下翻頁去看,知道看完之後自動退出。而less命令可以用上下箭頭來翻閱,並且看完之後是不會自動推出的,一定要按q鍵退出。   注意:著兩個命令都可以直接查看文件   less /文件路徑/文件名         2.4 通配符   linux使用"*"來代表任意個字符,"?"代表任意一個字符。         3. shell編程   3.1 把命令行打包執行   場景:   把一張SD卡插進電腦,然後運行mount命令進行掛載:   sudo mout /dev/sdb1 /mnt/   然後把裡面的所有照片拷貝進來   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腳本很簡單,找個編輯器把上述命令按照順序拷貝進去保就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。到目前為止這個腳本還不能運行,因為我們還沒有賦予他可以運行的權限,執行下面命令賦予可運行權限:   chmod +x ./dailybackup.sh   這時候腳本就可以運行了。   注意:shell腳本不要求特定的擴展名,只要是文本文件並且擁有可執行權限就OK.但是我們一般還是以sh結尾。   【靈活的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/   這回腳本中使用了"`"符號,"`"符號的意思是:先執行兩個"`"之間的命令,用執行後的輸出代替兩個"`"之間的內容哦能否,包括"`"本身。   注意:這裡的"`"不是單引號" ' ",而是鍵盤上和"~"位於同一個鍵的反引號。   上述腳本中的兩個反引號的作用就是以年月日的格式打印當前時間。         3.2 規范的shell腳本   (1)要有必要的注釋,shell腳本中使用"#"作為注釋的開頭   (2)指明使用的shell   有時候可以看到一個shell腳本的開頭是這樣的:   #! /bin/bash   "#!"放在一起並且還出現在腳本的第一行那就不是注釋啦!這一行的意思時運行這個腳本所需要的shell。   我們linux系統中有很多的shell,比如bash,tcsh,ksh等。這些不同的shell他們的語法以及特性大多時不一樣的。因此在運行腳本的時候需要指定用哪個shell。   當然你也可以不加這一樣代碼,這時候你就要告訴系統你用的時那個shell,例如用bash運行,需要下面的命令:   bash ./dailybackup.sh         3.3 使用函數   Shell腳本像大多數編程語言一樣,也支持函數。如果有一段代碼需要在腳本裡面反復執行多次,不必反復的寫多份,只需要將他們寫成一個函數,需要的時候直接調用就行。比如自動備份的腳本:   #!/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 #調用函數的時候不許要寫小括號         3.4 在shell腳本中使用變量   (1)用戶變量——新手拈來   Shell中的變量比較隨意簡單,不必聲明,隨用隨寫,如下:   value = 28   這就獲得了一個內容是28的變量,那麼怎麼引用這個變量呢?在引用變量的時候需要在變量名稱前面加上"$"符號,用來表示這是一個變量。例如:   #! /bin/bash   value = 28   echo value #輸出value   echo $ value  #輸出28   所以在使用變量的時候前面一定要加上"$",否則就會被當作一般的字符串處理的。         不過有時候變量的引用可能會緊跟著字符串,這時候需要進行特殊處理:   #! /bin/bash   word1 = hello   word2 = world   echo word1BIGword2   這時候輸出的是 helloworld,而不是helloBIGworld。因為系統把$word1BIG當作一個變量的引用了,然而我們根本沒有這個變量,因此就會打印空白。如果想讓shell理解我們的意圖這時候我們可以加上大括號   echo word1BIG{word2}         (2)變量類型——只有字符串   在shell腳本中沒有整型,浮點型等其他的數據類型,僅僅有字符串。如果要進行數字的數學運算需要使用expr命令   num=1   num=`expr $num + 2`         (3)環境變量——在哪兒都能用   上面咱們定義的變量是用戶變量,除了自己定義的用戶變量之外還有一種變量就是系統變量。比如之前見到的PATH,和HOME變量。   所謂的環境變量有點類似C語言中的全局變量,就是在整個系統中都有效。用戶變量就是只在一個腳本中有效。在其他的腳本中無法訪問。而系統變量可以在任何地方訪問。想要定義一個全局變量也很簡單,只要在變量前面加上export:     提示:環境變量在當前會話結束後失效         (4)特殊變量——一堆符號   除了用戶變量和系統變量外還有其他一些比較特殊的變量,這些特殊變量有以下特征:   看著就比較特殊 腳本執行時自動被設定 不可修改 特殊變量主要就下面這些   $n——這裡n時一個0~9的數字。這個變量代表了執行腳本所加的第n個參數,n=0代表代表腳本本身的名稱 $*——這個變量代表執行腳本所加的所有的參數(不包括腳本名稱本身) $#——執行腳本所加的變量個數 $$——該腳本的PID       3.5 shell中的條件判斷   (1)if和fi      
Copyright © Linux教程網 All Rights Reserved