1、Linux上的文件管理類命令常用的使用方法
本篇涉及命令:cat,tac,more,less,head,tail,file,stat,touch,which,whatis,whereis,ls,mkdir,rmdir,tree,cp,mv,rm
?文本文件查看類命令
??cat 查看文件內(nèi)容(concatenate)
????cat命令用于查看一個或多個文本文件內(nèi)容,可以將兩個或兩個以上的文件連接起來并顯示;cat命令缺點是不能翻屏
???語法:cat
??????cat 文件名 ...
??????cat 選項... 文件名...
??????cat 文件1 文件2 …
??????cat [OPTION]... [FILE]...
???選項:
?????-n,--number [FILE …]:顯示文件內(nèi)容并輸出行號
?????-b,--number-nonblank:忽略空白行;只對非空白行進行編號
?????-s,--squeeze-blank:不輸出多行空行
?????-E,--show-ends:顯示行結(jié)束符 "$"
???cat命令示例
?????查看/etc/fstab文件內(nèi)容并輸出行號
??tac連接文件并反向顯示文件內(nèi)容
????tac命令的作用是顯示文體文件的內(nèi)容,和cat不同的是tac命令是逆向(反向)顯示文件內(nèi)容
???語法:tac [選項]... [文件名] ...
??????tac 文件1 文件2 …
??????tac [OPTION]... [FILE]...
???tac命令的選項和cat命令一致
??more以全屏幕的方式分頁顯示文本文件的內(nèi)容
????當文件太大,用cat命令無法查看時,可以用more命令查看文件內(nèi)容
???語法:more 文件名...
??????more +行號 文件名...
??????more [OPTIONS...] FILE...
???選項:
?????-d:顯示翻頁及退出提示
???more命令的快捷鍵:
快捷鍵 | 說明 |
---|---|
空格,F(xiàn) | 顯示下一頁文本文件內(nèi)容 |
回車 | 顯示下一個行文本內(nèi)容 |
B | 顯示上一行文本內(nèi)容 |
q,Q | 退出 |
??less 分頁顯示文本文件內(nèi)容
????less命令用于分頁顯示文本文件的內(nèi)容,less是more的升級版(less is more)和more命令不同的是,less命令可以向上翻頁,而more命令卻不能;其實,man命令是調(diào)用less命令來工作的;所以,less命令顯示文本的用法及快捷鍵與man命令一樣;less命令支持擴展的正則表達式
???語法:less 文件名
??????less 選項]... 文件名
??????less [OPTIONS...] FILE...
???選項:
?????-e,--quit-at-eof:顯示完文件內(nèi)容,自動退出
?????-f,--force:強制顯示文件內(nèi)容
?????-i,--ignore-case:顯示文件內(nèi)容并忽略字符大小寫
?????-N,--LINE-NUMBERS:顯示時,在每一行的行首加上行號
?????-s,--squeeze-blank-lines:連續(xù)多個空行變成一行顯示
???快捷鍵
????參考man快捷鍵
??head 顯示文本文件的頭幾行內(nèi)容
????head命令用于顯示文件頭幾行的內(nèi)容,默認顯示文本文件前十行
???語法:head 文件名...
??????head -行數(shù) 文件名...
??????head 選項 文件名...
??????head [OPTION]... [FILE]...
???選項:
?????-c,--bytes SIZE:顯示指定字節(jié)數(shù)
?????-n,--lines NUMBER:顯示指定的行數(shù)
?????-v,--verbose:顯示文件名
?????-q,--quiet:不顯示文件名;默認
??tail 顯示文件后幾行的內(nèi)容
????tail命令用于顯示文件最后的內(nèi)容,默認顯示文本文件后十行
???語法:tail 文件名...
??????tail -行數(shù) 文件名
??????tail 選項 文件名...
??????tail [OPTION]... [FILE]...
???選項:
?????-c,--bytes SIZE:顯示指定字節(jié)數(shù)
?????-n,--lines NUMBER:顯示指定的行數(shù)
?????-f,--follow:顯示文件內(nèi)容后,不退出;跟蹤顯示文件新追加的內(nèi)容
???????用Ctrl+C:退出
?????-v,--verbose:顯示文件名
?????-q,--quiet:不顯示文件名;默認
???tail命令示例
?????查看/etc/passwd文件的后5行
?????跟蹤日志信息
?文件操作類命令
??文件的時間戳
??access time:文件的訪問時間;簡寫“atime”,讀取文件內(nèi)容
????在CentOS 7上不會立即改變
??modify time:文件的修改時間;簡寫“mtime”,內(nèi)容發(fā)生改變
??change time:文件的改變時間;簡寫“ctime”,元數(shù)據(jù)發(fā)生改變
????atimi,mtime發(fā)生改變時,ctime才會進行改變
??CentOS 7多了一個“創(chuàng)建時間”
???touch 創(chuàng)建空文件 or 更改文件的時間戳
????touch命令用于創(chuàng)建空文件和修改文件時間戳(不能修改改變時間),如果文件不存在就創(chuàng)建文件,如果文件存在,默認就會更新文件的時間戳為此刻的時間戳
????語法:touch 文件名...
???????touch 選項... 文件名...
???????touch FILENAME-$(date +%F-%H-%M-%S)
???????touch [OPTION]... FILE...
????選項:
??????-a:只更改訪問時間 (atime)
??????-m:只更改修改時間 (mtime)
??????-d:同時更改訪問時間和修改時間
??????-c,--no-create:如果文件不存在,則不予創(chuàng)建
??????-h,--no-dereference:更改軟鏈接文件;而不是軟鏈接所指向的文件
??????-r,--reference FILE:使用指定文件(參照文件)的時間戳,而不是當前時間
??????-t STAMP:使用指定時間戳,而不是現(xiàn)在時間;如果文件存在,則更改文件的訪問時間和文件的修改時間的時間戳,如果文件不存在,則創(chuàng)建一個文件,指定文件的訪問時間和文件修改時間的時間戳;格式:“年月日小時分鐘.秒”
[[CC]YY]MMDDhhmm[.ss]
????注意:-d 和-t 選項可接受不同的時間/日期格式
????touch命令示例
?????創(chuàng)建一個空文件
?????更改fstab文件的訪問時間
?????更改fstab文件的修改時間
?????做一個軟鏈接文件并將/etc/passwd文件的時間戳設置為此文件的時間戳
關于stat,cp命令的用法:請見下文
??文件的兩類數(shù)據(jù)
??元數(shù)據(jù):文件名、大小、類型、權(quán)限、屬主屬組、文件的時間戳(非文件的組成部分)...
??數(shù)據(jù):文件里的內(nèi)容(文件的組成部分)
??文件的修改與改變
??修改:指文件的內(nèi)容發(fā)生改變(數(shù)據(jù))
??改變:指文件的屬性發(fā)生改變(元數(shù)據(jù))
??注意:元數(shù)據(jù)發(fā)生改變數(shù)據(jù)一不定變,而數(shù)據(jù)發(fā)生改變元數(shù)據(jù)一定變
???stat 顯示文件或文件系統(tǒng)狀態(tài)信息(元數(shù)據(jù)信息)
????語法:stat 文件或目錄...
???????stat [OPTION]... FILE...
????選項:
??????-c,--format FORMAT:輸出指定信息
???????FORMAT:可以指定分隔符進行輸出
?????????%n:只顯示文件的名稱
?????????%s:只顯示文件的總大小;以字節(jié)為單位
?????????%b :只顯示占據(jù)的磁盤塊數(shù)
?????????%o:最佳I/O傳輸大小
?????????%F:只顯示文件類型
?????????%i:只顯示inode
?????????%h:只顯示鏈接次數(shù)
?????????%C:只顯示SELinux的安全上下文
?????????%a:只顯示八進制訪問權(quán)限
?????????%A:顯示權(quán)限
?????????%u:只顯示數(shù)字UID
?????????%U:只顯示文件的屬主
?????????%g:只顯示數(shù)字GID
?????????%G:只顯示文件的屬組
?????????%x:只顯示文件的訪問時間
?????????%y:只顯示文件的修改時間
?????????%z:只顯示文件的改變時間
?????????%m:掛載點
??????-f:顯示文件系統(tǒng)狀態(tài)而不是文件狀態(tài)
??????-t:輸出簡結(jié)信息
??????-L:顯示軟鏈接所指向的文件的信息
????stat命令輸出信息說明
??????File:文件名稱
??????Size:文件大小
??????Blocks:占據(jù)的磁盤塊數(shù)
??????IO Block:IO塊大小
??????普通文件[regular file]:文件類型
??????Device:所在設備
??????Inode節(jié)點號
??????Links:被鏈接次數(shù)
??????Access(第一個):訪問權(quán)限
??????Context:SELinux的安全上下文
??????Uid:uid號和屬主
??????Gid:gid號和屬組
??????Access(第二個):文件最近一次的訪問時間
??????Modify:文件的修改時間
??????Change:文件的改變時間
?目錄類命令
??pwd 顯示當前目錄(Print Working Directory)
????pwd命令是一個shell內(nèi)部命令,用于顯示當前工作目錄的路徑
???語法:pwd
??????pwd 選項…
???選項:
?????-P:如果目錄是個軟鏈接,則顯示軟鏈接所指向的目錄
???pwd命令的相關的環(huán)境變量
????$PWD:保存了當前目錄路徑
????$OLDPWD:保存了上一級目錄路徑
???一條命令兩種實現(xiàn)
????pwd是一個內(nèi)部命令,/bin/pwd是一個外部命令,前者用于顯示當前的工作目錄,后者用于顯示當前所在的完整的工作目錄
????內(nèi)部命令的‘優(yōu)先級’要高于外部命令
??mkdir 創(chuàng)建新目錄 (Make Directory)
????mkdir命令用于創(chuàng)建目錄,可一次性創(chuàng)建一個或多個目錄; 如果目錄存在,則不會創(chuàng)建其目錄,并顯示錯誤信息
???語法:mkdir 目錄名...
??????mkdir 選項]... 目錄名...
??????mkdir [OPTION]... DIRECTORY...
???選項:
?????-m,--mode 權(quán)限值 (MODE):創(chuàng)建目錄時指定其僅限
?????-p,--parents:連續(xù)創(chuàng)建多層目錄,目錄存在不報錯
?????-v:顯示創(chuàng)建過程
???新建目錄注意事項(文件名使用法則)
???1. 文件名嚴格區(qū)分大小寫 (file1, File1, FILE1 不是同一個文件)
???2. 文件名可使用除“/”以外的任意字符,但不建議使用特殊字符(~,`,!,=,|,,<,>,?,(,),&,*,^,%,$,#,@...)
???3. 目錄也是文件,在同一路徑下,兩個文件不能同名
???4. 文件名長度最長不能超過255個字符
???5. 文件名以“.”開頭的文件均為隱藏文件
???6. 文件名如果有空格,就用引號””引起來
??注意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在
??rmdir 刪除空目錄 (Remove empty directories)
???語法:rmdir 目錄...
??????rmdir 選項... 目錄...
??????rmdir [OPTION]... DIRECTORY...
???選項:
?????-p,--parents:刪除指定目錄后,若該目錄的上層目錄是空目錄,則一并刪除
?????-v,--verbose:顯示刪除過程
??mktemp 創(chuàng)建臨時文件或目錄
????mktemp命令用于在shell腳本中創(chuàng)建臨時文件,如不加任何選項,則會在/tmp目錄下創(chuàng)建一個臨時文件
???語法:mktemp
??????mktemp 文件名
??????mktemp 選項
??????mktemp 選項 文件名
??????mktemp [OPTION]... [TEMPLATE]
???選項:
?????-d,--directory:創(chuàng)建一個目錄而非文件
?????-q,--quiet:靜默模式,執(zhí)行時若發(fā)生錯誤,不會顯示任何信息
???注意
- ?新建的文件格式必須是“FILENAME.XX.....”
- ?一次只能創(chuàng)建一個文件
- ?此命令多用于shell腳本
??tree 以樹形結(jié)構(gòu)顯示目錄內(nèi)容
???語法:tree
??????tree [選項]... 目錄...
???選項:
?????-d:只顯示目錄
?????-p:只顯示由指定模式匹配到的路徑
?????-L LEVEL:指定顯示層級的數(shù)目
??ls 列出目錄內(nèi)容 (List)
????ls/dir命令用于顯示當前目錄或指定目錄下的文件列表
???語法:ls
??????ls 目錄或文件路徑...
??????ls 選項... 目錄或文件路徑...
??????ls [OPTION]... [DIR|FILE]...
???選項:
?????-a:顯示當前目錄下的所有文件,包括隱藏文件
?????-A:與-a選項的作用基本類似,但不會顯示“.”和“..”
?????-l:以長格式顯示(Long)顯示文件類型和目錄列表;包括權(quán)限、大小、最后更新時間等詳細信息,ls –l也可簡寫成“l(fā)l”
???????ls -l參數(shù)說明
???從左到右第一個字符“-”:文件類型
?????文件類型:-, d, b, c, l, s, p
???從第二到第十個字符“rw-r--r--”:文件的訪問權(quán)限
???第十一位字符“1”:文件被硬鏈接的次數(shù)
???第十二位字符“root左”:文件屬主(owner)
???第十三位字符“root右”:文件屬組(group)
???第十四位字符“465”:文件的大小(size)
???8月 31 18:19:文件最近一次被修改的時間
???最后一位字符“zhangdaifu”:文件名稱
?????-h:以更人性化(human-readable)的方式顯示出目錄或文件的大小(KB、MB),默認大小單位為字節(jié)(B),此選項需要結(jié)合“-l”選項一起使用
對文件大小單位換算;換算后結(jié)果可能會非精確值
?????-d:顯示當前目錄(Directory)本身的屬性(也可以顯示文件),而不是顯示目錄中的內(nèi)容,此選項需要結(jié)合“-l”選項一起使用
?????-i:顯示每個文件的Inode
?????-r:以文件名逆向排序(降序)的方式進行顯示
?????-S:根據(jù)文件大小進行排序顯示
?????-t:根據(jù)修改時間排序
組合選項:-ltr:根據(jù)上一次修改時間進行排序
?????-R:以遞歸(Recursive)的方式顯示指定目錄及其子目錄中的所有內(nèi)容
?????-c:結(jié)合“-lt”選項;根據(jù)ctime進行排序并顯示文件狀態(tài)最后更改的時間
?????-L:當顯示軟鏈接文件時,顯示軟鏈接所指向的文件,而非軟鏈接本身
?????-p:對目錄加上表示符號“/”
?????-m:以逗號分隔文件,并填滿整行行寬
?????-F:加上文件類型的指示符號(*/=@| 其中一個)
?????-B:不列出任何以"~"字符結(jié)束的文件
?????-G:結(jié)合“-l”選項;根據(jù)一個長列表的形式顯示,不輸出組名
?????-n:類似“-l”選項,但列出每個文件的UID 和GID
?????-q:以"?“字符代替無法顯示的字符
?????-Q:將顯示的文件用" "括起來
?????-T:指定制表符(Tab)的寬度,而非8 個字符
?????-id:只顯示當前目錄的詳細屬性,不顯示目錄下的內(nèi)容
?????-Z:顯示SELinux的相關信息
?????--time-style=STYLE:查看文件的詳細時間信息;需結(jié)合“-l”選項
???????long-iso
???????full-iso
???????iso
???????locale
???????還可以+date格式符
?????--color:啟用顏色法則區(qū)分不同類型的文件;默認開啟此選項
??Linux文件類型
??-(f):普通文件
??d directory:目錄文件
??l symbolic link:軟(符號)鏈接文件
??b block device:塊設備文件;支持以“block”為單位進行隨機訪問
??c character device:字符設備文件;支持以“character”為單位進行線性訪問
??p pipe:管道文件
??s socket:套接字文件
注:在Linux中,除了目錄文件、鏈接文件、塊設備文件、字符設備文件、管道文件、套接字文件其他都是普通文件
??which 顯示命令的完整路徑
???語法:which 外部命令...
??????which 選項 外部命令...
???選項:
?????--skip-alias:不顯示命令別名
??whereis 搜索程序名
????查找命令的二進制、源代碼和手冊頁面文件
???語法:whereis 命令或配置文件
??????whereis [選項] 文件或目錄
???選項:
?????-b:只搜索二進制文件
?????-m:只搜索man手冊說明文件
?????-s:只搜索源代碼文件
??whatis 查詢命令功能
????whatis命令是用于查詢一個命令執(zhí)行什么功能,并將查詢結(jié)果顯示在終端上;使用mkwhatis命令可將當前系統(tǒng)上所有的幫助手冊與之相對應的關鍵字創(chuàng)建為一個數(shù)據(jù)庫
???語法:whatis [要查詢的命令...]
???注意:其執(zhí)行過程是查詢數(shù)據(jù)庫進行的
?????手動更新數(shù)據(jù)庫:makewhatis
??file查看文件類型
????file命令用于查看Linux系統(tǒng)上的文件類型,支持通配符,file使用的是相對路徑
???語法:file 文件或目錄...
??????file 選項 文件或目錄...
???選項:
?????-b:不顯示文件名
?????-L:直接顯示軟鏈接所指向的文件類別
?????-h:直接顯示軟鏈接的文件類型,而不是軟鏈接所指向的文件類型
?????-F:使用指定的字符串作為文件名和文件之間的分隔符返回結(jié)果,默認為“:”
?????-z:嘗試解讀壓縮文件中的內(nèi)容
?文件管理操作類命令
??cp 復制“Copy”文件或目錄
????cp命令用于復制文件或目錄,將需要復制的文件或目錄(源)復制到其他目錄中;如果有多個文件需要復制,則目標必須是個目錄,而不能是文件
???cp命令復制流程:cp-->源-->新建一個空(目標)文件-->從源文件抽取數(shù)據(jù)流-->填充到目標文件中,直到和源文件一樣-->copy done
??復制通常指的是復制文件中的數(shù)據(jù),而不是復制文件的元數(shù)據(jù)(元數(shù)據(jù)可保留)
??如果復制的源有多個,則目標必須存在并且是個目錄,而不能是單個文件
????cp只能把多個文件放到一個目錄中去,而不能把多個文件合并成一個文件
??如果目標有多個且是目錄,則以最后一個為準(目標只能是目錄,且不能指明文件名)
??目錄不能覆蓋文件
??如果復制的是特殊文件 (b,c,s,[l,d]),則使用“-a”選項
???單源(文件)復制:cp 源文件 復制后的文件名
???多源(文件)復制:cp 源文件… 目標目錄
???語法:cp 源文件 復制后的文件名
??????cp 源文件… 目標目錄
??????cp 選項... 源文件或目錄... 目標目錄
??????cp [OPTION]... -t DIRECTORY SOURCE...
???cp命令原理
- ??如果源是文件
????單文件復制
?????語法格式:cp [OPTION]... SOURCE_FILE DEST
??????如果目標文件不存在
????????則新建一個文件,并將源文件中的內(nèi)容添加到目標文件中
????????如果不指明目標的文件名,則用原文件名
????????如果指明目標的文件名,則使用手動指明的文件名
??????如果目標是一個文件(非目錄文件)且存在
????????會把目標文件里的內(nèi)容清空,把源文件里的內(nèi)容覆蓋到目標文件中;此時應使用-i選項
????????復制同類文件
?????????注意:如果將目錄文件覆蓋了,則無法恢復
??????如果目標是一個目錄且存在
????????在目標目錄下新建一個與源文件同名的文件,并將源文件中內(nèi)容添加到(復制其數(shù)據(jù)流)新文件中
????????則會復制源文件到目標目錄中,并保留源文件名
????多文件復制
?????語法格式:cp [OPTION]... SOURCE_FILE... DIRECTORY
??????如果目標是一個文件(非目錄文件)且存在
????????Error,復制將無法進行
??????如果目標是一個目錄且存在
????????分別復制每個文件至目標目錄中,并保持原名
??????如果目標不存在:復制將無法進行- ??如果源是目錄
????則目標必須是一個目錄文件,使用“-r”選項進行復制目錄文件
????單源復制
?????語法格式:cp [OPTION]... SOURCE_DIR DIRECTORY
??????如果目標目錄不存在
????????將會創(chuàng)建一個與源同名的新目錄并復制源目錄中所有文件到目標目錄中
??????如果目標存在
????????如果目標是文件:會報錯
????????如果目標是目錄:會把源目錄復制到目標目錄中并新建與源同名的目錄文件并把源的所有內(nèi)容都復制到目標目錄中去
????多源復制
?????語法格式:cp [OPTION]... SOURCE_DIR… DIRECTORY
??????如果目標目錄不存在
????????Error,復制將無法進行
??????如果目標存在
????????如果目標是文件:會報錯
????????如果目標是目錄:會把源目錄中的各個內(nèi)容復制到目標目錄中并新建與源同名的目錄文件并把源的所有內(nèi)容都復制到目標目錄中去
???選項:
?????-i:交互式復制,目標文件存在提醒是否將其覆蓋;覆蓋:y,否則:n
???????建議定義別名:alias cp='cp -i'
?????-f:強制復制,不提醒目標文件是否覆蓋(遇到-i失效)
?????-r,-R DIR:復制目錄必用此選項;遞歸復制目錄及目錄里的所有內(nèi)容至目標位置;作用和“-R”一樣,cp命令默認不支持SRC是目錄
?????-d:復制符號鏈接文件本身(僅保留鏈接屬性),而非其指向的源文件
???????默認情況下,cp命令復制符號鏈接文件的時候,復制的不是符號鏈接文件的本身,而是借用了符號鏈接文件的名字,復制了符號鏈接文件所指向的文件;如果目標存在,則將源符號鏈接所指向的文件覆蓋至目標文件
?????-b:管理員復制文件時,會提醒目標文件存在是否覆蓋,并將目標文件進行備份;普通用戶復制文件時,會直接覆蓋掉目標文件,并備份 (-)
?????-p:復制時保留源文件的權(quán)限,包括:屬主屬組、時間戳
?????--preserve[=ATTR_LIST]:保存指定的屬性,默認mode,如果不加“=”則保留默認屬性,使用“=”可指定保留項
??????ATTR_LIST:
????????mode:權(quán)限
????????ownership:屬主和屬組
????????timestamps: 時間戳
????????context:安全(上下文)標簽
????????links:符號鏈接本身
????????xattr:擴展屬性
????????all:上述所有屬性
?????--no-preserve=ATTR_LIST:不保存指定的屬性
?????-a:歸檔復制,保留文件的元數(shù)據(jù)屬性;也可復制目錄,相當于“-dR”和 “--preserve=all”選項;備份重要文件時需用此選項
??????-a選項可以復制普通文件,目錄文件,鏈接文件,塊設備文件,字符設備文件,套接字文件
?????-n:不覆蓋現(xiàn)有文件(不通與-i同時使用)
?????--parents:保留目錄結(jié)構(gòu)
?????--copy-contents:遞歸復制特殊文件的內(nèi)容
?????--backup[=CONTROL]:為每一個現(xiàn)有的目標文件做一個備份 (~)
???????CONTROL:
?????-l:對源文件建立硬鏈接,而不是復制文件
?????-s:對源文件建立軟鏈接,而不是復制文件(類似于ln -s)
?????-L:復制軟鏈接所指向的源文件,而非軟鏈接本身;默認
?????-u:僅在源文件比目標文件新或缺少目標文件時才復制
?????-S<STRING>:在備份文件的尾部添加一個字串;需要覆蓋時,才生效
?????--attributes-only:只會復制文件名及其屬性,不會復制任何數(shù)據(jù)
?????--remove-destination:如果 cp 命令在目標目錄下發(fā)現(xiàn)同名文件, cp 命令會先刪除目標文件,然后再復制一份新的
?????-t:可以把源放在后邊,把目標目錄放在前面
?????-T:把目標當做一個正常文件
?????-v:顯示詳細信息
?????-Z:將目標文件的SELinux安全上下文設置為默認類型
??mv 移動文件“move” or 重命名文件
????mv命令用于移動文件或重命名文件,在相同目錄下重命名文件,在不同目錄下移動文件
???語法:mv 源文件或目錄... 目標目錄
??????mv 選項... 源... 目標
??????mv 原文件名 重命名后的文件名
??????mv 多個源文件或目錄 目標目錄
???mv命令執(zhí)行流程:mv源-->新建一個空(目標)文件-->從源文件抽取數(shù)據(jù)流-->填充到目標文件中-->刪除源文件-->mory done
????如果mv的源有多個,則目標必須存在并且是個目錄,而不能是單個文件
???選項:
?????-i:交互式,提醒目標文件存在是否覆蓋;覆蓋:y,否則:n
?????-f:強制,不提醒目標文件是否覆蓋(遇到-i失效)
?????-b:覆蓋目標,并備份
?????-n:不會覆蓋現(xiàn)有文件
?????-u:當源文件比目標文件新或者目標文件不存在時,才移動文件
?????-t:可以把源放在后邊,把目標目錄放在前面
?????-S<STRING>:在備份文件的尾部添加一個字串;需要覆蓋時,才生效
?????-T:把目標當做一個正常文件
?????-v:顯示執(zhí)行過程
?????-Z:將目標文件的SELinux安全上下文設置為默認類型
- ??如果源是單個文件
????如果目標不存在
??????操作過程:在目標目錄下創(chuàng)建一個自己指定的名字作為新文件名,把源文件里的內(nèi)容添加到目標文件中并刪除源文件
????如果目標存在
????如果目標是文件
??????操作過程:把源文件里的內(nèi)容覆蓋到目標文件中,并刪除源文件
????如果目標是目錄
??????操作過程:在目標目錄中創(chuàng)建一個與源文件同名的文件,并刪除源文件- ??如果源是多個文件:目錄必須存在,而且必須是目錄
????如果源是目錄:mv命令就會把目錄和目錄下的所有文件移動到指定目錄中(mv命令不區(qū)分源是文件或目錄)
???注意:移動文件只影響文件名,不會影響inode編號和時間戳
??rm 刪除“remove”文件或目錄
????rm命令用于刪除指定的文件或目錄,rm命令默認是刪除文件的,刪除目錄必須使用“-r”
???語法:rm 文件或目錄 ...
??????rm 選項 ... 文件或目錄 ...
??????rm [OPTION]... FILE...
???選項:
?????-i:交互式刪除文件,提示是否刪除;確定:y,取消:n
?????-f:強制刪除,不提示
?????-I:在刪除超過三個文件或者遞歸刪除前要求確認
?????-d:只刪除空目錄;類似于“rmdir”命令
?????-r:刪除目錄必用此選項,遞歸刪除指定目錄和目錄里的內(nèi)容
?????--no-preserve-root:跳過安全模式
?????-v:顯示刪除過程
????注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄(模擬回收站)
???使用rm時需注意
????不要執(zhí)行:rm –rf /[*]
????執(zhí)行此條命令,系統(tǒng)會從“/”往下刪,也就是說,把系統(tǒng)中所有的文件和目錄都刪除;在CentOS5和CentOS5之前的版本中,執(zhí)行此條命令會把系統(tǒng)上的文件和目錄全部都刪除,在CentOS6中,新加了“--preserve-root”選項,該選是不刪除“/”的,CentOS6默認支持該選項
2、bash的工作特性之命令執(zhí)行狀態(tài)返回值和命令行展開所涉及的內(nèi)容及其示例演示。
命令的執(zhí)行狀態(tài)**
???**命令執(zhí)行的結(jié)果
命令執(zhí)行的結(jié)果
命令執(zhí)行后的狀態(tài)結(jié)果
命令執(zhí)行后的狀態(tài)結(jié)果
命令執(zhí)行完成之后,其狀態(tài)返回值保存于bash的特殊變量“?”保存上一條命令的執(zhí)行的狀態(tài)結(jié)果,用echo $?可以判斷上一條命令是否執(zhí)行成功
命令執(zhí)行后的狀態(tài)結(jié)果返回值
0:表示執(zhí)行成功
1~255:表示執(zhí)行失敗
命令行展開
~:展開為用戶的家目錄
~用戶名:展開為指定用戶的家目錄
{}:可承載一個以逗號分割的列表,并將其展開為多個路徑
3、請使用命令行展開功能來完成以下練習:
??(1)、創(chuàng)建/tmp目錄下的:a_c, a_d, b_c, b_d
??mkdir -v /tmp/{a,b}_{c,d}
??(2)、創(chuàng)建/tmp/mylinux目錄下的
mkdir -pv /tmp/mylinux/{bin,root/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}}
4、文件的元數(shù)據(jù)信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
??文件的時間戳(參考上文)
??touch命令(參考上文)
??文件元數(shù)據(jù)(參考上文)
??stat命令(參考上文)
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執(zhí)行結(jié)果?
??alias 給命令設置別名
????alias是shell內(nèi)部命令,用于查看當前shell進程中所有的命令別名和設置系統(tǒng)命令中的別名,如果原命令有多個參數(shù)空格隔開的話,就用’’括起來,如果執(zhí)行“alias”什么都不加,將會查看系統(tǒng)中已經(jīng)設置的命令別名;alias命令設置的別名僅對當前shell進程有效;如果想永久有效,則定義到配置文件中
???語法:alias
??????alias 別名=’原命令’
???僅對當前shell有效
?????時間限定:僅對當前shell有效,shell進程終止就失效
?????范圍限定:僅對當前shell有效,對其他shell無效
?????注:任何在進程中定義的東西,由進程終止而終止
???讓別名永久生效
?????~/.bashrc:寫入此配置文件中,對當前用戶生效
?????/etc/bashrc:寫入此配置文件中,對所有用戶生效
????注意:別名可以與原名相同,此時原名被隱藏;此時如果要運行原命令,則使用\COMMAND
??撤銷命令別名
????unalias是shell內(nèi)部命令,用于撤銷用戶定義的別名
???語法:unalias 命令別名
??????unalias 選項
???選項:
?????-a:撤銷所有別名
??引用命令的執(zhí)行結(jié)果
????狀態(tài)結(jié)果定義于命令的源代碼中,根據(jù)命令及其功能不同,命令執(zhí)行的狀態(tài)結(jié)果(返回值)各不相同
???引用命令執(zhí)行結(jié)果
6、顯示/var目錄下所有以l開頭,以一個小寫字母結(jié)尾,且中間至少出現(xiàn)一位數(shù)字(可以有其它字符)的文件或目錄。
??ls -d /var/l[[:digit:]][[:lower:]]
7、顯示/etc目錄下,以任意一個數(shù)字開頭,且以非數(shù)字結(jié)尾的文件或目錄。
??ls -d /etc/[[:digit:]]*[^[:digit:]]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
??ls -d /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目錄下創(chuàng)建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
??touch /tmp/tfile-$(date +%F-%H-%M-%S)
10、復制/etc目錄下所有以p開頭,以非數(shù)字結(jié)尾的文件或目錄到/tmp/myzdf1目錄中。
??mkdir /tmp/myzdf1 ; cp -r /etc/p*[^[:digit:]] /tmp/myzdf1
11、復制/etc目錄下所有以.d結(jié)尾的文件或目錄至/tmp/myzdf2目錄中。
??mkdir /tmp/myzdf2 ; cp -r /etc/*.d /tmp/myzdf2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結(jié)尾的文件至/tmp/myzdf3目錄中。
??mkdir /tmp/myzdf3 ; cp /etc/[lmn]*conf /tmp/myzdf3