1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
1、目录相关命令:pwd,cd
 
(1)查看用户当前工作目录:pwd
例:[root@localhost ~]# pwd     #显示出当前工作的目录
    /root
    [root@localhost ~]#
 
(2)CD的用法
cd 或者cd ~:回当前用户的主目录
   例:
    [root@localhost ~]# cd /home   #进入home目录
    [root@localhost home]# cd ~    #cd ~回到当前用户的主目录
    [root@localhost ~]# pwd        #显示当前用户工作主目录命令
    /root
cd ~USERNAME :切换至指定用户的主目录
   例:
    [root@localhost ~]# useradd yicx01#添加一个用户
    [root@localhost ~]# su yicx01      #切换至指定用户
    [yicx01@localhost root]$ pwd       #显示当前用户工作主目录命令
    /root                              # 虽然是显示为root但是无法读写只能切换
    
cd  -:在上一个目录和当前目录之间来回切换
   例:
    [root@localhost /]# cd home     #切换至指定目录
    [root@localhost home]# cd -     #切换到上一个目录
    /
    [root@localhost /]# cd -        #切换到上一个目录
    /home
..:上一个目录
   例:
    [root@localhost ~]# cd /etc/yum    #切换至/etc/yum/目录
    [root@localhost yum]# pwd          #显示当前工作目录
    /etc/yum
    [root@localhost yum]# cd ..        #切换到上一个目录
    [root@localhost etc]# pwd          #显示当前工作目录
    /etc
    
2、 ls:list 显示指定路径下的文件列表
    用法:ls [OPTION]… [DIR]…
    -a ,all :显示所有文件,包括隐藏文件
    例:
    [root@localhost yum]# ls –a    #不加任何路径显示当前目录下的所有文件,包括隐藏文件(点开头即为隐藏文件)
    
.   fssnap.d      protected.d  version-groups.conf  yum-cron-hourly.conf
..  pluginconf.d  vars         yum-cron.conf
-l:长格式
    例:
    [root@localhost yum]# ls -l     #显示长格式的文件
    总用量 12
    drwxr-xr-x. 2 root root    6 12月  3 2015 fssnap.d
    drwxr-xr-x. 2 root root   52 8月  11 18:30 pluginconf.d
    drwxr-xr-x. 2 root root   25 8月  11 18:27 protected.d
    drwxr-xr-x. 2 root root   18 12月  3 2015 vars
    -rw-r--r--. 1 root root  444 12月  3 2015 version-groups.conf
    
-d: 显示目录自身的相关属性;通常是与-l一起使用
    例:
    [root@localhost yum]# ls -d
    .
    [root@localhost yum]# ls –ld      #显示/root/目录本身情况
    drwxr-xr-x. 6 root root 4096 8月  11 18:27 .
 
 
    -d: 显示目录自身的相关属性;通常是与-l一起使用
    例:
    [root@localhost yum]# ls -d
    .
    [root@localhost yum]# ls –ld      #显示/root/目录本身情况
    drwxr-xr-x. 6 root root 4096 8月  11 18:27 . 
    
    
    
    
3、mkdir 创建文件夹
    用法:mkdir [OPTION]… DIRECTORY…
    -p, –parents 如果已存在文件夹不会报错,且如果已存在相同文件夹名则不会作任何提示
        例:
        [root@localhost ~]# mkdir /tmp/test    #没有带参数建立一个文件夹
        [root@localhost ~]# mkdir /tmp/test    #没有带参数重新建立一个相同文件夹
        mkdir: 无法创建目录"/tmp/test": 文件已存在    #显示已存在,系统报错误
        [root@localhost ~]# mkdir -p /tmp/test    #加入参数P后,系统没有提示报错
        
        
4、rmdir 移除文件命令 (只能删除空的文件夹,如有文件无法删除)
   用法:rmdir [OPTION]… DIRECTORY…  
   
   -v –verbose,显示删除时信息
   例:
        [root@localhost ~]# rmdir -v test      #删除一个空的文件夹并显示删除时的信息
        rmdir: 正在删除目录 "test"
 
   -p, –parents 移除空的文件夹(非空目录无法删除)
    例:
    [root@localhost test]# ll
    总用量 0
    drwxr-xr-x. 2 root root 6 8月  14 19:19 x_a
    -rw-r--r--. 1 root root 0 8月  14 19:19 x_a.txt
    drwxr-xr-x. 2 root root 6 8月  14 19:20 x_b
    -rw-r--r--. 1 root root 0 8月  14 19:20 x_b.txt
    drwxr-xr-x. 2 root root 6 8月  14 19:20 y_a
    -rw-r--r--. 1 root root 0 8月  14 19:20 y_a.txt
    rwxr-xr-x. 2 root root 6 8月   14 19:20 y_b
    -rw-r--r--. 1 root root 0 8月  14 19:20 y_b.txt
 
 
    [root@localhost tmp]# rmdir -p -v {x,y}_{a,b}
     rmdir: 正在删除目录 "x_a"
     rmdir: 删除 "x_a" 失败: 目录非空
     rmdir: 正在删除目录 "x_b"
     rmdir: 删除 "x_b" 失败: 目录非空
     rmdir: 正在删除目录 "y_a"
     rmdir: 删除 "y_a" 失败: 目录非空
     rmdir: 正在删除目录 "y_b"
     rmdir: 删除 "y_b" 失败: 目录非空
     
     
 5、tree:显示树状格式目录的内容
    用法:tree [option]…[directory …]
    -d:只显示目录
    例:
        [root@localhost ~]# mkdir -p /tmp/test/test1  #在/tmp下创建两个目录
        [root@localhost ~]# cp /etc/fstab /tmp/test/test1    #复制/etc/fstab文件到/tmp/test/test1/目录下
        
        [root@localhost ~]# tree /tmp/  #没有带参数时显示/tmp下所有目录和文件
            /tmp/
            └── test
                 └── test1
                     └── fstab
                    2 directories, 1 file
                     
                     
        [root@localhost ~]# tree -d /tmp/  #带参数-d则只显示test和test1两个目录
            /tmp/
                └── test
                    └── test1
 
                    2 directories
-L level 指定显示的层级数目
例:
        [root@localhost ~]# tree -L 2 /tmp#指定显示第二层的目录和文件
            /tmp
                └── test
                    ├── abc.txt
                       └── test1
                    2 directories, 1 file
                    
                    
-P pattern 只显示由指定pattern匹配到的路径
例:
        [root@localhost ~]# tree -P /tmp
        .
        ├── scripts
        ├── \345\205\254\345\205\261
        ├── \346\250\241\346\235\277
        ├── \350\247\206\351\242\221
        ├── \345\233\276\347\211\207
        ├── \346\226\207\346\241\243
        ├── \344\270\213\350\275\275
        ├── \351\237\263\344\271\220
        8 directories, 0 files
        
        
       
       
       
6、文件管理命令:cat,tac,more,less,tail,head
   用法:cat [OPTION]… [FILE]…
   cat:显示连续的文件内容
例:
    [root@localhost ~]# cat /tmp/test/test1/fstab
    #
    # /etc/fstab
    # Created by anaconda on Thu Aug 11 18:25:00 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs             defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    
    
-n:对显示出的每一行进行编号
例:
    [root@localhost ~]# cat -n /tmp/test/test1/fstab 
     1 
     2 #
     3 # /etc/fstab
     4 # Created by anaconda on Thu Aug 11 18:25:00 2016
     5 #
     6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
     7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     8 #
     9 /dev/mapper/centos-root /                       xfs     defaults        0 0
    10 UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs     defaults        0 0
    11 /dev/mapper/centos-swap swap                    swap    defaults
tac 从文件尾部行向首行读取内容,参数同cat用法一样。
例:
    [root@localhost ~]# tac /tmp/test/test1/fstab
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs         defaults        0 0
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    #
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # Created by anaconda on Thu Aug 11 18:25:00 2016
    # /etc/fstab
    
    
    
more: 从首部向尾部查看文件内容
用法:more [OPTION] FILE…
-d:显示翻页及退出提示
 
