'經過了兩周的學習,對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
贊~內容總結的沒啥問題~繼續加油~