當前位置:編程學習大全網 - 編程語言 - 幫忙編寫壹個linux(ubuntu)下的小程序

幫忙編寫壹個linux(ubuntu)下的小程序

妳好~

妳說的那個沒功夫給妳整

給妳這個吧用SHELL寫的

如何遠程殺死僵進程?

所謂“僵進程”是指處於睡眠中,而且沒用的進程。在進行並行計算時經常會有僵進程產生。由於用 top 看不到“僵進程”,所以寫了如下壹個叫做“rkill”的 shell 文件:

#!/bin/tcsh

echo " Input start number of node: "

set N1="$<"

echo " Input end number of node: "

set N2="$<"

echo " Input the NAME of program"

set pname="$<"

echo "**********************************************************"

while($N1 <= $N2)

set h='t'$N1

set ppid=`rsh $h ps -ef | grep $pname | awk '{print $2}' `

echo "rsh $h kill $ppid"

rsh $h kill $ppid

@ N1++

end

echo "**********************************************************"

如何將壹個 index 文件中的空鏈接刪除?

在目錄 /doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day 中只有有限的幾個文件,而 archivepix.html 文件中卻鏈接了兩千多個文件,我們的目標就是要把不存在的文件鏈接刪除掉。

#!/bin/tcsh -f

# 從當前目錄中查找有哪些可用文件。find 不支持正則表達式 \{\}

set tmp=`find . -type f -maxdepth 1 -name "ap[0-9][0-9][0-9][0-9][0-9][0-9].html" `

# 將查找結果 ./ap000303.html 轉換為 ap000303.html

set ff1=`echo $tmp | sed -e 's/\.\/\(ap[0-9]\{6\}\.html\)/\1/g' `

# 在文件 archivepix.html 中查找包含類似 ap000303.html 的行,並將其導入臨時文件 ftmp 中

grep 'ap[0-9]\{6\}\.html' archivepix.html >ftmp

# 將 ftmp 中的每壹行轉換為 ap000303.html 的形式,這樣 ff1 和 ff2 中的字符串在形式上就是相同的了。

set ff2 = ` sed -e 's/.*\(ap[0-9]\{6\}\.html\).*/\1/g' ftmp`

rm ftmp -f

# 比較變量 ff1 和 ff2 的內容,如果壹個字符串只存在於 ff2 中,那麽就把文件 archivepix.html 中含有

# 該字符串的行刪除掉。

foreach f2 ($ff2)

echo $f2

set flag=0

foreach f1 ($ff1)

if ($f2 == $f1) then

set flag=1

endif

end

if($flag == 0) then

sed -e '/'$f2'/d' archivepix.html >ftmp # 此句最關鍵之處在於'$f2'可用於正則表達式。

mv ftmp archivepix.html -f

endif

end

如何將壹個目錄中的所有文件鏈接到網頁中?

只要將下列程序的輸出導到壹個文件中,再將其拷至網頁的相應位置就可以了。這裏最關鍵的是看雙引號如何輸出(\")。

#!/bin/tcsh -f

set dd = "/doc/Art_and_Photos/Flash/flash/AGui"

set ffff = `find $dd -type f `

set n=0

foreach f ($ffff)

@ n++

echo $f

echo '< a href='\"$f\"'<'$n',</a>'>> AGui.html

end

如何為壹堆文件換名字?

在吳老師的筆記心得中介紹了張林波的高招,但那是 bash 的,而且是以命令行形式給出的。為了便於理解,我將其改寫為 tcsh 格式,並將其置於腳本文件之中,更利於使用。

#!/bin/tcsh -f # -f 說明直接運行該文件,而不會先運行 .cshrc 進行初始化

rm tmp_file -f # 確保該文件不存在

foreach fold (*.jpg.*)

set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" ` # 精華之處

echo "mv $fold $fnew -f " >>tmp_file

end

chmod a+x tmp_file

./tmp_file

rm tmp_file -f

在這個腳本文件中,關鍵是“精華之處”。它的意義是:首先將要修改的文件名($fold)通過管道( | ) 傳給流編輯器(sed),流編輯器對文件名進行處理,其各項的具體意義為:

set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" `

sed -e 命令+選項 表示允許多點編輯

s/re/string/ 用 string 替換正則表達式 re

/\.jpg\.\(.*\)/ “\.”表示壹個真正的點,“\.jpg\.” 代表文件名中的“ .jpg.”;“\(.*\)” 中的‘.’匹配壹個非換行符的字符,‘*’匹配 0 個或多個“先前”字符,

它與 shell 的通配符完全不同,shell 的通配符代表 0 個或多個“任意”字符。

“.*”所代表的內容被設為“標簽 1”,可在需要的地方用“\1”引用。值得註意

的是:“.*”決不能用“*”來代替,因為“*”將表示任意個“\.”。

/-\1.jpg/ “\1”代表“標簽 1”的內容

g 表示行內全面替換

這裏還有壹個地方需要提醒,那就是將 `echo ...` 引起來的不是單引號,而是鍵盤左上角標有 “~ ` ”上的撇號.

如何解決網頁中字體放大時出現重疊的問題?

方案壹:適用於單層目錄

#!/bin/tcsh -f

set dir=`ls .`

foreach d ($dir)

if( -d $d) then # 判斷是否為目錄

cd $d

echo "cd $d"

foreach f (*.htm *.html)

sed -e '/[0-9]pt/d' $f > ftmp # 刪除所有包含 9pt、12pt 等關鍵詞的行

mv ftmp $f -f

end

cd ..

endif

end

方案二:適用於多層目錄

#!/bin/tcsh -f

set SearchPath = "/doc/Reading/everything/武俠/梁羽生"

set files=`find $SearchPath -type f -name "*.htm*" `

foreach f ($files)

echo $f

sed -e '/[0-9]pt/d' $f > ftmp

mv ftmp $f -f

end

  • 上一篇:昆明站到盤龍區青少年宮坐幾路公交車
  • 下一篇:自動駕駛汽車是什麽人工智能
  • copyright 2024編程學習大全網