1. 程式人生 > >Linux檔案屬性以及連結

Linux檔案屬性以及連結

今天說的這個命令,不是經常用,但是隻要配置環境,這個命令就離不開我們,尤其是同一環境不同版本同時存在的時候,今天我們就一起研究一下這個命令的具體使用方法和一些常見的使用場景。
ln是linux中又一個非常重要命令,它的功能是為某一個檔案在另外一個位置建立一個同步的連結.當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在 其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁碟空間。
1.命令格式:
ln [引數][原始檔或目錄][目標檔案或目錄]
2.命令功能:
Linux檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
軟連結:
1.軟連結,以路徑的形式存在。類似於Windows作業系統中的快捷方式
2.軟連結可以 跨檔案系統 ,硬連結不可以
3.軟連結可以對一個不存在的檔名進行連結
4.軟連結可以對目錄進行連結
硬連結:
1.硬連結,以檔案副本的形式存在。但不佔用實際空間。
2.不允許給目錄建立硬連結
3.硬連結只有在同一個檔案系統中才能建立

這裡有兩點要注意:

第一,ln命令會保持每一處連結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;
第二,ln的連結又分軟連結和硬連結兩種,軟連結就是ln –s 原始檔 目標檔案,它只會在你選定的位置上生成一個檔案的映象,不會佔用磁碟空間,硬連結 ln 原始檔 目標檔案,沒有引數-s, 它會在你選定的位置上生成一個和原始檔大小相同的檔案,無論是軟連結還是硬連結,檔案都保持同步變化。
ln指令用在連結檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則會把前面指定的所有檔案或目錄複製到該目錄中。若同時指定多個檔案或目錄,且最後的目的地並非是一個已存在的目錄,則會出現錯誤資訊。

3.命令引數:
必要引數:
-b 刪除,覆蓋以前建立的連結
-d 允許超級使用者製作目錄的硬連結
-f 強制執行
-i 互動模式,檔案存在則提示使用者是否覆蓋
-n 把符號連結視為一般目錄
-s 軟連結(符號連結)
-v 顯示詳細的處理過程

選擇引數:
-S “-S<字尾備份字串> ”或 “–suffix=<字尾備份字串>”
-V “-V<備份方式>”或“–version-control=<備份方式>”
–help 顯示幫助資訊
–version 顯示版本資訊

4.使用例項:
例項1:給檔案建立軟連結
命令:
ln -s log2013.log link2013
輸出:
[

[email protected] test]# ll
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log
[[email protected] test]# ln -s log2013.log link2013
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log

說明:
為log2013.log檔案建立軟連結link2013,如果log2013.log丟失,link2013將失效

例項2:給檔案建立硬連結
命令:
ln log2013.log ln2013
輸出:
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log
[[email protected] test]# ln log2013.log ln2013
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 2 root bin 61 11-13 06:03 ln2013
-rw-r–r– 2 root bin 61 11-13 06:03 log2013.log

說明:
為log2013.log建立硬連結ln2013,log2013.log與ln2013的各項屬性相同

[[email protected] ~]# ls -l

總計 152

-rw-r–r– 1 root root 2915 08-03 06:16 a

-rw——- 1 root root 1086 07-29 18:35 anaconda-ks.cfg

…………………………………………

第1行:總計(total)

Total後面的數字是指當前目錄下所有檔案所佔用的空間總和。使用ls –lh可檢視,也可使用ls –alh檢視

第1欄位: 檔案屬性欄位

-rw-r–r– 1 root root 762 07-29 18:19 exit

檔案屬性欄位總共有10個字母組成;第一個字元表示檔案型別。

-表示該檔案是一個普通檔案

d表示該檔案是一個目錄,字母”d”,是dirtectory(目錄)的縮寫

注意:目錄或者是特殊檔案,這個特殊檔案存放其他檔案或目錄的相關資訊

l表示該檔案是一個連結檔案。字母”l”是link(連結)的縮寫,類似於windows下的快捷方式

b的表示塊裝置檔案(block),一般置於/dev目錄下,裝置檔案是普通檔案和程式訪問硬體裝置的入口,是很特殊的檔案。沒有檔案大小,只有一個主裝置號和一個輔裝置號。一次傳輸資料為一整塊的被稱為塊裝置,如硬碟、光碟等。最小資料傳輸單位為一個數據塊(通常一個數據塊的大小為512位元組)

