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。

  • 相关阅读:
    CSS3选择器之:nth-child(n)
    【转】JS中,中国标准时间转化为yyyy-MM-dd
    【转】浅谈JavaScript中forEach与each
    Can't connect to MySQL server (10060)
    Linux/CentOS下安装MySql RPM Bundle
    查看CentOS/Linux的版本信息
    Java中IO流,输入输出流概述与总结
    阿里历年经典Java面试题汇总
    架构师眼中的高并发架构
    Java面试经
  • 原文地址:https://www.cnblogs.com/sinsenliu/p/8985726.html
Copyright © 2011-2022 走看看