1.查找当前目录中所有大于500M的文件,把这些文件名写到一个文本文件中,并统计其个数。
find ./ -size +500M -type f | tee file_list | wc -l

2.在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do
sed -n '1p' $filename>>new
done

3.把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。
grep -xvf a b | tee c | wc -l

5.每隔10分钟监控一次,监控/usr下如果大于5G,发邮件给管理员
#!/bin/bash
while true
do
    sleep 600
    n=$(du -s /usr | cut -f1)
    if [ $n -gt 5242880 ]
    then
        mail -s "greater" filwsyl@gmail.com < ~/filename #将文件filename的内容发送出去。
    fi
done
把某个目录下的文件扩展名改为bat,再以时间为文件名压缩打包存放到某个目录。
#!/bin/bash
for file in $(ls $1)
do
    new_file=${file%.*}.bat
    mv ./$1/$file ./$1/$new_file
    tmp=$(date +%y)
    tar cvf ./$tmp.tar ./$1
done

9.从网上下载一个文件,保存到指定目录
#!/bin/bash
url=http://rs1.bn.163.com/ent/2009/05/20_canquedege.wma
dir=~/下载
wget -P $dir $url

10.判断一个数是不是完数。打印出1-1000之间的完数。 完数就是约数的和等于自身2倍的数。(6,28,496)
#!/bin/bash
sub()
{
    i=1;
    sum=0;
    while [ $i -le $num ]
    do
        let "m=num%i"
        if [ $m -eq 0 ]
        then
            let "sum=sum+i"
        fi
        let "i=i+1"
    done
    let "a=2*num"
    if [ $a -eq $sum ]
    then
        echo $num
    fi
}
num=1
while [ $num -le 1000 ]
do
    sub
    let "num = num+1"
done

11.以行为单位,求文件A和文件B交集,并集,差集。
并:
sort -m <(sort A | uniq) <(sort B | uniq) | uniq
交:
sort -m <(sort A | uniq) <(sort B | uniq) | uniq -d
差:
sort -m <(sort A | uniq) <(sort B | uniq) <(sort B | uniq) | uniq -u

12.在某个文件夹下查找含有指定字符串的文件
#!/bin/bash
for file in $(ls $2)
do
    bname=$(grep -l $1 $2/$file)
    basename $bname
done
调用方法:./tst 000 bash#在文件夹bash中查找含有“000”的文件。

19.一个文件内容全部是类似 
【202.205.151.21】--【23:59:22】-“HTTP GET”-“Mozila”
...
写一个SHELL命令找出最多的10个IP
awk -F "--" '{print $1}' shit | sort | uniq -c | sort -r | sed -n '1,10p'

20./tmp路径下有800个文件,文件名的格式是:filename_YYYYMMDD_序列号(从001到999).dat, 例如:filename_20040108_089.dat。现在想把这些文件改名,新文件名的格式是:filename_TODAY(当前日期)_序列 号(从500开始,到达999之后从001开始).dat,例如: 把filename_20040108_089.dat改为filename_20041222_589.dat,注意新文件名的序列号的顺序需要和原来 的一致,即要做排序处理。
#!/usr/bin/bash
DEST_FILE_PART2="_`date '+%Y%m%d'`_"
EXT_NAME=".dat"
SRC_FILE_LIST=`find /tmp -name "*_*_*$EXT_NAME" -print`
for each in $SRC_FILE_LIST; do
    DEST_FILE_PART1=`echo $each | awk -F"_" '{print $1}'`
    OLD_NUM=`echo $each | awk -F"_" '{print $3}' | awk -F"." '{print $1}'`
    DEST_FILE_PART3=`expr $OLD_NUM + 500`
    [ $DEST_FILE_PART3 -gt 999 ] && DEST_FILE_PART3=`expr $OLD_NUM - 499`
        && DEST_FILE_PART3=`printf %03d $DEST_FILE_PART3`
    DEST_FILE=$DEST_FILE_PART1$DEST_FILE_PART2$DEST_FILE_PART3$EXT_NAME
    echo "mv $each to $DEST_FILE"
    mv $each $DEST_FILE
done
我的解法:
#!/bin/bash
new_file=$(date +20%y%m%d);
for file in $(ls ~/bash)
do
    i=$(echo "$file" | sed 's/.*_[0-9]*_\([0-9]*\).dat/\1/')    #取出序列号
    i=$(echo $i | sed 's/^0*\([0-9]*\)/\1/')                #去掉序列号前面可能的 ‘0’,
    let "ii=i+500"
    if [ $ii -gt 999 ]
    then
        let "ii=ii-999"
    fi
    ii=`printf %03d $ii`                            #添上可能需要的‘0’
    update=$(echo "$file" | sed 's/\(.*\)_[0-9]*_[0-9]*.dat/\1_'$new_file'_'$ii'.dat/')
    mv ~/bash/$file ~/bash/$update
done

