1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
- cp命令 cp - copy files and directories
- 单源复制cp [OPTION]... [-T] SOURCE DEST
- 多源复制cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...- 使用单源复制的时候有两种情况
- 如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
- 如果DEST存在
- 如果DEST是非目录文件:则覆盖目标文件
- 如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流
- 多源复制也有两种情况
- 如果DEST不存在 错误
- 如果DEST存在
- 如果DEST是非目录文件 错误
- 如果DEST是目录文件 分别复制每个文件至目标目录中,并保持原名
- 使用单源复制的时候有两种情况
- 常用选项
-
-i:交互式复制,即覆盖之前提醒用户确认
- -f:强制覆盖目标文件
-
由于cp是cp -i的别名,所以实际中即使添加了-f也不会强制覆盖。解决方案是使用“\cp”使别名无效
-
-
-r:递归复制目录
-
-d:复制符号链接文件本身,而非指向的源文件
-
-a: same as -dR --preserve=all,archive,用于实现归档
- --preserv=
- mode:权限
- ownership:属主和属组
- timestamps:时间戳
- context:安全标签
- xattr:扩展属性
- links:符号链接
- all:上述所有属性
-
- mv命令
- mv [OPTION]... [-T] SOURCE DEST
- mv [OPTION]... SOURCE... DIRECTORY
- mv [OPTION]... -t DIRECTORY SOURCE...
- 常用选项:
-
-i:覆盖前提示
-
-f:force
-
- 常用选项:
- rm命令:remove
- rm - remove files or directories
- 常用选项
-
-i:interactive
-
-f:force
-
-r:recursive
-
- 常用选项
-
删除目录:rm -rf /PATH/TO/DIR
注意:在生产环境中所有不用的文件建议不要直接删除,而是移动至某个专用目录:(模拟回收站)
- rm - remove files or directories
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
- 命令执行状态返回值
- 命令执行完成之后,其状态返回值会保存于bash的特殊变量"?"中。可以用"echo?"查看
- bash通过状态返回值来输出此结果
- 0 成功
-
1-255 失败
- 命令行展开
-
展开为用户的家目录,或指定的用户的家目录
-
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。例如:/tmp/{a,b}相当于/tmp/a,/tmp/b
-
3、请使用命令行展开功能来完成以下练习:
- 创建/tmp目录下的:a_c, a_d, b_c, b_d
touch /tmp/{a,b}_{c,d}
-
创建/tmp/mylinux目录下的
mkdir -p /tmp/mylinux/{bin,/etc/{rc.d/init.d,sysconfig/network-scripts},boot/grub,dev,lib/modules,lib64,proc,sbin,sys,tmp,/usr/local/{bin,sbin},/var/{lock,log,run}}
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
- stat命令:显示文件或文件系统的状态 看到的是元数据
- stat FILE...
- 每一个文件都有两类数据 分别为元数据(metadata),数据(data) 元数据是对数据的描述 是数据的属性
- 时间戳
- access time
- modify time(指的是数据改变) 如果数据改变了那么最近更改这个时间戳肯定会改变 而最近更改实际上是元数据 所以元数据也会变
- change time(指的是元数据改变)
- stat FILE...
- touch命令
- touch - change file timestamps(时间戳)
- touch [OPTION]... FILE... 文件不存在则会创建一个空文件
- -c:指定的文件路径不存在时不予创建
- -a:仅修改access time
- -m:仅修改modify time
- -t STAMP
- [[CC]YY]MMDDhhmm[.ss] 需与-a -m一起使用
- touch [OPTION]... FILE... 文件不存在则会创建一个空文件
- touch - change file timestamps(时间戳)
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
- 命令别名:
- 获取所有可用别名的定义
~]# alias
- 定义别名(当前shell中有效)
~]# alias NAME='COMMAND'
- 撤销别名
~]# unalias NAME
- 如果想永久有效,需要添加到配置文件中
- 任何在进程定义的东西 随进程的终止而终止
- 引用命令的执行结果使用:$(COMMAND)或
COMMAND
- 获取所有可用别名的定义
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls -d /var/l*[0-9]*[a-z]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls -d /etc/[0-9]*[^[0-9]]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -r /etc/p*[^[:upper:]] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -r /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp /etc/{l,m,n}*.conf /tmp/mytest3