马哥教育网络班21期-第二周课程练习

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

cp命令

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 cp SRC DEST SRC是文件: 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中; 如果目录存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中; 此时建议为cp命令使用-i选项; 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;

    cp SRC... DEST
        SRC...:多个文件
            DEST必须存在,且为目录,其它情形均会出错;

    cp SRC DEST
        SRC是目录:
            此时使用选项:-r

            如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
            如果DEST存在:
                如果DEST是文件:报错
                如果DEST是目录:

语法

cp (选项) (参数)

选项

    -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

参数

  • SRC 源文件

  • DEST 目标文件

实例

/etc/fstab复制到/root/Desktop,且目标文件已存在
[root@hadoop Desktop]# cp  /etc/fstab ./
cp: overwrite `./fstab'?
/root/Desktop/repo目录下的所有文件复制到/root/Desktop/test目录下,且目标文件目录不存在
[root@hadoop Desktop]# ls
fstab  passwd  repo  scripts
[root@hadoop Desktop]# cp -r ./repo/ ./test/
[root@hadoop Desktop]# ls
fstab  passwd  repo  scripts  test
/root/Desktop下的文件fstabpasswd复制到/root/Desktop/test
[root@hadoop Desktop]# cp passwd fstab ./test
/root/Desktop/fstab复制为cptest
[root@hadoop Desktop]# cp fstab cptest
/root/Desktop/test下的所有文件复制到/root/Desktop/test2
[root@hadoop Desktop]# ll ./test/
total 24
-rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Jul 11 19:32 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  653 Jul 11 19:32 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo
-rw-r--r--. 1 root root  779 Jul 11 19:37 fstab
-rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd
[root@hadoop Desktop]# cp -r -a ./test/ ./test1/
[root@hadoop Desktop]# ll ./test1/
total 24
-rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Jul 11 19:32 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  653 Jul 11 19:32 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo
-rw-r--r--. 1 root root  779 Jul 11 19:37 fstab
-rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd

mv命令

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录。

语法

mv (选项) (参数)

选项

        -i: 交互式
        -f: 强制

参数

  • SRC 源文件

  • DEST 目标文件

实例

/root/Desktop/fstab改名为mvtest
[root@hadoop Desktop]# mv -i fstab mvtest
/root/Desktop/test1移到./test2
[root@hadoop Desktop]# mv ./test1/ ./test2/

rm命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。

语法

rm (选项)(参数)

选项

        -i: 交互式
        -f: 强制删除
        -r: 递归

实例

删除/root/Desktop/目录下的fstab和'passwd'
[root@hadoop Desktop]# rm -i ./fstab passwd
rm: remove regular file `./fstab'? y
rm: remove regular file `passwd'? y
删除/root/Desktop/test2下的所有文件
[root@hadoop Desktop]# rm -rf ./test2

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

命令的执行结果状态

    成功
    失败

bash使用特殊变量$?保存最近一条命令的执行状态结果:

        0:成功
        1-255:失败

实例

[root@hadoop Desktop]# ls
cptest  repo  scripts  test
[root@hadoop Desktop]# echo $?
0
[root@hadoop Desktop]# ls ./aaa
ls: cannot access ./aaa: No such file or directory
[root@hadoop Desktop]# echo $?
2

命令行展开

    ~: 展开为用户的主目录
    ~USERNAME:展开为指定用户的主目录
    {}:可承载一个以逗号分隔的列表,并将其展开为多个路径
        /tmp/{a,b} = /tmp/a, /tmp/b
        /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

实例

~展开:
[root@hadoop Desktop]# pwd
/root/Desktop
[root@hadoop Desktop]# cd ~
[root@hadoop ~]# pwd
/root
{}展开:
[root@hadoop ~]# mkdir -pv /tmp/{a,b}
mkdir: created directory `/tmp/a'
mkdir: created directory `/tmp/b'

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

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

[root@hadoop ~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory `/tmp/a_c'
mkdir: created directory `/tmp/a_d'
mkdir: created directory `/tmp/b_c'
mkdir: created directory `/tmp/b_d'

(2).创建/tmp/mylinux目录下的一系列目录

[root@hadoop tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc/sbin,sys,tmp,usr/{bin,sbin},var/{lock,log,run}}

[root@hadoop tmp]# 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
│   ├── bin
│   └── sbin
└── var
    ├── lock
    ├── log
    └── run

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

元数据信息

[root@hadoop Desktop]# ls -l /etc/fstab
-rw-r--r--. 1 root root 779 Feb  1 15:55 /etc/fstab

-rw-r--r--共有10个小段
第一小段代表的文件类型:
    -(f):普通文件
    d:目录文件
    b:块设备文件
    c:字符设备
    l:符号连接
    p:管道文件
    s:套接字文件

rw-表示用户的权限,r--表示所属组的权限,r--表示其他用户的权限。
    r:只读权限
    w:可写权限
    x:执行权限
之后是文件的属主、属组、文件大小以及最后的访问时间。

时间戳

查看时间戳:stat命令
[root@hadoop Desktop]# stat  /etc/fstab
  File: `/etc/fstab'
  Size: 779         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 390920      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 20:04:45.884000013 +0800
