Linux+Python高端运维班第一次作业

*爱你&永不变心* 提交于 2020-08-07 08:31:31

Linux+Python高端运维班第一次作业

 

1、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

1linux的发行版介绍

       slackwareSlackware Linux是由Patrick Volkerding开发的GNU/Linux发行版,一直坚持KISS原则。

           suse:在欧洲比较流行的linux发行版本

              slessuse企业版

              opensusesuse桌面免费发行版本

       debian:服务器版,消耗资源少,稳定。

           ubuntu

           mint

       redhat:成立于1992

           rhelredhat enterprise linux,用于企业商用,为了保证服务器稳定,每18个月发行一个新版本

           centos:开源版本,和RHEL几乎一样,兼容rhel的格式,已被redhat收购。

           fedoralinux免费桌面版,得到redhat官方支持,用于测试新软件,每6个月发行一个新版本

        Archlinux

        Gentoo

        LFS:Linux From scratch

        Androld:kernel+busybox+java虚拟机,主要用于移动终端

2)不同发行版之间的联系

   都是在开源的linux内核代码进行再次开发而形成不同的发行版,而且必须支持GNU中包含的自由软件协定,GNU包含的自由软件协定包含GPLv2GPLv3LGPL。各发行版其中SLESsuse的企业版本,opensusesuse的免费桌面版,ubuntumint都是基于dibian的桌面版,RHELredhat面向企业商用的服务器版,fedora属于redhat的桌面版本,由redhat赞助fedora社群免费维护,centos主要面向企业服务器,由开源社区提供免费技术支持,后来被redhat收购,目前仍然免费。

3)各发行版之间的区别

   包管理系统不同,SLESFedoraopenSUSEcentosRHEL采用rpm包管理系统,包文件以rpm为扩展名;Ubuntu系列,Debian系列采用DPKG包管理系统。

 

2、说明Linux系统上命令的使用格式;详细介绍ifconfigechottystartxexportpwdhistoryshutdownpoweroffreboothwclockdate命令的使用,并配合相应的示例来阐述。

