歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 命令行的使用

命令行的使用

日期:2017/3/1 12:26:03   编辑:關於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