shell學習-常用語句
為什麼使用shell
可以快速、簡單的完成程式設計,實現自己的想法。Shell非常適合編寫小的工具,因為小工具更強調的是易於配置、維護、移植等,而不是執行效率。
當自己的想法確實有必要進行優化,有必要讓它更容易修改以及修正設計目的時,可以將shell編寫的工具重新用C、C++/python等語言重新實現。
常見的shell有bash/csh/sh等
管道和重定向
ls -al > lsoutput.txt #將ls命令輸出的內容重定向到txt檔案 在>前加數字 0 1 2 分別代表輸入、標準輸出、錯誤輸出
引數2可以將錯誤輸出到檔案 而標準輸出的內容將顯示在螢幕上
>> #將輸出新增到檔案
丟棄不需要儲存的輸出的方法
Kill -l 1234 >/dev/null 2>&1 #將標準輸出與錯誤輸出都丟棄到系統垃圾箱
| 管道 用來連線程式 通過管道連線的程式可以同時執行,並自動協調資料流
1 Ps > psout.txt #輸出ps內容到psout.txt 2 Sort psout.txt > psout.out #對psout.txt內容進行排序 輸出到psout.out中
管道寫法
1 Ps | sort | pssort.out #將ps內容排序後輸出
自動搜尋資料夾下 所有檔案中包含的 某字串
More $(grep -l POSIX *) #在當前資料夾下的檔案中 搜尋POSIX字串 列印出包含字串的檔名
建立指令碼
1.在指令碼第一行新增 #!/bin/sh
2.把指令碼設定為可執行 chmod +x 指令碼檔名
3.設定指令碼的許可權
shell語法
1.變數 不需要提前申明,變數被用到時會自動建立,所有變數被看做字串來儲存 獲取變數內容用$字元,
若字串裡包含空格,則需要使用括號將字串括起來,此外,等號兩邊不能有空格
$() 或 $"" 用變數的值替換此處的內容 注意 $''不發生替換
2.環境變數&引數變數
$0 當前指令碼的檔名
$n 傳遞給指令碼的引數n,比如$1表示第一個引數
$# 傳遞給指令碼或函式的引數個數。
$*,$@ 傳遞給指令碼或函式的所有引數
$? 上個命令的退出狀態,或函式的返回值。
$$ 當前Shell指令碼所在的程式ID
$HOME 當前使用者家目錄
$PS1 給出當前使用者名稱、機器名和當前目錄名
$* 在一個變數中列出所有引數 引數間用IFS中第一個字元分隔開
$@ $*的變體 列出所有引數 與IFS無關 引數之間用空格分開
3.條件
test & [ 命令:shell布林判斷命令
檢查一個檔案是否存在
1 if test -f fred.c 2 then 3 … 4 fi 5 #或者 6 if [ -f fred.c ] 7 then 8 … 9 Fi
4.控制結構
條件判斷
1 if condition 2 then 3 statements 4 else if condition; then 5 statements 6 else 7 statements 8 fi
迴圈語句
1 for variable in values 2 do 3 statements 4 5 done 6 exit 0 7 8 9 while condition; do 10 statements 11 12 done 13 14 15 until condition 16 do 17 statements 18 19 done 20 21 #until與while的條件測試相反 22 23 case variable in 24 pattern [ | pattern] …) statements;; 25 pattern [ | pattern] …) statements;; 26 … 27 esac
命令列表
-
AND列表
執行一系列命令,只有在前邊所有命令都執行成功的情況下才執行後一條命令
statement1 && statement2 && statement3 && …
&&的作用是檢查上一條語句的返回值
AND列表是一系列命令作為一個整體,所有命令都執行,AND才算執行成功
-
OR列表
執行一系列命令直到一條命令成功為止
函式
function_name (){
statements
}
函式定義需要放到呼叫之前
當一個函式被呼叫時,指令碼程式的位置引數($*/$@/$#/$1/$2等)都會被替換為函式的引數,當函式執行完,這些引數將會恢復他們之前的值
相關文章
- Shell 指令碼語句指令碼
- SQL 語句學習SQL
- 學習Scala IF…ELSE 語句
- mySql常用語句MySql
- 常用MSSQL語句SQL
- sql常用語句SQL
- oracel常用語句
- Matlab常用語句Matlab
- ORACLE常用語句:Oracle
- 史上最全:PostgreSQL DBA常用SQL查詢語句(建議收藏學習)SQL
- Python學習筆記 - if語句Python筆記
- 學習MySQL的select語句MySql
- SQLite語句學習筆記SQLite筆記
- sql語句學習總結SQL
- 新學習的Java語句Java
- rust學習四、控制語句Rust
- 學習Rust 條件語句Rust
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- MongoDB中常用語句MongoDB
- Mysql日期常用語句MySql
- 【MySQL】常用拼接語句MySql
- mysql的常用語句MySql
- Python學習筆記3(條件語句+迴圈語句)Python筆記
- Python學習之路4-if語句Python
- 物聯網學習教程——if語句
- 簡單的SQL語句學習SQL
- 建模常用的pandas語句
- 常用sql進階語句SQL
- SQL 常用語句一覽SQL
- 『忘了再學』Shell流程控制 — 39、特殊流程控制語句
- shell程式設計之條件語句程式設計
- 物聯網學習教程——switch語句
- 物聯網學習教程——if語句2
- 資料庫學習(一)——select語句資料庫
- Android原生SQLite常用SQL語句AndroidSQLite
- mysql 常用sql語句 簡介MySql
- MySQL中常用的SQL語句MySql
- mongodb dba常用的nosql語句MongoDBSQL