c表示該檔案是一個字元裝置檔案(character),一般置於/dev目錄下,一次傳輸一個位元組的裝置被稱為字元裝置,如鍵盤、字元終端等,傳輸資料的最小單位為一個位元組

p表示該檔案為命令管道檔案。與shell程式設計有關的檔案

s表示該檔案為sock檔案。與shell程式設計有關的檔案

連結檔案分為硬連結或符號連結兩種。

硬連結:多個指向同一檔案。硬連結檔案大小完全相同,如有多個硬連結,所連結的檔案只是一個檔案大小。

同一個檔案所有的檔案都是等價的,作業系統不區分連結建立的先後順序,若一個檔案存在兩個連結,那麼除去一個檔案還可以通過另外一個檔案來訪問該檔案,也可以除去建立連結時用到的檔案,但只要還有一個連結存在,就可通過該連線訪問檔案。

符號連結(軟連結):建立一個獨立的檔案,這個檔案會讓資料的讀取指向它連結的檔案內容。類似windows快捷方式。

第1欄位後9個字母表示該檔案或目錄的許可權位。

r表是讀 (Read) 、w表示寫 (Write) 、x表示執行 (eXecute)

前三個表示檔案擁有者的許可權,中間三個表示檔案所屬組擁有的許可權,最後三個表示其他使用者擁有的許可權。

SUID和GUID解析:

s:4;g:2;o:1

4777即rwsrwxrwx。6777即rwsrwsrwx

第2欄位:檔案硬連結數

-rw-r–r– 1 root root 762 07-29 18:19 exit

如果一個檔案不是目錄,此時這一欄位表示這個檔案所具有的硬連結數

第2欄位的值為1,說明檔案exit只有exit這一個檔名。即只有一個指向該連結的硬連結。

如果使用ln,做一個指向該檔案的硬連結再檢視該檔案,該檔案的第2欄位就會變成2

[[email protected] ~]# ln exit aexit

[[email protected] ~]# ls -l

總計 160

-rw-r–r– 2 root root 762 07-29 18:19 aexit

-rw-r–r– 2 root root 762 07-29 18:19 exit

此時exit 和aexit稱為互為硬連結。同指向一個檔案,無論是修改哪一個檔案,另一個裡也做相應的變化,即同一檔案的不同檔名

互為硬連結的檔案具有相同的檔案節點。

[[email protected] ~]# ls -i aexit exit

162302 aexit 162302 exit

軟連結設定格式:

Ln –s 原始檔 目標連結檔案

ln -s exit bexit

ls -l

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

-rw-r–r– 1 root root 762 07-29 18:19 exit

注意:軟連結時檔案節點號不一樣;

[[email protected] ~]# ls -i bexit exit

161765 bexit 162302 exit

如果知道一個檔案有多個檔名(連結檔案)如何查詢他的其他檔名的路徑?

使用ls -i 獲得其節點號,find查詢。

[roo[email protected] ~]# ls -i /etc/sysconfig/network-scripts/ifcfg-eth0

452946 /etc/sysconfig/network-scripts/ifcfg-eth0 #節點號為 452946

[[email protected] ~]# find /etc -inum 452946

/etc/sysconfig/network-scripts/ifcfg-eth0

第2欄位: 連結佔用的節點

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

該欄位檔案佔用一個節點,屬於軟連結(符號連結)

如果是目錄,則第2欄位表示該目錄所含子目錄的個數

新建空目錄,此目錄的第二欄位就是2,表示該目錄下有兩個子目錄。

因為每一個目錄都有一個指向它本身的子目錄”.” 和指向它上級目錄的子目錄”..”,此預設子目錄是隱藏的。

每次在目錄下新建一個子目錄,該目錄第2欄位的值就增1,但是新建一個普通檔案該欄位值不增加。

第3欄位:檔案(目錄)擁有者

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

該欄位表示該檔案擁有者是誰。只有檔案的擁有者才具有改動檔案屬性的權利。root具有改動任何檔案屬性的權利。對於目錄,只有擁有該目錄的使用者,或者具有寫許可權的使用者才有在目錄下建立檔案的權利。

如果某一使用者被刪除,而該使用者家目錄還存在,ls -l 檢視該檔案將顯示一個代表使用者存在前ID號的數字。

建立使用者test,將其加入wang使用者組,su切換:

[[email protected] ~]# useradd test

[[email protected] ~]# usermod -g wang test #建立使用者test,並將其加入到使用者組wang中

[[email protected] ~]# su test

[[email protected] root]$ cd /home/test

