第二周总结(文件操作命令、用户及组权限管理、BASH命令行展开与执行命令返回值、命令别名使用、执行结果引用、通配符使用)

1、常见文件管理命令分类

        1)文件内容查看(cat、tca、more、less、head、tail)

        2)文件字符替换(tr、sed、awk等)

        3)文件创建、移动、复制和删除(touch、mv、cp、scp、rm)

        4)文件权限修改(chown,chmod,chgrp)

        5)文件元数据查看和文件属性(stat、file)

        6)文件查找(find、locate)

     文件内容查看

        cat 

            使用方式:cat <file1>[file2…]

        查看文件内容全文

        tac 

            使用方式:tac <file1>[file2…]

        查看文件内容全文(逆向显示)

    more

        more <file1>[file2…]

       以当前终端大小为单位显示文件内容。如果当前终端不能全部显示,则显示第一页内容,使用空格键进行翻页,q键退出。

    less

           less <file1>[file2…]       

            以当前终端大小为单位显示文件内容。如果当前终端不能全部显示,则显示第一页内容,使用空格键进行翻页,可使用方向键进行上下进行行级翻动、使用Pageup,PageDown按键进行页面翻动,q键退出。

    head 

            head [-n] <file1>  

              显示文件的前几行,不加参数默认显示头10行,-n参数指定显示n行。

    tail

            tail [-n|f] <file1>  

                

              显示文件的后几行,不加参数默认显示后10行,-n参数指定显示n行,-f显示后10行后不退出持续显示新增加的内容。

    文件字符替换(tr、sed、awk等)

    tr

        tr [option] [set1] [set2]

            option

                -c或–complerment 取代所有不属于第一字符集([set1])的字符

                -d或–delete 删除所有属于第一字符集([set1])的字符

                -s或–squeeze-repeats 把连续重复的字符单独一个字符表示

                -t或–truncate-set1 先删除第一字符集比第二符集多出的字符

                   不加参数时,使用第二字符集中的字符替代第一字符集中的字符使用较多的是 [a-z] [A-Z] 替换文本中的字母的大小写

            注:tr 命令不能直接操作文件故需要将文件内容读取后通过管道 | 或者使用输入重定向 < 输出给tr命令,tr命令也不会直接修改原文件。

            特殊字符集

                [:space:]  所有空白字符

                [:alnum:]:字母和数字

                [:alpha:]:字母 (包含大小写)

                [:cntrl:]:控制(非打印)字符 

                [:digit:]:数字 

                [:graph:]:图形字符 

                [:lower:]:小写字母 

                [:print:]:可打印字符 

                [:punct:]:标点符号 

                [:space:]:空白字符 

                [:upper:]:大写字母 

                [:xdigit:]:十六进制字符

    示例1:删除anaconda-ks.cfs中的字母

示例2 将anaconda-ks.cfs中的字母替换成大写

    sed命令和awk命令使用比较复杂,在此不提。

    文件创建、移动、复制和删除

        文件创建

                touch [option] <filename1> [filename2] 

                    创建一个普通的空文件

                option    

                    -a 修改文件的change time

                    -m 修改文件的modify time

                    -d或–date=STRING 创建时文件使用字符串指定的时间而非当前时间

                    -r或–reference=FILE 创建文件时使用引用文件的时间而非当前时间

                    -t  STAMP  或–time=WORD 使用指定时间而非当前时间

        示例1 创建文件 123.txt

        示例2 修改文件的change time

        文件移动

    mv

        mv [option] file1 file2

                    移动file1 到file2位置,在同一目录使用mv时是重命名效果,如移动的到的目录有同名文件将会覆盖已有文件。

            option

                -i 移动时如果有同名文件提示是否覆盖(默认选项)

                -f 移动时如果有同名文件直接覆盖

    实例:

    文件删除

  rm

    rm [option] <filename>[filename_n]

        删除单个、多个文件或目录。

    option(常用)

        -r 递归删除

        -f 强制删除

示例:删除文件anaconda-ks.cfg.1

文件复制

    cp

       cp [option] file1 file2

    复制文件或目录,如果复制到的目录有同名文件将会覆盖掉该文件   

        option(常用)

        -i  覆盖前提示是否覆盖(默认选项)

        -f  强制覆盖没有提示信息

        -R|r 递归复制目录

        -d 复制符号链接本身而非符号链接指向的源文件

        -p 复制时同时复制源文件的权限

示例:复制文件anaconda-ks.cfg为anaconda-ks.cfg.1

    scp

        scp [option]  file1 username@address:/path/file2 

       跨系统复制文件或目录

            option

            -r 递归复制目录