21.要求:在一个脚本中完成这个程序
1.从文件user.list中取出已给定的用户名和用户组,将这些用户和组按规则添加到系统中
2.从password.list中读取已经给定的用户密码。
user.list如下
zhangsan adminuser,dbuser,updatauser
lisi dbuser,updatauser
wanger updatauser,wheel

#!/bin/bash
#group add
for x in ‘awk ‘{print $2}’ user.list | sed ’s/,/\n/g’ | sort | uniq -c|sed ’s/[^a-zA-Z]//g”
do
        groupadd $x &> /dev/null
done
#back message
if (($?==0))
then
        echo “Group Ok!!”
else
    exit 1
fi
#user add
for i in ‘awk ‘{print $1}’ user.list’
do
    for y in ‘awk ‘{print $2}’ password.list’
    do
    useradd $i &> /dev/null
    echo $y | passwd –stdin $i &> /dev/null
    done
done
#back message
if (($?==0))
then
    echo “User Ok!”
else
    exit 1
fi
#add users to groups
for ((q=1;q<=3;q++))
do
    usermod -G ‘awk “NR==$q {print $2}” user.list | awk ‘{print $2}” ‘awk “NR==$q {print $1}” user.list | awk ‘{print $1}” &> /dev/null
done
if (($?==0))
then
    echo “All Finished!”
fi
原文地址http://www.zhangyiqun.cn/115.html

22.比较两个小数大小。
awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'
echo "0.14 > 0.15" | bc
expr 1.2 \< 1.3

Shell笔试题3的更多相关文章

  1. 兄弟连 企业shell笔试题 1-15

    这些题目收集自网络,对比原来的答案,又根据实际情况重新编写了自己的答案 企业实践题1: (生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境 ...

  2. Shell笔试题2

    1. 从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的 ...

  3. Shell笔试题1

    1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下. #!/bin/bash#1.sh#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下#f ...

  4. 转:shell笔试题

    源地址:http://blog.csdn.net/zcsylj/article/details/6799632 1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录 ...

  5. 兄弟连 企业shell笔试题 16-31

    企业实践题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本 例如:/etc/init.d/rsyncd{start|stop|restart} .要求:1.要使用系统函数库技巧.2.要 ...

  6. C/C++ 笔试题

    /////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...

  7. 嵌入式Linux C笔试题积累(转)

    http://blog.csdn.net/h_armony/article/details/6764811 1.   嵌入式系统中断服务子程序(ISR) 中断是嵌入式系统中重要的组成部分,这导致了很 ...

  8. C/C++笔试题(很多)

    微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...

  9. Python笔试题&面试题总结

    黑色加粗的是笔试题,蓝色是面试题 1.什么是GIL 2.Python中的@staticmethod和@classmethod的区别 (**) 3.Python里面如何拷贝一个对象,并解析深浅拷贝 4. ...

随机推荐

  1. arm-linux-3.4.2移植for2440

    ----------------------------2440 上内核3.4.2移植------------------------ PS:因wifi项目中无wifi驱动,需新内核. 1.首先在内核 ...

  2. k8s 基础 docker-ce 安装(注k8s 的安装需要用此版docker 否则会报错 )

    yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/ ...

  3. Linux部署walle

    背景:Walle 一个web部署系统工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布.回滚,可以通过web来 ...

  4. Entity Framework Code-First(9):DataAnnotations

    DataAnnotations in Code-First: EF Code-First provides a set of DataAnnotation attributes, which you ...

  5. 7.30实习培训日志-SQL优化

    总结 今天早上考试,下午主要是老师引导我们学习SQL优化,晚上主要是同学的技术分享,杨松柏同学主要给我们分享了java的io的一些东西,c10k问题,bio(同步阻塞IO),NIO(同步非阻塞IO), ...

  6. idea中java项目增加module后,增加的目录(src)无法增加包(Package)

    在idea项目中,增肌model后,在项目根目录下增加src目录,右键发现无法增加包(Package). 仔细观察发现,新增加的src目录是棕色,而原先的src目录是浅蓝色的,见下图: 在src右键, ...

  7. opencv头文件

    转载自:http://blog.csdn.net/aaron121211/article/details/51526901 1. .hpp文件是.h和.cpp文件在一起的2. #include < ...

  8. Python开发【第六篇】:文件处理

    1. 文件   文件处理流程: 打开文件,获得文件句柄,并赋值 通过句柄对文件进行操作 关闭文件 1.1 打开文件   在 Python 中使用 open()函数打开文件,并返回文件对象: open( ...

  9. 从CGI到FastCGI到PHP-FPM

    从CGI到FastCGI到PHP-FPM 背景 笔者在学习这几个名词的时候,也是被百度到的相关文章迷惑.涉及到的主要名词包括 1. CGI协议 2. CGI脚本 3. PHP-CGI 4. FastC ...

  10. [CentOS7] Segmentation fault (core dumped),但是在主机上找不到core文件

    1.问题描述 程序执行报:Segmentation fault (core dumped),但是在主机上找不到core文件 2.如何让系统生成core file /home>ulimit -ac ...