第二周

#第二周blog 作业

第二周blog 作业

  • 1

目录管理命令:mkdir、rmdir

mkdir命令

mkdir - make directories
     mkdir [OPTION]... DIRECTORY...
           -P:子目录创建完,再创建父目录,递归创建
           -m=MODE:设置文件权限
           -v:显示创建过程
example:
# mkdir /tmp/sadan
在/tmp目录下创建sadan目录
# mkdir -Pv /tmp/a/b/c/d
在/tmp目录下逐步创建d、c、b、a目录并显示过程

rmdir命令

rmdir - remove empty directories(删除空目录)
    rmdir [OPTION]... DIRECTORY...
          -P:递归删除
          -v:显示执行过程
example:
# rmdir /tmp/sadan
删除/tmp下的sadan目录
# rmdir -P /tmp/a/b/c/d
删除/tmp下a、b、c、d目录并显示过程

注:rmdir只能删除空目录,目录中有文件时,无法进行删除。

文件管理命令:cp、mv、rm

cp命令

   cp - copy files and directories
   复制文件或目录
   cp [OPTION]... [-T] SOURCE DEST
   cp [OPTION]... SOURCE... DIRECTORY
   cp [OPTION]... -t DIRECTORY SOURCE...

   当目地为目录:
   将文件复制到目录文件下

   当目地为文件:
   1 文件不能为目录
   2 只能是单个文件
   文件复制到文件时,既是覆盖操作(内容改变,文件名不变)

      -P:复制链接文件时,不复制链接文件的源文件
      --preserve:指定复制的属性(默认为mode,ownership,timestamps)
      -a:用于归档
      -L:复制链接文件时,直接复制其源文件,但名称为链接文件名
      -r,R:递归复制
      -i:交互式

      example:
      # cp  /etc/passwd /tmp
      将passwd文件复制到/tmp目录
      # cp -r /etc/ /tmp
      将/etc目录复制到/tmp目录中
      # cp -P /dev/cdrom /tmp
      复制链接文件
      # cp -L /dev/cdrom /tmp
      复制链接文件的目标文件
      # cp /etc/passwd /tmp/sadan
      cp: overwrite `/tmp/sadan'? y 
      覆盖文件

mv命令

  mv - move (rename) files
  移动或重命名文件
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
        -i:交互式
        -f:强制
  当mv对文件使用没有移动其位置时,为修改名称操作。

    example:
    # mv /etc/fstab /etc/fstab_mv
    修改/etc目录下fstab文件名为fstab_mv
    # mv /etc/fstab /tmp 
    将/etc/fstab文件移动到/tmp目录下

rm命令

  rm - remove files or directories
  删除文件或目录
    rm [OPTION]... FILE...
        -r:递归操作
        -f:强制
        -i:交互式

    example:
    # rm -i /etc/fstab
    rm: remove regular file `/etc/fstab'? 
    交互式删除/etc/fstab文件,输入y或n执行操作
    # rm -f /etc/fstab
    强势删除/etc/fstab文件且不提示
    # rm -rf /etc
    直接删除/etc目录以及子文件

文件查看命令:cat、tac、head、tail、more、less

cat命令

cat - concatenate files and print on the standard output
连接文件并输出到标准输出
  cat [OPTION]... [FILE]...
      -n:显示行号
      -E:用$显示换行符号

example:
# cat -n /etc/fstab /etc/hosts
同时将两文件显示到终端并显示行号
# cat -E /etc/hosts
将/etc/hosts文件内容输出到终端并用$来显示换行符号

tac命令

tac - concatenate and print files in reverse
相反输出文件内容
    tac [OPTION]... [FILE]...

example:
# tac /etc/hosts
显示相反输出的内容

head命令

head - output the first part of files
输出文件最开始的部分
    head [OPTION]... [FILE]...
          -n #:显示多少行(默认10)

    example:
    # head /etc/passwd
    显示passwd文件前10行信息
    # head -n 5 /etc/passwd
    显示passwd文件前5行信息

tail命令

 tail - output the last part of files
 输出文件最后的部分
     tail [OPTION]... [FILE]...
           -n #:显示多少行(默认10)
           -f:跟随文件更新

     example:
     # tail  /etc/passwd
     显示passwd文件最后10行
     # tail -n 5 /etc/passwd
     显示passwd文件最后5行
     # tail -f /etc/passwd   //tty1
     # echo "archlinux" >> /etc/passwd    //tty2
     两个不同终端执行命令,一直查看tty1终端的界面,发现终端多了一行archlinux。

more命令

more - file perusal filter for crt viewing
逐页阅读文件(无法回看)
    more  [options] file...

    example:
    # more /etc/passwd 
    查看passwd文件

less命令

