日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Linux命令學習之原來最簡單的ls命令這么復雜_linux shell

作者:一無是處的研究僧 ? 更新時間: 2022-11-22 編程語言

簡介

ls命令的使用格式如下

ls?[選項]?[具體的文件]?#?[]?表示可選

直接在命令行輸入ls將當前目錄下的列出當前目錄下的文件和目錄。

$ls
LICENSE??README.md??hello.c

也可以指定具體的目錄和文件

$ls?/
bin???dev??home??lib32??libx32??mnt??proc??run???srv??tmp??var
boot??etc??lib???lib64??media???opt??root??sbin??sys??usr

展示隱藏文件(所謂隱藏文件就是以.開頭的目錄或者文件),增加-a選項。

$ls?-a
.??..??.git??LICENSE??README.md??hello.c?#?.?表示當前目錄?..?表示上一級目錄

展示文件的詳細信息。

$ls?-al
total?44
drwxr-xr-x?3?root?root??4096?Oct??6?04:20?.
drwx------?1?root?root??4096?Oct??7?03:16?..
drwxr-xr-x?8?root?root??4096?Aug?26?15:28?.git
-rw-r--r--?1?root?root?18027?Aug?26?15:28?LICENSE
-rw-r--r--?1?root?root???210?Aug?26?15:28?README.md
-rw-r--r--?1?root?root????72?Aug?26?15:32?hello.c

詳細信息說明

我們現在來仔細分析一下ls輸出結果:

第一行?total 44,表示這個目錄下面所有的文件的大小總和,單位是KiB

然后是接下來的每一行,每一行的開頭都有10個字符,他們的含義具體如下:

文件類型說明

第一個字符,有的是d, 有的是-,在linux系統當中,這第一個字符表示文件的類型,他有如下幾種類型:

  • d,表示目錄,比如說上面的.當前目錄,..上一級的目錄。
  • -,表示一般的文件,比如說上面的hello.c.
  • b,表示塊設備,比如我們的磁盤就是一種塊設備,他們的這個位置都是b
$ls?-al?/dev/?|?grep?sda
brw-rw----??1?root?disk??????8,???0?Apr?30?23:16?sda
brw-rw----??1?root?disk??????8,???1?Apr?30?23:16?sda1
brw-rw----??1?root?disk??????8,???2?Apr?30?23:16?sda2
brw-rw----??1?root?disk??????8,???3?Apr?30?23:16?sda3

l,表示一個符號鏈接文件,也叫做軟鏈接。比如我們創建一個軟鏈接文件,并且查看它,軟鏈接就相當于windows中的快捷方式,它并不真正的去存儲數據,簡單說來只是存儲來一個指向一個文件的鏈接。

$ln?-s?hello.c?softlink.c
$ls?-al
total?52
drwxr-xr-x?3?root?root??4096?Oct??7?03:39?.
drwx------?1?root?root??4096?Oct??7?03:33?..
drwxr-xr-x?8?root?root??4096?Aug?26?15:28?.git
-rw-r--r--?1?root?root?18027?Aug?26?15:28?LICENSE
-rw-r--r--?1?root?root???210?Aug?26?15:28?README.md
-rw-r--r--?3?root?root????72?Aug?26?15:32?copy.c
-rw-r--r--?3?root?root????72?Aug?26?15:32?dcopy.c
-rw-r--r--?3?root?root????72?Aug?26?15:32?hello.c
lrwxrwxrwx?1?root?root?????7?Oct??7?03:39?softlink.c?->?hello.c?#?這里就表示是軟鏈接

p,表示一個管道,我們在進行多進程通信的時候可能需要使用到這個設備文件。比如我們創建一個具體的管道:

$mkfifo?test
$ll
total?52
drwxr-xr-x?3?root?root??4096?Oct??7?05:06?./
drwx------?1?root?root??4096?Oct??7?03:40?../
drwxr-xr-x?8?root?root??4096?Aug?26?15:28?.git/
-rw-r--r--?1?root?root?18027?Aug?26?15:28?LICENSE
-rw-r--r--?1?root?root???210?Aug?26?15:28?README.md
-rw-r--r--?3?root?root????72?Aug?26?15:32?copy.c
-rw-r--r--?3?root?root????72?Aug?26?15:32?dcopy.c
-rw-r--r--?3?root?root????72?Aug?26?15:32?hello.c
lrwxrwxrwx?1?root?root?????7?Oct??7?03:39?softlink.c?->?hello.c
prw-r--r--?1?root?root?????0?Oct??7?05:06?test?#?這里就是我么你創建的管道