[[email protected] ~]$ touch testing

[[email protected] ~]$ ls -l testing

-rw-r–r– 1 test wang 0 08-03 18:02 testing #最後用ls -l 看到第三欄位的檔案擁有者為test

[[email protected] ~]$ su root #刪除使用者test

[[email protected] ~]# userdel test

[[email protected] ~]# cd /home/test #進入test的家目錄,檢視剛剛建立的檔案testing。

[[email protected] test]# ls -l

總計 4

-rw-r–r– 1 504 wang 0 08-03 18:02 testing

第三欄位變成數字,此數字是原使用者test的ID號。因為檔案系統對每個檔案記錄檔案所有者的ID,而非使用者名稱。

第4欄位:檔案(目錄)擁有者所在的組

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

一個使用者可以加入很多個組,但是其中有一個是主組,就是顯示在第4欄位的名稱。

useradd -g指定該使用者所在的主組,-G指定其他組

Useradd –g 組名 使用者名稱

第5欄位: 檔案所佔用的空間(以位元組為單位)

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

第5欄位表示檔案大小,如果是目錄,表示該目錄大小。注意是目錄本身大小,而非目錄及其下面的檔案的總大小。

第6欄位:檔案(目錄)最近訪問(修改)時間

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

可通過touch修改建立時間 # touch exit

把exit建立時間修改當前時間,檔案還有最後訪問時間,最後修改時間等屬性。

可以用ls其它引數顯示出來。

第7欄位:檔名

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

如果是符號連結,會有”->”符號,跟著它指向的檔名

相關推薦

Linux檔案屬性以及連結

今天說的這個命令,不是經常用,但是隻要配置環境,這個命令就離不開我們,尤其是同一環境不同版本同時存在的時候,今天我們就一起研究一下這個命令的具體使用方法和一些常見的使用場景。 ln是linux中又一個非常重要命令,它的功能是為某一個檔案在另外一個位置建立一個同

Linux修改檔案屬性以及許可權

原文連結:Linux修改檔案屬性以及許可權 chgrp:改變檔案所屬使用者組 chown:改變檔案所有者 chmod改變檔案的許可權 下圖我是新建了一個text.txt文件,然後ls顯示。看到了這個檔案所有者以及檔案所屬使用者組都是somnus,然後修改檔案所屬使用

Linux檔案屬性說明

 原文連結:Linux檔案屬性說明 [email protected]:~$ ls -al total 156 drwxr-xr-x 22 somnus somnus 4096 Aug 11 22:18 . drwxr-xr-x 3 root root 4096

linux每日命令(26):Linux檔案屬性詳解

Linux 檔案或目錄的屬性主要包括:檔案或目錄的節點、種類、許可權模式、連結數量、所歸屬的使用者和使用者組、最近訪問或修改的時間等內容。具體情況如下: 命令: ls -lih 輸出: [[email protected] test]# ls -lih total 0 51621141 dr

Linux檔案屬性及許可權

原創作品,轉載請註明出處:https://www.cnblogs.com/shrimp-can/p/10039288.html 在Linux中,一個十分重要的內容就是檔案許可權。 一、檔案存取訪問身份 Linux的優秀之處在於她的多使用者多工環境,為了方便檔案的管理,有三種檔案存取訪問身份,分別是:使用

3.2 Linux檔案屬性(5、6節)

3.2.5.檔案許可權管理2 3.2.5.1、access函式檢查許可權設定 (1)文字許可權管控其實蠻複雜,一般很難很容易的確定對一個檔案是否具有某種許可權。設計優秀的軟體應該是:在操作某個檔案之前先判斷當前是否有許可權做這個操作,如果有再做如果沒有則提供錯誤資訊給使用者。 (2)ac

3.2 Linux檔案屬性(3、4節)

