Linux檔案系統、目錄
本節主要內容
- 如何獲取幫助文件
- Linux檔案系統簡介
- 目錄操作
1. 如何獲取幫助文件
在實際工作過程當中,經常會忘記命令的使用方式,例如ls命令後面可以跟哪些引數,此時可以使用man命令來檢視其使用方式,例如
//man命令獲取命令幫助手冊
xtwy@ubuntu:~$ man ls
可以使用鍵盤上的
來顯示下一行或上一行命令,也可以使用
進行上一頁或下一頁(屏)命令的檢視,另外
空格鍵也可以用來顯示下一屏的命令。想退出命令檢視,直接按q鍵退出即可,也可以h鍵顯示less命令列表(man命令通過less命令輸出結果)
2. Linux檔案系統簡介
(一) 檔案和目錄
本節從使用者的角度來介紹Linux檔案系統,Linux根據檔案形式將檔案分為目錄和普通檔案,如下圖:
目錄或檔案的名稱長度不超過255個字元,檔案或目錄名可由下列字元構成:
Uppercase letters (A–Z)
Lowercase letters (a–z)
Numbers (0–9)
Underscore ( _ )
Period(.)
Comma(,)
檔案或目錄名區分大小寫,屬於不同的檔案或目錄
(二) 副檔名與不可見檔名
與Window作業系統有很大不同的是,Linux檔案對副檔名沒有強制要求,例如假設編寫了一個c語言原始檔,你可以將其命名為complier.c,也可以是其它如complier、complier.ccc等檔名,但不推薦這麼做,因為如果能將副檔名與特定的檔案進行關聯的話,有利於理解檔案內容,目前約定成俗的linux副檔名如下表:
帶副檔名的檔名 副檔名的含義
max.c C語言原始檔
max.o 編碼後的目的碼檔案
max max.c對應的可執行檔案
memo.txt 文字檔案
memo.pdf pdf檔案,必須在GUI介面上使用xpdf或kpdf才能檢視
memo.ps PostScript檔案,必須在GUI介面上使用ghostscript或kpdf才能檢視
memo.z 經壓縮程式壓縮後的檔案,可使用uncompress或gunzip解壓
memo.gz 經gzip壓縮程式壓縮後的檔案,可使用gunzip解壓
memo.tar.gz或memo.tgz 經gzip壓縮後的tar歸檔檔案,可使用gunzip解壓
memo.bz2 經bzip2壓縮後的檔案,可使用bunzip2解壓
memo.html html檔案,使用GUI環境的firefox檢視
memo.jpg等 影象檔案,使用GUI環境的照片檢視器開啟
在前一講中我們看到,linux中還存在大量的隱藏檔案,採用ls -a 命令可以顯示,想定義隱藏檔案,只要檔名或目錄以.開始即可
(三) 絕對路徑與相對路徑
在Linux中絕對路徑與相對路徑是一個很重要的概念,下圖給出了什麼是絕對路徑
所有以根目錄”/”作為開始的都是絕對路徑,其它的均為相對路徑
//絕對路徑訪問
xtwy@ubuntu:~/Public$ cd /home/
xtwy@ubuntu:/home$ ls
xtwy
//相對路徑訪問
xtwy@ubuntu:/home$ cd xtwy/
3. 目錄操作
(一) 建立目錄 mkdir
為演示方便,使用下列目錄結構進行演示:
1 絕對路徑建立方式
//使用絕對路徑建立
root@ubuntu:/home# mkdir /home/max
root@ubuntu:/home# ls
max xtwy
root@ubuntu:/home#
2 相對路徑建立方式
//使用相對路徑進行建立
root@ubuntu:/home# mkdir max/names
root@ubuntu:/home# mkdir max/temp
root@ubuntu:/home# mkdir max/literature
root@ubuntu:/home# cd max
root@ubuntu:/home/max# mkdir demo
root@ubuntu:/home/max# ls
demo literature names temp
有時不想層層目錄建立,此時可以在mkdir 後面加上引數 -p(parents),將父子目錄一起建立
root@ubuntu:/home/max# mkdir -p literature/promo
root@ubuntu:/home/max# ls
demo literature names temp
root@ubuntu:/home/max# cd literature/
root@ubuntu:/home/max/literature# ls
promo
(二) 更改目錄 cd
工作目錄與主目錄的區別
使用者每次登入後的預設目錄就是主目錄,與系統會話期間保持不變,主目錄用~表示
xtwy@ubuntu:/root$ cd ~
xtwy@ubuntu:~$ pwd
/home/xtwy
工作目錄又稱當前目錄,cd命令執行完成後的目錄就是工作目錄,它是可以隨意改變的。
//.表示當前目錄即工作目錄
//..表示當前目錄的上一級目錄
xtwy@ubuntu:~$ cd .
xtwy@ubuntu:~$ cd ..
xtwy@ubuntu:/home$
(三) 刪除目錄 rmdir
rmdir是remove directory的簡稱,用於刪除目錄,它先刪除目錄下的所有檔案,然後再刪除該目錄,但當目錄下還有子目錄時,該命令不能執行,需要使用rm命令,例如
//刪除temp目錄,先刪除目錄下的檔案
//再刪除temp目錄自身
root@ubuntu:/home/max# rmdir temp/
root@ubuntu:/home/max# rmdir literature/
rmdir: failed to remove `literature/': Directory not empty
root@ubuntu:/home/max# rm -r literature/
root@ubuntu:/home/max# ls
demo names
其中rm -r中的r指的是遞迴的刪除目錄及目錄中的檔案,因此它具有很強的破壞力,要謹慎使用。
(四) 移動目錄 mv
//將目錄demo移到/home/xtwy/目錄下
root@ubuntu:/home/max# mv demo/ /home/xtwy/
root@ubuntu:/home/max# cd /home/xtwy/
root@ubuntu:/home/xtwy# ls
demo Documents examples.desktop Pictures Templates
Desktop Downloads Music Public Videos
root@ubuntu:/home/xtwy# rmdir demo
//原來目錄的demo目錄已經不存在了
root@ubuntu:/home/xtwy# cd /home/max/
root@ubuntu:/home/max# ls
names
(五) 複製目錄 cp
前面用mv命令移動目錄,有時候需要對目錄進行拷貝,使用方式如下:
//先建立一個演示目錄,用-p,父目錄如果不存在將會被建立
root@ubuntu:/home/max# mkdir -p literature/demo
//由於literature還包括子目錄,此時拷貝不成功
root@ubuntu:/home/max# cp literature/ /home/xtwy/
cp: omitting directory `literature/'
//如果包括子目錄的話,則加上-r引數,表示遞迴地拷貝
root@ubuntu:/home/max# cp -r literature/ /home/xtwy/
root@ubuntu:/home/max# cd /homt
bash: cd: /homt: No such file or directory
root@ubuntu:/home/max# cd /home/xtwy/
root@ubuntu:/home/xtwy# ls
Desktop Downloads literature Pictures Templates
Documents examples.desktop Music Public Videos
root@ubuntu:/home/xtwy# cd literature/
root@ubuntu:/home/xtwy/literature# ls
demo
4. 檔案操作
(一) 建立檔案
直接通過命令列的方式建立檔案的方式有多種,常用方式如下:
//通過echo命令,將輸出的命令重定向到檔案
root@ubuntu:/home/xtwy# echo "hello linux" > hello.txt
root@ubuntu:/home/xtwy# ls
Desktop Downloads hello.txt Music Public Videos
Documents examples.desktop literature Pictures Templates
//touch命令,如何檔案不存在,會建立檔案
root@ubuntu:/home/xtwy# touch hell1.txt
root@ubuntu:/home/xtwy# ls
Desktop Downloads hell1.txt literature Pictures Templates
Documents examples.desktop hello.txt Music Public Videos
(二) 顯示檔案內容
cate命令可以顯示檔案內容,它的全稱是catenate,意思是將單詞一個接一個地連線起來
root@ubuntu:/home/xtwy# cat hello.txt
hello linux
cat命令會將檔案中所有的內容全部一次性顯示出現,例如
root@ubuntu:/home/xtwy# cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
......
有時候我們希望能夠分屏檢視檔案內容,此時可以使用less或more分頁程式,less和more的使用方式相差不大,通過空格鍵顯示下一屏資訊,它們之間的差別在於less在檔案末尾會顯示END訊息,而more直接返回shell終端,例如:
less命令
more命令
(三) cp命令複製檔案
root@ubuntu:/home/xtwy# ls
Desktop Downloads hell1.txt literature Pictures Templates
Documents examples.desktop hello.txt Music Public Videos
//複製檔案
root@ubuntu:/home/xtwy# cp hell1.txt literature/demo
root@ubuntu:/home/xtwy# cd literature/demo
//cd -返回上一次執行的工作目錄
root@ubuntu:/home/xtwy/literature/demo# cd -
/home/xtwy
需要注意的是cp命令在複製時,如果目標目錄中已存在該檔案,系統不會給出警告,而是直接覆蓋,因此它可能存在銷燬檔案的風險,為解決這個問題可以使用-i引數讓系統給出警告,例如:
root@ubuntu:/home/xtwy# cp -i hell1.txt literature/demo
cp: overwrite `literature/demo/hell1.txt'?
(三) mv命令移動或重新命名檔案
//在同一目錄時,相當於檔案重新命名,執行完成後hell1.txt不存在
root@ubuntu:/home/xtwy# mv hell1.txt hell2.txt
root@ubuntu:/home/xtwy# ls
Desktop Downloads hell2.txt literature Pictures Templates
Documents examples.desktop hello.txt Music Public Videos
//移動hell2.txt到literature/demo
root@ubuntu:/home/xtwy# mv hell2.txt literature/demo
root@ubuntu:/home/xtwy# cd literature/demo/
root@ubuntu:/home/xtwy/literature/demo# ls
hell1.txt hell2.txt
root@ubuntu:/home/xtwy/literature/demo# cd -
/home/xtwy
//源目錄hell2.txt已不存在
root@ubuntu:/home/xtwy# ls
Desktop Downloads hello.txt Music Public Videos
Documents examples.desktop literature Pictures Templates
(四)顯示檔案頭部或尾部
顯示檔案頭部內容用head命令,尾部用tail命令,預設顯示行數為10
root@ubuntu:/home/xtwy# head ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace
root@ubuntu:/home/xtwy# tail ~/.bashrc
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
# . /etc/bash_completion
#fi
head及tail的預設行數是可以修改的,例如:
//僅顯示前兩行
root@ubuntu:/home/xtwy# head -2 ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
tail命令在檢視日誌檔案內容增長時可能經常會使用,例如在hadoop啟動之後,會產生許多日誌,但出現問題時,可以採用tail命令動態地監測日誌檔案內容的增長,檢視問題出在哪個地方。
//初始顯示情況
root@ubuntu:/home/xtwy# tail -f hello.txt
hello linux
//向檔案中追加內容
root@ubuntu:/home/xtwy# echo "hello linux linux" >> hello.txt
//追加後的輸出情況
root@ubuntu:/home/xtwy# tail -f hello.txt
hello linux
hello linux linux
(五)其它常見檔案操作命令
下面的命令都不會改變檔案內容
root@ubuntu:/home/xtwy# cp hello.txt hello1.txt
root@ubuntu:/home/xtwy# ls
Desktop Downloads hello1.txt literature Pictures Templates
Documents examples.desktop hello.txt Music Public Videos
//根據檔案內容排序
root@ubuntu:/home/xtwy# sort hello1.txt
hello linux
hello linux linux
//逆序輸出
root@ubuntu:/home/xtwy# sort -r hello1.txt
hello linux linux
hello linux
//diff進行內容比較
root@ubuntu:/home/xtwy# diff hello1.txt hello.txt
//向檔案中追加內容
root@ubuntu:/home/xtwy# echo "hello linux linux" >> hello.txt
//內容比較
root@ubuntu:/home/xtwy# diff hello1.txt hello.txt
2a3
> hello linux linux
//格式化輸出
//-u引數將檔案分成多塊
//比較的兩個檔案分別用-、+表示
//本例中 -表示hello1.txt,+表示hello.txt
root@ubuntu:/home/xtwy# diff -u hello1.txt hello.txt
--- hello1.txt 2015-08-22 17:28:44.071202558 -0700
+++ hello.txt 2015-08-22 17:29:49.131181281 -0700
//@@xxx@@用於標識行起始編號、行數
//-1,2表示 hello1.txt檔案起始編號為1,行數為2
//+1,3表示 hello.txt檔案起始編號為1,行數為3
@@ -1,2 +1,3 @@
hello linux
hello linux linux
+hello linux linux
相關文章
- Linux檔案系統目錄結構Linux
- Linux系統的目錄及重要檔案Linux
- linux檔案系統的目錄結構筆記Linux筆記
- 獲取Linux系統中目錄檔案大小的方法Linux
- Linux 檔案與目錄Linux
- Linux檔案和目錄管理Linux
- Linux檔案及目錄管理Linux
- Linux系統下如何修改檔案或目錄的許可權?Linux
- 使用 SSHFS 掛載遠端的 Linux 檔案系統及目錄Linux
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- i.MX6ULL終結者Linux檔案系統的構建根檔案系統目錄介紹Linux
- 列出並排序檔案系統根目錄(/)下各個目錄的大小排序
- 比起 Windows,怎樣解讀 Linux 的檔案系統與目錄結構?WindowsLinux
- linux 刪除檔案或目錄——rmLinux
- linux目錄及檔案命令學習Linux
- adb命令管理Linux 檔案和目錄Linux
- Linux rm(刪除檔案/目錄) 命令Linux
- Linux常見命令-目錄檔案命令Linux
- Linux 基礎-檔案及目錄管理Linux
- 在 Linux 中如何歸檔檔案和目錄Linux
- 使用SSHFS檔案系統遠端掛載目錄
- CentOS系統下/tmp目錄臨時檔案清理CentOS
- Linux下如何對目錄中的檔案進行統計Linux
- Linux系統目錄實時同步Linux
- 關於檔案系統在建立目錄檔案和普通檔案時的區別
- Linux用inotify監聽檔案和目錄Linux
- Linux排查磁碟大檔案或大目錄Linux
- Linux的檔案屬性和目錄配置Linux
- 筆記:Linux命令(目錄和檔案管理)筆記Linux
- Linux中檔案與目錄的區別Linux
- Linux rm命令:刪除檔案或目錄Linux
- Macbook磁碟系統結構/檔案/目錄介紹分析Mac
- Linux檔案系統Linux
- [Linux]檔案系統Linux
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- EXT4檔案系統學習(15)VFS之VFS 檔案/目錄物件物件
- Linux 檔案與目錄管理常用命令 記錄Linux