less - opposite of more
more的对立-(与more相似是分页浏览,但是允许回看)
    less [options] file...

    example:
    # less /etc/passwd
    查看passwd文件
  • 2

    bash的命令执行状态保存在$?中,使用echo $? 就能够显示上一条命令的状态返回值。
        状态返回值范围:
                       0:成功
                       1-255:失败

     bash的命令行展开
     ~:自动到用户家目录
     {}:花括号中的所有元素依次展开
     example:
         # touch /tmp/{a,b}_{c,d}
     其结果为 a_c,a_d,b_c,b_d
  • 3

    (1) mkdir /tmp/{a,b}_{c,d}
     (2) 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}}

  • 4

元数据包含:权限,属主属组,时间戳,文件大小,文件类型等文件属性

使用stat命令查看
如:
# stat /etc/passwd

修改文件时间戳使用touch命令
   touch [options] file
         -a:仅修改访问文件的时间
         -m:仅修改修改文件的时间
         -t STAMP:指定时间代替当前时间([[CC]YY]MMDDhhmm[.ss])

   example:
   # touch -a -t 201612080038.38 /etc/passwd
   Access: 2016-12-08 00:38:38.000000000 +0800
   修改其访问时间为指定时间
   # touch -m -t 201612080038.38 /etc/passwd
   Modify: 2016-12-08 00:38:38.000000000 +0800
   修改其修改时间为指定时间
  • 5

定义别名的命令是alias

  alias-Define or display aliases
  定义或显示别名
        alias [-p] [name[=value] ... ]
example:
    # alias [-p]
    显示所有定义的别名
    # alias rr='rm -rf'
    将rm -rf 命令执行定义为rr

