使用bash shell提供的基本命令操作Linux文件和目錄

哪怕我們配不上自己的野心扑媚,也不要辜負了現(xiàn)在所受的苦難。

Linux shell 是個交互式工具,使用戶可以啟動程序圾浅、管理文件以及管理Linux系統(tǒng)上的進程。shell的核心是命令行提示符憾朴,是shell的交互部分狸捕,它允許你輸入文本命令,之后解釋命令并在內(nèi)核中執(zhí)行众雷。

shell包含了一組內(nèi)置命令灸拍,可以用來完成一系列的操作,比如復制文件砾省、移動文件鸡岗、重命名文件以及顯示和終止系統(tǒng)上正在運行的程序。

shell命令也可以寫入文件中作為程序來執(zhí)行编兄,這些文件被稱作shell腳本轩性。

1.啟動shell
大多數(shù)Linux發(fā)行版的默認shell都是GNU bash shell,它是作為常規(guī)程序運行的,通常是在用戶登錄終端時啟動翻诉,登錄時系統(tǒng)啟動的shell取決于用戶賬戶的配置炮姨。

/etc/passwd 文件中包含了所有用戶列表以及每個用戶的基本配置信息捌刮。

2.shell提示符
默認的shell提示符是美元符號$,這個符號表明shell在等待用戶輸入舒岸。

3.Linux文件系統(tǒng)
首先我們先了解一下Linux的文件系統(tǒng)的構建方式绅作,這和Windows有很大區(qū)別。
Windows為每個物理磁盤驅(qū)動器分配一個盤符蛾派,每個驅(qū)動器都會有自己的目錄結構俄认,以便訪問存儲在其上的文件。區(qū)別于Windows洪乍,Linux在路徑名中不使用驅(qū)動器盤符眯杏,Linux將文件存儲在單個目錄結構中,這個目錄我們稱之為 虛擬目錄壳澳。

虛擬目錄結構包含一個稱為根(root)目錄的基礎目錄岂贩,根目錄下的目錄和文件會按照訪問它們的目錄路徑一一列出,這點和Windows類似巷波。

舉個例子萎津,Linux文件路徑/home/valie/Document/read.txt,表明read.txt位于Document目錄,Document又位于valie目錄抹镊,valie則在home目錄中锉屈,但并沒有說明home目錄存在于哪個物理磁盤中。

Linux的根驅(qū)動器一般用來存儲系統(tǒng)文件垮耳,而用戶文件通常存儲在另一個驅(qū)動器里颈渊,上面所舉例的home目錄就是位于這個驅(qū)動啟器中,那么在沒有給出驅(qū)動器盤符的情況下终佛,系統(tǒng)又是如何訪問到home目錄的呢俊嗽?

這里就要提到 ‘掛載點 ’的概念,那么什么是掛載點查蓉?
Linux會在根驅(qū)動器中創(chuàng)建一些特別的目錄乌询,這些目錄稱之為‘掛載點’,但事實上這些目錄并不是存儲在根驅(qū)動器上豌研,而是存儲在另一個驅(qū)動器上妹田。

Linux的虛擬目錄
  • / : 虛擬目錄的根目錄,通常不會在這里存儲文件
  • /usr :用戶安裝軟件的目錄
  • /var :可變目錄鹃共,用以存放經(jīng)常變化的文件鬼佣,比如日志文件
  • /bin :二進制目錄,存放許多GNU用戶級的工具
  • /dev :設備目錄霜浴,Linux在這里創(chuàng)建設備節(jié)點
  • /home :主目錄晶衷,Linux在這里創(chuàng)建用戶目錄
  • /etc :系統(tǒng)配置文件目錄
  • /boot :啟動目錄,存放啟動文件
  • /opt :可選目錄,通常用于存放可選的軟件包
  • /lib :庫目錄晌纫,存放系統(tǒng)和應用程序的庫文件
  • /tmp :臨時目錄税迷,可以在該目錄創(chuàng)建和刪除臨時工作文件

在啟動一個新的shell提示符后,會話通常是從用戶的主目錄開始锹漱。

4.切換目錄

cd + 絕對路徑

cd ..  //切換到當前目錄的父目錄

5.文件和目錄列表

  • ls 顯示當前目錄下的文件和目錄
  • ls -F 添加-F參數(shù)用于區(qū)分目錄和文件箭养,它會在目錄名后添加正斜線/,另外會在可執(zhí)行文件后加星號*
  • ls -a 顯示當前目錄下的全部文件哥牍,包括隱藏文件(以點.開頭毕泌,通常用來保存配置信息)
  • ls -R 列出當前目錄下的所有文件和目錄,包括子目錄下的文件和目錄
  • ls -l 參數(shù)-l會以長列表的格式輸出嗅辣,每一行都列出了單個文件或目錄的更多信息撼泛。

6.ls命令的兩種命令行參數(shù)

  • 單字母參數(shù):以英文破折號開始
  • 全字母參數(shù):以雙英文破折號開始
    大部分參數(shù)都有單字母和雙字母兩種版本,而有的則只有一種澡谭,部分列舉如下:
單字母 全字母 含義
-a --all 輸出包括以.開頭的隱藏文件
-F --classify 給條目追加文件類型標識符
-R --recursive 遞歸地列出子目錄內(nèi)容
-i --inode 顯示每個文件的索引節(jié)點
-h --human-readable 輸出文件或目錄的大小愿题,以字節(jié)為單位
-s --size 輸出每個文件的塊大小
-l 按長列表格式輸出
--author 輸出每個文件的作者

另外,也可以一次使用多個參數(shù)蛙奖。多個雙破折線參數(shù)必須分開輸入抠忘,而多個單破折線可以組合成一個字符串,如用-s參數(shù)列出文件的塊大小外永,用-a參數(shù)列出所有文件,用-i參數(shù)列出每個文件的索引點拧咳,用-l參數(shù)產(chǎn)生一個長列表伯顶,組合起來就是:
ls -sail

終端輸出結果

7.過濾輸出列表
ls + 文件名:當使用文件名作為過濾器時,ls命令只顯示這個文件的信息骆膝;

有時候我們并不確定文件的確切名稱祭衩,或者文件的類型,這時候可以使用標準通配符來輸出滿足要求的文件:

  • 問號?代表一個字符
  • 星號*代表零個或多個字符

比如我想查找Applet文件阅签,但是并不確定它的文件類型掐暮,這時候可以這樣使用過濾方法:
ls Applet*

終端輸出結果
并不確定文件名時的查找方法

8.創(chuàng)建文件
有時,在寫入數(shù)據(jù)之前我們希望這個文件就已經(jīng)存在政钟,這時可以用touch命令來創(chuàng)建空文件路克。
touch + 文件名,例如:

創(chuàng)建并打印 time.txt文件

9.復制文件

  • cp命令用于將文件或目錄復制到另一個位置养交,最基本的用法就是cp+源文件名+目標文件名精算,例如:
復制 time.txt文件到當前目錄下,新文件名為 time1.txt

從上圖可以看出碎连,time.txt是一個全新的文件灰羽,有自己的索引節(jié)點。

另外,也可以采用絕對路徑來復制文件:

使用絕對路徑將源文件time.txt復制到當前目錄中廉嚼,新文件與源文件同名
  • 在cp命令中使用命令行參數(shù),以下是部分參數(shù)
參數(shù) 含義
-a 歸檔文件玫镐,并保留原有的屬性
-b 創(chuàng)建已存在的目標文件的備份,而非覆蓋它
-f 強制覆蓋已存在的目標文件怠噪,不提示
-p 保留文件屬性恐似,如訪問時間、修改時間等
-r 遞歸地復制文件
-R 遞歸地復制目錄
使用 -p 參數(shù)復制源文件

從上圖可以看出對于已經(jīng)存在的time1.txt文件舰绘,強行復制之后擁有和源文件time.txt一樣的修改時間蹂喻。

使用 -R 參數(shù)遞歸地復制整個目錄的內(nèi)容
使用通配符將所有以time開頭的文件復制到simple目錄中
使用 -a 參數(shù)將以time開頭的文件歸檔到 simple目錄中,文件屬性保留

