shell學習-經常使用語句

爲何使用shell python

能夠快速、簡單的完成編程,實現本身的想法。Shell很是適合編寫小的工具,由於小工具更強調的是易於配置、維護、移植等,而不是執行效率。 shell

當本身的想法確實有必要進行優化,有必要讓它更容易修改以及修正設計目的時,能夠將shell編寫的工具從新用C、C++/python等語言從新實現。編程

常見的shell有bash/csh/sh等bash

管道和重定向 函數

ls -al > lsoutput.txt #將ls命令輸出的內容重定向到txt文件 在>前加數字 0 1 2 分別表明輸入、標準輸出、錯誤輸出 工具

參數2能夠將錯誤輸出到文件 而標準輸出的內容將顯示在屏幕上 測試

>> #將輸出添加到文件 優化

丟棄不須要保存的輸出的方法 spa

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等)都會被替換爲函數的參數,當函數執行完,這些參數將會恢復他們以前的值

相關文章
相關標籤/搜索