第二周博客作業

  '經過了兩周的學習,對Linux有了更深的認識,學習到了很多的新知識,在此進行總結。
一、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命令也是如此。

[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命令,所以不需要交互。

  -v:執行過程可視化,即無論命令執行結果為何,均反饋在命令行中;

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

  -r:遞歸復制文件夾,cp命令默認是不復制文件夾的,如需要復制文件夾,可以使用這個參數,會根據文件夾的樹狀結構遞歸將所有文件夾內的文件或目錄復制;

[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參數后,復制成功。

  -f:當目標文件存在且無法打開時,移除該文件再執行復制,這個命令主要是針對無法打開目標文件的情況下使用,比如對文件夾有寫權限但是對文件夾內部的文件沒有權限;


  mv命令:
  作用是移動文件或文件夾,其用法為:
  mv [OPTION]… [-T] SOURCE DEST
   單源移動,將文件移動到目標路徑。
  mv [OPTION]… SOURCE… DIRECTORY
   多源移動,將多個目標移動到指定的文件夾。
  mv [OPTION]… -t DIRECTORY SOURCE…
   多源移動的另一種寫法,與上一種寫法效果一致。
  主要選項有:
  實際上mv命令與cp非常相似,作用不同自然不說了,命令的選項上有兩個區別,一個是mv命令沒有遞歸選項,默認支持遞歸操作,另一個是mv命令對目標文件存在時的三種選項,默認生效的為最后一個,也就是說,即使使用別名,運行的實際上是mv -i的命令,在選項中如果加上-f的話,覆蓋文件不提示用戶確認的效果也會起作用。
  -i:交互式操作,在目標文件存在時,提示用戶確認是否覆蓋;

[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:如果目標文件存在,放棄移動;

[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。



二、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個目錄。



三、請使用命令行展開功能來完成以下練習:
(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    └── run24 directories, 0 files
[root@localhost ~]#

  這兩道題目都是使用bash中命令行展開的特性來完成。



四、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
答:查看文件元數據的命令是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為每個區塊的大?。ㄒ宰止潪閱挝唬瑀egular為文件的類型,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)。



五、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
答:別名是用一個自定的簡單的字符串來代表某一個較復雜的字符串,以提高輸入命令的效率或減少一些犯錯的機會,定義別名的命令為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文件夾下,生成了一個新的文件,是以生成的時間作為文件名,這就是命令引用的一個簡單的運用。



六、顯示/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,可以看到有兩個文件符合我們的需求。



七、顯示/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文件夾創建了一些文件用來模擬查詢。



八、顯示/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]#


九、在/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]#


十、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

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


十一、復制/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>

原創文章,作者:N25-Johnny,如若轉載,請注明出處:http://www.www58058.com/63338

(0)
N25-JohnnyN25-Johnny
上一篇 2016-12-12 16:52
下一篇 2016-12-12 17:57

相關推薦

  • mysql.主從復制.讀寫分離.高可用.集群實戰

    架構圖如下: 1.按照架構圖所示,準備機器,做好時間同步,主機名解析 192.168.42.150 node1 [proxySQL keepalived]192.168.42.151 node2 [proxySQL keepalived]192.168.42.152 node3 [mysql-master wha]192.168.42.153 node4 […

    Linux干貨 2017-07-14
  • shell腳本之條件測試

    組合條件測試:在多個條件間實現邏輯運算     與:[ condition1 -a condition2 ]、condition1 && condition2     或:[ condition…

    Linux干貨 2015-08-24
  • 2017全球互聯網架構大會上海站火熱來襲,等您赴約!

    GIAC 全球互聯網架構大會,是長期關注互聯網技術與架構的高可用架構技術社區推出的,面向架構師、技術負責人及高端技術從業人員的年度技術架構大會。

    2017-11-30
  • vim文本編輯器之快捷鍵滿天飛

    vim文本編輯器不同于nano的是其功能非常強大,強大的功能還支持各種快捷鍵,讓我們編輯文本的時候更方便更快捷。 本文將會按照下圖所展示的功能來對命令一一講解,           打開文件:       &n…

    Linux干貨 2016-08-11
  • Nginx:

    來自為知筆記(Wiz)

    Linux干貨 2016-10-26
  • Linux基礎命令及獲取命令幫助

    何為命令?         linux命令是對Linux系統進行管理的命令。對于Linux系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:內置She…

    Linux干貨 2016-10-25

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-16 23:36

    贊~內容總結的沒啥問題~繼續加油~

欧美性久久久久