zoukankan      html  css  js  c++  java
  • 25道shell面试题

    1

     

    sed

    修改

    test.txt

    23

    test

    tset

     

        sed 

    –i „23s/test/tset/g‟ test.txt

     

    2

     

    查看

    /web.log

    25

    行第三列的内容。

     

        sed 

    –n „25p‟ /web.log | cut –d “ ” –

    f3

     

        head 

    n25 /web.log | tail 

    n1 | cut 

    –d “ ” –

    f3

     

        awk 

    –F “ ” „NR==23{print $3}‟ /web.log

     

    3

     

    删除每个临时文件的最初三行。

     

        sed 

    –i „1,3d‟ /tmp/*.tmp

     

    4

     

    脚本编程:求

    100

    内的质数。

     

        #!/bin/bash

     

        i=1

     

        while [ $i -le 100 ];do

     

            ret=1

     

            for (( j=2;j<$i;j++ ));do

     

     

        if [ $(($i%$j)) -eq 0 

     ];then

     

     

     

    ret=0

     

     

     

    break

     

     

        fi

     

            done

     

            if [ $ret -eq 1 ];then

     

                echo -n "$i "

     

            fi

     

            i=$(( i+1 ))

     

        done

     

    5

     

    晚上

    11

    点到早上

    8

    点之间每两个小时查看一次系统日期与时间,写出具体配置命令

     

        echo 1 23,1-8/2 * * * root /tmp/walldate.sh >> /etc/crontab

     

    6

     

    编写个

    shell

    脚本将当前目录下大于

    10K

    的文件转移到

    /tmp

    目录下

     

        #!/bin/bash

     

        fileinfo=($(du ./*))

     

        length=${#fileinfo[@]}

     

     

        for((i=0;i<$length;i=$(( i+2 ))));do

     

            if [ ${fileinfo[$i]} -le 10 ];then

     

     

        mv ${fileinfo[$(( i+1 ))]} /tmp

     

            fi

     

        done

     

    7

     

    如何将本地

    80

    端口的请求转发到

    8080

    端口,当前主机

    IP

    192.168.2.1

     

        /sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 

    192.168.2.1:8080

     

        /sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

     

    8

     

    11

    月份内,

    每天的早上

    6

    点到

    12

    点中,

    每隔

    2

    小时执行一次

    /usr/bin/httpd.sh 

    么实现

     

        echo "1 6-12/2 * * * root /usr/bin/httpd.sh >> /etc/crontab"

     

    9

     

    shell

    环境如何杀死一个进程?

     

        ps aux  

    | grep | cut -f? 

    得到

    pid

     

        cat /proc/pid

     

        kill pid

     

    10

     

    shell

    环境如何查找一个文件?

     

        find / -name abc.txt

     

    11

     

    shell

    里如何新建一个文件?

     

        touch ~/newfile.txt

     

    12

     

    linux

    下面的

    sed

    awk

    的编写

     

    1

     

     

    如何显示文本

    file.txt

    中第二大列大于

    56789

    的行?

     

      

      

    awk -F "," '{if($2>56789){print $0}}' file.txt

     

    2

     

    显示

    file.txt

    1,3,5,7,10,15

    行?

     

      

      

    sed -n "1p;3p;5p;7p;10p;15p" file.txt

     

      

      

    awk 'NR==1||NR==3||NR==5||…||NR=15{print $0}' file.txt

     

    3

     

    file.txt

    的制表符,即

    tab

    ,全部替换成

    "|"

     

     

        sed -i "s# #|#g" file.txt

     

    13

     

    把当前目录(包含子目录)下所有后缀为

    “.sh”

    的文件后缀变更为

    “.shell”

      

      

     

        #!/bin/bash

     

        str=`find ./ -name *.sh`

     

        for i in $str

     

        do

     

            mv $i ${i%sh}shell

     

        done

     

    14

     

    编写

    shell

    实现自动删除

    50

    个账号功能,账号名为

    stud1

    stud50

     

      

      

    #!/bin/bash

     

      

      

    for((i=1;i<=50;i++));do

     

          

      

    userdel stud$i

     

      

      

    done

     

    15

     

    请用

    Iptables

    写出只允许

    10.1.8.179 

    访问本服务器的

    22

    端口。

     

      

      

    /sbin/iptables -A input -p tcp -dport 22 -s 10.1.8.179 -j ACCEPT

     

      

      /sbin/iptables -A input -p udp -dport 22 -s 10.1.8.179 -j ACCEPT

     

      

      

    /sbin/iptables -P input -j DROP 

     

    16

     

    shell

    中变量的赋值有四种方法,

    其中,

    采用

    name=12

    的方法称

     

      

      

     

     

     

    A

    直接赋值

          

      

                  B

    使用

    read

    命令

     

    C

    使用命令行参数

                D

    使用命令的输出

     

    17

     

    有文件

    file1

     

    1) 

    查询

    file1

    里面空行的所在行号

     

      

      

    grep -n ^$ file1

     

    2) 

    查询

    file1

    abc

    结尾的行

     

      

      

    grep abc$ file1

     

    3) 

    打印出

    file1

    文件第

    1

    到第三行

     

      

      

    head -n3 file1

     

      

      

    sed "3q" file1

     

     

      

      

    sed -n "1,3p" file1

     

    18

     

    假设有一个脚本

    scan.sh

    ,里面有

    1000

    行代码,并在

    vim

    模式下面,请按照如下

    要求写入对应的指令

     

    1

     

    shutdown

    字符串全部替换成

    reboot

     

      

      

    :%s/shutdown/reboot/g

     

    2

     

    清空所有字符

     

      

      

    :%d

     

    3

     

    不保存退出

     

      

      

    q!

     

    19

     

    1

    10

    数字相加,写出

    shell

    脚本

     

      

      

    #!/bin/bash

     

      

      

    j=0

     

      

      

    for((i=1;i<=10;i++));do

     

          

      

    j=$[j+i ]

     

      

      

    done

     

      

      

    echo $j

     

    20

     

    常见

    shell

    有哪些?缺省的是哪个?

     

      

      

    /bin/sh  

     

     

    /bin/bash

     

       

    /bin/ash  

      

    /bin/bsh  

      

    /bin/csh  

      

    /bin/tcsh  

      

    /sbin/no

    login

     

    21

     

    Shell

    循环语句有哪些?

     

      

      

    for  

      

    while  

      

    until

     

    22

     

    SHELL

    模拟

    LVS

    ,脚本怎么写

     

      

      

    /sbin/iptable -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 

    192.168.1.11-192.168.1.12

     

    23

     

    找出系统内大于

    50k

    ,小于

    100k

    的文件,并删除它们。

     

      

      

    #!/bin/bash

     

      

      

    file=`find / -size +50k -size -100k` 

     

      

      

    for i in $file;do

     

     

          

      

    rm -rf $i

     

      

      

    done

     

    24

     

    脚本(如:目录

    dir1

    dir2

    dir3

    下分别有

    file1

    file2

    file2

    ,请使用脚本将文

    件改为

    dir1_file1

    dir2_file2

    dir3_file3

     

      

      

    #!/bin/bash

     

      

      

    file=`ls dir[123]/file[123]`

     

      

      

    for i in $file;do

     

      

      

      

      

    mv $i ${i%/*}/${i%%/*}_${i##*/}

     

      

      

    done

     

    25

     

    B

    C

    目录下的文件

    A1

    A2

    A3

    文件,改名为

    AA1

    AA2

    AA3.

    使用

    shell

    脚本实现。

     

      

      

    #!/bin/bash

     

      

      

    file=`ls [ABC]/A[123]`

     

      

      

    for i in $file;do

     

      

      

      

      

    mv $i ${i%/*}/A${i#*/}

     

      

      

    done

  • 相关阅读:
    1393 0和1相等串 鸽笼原理 || 化简dp公式
    C. Coin Troubles 有依赖的背包 + 完全背包变形
    D. PolandBall and Polygon BIT + 欧拉公式
    51NOD 1639 绑鞋带 数学
    D. Fedor and coupons 二分暴力
    hdu 4104 Discount
    bnu 51640 Training Plan DP
    hdu 5745 La Vie en rose DP + bitset优化
    hdu 5036 Explosion bitset优化floyd
    1354 选数字 DP背包 + 数学剪枝
  • 原文地址:https://www.cnblogs.com/hanxing/p/4178399.html
Copyright © 2011-2022 走看看