第二周

#第二周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

相关推荐

  • 数据结构应用详解-

    概述 最小生成树——无向连通图的所有生成树中有一棵边的权值总和最小的生成树 拓扑排序 ——由偏序定义得到拓扑有序的操作便是拓扑排序。建立模型是AOV网 关键路径——在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度,路径长度最长的路径叫做关键路径(Critical Path)。 最短路径——最短路径问题是…

    Linux干货 2015-04-07
  • N25-第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash #统计shell及非shell个数 #author:dodo declare -i loginnum=0 declare -i nologinnum=0 while…

    Linux干货 2017-05-27
  • sed文本编辑工具

    用法:sed[option]… ‘script’ inputfile…常用选项:-n:不输出模式空间内容到屏幕,即不自动打印-e: 多点编辑-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本-r: 支持使用扩展正则表达式-i.bak: 备份文件并原处编辑script:‘地址命令…

    Linux干货 2017-05-02
  • 马哥教育网络班22期+第1周课程练习

    1、描述计算机的组成及其功能 CPU:运算器、控制器、寄存器、缓存 存储器:内存,RAM(Random Access Memory) Input:下指令,提供数据等 Output:输出数据加工的结果 2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 Debian系列         ubuntu &n…

    Linux干货 2016-08-15
  • Linux任务计划,周期性任务执行详解

    Linux任务计划,周期性任务执行 概述 本章将为大家介绍一些任务计划和周期性任务计划执行相关内容任务计划的分类主要有由两种    未来的某时间点执行一次某任务:at,batch    周期性运行某任务:crontab具体分为三个方面来说明:    1、at计划任务    2、c…

    Linux干货 2016-09-27
  • 使用安装光盘恢复rpm软件包

    rpm作为linux最重要的软件管理工具,有着不可或缺的地位,连yum都要依赖于rpm的存在才能正常使用,所以掌握rpm的恢复还是很重要的,下面就来看一下如何恢复rpm。       卸载rpm软件包 [root@localhost ~]$ rpm -e rpm err…

    Linux干货 2016-08-25

评论列表(1条)

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

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