【linux】shell指令碼(一)
一、shell指令碼的建立和執行
linux操作如下:
$ touch test.sh //建立.sh檔案
$ vi test.sh //vi進入.sh檔案
鍵入i進入輸入模式, //一些vi或vim編輯器的操作在寫指令碼的時候會用到
第一步:插入 #!/bin/bash //使用指令碼
........ //指令碼內容
結束時,鍵入esc退出輸入模式,在冒號後輸入wq,w代表寫入檔案,q代表退出vi
$ chmod +x test.sh //改變檔案許可權
$ ./test.sh //執行.sh指令碼檔案
二、執行shell指令碼的三種方式
①輸入定向到shell指令碼
格式:$ bash < 指令碼名
程式碼:$ bash < test
②以指令碼名作為bash引數
格式:$ bash 指令碼名 [引數]
程式碼:$bash test ~/user
③改變許可權為可執行,然後直接執行
例子上面給了
三、命令歷史
作用用:便於呼叫、修改和快捷執行命令,把全部或部分先前命令作為新命令,予以快捷執行。
(1)顯示歷史命令
①格式:
語法格式是:$ history [option] [arg…]
常用的選項有:
-a 在歷史檔案中新增“新”歷史命令列。
-n 從歷史檔案中讀取尚未讀入的歷史命令列,新增到當前歷史清單中。
-r 讀取歷史檔案的內容,並把它作為當前的歷史命令。
-w 把當前的歷史寫到歷史檔案中,覆蓋原有內容。
-c 刪除歷史清單中所有的項。
(2)執行歷史命令
①格式:
格 式 | 意 義 |
!! | 重複上一條命令,也就是“!-1” |
!n | 重新執行第n條歷史命令 |
!-n | 重新執行倒數第n條歷史命令。!-1就等於! ! |
!string | 重新執行以字串string開頭的最近的歷史命令列。 |
!?string? | 重新執行最近的、包含字串string的那條歷史命令 |
!# | 到現在為止所輸入的整個命令列 |
(3)用環境變數來配置歷史命令環境
①使用者可以通過重新為環境變數賦值,改變存放歷史命令的檔案
$ HISTFILE="/home/mengqc/.myhistory"
②還可以重新設定能夠保留的命令個數
$ HISTSIZE=600
四、別名
作用:可以簡化輸入,方便使用者,減少出錯率
①定義別名
格式:alias [name[=value]]
程式碼
$ alias ll=‘ls -l’
$ my=/home/mengqc
(定義變數並賦值)
$ ll
$my
②取消別名
格式:unalias name
可以一次將所有的別名都從別名表中刪除,使用如下命令: unalias -a
五、shell特殊字元
(1)萬用字元
*(星號),它匹配任意字元的0次或多次出現
?(問號),它匹配任意一個字元
(2)引號
①單引號
由單引號括起來的字元都作為普通字元出現
③雙引號
由雙引號括起來的字元(除$、倒引號(`)和反斜線(\)外)均作為普通字元對待。
④倒引號
六、輸入輸出重定向
(1)輸入重定向符
命令 < 檔名
(2)輸出重定向符
命令 >檔名
(3)輸入輸出同時使用
輸入和輸出重新定向可以連在一起使用。例如:
$ wc -l < infile > outfile
功能是:
命令wc從檔案infile中輸入資訊,
按“行”統計後的結果送到另一個檔案outfile中,不在螢幕上顯示。
(4)輸出附加定向符“>>”
把命令的標準輸出附加到指定檔案的後面,原有內容不變
一般形式是:命令>>檔名
其他例子:
$gcc m1.c 2> errfile
功能是:
對C原始檔m1.c進行編譯,並把編譯過程中產生的錯誤資訊重定向到檔案errfile中,
其中數字2表示標準錯誤輸出的檔案描述字。