如何使用 ls 指令列出 Linux 上的檔案和目錄

如何使用 ls 指令列出 Linux 上的檔案和目錄

重點

  • ls 指令是一個功能強大的工具,可用來列出檔案和目錄。
  • ls 有許多有用的選項和參數,可以增強其功能並使其使用起來更加方便。
  • 如果您想查看資料夾中的所有內容,則 ls -la 是一個很好的命令。

ls我們每天都在不假思索地使用Linux指令。太可惜了。稍微注意一下,您會發現許多有用的選項 – 包括一些您應該添加到命令列庫中的選項。

ls 列出檔案和目錄

ls命令可能是大多數 Linux 用戶遇到的第一個命令。我們這些經常使用命令列的人日復一日地使用它,甚至不假思索地使用它。這也許可以解釋為什麼這個命令的含義比大多數用戶意識到的要多。我們用它列出文件以查看目錄中的內容。當我們想要查看文件的權限時,我們會以長格式列出文件。除此之外,它很少受到考慮。

ls命令是具有豐富選項的命令之一。也許這是問題的一部分。有這麼多選項,您如何篩選以找到有用的選項?找到它們後,您如何記住它們?

命令及其選項和參數字串的有用排列是別名ls的完美候選者。事實上,在大多數發行版中,您所認為的「裸」指令實際上是一個別名。除此之外,類型 lslstype command can be used to show the underlying definition of aliases. Let's look at the definition of ls:

在終端機視窗中輸入 ls

--color=auto 每次使用該命令時都會自動包含這些參數ls。這就是為清單中的不同文件類型提供不同顏色的原因。

簡單的 ls 列表

每個使用過 Linux 終端機的人都知道,預設情況下,ls會列出目前目錄中的檔案和目錄。

ls

ls 在終端機視窗中

如果您希望在單列中產生列表,請使用-1(每行一個文件)選項:

ls -1

在終端機視窗中輸入 ls -1

我們稍後將討論清單頂部那個看起來很奇怪的檔案名稱。

在不同目錄上使用 ls

若要列出目前目錄以外的目錄中的文件,請在命令列上ls傳遞該目錄的路徑。ls您也可以將多個目錄傳遞給ls,並讓它們一個接一個列出。在這裡,我們要求ls列出兩個目錄中的文件,一個名為“Help”,另一個名為“gc_help”。

ls Help gc_help

在終端機視窗中輸入 ls Help gc_help

ls列出第一個目錄的內容時,它會列出第二個目錄的內容。它在處理每個目錄時會列印每個目錄的名稱:

列出內容之前 ls 顯示的目錄名稱。

使用檔案模式

若要選擇性地列出一組文件,請使用模式匹配。問號“ ?”代表任意單一字符,星號“ *“代表任意字串。若要列出名稱以「ip_」開頭的任何檔案或目錄,請使用下列格式:

ls ip_*

在終端機視窗中輸入 ls ip_*

若要列出具有“.c”副檔名的文件,請使用以下格式:

ls *.c

在終端機視窗中輸入 ls *.c

您也可以使用lswithgrep和 usegrep模式匹配功能。讓我們查找名稱中包含字串“_pin_”的所有檔案:

ls | grep _pin_

LS |  在終端機視窗中 grep _pin_

ls這與單獨使用幾乎相同,帶有兩個通配符:

ls | grep _pin_ ls *_pin_*

LS |  在終端機視窗中 grep _pin_

為什麼幾乎一樣?注意不同的佈局。grep強制輸出為每行單一檔案名稱格式。

非列印字符

您可能會發現自己的檔案名稱中包含非列印字元或控製字元。通常,當您展開從網路下載的存檔或檢索 git 儲存庫,並且原作者在建立檔案時犯了錯誤但沒有發現它時,就會發生這種情況。

我們奇怪的文件是其中之一:

終端機視窗中包含控製字元的檔案名

如果我們在文件瀏覽器中查看它並按“F2”對其進行重命名,則非列印字元會以奇怪的符號表示。