less:多次的more从首部向尾部查看文件内容
用法:less [OPTIONS…] FILE…

head:从文件首部行向尾部行读取内容
    用法:head [OPTION]… [FILE]…
    -c #:指定获取前#字节
    例:
    [root@localhost test]# head -c 100 /tmp/test/test1/fstab
 
    #
    # /etc/fstab
    # Created by anaconda on Thu Aug 11 18:25:00 2016
    #
    # Accessible filesystems, by ref[root@localhost test]#
 
 
    -n #:指定获取前#行
    例:
    [root@localhost ~]# head -n 10 /tmp/test/test1/fstab
 
    #
    # /etc/fstab
    # Created by anaconda on Thu Aug 11 18:25:00 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs        defaults        0 0
    
    
    
tail:从文件内容尾部行行尾开始向首部行读取内容
    用法:tail [OPTION]… [FILE]…
    -n #:指定获取后#行
    例:
    [root@localhost ~]# cat /tmp/test/test1/fstab
 
    #
    # /etc/fstab
    # Created by anaconda on Thu Aug 11 18:25:00 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs        defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    [root@localhost ~]# tail -c 10 /tmp/test/test1/fstab 
      0 0
 
 
-n #:指定获取后#行
 
    [root@localhost ~]# tail -n 10 /tmp/test/test1/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Thu Aug 11 18:25:00 2016
#    
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=9b67a6e3-cf73-446d-8e08-43050a94d94b /boot                   xfs        defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0
    
    
    
    
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
(1)Bash命令执行状态返回值:
Bash 命令执行后,会对执行状态返回一个值。 如果命令执行成功则返回0,如果执行不成功,就会返回一个1—255的数字。
Bash使用特殊变量$?保存最近一条命令的执行状态结果:($? 在Bash中是特殊变量)
命令的执行结果状态(状态只有2种,要么成功要么失败)
    0:成功
    1-255:失败
    例:
    [root@localhost ~]# ll /etc/passwd
    -rw-r--r--. 1 root root 2471 8月  14 18:28 /etc/passwd
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]# ll /etc/passwdd
    ls: 无法访问/etc/passwdd: 没有那个文件或目录
    [root@localhost ~]# echo $?
    2
 
(2)命令行展开特性:
    2.1、“~”  展开为用户的家目录
    使用方法:~username     // 展开为指定的用户的主目录
    例:
    [root@localhost ~]# cd ~yicx
    [root@localhost yicx]# pwd
    /home/yicx
 
(3)使用花括号,里面用逗号分隔的列表,并将其展开为多个路径
    例:
    [root@localhost tmp]# mkdir -p /tmp/{a,b}
    [root@localhost tmp]# tree /tmp
    /tmp
    ├── a
    └── b
    2 directories, 0 files

3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
 
       [root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}
       mkdir: 已创建目录 "/tmp/a_c"
       mkdir: 已创建目录 "/tmp/a_d"
       mkdir: 已创建目录 "/tmp/b_c"
       mkdir: 已创建目录 "/tmp/b_d"
       [root@localhost tmp]# tree /tmp/
       /tmp/
      ├── a_c
      ├── a_d
      ├── b_c
      └── b_d
      4 directories, 0 files
      
      
      
      
      
