马哥教育网络班21期-第二周课程作业

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

cp即copy的简写,我们可以用它来复制一些文件即将,源文件的数据流复制到目的文件中。和下面要讲的rm,mv,一样都是一些非常基础的命令。关于这个命令,我们有个小窍门,那就是根据 ls file这个命令是否执行成功来判断file文件是否存在。

关于cp,我们有一些要点要注意:

cp SRC DEST #此时SRC只有一个,且为文件

如果DEST是文件,且存在,则将源文件的内容覆盖至DEST。如果此时为root用户,那么默认alias cp=cp -i,
所以会出现询问是否覆盖文件的提醒,而此时如果是其他用户,则默认覆盖,不会提醒,所以得谨慎使用。如果不存在,那就简单了,系统直接创建一个文件,然后
将源文件数据流覆盖至DEST中。就这么简单。

如果DEST是目录,且存在那么就在指定目录下创建与源文件同名的文件,并将数据流填充至新文件中。若目录不存在,则直接报错。

如果SRC是目录,那么DEST必须为目录,且必须必须使用 -r  选项。即递归选项,因为目录里面也会有目录,必须要使用递归选项才能正确的将SRC及其子目录复制到DEST。注意SRC目录是什么结构,那么在DEST中就是什么结构。

cp  SRC…   DEST  #SRC有多个文件。且必须文件。

DEST必须是目录,且要存在,若不存在,则直接报错。

关于cp已经说了很多废话,但是还是要继续介绍一些关于cp短选项,希望各位客官不要厌烦。

        -r:  递归,将该目录下的所有子目录一起复制,上面说过这事SRC为目录是必须使用的选项

        -i: 交互式命令,也已经说过了,就是当要覆盖一个已存在文件时,出现提醒,并让你确认。

        -a:  归档,相当于 -dR –preserve=all

             -d:  –no-deference    –preserve=links

             –preserve[=ATTR_LIST]    保存文件元数据属性

              mode: 权限

              ownership:  属主属组

              timestamp:  时间戳

              links; 链接

              。。。

              all: 所有元数据属性

       -p: –preserve=mode, ownership,  timestamp

       -f:  force  强制复制,若已存在一个同名文件,但该文件的权限不允许复制,则删除该文件,然后重新创建一个同名的文件。

cp讲的差不多了,那么就来讲讲rm吗,它是文件移动命令。它和cp很相似。以下是mv的三种形式。

       mv [OPTION]… [-T] SOURCE DEST
       mv [OPTION]… SOURCE… DIRECTORY
       mv [OPTION]… -t DIRECTORY SOURCE…

mv也有一些有趣的短选项:

       -i: 交互式: 在覆盖文件时,发出提醒,并等待用户响应。

       -f: 强制性: 在覆盖前,不发出提示,直接覆盖。

下面就是rm,rm的作用是删除文件或目录。很简单,只要文件存在就可以了,介绍一些简单的选项吧。

       -i: 交互式,每删除一个文件都询问一次,并等待回答。

       -f: 强制执行,即不询问就执行

       -r: 递归删除,即删除文件,目录即目录中所有的内容。

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

关于命令行展开的用法,主要是以下三点:

1.   ~: 展开为当前用户家目录;

2,  ~USERNAME:展开为指定用户的家目录;

3,  /tmp/a/{x,y}:  展开为/tmp/a/x 和/tmp/a/y

[root@promote ~]# cd ~
[root@promote ~]# cd ~test
[root@promote test]# mkdir -pv /tmp/a/{x,y}
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/x’
mkdir: created directory ‘/tmp/a/y’

命令执行状态返回值只有两种情况:

成功:0

失败: 1-255

$? 为上一条命令的执行状态返回值,我们要与执行返回值相区分。

[root@promote test]# mkdir -pv /tmp/b
mkdir: created directory ‘/tmp/b’
[root@promote test]# echo $?
0
[root@promote test]# mkdir -v /tmp/b
mkdir: cannot create directory ‘/tmp/b’: File exists
[root@promote test]# echo $?
1

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

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

touch /tmp/{a,b}_{c,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

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,bin},var/{lock,log,run}}

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

文件的元数据信息有:属主,属组,时间戳

ls -l

可查看文件的元数据信息

属主指创建该文件时的用户

属组至创建该文件的用户组

时间戳分为三种,即访问时间,修改时间,改变时间。

