N21_第二周练习

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

文件管理类命令:cp,mv.rm

复制命令:cp

格式:

       cp [OPTION]… [-T] SOURCE DEST

       cp [OPTION]… SOURCE… DIRECTORY

       cp [OPTION]… -t DIRECTORY SOURCE…

场景:

       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是目录:复制SRC目录中文件到DEST

选项:

      -i: 交互的,root用户默认使用cp -i,普通用户没有,复制要注意,如果觉得交互麻烦可以使用\cp

      -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

     -n: 不覆盖已经存在的文件

实例:

   [root@www ~]# cp install.log /opt/
   cp:是否覆盖"/opt/install.log"?
   [root@www ~]# \cp install.log /opt/   直接覆盖了

   [root@www ~]# ll install.log
   -rw-r--r--. 1 root root 12705 3月  10 22:40 install.log
   [root@www ~]# ll /opt/install.log
   -rw-r--r-- 1 root root 12705 7月  12 01:41 /opt/install.log
   [root@www ~]# cp -a install.log /opt/
   cp:是否覆盖"/opt/install.log"? y
   [root@www ~]# ll /opt/install.log
   -rw-r--r--. 1 root root 12705 3月  10 22:40 /opt/install.log

 

  [root@www ~]# cp -s install.log install.logs
   lrwxrwxrwx  1 root root     11 7月  12 01:44 install.logs -> install.log    这种链接只能在同一目录下

mv: 

move:移动文件

格式:

      mv [OPTION]… [-T] SOURCE DEST

      mv [OPTION]… SOURCE… DIRECTORY

      mv [OPTION]… -t DIRECTORY SOURCE…

常用选项:

     -i:   交互,和cp类似

     -f:  强制覆盖

     -b: 覆盖前先行备份

     -u: 源文件比目标文件新时才执行更新

     -t:–target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

实例:

[root@www ~]# mv -b install.log /opt/
mv:是否覆盖"/opt/install.log"? y
[root@www ~]# ls /opt/
install.log  install.log~

[root@www ~]# echo 123 > a.txt
[root@www ~]# cat a.txt
123
[root@www ~]# cd test
[root@www test]# touch a.txt    此文件比较新,根据时间戳来对比谁比较新
[root@www test]# cd
[root@www ~]# mv -uv a.txt test/a.txt
[root@www ~]# cat !$
cat test/a.txt

rm

remove:删除命令

格式:

     rm [OPTION]… FILE…

选项:

     -i: 交互式删除

     -f: 强制删除

     -r: 递归删除

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

命令执行状态返回值:

命令执行的结果状态有两种:

            成功

            失败

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

            0:成功

            1-255:失败

实例:

[root@www ~]# $?
-bash: 0: command not found
[root@www ~]# echo $?
127
[root@www ~]# echo $?
0

命令行展开:

~: 展开为用户的主目录

       ~USERNAME:展开为指定用户的主目录


[root@www ~]# echo ~
/root
[root@www ~]# echo ~yunweil
~yunweil


{}:  可承载一个以逗号分隔的列表,并将其展开为多个路径

            /tmp/{a,b} = /tmp/a, /tmp/b

            /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

    注意:花括号展开,前缀不能是$,因为${…}在shell中是变量

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

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

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

文件的元数据信息:

[root@www ~]# stat url.txt
  File: "url.txt"
  Size: 1636          Blocks: 8          IO Block: 4096   普通文件
Device: 803h/2051d    Inode: 65273859    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 02:03:05.820622061 +0800
Modify: 2016-07-12 02:01:47.440622125 +0800
Change: 2016-07-12 02:02:26.868622093 +0800

File:文件名

size:文件大小   Blocks:block个数    block大小   文件类型

块大小             Inode号     硬链接数

权限                属主          属组

访问时间

修改时间

改变时间


当然使用stat命令查看

  选项:

      -f:显示了有关文件系统(而非文件)的信息

      -t:显示了完全相同的信息

[root@www ~]# stat -f a.txt
File: "a.txt"
ID: 869a0aa813c1d46d Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 471905300  Free: 459379307  Available: 435406251
Inodes: Total: 119865344  Free: 119773822
[root@www ~]# stat -t a.txt
a.txt 4 8 81a4 0 0 803 94241008 1 0 0 1468260441 1468260439 1468260439 4096

如何修改时间戳?

时间戳:

      access time:访问时间,简写为atime,读取文件内容

      modify time: 修改时间, mtime,改变文件内容(数据)

      change time: 改变时间, ctime,元数据发生改变