1linux系统命令的使用格式

  COMMAND [OPTIONS...] [ARGUMENTS...]

   OPTIONS:用于启用或关闭命令的某个功能,支持长选项(例如--long--human--readable)和短选项(例如-a-l),多个短选项还可以合并(例如-a -l可以合并为-al

  argument:命令的作用对象,向命令提供的数据。

2ifconfig命令说明

   命令介绍:ifconfig命令主要用于显示与配置网络接口;

   参数:

       -a:显示所有接口状态

           示例:

[root@localhost ~]# ifconfig -a
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.138.128  netmask 255.255.255.0  broadcast 192.168.138.255
        inet6 fe80::20c:29ff:fe54:7f72  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:54:7f:72  txqueuelen 1000  (Ethernet)
        RX packets 3867  bytes 371830 (363.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1439  bytes 214471 (209.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 56  bytes 4796 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 56  bytes 4796 (4.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 00:00:00:00:00:00  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 52:54:00:ff:68:92  txqueuelen 500  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0































       -s:通过短格式显示当前所有网络接口的状态

            示例:

[root@localhost ~]# ifconfig -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno16777  1500     3911      0      0 0          1451      0      0      0 BMRU
lo       65536       56      0      0 0            56      0      0      0 LRU
virbr0    1500        0      0      0 0             0      0      0      0 BMU
virbr0-n  1500        0      0      0 0             0      0      0      0 BMU




       -v:显示更详细的信息,包含一些错误条件。

            示例:

[root@localhost ~]# ifconfig -v
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.138.128  netmask 255.255.255.0  broadcast 192.168.138.255
        inet6 fe80::20c:29ff:fe54:7f72  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:54:7f:72  txqueuelen 1000  (Ethernet)
        RX packets 4203  bytes 402414 (392.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1519  bytes 237445 (231.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 56  bytes 4796 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 56  bytes 4796 (4.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 00:00:00:00:00:00  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 52:54:00:ff:68:92  txqueuelen 500  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0































       interface(接口):在命令后指定特定接口名称可单独显示此接口的当前状态信息

                示例:

[root@localhost ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 56  bytes 4796 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 56  bytes 4796 (4.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0







       down:关闭指定的网络接口

              示例:

[root@localhost Desktop]# ifconfig eno16777736 down
[root@localhost Desktop]# ifconfig eno16777736
eno16777736: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 00:0c:29:54:7f:72  txqueuelen 1000  (Ethernet)
        RX packets 5603  bytes 541048 (528.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2017  bytes 333258 (325.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0






      up:启动指定的网络接口

            示例:

[root@localhost Desktop]# ifconfig eno16777736 up
[root@localhost Desktop]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.138.128  netmask 255.255.255.0  broadcast 192.168.138.255
        inet6 fe80::20c:29ff:fe54:7f72  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:54:7f:72  txqueuelen 1000  (Ethernet)
        RX packets 5617  bytes 542752 (530.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2048  bytes 337901 (329.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0








      arp:开启关闭指定网卡的arp协议

            ifconfiginterface -arp:关闭arp协议,此时使用ssh无法连接linux主机

            ifconfiginterface arp:开启arp协议,此时ssh连接linux主机正常

       promisc:开启关闭指定网卡的混杂模式,混杂模式主要用于网络诊断

            ifconfiginterface -promisc:关闭指定网卡的混杂模式

            ifconfiginterface promisc:开启指定网卡的混杂模式

       allmulti:开启关闭指定网卡的组播模式

            ifconfiginterface -multicast:关闭指定网卡组播

            ifconfiginterface multicast:开启指定网卡组播

       mtu n:设置指定网卡的最大传输速率

            示例:

[root@localhost ~]# ifconfig eno16777736 mtu 800
[root@localhost ~]# ifconfig eno16777736 
eno16777736: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 800
        inet 192.168.138.128  netmask 255.255.255.0  broadcast 192.168.138.255
        ether 00:0c:29:54:7f:72  txqueuelen 1000  (Ethernet)
        RX packets 6460  bytes 622692 (608.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2561  bytes 414568 (404.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0







     dstaddr:设置指定网络接口点对点连接,重启失效。

           示例:

  ifconfig eno16777736 dstaddr 192.168.38.0

     netmask:设置指定网卡的子网掩码

       add addr/prefixlen:设置指定网卡IPv6IP地址

       del addr/prefixlen:删除指定网卡的IPv6IP地址

       tunnel aa.bb.cc.dd:建立IPv6IPv4间的隧道通信协议

       irq addr:设置网卡的中断号

       [-]pointopoint [addr] 与指定地址的网络设备建立直接连线,此模式具有保密功能,不能通过SSH远程连接使用此命令。

            示例:

ifconfig eno16777736 -pointopoint192.168.138.1

       address:为指定网卡设置临时IP地址,重启后失效。

3echo命令说明

   echo为回显命令

      示例:

[root@localhost ~]# echo "How areyou"
How are you

     -n:禁止自动增加换行符号

          示例:

[root@localhost ~]# echo -n "How areyou"
How are you[root@localhost ~]#

     -e: 允许使用转义符;

\n: 换行

\t: 制表符

        示例:

[root@localhost ~]# echo -e "Hi \nboy \n Hi \t girl"
Hi 
boy 
 Hi      girl


echo "$VAR_NAME": 变量会替换,双引号表弱引用 

echo '$VAR_NAME': 变量不会替换,强引用

          示例:

[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo '$PATH'
$PATH


    

4)tty命令说明

  用途:查看当前的终端设备

  示例:

[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# tty --version
tty (GNU coreutils) 8.22


5startx

   用途:用于在服务器或终端商启动X会话

   强制启动X会话

startx -w

    X 终端启动 X 会话,并注销用户的 telnet 会话

startx; kill -9 $$

6export命令说明

   用途:用于为变量赋值,单独使用时可打印当前系统所有环境变量。

[root@localhost ~]# export a=b
[root@localhost ~]# echo $a
b

7pwd命令说明

   用途:用于显示当前目录

   示例:

[root@localhost etc]# pwd
/etc

8history命令说明

   用途:用来管理命令的历史记录,当前命令记录保存在内存中,当登出系统时会追加到用户家目录的隐藏文件 .bash_history中。

   环境变量:

       HISTSIZE:记录的命令行数

       HISTFILE:命令历史文件

       HISTFILESIZE:命令历史文件最大记录命令数

   示例:

[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
[root@localhost ~]# echo $HISTFILESIZE
1000




   命令参数:

       -a:追加本地登录新执行的命令历史列表到命令历史文件中,例:history -a

       -d offset:通过命令编号删除命令历史中指定命令,例:history -d 30

       -c:清空命令历史,例:history -c

   调用历史中的命令:

       !#:调用命令历史中第#号命令,例:!30

       !string:调用命令历史中最近一个以string开头的命令,例:!h

       !!:重复运行上一条命令,例如:!!

   调用前一条命令的参数

       !$:调用上一条命令的参数          

[root@localhost etc]# cd /root
[root@localhost ~]# ls -l !$
ls -l /root
total 15480
-rw-------. 1 root root    1441 Nov 28 04:59 anaconda-ks.cfg
-rw-------. 1 root root 5304320 Nov 27 21:37 core.13122
-rw-------. 1 root root 5210112 Dec  1 13:54 core.7223
-rw-------. 1 root root 5328896 Dec  1 14:00 core.7730
drwxr-xr-x. 2 root root      22 Dec  1 14:05 Desktop
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Documents
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Downloads
-rw-------. 1 root root    1489 Nov 27 21:11 initial-setup-ks.cfg
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Music
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Pictures
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Public
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Templates
drwxr-xr-x. 2 root root       6 Nov 28 20:58 Videos















       ESC,.:功能同上,先输入命令,然后按ESC后在按.号可以直接调用前一条命令的参数。

   HISTCONTROL:history的环境变量

       ignoredups:忽略重复且连续的命令,例如连续输入多次‘ls -l’,则history仅记录一条

       ignorespace:忽略以空格开始的命令,例如输入命令‘  ls-l’history将不记录此命令

       ignoreboth:ignoredupsignorespace将同时生效。

   HISTCONTROL环境变量配置方法:     

[root@localhost ~]# echo $HISTCONTROL
ignoredups
[root@localhost ~]# export HISTCONTROL='ignoreboth'
[root@localhost ~]# echo $HISTCONTROL
ignoreboth



9)shutdown命令说明

  用途:用于操作系统退出、注销、关机、重启等操作,还可以指定关机时间。

  命令格式:shutdown [option]... TIME[MASSAGE]

  参数解析:

      -r:立即重启,例:shutdown -r

      -h:立即关机,例:shutdown -h

      -c:取消关机操作,例:shutdown -c

  TIME使用解析:

      now:立刻执行,例:shutdown now

      +m:相对于现在多少分钟后关机,例:shutdown +m

      hhmm:绝对时间,具体关机时间,例:shutdown 10:30

      

10poweroff命令说明

   用途:关机。

   参数:

       -f:不调用shutdown,强制关机

       -p:关机且切断电源

       

11reboot命令说明

   用途:重启命令

   参数:

        -f:强制重启,例:reboot -f

12hwclock命令说明

   用途:显示和设置硬件、系统时钟同步

   格式:hwclock [-ARGUMENT]

   参数:

       -s:将系统时钟同步为硬件时钟

       -w:将硬件时钟同部为系统时钟

13date命令说明

   用途:显示和设置时间

   格式:

       显示:date [OPTION]... [+FORMAT]

           参数:

               %D:按照年//日的方式显示时间

               %F:按照年--日的方式显示时间

               %T:按照时--秒的方式显示时间

               示例:

[root@localhost ~]# date +%F-%D-%T
2016-12-01-12/01/16-21:00:04

       设置:date [MMDDhhmm[[CC]YY][.ss]]

           参数:

               MM: 月分

       DD:几号

       hh: 小时

       mm: 分钟

       YY: 两位年份

       CCYY: 四位年份

       .ss: 秒钟

                示例:

[root@localhost ~]# date 120121002016.40
Thu Dec  1 21:00:40 CST 2016

 

3、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。

1)linux帮助信息获取方法

  命令的路径与帮助文档查询方式:

      which:查询命令的二进制文件存放路径

      whereis:查询命令所有帮助文档章节存放路径

[root@localhost ~]# which cd
/usr/bin/cd
[root@localhost ~]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz


  内部命令查看帮助的方法

      help COMMAND

[root@localhost ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    
    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
        -e      if the -P option is supplied, and the current working directory
        cannot be determined successfully, exit with a non-zero status
    
    The default is to follow symbolic links, as if `-L' were specified.
    
    Exit Status:
    Returns 0 if the directory is changed, and if $PWD is set successfully when
    -P is used; non-zero otherwise.


























   外部命令查看帮助的方法

       COMMAND --helpCOMMAND -h

[root@localhost ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file







[root@localhost ~]# copy -h
bash: copy: command not found...
[root@localhost ~]# useradd -h
Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]




       使用手册(manual);man COMMAND

[root@localhost test]# man ls
LS(1)                                                                      User Commands                                                                     LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION.......








      信息页info COMMAND

[root@localhost test]# clear
[root@localhost test]# info tree
File: *manpages*,  Node: tree,  Up: (dir)

      程序自身的帮助文档:README,INSTALL,Changelog

      发行版的官方文档

      Google

2man的章节划分

       man1:用户命令

       man2: 系统调用

       man3: C库调用

       man4: 设备文件及特殊文件

       man5: 配置文件格式

       man6: 游戏

       man7: 杂项

      man8: 管理类的命令

   man手册存放在/usr/share/man中,有些命令不止在一个章节,具体存在的章节可以通过whatis进行查看。

 

4Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

1Linux上的文件管理命令主要有:cpmvrm

2)复制命令:cp

   cp使用命令格式:

       cp [OPTION]... [-T] SOURCEDEST

       cp [OPTION]... SOURCE...DIRECTORY

       cp [OPTION]... -t DIRECTORYSOURCE...

    cp src(源) DEST(目标)

       src是文件

          DEST是文件

              DEST不存在:cp命令会在在目标中创建一个DEST的文件,并将src文件的内容填充至DEST

                 示例:

[root@localhost test]# ls
file1
[root@localhost test]# cp file1 /root/test/file2
[root@localhost test]# ls
file1  file2



              DEST存在:cp命令会将src中的内容填充到DEST文件中,俗称覆盖,建议加‘-i’参数

                 示例:

-rw-r--r--. 1 root root 16 Dec  4 14:48 file1
-rw-r--r--. 1 root root 16 Dec  4 14:50 file2
[root@localhost test]# cp file1 file2
cp: overwrite ‘file2’? y


    cp src...DEST

       src为多个文件

           DEST必须存在,且为目录

    cp -r src  DEST

       src是目录

          如果DEST不存在:则会创建DEST目录,然后将制定文件复制到DEST目录中

              示例:

[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec  4 15:00 d1
[root@localhost test]# cp -r d1 d2
[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec  4 15:00 d1
drwxr-xr-x. 2 root root 6 Dec  4 15:01 d2






          如果DEST是目录且已存在:则会将src复制到DEST目录下

              示例:

[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec  4 15:00 d1
drwxr-xr-x. 2 root root 6 Dec  4 15:01 d2
[root@localhost test]# cp -r d1 d2
[root@localhost test]# ll d2
total 0
drwxr-xr-x. 2 root root 6 Dec  4 15:03 d1






         如果DEST是文件:则会报错

              示例:

[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec  4 15:00 d1
-rw-r--r--. 1 root root 0 Dec  4 15:05 d2
[root@localhost test]# cp -r d1 d2
cp: cannot overwrite non-directory ‘d2’ with directory ‘d1’




   cp常用选型:

      -i:交互式,当文件存在时提示是否覆盖

      -r, -R: 递归复制目录及内部的所有内容;

      -a: 归档,相当于-dR --preserv=all:复制时保留源文件和目录的所有属性

      -d--no-dereference --preserv=links:复制时保留源文件的链接

      --preserv[=ATTR_LIST]

         mode: 权限

         ownership: 属主属组

         timestamp: 时间戳

         links:链接

         xattr:扩展属性

         context:连接上下文

         all:以上所有属性

      -p: --preserv=mode,ownership,timestamp:保留文件权限、属主属组、时间戳属性

      -v: --verbose:显示过程

      -f: --force:强制覆盖。

2)移动命令mv

   命令使用格式:

       mv [OPTION]... [-T] SOURCEDEST

       mv [OPTION]... SOURCE...DIRECTORY

       mv [OPTION]... -t DIRECTORYSOURCE...

   常用选项:

       -i: 交互式,当文件存在时提示是否覆盖

       -f: 强制覆盖

3)删除命令rm

   命令使用格式:

       rm [OPTION]... FILE...

   常用选项:

       -i: 交互式

       -f: 强制删除

       -r: 递归删除目录及内部的所有内容;

5bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

1)命令执行状态返回值

   说明:bash使用一个特殊的环境变量$?保存最近一条命令的执行状态结果,如果执行成功则$?返回值为0,如果执行失败$?则返回值1-255其中的任何一个数字。

   示例:

[root@localhost ~]# la
bash: la: command not found...
[root@localhost ~]# echo $?
127
[root@localhost ~]# ls
anaconda-ks.cfg  core.7730  Downloads             Pictures   Videos
core.13122       Desktop    initial-setup-ks.cfg  Public
core.7223        Documents  Music                 Templates
[root@localhost ~]# echo $?
0








2)命令行展开

   说明:bash可以已bash可以解释的符号来代替命令中的某些参数

   ~:表示当前用的家目录

      示例:

[root@localhost ~]# cd /
[root@localhost /]# cd ~

   ~USERNAME:表示进入某个用户的家目录

      示例:

[root@localhost ~]# cd ~zhangsan
[root@localhost zhangsan]#

   {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

      示例:

[root@localhost 1]# mkdir -v {a,b}_{c,d}
mkdir: created directory ‘a_c’
mkdir: created directory ‘a_d’
mkdir: created directory ‘b_c’
mkdir: created directory ‘b_d’



 

6、请使用命令行展开功能来完成以下练习:

1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

[root@localhost tmp]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_d’



2)、创建/tmp/mylinux目录下的:

mylinux/

├── bin

├── boot

│   └── grub

├── dev

├── etc

│   ├── rc.d

│   │   └── init.d

│   └── sysconfig

│       └── network-scripts

├── lib

│   └── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│   └── local

│       ├── bin

│       └── sbin

└── var

├── lock

├── log

└── run

[root@localhost tmp]# mkdir -vp /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconnfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/{local/{bin,sbin}},var,lock,log,run}
mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/bin’
mkdir: created directory ‘/tmp/mylinux/boot’
mkdir: created directory ‘/tmp/mylinux/boot/grub’
mkdir: created directory ‘/tmp/mylinux/dev’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’
mkdir: created directory ‘/tmp/mylinux/etc/sysconnfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconnfig/network-scripts’
mkdir: created directory ‘/tmp/mylinux/lib’
mkdir: created directory ‘/tmp/mylinux/lib/modules’
mkdir: created directory ‘/tmp/mylinux/lib64’
mkdir: created directory ‘/tmp/mylinux/proc’
mkdir: created directory ‘/tmp/mylinux/sbin’
mkdir: created directory ‘/tmp/mylinux/sys’
mkdir: created directory ‘/tmp/mylinux/tmp’
mkdir: created directory ‘/tmp/mylinux/usr’
mkdir: created directory ‘/tmp/mylinux/usr/{local’
mkdir: created directory ‘/tmp/mylinux/usr/{local/bin}’
mkdir: created directory ‘/tmp/mylinux/usr/{local/sbin}’
mkdir: created directory ‘/tmp/mylinux/var’
mkdir: created directory ‘/tmp/mylinux/lock’
mkdir: created directory ‘/tmp/mylinux/log’
mkdir: created directory ‘/tmp/mylinux/run’
[root@localhost mylinux]# tree
.
|-- bin
|-- boot
|   `-- grub
|-- dev
|-- etc
|   |-- rc.d
|   |   `-- init.d
|   `-- sysconnfig
|       `-- network-scripts
|-- lib
|   `-- modules
|-- lib64
|-- lock
|-- log
|-- proc
|-- run
|-- sbin
|-- sys
|-- tmp
|-- usr
|   `-- {local
|       |-- bin}
|       `-- sbin}
`-- var


















































 

7、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

1)文件的元数据信息

   atimeaccess time 文件访问时间

   mtimemodify time 文件修改时间

   ctime: change time 元数据atimemtime改变时间,这个数值是不能自行修改

2)元数据查看命令stat

[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:47:31.927239446 +0800
Modify: 2016-12-03 19:47:31.927239446 +0800
Change: 2016-12-03 19:47:31.927239446 +0800
 Birth: -








3)文件时间戳修改方式

   touch FILENAME:同时修改atimemtimectime三个时间戳

        示例:

[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:50:20.315781438 +0800
Modify: 2016-12-03 19:50:20.315781438 +0800
Change: 2016-12-03 19:50:20.315781438 +0800
 Birth: -
[root@localhost ~]# touch 1
[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:50:45.119450475 +0800
Modify: 2016-12-03 19:50:45.119450475 +0800
Change: 2016-12-03 19:50:45.119450475 +0800
 Birth: -



















   touch -a  FILENAME:修改文件访问时间为当前时间

        示例:

[root@localhost ~]# touch -a 1
[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:53:15.623510063 +0800
Modify: 2016-12-03 19:50:45.119450475 +0800
Change: 2016-12-03 19:53:15.623510063 +0800
 Birth: -









   touch -m FILENAME:修改文件文件修改时间为当前时间

        示例:

[root@localhost ~]# touch -m 1
[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:53:15.623510063 +0800
Modify: 2016-12-03 19:54:32.904594588 +0800
Change: 2016-12-03 19:54:32.904594588 +0800
 Birth: -









   touch {-a,-m} -t [[CC]YY]MMDDhhmm[.ss]:修改文件访问时间或文件修改时间为指定之间

        示例:

[root@localhost ~]# touch -a -t 201505041130.30 1
[root@localhost ~]# stat 1
  File: ‘1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 207178860   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2015-05-04 11:30:30.000000000 +0800
Modify: 2016-12-03 19:54:32.904594588 +0800
Change: 2016-12-03 19:57:19.990101432 +0800
 Birth: -









 

8、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

[root@localhost ~]# ls -d /var/l*[0-9]*[[:lower:]]

9、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]

10、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

[root@localhost ~]# ls -d /etc/[^a-z]*[^a-z]*

11、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-09-20-09-32-22

[root@localhost ~]# touch /tmp/tfile-`date +"%Y-%m-%d-%H-%M-%S"`
[root@localhost ~]# ll /tmp/tfil*
-rw-r--r--. 1 root root 0 Dec  4 20:42 /tmp/tfile-2016-12-04-20-42-59

12、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

[root@localhost tmp]# mkdir /tmp/mytest2;cp -avr /etc/*.d /tmp/mytest2

13、复制/etc/目录下所有以lmn开头,以.conf结尾的文件至/tmp/mytest3目录中。

[root@localhost tmp]# mkdir /tmp/mytest3;cp -avr /etc/[lmn]*.conf /tmp/mytest3
‘/etc/ld.so.conf’ -> ‘/tmp/mytest3/ld.so.conf’
‘/etc/libaudit.conf’ -> ‘/tmp/mytest3/libaudit.conf’
‘/etc/libuser.conf’ -> ‘/tmp/mytest3/libuser.conf’
‘/etc/locale.conf’ -> ‘/tmp/mytest3/locale.conf’
‘/etc/logrotate.conf’ -> ‘/tmp/mytest3/logrotate.conf’
‘/etc/man_db.conf’ -> ‘/tmp/mytest3/man_db.conf’
‘/etc/mke2fs.conf’ -> ‘/tmp/mytest3/mke2fs.conf’
‘/etc/mtools.conf’ -> ‘/tmp/mytest3/mtools.conf’
‘/etc/nfsmount.conf’ -> ‘/tmp/mytest3/nfsmount.conf’
‘/etc/nsswitch.conf’ -> ‘/tmp/mytest3/nsswitch.conf’
‘/etc/numad.conf’ -> ‘/tmp/mytest3/numad.conf’










 

 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!