關於Linux 檔案系統中路徑的理解

來源:互聯網
上載者:User

作者:北南南北
來自:LinuxSir.Org
摘要:在Linux作業系統的檔案管理中,命令列模式(在控制台或終端下)的檔案或目錄管理,要涉及路徑這一概念,這是Linux命令列操作的最基礎的基礎。如果我們瞭解了路徑的概念,就可以隨心所欲的進入任何目錄,進行我們要做的工作。


目錄

1、Linux檔案系統是從/開始的;
2、理解路徑概念的目的;
3、路徑的構成要素;
4、路徑的分類;

 

4.1 絕對路徑;
4.2 相對路徑;

5、在路徑中一些特殊符號的說明;

5.1 符號.應用樣本;
5.2 符號..應用樣本;
5.3 符號~和~USER樣本;

6、切換使用者目前的目錄的指令 cd ;
7、判斷使用者當前所處的工作目錄的指令 pwd ;
8、關於使用者環境變數PATH的設定
9、有關目錄的操作指令;
10、關於本文;
11、後記;
12、參考文檔;
13、相關文檔;


++++++++++++++++++++++++++++++++++++++
本文
++++++++++++++++++++++++++++++++++++++


1、Linux檔案系統是從/開始的;

在Linux作業系統的檔案管理中,命令列模式(在控制台或終端下)的檔案或目錄管理,要涉及路徑這一概念,這是Linux命令列操作的最基礎的基礎。如果我們瞭解了路徑的概念,就可以隨心所欲的進入任何目錄,進行我們想的工作。

Linux 檔案系統,是一個呈樹形結構,是從/做為入口,/(也被稱為根目錄)下有子目錄,比如etc、usr、lib等,在每個子目錄下又有檔案或子目錄,這樣就形成了一個樹形結構,這種樹形結構比較單一。而Windows檔案系統呢?它引入了C盤、D盤類似的磁碟概念,使得習慣Windows操作的使用者在轉向Linux時,會發現Linux根本就有C盤、D盤的概念,有時甚至不知所措。


2、理解路徑概念的目的;

引入路徑概念目的最終是找到我們所需要的目錄或檔案。比如我們想要編輯 file.txt 檔案,我們首先要知道他存放在哪裡,也就是說我們要指出他所在的位置,這時就要用到路徑了。


3、路徑的構成要素;

路徑是由目錄或目錄和檔案名稱構成的。比如/etc/X11 就是一個路徑,而/etc/X11/xorg.conf也是一個路徑。也就是說路徑可以是目錄的組合,分級深入進去,也可以是文錄+檔案構成。比如我們想用vi編輯xorg.conf檔案,在命令列下輸入 vi /etc/X11/xorg.conf ,如果我們想進入/etc/X11目錄,就可以通過cd /etc/X11來實現。


4、路徑的分類;

路徑分為絕對路徑和相對路徑;


4.1 絕對路徑;

在Linux中,絕對路徑是從/(也被稱為根目錄)開始的,比如/usr、/etc/X11。如果一個路徑是從/開始的,它一定是絕對路徑,這樣就好理解了;

[root@localhost ~]# pwd  註:判斷使用者當前所處的位置,也就是說他到底位於哪?
/root    註:使用者當前位於/root;

[root@localhost ~]# cd /usr/share/doc/  註:我們以絕對路徑方式進入/usr/share/doc目錄下;
[root@localhost doc]# pwd   註:判斷使用者當前所處的位置
/usr/share/doc   註:使用者位於/usr/share/doc,看來已經達到我們的目的了;

 


4.2 相對路徑;

相對路徑是以 . 或 .. 開始的,.表示使用者當前操作所處的位置,而.. 表示上級目錄;在路徑中,.表示使用者當前所處的目錄,而..上級目錄,要把.和..當做目錄來看。

[root@localhost ~]# pwd  註:通過pwd來判斷目前使用者所在的位置;
/root    註:得出目錄處於/root目錄中;

[root@localhost ~]# cd .  註:我們進入.
[root@localhost ~]# pwd  註:判斷目前使用者所處的位置;
/root    註:得出在/root   目錄中 ;

[root@localhost ~]# cd ..  註:我們切入/root的上級目錄
[root@localhost /]# pwd  註:判斷目前使用者所處的位置。
/   註:使用者當前位於/(根目錄)中;

 


5、在路徑中一些特殊符號的說明;

這些符號在相對路徑中應用的,這些符號能為我們帶來方便,所以有必要說說;

.   表示使用者所處的目前的目錄;
..  表示上級目錄
~  表示目前使用者自己的家目錄
~USER   表示使用者名稱為USER的家目錄,這裡的USER是在/etc/passwd中存在的使用者名稱;

 


