zoukankan      html  css  js  c++  java
  • NO15 第一关课后考试

    第一关课后考试:

    1、创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写如内容:inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0

    [root@localhost ~]# mkdir /data/oldboy -p  ( -p #递归创建目录,一般第一级目录不存在时使用-p。否则报错。)
    [root@localhost ~]# ls -ld /data/oldboy/
    drwxr-xr-x 2 root root 6 May  3 10:26 /data/oldboy/
    [root@localhost ~]# touch /data/oldboy/oldboy.txt
    [root@localhost ~]# echo "inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0" >/data/oldboy.txt
    [root@localhost ~]# cat /data/oldboy.txt
    inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0


    2、将题1中的oldboy.txt文件内容通过命令过滤只输出如下内容:
    10.0.0.8 10.0.0.255 255.255.255.0

    [root@localhost data]# awk -F "[ :]+" '{print $3,$5,$7}' oldboy.txt
    10.0.0.8 10.0.0.255 255.255.255.0
    [root@localhost data]# awk -F "[ :]+" '{print $3" "$5" "$7}' oldboy.txt
    10.0.0.8 10.0.0.255 255.255.255.0


    3、将题1中的oldboy目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy下:

    [root@localhost ~]# mv /data/oldboy /tmp
    [root@localhost ~]# cp /etc/passwd /tmp/oldboy
    [root@localhost ~]# ls /tmp/oldboy
    oldboy.txt  passwd


    4、在题3的基础上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy/test.txt文件夹里:
    [root@localhost oldboy]# awk 'NR>9 && NR<21' passwd
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
    [root@localhost oldboy]# awk 'NR>9 && NR<21' passwd|cat -n
         1  operator:x:11:0:operator:/root:/sbin/nologin
         2  games:x:12:100:games:/usr/games:/sbin/nologin
         3  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
         4  nobody:x:99:99:Nobody:/:/sbin/nologin
         5  systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
         6  dbus:x:81:81:System message bus:/:/sbin/nologin
         7  polkitd:x:999:998:User for polkitd:/:/sbin/nologin
         8  abrt:x:173:173::/etc/abrt:/sbin/nologin
         9  libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
        10  rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
        11  colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
    [root@localhost oldboy]# awk -F ":" 'NR>9 && NR<21{print $3}' passwd
    11
    12
    14
    99
    192
    81
    999
    173
    998
    32
    997
    [root@localhost oldboy]# awk -F ":" 'NR>9 && NR<21{print $3}' passwd >test.txt
    [root@localhost oldboy]# cat test.txt
    11
    12
    14
    99
    192
    81
    999
    173
    998
    32
    997


    5、在题3的基础上要求:用命令rm删除文件时,提示如下禁止使用rm的提示,并使改效果永久生效:
    [root@localhost oldboy]# alias rm='echo Do not use rm command.'
    [root@localhost oldboy]# ls
    oldboy.txt  passwd  test.txt
    [root@localhost oldboy]# rm test.txt
    Do not use rm command. test.txt

    [root@localhost oldboy]# ls /etc/profile /etc/bashrc (要rm改动永久生效要改这个俩个配置文件)
    /etc/bashrc  /etc/profile
    [root@localhost oldboy]# echo "alias rm='echo Do not use rm command.'" >>/etc/bashrc
    [root@localhost oldboy]# echo "alias rm='echo Do not use rm command.'" >>/etc/profile
    [root@localhost oldboy]# alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='echo Do not use rm command.'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


    6、在题3的基础上,删除/tmp/oldboy下除passwd以外的其他文件:
    [root@localhost oldboy]# cd
    [root@localhost ~]# tree /tmp/oldboy
    /tmp/oldboy
    ├── oldboy.txt
    ├── passwd
    └── test.txt

    0 directories, 3 files
    [root@localhost ~]# find /tmp/oldboy -type f !  -name "passwd"   (!代表取反)
    /tmp/oldboy/oldboy.txt
    /tmp/oldboy/test.txt
    [root@localhost ~]# find /tmp/oldboy -type f !  -name "passwd"|xargs m -f  (由于刚才rm被别名,需加“”转义,即转义到rm本身)
    [root@localhost ~]# tree /tmp/oldboy
    /tmp/oldboy
    └── passwd

    0 directories, 1 file

    7、在题3的基础上请打印/etcpasswd文件中的第2-5行(不低于三种方法):

    方法一:
    [root@localhost ~]# head -5 /etc/passwd |tail -4
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    方法二:
    [root@localhost ~]# sed -n '2,5p' /etc/passwd  (-n代表取消默认输出)
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    方法三:
    [root@localhost ~]# awk 'NR>1 && NR<6' /etc/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


    8、在题3的基础上,使用命令调换passwd文件里,root位置和/bin/bash位置,即将所有的第一列和最后一列位置调换.

    方法一:

    $1,2...  第一,二...列以此类推。但$0:标识一行。

    -F 指定分隔符(-F ":"以:为分隔。$NF是最后一列。$1,$4,$NF逗号让结果间有空格)

    [root@localhost ~]# awk 'NR==1{print $0}' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    [root@localhost ~]# awk -F ":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
    /bin/bash:x:0:0:root:/root:root
    [root@localhost ~]# awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd       (去掉NR==1,就是把所有的行都这样显示)

     

    方法二:

    [root@localhost ~]# sed -nr 's#([^:]+)(:.*:)(/.*$)#321#gp' /etc/passwd

    9、把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy:

    先创建环境:
    [root@localhost ~]# mkdir /data/3306
    [root@localhost ~]# mkdir /data/3307
    [root@localhost ~]# ls /data
    123.txt  3306  3307  456.txt  oldboy.txt
    [root@localhost ~]# echo "oldgirl1" >/data/123.txt
    [root@localhost ~]# echo "oldgirl1" >/data/456.txt
    [root@localhost ~]# echo "oldgirl1" >/data/3306/aa.txt
    [root@localhost ~]# echo "oldgirl1" >/data/3307/bb.txt
    [root@localhost ~]# tree /data
    /data
    ├── 123.txt
    ├── 3306
    │   └── aa.txt
    ├── 3307
    │   └── bb.txt
    ├── 456.txt
    └── oldboy.txt

    2 directories, 5 files
    [root@localhost ~]# find /data -type f -name "*.txt"
    /data/oldboy.txt
    /data/123.txt
    /data/456.txt
    /data/3306/aa.txt
    /data/3307/bb.txt
    [root@localhost ~]# find /data -type f -name "*.txt" |xargs cat
    oldgirl1
    oldgirl1
    oldgirl1
    oldgirl1
    [root@localhost ~]# find /data -type f -name "*.txt" |xargs sed 's#oldgirl#oldboy#g'
    oldboy1
    oldboy1
    oldboy1
    oldboy1
    [root@localhost ~]# find /data -type f -name "*.txt" |xargs sed -i 's#oldgirl#oldboy#g'     (加i生效了,结果就不会显示列在屏幕上了)
    [root@localhost ~]# find /data -type f -name "*.txt" |xargs cat
    oldboy1
    oldboy1
    oldboy1
    oldboy1

    10、查找/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下:

    创建环境:
    [root@localhost ~]# mkdir /oldboy
    [root@localhost ~]# cd /oldboy
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# cat /var/log/dmesg >>123.log
    [root@localhost oldboy]# ls /oldboy
    123.log
    [root@localhost oldboy]# 11 -h
    bash: 11: command not found...
    [root@localhost oldboy]# ll -h
    total 960K
    -rw-r--r-- 1 root root 696K Apr  1 00:16 123.log
    [root@localhost oldboy]# cat 123.log >>456.log
    [root@localhost oldboy]# cat 123.log >>456.log
    [root@localhost oldboy]# cat 123.log >>456.log
    [root@localhost oldboy]# cat 123.log >>456.log
    [root@localhost oldboy]# ll -h
    total 4.6M
    -rw-r--r-- 1 root root 696K Apr  1 00:16 123.log
    -rw-r--r-- 1 root root 2.8M Apr  1 00:17 456.log
    [root@localhost oldboy]# ls -lh /oldboy    (这里看到在oldboy目录下有2个文件)
    total 4.6M
    -rw-r--r-- 1 root root 696K Apr  1 00:16 123.log
    -rw-r--r-- 1 root root 2.8M Apr  1 00:17 456.log

    定义文件时间:
    [root@localhost oldboy]# date -s 20180601  (系统时间后调,实际时间其实是2018-5-3)
    Fri Jun  1 00:00:00 CST 2018
    [root@localhost oldboy]# stat 123.log (检查文件创建时间)
      File: ‘123.log’
      Size: 712614          Blocks: 1392       IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 2706511     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-04-01 00:17:08.001906285 +0800
    Modify: 2018-04-01 00:16:06.678311769 +0800
    Change: 2018-04-01 00:16:06.678311769 +0800

    [root@localhost oldboy]# find /oldboy -type f -name "*.log" -size +1M -mtime +7   (查找符合题目条件的文件)
    /oldboy/456.log
    [root@localhost oldboy]# find /oldboy -type f -name "*.log" -size +1M -mtime +7 -exec mv {} /tmp ;    (没有报错就是最好的消息,哈哈)
    [root@localhost oldboy]# ls -lh /tmp  (查看/tmp下是否有456.log文件)
    total 3.6M
    -rw-r--r--  1 root   root   2.8M Apr  1 00:17 456.log

    十一、什么是Linux的运行级别,请描述Linux的运行级别不同数字的含义(附加题):

    Default runlevel.The runlevels used are:
    0-halt(Do NOT set initdefault to this)      关机。
    1-Single user mode              单用户状态,需要维护服务器时用,比如密码丢失。
    2-Multiuser,without NFS(The same as 3,if you not have networking)   多用户模式。
    3-Full multiuser mode      完整多用户模式,命令行模式.工作环境一般用3级别。
    4-unused     没有使用,预留的。
    5-Xll        带桌面的模式。
    6-reboot (Do NOT set initdefault to this)   重启。

    查看当前Linux运行模式:
    [root@localhost ~]# runlevel
    N 5
    运行级别是可以切换的:
    [root@localhost ~]# init 输入数字0-6,就切换到你要的模式。

    十二、请描述buffer和cache的区别(附加题):

    写入数据到内存里,这个数据的内存空间成为缓冲区:buffer。写入缓冲区。
    从内存读取数据,这个存数据的内存空间成为缓存区:cache。内存缓冲区。

    十三、下列字符在Linux里代表的意义:


    1      >或l>          #输出重定向:把前面输出的东西输入到后面的文件中,会清楚文件原有内容。
    2      >>或l>>     #追加重定向:吧前面输出的东西追加到后面的文件尾部,不会清除文件原有内容。
    3      0<或<        #输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
    4      0<<或<<    #追加输入重定向:后面跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
    5      2>              #错误重定向:把错误信息输入到后面的文件中,会删除文件原有内容。
    6      2>>           #错误追加重定向:把错误信息追加到后面的文件中,不会删除文件原有内容。
    7      *                #通配符,代表所有。
    8      |         #表示管道
    9      ..        #上一级目录
    10     .        #当前目录
    11    =       #linux里   一个=号是赋值的意思,俩个==号才是等于的意思
    12    /        #在linux里代表根,所有目录的顶点,也是路径的分隔符。
    13    ;     #命令的分隔符
    14    {}      #生成字符或数字序列,类似seq,一般配合echo等命令使用。find里的{}意思是前面命令的结果。
                      [root@localhost ~]# rm -fr /data
                      [root@localhost ~]# mkdir /data/{3306,3307}/data -p
                      [root@localhost ~]# tree /data
                        /data
                      ├── 3306
                      │   └── data
                      └── 3307
                      └── data
                      4 directories, 0 files
    15    !  #一、!+字母 :表示调出最近一次以此字母开头的命令。
                   二、!!:表示使用最近一次操作的命令。
                   三、!+数字:表示调出历史中的那一个命令。
                          178  cd /data
                         179  mkdir /data/{3306.3307}/data -p
                         181  history
                         [root@localhost ~]# !178
                         cd /data
                  四、取反(find,shell编程)比如find一个文件,加!就是列出除了find的哪一个以外的所有文件。
                         [root@localhost data]# cd /oldboy
                         [root@localhost oldboy]# ll
                         total 8
                         -rw-r--r--. 1 root root  0 Apr 25 17:02 a
                         -rw-r--r--. 1 root root  0 Apr 25 17:02 b
                         -rw-r--r--. 1 root root  0 Apr 25 17:02 c.txt
                         drwxr-xr-x. 3 root root 29 Apr 25 17:19 test
                         -rw-r--r--. 1 root root  7 Apr 25 17:19 test.sh
                         -rw-r--r--. 1 root root  7 Apr 25 17:19 t.sh
                         [root@localhost oldboy]# find /oldboy -type f -name "test.sh"
                         /oldboy/test.sh
                         [root@localhost oldboy]# find /oldboy -type f ! -name "test.sh"  (!取反向结果)
                          /oldboy/test/del.sh
                         /oldboy/.sh
                         /oldboy/t.sh
                         /oldboy/a
                         /oldboy/b
                         /oldboy/c.txt
    16    ~          #当前用户的家目录。
    17    -          #用户上一次所在的目录。由OLDPWD变量控制。
                          cd - :回到上一次的目录。
    18              #转义字符,让有意义的字符,脱掉它代表的意义。例如:正则里$表示以...结尾,可以用$表示$符号本身。
    19    &&      #并且,and。

  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/sinsenliu/p/8985726.html
Copyright © 2011-2022 走看看