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

相关推荐

  • 包管理之包查询,包校验,rpm数据库.yum的详细用法及说明

    一.概述 包查询 rpm {-q|–query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪个程序包安装生成 -p rpmfile:针对尚未安装的程序包文件做查询操作; –whatprovides CAPABILITY:查询指定的CAP…

    Linux干货 2016-08-30
  • cp、chmod、chown、grep及正则表达式练习

    复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   编辑/etc/group文件,添加组hadoop。使用vim指令编辑/etc/group文件,进入末行模式(输入冒号),然后输入$回车,将光标跳至末行,然后按下o(小写)在最后一行下面输入新的组:hadoop:x:…

    Linux干货 2016-11-21
  • centos进程管理

    一 、进程的概念和分类1.进程的概念      Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用同一个linux系统;多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适…

    Linux干货 2016-09-19
  • Linux用户与组之权限管理

    权限(rwx、sst、umask) chown chmod ACL(见下篇) 试验环境:CentOS 7.2 与CentOS 6.8,具体会在应用场景明确指出 权限 Linux系统对用户与组的管理,其具体操作手段就是对于权限的分配,而常见的权限分配工具有 rwx, sst, umask, ACL. 跟用户与组有uid和gid一样,权限也有…

    Linux干货 2016-08-07
  • 程序员的相关笑话(二)

    从前,有一个牧羊人,他有很多的羊。一天他赶着他的那群羊到了一条公路边上。突然,有一辆保时洁急驶过来,上面坐着一个年轻人人,穿着Armani的衣服,和Cerutti的皮鞋,Ray-Ban的太阳眼镜,TAG-Heuer的手表,以前Versace的领带。 他走到牧羊人面前问牧羊人:“如果我能说出你有多少只羊,你能给我一只吗?” 牧羊人看了看他那一大群数都数不过来的…

    Linux干货 2016-07-10
  • Centos6.5上搭建openvpn

    一、openvpn原理 二、安装openvpn 三、制作相关证书     3.1 制作CA证书     3.2 制作Server端证书     3.3 制作Client端证书 四、配置Server端 五、配置C…

    Linux干货 2016-04-28

评论列表(1条)

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

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