新手看招 Linux Shell程式設計簡單一例

tonywi888發表於2007-08-09
引言:本人學shell也有一段時間了,感覺學習shell和其他語言一樣就是多練習程式。網上很多初學shell的朋友,一定為了找不到練習的程式而苦惱,我整合一下學習shell過程中遇到的比較基礎的練習題,希望能給初學shell的朋友一些啟發。(呵呵也許不該叫整合,習慣說這個詞了)
  例子沒有先後順序:每個例子可能有多種方法
  1.

在/home/codfei以及它的子目錄中查詢含有codfei的所有檔案
  • 方法一:

[root@localhost Linuxos]# grep -rsn "codfei" /home//home/codfei/c/Unix_c/2:1:codfei::::::::::::::::::::::
/home/codfei/c/Unix_c/1:1:codfei::::::::::::::::::::::
Binary file /home/codfei/c/.charset.c.swp matches

  • 方法二:

[root@localhost Unix_c]# find /home/codfei/ -type f | while read i;do grep -n codfei $i && echo $i && echo -----;done1:codfei::::::::::::::::::::::
/home/codfei/c/Unix_c/2
-----
1:codfei::::::::::::::::::::::
/home/codfei/c/Unix_c/1
-----
Binary file /home/codfei/c/.charset.c.swp matches
/home/codfei/c/.charset.c.swp
-----

  2.

設計一個Shell程式,在/userdata目錄下建立50個目錄,即user1~user50,並設定每個目錄的許可權為 rwxr-xr--

  方法一:

#!/bin/bash
#最簡單,效率最高的辦法
mkdir -p /userdata/{1..50} && chmod 754 /userdata/{1..50}

  方法二:

#!/bin/bash
#利用seq命令加while read結構
seq 1 50 | while read i;do
mkdir -p /userdata/$i
chmod 754 /userdata/$i
done

  方法三:
  用for或while迴圈

#!/bin/bash
i=0
while [ $i -lt 50 ];do
let i=i+1
mkdir -p /userdata/$i
chmod 754 /userdata/$i
done

#!/bin/bash
for ((i=1;i<=50;i++));do
mkdir -p /userdata/$i
chmod 754 /userdata/$i
done

  方法四:

#!/bin/sh

for D in user{1..50}
do
mkdir -m 754 -p $D
done

  3.

在linux系統中有個檔案,檔名為ABC.txt。如何將當前的系統時間追加到此檔案行首?

  三種方法:

echo -e "`date` `cat ABC.txt`" > ABC.txt
echo "`date | cat - ABC.txt`" > ABC.txt
sed -i "1i`date`" ABC.txt

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-937429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章