第一题 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
mkdir:创建目录
语法:mkdir [OPTION]... DIRECTORY...
常用选项:
-p:若要建立目录的上层目录目前尚未建立,则会一并建立上层目录,递归创建
-v:显示命令的详细执行过程
-m:建立目录的同时设置目录的权限
示例:~]# mkdir -pv /tmp/a/b/c
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/c’
rmdir:删除空目录
语法:rmdir [OPTION]... DIRECTORY...
常用选项:
-p:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除,递归删除
-v:显示命令的详细执行过程
示例:~]# rmdir -pv /tmp/a
rmdir: removing directory, ‘/tmp/a/b/c’
rmdir: removing directory, ‘/tmp/a/b’
rmdir: removing directory, ‘/tmp/a’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy
tree:用于以树状图列出目录的内容
语法:tree(选项)(参数)
常用选项:
-a:显示所有文件和目录
-d:先是目录名称而非内容
-D:列出文件或目录的更改时间
-f:在每个文件或目录之前,显示完整的相对路径名称
-g:列出文件或目录的所属群组名称,没有对应的名称时,显示群组识别码
-s:列出文件和目录大小
示例:~]# tree /tmp
/tmp
├── ks-script-iuOeuf
├── systemd-private-2446b9f303064c4881dff4c7cfb73af2-chronyd.service-pcxxmY
│ └── tmp
├── vmware-root
└── yum.log
cp:文件复制
语法:单源复制:cp [OPTION]... [-T] SOURCE DEST
多源复制:cp [OPTION]... SOURCE... DIRECTORY
多源复制:cp [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i:交互式复制,即覆盖之前提醒用户确认
-f:强制覆盖目标文件,即不需要用户再次确认
-r,-R:递归复制目录
-d:当复制符号连接时,把文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-v:显示指令的详细执行过程
mv:对文件或目录重新命名或将文件从一个目录移到别一个目录中
语法:mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
rm:删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件或其子目录删除掉
语法: rm [OPTION]... FILE...
常用选项:
-f:强制删除文件或目录
-i:删除已有文件或目录之前先询问用户
-r,-R:递归删除,将指定目录下的所有文件与子目录一并处理
-v:显示指令的详细执行过程
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。建议创建一个类似回收站的目录,将这些文件存入此目录中,确认是否真的不需要了,再进行此命令。
第二题 bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
答:
1)命令执行状态结果:bash通过状态返回值来输出此结果
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存与bash的特殊变量$?中:~]# echo $?
示例:~]#ls /etc
~]# echo $?
0
~]#lssssss /etc
~]# echo $?
127
通过结果会发现命令下方的0代表成功,除0以外的1-255的数字代表失败,根据命令及其功能不同,结果也各不相同并且,此命令只能用于上一条命令
2)命令行的展开:
~:自动展开为用户的家目录,或制定的用户的家目录
{}:可承载一个以逗号分隔的路径列表,并能够为其展开为多个路径
如:/tmp/{a,b} 相当于/tmp/a tmp/b
第三题 请使用命令行展开功能来完成以下练习
1)创建/tmp目录下的:a_c, a_d, b_c, b_d
~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_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}}
mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/bin’
mkdir: created directory ‘/tmp/mylinux/boot’
mkdir: created directory ‘/tmp/mylinux/boot/grub’
mkdir: created directory ‘/tmp/mylinux/dev’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’
mkdir: created directory ‘/tmp/mylinux/lib’
mkdir: created directory ‘/tmp/mylinux/lib/modules’
mkdir: created directory ‘/tmp/mylinux/lib64’
mkdir: created directory ‘/tmp/mylinux/proc’
mkdir: created directory ‘/tmp/mylinux/sbin’
mkdir: created directory ‘/tmp/mylinux/sys’
mkdir: created directory ‘/tmp/mylinux/tmp’
mkdir: created directory ‘/tmp/mylinux/usr’
mkdir: created directory ‘/tmp/mylinux/usr/local’
mkdir: created directory ‘/tmp/mylinux/usr/local/bin’
mkdir: created directory ‘/tmp/mylinux/usr/local/sbin’
mkdir: created directory ‘/tmp/mylinux/var’
mkdir: created directory ‘/tmp/mylinux/var/lock’
mkdir: created directory ‘/tmp/mylinux/var/log’
mkdir: created directory ‘/tmp/mylinux/var/run’
第四题 文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
答:
stat:显示文件或文件系统状态信息(元数据信息)
语法:stat [OPTION]... FILE...
例如: ~]# stat /etc/magic
File: ‘/etc/magic’
Size: 111 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 67208643 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2018-08-14 01:51:31.003309475 -0400
Modify: 2016-11-05 16:07:30.000000000 -0400
Change: 2018-08-13 23:38:49.497514785 -0400
Birth: -
File:文件名称
Size:文件大小
Blocks:占据的硬盘块数
IO Block:每个IO块的大小
regular file:文件类型
Device:所在设备
Inode:Inode节点号
Links:被链接的次数
第一个Access:访问权限
Uid:Uid号和属主
Gid:gid号和属组
Context:(SELinux)环境
第二个Access:文件最近一次的访问时间
Modify:文件的更改时间
Change:文件的改变时间
Birth:创建日期
touch:用于创建空文件或更改文件的三个时间戳
语法:touch [OPTION]... FILE...
常用选项:
-a:只修改访问时间
touch -a /tmp/yum.log
-m:只修改更改时间
touch -m /tmp/yum.log
-c:如果文件存在,则更新三个时间戳,并且不创建空文件。如果文件不存在,则创建一个空文件
touch -c /tmp/yum.log
-t:使用指定的日期时间
touch -t 201811081110 /tmp/yum.log
第五题 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
答:
alias:获取当前用户可用的别名
~]# alias
定义别名:
~]# alias NAME='COMMAND'
仅当前shell进程有效
撤消别名:
~]# unalias NAME
如果别名与命令名相同时,直接调用原命令,而非别名,可用\COMMAND取消命令别名功能
例如:~]# alias st=stat
则可使用st代替stat命令,如果不想使用此别名,则可继续使用stat或者~]#unalias st取消此别名
使用管道符可以引用另一个命令的执行结果
如:~]# cat /etc/passwd | head -n -6
或者定义一个命令的别名也可以在命令中引用别一个命令的执行结果。
第六题 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
答:
~]#ls -d /var/l*[a-z]
匹配模式:元字符
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z],[A-Z],[0-9],[a-z0-9],此处字母不区分大小写
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]:除了所有大写字母以外的
[^0-9]除了所有数字以外的
[^[:alnum:]]除了所有字母和数字以外的
第七题 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
答:
~]# ls -d /etc/[0-9]*[^0-9]
第八题 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
~]# ls -d /etc/[^0-9][a-z]*
第九题 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
~]# mkdir -v /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
第十题 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
~]# cp -rv /etc/p*[^0-9] /tmp/mytest1
第十一题 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
~]# cp -rv /etc/*.d /tmp/mytest2
第十二题 复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
~]# cp /etc/[lmn]*.conf /tmp/mytest3