Makefile 將所需要的files include 進來
最上層的Makefile是svn.subMake/Makefile 的link
在svn.subMake/Makefile.kernel中定義了make kernel的各地target的prerequisites.在make過程中會把正確與錯誤資料通通寫入(overwrite)到同一個檔案$(LOG)
premake target是定義在Makefile.major中
在premake後真正要進入build linux kernel的是 _K_build,從這裡進入linux kernel的Makefile
$ find /home -name .bashrc > list.file 2>&1
是表示說把正確的訊息與錯誤的訊息寫到同一個檔案中, 也就是list.file這一個檔案啦~ 也就是說&1表示的就是前一個導向的檔案 因為,平常的訊息若沒有特別設定的話,是導到stdout,也因此,
在 Linux 中的檔案有三種時間戳記:
access time:檔案最後被讀取的時間。
modify time:檔案最後被修改的時間。
change time:檔案屬性(例如權限、擁有者等)最後被修改的時間。
我們可以使用 stat 指令來查看一個檔案的這三種時間戳記:
stat test.sh
當我們使用 touch 更改檔案(或目錄)的時間戳計時,預設會將三種時間戳記都設定為目前的時間:
# 更改時間戳記
touch test.sh
若只要更新 access time,可以加上 -a 參數:
# 更新 access time
touch -a test.sh
若只要更新 modify time,可以加上 -m 參數:
# 更新 modify time
touch -m test.sh
touch 最常被用來建立空的檔案,只要執行 touch 並指定檔案名稱,當指定的檔案不存在時,touch 就會自動建立一個空檔案,並將檔案的時間設定為目前的時間:
touch empty.txt 這樣就會建立一個檔名為 empty.txt 的空檔案。
$(foreach <var>,<list>,<text>)
這個函數的意思是,把參數<list>中的單詞逐一取出放到參數<var>所指定的變數中,然後再執行< text>所包含的表達式。每一次<text>會返回一個字元串,循環過程中,<text>的所返回的每個字元串會以空格 分隔,最後當整個循環結束時,<text>所返回的每個字元串所組成的整個字元串(以空格分隔)將會是foreach函數的返回值。
所以,<var>最好是一個變數名,<list>可以是一個表達式,而<text>中一般會使用<var>這個參數來依次枚舉<list>中的單詞。舉個例子:
names := a b c d
files := $(foreach n,$(names),$(n).o)
上面的例子中,$(name)中的單詞會被挨個取出,並存到變數「n」中,「$(n).o」每次根據「$(n)」計算出一個值,這些值以空格分隔,最後作為foreach函數的返回,所以,$(files)的值是「a.o b.o c.o d.o」。
當我們在shell下執行command 或 function 結束都會回傳一個值(我們將值區分為0跟非0,兩種狀況)
$ abc=123
$ echo $? #?問號也是一個變數 , 功能是觀看上一個指令的執行狀況,如正確回傳0,出錯回傳非0值
0 #因為$?前一個執行指令沒有出錯,故回傳值為0
$ 12abc=123 #變數前面不能為數字
-bash: 12abc=123: command not found #發生錯誤
$echo $?
127 #前一個指令執行出錯,故回傳值非0當要檢查系統上面是否存在的檔案或相關屬性時,test是一個方便的指令
$ A=123 #給變數A數值
$ test $A #查看變數A是否存在
$ echo $? #查看前一個指令是否出錯
0 #正常回傳0
運行腳本時傳遞給腳本(shell script file)的參數稱為命令行參數。命令行參數用 $n 表示,例如,$1 表示第一個參數,$2 表示第二個參數,依次類推。
$* 和 $@ 的區別
$* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。
但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。
標準輸入輸出和管線 (Standard Input Output and Pipes)
資料流重導向
Linux Kernel Makefiles
留言列表