第二周博客做业

  '通过了两周的学习,对Linux有了更深的认识,学习到了不少的新知识,在此进行总结。
1、Linux上的文件管理类命令都有哪些,其经常使用的使用方法及相关示例演示。
答:Linux经常使用的文件管理类命令主要有如下几个:
  cp,mv,rm,mkdir,rmdir,install,touch;
  cp命令:
  做用是拷贝文件或文件夹,其用法为:
  cp [OPTION]... [-T] SOURCE DEST
   单源复制,将文件复制到目标路径。
  cp [OPTION]... SOURCE... DIRECTORY
   多源复制,将多个目标复制到指定的文件夹。
  cp [OPTION]... -t DIRECTORY SOURCE...
   多源复制的另外一种写法,与上一种写法效果一致。
  注意:若是目标为文件夹的,该文件夹必须事先就存在。
  主要选项有:
  -i:交互式操做,在目标文件存在时,提示用户确认是否覆盖;
  注意:管理员用户默认状况下,cp命令其实是一个别名,对应的是cp -i,因此若是用管理员用户想要不提示覆盖,须要在cp命令以前加\以使用实际的cp命令而不是别名,mv,rm命令也是如此。
node

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# 
[root@localhost ~]# cp /etc/issue /tmp/
cp: overwrite ‘/tmp/issue’? y
[root@localhost ~]# \cp /etc/issue /tmp/
[root@localhost ~]#

  能够看到,root用户的别名中包括cp因此直接执行cp命令会提示确认,而加了\就至关于直接执行了cp命令,因此不须要交互。python

  -v:执行过程可视化,即不管命令执行结果为什么,均反馈在命令行中;linux

[root@localhost ~]# \cp -v /etc/issue /tmp/
‘/etc/issue’ -> ‘/tmp/issue’
[root@localhost ~]#

  -r:递归复制文件夹,cp命令默认是不复制文件夹的,如须要复制文件夹,可使用这个参数,会根据文件夹的树状结构递归将全部文件夹内的文件或目录复制;web

[root@localhost ~]# \cp /var/log /tmp/
cp: omitting directory ‘/var/log’
[root@localhost ~]# \cp -rv /var/log /tmp/
‘/var/log/tallylog’ -> ‘/tmp/log/tallylog’
‘/var/log/lastlog’ -> ‘/tmp/log/lastlog’
‘/var/log/btmp’ -> ‘/tmp/log/btmp’
...

  能够看到,当没有加-r命令的时候,提示略过了文件夹 /var/log,而使用-r参数后,复制成功。bash

  -f:当目标文件存在且没法打开时,移除该文件再执行复制,这个命令主要是针对没法打开目标文件的状况下使用,好比对文件夹有写权限可是对文件夹内部的文件没有权限;markdown


  mv命令:
  做用是移动文件或文件夹,其用法为:
  mv [OPTION]... [-T] SOURCE DEST
   单源移动,将文件移动到目标路径。
  mv [OPTION]... SOURCE... DIRECTORY
   多源移动,将多个目标移动到指定的文件夹。
  mv [OPTION]... -t DIRECTORY SOURCE...
   多源移动的另外一种写法,与上一种写法效果一致。
  主要选项有:
  实际上mv命令与cp很是类似,做用不一样天然不说了,命令的选项上有两个区别,一个是mv命令没有递归选项,默认支持递归操做,另外一个是mv命令对目标文件存在时的三种选项,默认生效的为最后一个,也就是说,即便使用别名,运行的其实是mv -i的命令,在选项中若是加上-f的话,覆盖文件不提示用户确认的效果也会起做用。
  -i:交互式操做,在目标文件存在时,提示用户确认是否覆盖;post

[root@localhost ~]# mv /tmp/issue /tmp/mytest/
mv: overwrite ‘/tmp/mytest/issue’? y
[root@localhost ~]#

  -f:覆盖文件且不提示用户确认;学习

[root@localhost ~]# mv -fv /tmp/issue /tmp/mytest/
‘/tmp/issue’ -> ‘/tmp/mytest/issue’
[root@localhost ~]#

  -n:若是目标文件存在,放弃移动;spa

