马哥教育网络班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

相关推荐

  • N25第五周总结:程序包管理

    程序包管理:rpm、yum、编译详解 rpm详解: 一:大纲        1、什么是rpm        2、为什么要使用rpm        3、rpm能实现什么功能 &nbs…

    Linux干货 2017-01-10
  • 天神之剑Vim编辑器

    一.概述和基本用法及一些描述 vi:Visual Interface 文本编辑器 文本ASCII , Unicode 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi vim – Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个vim编辑器的图形版本 基本用法  vim [OPTION]…

    Linux干货 2016-08-15
  • 马哥教育21期网络班—第三周课程+练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 # who | cut -d' ' -f1 | sort -n | uniq 2、取出最后登录到当前系统的用户的相关信息 # who&…

    2016-07-12
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@UncleZ ~]# who | cut -d' ' -f1 | uniq -c 2、取出最后登录到当前系统的用户的相关信息。 [roo…

    Linux干货 2016-12-17
  • shell进阶之循环

    循环执行,将某代码段重复运行多次

    重复运行多少次:

    循环次数事先已知

    循环次数事先未知

    有进入条件和退出条件

    for, while, until

    Linux干货 2017-12-24

评论列表(1条)

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

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