Shell學習筆記,shell指令碼學習指南
都是一些零碎的知識,遇到什麼寫什麼吧!
1、shell指令碼參數
C用(int *argc, char *argv[])處理參數,python sys.argv[0](指令碼名字)、sys.argv[1]、sys.argv[2]等表示各個參數,shell指令碼自己處理命令參數的方式如下:
(1) $# 傳遞到指令碼的參數個數,不包括指令碼命令本身。如判斷參數是否是2個:
#!/bin/bash if [ $# != 2 ]; then echo "Error! should need 2 parameters!" exit 1 fi
(2) $0 指令碼名字;$1,$2,......依次表示第一個參數,第二個參數,。。。。。。
(3) $* 以一個單字串顯示所有向指令碼傳遞的參數,此選參數可超過9個。如:
若指令碼參數為./test.sh arg1 arg2,則執行echo $*,結果為:"arg1 arg2"
(4) $$ 指令碼啟動並執行當前進程ID號。
(5) $! 後台啟動並執行最後一個進程的進程ID號。
(6) $@ 與$*相同,但是使用時加引號,並在引號中返回每個參數。如:
若指令碼參數為./test.sh arg1 arg2,則執行echo $*,結果為:"arg1""arg2" 與#*的差別,每個參數都是一個單獨的字串。
(7) $- 顯示shell使用的當前選項,與set命令功能相同。(搞不懂)
(8) $? 顯示最後命令的退出狀態。 0表示沒有錯誤,其他任何值表明有錯誤。如:
ls ./echo $?$?為0表示ls命令執行成功。
2、管道與重新導向
管道操作符”|“,輸出左邊命令傳出的正確輸出資訊,對與stderr資訊沒有直接處理能力。然後,傳遞給右邊的命令,作為stdin。
要求:
(1) 管道命令只處理前一個命令正確輸出,不處理錯誤輸出;
(2) 管道命令右邊命令,必須能夠接收標準輸入資料流命令才行。如cat test.txt | ls ,ls不支援stdin,左邊的資料將被丟棄。
$ cat display.sh | lscall.py libtest3.so libtest.so send_mail_text.py test3.cpp test4.cppdisplay.sh libtest4.so printfile.sh test2.cpp test3.so test.c
重新導向:
左邊命令應該有標準輸出 > 或者>> 右邊只能是檔案
左邊命令應該有標準輸入 < 或者<< 右邊只能是檔案
管道是觸發了兩個子進程執行"|"兩邊的程式,而重新導向是在一個進程內執行。
3、shell與export
首先要知道使用者登入linux系統之後,系統會啟動一個使用者shell。在該shell下執行shell指令碼,會建立一個子shell,子shell可以共用父shell的環境變數,父shell卻不能共用定義在子shell中的環境變數。子shell中定義的環境變數只在該子shell中有效。
在shell中執行程式時,shell會提供一組環境變數,export可新增、修改和刪除環境變數,供後續執行的程式使用。export設定的變數效用只在該次登入中有效。
文法:export [-fnp] [變數名稱]=[變數設定值]
參數:
-f代表[變數名稱中為]函數名稱。
-n刪除指定變數,實際上並未刪除,只是不會輸出到後續指令的執行環境中。
-p列出所有shell賦予程式的環境變數,預設參數。
如:
Test@ubuntu:~/code$ export //等同 export -pdeclare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_SESSION_ID="1"
</pre><pre name="code" class="plain">Test@ubuntu:~/code$ export mytest="Hi"
<pre name="code" class="plain">Test@ubuntu:~/code$ export declare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_SESSION_ID="1"declare -x mytest="Hi"
Test@ubuntu:~/code$ export -n mytestTest@ubuntu:~/code$ export declare -x HOME="/home/Test"declare -x LANG="zh_CN.UTF-8"declare -x LANGUAGE="zh_CN:en_AU:en_CA:en_GB:en_NZ:en_US:en"declare -x LC_ADDRESS="zh_CN.UTF-8"/*中間省略*/declare -x TERM="linux"declare -x USER="Test"declare -x XDG_RUNTIME_DIR="/run/user/1000"declare -x XDG_SESSION_ID="1"
因為export添加的環境變數是臨時有效,要想永久有效就得添加到檔案中:
(1)在/etc/profile檔案中添加變數,對所有使用者永久有效。例如:
#vi /etc/profileexport CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/libexport PATH="$PATH:/home/Test" //在原PATH變數上添加資料
<span>
(2)在使用者目錄下的.bash_profile(該檔案在不同的linux系統下,檔案名稱不同,有的是.profile,基本以profile結尾,可以用man bash查詢)檔案中添加環境變數,對該使用者永久有效。用法跟上面相同。 關於source,用法為:source FileName,作用是在當前bash環境下讀取並執行FileName中的命令,該FileName可以沒有執行許可權。注意該命令中的指令碼是在
當前bash環境下執行,沒有產生子shell,所以指令碼添加的變數也能被當前shell所共用,跟直接執行指令碼產生子shell不太一樣。如同樣的指令碼Test.sh:
#!/bin/bash export mytest="Hi"
用source Test.sh方式執行,mytest環境變數就可以添加到當前shell環境中,./Test.sh方式直接執行則不能。另外,source命令常用“.”來代替。source Test.sh與 . Test.sh等效。
:
對於學習筆記
如何寫語文筆記
如何寫語文筆記
俗話說,“心記不如帶墨”,“眼過千遍不如手寫一遍”。老師在課堂上把課講得再清楚,如果學生不記下來,過些時候也會忘的。記筆記是記憶的擴大和延伸,便於以後複習、尋找。越是高等的學習,越是以記為主。學生在課堂上邊聽課邊記筆記,能處於動腦、動手、動耳的最佳學習狀態,可抑制“思想溜號”,使注意力高度集中,提高效率,加深印象。記筆記還能提高書寫速度,節省時間。老師從小學高年級起就應該教學生寫語文筆記。學生從小就學會記語文筆記,能為今後的語文學習和其它各科的學習打下基礎,形成自學的能力,養成良好的學習習慣,不但當時受益,而且能終生受用。
怎樣記語文筆記呢?應該把學生的預習筆記、課堂筆記和部分語文作業合起來都寫在一個本上,統稱“語文筆記”。這樣可以化繁為簡,既減輕學生的學習負擔,又減輕老師的批改負擔;既有學生預習情況的檢查,又有課堂教學的反饋;還有基礎知識的驗收。老師批改語文筆記,可收到“一舉三得”的效果。
語文筆記本最好用十六開的“格備課筆記本”,在每頁的兩邊豎著畫二道直線,分成三份。左邊一份約有兩個字寬,記項目用,起目錄索引的作用;右邊的一份約有一寸寬,做備忘用,這部分供學生靈活運用,記些疑難問題、自己的評價、感想、學習方法等,這部分記的內容不要求一致;中間的一份最寬,最重要,學習的內容都記在這一部分。
準備工作做完以後,接下來就是如何記了。記語文筆記可以分做三個階段來進行:
1.課前預習記
學習新課以前學生要預習,把預習中學會的內容和自己不能解決的問題分別記在語文筆記的中間部分和右邊部分。通過查工具書能夠解決的字、詞等內容都在這時完成,這是語文筆記三個組成部分之一。
2.課堂聽課記
這是語文筆記中最重要的部分。在語文課上,學生要邊聽課邊記筆記,把新學的內容記在中間欄,把預習中理解不準確的現在得以更正的內容記在右邊備忘欄。這時有兩點要注意:一是不能老師講,學生聽,課後記或老師把要記的內容寫在黑板上學生抄;二是學生不能把老師說的話一字不落地都記下來,要在聽懂理解的基礎上,邊聽邊思維,總結出要點,概括成重點句子或重點詞語,然後再寫到語文筆記上,只要意思對怎麼寫都可以。剛著手訓練時,教師要把需要記的內容說慢點,長句子和重要之處重複一二遍。要記的關鍵詞、生辟詞、同音詞和易混、易錯的字,教師要板書,防止學生寫錯。
3.課後鞏固記
語文課上過以後,學生要整理筆記,課文中已經解決了的疑問要追記,落下部分要補上,心得體會最好是概括地記上,文章中的好詞好句也可以憑興趣摘抄。通過課後的整理和修改,學生對內容的理解加深了,認識得到升華了。課後要記的內容還包括該課書後面的部分練習題,如要抄寫的詞語,要解釋的字、詞,要理解的重點句子的含義,填括弧,造句等。這樣做,每課的內容都集中在語文筆記上,便於知識歸類,便於複習尋找;學生省得另外再拿本寫作業,可把語文筆記當做作業交;老師在批改語文筆記時,不但驗收了該課的基礎知識,還檢查了學生的預習情況和聽課情況。在訓練過程中,教師要以學生為主,徵求學生的意見,不斷改進做法,在形式和內容上都不強求一致,這樣可培養學生的創造性和求異思維能力。
語文課堂學習及指導策略
怎做學習筆記最有效
一、5R筆記法
5R筆記法,又叫做康乃筆記法,是用產生這種筆記法的大學校名命名的。這一方法幾乎適用於一切講授或閱讀課,特別是對於聽課筆記,5R筆記法應是最佳首選。這種方法是記與學,思考與運用相結合的有效方法。具體包括以下幾個步驟:
1、記錄(Record)。在聽講或閱讀過程中,在主欄(將筆記本的一頁分為左大右小兩部分,左側為主欄,右側為副欄)內盡量多記有意義的論據、概念等講課內容。
2、簡化(Reduce)。下課以後,儘可能及早將這些論據、概念簡明扼要地概括(簡化)在回憶欄,即副欄。
3、背誦(Recite)。把主欄遮住,只用回憶欄中的摘記提示,盡量完滿地敘述課堂上講過的內容。
4、思考(Reflect)。將自己的聽課隨感、意見、經驗體會之類的內容,與講課內容區分開,寫在卡片或筆記本的某一單獨部分,加上標題和索引,編製成提綱、摘要,分成類目。並隨時歸檔。
5、複習(Review)每周花十分鐘左右時間,快速複習筆記,主要是先看回憶欄,適當看主欄。
這種做筆記的方法初用時,可以以一科為例進行訓練。在這一科不斷熟練的基礎上,然後再用於其他科目。
二、符號記錄法
符號記錄法就是在課本、參考書原文的旁邊加上各種符號,如直線、雙線、黑點、圓圈、曲線、箭頭、紅線、藍線、三角、方框、著重號、驚歎號、問號等等,便於找出重點,加深印象,或提出質疑。什麼符號代表什麼意思,你可以自己掌握,但最好形成一套比較穩定的符號系統。這種方法比較適合於自學筆記和預習筆記。在操作時你應注意以下一些準則:
1、讀完後再做記號。在你還沒有把整個段落或有標題的部分讀完並停下來思考之前,不要在課本上做記號。在閱讀的時候,你要分清作者是在講一個新的概念,還是只是用不同的詞語說明同樣的概念,你只有等讀完這一段落或部分以後,才能回過頭來看出那些重複的內容。這樣做可使你不至於抓住那些一眼看上去彷彿很重要的東西。
2、要非常善於選擇。你不要一下子在很多項目底線或草草寫上許多項目,這樣會使記憶負擔過重,並迫使你同一時刻從幾個方面來思考問題,也加重你的思維負擔。你要少做些記號,但也不要少得使你在複習時又只好將整頁內容通讀一遍。
3、用自己的話。頁邊空白處簡短的筆記應該用你自己的話來寫,這是因為自己的話代表你自己的思想,以後這些話會成為這一頁所述概念的一些有力的提示。
4、簡潔。在一些雖簡短但是有意義的短語底線,而不要在完整的句子下面劃線,頁邊空白處的筆記要簡明扼要。它們會在你的記憶裡留下更為深刻的印象。在你背誦和複習的時候用起來更可得心應手。
5、迅速。你不可能一整天的時間都用來做記號。你先要閱讀,再回過頭來大略地複習一遍,並迅速做下記號,然後學習這一章的下一部分內容。
6、整齊。你作的符號要盡量整齊,而不要胡寫亂畫,否則會影響你以後的複習和應運。當你以後複習的時候,整齊的記號會鼓勵你不斷學習,並可以節省時間,因為整齊的記號便於你迅速回憶當初學習時的情景,能使你容易而清楚地領悟書中的思想。
對筆記進行整理、加工的方法是:
1、憶。課後即抓緊時間,趁熱打鐵,對照書本、筆記,及時回憶有關資訊。這是你整理筆記的重要前提。
2、補。課堂上所作的筆記,因為是跟著教師講課的速度進行的,而講課速度要比記錄速度快一些,所以你的筆記會出現缺漏、跳躍、省略等情況,在憶的基礎上,及時作修補,使筆記更完整。
3、改。仔細審閱你的課堂筆記,對錯字、錯句及其他不夠確切的地方進行修改。
4、編。用統一的序號,對筆記內容進行提綱式的、邏輯性的排列,註明號碼,梳理好整理筆記的先後順序。
5、分......餘下全文>>