s,這個表示一個套接字,用于網絡通信。

權限說明

對于后面9個字符來說,是用于表示文件的相關權限的。對于每一種文件來說,它主要有三個權限,讀、寫和執行,我們很容易理解這三種權限,對于一個文件來說我們當然是想要讀和寫的,對于有的文件來說我們希望他是可執行的。我們稍后具體具一個例子,我們先來看這個9個位置分表表示的含義。

在這9個位置的字符當中如果是用-表示,則說明沒有對應的權限,如果是用對應的r,w,x表示,則說明有對應的權限。這9個字符每三個字符是一組,第一組表示文件的作者的權限,第二組表示作者所在組內的其他人的權限,第三組表示其他人的權限,也就是除了作者和作者所在的組之外的其他人的權限。

比如在上圖當中有一個可執行文件a.out,但是當我們使用chmod命令將他的所有的可執行權限都刪掉的時候他就不可以被執行了,程序輸出的結果表示沒有權限。在沒有修改之前,作者、組和其他人的權限為-rwxr-xr-x,所有的這些人都有可執行的權限。但是當執行命令chmod -x a.out之后去除了所有人的可執行權限之后,再想執行a.out就會報錯了,表示權限不夠,如果我們還想執行a.out的話就需要將權限重新加回去:

上面主要談到了關于權限的問題,我們現在來好好談一談chmod命令,這條命令主要是用來修改文件的權限的,比如上面那樣。在chmod當中我們可以有如下的幾種方式去修改文件的權限:

直接通過+r+w+x-r-w-x去修改三個不同的位置的權限,具體如下面這個例子所示。

除此之外我們還可以指定特定的人或者組。

在上面的例子當中我們還使用數組去表示權限,因為不管是那中類型的用戶都有三種權限,每一種權限有具有兩種狀態,有這個權限和沒有這個權限。那么每一個位置都可以使用一個二進制位進行表示,當二進制位為1的時候就說明有這個權限,為0的時候就沒有這個權限。那么三個二進制位就表示一類用戶(作者、組和其他),因此每一個用戶的權限我們可以用三個二進制數進行表示,比如在上圖當中的chmod 746 hello.c這條命令的輸出結果和下圖當中是相互對應的,打擊可以仔細對照的思考一下。

其他說明

至此我們已經完成了ls輸出的第一步分析,接下來我們來看第二行,第二行輸出的數據是文件的鏈接的數目。對于目錄來說這個鏈接的數目就是子目錄的數目,對于文件來說就是硬鏈接的數量。對于一個新創建的文件來說硬鏈接的數目為1,我們可以是使用ln命令去增加一個文件的硬鏈接的數量,比如下圖

硬鏈接和軟鏈接的主要區別就是,軟鏈接不會影響鏈接的數量,他只是指向一個文件,而硬鏈接不一樣,他會增加一個文件鏈接的數量,當我們刪除一個文件的時候事實上并不是直接將這個文件從磁盤當中刪除,而是將這個文件的鏈接數減去一,當這個鏈接數等于0的時候才會刪除這個文件,而刪除一個軟鏈接是不會影響鏈接的數量的,他只是在被發現是軟鏈接的時候去讀它指向的那個文件的內容。

第三列和第四列主要是用戶名和用戶所在的組的組名。第五列是文件的大小,單位是Byte。后面三列是文件上一次修改時間分別對應月、日、分秒,最后一列則是文件名。

彩蛋

我們可以使用stat命令去查看一個文件詳細的元數據信息,這些信息是存儲在文件的inode信息里面的。

$stat?hello.c?
??File:?hello.c
??Size:?72?????????Blocks:?8??????????IO?Block:?4096???regular?file
Device:?91h/145d?Inode:?1577767?????Links:?3
Access:?(0644/-rw-r--r--)??Uid:?(????0/????root)???Gid:?(????0/????root)
Access:?2022-10-07?05:41:32.685021010?+0000
Modify:?2022-10-07?05:41:27.547021008?+0000
Change:?2022-10-07?05:41:27.552021008?+0000
?Birth:?2022-08-26?15:32:43.726183003?+0000?

對應的信息如下:

  • ls -R 遞歸列出子目錄當中的文件。
  • ls -S 根據文件大小排序
  • ls - t 根據最后一次修改時間排序。
  • ls -r 逆序排列。

原文鏈接:https://www.cnblogs.com/Chang-LeHung/p/16759950.html

欄目分類
最近更新