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