touch命令:

    touch [OPTION]… FILE…

     -a或–time=atime或–time=access或–time=use  只更改存取时间

     -m或–time=mtime或–time=modify  只更改变动时间

     -t<日期时间>:  使用指定的日期时间,而非现在的时间。

     -c或–no-create:  不建立任何文件

     -r: 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

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

定义命令别名:使用alias命令

    (1) alias

             显示当前shell进程所有可用的命令别名;

    (2) alias NAME='VALUE'

             定义别名NAME,其相当于执行命令VALUE;

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

               仅对当前用户:~/.bashrc

               对所有用户有效:/etc/bashrc

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

         bash进程重新读取配置文件:

                source /path/to/config_file

                .  /path/to/config_file

   撤消别名:unalias

          unalias [-a] name [name …]

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

引用另一个命令的执行结果

  目前知道如下几种:

      1、通过引用符:"",'',“

      2、通过变量:将命令执行结果定义为变量

      3、通过重定向

      4、通过管道


[root@www ~]# echo "This day is `date +%F`"
This day is 2016-07-12

[root@www ~]# day=`date +%F`
[root@www ~]# echo day is $day
day is 2016-07-12

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

ls /var/l*[[:digit:]]*[[:lower:]]
ls /var/l*[0-9]*[a-z]

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

ls /etc/[[:digit:]]*[^[:digit:]]
ls /etc/[0-9]*[^0-9]

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

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

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

touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
touch /tmp/tfile-`date +%F-%H-%M-%S`

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

mkdir /tmp/mytest1
cp -a /etc/p*[^[:digit:]] /tmp/mytest1

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

mkdir /tmp/mytest2
cp -a /etc/*.d /tmp/mytest2

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

cp -a /etc/[lmn]*.conf /tmp/mytest2

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

(0)
N21_LorneN21_Lorne
上一篇 2016-07-16
下一篇 2016-07-16

相关推荐

  • Linux磁盘管理进阶

    Linux磁盘管理进阶 dd命令 SWAP与移动介质 磁盘配额 RAID dd命令 dd – convert and copy a file Copy a file, converting and formatting according&…

    Linux干货 2016-09-05
  • Linux初识

    一 .计算机的关键部位 cpu(运算器 控制器):正给计算机的中枢神经,对程序控制信息的处理和 对数据的运算 存储器:存储程序数据和各种信息指令 Input:起到将各个外部信息传递给计算机的作用 output:将计算机内部的各个信号数据及计算结果输出 二 .一些主流Linux发行版简介 linux发行版:linux只是一个操作系统,搭配其它软件发行的系统就是…

    Linux干货 2016-10-30
  • N28 第三周【2】:用户和组管理

    用户和组管理 前言 Linux用户管理非常关键且重要,Linux的所有进程都是以不同的身份拥有不同的权限来运行和调度资源的。但是我们不用费劲心思去管理,因为系统将用户划分成为了两部分:无所不能的root用户和普通用户。同时呢,又将普通用户分为系统用户和登录用户。对于Linux,他会用UID去快速识别用户身份,对于我们,可以用用户名去识别。 接下来介绍一下用户…

    Linux干货 2017-12-19
  • keepalived实现lvs的高可用

    lvs可以做到内核级别的四层负载均衡,具有非常强悍的负载均衡能力。但是,当我们构建lvs的负载均衡集群的时候也会面临一些很严重的问题: lvs的单点故障:当lvs负载均衡器出现故障的时候,那么后端所有的服务器都将无法访问; lvs对后台服务器没有健康监测机制:当后台服务器宕机之后lvs还是会调度服务到后台的服务器; 所以我们就需要一款工具来解决以上问题。 k…

    2017-07-03
  • 计算机基础与linux入门

    计算机硬件组成:     运算器:主要完成算术运算,逻辑运算     控制器:控制指令的执行序列,根据指令的功能给出实现指令功能所需要的控制信号     存储器:存放程序以及一些数据     &nbs…

    Linux干货 2015-12-19
  • 初识Linux之——Linux是如何诞生的

    初识Linux之——Linux是如何诞生的 对于大多数初次接触Linux的童鞋,可能会非常好奇什么是Linux?它是做什么的?为什么那么多高手都喜欢Linux?Linux是如何产生出来的呢?本文将为大家解答释疑,让大家对Linux有一个清晰的概念。 Linux是什么 简单来说,如Windows7、Windows10、安卓、IOS等,Linux是一个计算机操作…

    Linux干货 2016-10-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-17 21:44

    写的很好,排版还可以在改进一下,加油