Linux Bash Shell練習

Linux Bash Shell練習

1、寫一個腳本,完成以下功能:

假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干

顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串

顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串

分別統計S開頭和K開頭的文件各有多少

#!/bin/bash
#
for i in $(ls /etc/rc.d/rc3.d/ | grep  "\<K");do
    echo $i.stop
    let sum1+=1
done

for j in $(ls /etc/rc.d/rc3.d/ | grep "\<S");do
    echo $j.start
    let sum2+=1
done

echo "There are $sum1 file names start with "K"."
echo "There are $sum2 file names start with "S"."

執行效果:

shell-2205.jpg

2、寫一個腳本,完成以下功能:

腳本能接受用戶名作為參數

計算這些用戶的ID之和

#!/bin/bash
#
[ $# -eq 0 ] && echo "Please give one user name or more." && exit 1

for i in $*;do
    for j in $(id -u $i);do
        let sum+=$j
    done
done

echo "Sum:$sum."

運行效果:

shell-2237.jpg

 

3、寫一個腳本:

傳遞一些目錄給此腳本

逐個顯示每個目錄的所有一級文件或子目錄的內容類型

統計一共有多少個目錄;且一共顯示了多少個文件的內容類型

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least give one file path." && exit 1

for j in  $*/*;do
    if [ -b $j ];then
        echo "$j is block file."
        let sum1+=1
    elif [ -c $j ];then
        echo "$j is character file."
        let sum1+=1
    elif [ -d $j ];then
        echo "$j is a directory."
        let sum+=1
    elif [ -f $j ];then
        echo "$j is a common file."
        let sum1+=1
    elif [ -L $j ];then
        echo "$j is a symbolic link."
        let sum1+=1
    elif [ -p $j ];then
        echo "$j is a pipe file."
        let sum1+=1
    elif [ -S $j ];then
        echo "$j is a socket file."
        let sum1+=1
    else
        echo "$j is unknown file."
        let sum1+=1
    fi
done

let sum2=$sum+$sum1

echo "There are $sum directories."
echo "There are $sum2 files and directories."

運行效果:

shell-1439.jpg

 

4、寫一個腳本

通過命令行傳遞一個參數給腳本,參數為用戶名

如果用戶的id號大于等于500,則顯示此用戶為普通用戶

#!/bin/bash
#
[ $# -eq 0 ] && echo "At least one user name needed." && exit 1

for i in $*;do
    if ! id $i &>/dev/null ;then
        echo "No such user:$i" 
    elif [ $(id -u $i) -ge 500 ];then
        echo "$i is a common user."
    fi
done

運行效果:

shell-1629.jpg

5、寫一個腳本

添加10用戶user1-user10,密碼同用戶名

用戶不存在時才添加,存在時則跳過

最后顯示本次共添加了多少用戶

 

#!/bin/bash
#
declare -i sum=0

for i in {1..10};do
    if id user$i &>/dev/null;then
        echo "User user$i is exist."
    else
        useradd user$i &>/dev/null
        echo "user$i" | passwd --stdin "user$i" &>/dev/null
        echo "User user$i add finished."
        let sum+=1
    fi
done 

echo "There are $sum users added."

shell-1707.jpg

原創文章,作者:N24_lantian,如若轉載,請注明出處:http://www.www58058.com/63944

(1)
N24_lantianN24_lantian
上一篇 2016-12-17
下一篇 2016-12-17

相關推薦

  • ssh登陸與端口轉發

    ssh: secure shell, protocol, 22/tcp,  安全的遠程登錄     具體的軟件實現:OpenSSH  : ssh 協議的開源實現,CentOS 默認安裝dropbear :另一個開源實現SSH      協議版本   …

    Linux干貨 2017-04-13
  • grub知識與故障排除

    知識點回顧 at 任務的存放位置:/var/spool/at/ crond 任務存放位置:/var/spool/cron/username 查看服務有沒有運行 centos6:  service  atd  status    chkconfig –list atd chkconfig atd o…

    Linux干貨 2016-09-13
  • 文本處理三劍客之grep

    grep命令基本用法 1、grep正則表達式(對文本行進行搜索過濾) 格式:grep [option] PATTERN [FILE…] option: -i:忽略大小寫 -v:取反,顯示未被匹配到的pattern -n:顯示匹配的行號 -c:統計匹配的行數 -o: 只顯示匹配到的pattern -q: 靜默,不予顯示 -A#:after,匹配到的行再向后…

    Linux干貨 2017-07-19
  • mysql mariadb 備份恢復、主從

    備份類型分為: 完全備份、增量備份、差異備份 熱備、溫備、冷備 邏輯備份、物理備份 每種類型區別: 增量備份:根據上一次備份的增量備份或完全備份備份 差異備份:根據上一次備份的完全 溫備:備份過程中只支持讀備份備份熱備:備份過程中支持讀寫 冷備:停服務備份 邏輯備份:schema和數據存儲在一起,巨大的sql語句、單個巨大的備份文件,恢復備份較慢。優點可以還…

    2017-03-01
  • tomcat

      編程語言:硬件級:微碼編程,匯編語言系統級:C,C++,…應用級:Java, PHP, Python, Ruby, Perl, C#, …Python: PVMStandard LibraryWeb Framework:Django, Flask, …Java:JVM,JDKbash:bash ex…

    Linux干貨 2017-05-22
  • linux作業管理

    作業管理 kill kill命令:     向進程發送控制信號,以實現對進程管理     顯示當前系統可用信號:kill -l     常用信號:man 7 signal    &…

    Linux干貨 2016-09-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 00:45

    贊,幾個腳本完成的不錯~能注意下整體風格會更好~~繼續加油~

欧美性久久久久