5.1 符號.應用樣本;

通過下面的例子,讓我們增強.所表示的意義;

[root@localhost ~]# pwd 註:判斷使用者當前所處的目錄;
/root  註:位於/root目錄;

[root@localhost ~]# cd .  註:進入.目錄,這裡的.就是使用者當前所處的位置;
[root@localhost ~]# pwd  註:在哪呢?
/root  註:在/root中。

 

理解./的意義;

[root@localhost ~]# pwd   註:判斷使用者當前所處的目錄;
/root 註:位於/root目錄;

[root@localhost ~]# ls  註:顯示使用者所處/root目錄的檔案及子目錄;也可以用ls .

[root@localhost ~]# ls .
mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

[root@localhost ~]# ls ./tmp/  查看使用者所處目前的目錄下的tmp目錄的內容
kernelBak  youdir

[root@localhost ~]# ls tmp/
kernelBak  youdir
[root@localhost ~]#

 

在有些文檔中,我們看到類似./filename 來運行一個指令碼或程式的例子。其實它就是在使用者目前的目錄下啟動並執行;請看下面的樣本;

[root@localhost ~]# pwd  註:判斷使用者當前所處的目錄;
/root  註:位於/root目錄;
[root@localhost ~]# touch lsfile.sh   註:建立一個檔案名稱為lsfile.sh的檔案;
[root@localhost ~]# chmod 755 lsfile.sh  註:修改許可權讓其可執行;
[root@localhost ~]# echo "ls -la"> lsfile.sh  註:向lsfile.sh檔案中加入ls -la 一句指令
[root@localhost ~]# more lsfile.sh  註:用more 工具來查看lsfile.sh 檔案的內容;
ls -la

[root@localhost ~]# ./lsfile.sh 註:運行lsfile.sh ,在這裡用的是相對路徑;
[root@localhost ~]# /root/lsfile.sh  註:這是絕對路徑運行lsfile.sh 指令碼;

 


5.2 符號..應用樣本;

[root@localhost ~]# pwd 註:判斷使用者當前所處的目錄;
/root
[root@localhost ~]# cd /etc/X11/  註:進入/目錄下的etc目錄下的X11目錄;
[root@localhost X11]# pwd 註:判斷使用者當前所處的目錄;
/etc/X11  註:看來使用者真的位於/etc/X11目錄了;
[root@localhost X11]# cd ..   註:退到上級目錄;
[root@localhost etc]# pwd  註:判斷使用者當前所處的目錄;
/etc
[root@localhost etc]# cd ../root/ 註:退到上級目錄,也就是退到/,然後再進入root目錄; 
[root@localhost ~]# pwd  判斷是不是進入/目錄下的root目錄?
/root  註:的確是實現了。

 


5.3 符號~和~USER樣本;

~表示當前操作使用者的家目錄,看下面的例子;

[root@localhost ~]# id  註:查看目前使用者的使用者資訊;我們用哪個使用者來操作命令的?
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)  註:看到了,是root使用者;

[root@localhost ~]# finger root 註:查看root使用者的資訊;
Login: root                                               Name: root
Directory: /root    註:這表示root使用者的家目錄位於/root目錄中                    Shell: /bin/bash   

 

[root@localhost ~]# pwd  註:判斷使用者所處的目錄;
/root  註:是/root目錄;

[root@localhost ~]# cd /etc/X11/  註:進入/etc/X11
[root@localhost X11]# pwd  註:判斷使用者所處的目錄;
/etc/X11 註:看來已經到了/etc/X11;

[root@localhost X11]# cd ~  註:我們返回root使用者的家目錄;
[root@localhost ~]# pwd
/root  註:是不是返回了??

 

~USER的樣本;

 

如果我們添加一個使用者時,系統會添加一條使用者紀錄到/etc/passwd檔案中,所以/etc/passwd 就是使用者的管理檔案;~USER中的USER是必須在/etc/passwd中“註冊“的使用者,這樣在~USER中的USER才是有效。怎麼“註冊“,當然是使用者管理工具來添加使用者了。關於使用者管理工具,請參考:《Linux 使用者管理工具介紹》;

為了說明~USER的應用,我們首先添加一個新使用者;

[root@localhost ~]# adduser linuxsirorg  註:添加linuxsirorg這個使用者;
[root@localhost ~]# passwd linuxsirorg 注;為linuxsirorg 設定密碼;
Changing password for user linuxsirorg.
New UNIX password: 註:添加linuxsirorg使用者密碼
Retype new UNIX password: 註:再輸入一次;
passwd: all authentication tokens updated successfully.注;添加使用者成功;