(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
 
例:
 [root@localhost ~]# mkdir -pv /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}
 
     [root@localhost ~]# tree /tmp/mylinux/
    /tmp/mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │       └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── lock
    ├── log
    ├── proc
    ├── run
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │       ├── bin
    │       └── sbin
    └── var
    24 directories, 0 files

4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
   文件的元数据包含文件本身的一些属性信息,
   如:文件名、文件的各类权限、各类时间戳、链接次数等。
   文件包括三个时间戳:atime,mtime,ctime,可以使用touch命令来修改时间戳,
   用法如下:
 
文件时间戳管理工具:touch
    文件:metadata, data
    三个时间戳:
    access time:访问时间--->简写为atime,读取文件内容
    modify time: 修改时间--->简写为mtime,改变文件内容(数据)
    change time: 改变时间--->简写为ctime,元数据发生改变
 
 (1)查看时间戳命令:stat
[root@localhost tmp]# stat /etc/passwd
 文件:"/etc/passwd"
 大小:2471      块:8          IO 块:4096  普通文件
  设备:fd00h/64768d Inode:71172463   硬链接:1
  权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
  环境:system_u:object_r:passwd_file_t:s0
  最近访问:2016-08-14 18:28:01.875918732 +0800
  最近更改:2016-08-14 18:28:00.364890218 +0800
  最近改动:2016-08-14 18:28:00.365892892 +0800
 
(2)
    手动指定修改时间戳命令:touch
    touch [OPTION]... FILE...
    -a: only atime (指定修改访问时间)
    -m: only mtime (指定修改修改时间)
    -t STAMP:(自己指明时间戳)
        [[CC]YY]MMDDhhmm[.ss]
    -c: 如果文件不存在,则不予创建
    
    
    
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    命令别名(alias 是一个bash的内建命令)通过alias命令实现:
    (1) alias
        显示当前shell进程所有可用的命令别名;
 
    (2) alias NAME='VALUE'
        定义别名NAME,其相当于执行命令VALUE;
 
注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
     
    仅对当前用户:~/.bashrc
    对所有用户有效:/etc/bashrc
 
    Note: 编辑配置给出的新配置不会立即生效;
    bash进程重新读取配置文件:
        source /path/to/config_file
        ./path/to/config_file
 
    撤消别名:unalias
    unalias [-a] name [name ...]
     
    Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";
    
    
    
    
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    例:
        [root@localhost ~]# touch /var/labc8m    #由于没有此种规则文件则需要创建一个
        [root@localhost ~]# ls -d /var/l*[0-9]*[[:lower:]]    #然后输入规则命令
        /var/labc8m    #最后显示结果

7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    例:
        [root@localhost ~]# touch /etc/123abc8m    #由于没有此种规则文件则需要创建一个
        [root@localhost ~]# ls -d /etc/[0-9]*[^0-9]   #然后输入规则命令
        /etc/123abc8m  #最后显示结果
        
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    例:
        [root@localhost ~]# touch /etc/1b-12345    #由于没有此种规则文件则需要创建一个
        [root@localhost ~]# ls /etc/[^[:alpha:]][[:alpha:]]*    #然后输入规则命令
        /etc/1b-12345    #最后显示结果
        
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
    例:
        [root@localhost ~]# touch /tmp/tfile-`date +%F-%H-%M-%S`    #创建目录
            [root@localhost ~]# ll /tmp    #查看目录
        总用量 0    
        -rw-r--r--. 1 root root 0 8月  15 19:04 tfile-2016-08-15-19-04-20    #显示结果
        
        
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    例:
        [root@localhost tmp]# mkdir /tmp/myloveLinux    #创建目录
           [root@localhost tmp]# cp -rf /etc/p*[^[:lower:]] /tmp/myloveLinux #复制文件目录
 
        [root@localhost tmp]# ls /tmp/myloveLinux/    #显示复制结果     
   
        passwd-  pkcs11  polkit-1
        
        
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    例:
        [root@localhost ~]# cp -rf /etc/*.d /tmp/myloveLinux    #复制文件目录
        [root@localhost ~]# ls /tmp/myloveLinux/    #显示复制结果
        auto.master.d      init.d          profile.d      sane.d
        bash_completion.d  ipsec.d         rc0.d          setuptool.d
        binfmt.d           ld.so.conf.d    rc1.d          statetab.d
        cgconfig.d         libibverbs.d    rc2.d          sudoers.d
        chkconfig.d        logrotate.d     rc3.d          sysctl.d
        
        
        
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
    例:
        [root@localhost ~]# cp -rf /etc/[lmn]*.conf /tmp/myloveLinux    #复制文件目录
        [root@localhost ~]# ls /tmp/myloveLinux/    #显示复制结果
        ld.so.conf     locale.conf     mke2fs.conf    nsswitch.conf
        libaudit.conf  logrotate.conf  mtools.conf    ntp.conf
        libuser.conf   man_db.conf     nfsmount.conf  numad.conf