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

相关推荐

  • 20160808作业

    20160808作业 1、每日课堂笔记总结 2、预习 3、每日课堂pdf练习 1、删除/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符 [root@Centos7 ~]# sed '/^[[:space:]]\+/d' /etc/grub2.cfg  # # …

    Linux干货 2016-08-15
  • 脚本小练习

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。                            …

    Linux干货 2016-08-15
  • 国际标准OSI七层模型和事实标准TCP/IP四层模型

    我们知道,标准分为三种:国际标准、国家标准和事实标准。那我们学习的两个重要模型:OSI和TCP/IP模型分别属于国际标准和事实标准,接下来我们来总结一下两种模型的分层及功能还有异同: 一:国际标准OSI模型 OSI:(Open System Interconnect) 开放系统互连,总共分为七层,从下到上顺序为:物理层(physical)、数据链路层(dat…

    2017-09-02
  • 管道及重定向

    管道及重定向 1、重定向 在Linux中有时我们在命令的执行过程中,不想将执行结果显示到屏幕上,或者将其结果输出到其他位置 这时就需要重定向来解决这个问题了 首先了解一下Linux中的3种I/O设备: 0:标准输入 1:标准输出 2:标准错误输出 输出重定向:> >> 输入重定向: < << >:将标准输出重定向到文…

    Linux干货 2017-07-28
  • 第一周作业

    # 1.计算机的基本组成和功能: – **存储器**:  实现记忆功能的部件用来存放计算程序及参与运算的各种数据 – **运算器**:  负责数据的算术运算和逻辑运算即数据的加工处理 – **控制器**:  负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问 – **输入设备**: 实现计算程…

    Linux干货 2016-12-04
  • LAMP快速部署及LAMP组合深入讲解-1

      lamp php php: 脚本编程语言、嵌入到html中的嵌入式web程序开发语言;基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境) 一、PHP简介 PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一…

    Linux干货 2017-06-04

评论列表(1条)

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

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