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 20:45
下一篇 2016-12-17 22:34

相關推薦

  • socket編程原理

    1、問題的引入 1) 普通的I/O操作過程: UNIX系統的I/O命令集,是從Maltics和早期系統中的命令演變出來的,其模式為打開一讀/寫一關閉(open-write-read-close)。在一個用戶進程進行I/O操作時,它首先調用“打開”獲得對指定文件或設備的使用權,并返回稱為文件描述符的整型數,以描述用戶在打開的文件或設備上進行I/O操作的進程。然…

    Linux干貨 2015-04-10
  • 2017-10-4Linux基礎知識(3)

    在上一章中講到了操作系統的歷史的發展以及Linux的如何誕生,在1991年的8月份,創始人Linus宣布成立Linux的,Larry Wall開發diff和patch打補丁的命令程序使得Linux可以在安全性方面有很大的提升。

    Linux干貨 2017-10-05
  • shell編程之數組及變量的多功能用法

    數組及變量的多功能用法   一、數組: 1、數組:存儲多個元素的連續的內存空間,相當于多個變量的集合(變量:存儲單個元素的內存空間)。 2、數組名和索引 索引:編號從0開始,屬于數值索引 bash的數組支持稀疏格式(索引不連續) 注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。 聲明數組: decl…

    Linux干貨 2016-08-26
  • N22-第二周作業

    一.linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示     cp復制命令:     -i:若目標文件存在,提示是否覆蓋目標文件,此選項為已寫入alias里,使用時為默認選項     [root@localhost ~]# ls /tmp/…

    Linux干貨 2016-08-20
  • 記事本操作的小小小技巧

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/140063       大家在查看文本文件的時候,如果內容很多,想快速到達某一位置可能比較麻煩,這時如果按住shift,再點擊右側…

    Linux干貨 2015-03-26
  • 懶人本地YUM源設置

    一、掛載本地光盤到根目錄下/media。 [root@wing-PC ~]# mount -v /dev/sr0 /media/ 二、用mv 修改/etc/yum.repos.d下面的文件。 [root@wing-PC ~]# mv -v /etc/yum.repos.d/CentOS-Base.repo / CentOS-Base.repo.bak [ro…

    系統運維 2017-08-05

評論列表(1條)

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

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

欧美性久久久久