1。如何使用echo輸出一個字串str="-n". 由於-n是echo的一個參數,所以一般的方法echo "$str"是無法輸出的.
解決方案可以有:
echo x$str | sed 's/^x//'
echo -ne "$str\n"
echo -e "$str\n\c"
printf "%s\n" $str(這樣也可以)
printf格式化輸出
%s格式符表示輸出的是字串,後面對應的參數用字元數組或是字元指標
2。shell怎麼定義一個目錄的資料結構?(find . -type d -maxdepth 1)
Q:想統計一個目錄下各個檔案的基本資料,如檔案名稱、檔案目錄和大小等資訊,然後統一產生一個檔案,在shell指令碼大概應該如何處理?
A:用awk處理 ls -lh 出來的結果。
1)每行的最後一個欄位(一般是第9個欄位)為檔案名稱。
2)檔案目錄是指檔案所在的目錄,還是判斷一個檔案是不是目錄? 如果是前者,用 pwd 命令即可獲得。(下面的代碼根據這種情況來) 如果是後者,根據 ls -lh 結果每行第一個字元判斷,如果是d表示為目錄(directory)。
3)擷取檔案大小根據第5個欄位。 shell指令碼大致如下:#!/bin/shls -lh "$1" | awk 'BEGIN{printf("filename\tdirectory\tsize\n")}NR>1{printf("%s\t%s\t%s\n",$NF,'\"$1\"',$5)}' >file.txtexit 0 指令碼儲存為 statistic.sh運行如下命令即可:sh statistic.sh [要統計的目錄名]
結果儲存在目前的目錄下的 file.txt 中。
Q:檔案目錄指的是檔案所在的目錄。如何要繼續統計子目錄下的檔案的話,應該怎樣完善它?
A:目錄下還有子目錄,子目錄下還有子目錄,這個無窮盡了。直接:ls -lhR >file.txt這個命令就能列出包括子目錄內容在內的檔案清單。或者: tree -hD >file.txt產生樹狀結構的檔案目錄,包括每個檔案(目錄)的大小及最後修改時間。