蓝桥云课linux入门4:目录结构及文件基本操作
目錄
1.內容
2.Linux目錄結構
2.1 FHS標準
2.2 目錄路徑
路徑
絕對路徑
相對路徑
3.Linux文件的基本操作
3.1新建
新建空白文件
新建目錄
3.2復制
復制文件
復制目錄
?3.3刪除
刪除文件
刪除目錄
3.4移動文件與文件重命名
移動文件
重命名文件
移動文件
重命名文件
批量重命名
3.5查看文件
使用?cat,tac?和?nl?命令查看文件
使用?more?和?less?命令分頁查看文件
3.6查看文件類型
1.內容
知識點:
- 每個目錄的大體內容
- 文件的屬性
- touch,file,rm,mv?等基本命令
2.Linux目錄結構
在講 Linux 目錄結構之前,你首先要清楚一點,那就是 Linux 的目錄與 Windows 的目錄的區別,或許對于一般操作上的感受來說沒有多大不同,但從它們的實現機制來說是完全不同的。
一種不同是體現在目錄與存儲介質(磁盤,內存,DVD 等)的關系上,以往的 Windows 一直是以存儲介質為主的,主要以盤符(C 盤,D 盤...)及分區來實現文件管理,然后之下才是目錄,目錄就顯得不是那么重要,除系統文件之外的用戶文件放在任何地方任何目錄也是沒有多大關系。所以通常 Windows 在使用一段時間后,磁盤上面的文件目錄會顯得雜亂無章(少數善于整理的用戶除外吧)。然而 UNIX/Linux 恰好相反,UNIX 是以目錄為主的,Linux 也繼承了這一優良特性。 Linux 是以樹形目錄結構的形式來構建整個系統的,可以理解為樹形目錄是一個用戶可操作系統的骨架。雖然本質上無論是目錄結構還是操作系統內核都是存儲在磁盤上的,但從邏輯上來說 Linux 的磁盤是“掛在”(掛載在)目錄上的,每一個目錄不僅能使用本地磁盤分區的文件系統,也可以使用網絡上的文件系統。舉例來說,可以利用網絡文件系統(Network File System,NFS)服務器載入某特定目錄等。
2.1 FHS標準
Linux 的目錄結構說復雜很復雜,說簡單也很簡單。復雜在于,因為系統的正常運行是以目錄結構為基礎的,對于初學者來說里面大部分目錄都不知道其作用,重要與否,特別對于那些曾經的重度 Windows 用戶,他們會糾結很長時間,關于我安裝的軟件在哪里這類問題。說它簡單是因為,其中大部分目錄結構是規定好了的(FHS 標準),是死的,當你掌握后,你在里面的一切操作都會變得井然有序。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統層次結構標準),多數 Linux 版本采用這種文件組織形式,FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。
FHS 定義了兩層規范,第一層是,?/?下面的各個目錄應該要放什么文件數據,例如?/etc?應該放置設置文件,/bin?與?/sbin?則應該放置可執行文件等等。
第二層則是針對?/usr?及?/var?這兩個目錄的子目錄來定義。例如?/var/log?放置系統日志文件,/usr/share?放置共享數據等等。
?
如果你覺得看這個不明白,那么可以試試最真實最直觀的方式,執行如下命令:
tree /如果提示" command not found ",就先安裝:
# 因為我們的環境的原因,每次新啟動實驗會清除系統恢復到初始狀態,所以需要手動更新軟件包索引,以便我們安裝時能找到相應軟件包的源。sudo apt-get updatesudo apt-get install tree關于上面提到的 FHS,這里還有個很重要的內容你一定要明白,FHS 是根據以往無數 Linux 用戶和開發者的經驗總結出來的,并且會維持更新,FHS 依據文件系統使用的頻繁與否以及是否允許用戶隨意改動(注意,不是不能,學習過程中,不要怕這些),將目錄定義為四種交互作用的形態,如下表所示:
2.2 目錄路徑
路徑
有人可能不明白這路徑是指什么,有什么用。顧名思義,路徑就是你要去哪兒的路線嘛。如果你想進入某個具體的目錄或者想獲得某個目錄的文件(目錄本身也是文件)那就得用路徑來找到了。
使用?cd?命令可以切換目錄,在 Linux 里面使用?.?表示當前目錄,..?表示上一級目錄(注意,我們上一節介紹過的,以?.?開頭的文件都是隱藏文件,所以這兩個目錄必然也是隱藏的,你可以使用?ls -a?命令查看隱藏文件),-?表示上一次所在目錄,~?通常表示當前用戶的?home?目錄。使用?pwd?命令可以獲取當前所在路徑(絕對路徑)。
進入上一級目錄:
cd ..進入你的?home?目錄:
cd ~絕對路徑
關于絕對路徑,簡單地說就是以根" / "目錄為起點的完整路徑,以你所要到的目錄為終點,表現形式如:?/usr/local/bin,表示根目錄下的?usr?目錄中的?local?目錄中的?bin?目錄。
相對路徑
相對路徑,也就是相對于你當前的目錄的路徑,相對路徑是以當前目錄?.?為起點,以你所要到的目錄為終點,表現形式如:?usr/local/bin?(這里假設你當前目錄為根目錄)。你可能注意到,我們表示相對路徑實際并沒有加上表示當前目錄的那個?.?,而是直接以目錄名開頭,因為這個?usr?目錄為?/?目錄下的子目錄,是可以省略這個?.?的(以后會講到一個類似不能省略的情況);如果是當前目錄的上一級目錄,則需要使用?..?,比如你當前目錄為?/home/shiyanlou?目錄下,根目錄就應該表示為?../../?,表示上一級目錄(?home?目錄)的上一級目錄(?/?目錄)。
下面我們以你的?home?目錄為起點,分別以絕對路徑和相對路徑的方式進入?/usr/local/bin?目錄:
# 絕對路徑 cd /usr/local/bin # 相對路徑 cd ../../usr/local/bin提示:在進行目錄切換的過程中請多使用?Tab?鍵自動補全,可避免輸入錯誤,連續按兩次?Tab?可以顯示全部候選結果。
3.Linux文件的基本操作
這一節我們主要講解文件常用的基本操作,包括:新建、復制、刪除、移動文件與文件重命名、查看文件、查看文件類型、以及編輯文件。
3.1新建
新建空白文件
使用?touch?命令創建空白文件,關于?touch?命令,其主要作用是來更改已有文件的時間戳的(比如,最近訪問時間,最近修改時間),但其在不加任何參數的情況下,只指定一個文件名,則可以創建一個指定文件名的空白文件(不會覆蓋已有同名文件),當然你也可以同時指定該文件的時間戳,更多關于?touch?命令的用法,會在下一講文件搜索中涉及。
創建名為 test 的空白文件,因為在其它目錄沒有權限,所以需要先?cd ~?切換回 shiyanlou 用戶的 Home 目錄:
cd ~ touch test新建目錄
使用?mkdir(make directories)命令可以創建一個空目錄,也可同時指定創建目錄的權限屬性。
創建名為“ mydir ”的空目錄:
mkdir mydir使用?-p?參數,同時創建父目錄(如果不存在該父目錄),如下我們同時創建一個多級目錄(這在安裝軟件、配置安裝路徑時非常有用):
mkdir -p father/son/grandson還有一點需要注意的是,若當前目錄已經創建了一個 test 文件,再使用?mkdir test?新建同名的文件夾,系統會報錯文件已存在。這符合 Linux 一切皆文件的理念。
若當前目錄存在一個 test 文件夾,則?touch?命令,則會更改該文件夾的時間戳而不是新建文件。
3.2復制
復制文件
使用?cp?命令(copy)復制一個文件到指定目錄。
將之前創建的?test?文件復制到?/home/shiyanlou/father/son/grandson?目錄中:
cp test father/son/grandson是不是很方便啊,如果在圖形界面則需要先在源目錄復制文件,再進到目的目錄粘貼文件,而命令行操作步驟就一步到位了嘛。
復制目錄
如果直接使用?cp?命令復制一個目錄的話,會出現如下錯誤:
要成功復制目錄需要加上?-r?或者?-R?參數,表示遞歸復制,就是說有點“株連九族”的意思:
cd /home/shiyanlou mkdir family cp -r father family?3.3刪除
刪除文件
使用?rm(remove files or directories)命令刪除一個文件:
rm test有時候你會遇到想要刪除一些為只讀權限的文件,直接使用?rm?刪除會顯示一個提示,如下:
你如果想忽略這提示,直接刪除文件,可以使用?-f?參數強制刪除:
rm -f test刪除目錄
跟復制目錄一樣,要刪除一個目錄,也需要加上?-r?或?-R?參數:
rm -r family遇到權限不足刪除不了的目錄也可以和刪除文件一樣加上?-f?參數:
rm -rf family3.4移動文件與文件重命名
移動文件
使用?mv(move or rename files)命令移動文件(剪切)。命令格式是?mv 源目錄文件 目的目錄。
例如將文件“ file1 ”移動到?Documents?目錄:
mkdir Documents touch file1 mv file1 Documents重命名文件
mv?命令除了能移動文件外,還能給文件重命名。命令格式為?mv 舊的文件名 新的文件名。
例如將文件“ file1 ”重命名為“ myfile ”:
mv file1 myfile移動文件
使用?mv(move or rename files)命令移動文件(剪切)。命令格式是?mv 源目錄文件 目的目錄。
例如將文件“ file1 ”移動到?Documents?目錄:
mkdir Documents touch file1 mv file1 Documents重命名文件
mv?命令除了能移動文件外,還能給文件重命名。命令格式為?mv 舊的文件名 新的文件名。
例如將文件“ file1 ”重命名為“ myfile ”:
mv file1 myfile批量重命名
要實現批量重命名,mv?命令就有點力不從心了,我們可以使用一個看起來更專業的命令?rename?來實現。不過它要用 perl 正則表達式來作為參數,關于正則表達式我們要在后面才會介紹到,這里只做演示,你只要記得這個?rename?命令可以批量重命名就好了,以后再重新學習也不會有任何問題,畢竟你已經掌握了一個更常用的?mv?命令。
rename?命令并不是內置命令,若提示無該命令可以使用?sudo apt-get install rename?命令自行安裝。
cd /home/shiyanlou/# 使用通配符批量創建 5 個文件: touch file{1..5}.txt# 批量將這 5 個后綴為 .txt 的文本文件重命名為以 .c 為后綴的文件: rename 's/\.txt/\.c/' *.txt# 批量將這 5 個文件,文件名和后綴改為大寫: rename 'y/a-z/A-Z/' *.c簡單解釋一下上面的命令,rename?是先使用第二個參數的通配符匹配所有后綴為?.txt?的文件,然后使用第一個參數提供的正則表達式將匹配的這些文件的?.txt?后綴替換為?.c,這一點在我們后面學習了?sed?命令后,相信你會更好地理解。
有的同學可能在輸入時出現命令未閉合的狀態,命令行會出現?quote>?開頭的提示符。這是因為上述命令中的?'?未輸入完成,這時按下 ctrl+c 即可退出該模式。還有就是注意?'?必須為英文符號(半角),若輸入的是中文符號(全角)也會報錯。
3.5查看文件
使用?cat,tac?和?nl?命令查看文件
前兩個命令都是用來打印文件內容到標準輸出(終端),其中?cat?為正序顯示,tac?為倒序顯示。
標準輸入輸出:當我們執行一個 shell 命令行時通常會自動打開三個標準文件,即標準輸入文件(stdin),默認對應終端的鍵盤、標準輸出文件(stdout)和標準錯誤輸出文件(stderr),后兩個文件都對應被重定向到終端的屏幕,以便我們能直接看到輸出內容。進程將從標準輸入文件中得到輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。
比如我們要查看之前從?/etc?目錄下拷貝來的?passwd?文件:
cd /home/shiyanlou cp /etc/passwd passwd cat passwd可以加上?-n?參數顯示行號:
cat -n passwdnl?命令,添加行號并打印,這是個比?cat -n?更專業的行號打印命令。
這里簡單列舉它的常用的幾個參數:
-b : 指定添加行號的方式,主要有兩種:-b a:表示無論是否為空行,同樣列出行號("cat -n"就是這種方式)-b t:只列出非空行的編號并列出(默認為這種方式) -n : 設置行號的樣式,主要有三種:-n ln:在行號字段最左端顯示-n rn:在行號字段最右邊顯示,且不加 0-n rz:在行號字段最右邊顯示,且加 0 -w : 行號字段占用的位數(默認為 6 位)你會發現使用這幾個命令,默認的終端窗口大小,一屏顯示不完文本的內容,得用鼠標拖動滾動條或者滑動滾輪才能繼續往下翻頁,要是可以直接使用鍵盤操作翻頁就好了,那么你就可以使用下面要介紹的命令。
使用?more?和?less?命令分頁查看文件
如果說上面的?cat?是用來快速查看一個文件的內容的,那么這個?more?和?less?就是天生用來"閱讀"一個文件的內容的,比如說 man 手冊內部就是使用的?less?來顯示內容。其中?more?命令比較簡單,只能向一個方向滾動,而?less?為基于?more?和?vi?(一個強大的編輯器,我們有單獨的課程來讓你學習)開發,功能更強大。less?的使用基本和?more?一致,具體使用請查看 man 手冊,這里只介紹?more?命令的使用。
使用?more?命令打開?passwd?文件:
more passwd打開后默認只顯示一屏內容,終端底部顯示當前閱讀的進度。可以使用?Enter?鍵向下滾動一行,使用?Space?鍵向下滾動一屏,按下?h?顯示幫助,q?退出。
3.6查看文件類型
我們可以使用?file?命令查看文件的類型:
file /bin/ls說明這是一個可執行文件,運行在 64 位平臺,并使用了動態鏈接文件(共享庫)。
與 Windows 不同的是,如果你新建了一個 shiyanlou.txt 文件,Windows 會自動把它識別為文本文件,而?file?命令會識別為一個空文件。這個前面我提到過,在 Linux 中文件的類型不是根據文件后綴來判斷的。當你在文件里輸入內容后才會顯示文件類型。
總結
以上是生活随笔為你收集整理的蓝桥云课linux入门4:目录结构及文件基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为云HECS,集智纳简优化配置,畅享一
- 下一篇: P2P流氓下载器绑定安装的软件卸载不了怎