码迷,mamicode.com
首页 > 编程语言 > 详细

megeedu Linux+Python高级运维班 3期 第二周作业

时间:2016-08-14 22:34:44      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:linux   文件管理   

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

    答:Linux上常用的文件管理类命令有cp(复制)、mv(移动/改名)、rm(删除)等命令。

         ①文件复制命令

            命令格式:

                   cp [OPTION]... [-T] SOURCE DEST
                   cp [OPTION]... SOURCE... DIRECTORY
                   cp [OPTION]... -t DIRECTORY SOURCE...

           常用选项:
                  -i:交互式
                  -r, -R: 递归复制目录及内部的所有内容;
                  -a: 归档,相当于-dR --preserv=all

           解释:

               cp SRC DEST
                    SRC是文件:
                          如果目录不存在:新建DEST,并将SRC中内容填充至DEST中;

#将root目录下的文件a.txt 复制到目录/root/test下
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog
[root@localhost ~]# cp /root/a.txt /root/test
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test
[root@localhost ~]# cat a.txt 
aaa
bb
cc
[root@localhost ~]# cat test 
aaa
bb
cc
[root@localhost ~]#

                          如果目录存在:将SRC中的内容填充之DEST中;

                                如果DEST是文件:将SRC中的内容覆盖至DEST中;此时建议为cp命令使用-i选项;

#将root目录下的文件a.txt 复制到已存在文件/root/test2中
[root@localhost ~]# touch test2
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1 test2
[root@localhost ~]# cp -i /root/a.txt /root/test2 
cp:是否覆盖"/root/test2"? y
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1  test2
[root@localhost ~]# cat a.txt
aaa
bb
cc
[root@localhost ~]# cat test2
aaa
bb
cc

                                 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;

#将root目录下的文件a.txt 复制到已存在目录/root/test1下
[root@localhost ~]# mkdir test1
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1
[root@localhost ~]# cp /root/a.txt /root/test1/
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1
[root@localhost ~]# ls test1
a.txt
[root@localhost ~]#

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

#如果DEST存在且为文件
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1  test2
[root@localhost ~]# cp install.log* test    #将/root目录下的install.log和install.log.syslog复制到已存在文件test,会产生报错信息。
cp: 目标"test" 不是目录
#如果DEST存在且为目录
[root@localhost ~]# cp install.log* test1
[root@localhost ~]# ls /root/test1
a.txt  install.log  install.log.syslog
[root@localhost ~]#


        cp SRC DEST
            SRC是目录:
                此时使用选项:-r
                    如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;

#将目录/root/test1中的内容复制到不存在的/root/mageedu目录中
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1  test2
[root@localhost ~]# ls test1
a.txt  install.log  install.log.syslog
[root@localhost ~]# cp -r  test1 mageedu
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  mageedu  test  test1  test2
[root@localhost ~]# ls mageedu/
a.txt  install.log  install.log.syslog

                    如果DEST存在:
                        如果DEST是文件:报错
                        如果DEST是目录:在目标目录中创建源目录下的目录及文件

#将/etc/rc.d/下的内容复制到/root/mageedu/下
[root@localhost ~]# ls /etc/rc.d/
init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit   
[root@localhost ~]# cp -r /etc/rc.d/ mageedu
[root@localhost ~]# ls mageedu/
a.txt  install.log  install.log.syslog  rc.d
[root@localhost ~]# ls mageedu/rc.d/
init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit
[root@localhost ~]#

        ②mv: move,移动文件(通常也用其对文件或目录重命名)
           命令格式:      

                  mv [OPTION]... [-T] SOURCE DEST
                  mv [OPTION]... SOURCE... DIRECTORY
                  mv [OPTION]... -t DIRECTORY SOURCE...
           常用选项:
                 -i: 交互式
                 -f: 强制

#将root/test移动到/root/test1下
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1  test2
[root@localhost ~]# ls test1
a.txt  install.log  install.log.syslog
[root@localhost ~]# mv /root/test /root/test1/
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test1  test2
[root@localhost ~]# ls test1
a.txt  install.log  install.log.syslog  test
[root@localhost ~]#
#将root/test2重命名为test
[root@localhost ~]# pwd
/root
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1
[root@localhost ~]# mv test2 test  //由于现在处在root目录下,故没有使用绝对路径
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1
[root@localhost ~]#

        ③rm: remove,删除
            命令格式:      

                   rm [OPTION]... FILE...
           常用选项:
                 -i: 交互式
                 -f: 强制删除
                 -r: 递归

#  rm -rf     //使用时注意路径

#将/root/mageedu 目录及内容删除
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  mageedu  test  test1  test2
[root@localhost ~]# rm -rf /root/mageedu/
[root@localhost ~]# ls
anaconda-ks.cfg  a.txt  install.log  install.log.syslog  test  test1  test2

2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
bash的基础特性(1):
    ①命令行展开
        ~: 展开为用户的主目录

[root@localhost ~]# echo ~
/root

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

[root@localhost ~]# echo ~ftp
/var/ftp

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

