马哥教育网络班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
下一篇 2016-07-16

相关推荐

  • cobbler自动化安装

    实验:实现cobbler安装 1 安装包 yum install cobbler(EPEL) dhcp httpd tftp systemctl enable cobblerd dhcpd httpd tftp systemctl start cobblerd httpd tftp 2 cobbler check 3 vim /etc/cobbler/set…

    Linux笔记 2018-05-27
  • 2016年8月6日作业练习

    练习: 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式) [root@localhost ~]# grep -i "^[sS]" /proc/meminfo SwapCached:      &nb…

    Linux干货 2016-08-07
  • Linux的文本处理工具练习题

    练习一:     1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示  练习二:       1、显示/proc/meminfo文件中以大…

    Linux干货 2016-08-08
  • X-Y Problem

    X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎: 1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。2)在经过大量地讨…

    Linux干货 2016-08-15
  • 学习Linux,记得有困难,找“男人”。

      对于Linux初学者而言,较短时间内需要涉及到几十个命令,而且每个命令还可辅以短选项、长选项…让初学者在实践时苦不堪言。   一头雾水时,请找Super"man"!  "man"的使用非常简单,命令行直接输入man COMMAND,如#man ls。此处的COMMAND均指…

    Linux干货 2016-01-15

评论列表(1条)

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

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