第二周作业
一、Linux上的文件管理类命令有哪些,其常用的使用方法以及相关实例演示
演示用结构
[root@centos01 yanshi]# tree -a /tmp/yanshi/ /tmp/yanshi/ ├── a │ └── 1 ├── b │ └── 2 └── c └── 3
cp:将源文件复制至目标文件,或将多个源文件复制至目标目录。
使用方法:
-
cp [选项]…(-t)源文件…目标
-
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中;
[root@centos01 yanshi]# pwd /tmp/yanshi [root@centos01 yanshi]# cp a/1 b [root@centos01 yanshi]# ls b 1 2
-
如果目标存在:如果DEST是文件则将SRC中的内容覆盖至DEST中;此时建议为cp命令使用-i选项;
[root@centos01 yanshi]# cp -i a/1 b cp:是否覆盖"b/1"? y [root@centos01 yanshi]# ls b 1 2
-
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件
[root@centos01 yanshi]# cp b/2 c/ [root@centos01 yanshi]# ls c 2 3
-
cp [选项]…源文件(多个)…目录
-
如果源文件为多个文件,则目标必须存在,且为目录,其它情形均会出错
[root@centos01 yanshi]# cp c/2 c/3 a/ [root@centos01 yanshi]# ls a 1 2 3 [root@centos01 yanshi]# cp c/2 c/3 d/ cp: 目标"d/" 不是目录
-
cp [选项]… -t 目录 文件…目标
此时使用选项:-r(递归复制)
-
如果目标不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
[root@centos01 yanshi]# cp -r c d [root@centos01 yanshi]# ls d/ 2 3
-
如果目标存在:
目标是文件:报错;
目标是目录:在目标目录创建一个与源目录名字相同的目录并把数据导入其中
[root@centos01 yanshi]# cp -r c a/1 cp: 无法以目录"c" 来覆盖非目录"a/1" [root@centos01 yanshi]# cp -r c a [root@centos01 yanshi]# ls a 1 2 3 c [root@centos01 yanshi]# ls a/c 2 3
常用选项:
-i:交互式
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档,相当于-dR –preserv=all
-d:–no-dereference –preserv=links
–preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp: 时间戳
links:连接属性
xattr:扩展属性
context:安全上下文
all:以上所有
-p: –preserv=mode,ownership,timestamp
-v: –verbose:显示详细信息
-f: –force:强制
mv: move,移动文件
使用方法:
-
mv [选项]… [-T] 源文件 目标文件(若目标存在且为文件,则只覆盖其中内容,名字不变)
[root@centos01 tmp]# cd yanshi [root@centos01 yanshi]# mv a/1 b/2 mv:是否覆盖"b/2"? y [root@centos01 yanshi]# ls b 2
-
mv [选项]… 源文件… 目录
[root@centos01 yanshi]# mv b/2 c/ [root@centos01 yanshi]# ls c 2 3
-
mv [选项]… -t 目录 源文件…
[root@centos01 yanshi]# touch 1 [root@centos01 yanshi]# ls 1 a b c [root@centos01 yanshi]# mv 1 a b [root@centos01 yanshi]# ls b c [root@centos01 yanshi]# ls b 1 a
rm: remove,删除
-
使用方法:rm [OPTION]… FILE…
[root@centos01 yanshi]# ls b 1 a [root@centos01 yanshi]# rm b/1 rm:是否删除普通空文件 "b/1"?y [root@centos01 yanshi]# ls b a [root@centos01 yanshi]# cd / [root@centos01 /]# rm -rf /tmp/yanshi/ [root@centos01 /]# ls /tmp/yanshi ls: 无法访问/tmp/yanshi: 没有那个文件或目录
常用选项:
-i: 交互式
-f: 强制删除
-r: 递归
rm -rf
二:bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其实例演示
-
命令的执行结果状态
-
成功
-
失败
-
bash使用特殊变量$?保存最近一条命令的执行状态结果:
-
1-255:失败
-
0:成功
-
程序执行有两类结果:
-
程序的执行状态结果;
-
程序的返回值;
-
命令行展开
-
~USERNAME:展开为指定用户的主目录
-
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
-
/tmp/{1,2}/3 = /tmp/1/3, /tmp/1/3
-
/tmp/{1,2} = /tmp/1, /tmp/2
-
~: 展开为用户的主目录
[root@centos01 /]# mkdir -p /tmp/cl/{1,2} [root@centos01 /]# tree /tmp/cl /tmp/cl ├── 1 └── 2
三:请使用命令行展开功能来完成以下练习(咳!题目就不打了)
-
第一小题
[root@centos01 /]# mkdir /tmp/{a,b}_{c,d} [root@centos01 /]# ls /tmp/ 1 2 a_c a_d b_c b_d beifen cl keyring-s3kIrK orbit-gdm orbit-root pulse-H1wCMLNcXyJa pulse-s2Fn1pYsBx3W pulse-uRDqWcz2n2en virtual-root.TdFWCr yum.log
-
第二小题
[root@centos01 /]# mkdir -p /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@centos01 /]# tree /tmp/mylinux/ /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 24 directories, 0 files
四:文件的元数据信息有哪些?分别表示什么含义,如何查看?如何修改文件的时间戳信息
-
元数据是用来描述数据的数据,使信息的描述和分类可以实现格式化,从而为机器处理创造了可能。
[root@centos01 /]# stat /tmp/mylinux/ File: "/tmp/mylinux/" Size: 4096 Blocks: 8 IO Block: 4096 目录 Device: fd00h/64768d Inode: 534289 Links: 14 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-12-14 01:53:51.445997820 +0800 Modify: 2016-12-14 01:53:47.721989299 +0800 Change: 2016-12-14 01:53:47.721989299 +0800
其中各参数的含义:
File:文件的路径
Size: 文件大小
Blocks: 这个文件使用的块的总数
IO Block:这个文件的IO块大小
普通文件:表示文件的类型
Device:十六进制设备号,设备数量的小数
Inode:Inode号是一个独特的号码,操作系统用inode号码来识别不同的文件
Links:到文件的链接数
Access(0644/-rw-r–r–):文件的权限
Uid:文件所有者的UID和用户名
Gid:文件所有者的GID和组名
access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
modify time:表示我们最后一次修改文件的时间
change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等
-
如何修改文件的时间戳信息
三个时间戳:
access time:访问时间,简写为atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
使用touch [OPTION]… FILE…
-a: 只修改 atime
-m: 只修改 mtime
-t STAMP:指定具体时间的格式
[[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存,则不予创建
如何定义一个命令的别名,如何在一个命令中引用另一个命令的执行结果
-
别名:
通过alias实现:
alias:显示当前shell进程所有可用的命令别名
alias 别名=‘原命令’ (为避免空格,原命令两端加入单引号)
注意:在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,需修改配置文件
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
修改配置文件后不会像在命令行中一样立即生效,不关闭当前shell进程的情况下,需重新读取配置文件
bash进程:source /….或. /……
注:修改别名前确认不要和别的命令相冲突,可使用tab补全试一试
-
管道:COMMAND1 | COMMAND2 | COMMAND3 |…
显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符的文件或目录)
[root@centos01 /]# ls -d /var/l*[0-9]*[a-z] ls: 无法访问/var/l*[0-9]*[a-z]: 没有那个文件或目录 [root@centos01 /]# mkdir /var/ls33b [root@centos01 /]# ls -d /var/l*[0-9]*[a-z] /var/ls33b
显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
[root@centos01 /]# ls -d /etc/[0-9]*[^0-9] ls: 无法访问/etc/[0-9]*[^0-9]: 没有那个文件或目录 [root@centos01 /]# mkdir /etc/9854a [root@centos01 /]# ls -d /etc/[0-9]*[^0-9] /etc/9854a
显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度字符的文件或目录
[root@centos01 /]# ls -d /etc/[^[:alpha:]][[:alpha:]]* ls: 无法访问/etc/[^[:alpha:]][[:alpha:]]*: 没有那个文件或目录 [root@centos01 /]# mkdir /etc/5adjoayud [root@centos01 /]# ls -d /etc/[^[:alpha:]][[:alpha:]]* /etc/5adjoayud
在/tmp目录下创建以tfile开头,后面跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
[root@centos01 /]# touch /tmp/tfile-$(date +%F-%H-%M-%S) [root@centos01 /]# ls /tmp/t* /tmp/tfile-2016-12-14-04-01-09
复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp -rf /etc/p*[^0-9] /tmp/mytest1
复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
cp -r /etc/*\.d /tmp/mytest2
复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
cp -r /etc/[l,n,m]*\.conf /tmp/mytest3
原创文章,作者:Net25_青梅煮茶,如若转载,请注明出处:http://www.178linux.com/63680
评论列表(1条)
赞~总结的内容是没啥问题,其中解决的方法不止一种~建议多进行扩展一下~继续加油~