- 論壇徽章:
- 1
|
本帖最后由 hq8318 于 2011-05-31 22:49 編輯
先做幾題,其它再補(bǔ)上。
問題1:
用最簡(jiǎn)潔的命令列出當(dāng)前目錄下的一級(jí)子目錄,可以不包含隱藏目錄(目錄名以.開頭的目錄)
1) ls -l | grep ^d
2) echo */
3) ls -F | grep /
4)ls -l |grep ^d |awk '{printf $8"\t"}'
5)ls -l | awk '/^d/{print $8}'
大家給出了很多種做法,總結(jié)一下大概有以上5種,1~3會(huì)在目錄名后有個(gè)“/”;4~5長(zhǎng)些,無(wú)“/”,命令中'$8'看情況,有時(shí)是'$9'。
增加簡(jiǎn)略通用的一種:
6)ls -l | awk '/^d/{print $NF}'
問題2:
GNU sed 提供了-i選項(xiàng),為什么有人說sed -i 并不象 ed 一樣真正的編輯文件?(提示:觀察文件改變前后的inode)
根據(jù)測(cè)試,sed -i處理文件,inode有變化,而ed不會(huì),所以sed -i并不是編輯原文件的。
問題3:
用shell寫一個(gè)cgi腳本,提供一個(gè)簡(jiǎn)單的webmail介面,將本地的一個(gè)文件通過web服務(wù)器發(fā)送到指定的郵箱
問題4:
awk -F'' 與 awk -F '' 一樣嗎?
不一樣。awk -F''會(huì)被shell當(dāng)作awk -F,故報(bào)錯(cuò);awk -F '' 被認(rèn)為分隔符是'',作用成為:無(wú)分隔符,輸出第一個(gè)字符。
問題5:
這條語(yǔ)句有什么作用?
sed -if /script/scr.sedcc test.txt
“-if”與“-i -f”不同,“-if”是插入并備份。語(yǔ)句可分成兩部分,“sed -i /script/”匹配"script"字符串,插入后面的內(nèi)容;“scr.sedcc”s是替換命令,后面c是分隔符,相當(dāng)于s/r.sed//,“.”是元字符--除換行外任意字符。
整條語(yǔ)句相當(dāng)于“sed -if /script/s/r.sed// test.txt”,備份文件,加上f后綴:test.txtf;查找有"script"字符串的一行,將“r.sed”刪除。
問題6:
#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
是如何執(zhí)行的?與"#!/usr/local/bin/tclsh"相比,它有什么優(yōu)點(diǎn)?
第一行說明用sh解析執(zhí)行腳本;第二行是注釋,跳過;第三行指明用tclsh重新解析腳本:第二行末有“\”, 所以三行都是注釋,變成腳本后面的內(nèi)容由tclsh解析。
問題7:
#!/bin/sed -f" shebang 后可有其它字符嗎?為什么?
不可以,有其它字符,會(huì)當(dāng)成文件名。
問題8:
GNU awk的$1=$1到底有什么作用?$0=$0呢?
測(cè)試如下:(awk的分隔符缺省是空格)sh-3.00# v='1 2 3:a:b:c'
sh-3.00# echo $v|awk '{FS=":";print $1,NF}'
1 3
sh-3.00# echo $v|awk '{FS=":";$0=$0;print $1,NF}'
1 2 3 4
sh-3.00# echo $v|awk '{OFS=":";print $0,NF}'
1 2 3:a:b:c:3
sh-3.00# echo $v|awk '{OFS=":";$1=$1;print $0,NF}'
1:2:3:a:b:c:3 可以看到,
$1=$1使輸出分隔符OFS起作用,而NF不變;$0=$0則對(duì)分隔符FS起作用,并且NF改變。
問題9:
寫一個(gè)shell腳本,輸出CU現(xiàn)有的版面和相應(yīng)版主,并統(tǒng)計(jì)有多少個(gè)版面及多少個(gè)版主。
問題10:
人機(jī)五子棋。原始規(guī)則(無(wú)禁手),最好加上標(biāo)準(zhǔn)規(guī)則,三手交換(即黑下第二手之后白可以提出交換),五手兩打,黑三三禁手,黑四四禁手,黑長(zhǎng)連禁手(超過5個(gè)子相連),逢五無(wú)禁手。白無(wú)禁手,長(zhǎng)連也算勝。關(guān)鍵在于人機(jī)對(duì)下。 |
|