命令引用:
     ``: `date +"%y-%m-%d"`
     $ : $(date +"%y-%m-%d")
 example:
     # mkdir /tmp/sadan-$(date +"%y-%m-%d")
     # ls
     sadan-16-12-01
  • 6

        ls -d /var/l*[0-9][^0-9]

  • 7
        ls -d /etc/[0-9]*[^0-9]

  • 8
        ls -d /etc/[^[:alpha:]][[:alpha:]]*

  • 9
        mkdir /tmp/tfile-$(date +”%Y-%m-%d-%H-%M-%S”)

  • 10
        cp -r /etc/p*[^0-9] /tmp/mytest1

  • 11
        cp -r /etc/*.d /tmp/mytest2

  • 12
        cp -r /etc/[lmn]*.conf /tmp/mytest3

find详解

  • find命令用来做什么?

  • find命令作用机制

  • find命令的优缺点

  • find命令的使用

find命令用来做什么?

首先查看man文档中find命令的介绍,search for files in a directory hierarchy,在目录层级中查找文件。
由其意可知道该命令用来查找文件。

find命令作用机制

那么find命令是如何查找文件的呢?
find命令使用的是遍历查询(逐个查找)的方法,在各个层级遍历,最终找到目标文件。

find命令的优缺点

find命令有许多的条件限定,然后也是遍历当前文件系统所查询,因此有以下各优缺点:
    优:
        1 查找精确
        2 实时查找
    缺:
        1 消耗资源,查询所需时间稍久

### find命令的使用

格式:    find [path...] [options]  [tests] [actions]
                path:查找路径;默认为当前目录
                options:选项,find的各类选项
                tests:匹配文本条件
                actions:查找之后find对查询到的结果的执行动作


                options:
                     -maxdepth levels:查找的路径最大层级深度
                     -mindepth levels:查找的路径最小层级深度

                     example:
                        查看/etc下的一级子文件
                        # find /etc -maxdepth 1


                tests:
                    文件名
                        -iname pattern:忽略大小写
                        -name pattern:根据文件名查找
                    此处的pattern是globbing匹配的标准

                    example:
                    查询以s或S开头的文件                        
                    # find /etc -iname s*
                        -regex pattern:基于正则表达式模式查找文件,匹配的是整个路径,而不是文件名

                    example:
                     根据匹配条件匹配路径
                     # find /etc  -regex '.*ts'


                    权限
                        权限分三类:u、g、o
                        -perm [-|/]mode
                              mode:精确查询,完全符合mode的文件
                                    (如:222,匹配到的必须是222)
                             /mode: 三类权限中一类中达到mode标准即可
                                    (如:222,匹配到的可以是121、112、211、222等)
                             -mode: 三类权限全部要达到标准
                                    (如:222,匹配到的权限可以是222、333、444等等)

                    example:
                        查找/var目录下,所有用户都是只读权限的文件
                        # find /var -perm 222
                        查找/var目录下,至少有一类用户有读权限的文件
                        # find /var -perm -222
                        查找/var目录下,所有用户有读权限的文件
                        # find /var -perm /222


                    文件类型
                        -type #:
                        b:block,块设备文件
                        c:character,字符设备文件
                        d:directory,目录
                        p:pipe,管道
                        f:regular file,文件
                        l:symbolic link,符号链接
                        s:socket,套接字文件
                    example:
                        查找/dev目录下的字符设备
                        # find /dev -type c


                    文件属主属组:
                        -uid n:查找属主为指定uid的文件
                        -gid n:查找属组为指定gid的文件
                        -nouser:查找没有属主的文件
                        -nogroup:查找没有属组的文件
                        -user username:查找指定属主名的文件
                        -group groupname:查找指定属组名的文件
                    example:
                        查找/etc目录下uid为100的用户所拥有的文件
                        # find /etc -uid 100
                        查找/etc目录下没有属主的文件
                        # find /etc -nouser
                        查找/etc目录下属主名为sadan的文件
                        # find /etc -user sadan


                    以下参数代表意义:
                    +n:大于n
                    -n:小于n
                     n:等于n
                    时间戳:
                        按天查询:
                            -atime [+|-]n
                            -mtime [+|-]n
                            -ctime [+|-]n
                        按分钟查询:
                             -amin [+|-]n
                             -mmin [+|-]n
                             -cmin [+|-]n
                    example:
                        查找/var目录下,三天前访问过的文件
                        # find /var -atime +3
                        查找/var目录下,五天内修改过的文件
                        # find /var -mtime -3
                        查找/var目录下, 昨天这个时间移动过的文件
                        # find /var -ctime 1
                        查找/var目录下,一分钟以前访问过的文件
                        # find /var -amin +1

                    文件大小:
                        -size [+|-]n[cwbkMG]
                    example:
                        查找/etc目录下大于7k的文件
                        # find /etc -size +7k
                        查找/etc目录下小于10M的文件
                        find /etc -size -10M
                        查找/etc目录下等于15b的文件
                        find /etc -size 15b


                actions:
                     -delete:删除查找到文件
                     -ls:相当ls -l命令,显示文件长格式信息
                     -fls file:将查找文件显示长格式并保存到指定文件中
                     -ok COMMAND {} \;    需要用户进行确定之后再执行指定操作
                     -exec COMMAND {} \; 直接执行指定操作
                     其{}代表的是前面匹配到的内容

                条件关系:
                ! | -not : ! expr2; 非     
                -o: expr1 -a expr2; 或     
                -a: expr1 -a expr2; 与
                ()需要加\ 如:\(\)

                example:
                    查找/etc下,前天到今天为止访问过的大小为4k的文件,并删除
                    find /etc -atime -2 -a -size 4k -delete
                    查找/var目录下属主为root,且属组为mail的所有文件,并显示长格式信息
                    find /var -user root -a -group mail -ls
                    查找/var目录下属主不为root,且属组不为mail的所有文件,并将查找到的文件保存到/tmp目录中
                    find /var !\(-user root -o -group mail\) -fls /tmp
                    查找/etc目录下大于1M且类型为普通文件,并让交互式删除
                    find /etc -size +1M -a -type f -ok rm -rf {} \;
                    查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限,将查询到的文件改名为*.new
                    find /etc/init.d -perm -111  -a -perm 002 -exec mv {} {}.new \;

原创文章,作者:N25_sadan,如若转载,请注明出处:http://www.178linux.com/63319

(0)
N25_sadanN25_sadan
上一篇 2016-12-12
下一篇 2016-12-12

相关推荐

  • Linux用户与组之权限管理

    权限(rwx、sst、umask) chown chmod ACL(见下篇) 试验环境:CentOS 7.2 与CentOS 6.8,具体会在应用场景明确指出 权限 Linux系统对用户与组的管理,其具体操作手段就是对于权限的分配,而常见的权限分配工具有 rwx, sst, umask, ACL. 跟用户与组有uid和gid一样,权限也有…

    Linux干货 2016-08-07
  • N25第九周博客作业

    1、 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/sh lg=0 nlg=0 while read line;do   if [[ “${line}” =~“/sbin/nol…

    Linux干货 2017-03-06
  • 马哥教育21期网络班—第四周课程+练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]#cp -rf /etc/skel /home/tuser1[root@localhost ~]#chmod -R g…

    Linux干货 2016-07-16
  • mongodb 分片集群搭建

    集群架构 本次实验部署3台主机node1、node2、node3,2个副本集db1、db2作为分片,3台主机均有1个配置库实例 操作步骤 安装 node1上执行如下命令,完成后拷贝/mongodb目录到node2、node3 useradd mongodb   mkdir -p /mongodb/data/{…

    Linux干货 2016-11-06
  • 第二周作业

    一、文件管理类命令     1、cp:复制文件        单文件复制cp source dest,如果dest存在且dest不是目录,则覆盖目标文件。如果dest不存在,则自行创建dest文件;如果source是目录,则cp命令不会执行。如果source是链接文件,则复制的是链接文件指向的文件内…

    Linux干货 2016-12-11
  • python面向对象第二周魔术方法详解

    魔法方法及其使用__开头和结束的方法,定义外部没有办法直接调用,但会有影响使用运算符号的魔法方法, + ,-,*,/,%,//,**, __add__,__sub__,__mul__,__truediv__,__mod__,__floordiv__,__pow__,__divmod__(?),系统内部对于数值型,字符串型,容器内型都定义了其中部分或者全部的运…

    Linux干货 2017-11-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 17:09

    赞,写的非常详细~继续加油~