重新命名對話方塊視窗中帶有控製字元的檔案名

您可以使用-b(escape) 選項來查看檔案名稱實際包含的內容。此選項導致ls使用C 程式語言的轉義序列來表示控製字元。

ls -b a*

在終端機視窗中輸入 ls -ba*

經證實,這個神秘字符是一個換行符,在 C 語言中表示為“\n”。

忽略文件

若要從清單中省略某些文件,請使用 選項--hide。假設您不想在清單中看到備份“.bak”檔案。你可以使用這個指令:

ls ls --hide=*.bak

在終端機視窗中 ls --hide=*.bak

“.bak”檔案不包含在第二個清單中。

長格式列表

-l(長列表)選項會提供ls有關每個文件的詳細資訊。

ls -l

在終端機視窗中輸入 ls -l

這裡有很多信息,所以讓我們逐步了解一下。

首先ls顯示的是清單中所有檔案的總大小。然後每個檔案或目錄單獨顯示在一行上。

第一組十個字母和破折號是檔案類型以及擁有者、群組和其他檔案權限。

第一個字元代表文件類型。它將是以下之一:

  • :常規文件。
  • b:塊特殊文件。
  • c:字元特殊檔案。
  • d:目錄。
  • l:符號連結。
  • n:網路檔案。
  • p:命名管道。
  • s:插座。

接下來的九個字元是連續顯示的三組,每組三個字元。每三組依序代表讀取、寫入和執行權限。如果授予許可,則會出現rwx。如果未授予權限,-則會顯示連字號。

第一組三個字元是檔案擁有者的權限。第二組三個權限用於群組成員,最後一組三個權限用於其他人。

有時,所有者的執行權限以 表示s。這是setuid位。如果存在,則表示該文件是以文件擁有者的權限執行的,而不是以執行該文件的使用者的權限執行的。

群組的執行權限也可以是s. 這是setgid位。當這應用於檔案時,表示該檔案將以所有者群組的權限執行。當與目錄一起使用時,在其中建立的任何檔案都將從建立它們的目錄取得群組權限,而不是從建立檔案的使用者取得群組權限。

其他人的執行權限有時可以用 來表示t。這就是黏性位。它通常應用於目錄。如果設定了此項,則無論目錄中的檔案設定的寫入和可執行權限為何,只有檔案擁有者、目錄擁有者或 root 使用者可以重新命名或刪除目錄中的檔案。

黏滯位的常見用途是在「/tmp」等資料夾上。電腦上的所有使用者都可以寫入該內容。目錄上的黏滯位確保使用者以及使用者啟動的程序只能重命名或刪除自己的暫存檔案。

我們可以在“/tmp”目錄上看到黏滯位。請注意(目錄)選項的使用-d。這會導致ls報告目錄的詳細資訊。如果沒有此選項,ls將報告目錄內的檔案。

ls -l -d /tmp

在終端機視窗中 ls -l -d /tmp

權限後面的數字是檔案或目錄的硬連結數。對於一個文件來說,這通常是一個,但是如果創建了其他硬鏈接,這個數字將會增加。一個目錄通常至少有兩個硬連結。一個是其自身的鏈接,另一個是其父目錄中的條目。

接下來顯示擁有者和群組的名稱。接下來是檔案大小和檔案上次修改的日期。最後給出檔名。

人類可讀的檔案大小

以位元組為單位的檔案大小並不總是很方便。若要以最適合的單位(千位元組、兆位元組等)查看檔案大小,請使用-h(人類可讀)選項:

ls -l -h

在終端機視窗中輸入 ls -l -h

顯示隱藏文件

若要查看隱藏文件,請使用-a(全部)選項:

ls -l -a

在終端機視窗中輸入 ls -l -a

“.”和“..”這兩個條目分別代表當前目錄和父目錄。名為“.base_settings”的檔案現在首次可見。

省略。和。。來自清單

如果您不希望清單中充斥著“.”和“..”條目,但您確實想查看隱藏文件,請使用(-A幾乎所有)選項:

