一. Linux上的文件管理类命令,及其常用的使用方法和相关示例演示

    1. 目录管理命令

      mkdir:make directory(创建目录)

                语法:mkdir [OPTION]... DIRECTORY...

                -p: 自动按需创建父目录;

                -v: verbose,显示详细过程;

                -m MODE:直接给定权限;

                 注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;               

                示例: mkdir -p /tmp/test/x/y    ----在/tmp目录下递归创建/test/x/y三个目录

                            mkdir -v /tmp/test/x/y    ----在/tmp目录下遍历看是否已经有了我们要创建的文件,有就不创建,没有就创建

                            mkdir -m 777 z             ----在当前目录下z目录同时指定目录z的权限为777

    rmdir:remove empty diectories (删除目录)

                 语法:rmdir [OPTION]... DIRECTORY...

                        -p: 删除某目录后,如果其父目录为空,则一并删除之;

                        -v: 显示过程;

                       注意:rmdir 只能删除空目录

                示例:[root@SilasSZL x]# rmdir -pv /tmp/x/y1/a/

                          rmdir: removing directory, ‘/tmp/x/y1/a/’

                          rmdir: removing directory, ‘/tmp/x/y1’

                          rmdir: removing directory, ‘/tmp/x’

                          rmdir: failed to remove directory ‘/tmp/x’: Directory not empty


        tree目录结构查看

                 语法:tree [options] [directory]

                        -d:只显示目录

                         -L level:指定要显示的层级;

                示例[root@SilasSZL x]# tree -d

                        .

                        ├── test3

                        └── x2

                        

                        2 directories

                        [root@SilasSZL x]# cd /tmp/

                        [root@SilasSZL tmp]# tree -L 1

                        .

                        ├── Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>

                        ├── mysql.sock

                        ├── sess_gd1l4k5doad05sgsmgubcjnrkj0l9b4m

                        ├── sess_r6db4ausbtqt9jhn5b2d2ra9vgas9317

                        ├── systemd-private-f7cf3ddec7f649aaafdeb498d9de431c-ntpd.service-A3JkPQ

                        └── x

                        

                        2 directories, 4 files


        cd:change  directory (改变工作目录)

                语法:cd [/PATH/TO/SOMEDIR]

                示例:cd ..:切换到上级目录

                          cd ~:切换回自己的家目录

                          cd -:在上一次目录与当前目录直接来回切换

        pwd:显示当前目录

                示例[root@SilasSZL ~]# pwd

                          /root


        ls:list 显示指定路径下的文件列表

                语法:ls [OPTION]... [FILE]...

                        -a: 显示所有文件,包括隐藏文件;

                        -A:显示除.和..之外的所有文件;

                       -l: --long, 长格式列表,即显示文件的详细属性信息;

                       -h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值;

                       -d:查看目录自身而非其内部的文件列表;

                       -r: reverse, 逆序显示;

                      -R: recursive,递归显示;

                    示例[root@SilasSZL ~]# ls -a

                                .   anaconda-ks.cfg  .bash_logout   .bashrc  install.log         .mysql_history  satools  .tcshrc   .vimrc

                               ..  .bash_history    .bash_profile  .cshrc   install.log.syslog  .rnd            .ssh     .viminfo

                            [root@SilasSZL ~]# ls -R

                                .:

                                anaconda-ks.cfg  install.log  install.log.syslog  satools


                                ./satools:

                                black.txt  freemem.sh  iptables.sh  lnmp.sh  mysql  php502_check.sh  ssh_safe.sh


    2. 文件管理命令

        cp:copy(复制)

                语法:单源复制:cp [OPTION]... [-T] SOURCE DEST

                            注意:如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;

                                       如果DEST存在:

                                                                如果DEST是非目录文件:则覆盖目标文件;

                                                                如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;

                   多源复制:cp [OPTION]... SOURCE... DIRECTORY

                                     cp [OPTION]... -t DIRECTORY SOURCE...

                            注意:如果DEST不存在:错误;

                                       如果DEST存在:

                                                                如果DEST是非目录文件:错误;

                                                                如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;

                常用选项:-i:交互式复制,即覆盖之前提醒用户确认;

                                  -f:强制覆盖目标文件;

                                  -r, -R:递归复制目录;

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

                                  -a:-dR --preserve=all, archive,用于实现归档;

                                          --preserv=

                                                          mode:权限

                                                          ownership:属主和属组

                                                          timestamps: 时间戳

                                                          context:安全标签

                                                          xattr:扩展属性

                                                          links:符号链接

                                                          all:上述所有属性

                示例

                        Linux基础(二)_Linux

        mv:move(移动)

                语法:mv [OPTION]... [-T] SOURCE DEST

                           mv [OPTION]... SOURCE... DIRECTORY

                           mv [OPTION]... -t DIRECTORY SOURCE..

                常用选项:-i:交互式;

                                 -f:force  强制

                示例

                       Linux基础(二)_Linux_02

                       Linux基础(二)_Linux_03

        rm:remove  删除

                语法:rm [OPTION]... FILE...

                常用选项:-i:interactive   交互式;

                                 -f:force  强制

                                 -r: recursive  递归

                注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)

                示例删除目录:rm -rf /PATH/TO/DIR

                          危险操作:rm -rf /*

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

    1.命令执行状态返回值:

        bash通过状态返回值来输出此结果:

                成功:0

                失败:1-255

                命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

                示例

                       Linux基础(二)_Linux_04

    2. 命令行展开

                ~: 展开为用户的主目录

                ~USERNAME:展开为指定用户的主目录

                {}:可承载一个以逗号分隔的列表,并将其展开为多个路径

                示例/tmp/{a,b} = /tmp/a, /tmp/b

                          /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

 使用命令行展开功能来完成以下练习。

    1.创建/tmp目录下的:a_c, a_d, b_c, b_d

                示例

                        Linux基础(二)_Linux_05

    2. 创建/tmp/mylinux目录下的:

        mylinux/

        I————bin

        I————boot

        II————grub

        I————dev

        I————etc

        I       I————rc. d

        I       I        I————init. d

        I       I————sysconfig

        I              I————network-scripts

        I————lib

        I       I————modules

        I————lib64

        I————proc 

        I————sbin

        I————sys

                示例

                        Linux基础(二)_基础_06

 文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

            1.文件的元数据包括文件名(File)、大小(Size)、数据块(Blocks)、IO块(IO Block)、设备(Device)、节点号(Inode)、硬链接(Links)、权限(Access)、文件所属主(Uid)、文件所属组(Gid)、最近访问时间(Access Time)、最近文件修改时间(Modify Time)、最近文件属性更改时间(Change Time)

            2.通过 touch 命令修改文件的时间戳信息:

                    -c:指定的文件不存在时不予创建(所有时间都会改变);

                   -a:仅修改access time(实际change time会随着改变);

                   -m:仅修改modify time(实际change time会随着改变);

                   -t:使用指定的日期时间,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time为指定时间,change time为当前系统时间)

                示例

                     Linux基础(二)_Linux_07

 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

        1.通过 alias 命令可以查看所有命令的别名或者定义别名,取消别名可通过命令 unalias。

                定义别名格式:alias NAME='COMMAND'

                注意:定义的别名只对当前shell进程有效

                示例

                        Linux基础(二)_基础_08

        2.引用命令的执行结果可通过 $(COMMAND) 或者 COMMAND 两种方式。

                示例[root@SilasSZL ~]#  echo $(date)

                           Sat Oct 6 09:43:05 CST 2018

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

        # ls -d /var/l*[0-9]*[[:lower:]]

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

        # ls -d /etc/[0-9]*[^0-9]

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

        # ls -d /etc/[^[:alpha:]][[:alpha:]]*

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

         [root@SilasSZL tmp]# touch tfile-`date +"%Y-%m-%d-%H-%M-%S"`

         [root@SilasSZL tmp]# ll|grep tfile-2016-05-27-09-32-22

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

        # cp -a /etc/p*[^0-9] /tmp/mytest1

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

        # cp -a /etc/*.d /tmp/mytest2

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

        # cp -a /etc/[l,m,n]*.conf /tmp/mytest3