10.使用ln命令創(chuàng)建鏈接文件
有時捂寿,我們需要在系統(tǒng)上維護同一份文件的一到多個副本口四,用上面?zhèn)€的cp命令復制多個副本并同時維護的方式雖然可行,但很費時費力秦陋。這時我們可以用創(chuàng)建虛擬副本的方法來完使維護工作變得輕松起來蔓彩,這個虛擬副本就稱為鏈接。鏈接是目錄中指向文件真實位置的占位符驳概。

Linux下的兩種不同類型的文件鏈接:

  • 硬鏈接赤嚼,創(chuàng)建方式:ln + 源文件名 + 目標文件名
  • 軟連接,即符號鏈接顺又,創(chuàng)建方式:ln -s + 源文件名 + 目標文件名

硬鏈接與軟鏈接的區(qū)別在于更卒,硬鏈接只能在同種存儲媒體上的文件之間創(chuàng)建,不能在不同掛載點下的文件間創(chuàng)建稚照,也就是說不在同一個磁盤分區(qū)中文件之間不能創(chuàng)建硬鏈接蹂空,而是使用軟鏈接。

創(chuàng)建一個指向 time.txt文件的硬鏈接 time1.txt

從上圖可以看出果录,time1.txt和time.txt文件的索引節(jié)點號是相同的上枕,表明實際上它們是同一個文件,并且在我修改了time.txt文件后(time.txt中添加了一行‘This is the first modification.’)弱恒,time1.txt文件中的內(nèi)容也同步改變了辨萍。

創(chuàng)建一個指向time.txt文件的軟連接time2.txt

從上圖看到,文件time2.txt的索引節(jié)點號與time.txt不同返弹,說明time2.txt是一個單獨的文件锈玉,并且文件變小了,是因為它只需要存儲源文件的信息琉苇,并不需要存儲文件中的數(shù)據(jù)嘲玫。

10.重命名/移動文件或目錄
在Linux中,文件和目錄的重命名和移動使用的是mv命令(moving),例如:

將time.txt文件重命名為time1.txt

需要注意的是并扇,移動一個有軟鏈接指向的文件會使得它的軟鏈接失效去团,如下圖time1.txt是一個指向time.txt的硬鏈接,time2.txt是一個指向time.txt的軟鏈接,當time.txt重命名為time3.txt后土陪,time2.txt軟鏈接已不再是一個有效鏈接昼汗,已經(jīng)無法訪問到它所指向的源文件中的內(nèi)容:

time.txt重命名后,它的軟鏈接 time2.txt失效鬼雀,硬鏈接保持有效

另外mv命令也用于將文件移動到別的目錄中顷窒,如下:

將 time.txt文件移動到當前目錄中的 dir目錄中

11.刪除文件
刪除文件的操作命令是rm,常用參數(shù)如下:

參數(shù) 含義
-i interactive源哩,即刪除前詢問是否確認刪除
-f force 鞋吉,即無視提示符,強制刪除
-r recursive励烦,刪除目錄谓着,在刪除這一目錄前會事先刪除目錄中的內(nèi)容

同樣需要注意的是,當刪除一個帶有軟鏈接的文件時坛掠,它的軟鏈接會失效赊锚,硬鏈接保持有效。這是因為硬鏈接文件具有和源文件相同的索引節(jié)點號屉栓,硬鏈接會維持這個索引節(jié)點號來保留數(shù)據(jù)舷蒲,直到你刪除了最后一個指向這個索引節(jié)點的硬鏈接。這一點類似于OC中的引用計數(shù)友多。軟鏈接存放的是源文件的路徑牲平,當源文件已經(jīng)不存在時,軟鏈接中所指向的源文件路徑也就不可用了域滥,所以軟鏈接失效欠拾。

刪除 time.txt源文件后,軟鏈接 time2.txt無法訪問到源文件的內(nèi)容

12.創(chuàng)建目錄
創(chuàng)建目錄不能使用touch命令骗绕,而是使用mkdir命令,如:
mkdir dir

