Linux学习文档(3):文件管理、命令别名、通配符glob

文件管理

cp,mv,rm

复制命令:cp
    cp [OPTION]... SOURCE DEST            #复制单个文件命名为新文件名或保持原文件名
    cp [OPTION]... SOURCE... DIRECTORY    #复制一个或多个文件到指定目录下
    cp [OPTION]... -t DIRECTORY SOURCE... #与上一条结果相同,只不过源和目标做了个调换

    cp SRC DEST
        SRC是文件:
            如果目标不存在,新建DEST,并将SRC中的内容填充至DEST
            如果目标存在
                如果DEST是文件,直接将SRC中的内容覆盖至DEST中
                如果DEST是目录,保留SRC原名并复制到DEST
        SRC是目录:
            -r:递归复制SRC目录,默认不添加选项是不支持的
            如果DEST不存在:创建指定目录,并将SRC下的内容复制到DEST中
            如果DEST存在
                如果DEST是文件:执行结果状态失败
                如果DEST是目录:复制到DEST目录中

    cp SRC... DEST
        SRC...:表示多个源文件
            DEST必须存在并且为目录,其它情况命令执行结果状态都会失败

    常用选项:
        -i:交互式提示是否覆盖目标文件
        -r,-R:递归复制目录以及内部的所有内容
        -a:保留源文件的所有文件属性
        --preserv=[要保留的下列参数]
                mode:权限
                ownership:属主属组
                timestamp:时间属性
                links:链接属性
                context:安全上下文
                all:保留所有属性
                xattr:扩展属性,隐藏属性
        -d:不去跟踪符号链接文件的源文件,也就是说复制的时候复制显示的符号链接文件
        -p:保留权限,属主属组时间戳 = --preserv=mode,ownership,timestamp
        -v:显示复制过程
        -f:强制复制

移动,重命名命令:mv
    mv [OPTION]... SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE

        如果SRC是单个文件:
            如果DEST不存在:移动到指定目录下并改名为指定名称,源文件就没了
            如果DEST存在
                如果目标是文件:将SRC文件内容覆盖至目标文件中并且删除源文件
                如果目标是目录:保留SRC文件名,直接移动到目标目录下
        如果SRC是多个文件:
            DEST必须存在,否则命令执行状态结果就会失败

删除命令:rm
    rm [OPTION]...FILE...
    常用选项:
        -i:交互式提醒
        -r:递归删除
        -r:强制删除

Bash的基础特性(2)

1、命令别名(alias)
    Note:当直接执行"alias"命令不加任何选项时,会打印出当前shell进程中已存在的命令别名,如图

这里写图片描述

(1)alias NAME='VALUE'
    定义别名"NAME",其相当于执行命令"VALUE"
        例子:
            alias cdnet='cd /etc/sysconfig/network-scripts'
    Note:在命令行中定义的别名,仅对当前shell进程有效
(2)如果想永久定义就要编辑以下配置文件
    对当前用户有效:~/.bashrc,保存后使用"source ~/.bashrc"重新读取配置文件生效,此处使用"vim"编辑工具打开的,后续会
                 有文章详解

这里写图片描述

    对所有用户有效:/etc/bashrc,保存后使用"source ~/.bashrc"重新读取配置文件生效

撤销别名
    unalias [-a] name
        -a:撤销当前shell中的所有别名定义
        后面跟name就是撤销自己定义的别名
            例子:
                unalias cdnet      #撤销上面例子中定义的别名
    Note:如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND"来执行

2 通配符:glob(globbing)
    bash中用于实现文件名"通配"
        通配符:*,?,[]
        (1)*
            任意长度的任意字符
                例子:
                    a*b:以a开头b结尾,中间是任意长度任意字符的文件,"aab,a123b,acb..."都是符合的
        (2)?
            任意单个字符
                例子:
                    a?b:以a开头b结尾,中间只能有一个任意字符的文件,"a3b,acb,adb..."都是符合的
            任意两个字符
                例子:
                    a??b:以a开头b结尾,中间可以有两个任意字符的文件,"accb,a12b,addb..."都是符合的
            任意三个字符(一次类推,之间匹配几个字符,就写几个"?")
                .....
        (3)[]
            只能匹配指定范围内的任意单个字符
                [0-9]:所有数字中挑一个
                [a-z]:所有字符中挑一个,默认不区分大小写
                [A-Z]:仅匹配大写字母
                例子:
                    ls /tmp/a[0-9]b:这就会匹配所有以a开头,b结尾,中间是0-9之间任意一个数字的文件

            专用字符集合:
                [:digit:] :任意的数字,相当于0-9,[[:digit:]] = [0-9]
                    ls /tmp a[[:digit:]]b #匹配/tmp下a开头b结尾并且中间是任意单个数字的文件
                [:lower:] :任意小写字母
                    ls /tmp a[[:lower:]]b #匹配/tmp下a开头b结尾并中间是单个小写字母的文件
                [:upper:] :任意大写字母
                    ls /tmp a[[:upper:]]b #匹配/tmp下a开头b结尾并中间是单个大写字母的文件
                [:alpha:] :任意大小写字母
                    ls /tmp a[[:alpha:]]b #匹配/tmp下a开头b结尾并中间是任意单个大小写字母的文件
                [:alnum:] :数字或字母
                    ls /tmp a[[:alnum:]]b #匹配/tmp下a开头b结尾并中间是任意单个大小写字母以及数字的文件
                [:space:] :空格字符
                [:punct:] :标点符号
            转义符号"\"
                加入要匹配[a-z]中的"-"就要使用"\-"转义,让系统知道按照一个普通字符处理

        (4)[^]
            匹配指定范围之外的任意单个字符

练习:

            1、显示/var目录下所有以"l"开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录?
                解:ls -d /var/l*[[:digit:]]*[[:lower:]]
            2、显示/etc目录下,任意一位数字开头,且以非数字结尾的文件或目录
                解:ls -d /etc/[[:digit:]]*[^[:digit:]]
            3、显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录
                解:ls -d /etc/[^[:alpha:]][[:alpha:]]*
            4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/glob目录中
                解:cp -a /etc/m*[^[:digit:]] /tmp/glob
            5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/glob目录中
                解:cp -a /etc/*.d /tmp/glob
            6、复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/glob目录中
                解:cp -a /etc/[m,n,r,p]*.conf /tmp/glob

猜你喜欢

转载自blog.csdn.net/kaikai0720/article/details/81019703