N26-第二周博客作业

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

   查看类
    pwd : print name of current/working directory  打印当前工作目录;
         
          参数:
              -P :显示出确实的路径,而非使用链接 (link) 路径。

          实例:
          [root@bogon tmp]# pwd          #打印当前工作目录#
          /tmp
          [root@bogon var]# cd /var/mail
          [root@bogon mail]# pwd         
          /var/mail
          [root@bogon mail]# pwd -P    
          /var/spool/mail                #两条相同命令,加上-P结果有很大不同。原因在于var/ mail是链接文件,链接的目标为/var/spool/mail.所以pwd -P最终显示结果为#
          [root@bogon mail]# ls -al /var/mail
          lrwxrwxrwx. 1 root root 10 Jan 16 16:24 /var/mail -> spool/mail

          [root@bogon tmp]# echo $PWD    #显示$PWD与使用pwd命令基本相同#

          /tmp

    cd :Change the shell working directory 切换目录;
         
         .        代表当前目录;
         ..       代表上一层目录;
         –        代表前一个工作目录;
         ~        代表当前用户所在的家目录;
         ~account 代表account这个用户的家目录;

         实例:
         [root@bogon tmp]# cd /tmp     #进入/tmp目录
         [root@bogon tmp]#

         [root@bogon tmp]# cd ~        #回到家目录,当前用户是rootr所以进入的为root的家目录#
         [root@bogon ~]#

         [root@bogon ~]# cd –          #进入上一次工作目录#  
         /tmp
         [root@bogon tmp]#

         [root@bogon tmp]# cd ..       #回到上级目录#
         [root@bogon tmp]#
    ls : list directory contents 显示目录内容;
      参数:
           -a : 显示全部的文件,包括隐藏文件并显示.与..目录;
           -A :显示全部的文件,包括隐藏文稿件但不包括.与..目录;
           -d :只显示目录的本身,不显示其目录内容;
           -h : 例出文件的大小;
           -l : 显示文件的详细文件属性信息;
           -n :列出 UID 与 GID 而非使用者与群组的名称;
           -F :根据文件、目录等信息提供附加数据结构;
              *:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 文件;@:表示链接文件
           -R :连同子目录所有内容一起显示出来;
           -S :以文件大小排序
      实例:
          [root@bogon var]# ls -alS
          total 16
          drwxr-xr-x. 25 root root 4096 Feb  7 09:48 lib
          drwxr-xr-x.  7 root root 4096 Feb  7 09:48 log
          drwxrwxrwt. 12 root root 4096 Feb  7 09:49 tmp
          drwxr-xr-x. 19 root root  267 Feb  7 09:48 .
          dr-xr-xr-x. 17 root root  224 Jan 16 16:34 ..
          -rw-r–r–.  1 root root  163 Jan 16 16:24 .updated
          drwxr-xr-x. 10 root root  118 Jan 16 16:29 spool
          drwxr-xr-x.  8 root root   92 Jan 16 16:29 cache
          drwxr-xr-x.  3 root root   34 Jan 16 16:29 db
          drwxr-xr-x.  3 root root   18 Jan 16 16:29 empty
          drwxr-xr-x.  3 root root   18 Jan 16 16:26 kerberos
          lrwxrwxrwx.  1 root root   11 Jan 16 16:24 lock -> ../run/lock
          lrwxrwxrwx.  1 root root   10 Jan 16 16:24 mail -> spool/mail
          drwxr-xr-x.  2 root root    6 Nov  5 23:38 adm

    cat :concatenate files and print on the standard output 连结文件与打印标准输出;
          显示文件;创建文件;将多个文件合并为一个文件
          参数:
               -n : 对输出显示内容从1开始编号;
               -b : 与-n相同,但不对空白行编号;
               -e : 在每行结束显示 $ 。

          实例:
                  [root@bogon var]# cat -ne /etc/sysconfig/network-scripts/ifcfg-ens33  
                  #显示此文件内容,对其内容进行编号并每行以$结尾 #
                     1  TYPE="Ethernet"$
                     2  BOOTPROTO="dhcp"$
                     3  DEFROUTE="yes"$
                     4  PEERDNS="yes"$
                     5  PEERROUTES="yes"$
                     6  IPV4_FAILURE_FATAL="no"$
                     7  IPV6INIT="yes"$
                     8  IPV6_AUTOCONF="yes"$
                     9  IPV6_DEFROUTE="yes"$
                    10  IPV6_PEERDNS="yes"$
                    11  IPV6_PEERROUTES="yes"$
                    12  IPV6_FAILURE_FATAL="no"$
                    13  IPV6_ADDR_GEN_MODE="stable-privacy"$
                    14  NAME="ens33"$
                    15  UUID="b0fc63a7-1b0a-4107-ae8e-07c73aa90004"$
                    16  DEVICE="ens33"$
                    17  ONBOOT="yes"$
         
                  [root@bogon var]# cat > /tmp/cat.txt <<EOF   #创建文件cat.txt,并以EOF字符结尾#
                  > Hello Everybody
                  > Welcome to the world of Linux
                  > Good Lock!
                  > EOF
                  [root@bogon var]# cat /tmp/cat.txt
                  Hello Everybody
                  Welcome to the world of Linux
                  Good Lock!

                  [root@bogon var]# cat /tmp/cat1.txt              #查看cat1.txt内容#
                  Ending
                  2017.02.07
                  [root@bogon var]# cat /tmp/cat.txt > /tmp/cat1.txt   #把cat.txt文件复制到cat1.txt中并覆盖原cat1.txt文件内容#
                  [root@bogon var]# cat /tmp/cat1.txt                  #查看cat1.txt内容#
                  Hello Everybody
                  Welcome to the world of Linux
                  Good Lock!

                [root@localhost ~]# cat /tmp/cat.txt                  #查看cat.txt内容#
                Hello Everybody
                Welcome to the world of Linux
                Good Lock!
                [root@localhost ~]# cat /tmp/cat1.txt                 #查看cat1.txt内容#
                Ending.
                [root@localhost ~]# cat /tmp/cat1.txt >> /tmp/cat.txt  #把cat1.txt文件内容复制添中到cat.txt内容下方#
                [root@localhost ~]# cat /tmp/cat.txt                   #查看cat.txt内容#
                Hello Everybody
                Welcome to the world of Linux
                Good Lock!
                Ending.
                2017.02

      tac : concatenate and print files in reverse  反向显示内容
             tac是将cat反写,所以它的功能就与cat相反。cat 从第一排到最后一排,tac是从最后一排到第一排。
             [root@localhost ~]# tac /tmp/cat.txt
             2017.02
             Ending.
             Good Lock!
             Welcome to the world of Linux
             Hello Everybody

      head :output the first part of files 显示出前N行;
          参数:
               -n :n为数字,代表要从头开始显示几行。默认显示十行,-20为显示20行;
               [root@localhost ~]# head /etc/inittab          #显示文件的前十行#
                # inittab is no longer used when using systemd.
                #
                # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
                #
                # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
                #
                # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
                #
                # multi-user.target: analogous to runlevel 3
                # graphical.target: analogous to runlevel 5

      tail : output the last part of files 显示文件后N行;
          参数:-n :n为数字,代表要从头开始显示几行。默认显示十行,-20为显示20行;
          [root@localhost ~]# tail /etc/inittab
          #
          # multi-user.target: analogous to runlevel 3
          # graphical.target: analogous to runlevel 5
          #
          # To view current default target, run:
          # systemctl get-default
          #
          # To set a default target, run:
          # systemctl set-default TARGET.target
          #

      more : file perusal filter for crt viewing 翻页查看;
          参数:
              空格键 (space):代表向下翻一页;
              Enter         :代表向下翻【一行】;
              /字符串         :代表在这个显示的内容当中,向下搜寻【字符串】;
              :f             :立刻显示出文件名以及目前显示的行数;
              q             :代表立刻离开 more ,不再显示该文件内容。

      less : 与more相似,less命令允许用户向前向后浏览文件,而more命令只能向前浏览。用PageUp键和Pagedown键翻页,按Q退出。
          cat 连续显示、查看文件内容
          more 分页查看文件内容
          less 分页可控制查看文件内容

   tree : list contents of directories in a tree-like format. 分层树级结构显示内容
      [root@localhost ~]# tree /tmp
      /tmp
      ├── cat1.txt
      ├── cat.txt
      ├── systemd-private-9271cc4e10aa42e18e934ce49c91826b-vmtoolsd.service-NVM6f8
      │   └── tmp
      └── systemd-private-ac6dfc77c71646bd91b02da152e18f10-vmtoolsd.service-sia9xB
          └── tmp

      4 directories, 2 files

   
   file : determine file type 查看文件件类型

        [root@bogon ~]# file /tmp/inittab
        /tmp/inittab: ASCII text

        [root@bogon ~]# file /var/mail
        /var/mail: symbolic link to `spool/mail'
   

   修改类

   touch : change file timestamps  创建空文件、改变文件时间
        -c: 指定的文件路径不存在时不予创建;
        -a: 仅修改access time;
        -m:仅修改modify time;
        -t STAMP
          [[CC]YY]MMDDhhmm[.ss]
    实例:
    [root@bogon tmp]# touch /tmp/test/1.txt
    [root@bogon tmp]# ls -l /tmp/test
    total 0
    -rw-r–r–. 1 root root 0 Feb 16 17:32 1.txt

    mkdir:make directories 创建目录

      -p: 自动按需创建父目录;
      -v: verbose,显示详细过程;
      -m MODE:直接给定权限;
    实例:
      [root@bogon tmp]# mkdir /tmp/2017
      [root@bogon tmp]# ls -al
      total 1464
      drwxrwxrwt. 10 root root     228 Feb 16 17:49 .
      dr-xr-xr-x. 17 root root     224 Feb 12 13:41 ..
      drwxr-xr-x.  2 root root       6 Feb 16 17:49 2017

      创建多个目录

      [root@bogon tmp]# mkdir ubuntu redhat slackware
      [root@bogon tmp]# ls -al
      total 1464
      drwxrwxrwt. 13 root root     273 Feb 16 17:54 .
      dr-xr-xr-x. 17 root root     224 Feb 12 13:41 ..
      drwxr-xr-x.  2 root root       6 Feb 16 17:49 2017
      drwxrwxrwt.  2 root root       6 Feb 16 10:51 .font-unix
      drwxrwxrwt.  2 root root       6 Feb 16 10:51 .ICE-unix
      -rw-r–r–.  1 root root     511 Feb 16 11:35 inittab
      -rw——-.  1 root root 1491821 Feb 15 22:25 messages
      drwxr-xr-x.  2 root root       6 Feb 16 17:54 redhat
      drwxr-xr-x.  2 root root       6 Feb 16 17:54 slackware
      drwxr-xr-x.  2 root root       6 Feb 16 17:54 ubuntu
   
      [root@bogon tmp]# mkdir -p ./1/2/3/
      [root@bogon tmp]# tree
      .
      ├── 1
      │   └── 2
      │       └── 3
      ├── 2017
      ├── inittab
      ├── messages
      ├── redhat
      ├── slackware
      ├── test
      │   └── 1.txt
      └── ubuntu

  使用 -m 参数,我们可以给即将生成的新目录设置权限。
      [root@bogon ~]# mkdir -m=rw- rw
      [root@bogon ~]# ls -dl ./rw
      drw-r–r–. 2 root root 6 Feb 17 11:33 ./rw

      [root@bogon ~]# mkdir -m=777 rwx
      [root@bogon ~]# ls -dl ./rwx
      drwxrwxrwx. 2 root root 6 Feb 17 11:40 ./rwx
      [root@bogon tmp]# mkdir -p -v -m 664 d1/d2/d3/d4
      mkdir: created directory ‘d1’
      mkdir: created directory ‘d1/d2’
      mkdir: created directory ‘d1/d2/d3’
      mkdir: created directory ‘d1/d2/d3/d4’

    注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;
    创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限
        
    rmdir:remove empty directories

    rmdir [OPTION]… DIRECTORY… 删除目录

        -p:删除某目录后,如果其父目录为空,则一并删除之;
        -v: 显示过程;
      [root@bogon tmp]# mkdir -p a/b/c/d
      [root@bogon tmp]# tree
      .
      ├── a
      │   └── b
      │       └── c
      │           └── d
      ├── inittab
      ├── messages
      ├── redhat
      ├── slackware
      ├── test
      │   └── 1.txt
      └── ubuntu

      10 directories, 3 files
      [root@bogon tmp]# rmdir -p -v a/b/c/d
      rmdir: removing directory, ‘a/b/c/d’
      rmdir: removing directory, ‘a/b/c’
      rmdir: removing directory, ‘a/b’
      rmdir: removing directory, ‘a’
 
   rm :  remove files or directories 删除或者目录

      一不小心就下岗命令:rm -rf
      -f: 强制删除文件或目录;
      -i: 删除已有文件或者目录之前先询问用户;
      -r: 或-R递归处理,将指定目录下的所有文件与子目录一并处理;
      -v: 显示指令详细过程;

    [root@bogon tmp]# rm -i -r -v 1/2/3/4
    rm: remove directory ‘1/2/3/4’? y
    removed directory: ‘1/2/3/4’

   mv : mv – move (rename) files 移动
      –backup=<备份模式>:若需覆盖文件,则覆盖前先行备份; -b:当文件存在时,覆盖前,为其创建一个备份; -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
       -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。 –strip-trailing-slashes:删除源文件中的斜杠“/”;
       -S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
       –target-directory=<目录>:指定源文件要移动到目标目录; -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

    cp : mv – move (rename) files 复制
        -a:此参数的效果和同时指定"-dpR"参数相同; -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; -f:强行复制文件或目录,不论目标文件或目录是否已存在;
        -i:覆盖既有文件之前先询问用户; -l:对源文件建立硬连接,而非复制文件; -p:保留源文件或目录的属性; -R/r:递归处理,将指定目录下的所有文件与子目录一并处理; -s:对源文件建立符号连接,而非复制文件; -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件; -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀; -b:覆盖已存在的文件目标前将目标文件备份;
         -v:详细显示命令执行的操作。

    file : determine file type 确定文件类型

        [root@localhost etc]# file /etc/inittab
        /etc/inittab: ASCII text

    stat : stat – display file or file system status  显示文件元数据信息
      实例:
        [root@localhost etc]# stat /tmp
        File: ‘/tmp’
        Size: 4096        Blocks: 8          IO Block: 4096   directory
        Device: fd00h/64768d  Inode: 67160136    Links: 16
        Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
        Context: system_u:object_r:tmp_t:s0
        Access: 2017-02-09 17:38:37.529189098 +0800
        Modify: 2017-02-09 17:38:28.661188955 +0800
        Change: 2017-02-09 17:38:28.661188955 +0800
         Birth: –

 

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

  l。 命令执行状态返回值
     当系统成功执行一条命令时,会返回0值,当执行失败时,会返回1~255,可以通过echo $? 命令查询上一条指令是否执行成功。
     [root@localhost ~]# lls
     -bash: lls: command not found
     [root@localhost ~]# echo $?
     127
     [root@localhost ~]# ls
     anaconda-ks.cfg  manpages-zh-1.5.1  manpages-zh-1.5.1.tar.gz
     [root@localhost ~]# echo $?
     0
 

3、请使用命令行展开功能来完成以下练习:
   (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
        [root@localhost test]# mkdir ./{a,b}_{c,d}
        [root@localhost test]# ls
        a_c  a_d  b_c  b_d

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

mkdir -p /tmp/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}}

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
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    
    元数据包括如下信息:
    File:     文件名
    Size:     文件的大小
    Blocks:   文件块数
    IO Block:IO块大小
    Device:   设备号
    Links:    链接次数
    Access:   访问权限
    Uid:      用户ID
    Gid:      组ID
    Access:   最后访问时间
    Modify:   最后修改数据时间
    Change:   最后更改元数据时间

  查看元数据命令:stat

    [root@localhost tmp]# stat /etc/inittab
     File: ‘/etc/inittab’
     Size: 511         Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d  Inode: 67630852    Links: 1
    Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:etc_t:s0
    Access: 2017-02-09 14:43:18.832019412 +0800
    Modify: 2016-11-06 11:10:11.000000000 +0800
    Change: 2017-01-16 16:27:52.069749341 +0800
    Birth: –

  修改文件的时间戳:touch

      -a     修改文件 file 的存取时间.

      -c     不创建文件 file.
      -m     修改文件 file file
      -r ref_file
              将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.
      -t time
              使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数:
              [[CC]YY]MMDDhhmm[.SS]

 

5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
[root@localhost tmp]# alias lsah='ls -ah –color=auto'
[root@localhost tmp]# lsah /tmp/mylinux
.  ..  bin  boot  dev  etc  lib  lib64  proc  sbin  sys  tmp  usr  var

6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
 [root@localhost tmp]# ls -al l*[0-9]*[a-z]
-rw-r–r–. 1 root root 0 Feb  9 17:02 lweb0a
-rw-r–r–. 1 root root 0 Feb  9 17:03 lweb666a

7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
 [root@localhost etc]# touch 11o
 [root@localhost etc]# ls -al [0-9]*[^0-9]
 -rw-r–r–. 1 root root 0 Feb  9 17:10 11o

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

[root@localhost etc]# ls /etc/[^a-z][a-z]*
/etc/1abcd

9、在tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost etc]# touch /tmp/tfile-$(date "+%Y-%m-%d-%H-%M-%S")
[root@localhost etc]# ls /tmp/
cat1.txt
cat.txt
lweb0a
lweb666a
mylinux/
mytest1/
mytest2/
mytest3/
tfile-
tfile-2017-02-09-17-38-28
.X11-unix/
.XIM-unix/

10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost etc]# ls /tmp/mytest1
pam.d   passwd-  plymouth  popt.d   ppp             printcap  profile.d  python
passwd  pki      pm        postfix  prelink.conf.d  profile   protocols

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

[root@localhost etc]# ls /tmp/mytest1
pam.d   passwd-  plymouth  popt.d   ppp             printcap  profile.d  python
passwd  pki      pm        postfix  prelink.conf.d  profile   protocols

12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。"

[root@localhost etc]# cp [l,n,m]*.conf /tmp/mytest3
[root@localhost etc]# ls /tmp/mytest3
ld.so.conf  libaudit.conf  libuser.conf  locale.conf  logrotate.conf  man_db.conf  mke2fs.conf  nsswitch.conf

原创文章,作者:北京-且听风吟,如若转载,请注明出处:http://www.178linux.com/69101

(0)
北京-且听风吟北京-且听风吟
上一篇 2017-02-17
下一篇 2017-02-17

相关推荐

  • 浅谈Openssl与私有CA搭建

        随着网络技术的发展、internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务、电子商务日益增多并愈加被人们工作和生活依赖。但是,由于互联网的开放性和通用性,网络上的信息是对所有人公开的,这就使网络上的数据传输过程中存在被窃听、篡改等安全隐患,并极有可能给用户带来不可估量的损失。为此,各种保证数据在互联网上…

    Linux干货 2015-06-04
  • bash编程初体验(一)

    bash编程初体验(一) 认识bash编程 变量与赋值 算术与逻辑运算 条件测试与退出状态 认识bash编程 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell,我们要认识的bash中,就是在bash的环境下的一种编程。 众所周知,程序=指令+数据,由此也决定了两种不同的编程风格,过程过与对象式; 过程式:以指令为…

    Linux干货 2016-08-15
  • 0803linux基础小记

    让普通用户无法登录: centos 6  touch /etc/nologin echo "wating" > /etc/nologin 普通用户登录时不能进入系统,有提示信息 centos7  touch /etc/nologin 或touch /run/nologin  chage -l …

    Linux干货 2016-08-05
  • Linux系统终端类型

    引言 终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。在早期计算机系统中,由于计算机主机昂贵,因此一个主机一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成,在个人计算机时代,个人计算机可以运行称为终端仿真器的程序来模仿一个终端的工作。 &…

    Linux干货 2016-10-19
  • 8月4号作业

    正则表达式表示18位身份证号 egrep "\b[0-9]{17}(x|X|[0-9])\b" 正则表达式表示手机号 egrep "\b1[3,5,8,7][0-9]{9}\b" phone 正则表达式表示邮箱 grep -E "\b[[:alnum:]].*@[[:alnum:]]{2,3}.[[:alnu…

    Linux干货 2016-08-08
  • thinkpad e420编译安装thinkfan控制风扇

    我的笔记本是win7+linuxmint双系统,在进入linuxmint长时间运行后会明显感觉发热,我发现笔记本风扇的转数过低,导致热量不能发散出去,解决方法就是安装thinkfan风扇控制软件。 1、下载软件包 https://sourceforge.net/projects/thinkfan/ 最新版本是1.0beta2 2、编译安装 编译前确保安装过c…

    Linux干货 2017-03-09

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-07 15:54

    完成的非常好,很用心的在做,请继续保持,加油