複習專題 Shell筆記整理

2021-10-10 18:09:35 字數 3358 閱讀 4964

shell是乙個命令列直譯器,接收應用程式/使用者命令,然後呼叫作業系統核心

cat /etc/shells
sh -> bash

系統變數
$home、$pwd、$shell、$user等
自定義變數
(1)定義變數:變數=值 

(2)撤銷變數:unset 變數

(3)宣告靜態變數:readonly變數,注意:不能unset

特殊變數
$n :第n個變數,0為檔名,1開始計

$# :獲取所有輸入引數個數

$* $@ :代表命令列中所有的引數

$? :最後一次執行的命令的返回狀態,0為正常

基本語法
(1)「$((表示式))」或「$[表示式]」

(2)expr  + , - , \*,  /,  %    加,減,乘,除,取餘

[ condition ](注意condition前後要有空格)

1. 兩個整數之間比較

= 字串比較(注意:必須加空格,否則就是乙個非空字串,始終返回true 

例如:[ a = b ])

-lt 小於(less than)            -le 小於等於(less equal)

-eq 等於(equal)                -gt 大於(greater than)

-ge 大於等於(greater equal)    -ne 不等於(not equal)

2. 按照檔案許可權進行判斷

-r 有讀的許可權(read)            

-w 有寫的許可權(write)

-x 有執行的許可權(execute)

3. 按照檔案型別進行判斷

-f 檔案存在並且是乙個常規的檔案(file)

-e 檔案存在(existence)        

-d 檔案存在並是乙個目錄(directory)

5.1 if判斷
if [條件表示式]

then

程式elif [條件表示式]

then

程式else

程式fi

5.2 case語句
case $變數名 in 

"值1") 

如果變數的值等於值1,則執行程式1 

;; "值2") 

如果變數的值等於值2,則執行程式2 

;; …省略其他分支… 

*) 如果變數的值都不是以上的值,則執行此程式 

;; esac

5.3 for迴圈
for (( 初始值;迴圈控制條件;變數變化 )) 

do 程式 

done

for 變數 in 值1 值2 值3… 

do 程式 

done

5.4 while迴圈
while [ 條件判斷式 ] 

do 程式

done

read(選項)(引數)

選項:-p:指定讀取值時的提示符;

-t:指定讀取值時等待的時間(秒)。

引數    變數:指定讀取值的變數名

basename 獲取檔名
basename [string / pathname] [suffix]  (功能描述:basename命令會刪掉所有的字首包括最後乙個(『/』)字元,然後將字串顯示出來。

選項:suffix為字尾,如果suffix被指定了,basename會將pathname或string中的suffix去掉。

dirname 獲取檔案絕對路徑
dirname 檔案絕對路徑        (功能描述:從給定的包含絕對路徑的檔名中去除檔名(非目錄的部分),然後返回剩下的路徑(目錄的部分))
基本語法:
[ function ] funname[()]

funname

示例:
function sum()
8.1 cut
cut [選項引數]  filename

-f    列號,提取第幾列

-d    分隔符,按照指定分隔符分割列

8.2 sed

ed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」,接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。

基本語法

sed [選項引數]  『command』  filename

-e    直接在指令列模式上進行sed的動作編輯。

a     新增,a的後面可以接字串,在下一行出現

d    刪除

s    查詢並替換

示例

sed '2a mei nv' sed.txt

刪sed '/wo/d' sed.txt

改sed 's/wo/ni/g' sed.txt

sed -e '2d' -e 's/wo/ni/g' sed.txt

8.3 awk

乙個強大的文字分析工具,把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行分析處理。

awk [選項引數] 『pattern1  pattern2...』 filename

pattern:表示awk在資料中查詢的內容,就是匹配模式

action:在找到匹配內容時所執行的一系列命令

-f    指定輸入檔案折分隔符

-v    賦值乙個使用者定義變數

示例

```awk -f : 『begin ' at position 2: 7}̲ end』 sed.txt

awk內建變數

變數說明

filename

檔名nr

已讀的記錄數(行數)

nf瀏覽記錄的域的個數(切割後,列的個數)

awk 以空格為分割域時,是以單個或多個連續的空格為分隔符的;

cut則是以單個空格作為分隔符。

例如:awk -f " " 『』 cut.txt

8.4 sort

sort(選項)(引數)

-n    依照數值的大小排序

-r    以相反的順序來排序

-t    設定排序時所用的分隔字元

-k    指定需要排序的列

搜尋專題(複習)

bfs採用結構體寫的話怎麼剪枝都超時,採用int型的話可以過,沒弄懂 出了問題 ac include include include include using namespace std int visit 100005 int main if t 0 visit t 1 if t m visit...

專題整理 搜尋

include include include include include include define n 500050using namespace std int maxn,minn void read int p intmain printf d minn printf d maxn r...

shell 學習筆記整理(一)

shell指令碼地功能 使用者和核心連線的特殊程式。程式語言 編譯型和指令碼語言 script shell就是指令碼語言 shell指令碼的型別 1.非互動式指令碼 2.互動式指令碼 shell程式設計的基礎 1.文字編輯器 vi vim 當然,shell是純文字,可以使用任何文字編輯器 不要用wo...