大夏shell程式設計學習筆記(1)

2021-06-29 11:42:03 字數 1906 閱讀 9242

①linux標準檔案描述符

檔案描述符

縮寫描述

0stdin

標準輸入

1stdout

標準輸出

2stderr

標準錯誤

②重定向錯誤

$ ls -al test 2> test4   #僅重定向錯誤

$ ls -al test &> test4 #所有輸出都傳送到同乙個位置,預設錯誤訊息優先於標準輸出

$ exec 3>&- #關閉檔案描述

$ ls -al text 2> /dev/null

#禁止錯誤訊息而不儲存

③臨時檔案

$ mktemp testing.******

#在/tmp下建立乙個唯一的臨時檔案(返回的是檔名,用"-t"引數,返回的是完整路徑)

$ mktemp -d dir.******

#建立乙個零時目錄

④記錄訊息

$ tee filename #將來自stdin的資料同時發往stdout和filename檔案中 (用"-a"使其新增訊息而不是預設的覆蓋訊息)
①處理訊號

$ trap commands signals  #當收到signals時候,忽略這個訊號,並且執行commands

$ trap - signals #移除捕獲

②以後臺模式執行

在命令後面加乙個& , 即可使指令碼在後台執行。

$ nohup ./test &  #將test指令碼在後台執行,並且不輸出執行結構,結構存入nohup.out中
③作業控制

$ jobs -l #列出程序的pid和作業編號

#帶加號的作業是預設作業,減號的是處理完預設作業後即將成為預設的作業

$ bg 2

#以後臺模式重啟作業編號為2的作業

$ fg 2

#以前臺模式重啟作業編號為2的作業

④高階命令

排程優先順序是乙個整數值,從-20到+20(最低優先順序)。預設情況下,bash shell啟動所有的優先順序為0的程序。

$ nice -n 10 ./test #減少test指令碼執行的優先順序
linux系統提供了3種方式在預定時間執行指令碼:at命令(atd是以後臺模式執行),batch命令,cron命令。

$ at -f test 12:07

#讓test作業在12點07分的時候執行,-q可以指定優先順序字母(a到z,a是最高端的佇列)

$ atq #檢視排隊的作業

$ atrm 8

#移除作業編號為8的作業

$ batch -f test 12:07

#讓test最早執行時間為12點07分,當平均負載低於0.8才執行

cron**可以指定作業執行時間,尤其是很方便的設定作業定期的排程

min hour dayofmonth month dayofweek command

#可以用*表示每個的意思

$ 00

12 * * * if [ 'data + %d -d tomorrow' = 01 ] ; then ;command

#每個月的最後一天中午12點執行命令

$ crontab -l #檢視擁有的cron**

⑤啟動指令碼

linux在開啟系統時候,最先執行的是init程式,核心總向它分配pid 1,然後init程式讀取/etc/inittab檔案。linux系統通過rc指令碼確定以哪種執行級別啟動那些程式。rc指令碼確定當前系統的執行級別並在該執行級別上執行相應的指令碼。

大夏shell程式設計學習筆記(3)

建立選單指令碼的小技巧 要在echo命令中包含字元 例如製表符和換行符 必須使用 e選項。echo en將顯示該行,而不再行為新增換行符。在read命令中使用 n選項僅獲取乙個字元,這樣允許使用者輸入乙個數字而不必再按回車。簡單的例子 一下例子實現了乙個簡單的獲取linux系統管理資訊。funcat...

大夏shell程式設計學習筆記(5)

今天終於要開始學習我個人覺得很頭疼的一部分內容了,正規表示式在我看來永遠都是那些程式設計很厲害的高中能夠玩轉的,為了提高自己的逼格,我也不得不觸碰一下這個比較煩人的東西,也可能是我的數學思維能力比較弱的原因,每次一接觸到正規表示式就頭疼。我特意找了一本可以推薦給大家的參考書,自己也還在研習中,至於學...

shell程式設計學習筆記(1)

最近突然不忙了,想系統的學習一下shell程式設計。可以說對linux的熟悉離不開對shell的學習,而作為乙個好的系統管理員,不能不懂shell程式設計。shell程式設計不只是簡單的命令堆疊,它還提供了變數,控制結構 if for while 可以說它和python perl ruby等3大腳步...