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 18:22
下一篇 2016-12-14 18:35

相关推荐

  • 磁盘文件系统基础(一)

    磁盘的主要硬件单元有:     1、磁头:通过电磁感应的方式对磁盘数据进行读写。     2、磁道:在磁盘自传过程中磁头划过的圆形轨迹,这些轨迹是肉眼看不见的特色磁化区域。     3、扇区:磁盘上的每个磁道被等分为若干个圆弧,这些圆弧被称…

    Linux干货 2016-10-27
  • 文件查找find和locate

            在Linux这个一切皆文件的系统中怎么能快速和精确的查找到文件,是我们必不可少的技能。而文件查找的命令可以让我们在很短的时间内在文件系统中找到我们要查找的文件。这就是我们要掌握的,因此我来介绍一下文件查找的这两个命令locate和find。 文件查找:在文件系统上…

    Linux干货 2016-08-24
  • LVM2学习总结

    LVM2(Logical Volume Manager 2) 原理: 将底层的物理硬盘抽象地封装起来,以逻辑卷的方式呈现给上层应用,但对于文件系统而言,对LVM的操作与对硬盘分区的操作并无差别。 实现基础: Linux内核的Device mapper机制,将一个或多个底层块设备组织成一个逻辑设备 基本元素: PP(Physical Partition):物理…

    Linux干货 2016-08-22
  • N25-第四周博客

      复制/etc/ske1目录为/home/tuser1,要求/home/tuser1及其内部文件的属组合其他用户均没有任何访问权限。            2,编辑/etc/group文件,添加组hadoop.。    &nbs…

    Linux干货 2016-12-22
  • 文本三剑客之sed用法总结

    描述:    sed是Stream EDitor(行编辑器)的简写,是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你…

    Linux干货 2016-08-10
  • select与case组合循环

    select与case: 格式: select variable in list do 循环体命令 done 例1:     #!/bin/bash PS3="what do you want: " select i in a b c d         #在例2中省略…

    Linux干货 2016-08-22

评论列表(1条)

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

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