Modify: 2016-02-01 15:55:40.477000176 +0800
Change: 2016-02-01 16:08:05.655000177 +0800


三个时间戳:
access time:访问时间,简写为atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变

修改时间戳:touch命令
touch (选项) (参数)
选项:
-a: only atime
-m: only mtime
-t STAMP

[root@hadoop Desktop]# touch -t 1607112004.45 /etc/fstab
[root@hadoop Desktop]# stat  /etc/fstab
  File: `/etc/fstab'
  Size: 779         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 390920      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 20:59:12.348000443 +0800
Modify: 2016-07-11 20:04:45.000000000 +0800
Change: 2016-07-12 20:59:10.128998636 +0800

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

命令别名(alias)

    通过alias命令实现:
        (1) alias
            显示当前shell进程所有可用的命令别名;
        (2) alias NAME='VALUE'
            定义别名NAME,其相当于执行命令VALUE;

        注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
            仅对当前用户:~/.bashrc
            对所有用户有效:/etc/bashrc 

            Note: 编辑配置给出的新配置不会立即生效;

            bash进程重新读取配置文件:
                source /path/to/config_file
                .  /path/to/config_file

    撤消别名:unalias
        unalias [-a] name [name ...]

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

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

[root@hadoop var]# ls l*[0-9]*[a-z] 
l22e  la2e  lcd234r

l23ass:

lov234e:
[root@hadoop var]# ls l*[[:digit:]]*[[:lower:]]
l22e  la2e  lcd234r

l23ass:

lov234e:

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

[root@hadoop etc]# ls [[:digit:]]*[^[:digit:]]
1abD:

2abD:

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

[root@hadoop etc]# ls [^[:alpha:]][[:alpha:]]*
1abD:

2abD:

9.在/tmp目录下创建以tfile开头,后面当前日期和时间的文件

[root@hadoop tmp]# mkdir tfile-$(date +%F)

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

[root@hadoop tmp]# cp /etc/p*[^0-9]/ /tmp/mytest2/
[root@hadoop tmp]# cp /etc/p*[^0-9] /tmp/mytest2/

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

[root@hadoop tmp]# cp /etc/*.d /tmp/mytest2

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

[root@hadoop tmp]# cp /etc/[lmn]*\.conf /tmp/mytest3

原创文章,作者:Jeason,如若转载,请注明出处:http://www.178linux.com/24088

(0)
JeasonJeason
上一篇 2016-07-16 22:23
下一篇 2016-07-16 22:23

相关推荐

  • 马哥教育网络班22期+第10周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)     系统启动流程:       POST –> BootSequence(BIOS) –> BootLoader …

    Linux干货 2016-10-27
  • 于浩的第一篇随笔

    人生只有两件事,努力工作,享受生活!

    2018-03-26
  • 马哥教育网络班20期+第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。 3、描述DNS查询过程以及DNS服务器类别。 4、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP) (1)、能够对一些主机名进行正向解析和逆向解析; (2)、对子域cdn.magedu.com进行子域授权,子域负…

    学员作品 2016-09-05
  • 一次完整的http请求处理过程+MPM工作模式

     1、建立连接:接收或拒绝连接请求 2、接收请求:接收客户端请求报文中对某资源的一次请求的过程 Web访问响应模型(Web I/O)单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求复用I/O结构:启动一个进程,同时响应N个连接请求实现方法:多线程模型和事件驱动…

    2018-06-24
  • 【推荐】Linux 简单部署LAMP

    Linux 简单部署LAMP: 实验环境: 1、主机系统Centos6.7_X86_64 2、DNS&CA:192.168.3.10 3、LAMP安装方式为rpm 4、主机IP:192.168.3.11提供web站点:     http://wp.neolinux.com     &nbsp…

    Linux干货 2016-06-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-17 20:42

    写的很好,排版也很漂亮,加油。给你提一个问题,如果文件已经存在 ,如何不显示警告信息,可以直接覆盖?