ls -l -A

在終端機視窗中輸入 ls -l -A

隱藏檔案仍然列出,但“.”和“..”條目被抑制。

遞歸列出目錄

若要ls列出所有子目錄中的文件,請使用-R(遞歸)選項

ls -l -R

在終端機視窗中輸入 ls -l -R

ls遍歷起始目錄下的整個目錄樹,並列出每個子目錄中的檔案。

ls 的輸出遞歸列出目錄

顯示 UID 和 GID

若要顯示使用者 ID 和群組 ID 而不是使用者名稱和群組名,請使用-n(數字 uid 和 gid)選項。

ls -n

在終端機視窗中輸入 ls -n

對清單進行排序

您可以按副檔名、檔案大小或修改時間對清單進行排序。這些選項不必與長列表格式一起使用,但這樣做通常是有意義的。如果您按檔案大小排序,則在清單中查看檔案大小是有意義的。當您按擴展名類型排序時,長列表格式並不那麼重要。

若要按擴展名排序,請使用-X(按擴展名排序)選項。

ls -X -1

在終端機視窗中輸入 ls -X -1

首先列出目錄(完全沒有擴展名),然後根據擴展名按字母順序列出其餘目錄。

若要按檔案大小排序,請使用-S(按檔案大小排序)選項。

ls -l -h -S

在終端機視窗中 ls -l -h -S

排序順序是從最大到最小。

若要按修改時間對清單進行排序,請使用-t(按修改時間排序)選項。

ls -l -t

在終端機視窗中輸入 ls -l -t

列表按照修改時間排序。

若文件修改時間在當年,則顯示的資訊為月、日、時間。如果修改日期不是當年,則顯示的資訊是月、日和年。

取得目錄中最新和最舊檔案的快速方法是使用和ls命令。headtail

若要取得最新的檔案或目錄,請使用下列命令:

ls -t | head -1

若要取得最舊的檔案或目錄,請使用下列命令:

ls -t | tail -1

ls -t |  終端機視窗中的 head -1

反轉排序順序

若要反轉任何排序順序,請使用-r(reverse) 選項。

ls -l -h -S -r

在終端機視窗中 ls -l -h -S -r

現在列表按從最小文件到最大文件的順序排列。

還有更多

查看手冊頁ls有更多選項。其中一些滿足一些晦澀的用例,但偶爾,您會很高興了解它們。

您是否需要以 Linux 可以提供的最大精度查看檔案時間戳記?使用全日制選項:

ls --full-time

也許您想查看文件的索引節點號?使用索引節點選項:

ls -i

您是否正在使用單色顯示器,並希望消除混淆目錄和連結檔案的所有風險?使用分類選項,並將ls其中一個附加到每個清單條目:

  • /:目錄。
  • @:符號連結。
  • | :命名管道。
  • = : 一個插座。
  • * : 執行檔

ls -F

做一些挖掘。您會發現這ls是一條豐富的礦脈,並且您會不斷發現寶石。

Linux指令

文件

tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · p.opd · fsck · testdisk · seq · fd · pandoc · cd · $ ATHPATH _ _ _ _ _ _ _ _ uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 查看 · 字串 · 輸入·命名 · zip ·解壓· mount · umount ·安裝· fdisk · mmdir · rm · mmdir · rm rsync · df · gpg · vi · nano · mkdir · du · ln · patch ·轉換· rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

流程

別名 · 螢幕 · 頂部 · 不錯 · renice · 進度 · strace · systemd · tmux · chsh · 歷史記錄 · at · 批次 · 空閒 · 哪個 · dmesg · chfn · usermod · ps · chroot · xargs · tty ·小指· lsof ·小指· vmstat ·超時· wall · yes · kill ·睡眠· sudo · su ·時間· groupadd · usermod · groups · lshw · shutdown · reboot · h · poweroff · passwd · lscpu · crontab · date cron · poweroffg passwd · lscpu · cron _ pmap

聯網

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh -keygen · ho · whoami · w · iptables · ssh-keygen · ufw

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *