N25第二周作业

第二周作业

一、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

(0)
Net25_青梅煮茶Net25_青梅煮茶
上一篇 2016-12-14
下一篇 2016-12-14

相关推荐

  • 马哥教育网络21期+第6周博客练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s@\(^[[:space:]]\+\)@#&@g # Let rhgb know that we&#0…

    Linux干货 2016-08-15
  • 进程管理,计划任务

    一、进程相关概念及系统管理工具     进程概念         内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等         P…

    Linux干货 2016-09-18
  • Linux学习总结及练习&day08-sed文本处理工具

    第一部分、Linux文本处理三剑客之sed(Stream EDitor)文本编辑工具     一、sed的基本功能工作原理     sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令…

    Linux干货 2016-08-10
  • 内键命令和外部命令

    命令的基本格式 COMMAND  [OPTIONS…]  [ARGUMENTS…]        命令 (COMMAND)       OPTIONS(选项):用于启用或关闭命令的某个或某些功能      …

    2017-05-23
  • 14程序包的编译安装

    在有些源代码程序没有被编译成rpm的时候,或者其他人写了一个源代码程序,要把它安装在服务器上要怎么做呢? 那就需要对源代码进行编译安装了。 C代码编译安装三步骤: 1、./configure: (1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile (2) 检查依赖到的外部环境,如依赖的软件…

    Linux干货 2016-11-27
  • 习题

    1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符 2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符 3、在/root/install.log每一行行首增加#号 4、在/etc/fstab文件中不以#开头的行的行首增加#号 5、处理/etc/fstab路径,使用sed命令取出其目录名和基…

    Linux干货 2016-08-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-16 23:42

    赞~总结的内容是没啥问题,其中解决的方法不止一种~建议多进行扩展一下~继续加油~