第二週博客做業

  '通過了兩週的學習,對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>
相關文章
相關標籤/搜索