Linux命令——文件管理
cat命令
命令:cat
cat命令用于連接文件并打印到標(biāo)準(zhǔn)輸出設(shè)備上牵辣。
使用權(quán)限
所有使用者
語(yǔ)法格式
cat [選項(xiàng)列表] [文件列表]
參數(shù)說(shuō)明
-A, –show-all
-b, –number-nonblank 給非空輸出行編號(hào)
-E, –show-ends 在每行結(jié)束顯示$
-s, –squeeze-blank 將所有的連續(xù)的多個(gè)空行替換為一個(gè)空行
-T, –show-tabs 把TAB字符顯示為^I
-v, –show-nonprinting 除了LFD和TAB之外所有控制符用^和M-記方式顯示
–help 顯示幫助信息并退出
–version 顯示版本信息并退出
實(shí)例
查看textfile1.txt文件的內(nèi)容并并打印到標(biāo)準(zhǔn)輸出設(shè)備上
cat textfile1.txt
把textfile1.txt的文檔內(nèi)容加上行號(hào)后輸入textfile2.txt文檔中:
cat -n textfile1.txt > textfile2.txt
把textfile1.txt和textfile.txt的文檔內(nèi)容加上行號(hào)(空白行不加)之后將內(nèi)容附加到textfile3.txt文檔里
cat -b textfile1.txt textfile2.txt >> textfile3.txt
chmod命令
命令:chmod
chmod - 改變文件的訪(fǎng)問(wèn)權(quán)限
使用權(quán)限
所有使用者
語(yǔ)法格式
chmod [-cfvR] [--help] [--version] [--]
參數(shù)說(shuō)明
其中:
- u表示文件的擁有者,g表示與該文件的擁有者屬于同一個(gè)群體(group)者银觅,o表示其他以外的人结序, a表示這三者皆是(所有用戶(hù))骑歹。
- +表示增加權(quán)限卖氨、-表示取消權(quán)限酬屉、=表示唯一設(shè)定權(quán)限。
- r表示可讀蜈缤,w表示可寫(xiě)拾氓, x表示可執(zhí)行,X表示只有當(dāng)該文件是一個(gè)子目錄或者該文件已經(jīng)被設(shè)定過(guò)為可執(zhí)行底哥。
其他參數(shù)說(shuō)明:
-c, –changes 只有在文件的權(quán)限確實(shí)改變時(shí)才進(jìn)行詳細(xì)的說(shuō)明
-f, –silent, –quiet 不能輸出權(quán)限不能改變的文件的錯(cuò)誤信息
-v, –verbose 詳細(xì)說(shuō)明權(quán)限的變化
-R, –recursive 改變目錄及其所有子目錄的文件的權(quán)限
–help 顯示輔助說(shuō)明
–version 顯示版本信息
實(shí)例
將文件file.txt設(shè)置為所有人皆可讀攘啊:
chmod ugo+r file1.txt
chmod a+r file1.txt
將文件file.txt設(shè)置為該文件擁有者,與其他同一個(gè)群體者可寫(xiě)入趾徽,但其他以外的人則不可寫(xiě)入
chmod ug+w,o-w file.txt
將hello.py設(shè)定為只有該文件擁有者才可以執(zhí)行
chmod u+x hello.py
將目錄下的所有文件與子目錄皆設(shè)為任何人可讀取
chmod -R a+r *
用數(shù)字來(lái)表示權(quán)限
用的三位二進(jìn)制數(shù)來(lái)表示续滋,如 rwx為111,轉(zhuǎn)為十進(jìn)制為7孵奶,rw-為110疲酌,十進(jìn)制為6,r-x為101了袁,為5朗恳,r–為100,為4
設(shè)置為所有人可讀可寫(xiě)可執(zhí)行
chmod 777 hello.py
chown 命令
命令chown
修改文件所有者和組別
chown修改每個(gè)由第一個(gè)非選項(xiàng)參數(shù)聲明的給定file文件的用戶(hù)和/或組的所有權(quán)
使用權(quán)限
所有使用者
語(yǔ)法格式
chown [options] user [:group] file...
參數(shù)說(shuō)明
-R 遞歸地修改目錄及其下面內(nèi)容的所有權(quán)
-c, –changes 詳盡地描述每一個(gè)file實(shí)際改變了哪些所有權(quán)
-f, –silent, –quiet 不打印文件所有全部能修改的報(bào)錯(cuò)信息
-h, –no-dereference 只作用于其本身的符號(hào)鏈接早像,而部修改他們所指向的文件僻肖, 這只在提供了lchown系統(tǒng)調(diào)用的情況下才使用
-v, –verbose 詳盡地描述對(duì)每個(gè)file所執(zhí)行的操作(或者無(wú)操作)
–dereference 修改符號(hào)鏈接目標(biāo)端的所有權(quán),而非符號(hào)鏈接自身
–reference=rfile 修改file的所有權(quán)為rfile的所有權(quán)
–help 在標(biāo)準(zhǔn)輸出上打印一條用法信息卢鹦,并以成功狀態(tài)退出
–version 在標(biāo)準(zhǔn)輸出上打印版本信息臀脏,然后以成功狀態(tài)退出
實(shí)例
將文件file1.txt的擁有者設(shè)為users群體的使用者tengtengcai
將文件file2.txt的擁有者設(shè)為root超級(jí)管理員的使用者
chown tengtengcai:users file1.txt
chown root file2.txt
cmp命令
命令cmp
比較兩個(gè)文件一個(gè)字節(jié)一個(gè)字節(jié)的不同
語(yǔ)法
cmp [-clsv][-i <字符數(shù)目>] [--help] [文件名稱(chēng)1] [文件名稱(chēng)2]
參數(shù)
-b, –print-bytes 輸出不同的字節(jié)
-i, –ignore-initial 跳過(guò)兩個(gè)輸入的第一個(gè)跳過(guò)字節(jié)
-l, –verbose 輸出兩個(gè)文件不同字節(jié)數(shù)的值
-n, –bytes=LIMIT 最多比較limit個(gè)字節(jié)
-s, –quiet, –silent 支持所有的普通輸出
–help 顯示幫助信息并正常退出
-v, –version 輸出版本信息并正常退出
實(shí)例
比較file1.py和file2.py兩文件字節(jié)的不同
cmp file1.py file2.py
diff命令
命令diff
找出兩個(gè)文件的不同點(diǎn)
語(yǔ)法
diff [選項(xiàng)] 源文件 目標(biāo)文件
參數(shù)
-a 所有的文件都視為文本文件來(lái)逐行比較,甚至他們似乎不是文本文件
-b 忽略空格引起的變化
-B 忽略插入刪除空行引起的變化
–brief 僅報(bào)告文件是否相異冀自,在乎差別的細(xì)節(jié)
-c 使用上下問(wèn)輸出格式
-C 行數(shù)(一個(gè)整數(shù))
–context[=lines] 使用上下問(wèn)輸出格式揉稚,顯示以指定行數(shù)(一個(gè)整數(shù)), 或者是三行(當(dāng)行數(shù)沒(méi)有給出時(shí)熬粗,對(duì)于正確的操作搀玖,上下文至少要有兩行)
-i 忽略大小寫(xiě)
-r 比較子目錄中的文件
-v 顯示版本信息,并正常退出
-help 顯示幫助信息驻呐,并正常退出
實(shí)例
比較兩個(gè)文件的不同
diff cal.py cal1.py
3c3
<
---
> # 這是注釋
30c30
<
---
> # 這也是個(gè)注釋
file命令
命令file
確定文件類(lèi)型
語(yǔ)法
file [-bcnsvzL][-f 命令文件][-m 幻數(shù)文件] file...
參數(shù)
-b 不輸出文件名(簡(jiǎn)要模式)
-c 檢查時(shí)打印輸出幻數(shù)文件的解析結(jié)果灌诅,常與-m一起使用芳来,用了在安裝幻數(shù)文件之前調(diào)試它.
-f 命名文件 從參數(shù)表前的[命名文件], 中讀出將要檢查的文件名(每行一個(gè)文件), 要有[命名文件]猜拾,或者至少有一個(gè)文件名參數(shù)即舌;如果要檢查標(biāo)準(zhǔn)輸入,使用‘’-‘’作為文件參數(shù).
-m list 指定包含幻數(shù)的文件列表挎袜,可以是單個(gè)文件顽聂,也可以是用冒號(hào)分開(kāi)的多個(gè)文件.
-n 每檢查完一個(gè)文件就強(qiáng)制刷新標(biāo)準(zhǔn)輸出,僅在檢查一組文件時(shí)才有效盯仪,一般在將文件類(lèi)型輸出到管道時(shí)才采用此選項(xiàng).
-v 打印程序版本并退出.
-z 視圖查看壓縮文件內(nèi)部信息.
-L (在支持符號(hào)鏈接的系統(tǒng)上)選項(xiàng)顯示符號(hào)鏈接文件的原文件紊搪,就像ls命令的like-name選項(xiàng)
-s 通常,file只是視圖去檢查在文件列表中那些stat報(bào)告為正常文件的文件類(lèi)型全景,由于讀特殊文件將可能導(dǎo)致不可知后果耀石,所以這樣可以防止發(fā)生問(wèn)題。使用-s選項(xiàng)時(shí)file命令也將去讀取文件列表中的塊特殊文件和字符特殊文件.
實(shí)例
顯示文件類(lèi)型:
file test.py
test.py: Python script, UTF-8 Unicode text executable
# 不顯示文件名稱(chēng)
file -b test.py
Python script, UTF-8 Unicode text executable
# 顯示MIME類(lèi)型
file -i test.py
test.py: text/x-python; charset=utf-8
# 不顯示名字而且顯示出MiME類(lèi)型
file -bi test.py
text/x-python; charset=utf-8
顯示符號(hào)鏈接的文件類(lèi)型
file nginxhost/
nginxhost/: directory
file nginxhost
nginxhost: symbolic link to `/usr/share/nginx/html/'
git命令
命令git
git是文字模式下的管理員蚪燕,git是用來(lái)管理文件的程序娶牌,是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)奔浅,可以有效馆纳、高速的處理從很小到非常大的項(xiàng)目版本管理。Git是Linus Torvalds為了幫助管理Linux內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件汹桦。
語(yǔ)法
git [選項(xiàng)參數(shù)]
參數(shù)
add 添加文件到索引
clone 將存儲(chǔ)庫(kù)克隆到新目錄中
commit 記錄對(duì)數(shù)據(jù)庫(kù)的更改
diff 顯示提交和提交工作樹(shù)之間的更改
init 創(chuàng)建一個(gè)空Git存儲(chǔ)庫(kù)或重新初始化一個(gè)已存在的
log 顯示提交日志
**mv **移動(dòng)或重命名文件鲁驶、目錄或symlink
pull 從另一個(gè)存儲(chǔ)庫(kù)或本地分支獲取和合并
push 與相關(guān)對(duì)象一起更新遠(yuǎn)程引用
rm 從工作樹(shù)和索引中刪除文件
show 顯示各種類(lèi)型的對(duì)象
status 顯示工作數(shù)狀態(tài)
tag 創(chuàng)建、列出舞骆、刪除或驗(yàn)證用簽名標(biāo)記的對(duì)象
實(shí)例
初始化一個(gè)倉(cāng)庫(kù)
git init
Initialized empty Git repository in /home/tianjun/pycode/.git/
克隆一個(gè)github上的一個(gè)項(xiàng)目
git clone https://github.com/TengTengCai/BookCrawler.git
Cloning into 'BookCrawler'...
remote: Counting objects: 118, done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 118 (delta 36), reused 49 (delta 19), pack-reused 48
Receiving objects: 100% (118/118), 71.65 KiB | 13.00 KiB/s, done.
Resolving deltas: 100% (62/62), done.
文件到索引
git add code.py
將記錄變更到文件庫(kù)
git commit -m '版本說(shuō)明,消息'
創(chuàng)建分支
git checkout -b tj
查看分支
git branch
master
* tj
切換分支
git branch master
刪除分支
git checkout -D tj
將文件庫(kù)發(fā)送到遠(yuǎn)端服務(wù)器進(jìn)行更新钥弯,只有配置了遠(yuǎn)端服務(wù)器才會(huì)生效
git push origin <分支名>
從遠(yuǎn)端服務(wù)器進(jìn)行更新或回退文件庫(kù)版本,只有配置了遠(yuǎn)端服務(wù)器才會(huì)生效
git pull origin <分支名>
cut命令
命令cut
在文件的每一行中提取片斷,在每個(gè)文件file的各行中督禽,把提取的片段顯示在標(biāo)準(zhǔn)輸出
語(yǔ)法
cut [option] [file]
參數(shù)
-b, –bytes=LIST 輸出這些字節(jié)脆霎,這些字符位置將忽略多字符邊界,除非也指定了-n標(biāo)志
-c, –character=LIST 輸出這些字符
-d, –delimiter=DELIM 自定義分隔符狈惫,默認(rèn)為制表符
-f, –fields=LIST 與-d一起使用睛蛛,指定顯示哪個(gè)區(qū)域
-n 取消分割多字節(jié)符。僅和-b標(biāo)志一起使用胧谈。如果字符的最后一個(gè)字符落在由-b標(biāo)志的List參數(shù)指示的范圍之內(nèi)忆肾,該字符將被寫(xiě)出,否則菱肖,該字符將被移除
實(shí)例
查看文件中每行的第一個(gè)字符
cat hello.txt
你好
我是藤藤菜
他
cut -c 1 hello.txt
你
我
他
ln命令
命令ln
ln命令是一個(gè)飛車(chē)重要的命令客冈,它的功能是為某一文件在另外一個(gè)位置建立一個(gè)同步的鏈接。當(dāng)我們需要在不同的目錄稳强,用到相同的文件時(shí)场仲,我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件和悦,我們只需要在某一個(gè)固定的目錄,放上該文件渠缕,然后在其他的目錄下用ln命令鏈接(link)它就可以摹闽,不必重復(fù)的占用磁盤(pán)空間。
語(yǔ)法
ln [參數(shù)] [源文件或目錄](méi) [目標(biāo)文件或目錄](méi)
軟鏈接
- 軟鏈接褐健,以路徑的形式存在付鹿,類(lèi)似于windows操作系統(tǒng)中的快捷方式
- 軟鏈接可以跨文件系統(tǒng),硬鏈接不可以
- 軟鏈接可以對(duì)一個(gè)不存在的文件名進(jìn)行鏈接
- 軟連接可以對(duì)目錄進(jìn)行鏈接
硬鏈接
- 硬鏈接蚜迅,以文件副本的形式存在舵匾。但不占用實(shí)際空間
- 不允許給目錄創(chuàng)建硬鏈接
- 硬鏈接只有在同一個(gè)文件系統(tǒng)中才能創(chuàng)建
參數(shù)
-b 刪除,覆蓋以前建立的鏈接
-d 允許超級(jí)用戶(hù)制作目錄的硬鏈接
-f 強(qiáng)制執(zhí)行
-i 交互模式谁不,文件存在則提示用戶(hù)是否覆蓋
-n 把符號(hào)鏈接視為一般目錄
-s 軟鏈接(符號(hào)鏈接)
-v 顯示詳細(xì)的處理過(guò)程
實(shí)例
less命令
命令less
它與more類(lèi)似坐梯,但使用less可以隨意瀏覽文件,而more僅能向前移動(dòng)刹帕,卻不能向后移動(dòng)吵血,而且less在查看之前不會(huì)加載整個(gè)文件
語(yǔ)法
less [參數(shù)] [文件]
參數(shù)
-b <緩沖區(qū)大小> 設(shè)置緩存區(qū)的大小
-e 當(dāng)文件顯示結(jié)束后,自動(dòng)離開(kāi)
-f 強(qiáng)迫打開(kāi)特殊文件偷溺,例如外圍設(shè)備代號(hào)蹋辅、目錄和二進(jìn)制文件
-g 只標(biāo)志最后搜索的關(guān)鍵詞
-i 忽略搜索時(shí)的大小寫(xiě)
-m 顯示類(lèi)似more命令的百分比
-N 顯示每行的行號(hào)
-o <文件名> 將less輸出的內(nèi)容在指定文件中保存起來(lái)
-Q 不使用警告音
-s 顯示連續(xù)空行為一行
-S 行過(guò)長(zhǎng)時(shí)將超出部分舍棄
-x<數(shù)字> 將“tab”鍵顯示為規(guī)定的數(shù)字空格
/字符串 向下搜索字符串的功能
?字符串 向上搜索字符串的功能
n 重復(fù)前一個(gè)搜索(與/或?有關(guān))
N 反向重復(fù)前一個(gè)搜索(與/或?有關(guān))
b 向后翻一頁(yè)
d向后翻半頁(yè)
h 顯示幫助界面
Q 退出less命令
u 向前滾動(dòng)半頁(yè)
y 向前滾動(dòng)一行
空格鍵 滾動(dòng)一頁(yè)
回車(chē)鍵 滾動(dòng)一行
[pagedown] 向下翻動(dòng)一頁(yè)
[pageup] 向上翻動(dòng)一頁(yè)
實(shí)例
查看文件
less myredis.conf
ps查看進(jìn)程信息并通過(guò)less分頁(yè)顯示
ps -ef | less
more命令
命令more
類(lèi)似cat,不過(guò)會(huì)以一頁(yè)一頁(yè)的形式顯示挫掏,更方便使用者逐頁(yè)閱讀侦另,而基本的命令就是按空白鍵(space)就往下一頁(yè)顯示,按b鍵就會(huì)往回(back)一頁(yè)顯示尉共,而且還有搜尋字符串的功能(與vi相似)使用中的說(shuō)明文件褒傅,按h
語(yǔ)法
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames...]
參數(shù)
-num 一次顯示的行數(shù)
-d 提示使用者,在畫(huà)面下方顯示[Press space to continue, ‘q’ to quit], 如果使用者按錯(cuò)鍵袄友,則會(huì)顯示[Press ‘h’ for instructions] 而不是‘嗶’一聲
-l 取消遇見(jiàn)特殊字元^L(送紙字元)時(shí)會(huì)暫停的功能
-f 計(jì)算行數(shù)時(shí)殿托,以實(shí)際上的行數(shù),而非自動(dòng)換行過(guò)后的行數(shù)(有些單行字?jǐn)?shù)太長(zhǎng)的會(huì)被擴(kuò)展為兩行或兩行以上)
-p 不以卷動(dòng)的方式顯示每一頁(yè)剧蚣,而是先清除屏幕后再顯示內(nèi)容
-c 于-p相似支竹,不同的是先顯示內(nèi)容再清除其他舊資料
-s當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號(hào)
+num從第num行開(kāi)始顯示
fileNames 欲顯示內(nèi)容的文檔券敌,可為復(fù)數(shù)個(gè)數(shù)
實(shí)例
逐頁(yè)顯示myredis.conf文件
more myredis.conf
從第480行開(kāi)始顯示myredis.conf文件
more +480 myredis.conf
mv命令
命令mv
用來(lái)為文件或目錄改名唾戚、或?qū)⑽募蚰夸浺迫肫渌恢谩?/p>
語(yǔ)法
mv [選項(xiàng)] ... 源文件 目標(biāo)文件
mv [選項(xiàng)] ... 源文件... 目錄
mv [選項(xiàng)] ... --target-directory=DIRECTORY SOURCE...
參數(shù)
-b 為現(xiàn)有的每個(gè)目標(biāo)文件作一個(gè)備份
-f, –force 覆蓋前永不提示
-i, –interactive 覆蓋前提示
-u, –update 只移動(dòng)更老的或者標(biāo)記新的非目錄
-v, –verbose 說(shuō)明完成了什么
–help 顯示幫助并退出程序
–version 輸出版本信息且退出程序
實(shí)例
將文件aaa更名為bbb
mv aaa bbb
將info目錄放入logs目錄中。注意待诅,如果logs目錄不存在叹坦,則該命令info改名為logs
mv info/ logs
將/home/tengtengcai 下的所有文件和目錄移到當(dāng)前目錄下
mv /usr/student/* .
rm命令
命令rm
移除文件或目錄
語(yǔ)法
rm [操作] [文件或目錄](méi)
參數(shù)
-i 刪除前逐一詢(xún)問(wèn)確認(rèn)
-f 即使原檔案屬性設(shè)為唯讀,亦直接刪除卑雁,無(wú)需逐一確認(rèn)
-r 將目錄及以下之檔案亦逐一刪除
實(shí)例
刪除文件可以直接使用rm命令募书,若刪除目錄則必須配合選項(xiàng)“-r”绪囱,例如
rm -i test.txt
rm:是否刪除普通空文件 "test.txt"?y
不詢(xún)問(wèn)莹捡,直接刪除homework目錄下的所有文件
rm -rf homework/*
文件一旦通過(guò)rm命令刪除鬼吵,則無(wú)法恢復(fù),所以必須格外小心地使用該命令
touch命令
命令touch
用于修改文件或者目錄的時(shí)間屬性篮赢,包括存取和更改時(shí)間齿椅。若文件不存在,系統(tǒng)會(huì)創(chuàng)建一個(gè)新的文件启泣。
語(yǔ)法
touch [-acm] [-r ref_file(參照文件)] | -t time(時(shí)間值)] | file...
參數(shù)
-a 修改文件file的存取時(shí)間
-c 不創(chuàng)建文件file
-m 修改文件file file
-r ref_file 將參照文件 ref_file相應(yīng)的時(shí)間戳記的數(shù)值作為指定文件 file時(shí)間戳記的新值
**-t time **使用指定的時(shí)間值time做為指定文件file相應(yīng)時(shí)間戳記的新值涣脚,此處的time規(guī)定為如下形式的十進(jìn)制數(shù):[[CC]YY]MMDDhhmm[.SS]
實(shí)例
使用指令修改文件的時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間
touch test.txt
使用指令時(shí),如果指定的文件不存在寥茫,則將創(chuàng)建一個(gè)新的空白文件遣蚀,如,在當(dāng)前目錄下使用指令創(chuàng)建一個(gè)空白文件file
touch file
cp命令
命令cp
復(fù)制文件和目錄
語(yǔ)法
cp [選項(xiàng)] 文件路徑
cp [選項(xiàng)] 文件...目錄
參數(shù)
-a, –archive復(fù)制時(shí)纱耻,盡可能保持文件的結(jié)構(gòu)和屬性.但不保持目錄結(jié)構(gòu) 等同于 -dpR
-d, –no-dereference 復(fù)制符號(hào)鏈接作為符號(hào)鏈接而不是復(fù)制它指向的文件芭梯,并且保護(hù)在副本中原文件之間的硬鏈接.
-f, –force 刪除存在的目標(biāo)文件
-i, –interactive 無(wú)論是否覆蓋現(xiàn)存文件都作提示
-l, –link 制作硬鏈接代替非目錄拷貝
-p, –parents 保持原始文件的所有者,組弄喘,許可和時(shí)間表屬性
-r 遞歸地復(fù)制目錄玖喘,復(fù)制任何非目錄和非符號(hào)鏈接
-R, –recursive 遞歸地復(fù)制目錄,保留非目錄
實(shí)例
使用命令將當(dāng)前目錄test下所有文件復(fù)制到新目錄newdir下
cp -r test/* newdir