文件权限修改

    linux系统中相对于文件有三种身份分别是 文件属主,文件属组和其他(既不是文件属主也不是文件属组)

修改文件的属主

    chown [option] username[:groupname] file

            option

                   -R 递归处理目录下的所有目录或文件 

          示例:修改文件 anaconda-ks.cfg的属主为ftp

修改文件的属组

  

    chgrp [option] groupname file

            option

                   -R 递归处理目录下的所有目录或文件 

          示例1:修改文件 anaconda-ks.cfg的属组为ftp

          示例2:修改文件 anaconda-ks.cfg的属组为ftp

   linux系统中有3种权限读(r) 、写 (w)、执行(x),这三种权限转换成8进制对应的数字为 4  2 1

    文件的权限修改

            chown

               chown [option] MODE file1

                        修改文件的属主,属组,或其他权限

                option

                    -r 递归修改

示例:修改文件 anaconda-ks.cfg属组权限为读写执行

文件元数据查看和文件属性

    stat

        stat [option] file

            查看文件的元数据

                option

                        -f 查看文件在文件系统中的信息

示例:显示文件anaconda-ks.cfg的文件所在文件系统信息和元数据信息

    file

        file [option] filename

        查看文件属性类型

        option

        -L 查看软连接文件对应的源文件类型

示例:查看文件anconda-ks.cfg

文件查找

    locate

        locate [option] pattern

            基于 /var/lib/slocate/slocate.db内的数据查找系统中的匹配关键字的文件或目录(使用update命令可更新该数据库)

            option

                -b 只查找基名匹配的文件或目录

    示例:查找文件名中包含anac的文件或目录

    find

        find [options] [查找起始路径] [查找条件]  [找到后的操作]

        实时查找当前系统中匹配的文件或目录(此命令较为复杂,此刻只做简单示范)

  示例:查找文件名中包含anac的文件或目录    

命令执行返回值

    linux中命令执行后的状态返回值保存在bash的$?变量中,可在命令执行后执行echo $? 命令来查看该值。    

        示例,查看上一个命令的命令执行返回值

                该值为0 命令执行成功

                            1 命名执行错误

                            127 命令不存在

命令行展开

    linux命令行中可使用{}对列表进行承载,并将其展开为多个路径

        示例1:创建/tmp目录下的:a_c, a_d, b_c, 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

命令别名使用

        alias

                linux中可使用alias定义一个命令的别名,常用来讲一个复杂命名用一个简单别名的方式进行使用,此方法定义的别名只在当前shell中生效,如果需要在全局或者重启服务器依然生效需要将该命令声明为环境变量并写入/etc/bashrc 中。

        alias new_name='command option'

   示例:给命令 ls -al 定义一个别名 lsl

命令执行结果引用

    linux中有两种方式可直接引用命令执行结果

        1、 在反引号中执行命令 command

        2、$(command)

    示例:显示当前用户家目录的文件

linux系统中的时间

    date

        用于显示当前系统的时间

        date "+option"

        option   

            %Y : 完整年份 (0000-9999)

            %m : 月份 (01-12)

            %d : 日 (01-31)

            %H : 小时(00-23)

            %M : 分钟(00-59)

            %T : 直接显示时间 (24 小时制)

            %S : 秒(00-60)

            %s : 时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数)

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

bash中的特殊符号

        linux中有一些特殊符号在使用中有特殊意义

            *   通配符,代表任意字符(0到多个)

            ?   通配符,代表一个字符

            #   注释

            /   跳转符号,将特殊字符或通配符还原成一般符号

            |   分隔两个管线命令的界定

            ;    连续性命令的界定

            ~    用户的根目录

            $    变量前需要加的变量值

            !    逻辑运算中的"非"(not)

            /    路径分隔符号

            >, >>   输出导向,分别为"取代"与"累加"

            '   单引号,不具有变量置换功能

            "   双引号,具有变量置换功能

               quote符号,两个`中间为可以先执行的指令

            ()   中间为子shell的起始与结束

            []   中间为字符组合

                [:space:]  所有空白字符

                [:alnum:]:字母和数字

                [:alpha:]:字母 (包含大小写)

                [:cntrl:]:控制(非打印)字符 

                [:digit:]:数字 

                [:graph:]:图形字符 

                [:lower:]:小写字母 

                [:print:]:可打印字符 

                [:punct:]:标点符号 

                [:space:]:空白字符 

                [:upper:]:大写字母 

                [:xdigit:]:十六进制字符

            [^]  对中间字符组合取反

            {}   中间为命令区块组合

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

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

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

示例4:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

示例5:复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录

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

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

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code