zoukankan      html  css  js  c++  java
  • L014-第三关课前linux命令及基础知识考试手把手实战解答小节

    又是一周啊,以后保持一周一个微博吧。

    这是一个堂解答考试题的课,那么就以题目来展开吧!

    1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这样的数字。


    首先,关于权限

    r read

    w write

    x 执行

    - 无

    stat  显示文件属性命令
    
    -c 自定义输出格式,结尾有换行
    -L 如果是链接文件,则获取原文件信息
    -f 显示文件所在的文件系统的状态
    %a 八进制格式的文件访问权限
    %s  文件大小(单位byte)

    此时我们用stat命令来查看一下

    [root@moban ~]# stat etiantian.txt 
      File: `etiantian.txt'
      Size: 14              Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d      Inode: 194         Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-05-03 23:19:15.730978904 +0800
    Modify: 2016-05-03 23:19:12.106982349 +0800
    Change: 2016-05-03 23:19:12.106982349 +0800

    在命令输出结果的第4行,我们看到了此etiantian.txt的数字权限为0644

    下一步,我们把0644的值给取出来就达到题目的要求了。

    答:

    使用“cut”

    [root@moban ~]# stat etiantian.txt | sed -n 4p | cut -c 10-13
    0644

    使用“sed”

    [root@moban ~]# stat etiantian.txt | sed -n 's#^.*ccess: ((.*)/-r.*$#1#gp'    //正则表达式
    0644

     使用“awk”

    [root@moban ~]# stat etiantian.txt | awk -F "[(/]" 'NR==4 {print $2}'  
    0644

    根据man stat,使用stat

    [root@moban ~]# stat -c %a etiantian.txt 
    644

    特别笨的方法:

    [root@moban ~]# ll etiantian.txt | cut -c 2-10 | tr rwx- 4210 | awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
    644

    本题小节(思路):

    本题其实就是3点思路:

    1、 通过stat输出包含目标的内容。

    2、 通过headtailsedawkgrep定位到单行-->这是取行惯用命令

    3、 通过cutawk等设置分隔符取出需要段内容-->这是取列的惯用命令

    4、 当命令结果包含我们需要的内容的时候,我们想到命令的参数是否有具体的参数能够一步到达我们需要的结果呢?这样会去 man stat了。

     


    2.linux下通过mkdir命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?

     答:2个。

    ett有两个硬链接,一个是他本身,他本身就是一个硬链接,另一个是ett目录下有一个隐藏目录“.”,他是ett的硬链接。

    另一问:linux下通过mkdir命令创建一个新目录/oldboy/ett/loi,ett的硬链接数是多少,为什么?

     

    除了上题的答案外,loi目录下有一个隐藏目录“..”他是指向上级ett的一个硬链接,所以有3个。


    3.请执行命令取出linuxeth0IP地址(请用cut,有能力者也可分别用awksed命令答)

    答:


    使用“cut”

    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  //调出配置文件查看IP所在行
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    DNS1=192.168.85.2
    USERCTL=no
    IPV6INIT=no
    HWADDR=00:0c:29:9b:32:97
    IPADDR=192.168.85.199
    NETMASK=255.255.255.0
    GATEWAY=192.168.85.2
    
    
    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -n 10p | cut -c 8-
    192.168.85.199

    使用“awk”

    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  //调出配置文件查看IP所在行
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    DNS1=192.168.85.2
    USERCTL=no
    IPV6INIT=no
    HWADDR=00:0c:29:9b:32:97
    IPADDR=192.168.85.199
    NETMASK=255.255.255.0
    GATEWAY=192.168.85.2
    
    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F "=" 'NR==10 {print $2}'
    192.168.85.199

    使用“sed”

    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  //调出配置文件查看IP所在行
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    DNS1=192.168.85.2
    USERCTL=no
    IPV6INIT=no
    HWADDR=00:0c:29:9b:32:97
    IPADDR=192.168.85.199
    NETMASK=255.255.255.0
    GATEWAY=192.168.85.2
    
    [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -n  "10s#^.*DDR=(.*)#1#gp"     //"1" 为指向括号()括号中的内容引到里面来,10为第10行。
    192.168.85.199

    4.请给出默认情况eth0网卡配置文件的路径及客户端DNS的路径

    答:

    网卡路径:/etc/sysconfig/network-scripts/ifcfg-eth0

    DNS路径:/etc/resolv.conf


    5.查找当前目录下所有文件,并把文件中的www.oldboy.cc字符串替换成www.etiantian.org

    答:

    [root@moban ~]# grep -lr "www.oldboy.cc" /root/ | xargs sed -i "s#www.oldboy.cc#www.etiantian.org#g"    //-l参数是文件内部查找 -r是循环参数

    企业真实案例:

    网站被攻击,发现所有的文件都有一句话,oldboylichaoran  。导致很多文件现阶段不不可用,现在寻求解决办法。

    答:

    ①模拟攻击:

    此命令是寻找lkjiop的普通文件,并把每个文件的第一行都插入oldboylichaoran字符

    [root@moban lkjiop]# find ./ -type f | xargs sed -i '1 i oldboylichaoran'                //-i为sed写入参数 1为行 i为写入 后面接写入字符

    ②处理命令

    [root@moban lkjiop]# find ./ -type f | xargs sed -i 's#oldboylichaoran##g'    //把所有文件中的oldboylichaoran都替换成空

    但是会出现一个小问题,此时我们看一个其中改过的文件:

    [root@moban lkjiop]# cat 234.txt 
    
    asdjasjkfbsdkjgbsdkj
    asdjkhasbfjshdfbjhsd
    asfhjsdbfjhsdbf
    asddbsdjfbjsdhfbs
    asdasjkfbsdkjbfsd
    sfdskdjbsdgbsdkg
    sdfkjsdgskdghskdgfs
    jskdgfnsdkjgnkjg
    456
    123

    由此可以看出虽然把需要删除的字符都删除掉了, 但是第一行却留空了,如果在程序中可能就会导致程序出错,所以可以用此命令解决:

    [root@moban lkjiop]# find ./ -type f | xargs sed -i '/^$/d'

    这样就不会出现问题了,或者有一步解决的办法,跟上边这个命令是一个道理:

    [root@moban lkjiop]# find ./ -type f | xargs sed -i '/oldboylichaoran/d'

    这样问题就解决了,而不需要分两步。不过根据现代科学唯物主义论(具体问题具体分析)来说,也有分两步的好处,如果需要替换的文字是特别多的符号的话,那么符号都要打转义符,不光自己眼花,还容易出错,索性就分两步走啦。

    最后一定要亡羊补牢,寻找问题来源,补好漏洞:①网站目录权限降低 ②上传附件的入口做详细过滤


    6.问题:如何赋予oldboy文件-rw-r--r-x权限属性

    答:

    [root@moban ~]# chmod 645 trf.txt 
    [root@moban ~]# ll
    -rw-r--r-x   1 root root      19 Mar  6 01:33 trf.txt

    7.执行下面命令时发现提示需要输入密码,请问提示输入的密码是那个用户的密码。

    [test@oldboy ~]$ sudo su - oldboy

    答:

    oldboy


    8.问题:请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。

    命令:

    echo

    常用参数:

    -n未不切行,同一line下输出

    -e 使用转义字符(如

    [root@moban ~]# echo -e "oldboy	oldboy" 
    oldboy  oldboy
    [root@moban ~]# echo -e "oldboy
    oldboy" 
    oldboy
    oldboy

    9.问题,请给出如下格式的date命令 例:12-02-26. 在给出实现按周输出 比如:周六输出为6,请分别给出命令。

     答:

    [root@moban ~]# date '+%y-%m-%d'     //y年 m月 d日
    16-04-27

    查看目前是星期几

    [root@moban ~]# date '+%w'        //今天是2016.4.28 日星期四
    4

    简写法

    [root@moban ~]# date +%F
    2016-05-11

    日期和时间

    [root@moban ~]# date '+%F' %H:%M:%S
    2016-05-11 13:15:24

    日期和时间简写

    [root@moban ~]# date '+%F' %T
    2016-05-11 13:15:43

    使用echo输出需要$()或者``才能执行

    [root@moban ~]# echo $(date +%F)  //$()放在里面命令可以执行
    2016-05-11

    实用举例

    比如每天都要打包一个文件夹,且加上日期,那么每天都写日期会比较麻烦,可以用下面的命令:

    [root@moban ~]# tar czvf oldboy-$(date +%F).tar.gz ./oldboy   // $()跟``是一样,输出程序使用
    ./oldboy

    另一只方法,主要是为了显示$()和``两种写法

    [root@moban ~]# tar czvf oldboy-`date +%F`.tar.gz ./oldboy  //同上 
    ./oldboy

    删除7天前文件

    [root@moban ~]# find ./ -type f -name "*.log" -mtime+7 | xargs rm –f
    [root@moban ~]# find ./ -name 2016-05-20log.gz.tar -exec rm -f {} ;    //顺便复习一下exec  嘿嘿嘿

    10.问题:当从root用户切到普通用户时,执行ifconfig会提示。

    [oldboy@student ~]$ ifconfig

    -bash: ifconfig: command not found

    提示:centOS5.8会遇到,centOS6.4没有此问题

    请问这是为什么?如何解决,请给出详细解决过程。

     答:

    因为centos 5中ifconfig默认为系统管理员的命令,在切换到普通用户后使用ifconfig提示不能使用

    第一种解决办法:

    普通用户可以使用全路径进行使用ifconfig

    [root@moban ~]# which ifconfig
    /sbin/ifconfig

    第二种方法

    使用PATH方法生效

    [root@moban ~]# export PATH=%PATH"%HOME/bin:/sbin        //export为设置或查看环境变量命令

    第二种方法在重启后回恢复,所以需要第三种方法永久修改。

    第三种方法:

    [root@moban ~]# cat /etc/profile            //放在此文件中将永久使用
    把export PATH=%PATH"%HOME/bin:/sbin命令放入profile文件中
    
    [root@moban ~]# source .bash_profile    //使修改生效

    11.问题:扩展问题:打印三天前的日期格式:2016.4.28

    答:

    [oldboy@moban ~]$ date +%y-%m-%d --date="-3 day"  //今天2016.4.28
    16-25-25

    简写

    [root@moban ~]# date +%F -d -3day
    2016-05-08

    扩展一下:3小时前

    [root@moban ~]# date +%H -d '-3hour'        //3小时前
    12

    创建名字为当前日期三天前的压缩包

    [root@moban ~]# tar czvf oldboy$(date +%F -d '-3day').tar.gz ./oldboy
    ./oldboy
    [root@moban ~]# ll
    total 7772
    -rw-r--r--   1 root root     112 May 11 15:24 oldboy2016-05-08.tar.gz

    12.已知/oldboy/test.txt文件内容为

    oldboy

     

    xizi

     

    xiaochao

    答:

    grep方法

    [root@moban ~]# grep -v ^$ test.txt         //grep方法
    oldboy
    xizi
    xiaochao

    sed方法

    [root@moban ~]# sed "/^$/d" test.txt    //sed方法
    oldboy
    xizi
    xiaochao

    awk方法

    [root@moban ~]# cat test.txt | awk /^[^$]/    //awk 方法 非空行开头的
    oldboy
    xizi
    xiaochao

    13.已知/oldboy/ett.txt文件内容为:

    oldboy

    olldboooy

    test

    请使用grepegrep正则匹配的方式过滤出前两行的内容

    答:

    查看ett.txt文件

    [root@moban ~]# cat ett.txt 
    oldboy
    oldboooy
    test

    分别用egrep、grep、sed

    [root@moban ~]# grep -Ev "oldboy|oldboooy" ett.txt     //grep
    test
    
    [root@moban ~]# egrep -v "oldboy|oldboooy" ett.txt     //egrep
    test
    
    [root@moban ~]# sed -n /old/p ett.txt      //sed
    oldboy
    oldboooy

    14.请描述下列路径的内容是做什么的?

    /var/log/messages

    /var/log/secure

    /var/spool/clientmqueue

    /proc/interupts

    /etc/fstab

    /etc/profile

    答:

    /var/log/messages //系统日志

    /var/log/secure //显示登录信息,安全的文件

    /var/spool/clientmqueue //邮件临时目录

    /proc/interrupts //查看中断文件

    /etc/fstab //开机自动挂载磁盘的文件

    /etc/profile //全局环境变量存放文件


    15.如何快速查到ifconfig的全路径(加入你不知道其路径),请给出命令

    which(我最熟悉的)

    [root@moban ~]# which ifconfig
    /sbin/ifconfig

    whereis

    [root@moban ~]# whereis -b ifconfig  //-b 查看二进制文件
    ifconfig: /sbin/ifconfig

    find(但是我感觉速度上有点慢)

    [root@moban ~]# find / -name "ifconfig"   //
    /sbin/ifconfig

    16.每周日上午930分来老男孩linux培训上课(用/oldboy.sh),请用linxu定时任务命令。

    答:

    参考这篇文章:

    http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

    [root@moban ~]# crontab –e
    */5 * * * * /usr/sbin/ntpdate time.nist.gov >dev/null 2>&1
    *30 *9 * * *0 /root/oldboy.sh

    17.请给出查看当前那些用户在线的linux命令。

    答:

    常用的就是who了

    [root@moban ~]# who
    oldboy   pts/0        2016-05-18 09:17 (192.168.85.1)

    再一个就是w

    [root@moban ~]# w
     12:52:17 up  2:15,  1 user,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    oldboy   pts/0    192.168.1.12     10:37    0.00s  0.11s  0.01s sshd:

     使用whoami

    [root@moban ~]# whoami
    Root

    使用id

    [root@moban ~]# id –un
    Root

    19.请给出正确的关机和重启服务器的命令

    答:

    关机

    Shutdown –h now

    Init 0

    halt

    poweroff

    重启

    Shutdown –r now

    Init 6

    reboot

    注销:

    logout

    exit

    ctrl + D


    20.请写下面面linux secureCRT命令行快捷快捷键命令的功能?

    答:

    Ctrl + a  移到命令行首

    Ctrl + c  取消

    Ctrl + d logout linux的注销

    Ctrl + e 移到命令行尾

    Ctrl + L 清屏

    Ctrl + R 查找

    Ctrl + u 从光标处删除至命令行首

    Ctrl + k 从光标处删除至命令行尾

    Ctrl + xx:在命令行首和光标之间移动

    Tab 自动补全

    Ctrl + shift + c 复制选中字段

    Ctrl + shift + v 粘贴选中字段

  • 相关阅读:
    使用fiddler2抓取手机发出的请求信息
    HTML转义字符集合
    spm3安装和使用
    JSP
    Servlet
    Struts2
    java多线程-消费者和生产者模式
    java异常处理机制(try-catch-finally)
    java内部类
    java上转型和下转型(对象的多态性)
  • 原文地址:https://www.cnblogs.com/lcrbg/p/5512127.html
Copyright © 2011-2022 走看看