[shell指令碼學習]指令碼作業 7.18-7.21

來源:互聯網
上載者:User
 

寫一個指令碼:
1、建立目錄/tmp/scripts
2、切換工作目錄至此目錄中
3、複製/etc/pam.d目錄至目前的目錄,並重命令為test
4、將目前的目錄中的test及其裡面的檔案和子目錄的屬主改為redhat
5、將test及其子目錄中的檔案的其它使用者的許可權改為沒有任何許可權
#!/bin/bash
#
DIR='/tmp/csripts2'

mkdir $DIR

cd $DIR

cp -rf /etc/pam.d ./test

chown -R redhat ./test

chmod -R o=--- ./test

ls -lR $DIR

unset DIR

--------------------------------------------------------------------------------

寫一個指令碼:
1、顯示當前系統日期和時間,而後建立目錄/tmp/lstest
2、切換工作目錄至/tmp/lstest
3、建立目錄a1d, b56e, 6test
4、建立空檔案xy, x2y, 732
5、列出目前的目錄下以a、x或者6開頭的檔案或目錄;
6、列出目前的目錄下以字母開頭,後跟一個任一數字,而後跟任意長度字元的檔案或目錄; 
#!/bin/bash
#
date
mkdir /tmp/lstest
cd /tmp/lstest
mkdir ald b56e 6test
touch xy x2y 732
ls -ldh [ax6]*
ls -ldh [[:alpha:]][0-9]*

----------------------------------------------------------------------

寫一個指令碼,完成以下功能:
1、傳遞兩個整數給指令碼,讓指令碼分別計算並顯示這兩個整數的和、差、積、商。
#!/bin/bash
#

echo "$1+$2 is $[$1+$2]"

echo "$1-$2 is $[$1-$2]"

echo "$1*$2 is $[$1*$2]"

echo "$1/$2 is $[$1/$2]"

-----------------------------------------------------------------------------

寫一個指令碼:
1、切換工作目錄至/var
2、依次向/var目錄中的每個檔案或子目錄問好,形如:
  (提示:for FILE in /var/*; 或for FILE in `ls /var`; )
   Hello, log
   Hello, run
3、統計/var目錄下共有多個檔案,並顯示出來
#!/bin/bash
let SUM=0

for FILE in /var/* ; do
  echo "hello, $FILE"
  SUM=$[$A+1]
done
echo $SUM
unset SUM
---------------------------------------------------------------------------

寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、使用迴圈讀取檔案/etc/passwd的第2,4,6,10,13,15行,並顯示其內容;(提示:LINE=`head -2 /etc/passwd | tail -1`可以取得第2行)
3、把這些行儲存至/tmp/mypasswd檔案中
#!/bin/bash
#
FILE=/etc/passwd
exec 3>> /tmp/mypasswd

for N in 2 4 6 10 13 15 ; do
  LINE=`head -$N $FILE | tail -1`
  echo $LINE
  echo $LINE >&1
done

exec 3>&-
unset FILE LINE

---------------------------------------------------------------------------------
寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、依次向/etc/passwd中的每個使用者問好,形如:  (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
 Hello, root.
3、統計一共有多少個使用者
#!/bin/bash
# hello everyone

FILE=/etc/passwd
let LINE=0
LINE=`wc -l /etc/passwd | cut -d " " -f1`

for U in `seq 1 $LINE` ; do
  USERNAME=`head -$U $FILE | tail -1 | cut -d: -f1`
  UUID=`head -$U $FILE | tail -1 | cut -d: -f3`
  echo "hello $USERNAME"
  echo "your UID is $UUID"
done
echo users $LINE
unset LINE U N USERNAME UUID

----------------------------------------------------------------------------------

寫一個指令碼:
1、設定變數FILE的值為/etc/passwd
2、依次向/etc/passwd中的每個使用者問好,並且說出對方的ID是什麼,形如:  (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
 Hello, root,your UID is 0.
3、統計一共有多少個使用者
#!/bin/bash
#
LFS=$'\n'
let A=0

for LINE in `cat /etc/passwd`; do
  USERNAME=`echo $LINE | cut -d: -f1 `
  ID=`echo $LINE | cut -d: -f3 `
  echo "hello, $USERNAME ID $ID"
  A=$[$A+1] 
done
echo "$A users"

unset LFS SUM LINE USERNAME ID

---------------------------------------------------------------------

寫一個指令碼:
1、添加10個使用者user1到user10,但要求只有使用者不存在的情況下才能添加;
#!/bin/bash
#

for I in {1..10} ; do
  grep user$$I /etc/passwd &> /dev/null || useradd user$I
done

unset I
 

----------------------------------------------------------------------

寫一個指令碼:
1、通過ping命令測試192.168.0.151到192.168.0.254之間的所有主機是否線上,
 如果線上,就顯示"ip is up."
 如果不線上,就顯示"ip is down."
#i/bin/bash
#

for I in {151,254} ; do
  ping -c1 -W1 192.168.0.$I &>/dev/null && echo "ip is up" || echo "ip is down"
done  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.