[root@localhost ~]# mv -nv /tmp/issue /tmp/mytest/
[root@localhost ~]#

  能够看到,因为目标文件存在,因此加了-n以后该命令没有产生任何结果。
  -v:执行过程可视化,即不管命令执行结果为什么,均反馈在命令行中;命令行


  rm命令:
  做用是移除文件或文件夹,其用法为:
  rm [OPTION]... FILE...
  这个命令要慎用,使用前要再三确认,最好是建立一个文件夹做为“回收站”,将用不到的文件mv到该文件夹,否则一不当心使用了“rm -rf /*这样的命令就能够准备离职了...”
  主要选项有:
  -i:交互式操做,在移除时提示用户确认;

[root@localhost ~]# rm /tmp/issue
rm: remove regular file ‘/tmp/issue’? y
[root@localhost ~]#

  -f:移除文件时不需用户确认(该命令比较危险,慎用);

[root@localhost ~]# rm -fv /tmp/issue
removed ‘/tmp/issue’ 
[root@localhost ~]#

  -r:递归移除,用于移除文件夹(该命令很是危险,慎用,与-f一块儿使用时可能产生毁灭性的结果...);

[root@localhost ~]# rm -rfv /tmp/mytest/log
removed ‘/tmp/mytest/log/tallylog’
removed ‘/tmp/mytest/log/lastlog’
removed ‘/tmp/mytest/log/btmp’
...

  -v:执行过程可视化,即不管命令执行结果为什么,均反馈在命令行中;


  mkdir命令:
  做用是建立文件夹,其用法为:
  mkdir [OPTION]... DIRECTORY...
  这个命令能够搭配Linux的命令行展开特性,一次建立出一个复杂的目录树。
  主要选项有:
  -p:当建立的文件夹的父目录不存在时,自动建立;
  -v:执行过程可视化,即不管命令执行结果为什么,均反馈在命令行中;

[root@localhost ~]# ll /tmp/mytest/
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
[root@localhost ~]# mkdir -pv /tmp/mytest/dir/test/{1,2}
mkdir: created directory ‘/tmp/mytest/dir’
mkdir: created directory ‘/tmp/mytest/dir/test’
mkdir: created directory ‘/tmp/mytest/dir/test/1’
mkdir: created directory ‘/tmp/mytest/dir/test/2’
[root@localhost ~]#

  能够看到,mkdir命令根据须要,建立了父目录。


  rmdir命令:
  做用是删除空文件夹,这个命令通常是在使用mkdir错误建立了错误的文件夹时使用,由于它只能删除空文件夹,因此做用不大。其用法为:
  rmdir [OPTION]... DIRECTORY...
  主要选项有:
  -p:当删除目录后,父目录为空时,将父目录一并删除;
  -v:执行过程可视化,即不管命令执行结果为什么,均反馈在命令行中;

[root@localhost ~]# rmdir -pv /tmp/mytest/dir/test/{1,2}
rmdir: removing directory, ‘/tmp/mytest/dir/test/1’
rmdir: removing directory, ‘/tmp/mytest/dir/test’
rmdir: failed to remove directory ‘/tmp/mytest/dir/test’: Directory not empty
rmdir: removing directory, ‘/tmp/mytest/dir/test/2’
rmdir: removing directory, ‘/tmp/mytest/dir/test’
rmdir: removing directory, ‘/tmp/mytest/dir’
rmdir: removing directory, ‘/tmp/mytest’
rmdir: failed to remove directory ‘/tmp/mytest’: Directory not empty
[root@localhost ~]#

  能够看到,rmdir命令相应的删除了空目录/tmp/mytest和/tmp/mytest/dir。


  install命令:
  复制文件并调整其属性,其用法为:
  install [OPTION]... [-T] SOURCE DEST
   单源复制,将文件复制到目标路径。
  install [OPTION]... SOURCE... DIRECTORY
   多源复制,将多个目标复制到指定的文件夹。
  install [OPTION]... -t DIRECTORY SOURCE...
   多源复制的另外一种写法,与上一种写法效果一致。
  install [OPTION]... -d DIRECTORY...
   建立目录,默认效果与mkdir -p 效果相同,不一样的是能够在选项中控制建立出的目录的属性。
  主要选项有:
  -o, --owner=OWNER:调整文件的属主;
  -g, --group=GROUP:调整文件的属组;
  -m, --mode=MODE:调整文件的权限(默认状况下为755);

[root@localhost tmp]# ll yum.log 
-rw-------. 1 root root 0 Dec  3 21:55 yum.log
[root@localhost tmp]# install -o gentoo -g netadmin -m 777 yum.log yum1.log
[root@localhost tmp]# ll yum*.log
-rwxrwxrwx  1 gentoo netadmin 0 Dec 12 00:37 yum1.log
-rw-------. 1 root   root     0 Dec  3 21:55 yum.log
[root@localhost tmp]# install yum.log yum2.log
[root@localhost tmp]# ll yum*.log
-rwxrwxrwx  1 gentoo netadmin 0 Dec 12 00:37 yum1.log
-rwxr-xr-x  1 root   root     0 Dec 12 00:37 yum2.log
-rw-------. 1 root   root     0 Dec  3 21:55 yum.log
[root@localhost tmp]#

  能够看到yum.log文件在被复制以前是600的权限,在第一次复制时,将属主更改成gentoo,属组更改成netadmin,权限更改成777,而第二次复制采用默认选项,复制出来的文件默认为755。



2、bash的工做特性之命令行执行状态返回值和命令行展开所涉及的内容及其示例演示。
答:bash在执行命令后,不管命令是否执行成功,都会有一个返回值存放于$?这个变量中,咱们能够根据返回值判断命令执行的状况,好比:

[root@localhost mytest]# ll issue
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
[root@localhost mytest]# echo $?
0
[root@localhost mytest]# lls issue
-bash: lls: command not found
[root@localhost mytest]# echo $?
127
[root@localhost mytest]# ll issues
ls: cannot access issues: No such file or directory
[root@localhost mytest]# echo $?
2
[root@localhost mytest]#

  当ll命令执行成功时,此次命令执行的返回值是0,全部成功执行的命令,返回值都是0,而两次失败的命令执行,一次返回的是127,一次返回的是2,这些都有对应的含义,错误命令的返回值是1-255之间的某个数字。
  bash命令行展开的特性能够方便咱们对多个文件进行处理,比较常见的有两种,一种为能够将之视为用户的家目录,如直接使用,表示当前用户的家目录,~gentoo表示gentoo用户的家目录,另外一种为路径展开,如/tmp/{1,2}至关于/tmp/1 /tmp/2,这能够方便咱们建立较为复杂的目录结构,好比:

[root@localhost ~]# mkdir -pv /tmp/test{bin,sbin,etc/{abc,def}}
mkdir: created directory ‘/tmp/testbin’
mkdir: created directory ‘/tmp/testsbin’
mkdir: created directory ‘/tmp/testetc’
mkdir: created directory ‘/tmp/testetc/abc’
mkdir: created directory ‘/tmp/testetc/def’
[root@localhost ~]#

  利用命令行展开的方式,用较为简练的语句一次性建立了5个目录。



3、请使用命令行展开功能来完成如下练习:
(1)、建立/tmp目录下的:a_c, a_d, b_c, b_d

[root@localhost ~]# mkdir -v /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’
[root@localhost ~]#

(2)、建立/tmp/mylinux目录下的:
  /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 ~]# ll /tmp/mylinux
ls: cannot access /tmp/mylinux: No such file or directory
[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
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var
 ├── lock
 ├── log
 └── run

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

  这两道题目都是使用bash中命令行展开的特性来完成。



4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
答:查看文件元数据的命令是stat,用法为:
  stat [OPTION]... FILE...

[root@localhost ~]# stat inittab 
  File: ‘inittab’
  Size: 511         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 201908860   Links: 1
Access: (0640/-rw-r-----)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-10 23:36:48.487569723 -0500
Modify: 2016-12-10 23:36:15.423567171 -0500
Change: 2016-12-10 23:36:15.423567171 -0500
 Birth: -

  其中,File为文件名,Size为文件大小(以字节为单位),Blocks为文件占用了多少区块,IO Block为每一个区块的大小(以字节为单位),regular为文件的类型,Device是文件所在的硬件,第一个Access是文件的访问权限,Uid是文件的属主,Gid是文件的属组,第二个Access是文件最后的访问时间,Modify是文件最后修改的时间,Charge是文件的元数据最后变动的时间。

  修改文件的时间戳信息能够用touch命令来实现,具体为:
  touch命令:
  更改文件时间戳,也能够用于建立新文件,其用法为:
  touch [OPTION]... FILE...
  主要选项有:
  -a:只修改最后访问时间;
  -d,--date=STRING:将文件的时间改成根据字符串调整后的时间,字符串为时间或日期如:“2 days ago”;

[root@localhost tmp]# stat yum.log
  File: ‘yum.log’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 134         Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-12 00:37:18.047239218 -0500
Modify: 2016-12-03 21:55:03.061928469 -0500
Change: 2016-12-03 21:55:03.061928469 -0500
 Birth: -
[root@localhost tmp]# touch -a -d "2 days ago" yum.log
[root@localhost tmp]# stat yum.log
  File: ‘yum.log’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 134         Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-10 01:24:31.620514896 -0500
Modify: 2016-12-03 21:55:03.061928469 -0500
Change: 2016-12-12 01:24:31.619457936 -0500
 Birth: -
[root@localhost tmp]#

  能够看到,在修改以前,文件yum.log的最后访问时间是2016-12-12...,使用-a和-d选项后,最后访问时间变为2016-12-10。
  -m:只修最后改修改时间;
  -t STAMP:将文件的时间改成格式为:[[CC]YY]MMDDhhmm[.ss]的时间;

[root@localhost tmp]# stat yum.log
  File: ‘yum.log’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 134         Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-10 01:24:31.620514896 -0500
Modify: 2016-12-03 21:55:03.061928469 -0500
Change: 2016-12-12 01:24:31.619457936 -0500
 Birth: -
[root@localhost tmp]# touch -m -t 201610152245.35 yum.log
[root@localhost tmp]# stat yum.log
  File: ‘yum.log’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 134         Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-12-10 01:24:31.620514896 -0500
Modify: 2016-10-15 22:45:35.000000000 -0400
Change: 2016-12-12 01:27:33.667471988 -0500
 Birth: -
[root@localhost tmp]#

  能够看到,在修改以前,文件yum.log的最后修改时间是2016-12-03...,使用-m和-t选项后,最后修改时间变为咱们输入的具体时间,2016-10-15 22:45:35。
  -c,--no-create:若是文件不存在,不建立文件;

[root@localhost mytest]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
[root@localhost mytest]# touch -c test
[root@localhost mytest]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
[root@localhost mytest]# touch test
[root@localhost mytest]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
-rw-r--r-- 1 root root  0 Dec 12 01:38 test
[root@localhost mytest]#

  能够看到,在使用touch命令以前,文件夹中并无test文件,在使用-c选项的时候,touch命令并无建立新的文件,而再次运行命令时,不加-c选项的时候,就建立了一个名为test的文件。
  -r,--reference=FILE:将文件的时间修改成某个文件的时间;

[root@localhost mytest]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
-rw-r--r-- 1 root root  0 Dec 12 01:42 test
[root@localhost mytest]# touch -r issue test 
[root@localhost mytest]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 11 22:02 issue
-rw-r--r-- 1 root root  0 Dec 11 22:02 test
[root@localhost mytest]#

  能够看到,使用-r选项时,test文件的时间戳依照issue文件作了修改。
  以上的参数能够混合使用,不管以哪一种方式修改时间(-r,-t,-d),均可以单独修改最后访问时间或最后修改时间(-a,-m)。



5、如何定义一个命令的别名,如何在命令中引用另外一个命令的执行结果?
答:别名是用一个自定的简单的字符串来表明某一个较复杂的字符串,以提升输入命令的效率或减小一些犯错的机会,定义别名的命令为alias,取消别名的命令式unalias:
  alias [-p] [name[=value] ...]
  -p:该参数与直接使用alias命令不加选项及参数的效果一致,是显示全部已经设定的别名;

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# alias hell="rm -rf"
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias hell='rm -rf'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#

  直接使用alias显示的结果以及添加了一个命令叫作“hell”,实际的效果是rm -rf:D


  unalias [-a] [name ...]
  -a:该参数是取消全部已经设定的别名;

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias hell='rm -rf'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# unalias hell
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#

  使用unalias命令取消了hell这个刚刚设定的别名。


  bash中,命令的引用是是用$(COMMAND)这样的格式来实现的,具体来讲,假如咱们要建立一个文件,而这个文件,咱们但愿它以被建立的时间为文件名,具体格式为YY-MM-DD-hh-hh-ss,这个时候咱们若是靠人工的使用date命令再根据显示的时间touch文件,一个是很麻烦,第二是不能准确的将文件名定为被建立的那一瞬间,那么最好的解决方法就是使用命令的引用,具体以下:

[root@localhost ~]# date +%Y-%m-%d-%H-%M-%S
2016-12-12-03-04-10
[root@localhost ~]# touch /tmp/$(date +%Y-%m-%d-%H-%M-%S)
[root@localhost ~]# ll /tmp/2016*
-rw-r--r-- 1 root root 0 Dec 12 03:04 /tmp/2016-12-12-03-04-13

  能够看到/tmp文件夹下,生成了一个新的文件,是以生成的时间做为文件名,这就是命令引用的一个简单的运用。



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

[root@localhost tmp]# ll /var/*[0-9]*[[:lower:]]
ls: cannot access /var/*[0-9]*[[:lower:]]: No such file or directory
[root@localhost tmp]# ll /var
total 8
drwxr-xr-x.  2 root root    6 Aug 12  2015 adm
drwxr-xr-x.  5 root root   41 Dec  3 21:56 cache
drwxr-xr-x.  2 root root    6 Nov 20  2015 crash
drwxr-xr-x.  3 root root   32 Dec  3 21:57 db
drwxr-xr-x.  3 root root   17 Dec  3 21:57 empty
drwxr-xr-x.  2 root root    6 Aug 12  2015 games
drwxr-xr-x.  2 root root    6 Aug 12  2015 gopher
drwxr-xr-x.  3 root root   17 Dec  3 21:55 kerberos
drwxr-xr-x. 23 root root 4096 Dec 11 20:09 lib
drwxr-xr-x.  2 root root    6 Aug 12  2015 local
lrwxrwxrwx.  1 root root   11 Dec  3 21:55 lock -> ../run/lock
drwxr-xr-x.  6 root root 4096 Dec 11 20:10 log
lrwxrwxrwx.  1 root root   10 Dec  3 21:55 mail -> spool/mail
drwxr-xr-x.  2 root root    6 Aug 12  2015 nis
drwxr-xr-x.  2 root root    6 Aug 12  2015 opt
drwxr-xr-x.  2 root root    6 Aug 12  2015 preserve
lrwxrwxrwx.  1 root root    6 Dec  3 21:55 run -> ../run
drwxr-xr-x.  8 root root   81 Dec  3 21:57 spool
drwxrwxrwt.  2 root root    6 Dec 10 22:08 tmp
drwxr-xr-x.  2 root root    6 Aug 12  2015 yp
[root@localhost tmp]# ll /tmp/*[0-9]*[[:lower:]]
-rwxrwxrwx 1 gentoo netadmin 0 Dec 12 00:37 /tmp/yum1.log
-rwxr-xr-x 1 root   root     0 Dec 12 00:37 /tmp/yum2.log
[root@localhost tmp]#

  因为/var目录下没有可以知足搜索条件的文件,因此将搜索的目录改成了/tmp,能够看到有两个文件符合咱们的需求。



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

[root@localhost tmp]# touch /tmp/{1,2,3,45}abcd{e,f,g}
[root@localhost tmp]#
[root@localhost tmp]# ll /tmp/[0-9]*[^0-9]
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcdg
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcdg
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcdg
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/45abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/45abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/45abcdg
[root@localhost tmp]#

  因为/etc目录下没有知足搜索条件的文件,在/tmp文件夹建立了一些文件用来模拟查询。



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

[root@localhost tmp]# ll /tmp/[^a-z][a-z]*
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/1abcdg
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/2abcdg
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcde
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcdf
-rw-r--r-- 1 root root 0 Dec 12 03:15 /tmp/3abcdg
[root@localhost tmp]#


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

[root@localhost tmp]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@localhost tmp]# ll /tmp/tfile-*
-rw-r--r--  1 root root 0 Dec 12 03:48 /tmp/tfile-2016-12-12-03-48-09
[root@localhost tmp]#


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

  1. [root@localhost tmp]# mkdir /tmp/mytest1 
  2. [root@localhost tmp]# cp -r /etc/p*[^0-9] /tmp/mytest1/ 
  3. [root@localhost tmp]# ll /tmp/mytest1/ 
  4. total 36 
  5. drwxr-xr-x 2 root root 4096 Dec 12 04:00 pam.d 
  6. -rw-r--r-- 1 root root 1268 Dec 12 04:00 passwd 
  7. -rw-r--r-- 1 root root 1306 Dec 12 04:00 passwd- 
  8. drwxr-xr-x 9 root root 91 Dec 12 04:00 pki 
  9. drwxr-xr-x 2 root root 27 Dec 12 04:00 plymouth 
  10. drwxr-xr-x 5 root root 49 Dec 12 04:00 pm 
  11. drwxr-xr-x 2 root root 6 Dec 12 04:00 popt.d 
  12. drwxr-xr-x 2 root root 145 Dec 12 04:00 postfix 
  13. drwxr-xr-x 3 root root 4096 Dec 12 04:00 ppp 
  14. drwxr-xr-x 2 root root 75 Dec 12 04:00 prelink.conf.d 
  15. -rw-r--r-- 1 root root 233 Dec 12 04:00 printcap 
  16. -rw-r--r-- 1 root root 1750 Dec 12 04:00 profile 
  17. drwxr-xr-x 2 root root 4096 Dec 12 04:00 profile.d 
  18. -rw-r--r-- 1 root root 6545 Dec 12 04:00 protocols 
  19. drwxr-xr-x 2 root root 34 Dec 12 04:00 python 
  20. [root@localhost tmp]#  


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

[root@localhost tmp]# mkdir /tmp/mytest2
[root@localhost tmp]# cp -r /etc/*.d /tmp/mytest2
[root@localhost tmp]# ll /tmp/mytest2
total 16
drwxr-xr-x  2 root root   48 Dec 12 04:01 bash_completion.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 binfmt.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 chkconfig.d
drwxr-xr-x  2 root root   20 Dec 12 04:01 cron.d
drwxr-xr-x  2 root root   22 Dec 12 04:01 depmod.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 dnsmasq.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 dracut.conf.d
drwx------  2 root root 4096 Dec 12 04:01 grub.d
lrwxrwxrwx  1 root root   11 Dec 12 04:01 init.d -> rc.d/init.d
drwxr-xr-x  2 root root   72 Dec 12 04:01 ld.so.conf.d
drwxr-xr-x  2 root root   60 Dec 12 04:01 logrotate.d
drwxr-xr-x  2 root root   22 Dec 12 04:01 modprobe.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 modules-load.d
drwxr-xr-x  2 root root   30 Dec 12 04:01 my.cnf.d
drwxr-xr-x  2 root root 4096 Dec 12 04:01 pam.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 popt.d
drwxr-xr-x  2 root root   75 Dec 12 04:01 prelink.conf.d
drwxr-xr-x  2 root root 4096 Dec 12 04:01 profile.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc0.d -> rc.d/rc0.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc1.d -> rc.d/rc1.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc2.d -> rc.d/rc2.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc3.d -> rc.d/rc3.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc4.d -> rc.d/rc4.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc5.d -> rc.d/rc5.d
lrwxrwxrwx  1 root root   10 Dec 12 04:01 rc6.d -> rc.d/rc6.d
drwxr-xr-x 10 root root  118 Dec 12 04:01 rc.d
drwxr-xr-x  2 root root   24 Dec 12 04:01 rsyslog.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 rwtab.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 statetab.d
drwxr-x---  2 root root    6 Dec 12 04:01 sudoers.d
drwxr-xr-x  2 root root   27 Dec 12 04:01 sysctl.d
drwxr-xr-x  2 root root   24 Dec 12 04:01 tmpfiles.d
drwxr-xr-x  2 root root    6 Dec 12 04:01 xinetd.d
drwxr-xr-x  2 root root 4096 Dec 12 04:01 yum.repos.d
[root@localhost tmp]# 
```</font>
相关文章
相关标签/搜索