13.刪除目錄
· 刪除目錄的基本命令是rmdir资昧, 但是rmdir只能刪除空目錄酬土,當目錄下有文件時,這個目錄就不能被刪除:

dir目錄下有 time.txt文件

要想刪除一個非空目錄格带,我們得用到rm命令撤缴,rm -r + 目錄名稱 會遞歸地刪除目錄中的文件,最后再刪除目錄本身:

使用 rm -r 命令刪除非空目錄 dir

14.查看文件信息
stat + 文件名 可以查看文件的所有狀態(tài)信息
file + 文件名 查看文件類型
file命令將文件分為3類:

  • 文本文件:包含可打印字符的文件
  • 可執(zhí)行文件:可在系統(tǒng)上運行的文件
  • 數(shù)據(jù)文件:包含不可打印的二進制字符叽唱,又不能在系統(tǒng)上運行的文件

15.查看文件內(nèi)容

  • 使用cat命令查看文件所有數(shù)據(jù)內(nèi)容屈呕,cat命令常用的參數(shù)如下:
參數(shù) 含義
-n 給所有行添加行號
-b 只給有文本的行添加行號
-s 將多個空白行壓縮成單個空白行
-e 在每行結束處添加美元符$
-t 用^+豎線去替代文中的制表符(ps:簡書寫作格式bug)
使用 cat命令打印文件內(nèi)容
使用 -n 參數(shù)給所有行添加行號
使用 -b參數(shù)給只有文本的行添加行號
使用 -s參數(shù)將多個空白行壓縮到單個空白行
使用 -e 參數(shù)在每行結束處顯示 $
使用 -t參數(shù)將制表符用 ^| 代替

使用cat命令會打印出文件的全部內(nèi)容,但是如果文件內(nèi)容非常多棺亭,那么查看文件內(nèi)容非常不便虎眨,這時可以使用more命令。

  • 使用more命令查看文件內(nèi)容 -- 實現(xiàn)分頁查看
    more命令常用的參數(shù)列舉:
參數(shù) 含義
+n 從第n行開始顯示
-n 設置每屏大小為n行
-s 將多個空白行壓縮成單個空白行

使用的常用操作符有:

操作命令 含義
Enter 向下n行,默認為1行嗽桩,需要設置
cmd + F 向下滾動一屏
空格鍵 向下滾動一屏
cmd + B 返回上一屏
= 輸出當前行的行號
V 調(diào)出vi編輯器
Q 退出more命令
  • 使用head命令查看文件的開頭內(nèi)容岳守,默認顯示10行
  • 使用tail命令查看文件的尾部內(nèi)容,默認顯示10行
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碌冶,一起剝皮案震驚了整個濱河市湿痢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扑庞,老刑警劉巖譬重,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異罐氨,居然都是意外死亡臀规,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門岂昭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來以现,“玉大人,你說我怎么就攤上這事约啊∫囟簦” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵恰矩,是天一觀的道長记盒。 經(jīng)常有香客問我,道長外傅,這世上最難降的妖魔是什么纪吮? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮萎胰,結果婚禮上碾盟,老公的妹妹穿的比我還像新娘。我一直安慰自己技竟,他們只是感情好冰肴,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榔组,像睡著了一般熙尉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搓扯,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天检痰,我揣著相機與錄音,去河邊找鬼锨推。 笑死铅歼,一個胖子當著我的面吹牛公壤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谭贪,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼境钟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俭识?” 一聲冷哼從身側響起慨削,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎套媚,沒想到半個月后缚态,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡堤瘤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年玫芦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本辐。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡桥帆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慎皱,到底是詐尸還是另有隱情老虫,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布茫多,位于F島的核電站祈匙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏天揖。R本人自食惡果不足惜夺欲,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望今膊。 院中可真熱鬧些阅,春花似錦、人聲如沸斑唬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赖钞。三九已至,卻和暖如春聘裁,著一層夾襖步出監(jiān)牢的瞬間雪营,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工衡便, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留献起,地道東北人洋访。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像谴餐,于是被迫代替她去往敵國和親姻政。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容