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

相关推荐

  • 正则表达式及grep用法总结

    描述: grep: Global search REgular expression and Print outthe line. 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行; 模式:由正则表达式字符及文本字符所编写的过滤条件 语法格式:grep [OPTIONS] PATTERN [FILE…] OPT…

    Linux干货 2016-08-08
  • Buffer和Cache的区别

    1、buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。 2、cache(缓存) 从CPU角度考虑,是为了提高cpu和内存之间的数据交换速度而设计的,例如平常见到的一级缓存、二级缓存、三级缓存。 cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换…

    Linux干货 2018-01-02
  • N25_第四周博客作业

    N25_第四周博客作业   1、复制/etc/ske1目录为/home/tuser1,要求/home/tuser1及其内部文件的属组合其他用户均没有任何访问权限。     2、编辑/etc/group文件,添加组hadoop.。             &nb…

    Linux干货 2016-12-24
  • linux哲学思想

    有关运维,在哲学上的思想。 正确的哲学思想在我看来就是公理,就是像1+1=2一样大家都必须得遵守的公理。 当然,所有的公理都是有前提的,而有关linux的哲学思想当然是在linux环境这个大前提下。才是公理。在我看来,公理就是在学习知识之前所要依靠的准则,linux下的一切都在这些准则下。 比如: 一切接文件  linux下所有都是以文件的形式保存…

    2017-07-22
  • Boot目录下内容丢失导致系统无法启动

    Boot目录下内容丢失导致系统无法启动 笔者朋友近期在一次学习过程中不慎将虚拟机中boot目录下内容丢失,导致系统无法启动。当然此前他并不知道是这样,只是应为莫名的弹出框报错所有导致系统无法启动。此后朋友将此故障告知笔者,笔者本身其实也是小白刚刚学习linux不就,但是对这些稀奇古怪的故障感觉很有兴趣,所以笔者就掉进坑里搞了好久才搞出来点眉目来。为了让更多学…

    Linux干货 2016-10-24
  • NFS的应用实例

    实验目的:通过NFS实现共享 实验要求:实验环境下防火墙以及selinux都是要关闭的!!! 实验环境:三台虚拟机,以及相关安装程序 实验过程: 设置服务端centos 6-1 [root@centos6 ~]# yum install mysql-servernfs-utils httpd [root@centos6 ~]# service mysqld …

    2017-05-03

评论列表(1条)

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

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