N28-第二周作业

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

命令:cp、mv、rm

1.1 cp命令

用法:

  • cp [OPTIONS]…[-T] SOURCE DEST
  • cp SRC DEST而言,SRC是文件时
  • 如果目标不存在:
    • 新建DEST,并将SRC中内容填充至DEST中
  • 如果目标存在:
    • 如果DEST是文件:将SRC中的内容覆盖至DEST中,此时建议为cp命令使用-i选项
    • 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中文件的数据流导出一份填充至新文件中
    • 对于管理员来说,默认会有-i选项;对于普通用户是不具备的
  • cp SRC DEST而言,SRC是目录时
  • 如果DEST不存在:
    • 创建指定目录,赋值SRC目录中所有文件至DEST中,不包括SRC目录
  • 如果DEST存在:
    • 如果DEST是文件:
      • 报错:显示无法以SRC源目录来覆盖文件
    • 如果DEST是目录:在目标目录下创建一个与源目录同名的目录,并且把源目录文件复制到目标目录中去
  • 此时使用选项:-r。因为原来是个目录,会忽略这个操作。说明cp命令默认情况下不支持目录复制
  • cp [OPTION]…SOURCE… DIRECTORY
    • SRC…:多个文件
      • DEST必须存在,且为目录,其他情形均会出错,错误提示这不是一个目录

OPTION:

  • -i:交互式
  • -r,-R:递归复制目录及内部的所有内容
  • -a:归档,相当于-dR –preserve=all
  • -d:–no-dereference(不追踪符号链接),–preserv=links
  • –preserve [=ATTR_LIST]
    • 保留你所指定的属性。如果没使用=,就只保留默认的前三项;如果使用了=,则添加保留你所指定的项。
  • mode:权限
  • ownership:属主属组
  • timestamp:时间戳
  • links:链接本身的属性
  • xattr:扩展属性
  • context:安全上下文
  • all:所有属性
  • –no-dereference:不跟踪符号链接,就复制符号链接本身,而不复制符号链接所指向的内容

//归档:复制时必须把每一个文件保留它原来的样子

  • –preserve=links:原来是一个链接,还给它保留为符号链接的类型
  • -p:–perserv=mode,ownership,timestamp保留权限,属主属组,时间戳
  • -v:–verbose显示全过程
  • -f:–force强制式执行

1.2 mv命令

用法:

  • mv [OPTION]… [-T] SOURCE DEST
  • 如果SRC是单个文件:
  • 如果DEST不存在:
  • 新建DEST,并将SRC中内容填充至DEST中,并且删除源文件。
  • 如果DEST存在:
  • 如果DEST是文件:将SRC中的内容覆盖至DEST中,并删除SRC
  • 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中文件的数据流导出一份填充至新文件中,并删除源文件(即剪切)
  • 如果源是目录:
    • mv [OPTION]… -t DIRECTORY SOURCE…
    • 包括目录会添加指定目录下
  • mv [OPTION]… SOURCE… DIRECTORY
  • SRC…:多个文件
  • DEST必须存在,且为目录,其他情形均会出错,错误提示这不是一个目录

OPTION:

  • -i:交互式
  • -f:强制

1.3  rm命令

rm [OPTION]…FILE

OPTION:

  • -i:交互式
  • -f:强制删除
  • -r:递归
  • 默认是不允许删除根目录的,如果你确实是想删除根目录,就用–no-perserve-root
  • –no-preserve-root:do not treat ‘/’ specially不特殊对待“/”
  • –preserve-root:do not remove ‘/’ (default)不允许删除”/”(默认)

 

  1. bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

2.1 命令执行状态返回值

命令执行状态返回值:

  • bash使用特殊变量$?保存最近一条命令的执行状态结果
  • 0:成功
  • 1-255:失败
  • 程序执行有两类结果:
  • 程序的返回结果:成功时,命令执行的结果应该是什么就是什么;失败时,则可能是报错信息
  • 程序的执行状态结果:成功或者失败
  • NOTE:在bash中一个命令执行的状态结果对我们而言肯定有不同的意义,失败了可以帮助我们判断这种结果是不是符合我们的期望。所以说失败了未必对我们来说没有什么作用。

2.2 命令行展开所涉及的内容

命令行展开所涉及的内容:

  • ~:展开为当前用户的主目录
  • ~USERNAME:展开为指定用户的主目录
  • {}:可承载以逗号分隔的列表,并将其展开为多个路径

/tmp/{a,b} = /tmp/a,/tmp/b

/tmp/{tom,jerry}/hi = /tmp/tom/hi , /tmp/jerry/hi

 

3、请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c, a_d, b_c, 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

3.1 创建/tmp目录下的:a_c, a_d, b_c, b_d

[root@Mauro ~]# mkdir -pv /tmp/{a,b}_{c,d}

mkdir: 已创建目录 “/tmp/a_c”

mkdir: 已创建目录 “/tmp/a_d”

mkdir: 已创建目录 “/tmp/b_c”

mkdir: 已创建目录 “/tmp/b_d”

3.2 创建/tmp/mylinux目录下的信息

[root@Mauro ~]# 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}}

[root@Mauro ~]# 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

 

4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

[root@Mauro ~]# ls -l /etc/fstab

-rw-r–r–. 1 root root 805 9月   9 2016 /etc/fstab

元数据信息:

  • -rw-r–r–.:前三个表示属主的读写执行权限;中间三个表示属组的读写执行权限;最后三个表示其他人的读写执行权限;“.”表示跟selinux有关的权限
  • root root:前一个root表示文件所属用户;后一个root表示文件所属用户组
  • 805:文件大小
  • 9月   9 2016:文件的修改日期

