1、   Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。


#    文件及目录列表查看:ls

#    文件内容查看:cat, tac

#    修改文件时间戳或创建新文件:touch

#    文件编辑: vi, nano

    文件管理:cp, mv, rm, 

    (mkdir, rmdir:创建、删除目录)


 

(1)     、复制命令:cp

    格式:

    cp[OPTION]... [-T] SOURCE DEST

    cp[OPTION]... SOURCE... DIRECTORY

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

     说明:1、如果目标不存在,新建目标文件,并将源文件中的内容填充至目标中。

       2、如果目录存在:

       1)目标是文件,覆盖

       2)目标是目录:在目标路径下新建与原文件同名的文件,并填充内容

         3、如果源文件是多个文件,目标必须存在,且为目录,其他情形均会出错。

         4、如果源文件是目录,cp命令默认不会递归复制文件,无法复制。

           此时需要使用选项:-r

            (1)如果目标不存在,则会创建目录,复制源目录中的所有文件至目标中。

           (2)如果目标存在,而且是文件,报错

            (3)如果目标存在,而且是目录,直接复制。

                   

    常用选项:

     -i:交互式

     -r,-R:递归复制目录及内部的所有内容

     -a:归档(复制时必须保留文件原来的样子,包括修改时间),相当于-dR  --Preserv=all         保留文件的属性

    Note:复制会修改文件的源数据,

        -d:--no-dereference,--preserve=links仅复制文件本身,不复制它所指向的链接

        --preserv=[ATTR_LIST]:保留文件的属性,

           后面不加参数默认保留:mode,ownership,timestamps.

              mode:权限

              ownership:属主属组

              timestamp:时间戳

              links:链接属性

              xattr:扩展属性,隐藏属性

              context

              all

       -p--preserv=mode,owership,timestamp

       -v: --verbose

       -f: --force:强制


2)、移动命令:mv :--move

    格式:    

   mv [OPTION]... [-T] SOURCE DEST

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

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

      

常用选项:跟cp命令相同

       -i:交互式(会提示是否执行该操作)

       -f:强制

           

3)、删除命令:rm--remove files or directories

    格式:rm [OPTION]...FILE...

    选项:           

        -i:交互。管理员下,默认所有rm都带有-i选项,每次操作都会自动提示是否需要删除

        -f:强制执行

        -R,-r:递归删除,使用该命令可以删除目录并一个个提示操作

Note:管理员下,默认不可以删除根目录/,如果非要删除,可以使用-rf参数

     rm -rf /tmp/soso/:强制删除/tmp/soso目录及里面的内容

 

 

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

1bash命令执行状态返回值使用特殊变量$?保存

         0,成功

         1:失败

    echo $? 显示执行状态

  2)命令行展开:

       ~:展开为用户的主目录

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

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

          例如:/tmp/{a,b} = /tmp/a,/tmp/b

 

3、请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c,a_d, b_c, b_d

         mkdir -pv /tmp/{a,b}_{c,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

 

答:

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}

 

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


答:文件的元数据用于记录文件的许多信息,比如

Size:大小,

Device:文件的位置

Uid:拥有人,

Gid:所属的组,

Blocks:块大小,

Links:链接数量

时间戳:

Access:访问时间

Modify:修改时间,

Change:改变时间

等等

 

  元数据查看:stat命令

  修改文件的时间戳使用touch命令:

    格式:touch[OPTION]...FILE...

    参数:

        -a:只改atimeaccess time

        -m:只改mtimemodify time

        -t STAMP:指定时间修改

           [[CC]YY]MMDDhhmm[.ss]

         -c:如果文件不存在则不予创建。

   Note:touch文件时,假如文件不存在,会默认创建该文件。


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


答:命令别名使用alias定义

1alias:显示当前shell进程所有可用的命令别名

alias NAME='VALUE'

    定义别名NAME,其相当于执行命令VALUE

    例子:alias cdnet='cd/etc/sysconfig/network-scripts

    定义命令别名cdnet并赋值为其后面的cd命令

2)命令中引用另一个命令的执行结果可以通过管道。

 

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

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

 

例如:

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

    /var/l12d  /var/l1c  /var/l3b  /var/l3k  /var/labc8dfdse

 

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

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

 

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

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

或者 ls -d /etc/[^a-z][a-z]*

 

 

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

   创建文件:touch /tmp/tfile-`date +%F-%H-%M-%S`

   创建目录:mkdir /tmp/tfile-`date +%F-%H-%M-%S`

 

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

    mkdir /tmp/mytest1

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

 

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

    mkdir /tmp/mytest2

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

 

12、复制/etc/目录下所有以lmn开头,以.conf结尾的文件至/tmp/mytest3目录中。

    mkdir /tmp/mytest3

    cp -a /etc/[lmn]*.conf /tmp/mytest3