linux shell写cgi,shell写cgi脚本
第29章 cgi腳本
本章包含內(nèi)容:
基本cgi腳本
使用服務(wù)器端內(nèi)嵌(Server Side Includes,SSI)
get方法
post方法
創(chuàng)建交互式腳本
能夠自動(dòng)重載web頁面得cgi腳本
cgi是一種規(guī)范,它規(guī)定了獲取信息得教本如何從服務(wù)器中取得信息或向服務(wù)器中寫入信息.這種腳本或cgi
教本可以用任何語言來實(shí)現(xiàn).最流行的是Perl語言,不過你將會(huì)發(fā)現(xiàn),也可以用普通的shell腳本來實(shí)現(xiàn).
所有得cgi腳本都應(yīng)當(dāng)位于web服務(wù)器的cgi-bin目錄中,不過在不同的服務(wù)器中該目錄會(huì)有所不通.可以通
過查看配置文件srm.conf中ScriptAlias一段來改變?cè)撃夸浀奈恢?并允許該服務(wù)器運(yùn)行cgi腳本.所有的教本
文件名都應(yīng)以.cgi做后綴.而其他web頁面都位于html貨htdocs目錄下,并帶有.html后綴.
29.1 cgi腳本實(shí)例:
$ vi firstpage.cgi
$!/bin/bash
# firstpage.cgi
echo "Content-type: text/html"
echo ""
echo ""
echo " THIS IS MY FIRST CGI PAGE"
echo ""
echo "STAND-BY TO STAND-TO!"
echo ""
第一行表示shell解釋器的路徑.第一個(gè)echo命令行告訴服務(wù)器這是一個(gè)MIME題頭,第二行echo 命令行用于
顯示一個(gè)空行.如果在MIME題頭后面沒有一個(gè)空行,cgi腳本的輸出將無法正確顯示.
29.2 顯示shell命令輸出
在腳本中加入一條shell命令,這樣就可以在瀏覽器中顯示該命令的輸出.
例如顯示當(dāng)前登陸得用戶數(shù),通過將who命令的輸出經(jīng)管道傳遞給wc命令就可以實(shí)現(xiàn).并顯示當(dāng)前日期.
$ vi pagetwo.cgi
#!/bin/bash
#pagetwo.cgi
#display a page using the output from a unix command
MYDATE=`date +%A" "%d" "%B" "%Y`
USERS=`who |wc -l`
echo "Content-type: text/html"
echo ""
echo ""
echo " THIS IS MY SECOND CGI PAGE"
echo ""
echo "$MYDATE"
echo "Total amount of users on to-day is :$USERS"
echo ""
if ["$USERS" -lt 10 ]; then
echo "It must be early or it is dinner time"
echo "Beacuse there ain's many users logged on"
fi
echo ""
echo ""
29.3 使用SSI
為了內(nèi)嵌cgi腳本,必須使用服務(wù)器端內(nèi)嵌(SSI),這樣,在顯示一個(gè)頁面時(shí),它將會(huì)把SSI命令替換為相應(yīng)命令
或腳本的輸出.
在apache上的配置為:
Addhandler server-passed.shtml
Addtype text/htm shtml
第30章 常用shell命令
1.basename
格式: basename path
base命令能從路徑中分離出文件名,通常用于shell腳本中,例:
$ basename /home/smallfish/ifcp
ifcp
2.cat
格式: cat options files
-v:顯示控制字符
cat是最常用得文本文件顯示命令
$ cat myfile
文件合并:
$ cat myfile myfile2 >>hold_file
3.cp
格式: cp options file1 file2
選項(xiàng):
-i:在覆蓋文件之前提示用戶,由用戶確認(rèn).
-p:保留權(quán)限模式和更改時(shí)間.
-r:拷貝相應(yīng)得目錄及其子目錄.
4.diff
格式: diff options file1 file2
選項(xiàng):
-c: 按照標(biāo)準(zhǔn)格式輸出
-I:忽略大小寫
5.dirname
格式: dirname pathname
該目錄正好和basename相反,它返回路徑部分:
$ dirname /home/smallfish/ifcp
/home/smallfish
6.du
格式: du options directory
選項(xiàng):
-a: 顯示每個(gè)文件的大小,不僅是整個(gè)目錄所占用的空間
-s: 只顯示總計(jì)
du顯示得磁盤空間占用是以512字節(jié)的塊來表示得.它主要用于顯示目錄所占用的空間.
du -s .
5611 .
7.file
格式: file filename
該命令用來確定文件類型:
$ file ifcp
ifcp: Bourne-Again shell script text executable
$ file mbox
mbox: ASCII mail text
8.fuser
格式: fuser options file
選項(xiàng):
-k: 殺死所有訪問該文件或文件系統(tǒng)的進(jìn)程
-u: 顯示訪問該文件或文件系統(tǒng)的所有進(jìn)程
fuser命令可以顯示訪問某個(gè)文件或文件系統(tǒng)的所有進(jìn)程.在有些系統(tǒng)上,-u 和-m選項(xiàng)可以互換.還可以在if
語句中使用fuser命令.
列出/dev/hda8上所有活動(dòng)進(jìn)程:
$ fuser -m /dev/hda8
/dev/hda8:? ?? ?? ?? ?2043e??2081m??2114e??2267e??2343e??2376e??2396e??2420e??2431e??2441e??2500e
2519e??2529e??2543e??2554e??2561??2561m??2955??2955c??2955e??3183e??3185e??3186m??3430e
11786m 11787m 11960m
9.head
格式: head -number files
head命令可以顯示相應(yīng)文件的前10行.如果希望指定顯示的行數(shù),可以使用-number選項(xiàng).
顯示trap2.sh文件第一行:
$??head -1 trap2.sh
#!/bin/bash
10.logname
格式: logname
顯示當(dāng)前所使用的登陸用戶名:
$ logname
smallfish
11.mkdir
格式: mkdir options directory
選項(xiàng):
-m: 在創(chuàng)建目錄時(shí)按照該選項(xiàng)的值設(shè)置訪問權(quán)限.
12. more
格式: more options files
該命令和page及pg命令的功能相似,都能分屏顯示文件內(nèi)容.
選項(xiàng):
-c: 不滾屏,而是通過覆蓋來換頁
-d: 在分頁處顯示提示
-n:每屏顯示n行
13.nl
格式: nl options file
選項(xiàng):
-I: 行號(hào)每次增加n,缺省為1
-p: 在新的一頁不重新計(jì)數(shù)
nl命令可用于在文件中列行號(hào),在打印源代碼或日志文件時(shí)很有用.
列出文件行號(hào):
$ nl myscript
14.printf
格式: printf format arguments
該命令有點(diǎn)類似于awk命令的printf函數(shù),它將格式化文本送至標(biāo)準(zhǔn)輸出.其中,格式符format包含三種類型
的項(xiàng),這里只討論格式符:
%[- +]m.nx
其中橫桿-為從行首算起的起始位置。一般說來m表示域的寬度n表示域的最大寬度.'%'后面可跟下列格式
字符:
s: 字符串
c: 字符
d: 數(shù)字
x: 16進(jìn)制數(shù)
o: 10進(jìn)制數(shù)
printf命令本身并不會(huì)產(chǎn)生換行符,必須使用轉(zhuǎn)義字符來實(shí)現(xiàn)這樣的功能。下面是最常用的轉(zhuǎn)義字符:
\a: 響鈴
\b:退格
\r:回車
\f:換頁
\n:換行
\t:跳格
$ printf "abc\n"
abc
$ printf "abc\n\t"
abc
[smallfish@localhost ~]$
15.pwd
格式: pwd
顯示當(dāng)前工作目錄:
$ pwd
/home/smallfish
16.rm
格式: rm options files
選項(xiàng):
-i: 在刪除文件之前給出提示(安全模式)
-r: 刪除目錄
rm命令能夠刪除文件或目錄
17.rmdir
格式: rmdir options directory
選項(xiàng):
-p: 如果相應(yīng)的目錄為空目錄,則刪除該目錄
18.script
格式: script option file
-a: 將輸出附加在文件末尾
可以使用script命令紀(jì)錄當(dāng)前會(huì)話.只要在命令行鍵入該命令即可。該命令在你退出當(dāng)前會(huì)話時(shí)結(jié)束。它
可以將你的輸入紀(jì)錄下來附加到一個(gè)文件末尾。
$ script mylogin
Script started, file is mylogin
19.sleep
格式: sleep number
該命令使系統(tǒng)等待相應(yīng)的秒數(shù),如:
$ sleep 10
意味著系統(tǒng)在10秒鐘之內(nèi)不進(jìn)行任何操作。
20. strings
格式: strings filename
該命令可以看二進(jìn)制文件中所包含的文本。
21. touch
格式: touch options filename
選項(xiàng):
-t MMDDhhmm 創(chuàng)建一個(gè)具有相應(yīng)月\日\(chéng)時(shí)\分時(shí)間戳的文件
$ touch -t 0710150000 myfile
-rw-rw-r--??1 smallfish smallfish 0 Oct 15 00:00 myfile
22.tty
格式: tty
可以使用tty來報(bào)告所連接的設(shè)備或終端.
$ tty
/dev/pts/4
23.wait
格式: wait process ID
該命令可以用來等待進(jìn)程號(hào)為process ID的進(jìn)程或所有的后臺(tái)進(jìn)程結(jié)束后,再執(zhí)行當(dāng)前腳本.
等待進(jìn)程號(hào)為1299的進(jìn)程結(jié)束后再執(zhí)行當(dāng)前腳本:
$ wait 1299
等待所有的后臺(tái)進(jìn)程結(jié)束后再執(zhí)行當(dāng)前腳本:
$ wait
24.wc
格式: wc options files
選項(xiàng):
-c: 顯示字符數(shù)
-l: 顯示行數(shù)
-w: 顯示單詞數(shù)
25.whereis
格式: whereis command_name
whereis 命令能夠給出系統(tǒng)命令的二進(jìn)制文件及其在線手冊(cè)的路徑
$ whereis dirname
dirname: /usr/bin/dirname /usr/share/man/man1/dirname.1.gz /usr/share/man/man3/dirname.3.gz
/usr/share/man/man1p/dirname.1p.gz /usr/share/man/man3p/dirname.3p.gz
26.who
格式: who options
選項(xiàng):
-a: 顯示所有的結(jié)果
-r: 顯示當(dāng)前的運(yùn)行級(jí)別
-s: 列出用戶名及時(shí)間域
查看自己用戶名:
$ whoami
總結(jié)
以上是生活随笔為你收集整理的linux shell写cgi,shell写cgi脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有哪些好用的视频录制工具?
- 下一篇: linux管理进程ps命令,ps命令进程