linux絕對路徑和相對路徑

2021-02-19 PHP自學中心


在Linux中什麼是一個文件的路徑呢,說白了就是這個文件存在的地方,例如 /root/.ssh/authorized_keys 這就是一個文件的路徑。如果您告訴系統這個文件的路徑,那麼系統就可以找到這個文件。在Linux的世界中,存在著絕對路徑和相對路徑。

絕對路徑:路徑的寫法一定由根目錄 『/』寫起,例如 /usr/local/mysql 這就是絕對路徑。

相對路徑:路徑的寫法不是由根目錄 『/』寫起,例如,首先用戶進入到/, 然後再進入到home ,命令為 cd /home 然後 cd test 此時用戶所在的路徑為 /home/test 第一個cd命令後跟 『/home』 第二個cd命令後跟 『test』, 並沒有斜槓,這個 『test』 是相對於 『/home』 目錄來講的,所以叫做相對路徑。

命令:cd

這個命令是用來變更用戶所在目錄的,後面如果什麼都不跟,就會直接到當前用戶的根目錄下,我們做實驗用的是 『root』 帳戶,所以運行 cd 後,會進入root帳戶的根目錄 『/root』. 後面跟目錄名,則會直接切換到指定目錄下:

[root@localhost ~]# cd /tmp/

[root@localhost tmp]# pwd

/tmp

[root@localhost tmp]# cd

[root@localhost ~]# pwd

/root

pwd 這個命令列印出當前所在目錄,cd 後面只能是目錄名,而不能是文件名,如果跟了文件名會報錯:

[root@localhost ~]# cd /etc/passwd

-bash: cd: /etc/passwd: 不是目錄

./ 表示當前目錄,../ 表示當前目錄的上一級目錄:

[root@localhost ~]# cd /usr/local/lib/

[root@localhost lib]# pwd

/usr/local/lib

[root@localhost lib]# cd ./

[root@localhost lib]# pwd

/usr/local/lib

[root@localhost lib]# cd ../

[root@localhost local]# pwd

/usr/local

上例中,首先進入到 /usr/local/lib/ 目錄下,然後再進入 ./ 其實還是進入到當前目錄下,用 pwd 查看當前目錄,並沒有發生變化,然後再進入 ../ 則是進入到了 /usr/local/ 目錄下,即 /usr/local/lib 目錄的上一級目錄。

命令:mkdir

用來創建目錄的,這個命令在上一章節中用到過。 『mkdir』 其實就是make directory的縮寫。其語法為 mkdir [-mp] [目錄名稱] ,其中-m, -p為其選項, 『-m』 這個選項用來指定要創建目錄的權限,不常用,不做重點解釋。 『-p』 這個選項很管用,先來做個試驗,您會一目了然的:

[root@localhost ~]# mkdir /tmp/test/123

mkdir: 無法創建目錄 '/tmp/test/123': 沒有那個文件或目錄

[root@localhost ~]# mkdir -p /tmp/test/123

[root@localhost ~]# ls /tmp/test

123

當我們想創建 /tmp/test/123 目錄,可是提示不能創建,原因是 /tmp/test 目錄不存在,您會說,這個Linux怎麼這樣傻,/tmp/test 目錄不存在就自動創建不就OK了嘛,的確Linux確實很傻,如果它發現要創建的目錄的上一級目錄不存在就會報錯。然而Linux並不是那麼傻,因為它也為我們想好了解決辦法,即 『-p』 選項,這個選項可以幫我們創建一大串級聯目錄,這個選項還有一個好處,那就是當您創建一個已經存在的目錄時,不會報錯:

[root@localhost ~]# ls -ld /tmp/test/123

drwxr-xr-x. 2 root root 4096 5月 9 19:10 /tmp/test/123

[root@localhost ~]# mkdir /tmp/test/123

mkdir: 無法創建目錄 '/tmp/test/123': 文件已存在

[root@localhost ~]# mkdir -p /tmp/test/123

[root@localhost ~]# ls -ld /tmp/test/123

drwxr-xr-x. 2 root root 4096 5月 9 19:10 /tmp/test/123

在上一章節裡,已經介紹過 ls 命令,但是並沒有向您介紹它的 『-d』 選項,這個選項是針對目錄的,通常都是和 『-l』 同時使用寫成 『-ld』. 它可以查看指定目錄的屬性,比如在本例中,它可以查看 『/tmp/test/123』 目錄的創建時間。 mkdir -p 後面跟一個已經存在的目錄名時,它不會做任何事情,只是不報錯而已。

命令:rmdir

用來刪除空目錄,後面可以是一個也可以是多少,多個的話用空格分隔。該命令很少使用,因為它只能刪除目錄,不能刪除文件,還有一個命令 rm 既可以刪除目錄又可以刪除文件,用的比較多。rmdir 有一個和mkdir一樣的選項 『-p』, 同樣可以級聯刪除一大串目錄,但是級聯的目錄中其中一個目錄裡還有目錄或者文件時就不好用了。