#例如/root/{a,b}_{c,d}相当于/root/a_c,/root/a_d,/root/b_c,/root/b_d
[root@localhost ~]# mkdir /root/{a,b}_{c,d}
[root@localhost ~]# ls
a_c  a_d  anaconda-ks.cfg  a.txt  b_c  b_d  install.log  install.log.syslog  test  test1
[root@localhost ~]#

    ②命令的执行结果状态只有两种(成功)或者(失败)
            $?保存最近一条命令的执行状态结果:
                      0:成功
                      1-255:失败
       程序执行有两类结果:
            程序的返回值;
            程序的执行状态结果;

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

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

[root@localhost ~]# ls /tmp
yum.log  yum_save_tx-2016-08-01-01-55m_XEdJ.yumtx
[root@localhost ~]# mkdir /tmp/{a,b}_{c,d}
[root@localhost ~]# ls /tmp
a_c  a_d  b_c  b_d  yum.log  yum_save_tx-2016-08-01-01-55m_XEdJ.yumtx
[root@localhost ~]#

(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

[root@localhost ~]# mkdir -p /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}
[root@localhost ~]# tree /tmp/mylinux
/tmp/mylinux/
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── lock
├── log
├── proc
├── run
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var

24 directories, 0 files
[root@localhost ~]#

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

    答:文件元数据信息包括File,Size,Device,Access,Modify,Change

           File:表示文件的路径。

           Size:表示文件大小,包括块大小等。

           Device:表示文件的信息,包括inode节点数和link数等。

           Access:文件的访问信息和权限。

           Modify:该文件修改时间。

           Change:状态改变时间。

    使用命令stat查看文件元数据

[root@localhost ~]# stat /root/test
  File: "/root/test"
  Size: 10            Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d    Inode: 393234      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-08-12 13:43:36.174273556 +0800
Modify: 2016-08-12 13:44:00.617273161 +0800
Change: 2016-08-12 14:21:51.148263979 +0800
[root@localhost ~]#

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

    touch命令:(修改三个时间戳的前两个)
        touch [OPTION]... FILE...
            -a: only atime
            -m: only mtime
            -t STAMP:
                 [[CC]YY]MMDDhhmm[.ss]
            -c: 如果文件不存在,则不予创建

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

     使用命令alias定义别名
            alias NAME=‘VALUE‘

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

     使用管道符“|”引用另一个命令的执行结果

[root@localhost ~]# cat /etc/passwd | grep "ftp"
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost ~]#

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

    答:使用命令

[root@localhost var]# touch  l{e3,3e,22,333,2e3}d
[root@localhost var]# ls
cache  db     games  l2e3d  l3ed  lib    lock  mail  opt       run    tmp
crash  empty  l22d   l333d  le3d  local  log   nis   preserve  spool  yp
[root@localhost var]# ls /var | egrep 1?[0-9][a-z]
l22d
l2e3d
l333d
l3ed
le3d
[root@localhost var]#

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

[root@localhost ~]# touch /etc/{0,9}{e3,33,r,3w,djei,334w}
[root@localhost ~]# ls /etc/ | more
033
0334w
03w
0djei
0e3
0r
933
9334w
93w
9djei
9e3
9r
--More--
[root@localhost ~]# ls  /etc/[0-9]*[[:alpha:]]
/etc/0334w  /etc/0djei  /etc/9334w  /etc/9djei
/etc/03w    /etc/0r     /etc/93w    /etc/9r

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

[root@localhost ~]# ls -d /etc/[^[:alpha:]][a-z]*
/etc/0djei  /etc/0e3  /etc/0r  /etc/9djei  /etc/9e3  /etc/9r
[root@localhost ~]#

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

[root@localhost ~]# touch /tmp/tfile-"$(date +‘%F-%H-%M-%S‘)"
[root@localhost ~]# ls /tmp
a_c  b_c  mylinux                    yum.log
a_d  b_d  tfile-2016-08-12-17-01-01  yum_save_tx-2016-08-01-01-55m_XEdJ.yumtx
[root@localhost ~]#

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

[root@localhost ~]# mkdir -p /tmp/mytest1 && cp -a /etc/p*[^0-9] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1/
pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  printcap  profile  profile.d  protocols

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

[root@localhost ~]# mkdir -p /tmp/mytest2 && cp -a /etc/*.d /tmp/mytest2
[root@localhost ~]# ls /tmp/mytest2
bash_completion.d  cron.d    dracut.conf.d  ld.so.conf.d  makedev.d   pam.d   prelink.conf.d  rc0.d  rc2.d  rc4.d  rc6.d  rsyslog.d  statetab.d  sysctl.d  yum.repos.d
chkconfig.d        depmod.d  init.d         logrotate.d   modprobe.d  popt.d  profile.d       rc1.d  rc3.d  rc5.d  rc.d   rwtab.d    sudoers.d   xinetd.d
[root@localhost ~]#

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

[root@localhost ~]# mkdir -p /tmp/mytest3 && cp -a /etc/[l,m,n]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
ld.so.conf  libaudit.conf  libuser.conf  logrotate.conf  mke2fs.conf  nsswitch.conf


本文出自 “博客” 博客,谢绝转载!

megeedu Linux+Python高级运维班 3期 第二周作业

标签:linux   文件管理   

原文地址:http://bluesone.blog.51cto.com/4019540/1837783

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!