访问时间 :  access time (atime)
是指最后一次访问文件的时间,修改时间:  modify time(mtime). 是指最后一次修改文件内 容的时间,改变时间:  change
time(ctime)是指最后一次修改文件属性的时间。我们要重点注意一点,那就是只要访问时间或修改时间改变了,改变时间也一定改变。

我们可以用stat目录来查看时间戳,这个命令本意是查看的是文件的属性,而时间戳就是文件的属性。关于它我们还有另一个很神奇的命令,那就是touch,它可以用来改变文件的时间戳,将其变为当前时间。

touch   -a   FILENAME

touch   -m  FILENAME

当然我们也可以使用-t选项指定时间。注意-t选项一定要与时间相连。

[root@ ~] # touch -a -t  201606130101.01 /tmp/fstab
[root@ ~]# stat /tmp/fstab
File: `/tmp/fstab'
Size: 595           Blocks: 8          IO Block: 4096   regular file
Device: ca01h/51713d    Inode: 396687      Links: 1
Access: (0600/-rw——-)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-06-13 01:01:01.000000000 +0800
Modify: 2016-06-13 01:01:01.000000000 +0800
Change: 2016-06-30 10:23:01.113221976 +0800

再强调一点,只要atime或mtime 改变了,则ctime必改变。因为时间戳也是文件的属性。

神奇的地方来了,虽然touch是用来改变时间戳的,但它却可以用来创建文件。好玩吧!  touch FILENAME

如果不想创建文件,加个-c选项就可以了。

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

定义别名:

alias cd="cd /root"

引用另一个变量:

[root@promote ~]# echo `date` > time.out
[root@promote ~]# cat time.out 
Thu Jul 7 00:32:54 CST 2016

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

ls /var/l*[[:digit:]]*[[:lower:]]

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

ls /etc/[[:digit:]]*[^[:digit:]]

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

ls /etc/[^[:alpha:]][[:alpha:]]*

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

[root@promote tmp]# touch tfile-`date +%F-%H-%M-%S`
[root@promote tmp]# ls tfile*
tfile-2016-07-07  tfile-2016-07-07-10-58-08

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

[root@promote tmp]# \cp -r /etc/p*[^[:digit:]] ./mytest1/

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

[root@promote tmp]# \cp -r /etc/*.d ./mytest2/
[root@promote tmp]# ls ./mytest2/
auto.master.d      dracut.conf.d  logrotate.d     profile.d  rc.d           sysctl.d
bash_completion.d  exports.d      modprobe.d      rc0.d      request-key.d  tmpfiles.d
binfmt.d           gdbinit.d      modules-load.d  rc1.d      rsyslog.d      usb_modeswitch.d
cgconfig.d         grub.d         my.cnf.d        rc2.d      rwtab.d        xinetd.d
chkconfig.d        init.d         oddjobd.conf.d  rc3.d      sane.d         yum.repos.d
cron.d             ipsec.d        pam.d           rc4.d      setuptool.d
depmod.d           ld.so.conf.d   popt.d          rc5.d      statetab.d
dnsmasq.d          libibverbs.d   prelink.conf.d  rc6.d      sudoers.d

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

[root@promote tmp]# \cp -r /[lmn]* ./mytest3/
[root@promote tmp]# ls ./mytest3/
lib  lib64  media  mnt

原创文章,作者:21期-扬州-蓝,如若转载,请注明出处:http://www.178linux.com/21926

(0)
21期-扬州-蓝21期-扬州-蓝
上一篇 2016-07-07
下一篇 2016-07-07

相关推荐

  • httpd及https

    1、建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机:     www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log;   &nbs…

    2017-06-05
  • shell编程之循环

           当需要重复运行特定的指令以满足系统管理工作需要时,条件判断语句if、case并不能很好地提供支撑,shell提供了for、while、until循环语句来满足此需求。 一、for循环语句        for循环用于重复整个对象列表,依次遍历对列…

    Linux干货 2016-08-18
  • 计算机组成、Linux命令基础

    计算机组成 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息…

    Linux干货 2016-09-19
  • 马哥教育网络版22期+第10周作业

    week10 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件;&nbsp…

    Linux干货 2016-10-29
  • 第七周作业

    第七周 1,创建一个10G分区,并格式化为ext4文件系统;(1) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@www ~]# fdisk /dev/sda <————-fd…

    Linux干货 2017-09-03
  • 马哥教育网络班21期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash  declare -i loginable=0 declare -i unloginable=0  &n…

    Linux干货 2016-09-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-07 19:14

    写的很好,排版也很棒,加油