3.2.3.stat函式的應用案例 3.2.3.1、用程式碼判斷檔案型別 (1)檔案型別就是-、d、l···· (2)檔案屬性中的檔案型別標誌在struct stat結構體的mode_t    st_mode元素中,這個元素其實是一個按位來定義的一個位標誌(有點類似於AR

3.2 Linux檔案屬性(1、2節)

3.2.1.linux中各種檔案型別 3.2.1.1、普通檔案(- regular file) (1)文字檔案。檔案中的內容是由文字構成的,文字指的是ASCII碼字元。檔案裡的內容本質上都是數字(不管什麼檔案內容本質上都是數字,因為計算機中本身就只有1和0),而文字檔案中的數字本身應該被理

Linux檔案系統----軟連結和硬連結

更多Linux檔案系統知識:Linux檔案系統-----基礎IO Linux檔案系統的認知 1、Linux系統下一切皆檔案 現代作業系統為解決資訊能獨立於程序之外被長期儲存引入了檔案,檔案作為程序建立資訊的邏輯單元可被多個程序併發使用。在 UNIX 系統中,作業

Linux檔案屬性的修改

    在Linux作業系統中,用ll或ls-s命令可以查閱當前目錄下非隱藏檔案的屬性,包括檔案型別,檔案的許可權,連線數,屬主,屬組,檔案大小以及最後修改時間,ls -a可以查閱當前目錄所有檔案。     第一位字元表示檔案的型別    

Linux檔案屬性與檢視

1.每個檔案有三個方面許可權,一個是本身許可權,之後是使用者組許可權,再之後是其他使用者許可權        一個使用者組包含多個使用者,二其他使用者是使用者組之外的使用者       root賬戶擁有上帝級別的許可權 2.檢視檔案命令:ls    輸出最前面的一行字

每天一個 Linux 命令(25):Linux 檔案屬性詳解

Linux 檔案或目錄的屬性主要包括:檔案或目錄的節點、種類、許可權模式、連結數量、所歸屬的使用者和使用者組、最近訪問或修改的時間等內容。具體情況如下: 命令:  ls -lih 輸出: [root@localhost test]# ls -li

Linux檔案屬性相關(許可權)

在Linux的終端中我們可以用 ls -l 來檢視某個檔案的屬性以及所屬的使用者和組。顯示結果中:第一個字元代表這個檔案是目錄、檔案或連結檔案等等。當為[ d ]則是目錄當為[ - ]則是檔案;若是[ l ]則表示為連結文件(link file);若是[ b ]則表示為裝置檔

Linux檔案系統以及目錄結構簡介

Linux和Windows作業系統中的檔案系統些不同,在學習使用Linux之前,能夠了解這個不同之處助於後續的學習。本文先對Windows和Linux上面檔案系統的一些概念進行區分,然後介紹一些Linux檔案系統相關的原理,最後較為詳細地介紹了Linux系統的目

Linux 獲取檔案屬性 函式 stat, fstat, lstat 以及 stat 結構體

linux程式設計裡,有三個函式可以獲取 檔案的屬性(包含了檔案型別和檔案許可權等屬性)。 三個函式的原型如下: #include <sys/stat.h> int stat(const char *restrict pathname, struct sta

Linux(CentOS)下目錄檔案管理以及檔案文件系統打包壓縮

文件目錄常用命令 解壓縮 打包 一、目錄檔案的管理1、操作目錄的常用命令:(1) 絕對路徑與相對路徑: 絕對路徑都是從根目錄開始寫法為: /usr/local/java ("/" 為根目錄,也是目錄的入口) 相對路徑就是相對於當前這個路徑的路徑,不是

Linux| Linux 檔案基本屬性

一.Linux 檔案基本屬性 Linux系統是一種典型的多使用者系統,不同的使用者處於不同的地位,擁有不同的許可權。為了保護系統的安全性,Linux系統對不同的使用者訪問同一檔案(包括目錄檔案)的許可權做了不同的規定。 在Linux中我們可以使用ll 或者ls –l(如果要顯示隱

Linux高階程式設計基礎——檔案系統程式設計之操作檔案屬性

檔案系統程式設計之操作檔案屬性 /編寫程式實現以下功能: 1.新建檔案,設定檔案許可權遮蔽字為0; 2.建立該檔案的硬連結檔案,列印硬連結檔案的inode節點號和檔案大小; 3.建立該檔案的軟連結檔案,列印軟連結檔案的inode節點號和檔案大小; 列印軟連結檔案中的內容; 4.列印原始檔

青蛙學Linux—使用者、組、許可權和檔案屬性

1、使用者和組 1.1、使用者角色 在Linux下有以下三種角色使用者: 超級使用者:擁有對系統的最高管理許可權的使用者,預設使用者名稱為root。需要注意的是,與Windows下的超級管理員Administrator不同,root使用者在Linux下擁有最高的許可權,你可以使用root使用者執行

linux檔案系統以及使用者組等概念

一、Linux檔案結構及基本資料夾 目錄 描述 / 根目錄 /bin 做為基礎系統所需要的最基礎的命令就是放在這裡。比如 ls、cp、mkdir等命令;功能和