[root@localhost ~]# ls /tmp/test

123

[root@localhost ~]# rmdir /tmp/test/

rmdir: 刪除 '/tmp/test/' 失敗: 目錄非空

[root@localhost ~]# rmdir /tmp/test/123

[root@localhost ~]# ls /tmp/test

[root@localhost ~]#

所以,得出的結論是, 『rmdir』 只能刪除空目錄,即使加上 『-p』 選項也只能刪除一串的空目錄,可見這個命令有很大的局限性,偶爾用下還可以。

命令:rm

這個命令是最常用的, 『rm』 同樣也有很多選項。您可以通過 man rm 來獲得詳細幫助信息。在這裡只介紹最常用的兩個選項。

『-r』 : 刪除目錄用的選項,等同於rmdir.

[root@localhost ~]# mkdir -p /tmp/test/123

[root@localhost ~]# rm -r /tmp/test/123

rm:是否刪除目錄 '/tmp/test/123'? y

但是和rmdir不同的是,使用 rm -r 刪除目錄時,會問一下是否刪除,如果輸入 『y』 則會刪除,輸入 『n』 則不刪除。當然 rm -r 也不會向rmdir不能刪除非空目錄,它是可以刪除非空目錄的。

『-f』 : 表示強制刪除,不再提示是否要刪除,而是直接就刪除了,而後面跟一個不存在的文件或者目錄時,也不會報錯,如果不加 『-f』 選項會報錯。

[root@localhost ~]# rm /tmp/test/123/123

rm: 無法刪除 '/tmp/test/123/123': 沒有那個文件或目錄

[root@localhost ~]# rm -f /tmp/test/123/123

要刪除一個目錄時,即使加上 『-f』 選項也會報錯,所以刪除目錄一定要加 『-r』 選項。

[root@localhost ~]# rm -f /tmp/test/123

rm: 無法刪除 '/tmp/test/123': 是一個目錄

[root@localhost ~]# rm -rf /tmp/test/123

關於rm,使用最多便是 『-rf』 兩個選項合用了。不管刪除文件還是目錄都可以。但是方便的同時也要多注意,萬一您的手太快後邊跟了/那樣就會把您的系統文件全部刪除的,切記切記。


