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

文件管理类命令:

cp: 拷贝命令

SYNOPSIS:

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

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

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

OPTIONS:

-a:归档,相当于-dR --preserve=all,在拷贝时会保留源文件的所有信息,包括:权限、属主属组、时间戳、链接等

-v:verbose,在拷贝时显示详细信息

-R, -r, --recursive:递归拷贝

-i, --interactive:在拷贝数据时进行交互提醒

-p:same as --preserve=mode,在拷贝时保留属主属组和时间戳信息

-f:强制执行

Example:

归档(完整)拷贝/etc/sysconfig/network-scripts目录至/tmp目录下,并在拷贝时显示详细信息:

# cp -av /etc/sysconfig/network-scripts/ /tmp/ 

rm: 删除文件或目录

SYNOPSIS

rm [OPTION]... FILE...

OPTIONS:

-f, --force:强制执行删除任务,不于提醒

-i: 在删除每个文件前都给予提醒

-r, -R, --recursive:递归删除,用于删除目录

-d, --dir:删除空间目录,相当于rmdir命令

-v, --verbose:删除时显示详细信息

Example:

删除/tmp/network-scripts/目录下的所有文件和子目录,并显示删除过程:

# rm -frv /tmp/network-scripts/

mv:移动或重命名文件

SYNOPSIS

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

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

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

OPTIONS:

-f, --force:在覆盖文件时不于提醒

-i, --interactive:与-i相反,在覆盖文件时进行提醒

-v, --verbose:移动文件时给予提醒

Example:

将/tmp/b.txt重命名为/tmp/c.txt

# mv  /tmp/b.txt /tmp/c.txt
将/tmp/t2/目录移动至/tmp/d1/下
# mv -v /tmp/t2/ /tmp/d1/


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

bash有以下特性:

1)、命令执行状态返回值:

Linux命令或程序执行后有两类结果,分别为:

(1)、命令或程序的返回值;

例如:# echo "haha"
返回值为:haha

(2)、命令或程序的执行状态结果。状态结果分两类:成功或失败,可通过bash的特殊变量$?来查看;

命令或程序执行成功时返回:0;

命令或程序执行失败时返回:1-255。

例如:

# touch -c a.txt; echo $?
0
# touchh -c a.txt 2> /dev/null; echo $?
127


2)、命令行展开;

以某些bash能够解释的符号来代替命令中的某些参数。

~:展开为用户的家目录;

例:切换至家目录

# cd ~;pwd
/root

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

例:在/tmp/d目录下创建f1,f2,f3三个文件

# touch /tmp/d/f{1,2,3}

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

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

# mkdir /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 -vp /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、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

文件的元数据信息有:文件名、文件大小、属主属组、硬链接数量、权限信息、访问日期、修改日期、改变日期等 ,可通过stat FILENAME来进行查看。

修改文体的时间戳信息可使用touch命令,touch命令介绍:

SYNOPSIS

      touch [OPTION]... FILE...

      OPTIONS:

      -a:修改文体的访问时间

      -m:修改文件的修改时间

      -c:不创建文件

      -t STAMP:使用STAMP代替当前时间,STAMP格式:[[CC]YY]MMDDhhmm[.ss]

      DESCRIPTION:

      修改文件的任何元数据信息都会引起文件改变时间的变化,包括访问和修改时间。因为改变时间记录的就是无数据信息改变的时间。

      例:

      修改a.txt的访问时间和改变时间为当前时间:

# touch -a a.txt

      修改a.txt的修改时间为2016年1月2日3点4分5秒,改变时间为当前时间:

# touch -m -t 201601020304.05 a.txt

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

使用alias命令定义别名,如:# alias c='clear'

在命令中引用另一个命令的执行结果的方法:

1)、使用管道;

例:统计登陆过系统的用户账号:

# last | cut -d' ' -f1 | sort -u | egrep -v 'reboot|wtmp'

2)、使用反引号(``)或$();

例:创建一个包含当前日期的文件:

# touch file_$(date +"%Y%m%d")

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

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

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

# ls -d /tmp/[[:digit:]]*[^[:digit:]]

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

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

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

# touch /tmp/tfile-`date +"%F-%T" | tr ':' '-'`
or
# touch /tmp/tfile-`date +"%F-%H-%M-%S"`

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

# mkdir /tmp/mytest1;cp -vr /etc/p*[^0-9] /tmp/mytest1/

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

# mkdir /tmp/mytest2;cp -vr /etc/*.d /tmp/mytest2

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

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