4.2 修改文件的时间戳

每一个文件在文件系统上都由元数据(metadata)和数据(data)组成。查看文件状态命令:stat。

三个时间戳:

  • Access time:访问时间,atime。读取文件内容
    • cat/more查看或者可执行程序的执行会改变访问时间
  • Modify time:修改时间,mtime,改变文件内容
  • Change time:改变时间,ctime,元数据发生改变

touch命令能以手动指定的方式来修改这三个时间戳中的前两个。当access和modify元数据发生改变,change也一定会发生改变。一旦文件发生了修改,就一定会改变;而改变不一定修改。

stat – display file or file system status,显示文件或者文件系统状态

[root@Mauro tmp]# stat yum.log

File: “yum.log”

Size: 0          Blocks: 0          IO Block: 4096   普通空文件

Device: fd00h/64768d Inode: 261634      Links: 1

Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-03-05 15:11:14.719874775 +0800

Modify: 2017-03-02 21:17:50.981999944 +0800

Change: 2017-03-02 21:17:50.981999944 +0800

OPTION:

  • -a:only atime。只改变访问时间戳。修改时间戳不改变,改变时间戳也会发生改变
  • 修改访问时间为当前时间:touch -a 文件
  • -m:only mtime。只改变修改时间戳。访问时间戳不改变,改变时间戳也会发生改变
  • 修改修改时间为当前时间:touch-m 文件
  • -t STAMP:指明时间戳
  • [[CC]YY]MMDDhhmm[.ss],后面那个精度你没有办法控制
  • -c:如果文件不存在,则不予创建

[root@Mauro tmp]# touch -m -t 201508152201.35 fstab

Note:touch的主要目的是修改时间戳,而不是创建文件

 

5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

5.1 定义一个命令的别名

alias使用:

  • alias:显示当前shell进程所有可用的命令别名
  • alias NAME=’VALUE’。定义别名NAME:其相当于执行命令VALUE

Note:如果别名同原命令的名称,则如果要执行原命令,可使用“\COMMAND”

5.2 在命令中引用另一个命令的执行结果

强引用:’’;引号内内容不解释,按照原样进行显示

弱引用:””等同于${},解释引号中的内容为变量的值

命令引用:“等同于$(),解释命令并引用命令输出后的结果

 

6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

[root@Mauro ~]# ls -d /var/l*[0-9]*[[:lower:]]

 

7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

[root@Mauro ~]# ls -d /etc/^[0-9]*[^0-9]$

 

8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

[root@Mauro ~]# ls -d /etc/^[^[:alpha:]][:alpha:]*

 

9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

[root@Mauro ~]# ls -d /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`

 

10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[root@Mauro ~]# cp -r /etc/p*[^0-9] /tmp/mytest1

 

11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

[root@Mauro ~]# cp -r /etc/*.d /tmp/mytest2

//.不进行转义解释,仅表示一点

 

12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

[root@Mauro ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90122

(0)
MauroMauro
上一篇 2017-12-15
下一篇 2017-12-15

相关推荐

  • Linux三剑客之grep

    grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一个强大的文本搜索工具,使用正则表达式搜索文本的文本,并把结果打印出来。Unix家族包括grep、egrep和fgrep。egrep是扩张的正则表达式它支持更多的字符,fgrep是fast gre…

    Linux干货 2016-08-12
  • TCP三次握手和四次挥手

    TCP三次握手 有两台机器,A是客户端(主动发起请求的人),B是服务器端(被动接受请求的人),客户端A刚开始没有人和他通讯,所以客户端A的状态是CLOSDE(关闭的),服务器端B刚开始的状态也是CLOSDE,但是总有人去访问他,所以服务器端B开启了LISTEN(收听)状态。 (1)假设A机器想链接B机器了,他就会向B机器发送一个建立链接的请求,这个建立链接请…

    2017-08-31
  • 0811:脚本练习

    系统信息获取脚本 1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 [root@centos7 scripts]#cat systeminfo.sh  #!/usr/bin/bash  server_ip…

    Linux干货 2016-08-22
  • 文件元数据信息详解

    文件元数据信息详解 文件的元数据是什么? 文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件的特征。 元数据内容: 文件名 文件大小 文件所在数据块 数据块的大小 文件类型 文件所在的Inode 硬链接次数 权限 属主id 属组id 最近一次访问时间戳 最近一次更改文件内容的时间戳 最近一次更改文件元数据的时间戳 查看文件的元数据…

    Linux干货 2017-07-09
  • 文件处理工具及正则表达式练习

    本节练习均在centos7系统下实现,部分练习只截取部分截图,另外排版的事情我已经放弃了! 1.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 注:^ 行首, . 匹配任意单个字符,* 匹配前面的字符任意次 突然发现前面解法错误,没有排除空格后加小括号的情况,下面是正确做法 2.统计last命令中…

    Linux干货 2017-07-29
  • FHS文件系统各目录功能

    前言:     文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。linux的哲学是一切皆文件,linux系统中的一切包括设备文件,我们都能在linux的倒置树状文件系统中找到相对应的文件。所以清楚的明白根目录下的每个子目录包含什么样的文件是很有必要的。我们将以Filesystem Hierarchy Standar…

    Linux干货 2016-10-17

评论列表(1条)

  • 马哥教育
    马哥教育 2018-01-07 16:09

    第8小题有点问题,在提交答案的时候,可以先测试一下哈~加油~