相關焦點

  • Linux絕對路徑和相對路徑詳解
    說明目錄或文件名位置的方法有兩種,分別使用絕對路徑和相對路徑。絕對路徑指的是從根目錄(/)開始寫起的文件或目錄名稱,而相對路徑則指的是相對於當前路徑的寫法。換句話說,絕對路徑必須以一個正斜線(/),也就是根目錄開始,到查找對象(目錄或文件)所必須經過的每個目錄的名字,它是文件位置的完整路標,因此,在任何情況下都可以使用絕對路徑找到所需的文件。
  • P02-絕對路徑和相對路徑
    本地文件讀寫依賴文件路徑,本節簡單介紹下相對路徑和絕對路徑,只局限在本地路徑,不涉及網絡路徑。
  • linux文件路徑怎麼區分絕對路徑和相對路徑
    一、介紹1,文件路徑什麼是文件的路徑?答:這個文件存放的地方,可以聯想為 文件的「家」。
  • HTML 相對路徑與絕對路徑
    文件路徑文件路徑就是文件在電腦(伺服器)中的位置,表示文件路徑的方式有兩種:相對路徑和絕對路徑。
  • code小知識~工作路徑、絕對路徑、相對路徑
    絕對路徑Windows下絕對路徑就是指包含從盤符開始的完整路徑,這個比較好理解,比如 E:\juzicode\com 就是一條絕對路徑。相對路徑相對路徑有一個「相對」的對象就是當前工作路徑,要搞清楚相對路徑先要明白當前工作路徑。如果在cmd命令行下調試,提示符「>」之前的這段字符就是當前工作路徑。當前工作路徑的基礎上,使用」..\\」(上一層目錄)組合出來的路徑就是一種相對路徑,直接看個例子,在路徑 E:\juzicode\com 下的文件夾結構是這樣的:
  • SEO術語之絕對路徑與相對路徑的區別
    最近有很多SEO新手同學問我,,絕對路徑與相對路徑的區別是什麼」,今天為大家詳細解答一番。  什麼是絕對路徑  絕對路徑的指定是從樹型目錄結構頂部的根目錄開始到某個目錄或文件的路徑,由一系列連續的目錄組成,中間用斜線分隔,直到要指定的目錄或文件,路徑中的最後一個名稱即為要指向的目錄或文件。
  • C\C++編程中:相對路徑+絕對路徑
    轉自:http://www.cnblogs.com/vranger/p/3820783.html電腦硬碟E盤下,建文件夾「test」,"test"下建立子文件夾「file」,"file"下建子文件夾「data」,電腦資源管理器顯示目錄  E:\test\file\data當前 路徑
  • 面對相對路徑和絕對路徑的分岔口,你選對了嗎?
    導論我們都知道,如果我們要找到需要的文件,就要知道文件的位置,表示文件位置的方式就是路徑。在程序中,只要涉及文件的地方(如圖片等)都會涉及到相對路徑和絕對路徑的問題。今天就為大家介紹一下相對路徑和絕對路徑的具體寫法及應用。
  • Q群問答‖Revit連結的相對路徑與絕對路徑的區別
    問:Revit連結的相對路徑與絕對路徑有什麼區別?答:我們著重來理解兩個詞,相對和絕對。
  • 【VIP會員精彩答疑】C 語言文件操作中的絕對路徑和相對路徑
    絕對路徑和相對路徑當我們向 fopen() 函數指明操作文件的具體位置時,有兩種表達方式:絕對路徑和相對路徑。1)絕對路徑絕對路徑是以文件的根目錄(拿 Window 系統來說,根目錄指的就是 C 盤、D 盤、E 盤等)為起點,一直到操作文件所在的目錄,然後在此基礎上添加操作文件的文件名。
  • 最近遇到的大坑系列-3-LINUX下PYTHON相對路徑使用
    import syssys.path.append('xxx')引入sys庫,然後在sys路徑裡面增加你需要增加庫的絕對路徑。方便,簡單,直接就能用,比你用各種 . 或者 .. 來做相對路徑再引入方便多了!針對程序中調用的config,或者log,或者其他文件。
  • 絕對相對路徑,百度網盤小案例
    絕對、相對路徑  在製作這個小案例之前,我們先來了解一下絕對地址和相對地址
  • 以html中插入圖片為例,聊一聊絕對路徑和相對路徑的區別
    src即source(來源)的縮寫,也就是圖片的url(或者說地址、路徑)。通過查閱文檔(例如w3school網站),可以看到這個屬性的語法。如下圖裡面有提到相對路徑和絕對路徑兩種說法。相信還是有一些朋友比如我第一次看到上圖的解釋是懵的。
  • 【避坑指北】Python3相對路徑導入方法
    我以為的相對路徑導入並不是真實的相對路徑導入。Python導入包或方法假設我們的工程項目是這樣的:.python和Java一樣都是用目錄管理包的,運行時會從當前路徑(main.py所在目錄)開始查找匹配的包名對應的c/hello.py文件,然後找到其中名為hi的方法,並調用。
  • RPO 相對路徑覆蓋攻擊
    主要是利用瀏覽器的一些特性和部分服務端的配置差異導致的漏洞,通過一些技巧,我們可以通過引入相對路徑來引入其他資源文件,以達到我們的目的。漏洞成因:RPO 依賴於瀏覽器和網絡伺服器的反應,基於伺服器的 Web 緩存技術和配置差異,以及伺服器和客戶端遊覽器的解析差異,利用前端代碼中加載的 css/js 的相對路徑來加載其他文件,最終瀏覽器將伺服器返回的不是 css/js 文件,而是當作 css/js 來解析,從而導致xss、信息洩露等漏洞產生。
  • 【技巧】SourceInsight如何設置為相對路徑
    今天主要跟大家分享一下如何把SI設置為相對路徑,方便大家轉移和打包代碼。(還有很多啦,這裡就不一一例舉了)     使用過SI的小夥伴都知道,SI建立工程非常簡單,基本上分為創建工程->添加文件->文件同步便可以進行代碼的閱讀和分析了,然而初次使用的小夥伴都會存在一個路徑的問題。
  • 知識詳解 | Linux動態庫文件搜索路徑
    首先讓我們一起來看下,一共有多少種方法來指定告訴linux共享庫連結器ld.so已經編譯好的庫libbase.so的位置呢?
  • Linux路徑名查找(上)
    路勁解析是根據路徑名(name string)得到對應的dentry對象,通過路逕行走的方式。本文就來介紹路逕行走。路逕行走解釋  路徑是由一個開始字符(根目錄、當前工作目錄或者fd指向的目錄),和一串其他的文件名組成的,path中的每一個文件名用/分割開。
  • Nodejs 基礎:路徑處理模塊 path 總結
    獲取路徑/文件名/擴展名獲取路徑:path.dirname(filepath)獲取文件名:path.basename(filepath)獲取擴展名:path.extname(filepath)獲取所在路徑例子如下:var path = require('path');var filepath = '/tmp/demo/
  • os.path -- 路徑操作(上篇)
    /test.py')) # 文件,相對路徑#Trueprint(os.path.isfile('/project/test/tes.py')) # 無效路徑,絕對路徑#Falseprint(os.path.isfile('.