[root@localhost ~]# finger linuxsirorg  註:查看linuxsirorg使用者資訊;
Login: linuxsirorg                      Name: (null)
Directory: /home/linuxsirorg            Shell: /bin/bash

註:我們看到新添加的使用者家目錄在/home/linuxsirorg;

 

~USER的樣本;

比如我用root使用者操作,並且處於/root目錄中;我想進入linuxsirorg使用者的家目錄;

[root@localhost ~]# pwd
/root

[root@localhost ~]# cd ~linuxsirorg/  

註:進入linuxsirorg使用者的家目錄;其等效命令是cd /home/linuxsirorg;

[root@localhost linuxsirorg]# pwd  註:判斷使用者所處位置;
/home/linuxsirorg 

[root@localhost linuxsirorg]# cd ~root 註:等同於cd /root ,或等同行cd ~ ;表示返回root的家目錄;

 


6、切換使用者目前的目錄的指令 cd ;

使用者從一個目前的目錄時入另一個目錄的指令就是用cd ;我們在前面樣本中大量應用過,在這裡不再多說了;

用法:

#cd 路徑

 

舉例:

[root@localhost ~]# cd /usr/share/man/

 

更多的協助,請參考 man cd 或cd --help


7、判斷使用者當前所處的工作目錄的指令 pwd ;

pwd 指令用來顯示使用者當前所處的位置的,前面我們也說的很多。

樣本:

[root@localhost man]# pwd 注;判斷使用者當前所處的目錄;
/usr/share/man 註:位於/usr/share/man 中;

 


8、關於使用者環境變數PATH的設定;

在一般情況下,Linux檔案系統中bin或sbin目錄中的檔案都是可執行檔。有時我們為了方便不輸入路徑就能調用指令或工具,這時要就要設定使用者的環境變數PATH。

看下面的一例:

[root@localhost ~]# ls
adduml.sh  lsfile.sh  mkuml-2004.07.17  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

[root@localhost ~]# /bin/ls
adduml.sh  lsfile.sh  mkuml-2004.07.17  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

 

上面的例子,第一個指令就是直接運行了ls命令來顯示目前的目錄下的檔案和子目錄;第二個條/bin/ls 指令是用絕對路徑的ls來啟動並執行;這兩種方式啟動並執行結果看來是一樣的。

在論壇上,有些弟兄總是我已經安裝了某某軟體包,卻沒有某個指令。其實就是環境變數設定的事。如果您直接輸入某個指令不存在,解決辦法有兩個,一個方法是要指定用可執行檔的絕對路徑(也可以是相對路徑,怎麼方便怎麼用吧),另一個方法是設定使用者的環境變數。

我們可以用export PATH來設定環境變數。比如把下面一行加入到使用者家目錄下的.bashrc 或.profile檔案中;

export PATH=".:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin"

 

解釋:您可以找出Linux檔案系統中所有bin或sbin目錄的的絕對路徑,然後把它們用:號分割,比如上面所設定的。第一個.表示使用者當前所處的目錄;

添加好後,我們再運行一下source,也就是:

#source .bashrc

#source .profile

 

如果發現指令只有root許可權才運行,這時您要用到su; 如果您用的是普通使用者,可能無權查看一些檔案的目錄的內容,您也需要用到su來切換身份;請參考:《Linux 系統中的超級許可權的控制》


9、有關目錄的操作指令;

有關目錄的操作,比如建立、複製、移動、刪除,請參見:《Linux 檔案和目錄管理之顯示、刪除、複製、移動及改名》。也就是ls、mkdir、cp、mv、rmdir、rm 等工具的運用;


10、關於本文;

昨天我寫了 《Linux 檔案和目錄管理之顯示、刪除、複製、移動及改名》,今天寫了本文。任何在命令列下的操作,都不可能離開路徑,就此來說,本文也算是基礎篇。

在我認為寫文檔之前應該有一個假定,就是說鎖定讀者的技術水平。基於這一點,本文的“讀者”應該是對Linux不太瞭解。

歡迎指正,謝謝~~~


11、後記;

還是接著寫檔案管理方面的文檔。。。。 。。。。


12、參考文檔;

《Linux 系統中的超級許可權的控制》
《Linux 檔案和目錄管理之顯示、刪除、複製、移動及改名》


13、相關文檔;

《Linux 檔案和目錄管理之顯示、刪除、複製、移動及改名》
《Linux 檔案種類和檔案類型簡述》
《簡述Linux 檔案系統的目錄結構》
《Linux 檔案系統概述》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.