自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

帶你精通Linux的ls命令

系統(tǒng) Linux
Linux 的 ls 命令擁有數(shù)量驚人的選項(xiàng),可以提供有關(guān)文件的重要信息。ls 命令可以列出一個(gè) POSIX 系統(tǒng)上的文件。這是一個(gè)簡(jiǎn)單的命令,但它經(jīng)常被低估,不是它能做什么(因?yàn)樗_實(shí)只做了一件事),而是你該如何優(yōu)化對(duì)它的使用。

[[272154]]

Linux 的 ls 命令擁有數(shù)量驚人的選項(xiàng),可以提供有關(guān)文件的重要信息。

ls 命令可以列出一個(gè) POSIX 系統(tǒng)上的文件。這是一個(gè)簡(jiǎn)單的命令,但它經(jīng)常被低估,不是它能做什么(因?yàn)樗_實(shí)只做了一件事),而是你該如何優(yōu)化對(duì)它的使用。

要知道在最重要的 10 個(gè)終端命令中,這個(gè)簡(jiǎn)單的 ls 命令可以排進(jìn)前三,因?yàn)?ls 不會(huì)只是列出文件,它還會(huì)告訴你有關(guān)它們的重要信息。它會(huì)告訴你諸如擁有文件或目錄的人、每個(gè)文件修改的時(shí)間、甚至是什么類型的文件。它的附帶功能能讓你了解你在哪里、附近有些什么,以及你可以用它們做什么。

如果你對(duì) ls 的體驗(yàn)僅限于你的發(fā)行版在 .bashrc 中的別名,那么你可能錯(cuò)失了它。

GNU 還是 BSD?

在了解 ls 的隱藏能力之前,你必須確定你正在運(yùn)行哪個(gè) ls 命令。有兩個(gè)最流行的版本:包含在 GNU coreutils 包中的 GNU 版本,以及 BSD 版本。如果你正在運(yùn)行 Linux,那么你很可能已經(jīng)安裝了 GNU 版本的 ls(LCTT 譯注:幾乎可以完全確定)。如果你正在運(yùn)行 BSD 或 MacOS,那么你有的是 BSD 版本。本文會(huì)介紹它們的不同之處。

你可以使用 --version 選項(xiàng)找出你計(jì)算機(jī)上的版本:

  1. $ ls --version

如果它返回有關(guān) GNU coreutils 的信息,那么你擁有的是 GNU 版本。如果它返回一個(gè)錯(cuò)誤,你可能正在運(yùn)行的是 BSD 版本(運(yùn)行 man ls | head 以確定)。

你還應(yīng)該調(diào)查你的發(fā)行版可能具有哪些預(yù)設(shè)選項(xiàng)。終端命令的自定義通常放在 $HOME/.bashrc$HOME/.bash_aliases$HOME/.profile 中,它們是通過(guò)將 ls 別名化為更復(fù)雜的 ls 命令來(lái)完成的。例如:

  1. alias ls='ls --color'

發(fā)行版提供的預(yù)設(shè)非常有用,但它們確實(shí)很難分辨出哪些是 ls 本身的特性,哪些是它的附加選項(xiàng)提供的。你要是想要運(yùn)行 ls 命令本身而不是它的別名,你可以用反斜杠“轉(zhuǎn)義”命令:

  1. $ \ls

分類

單獨(dú)運(yùn)行 ls 會(huì)以適合你終端的列數(shù)列出文件:

  1. $ ls ~/example
  2. bunko        jdk-10.0.2
  3. chapterize   otf2ttf.ff
  4. despacer     overtar.sh
  5. estimate.sh  pandoc-2.7.1
  6. fop-2.3      safe_yaml
  7. games        tt

這是有用的信息,但所有這些文件看起來(lái)基本相同,沒(méi)有方便的圖標(biāo)來(lái)快速表示出哪個(gè)是目錄、文本文件或圖像等等。

使用 -F(或 GNU 上的長(zhǎng)選項(xiàng) --classify)以在每個(gè)條目之后顯示標(biāo)識(shí)文件類型的指示符:

  1. $ ls ~/example
  2. bunko         jdk-10.0.2/
  3. chapterize*   otf2ttf.ff*
  4. despacer*     overtar.sh*
  5. estimate.sh   pandoc@
  6. fop-2.3/      pandoc-2.7.1/
  7. games/        tt*

使用此選項(xiàng),終端中列出的項(xiàng)目使用簡(jiǎn)寫符號(hào)來(lái)按文件類型分類:

  • 斜杠(/)表示目錄(或“文件夾”)。
  • 星號(hào)(*)表示可執(zhí)行文件。這包括二進(jìn)制文件(編譯代碼)以及腳本(具有可執(zhí)行權(quán)限的文本文件)。
  • 符號(hào)(@)表示符號(hào)鏈接(或“別名”)。
  • 等號(hào)(=)表示套接字。
  • 在 BSD 上,百分號(hào)(%)表示涂改whiteout(某些文件系統(tǒng)上的文件刪除方法)。
  • 在 GNU 上,尖括號(hào)(>)表示doorIllumos 和 Solaris上的進(jìn)程間通信)。
  • 豎線(|)表示 FIFO 管道。    這個(gè)選項(xiàng)的一個(gè)更簡(jiǎn)單的版本是 -p,它只區(qū)分文件和目錄。

(LCTT 譯注:在支持彩色的終端上,使用 --color 選項(xiàng)可以以不同的顏色來(lái)區(qū)分文件類型,但要注意如果將輸出導(dǎo)入到管道中,則顏色消失。)

長(zhǎng)列表

ls 獲取“長(zhǎng)列表”的做法是如此常見(jiàn),以至于許多發(fā)行版將 ll 別名為 ls -l。長(zhǎng)列表提供了許多重要的文件屬性,例如權(quán)限、擁有每個(gè)文件的用戶、文件所屬的組、文件大?。ㄒ宰止?jié)為單位)以及文件上次更改的日期:

  1. $ ls -l
  2. -rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
  3. -rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
  4. -rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
  5. -rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
  6. -rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh
  7. [...]

如果你不想以字節(jié)為單位,請(qǐng)?zhí)砑?-h 標(biāo)志(或 GNU 中的 --human)以將文件大小轉(zhuǎn)換為更加人性化的表示方法:

  1. $ ls --human
  2. -rwxrwx---. 1 seth users    455 Mar  2  2017 estimate.sh
  3. -rwxrwxr-x. 1 seth seth     662 Apr 29 22:27 factorial
  4. -rwxrwx---. 1 seth users    20M Jun 29  2018 fop-2.3-bin.tar.gz
  5. -rwxrwxr-x. 1 seth seth    6.1K May 22 10:22 geteltorito
  6. -rwxrwx---. 1 seth users    177 Nov 12  2018 html4mutt.sh

要看到更少的信息,你可以帶有 -o 選項(xiàng)只顯示所有者的列,或帶有 -g 選項(xiàng)只顯示所屬組的列:

  1. $ ls -o
  2. -rwxrwx---. 1 seth    455 Mar  2  2017 estimate.sh
  3. -rwxrwxr-x. 1 seth    662 Apr 29 22:27 factorial
  4. -rwxrwx---. 1 seth    20M Jun 29  2018 fop-2.3-bin.tar.gz
  5. -rwxrwxr-x. 1 seth   6.1K May 22 10:22 geteltorito
  6. -rwxrwx---. 1 seth    177 Nov 12  2018 html4mutt.sh

也可以將兩個(gè)選項(xiàng)組合使用以顯示兩者。

時(shí)間和日期格式

ls 的長(zhǎng)列表格式通常如下所示:

  1. -rwxrwx---. 1 seth users         455 Mar  2  2017 estimate.sh
  2. -rwxrwxr-x. 1 seth users         662 Apr 29 22:27 factorial
  3. -rwxrwx---. 1 seth users    20697793 Jun 29  2018 fop-2.3-bin.tar.gz
  4. -rwxrwxr-x. 1 seth users        6210 May 22 10:22 geteltorito
  5. -rwxrwx---. 1 seth users         177 Nov 12  2018 html4mutt.sh

月份的名字不便于排序,無(wú)論是通過(guò)計(jì)算還是識(shí)別(取決于你的大腦是否傾向于喜歡字符串或整數(shù))。你可以使用 --time-style 選項(xiàng)和格式名稱更改時(shí)間戳的格式??捎酶袷綖椋?/p>

  • full-iso:ISO 完整格式(1970-01-01 21:12:00)
  • long-iso:ISO 長(zhǎng)格式(1970-01-01 21:12)
  • iso:iso 格式(01-01 21:12)
  • locale:本地化格式(使用你的區(qū)域設(shè)置)
  • posix-STYLE:POSIX 風(fēng)格(用區(qū)域設(shè)置定義替換 STYLE

你還可以使用 date 命令的正式表示法創(chuàng)建自定義樣式。

按時(shí)間排序

通常,ls 命令按字母順序排序。你可以使用 -t 選項(xiàng)根據(jù)文件的最近更改的時(shí)間(最新的文件最先列出)進(jìn)行排序。

例如:

  1. $ touch foo bar baz
  2. $ ls
  3. bar  baz  foo
  4. $ touch foo
  5. $ ls -t
  6. foo bar baz

列出方式

ls 的標(biāo)準(zhǔn)輸出平衡了可讀性和空間效率,但有時(shí)你需要按照特定方式排列的文件列表。

要以逗號(hào)分隔文件列表,請(qǐng)使用 -m

  1. ls -m ~/example
  2. bar, baz, foo

要強(qiáng)制每行一個(gè)文件,請(qǐng)使用 -1 選項(xiàng)(這是數(shù)字 1,而不是小寫的 L):

  1. $ ls -1 ~/bin/
  2. bar
  3. baz
  4. foo

要按文件擴(kuò)展名而不是文件名對(duì)條目進(jìn)行排序,請(qǐng)使用 -X(這是大寫 X):

  1. $ ls
  2. bar.xfc  baz.txt  foo.asc
  3. $ ls -X
  4. foo.asc  baz.txt  bar.xfc

隱藏雜項(xiàng)

在某些 ls 列表中有一些你可能不關(guān)心的條目。例如,元字符 ... 分別代表“本目錄”和“父目錄”。如果你熟悉在終端中如何切換目錄,你可能已經(jīng)知道每個(gè)目錄都將自己稱為 .,并將其父目錄稱為 ..,因此當(dāng)你使用 -a 選項(xiàng)顯示隱藏文件時(shí)并不需要它經(jīng)常提醒你。

要顯示幾乎所有隱藏文件(... 除外),請(qǐng)使用 -A 選項(xiàng):

  1. $ ls -a
  2. .
  3. ..
  4. .android
  5. .atom
  6. .bash_aliases
  7. [...]
  8. $ ls -A
  9. .android
  10. .atom
  11. .bash_aliases
  12. [...]

有許多優(yōu)秀的 Unix 工具有保存?zhèn)浞菸募膫鹘y(tǒng),它們會(huì)在保存文件的名稱后附加一些特殊字符作為備份文件。例如,在 Vim 中,備份會(huì)以在文件名后附加 ~ 字符的文件名保存。

這些類型的備份文件已經(jīng)多次使我免于愚蠢的錯(cuò)誤,但是經(jīng)過(guò)多年享受它們提供的安全感后,我覺(jué)得不需要用視覺(jué)證據(jù)來(lái)證明它們存在。我相信 Linux 應(yīng)用程序可以生成備份文件(如果它們聲稱這樣做的話),我很樂(lè)意相信它們存在 —— 而不用必須看到它們。

要隱藏備份文件,請(qǐng)使用 -B--ignore-backups 隱藏常用備份格式(此選項(xiàng)在 BSD 的 ls 中不可用):

  1. $ ls
  2. bar.xfc  baz.txt  foo.asc~  foo.asc
  3. $ ls -B
  4. bar.xfc  baz.txt  foo.asc

當(dāng)然,備份文件仍然存在;它只是過(guò)濾掉了,你不必看到它。

除非另有配置,GNU Emacs 在文件名的開(kāi)頭和結(jié)尾添加哈希字符()來(lái)保存?zhèn)浞菸募?code>#file#)。其他應(yīng)用程序可能使用不同的樣式。使用什么模式并不重要,因?yàn)槟憧梢允褂?--hide 選項(xiàng)創(chuàng)建自己的排除項(xiàng):

  1. $ ls
  2. bar.xfc  baz.txt  #foo.asc#  foo.asc
  3. $ ls --hide="#*#"
  4. bar.xfc  baz.txt  foo.asc

遞歸地列出目錄

除非你在指定目錄上運(yùn)行 ls,否則子目錄的內(nèi)容不會(huì)與 ls 命令一起列出:

  1. $ ls -F
  2. example/  quux*  xyz.txt
  3. $ ls -R
  4. quux  xyz.txt
  5.  
  6. ./example:
  7. bar.xfc  baz.txt  #foo.asc#  foo.asc

使用別名使其永久化

ls 命令可能是 shell 會(huì)話期間最常使用的命令。這是你的眼睛和耳朵,為你提供上下文信息和確認(rèn)命令的結(jié)果。雖然有很多選項(xiàng)很有用,但 ls 之美的一部分就是簡(jiǎn)潔:兩個(gè)字符和回車鍵,你就知道你到底在哪里以及附近有什么。如果你不得不停下思考(更不用說(shuō)輸入)幾個(gè)不同的選項(xiàng),它會(huì)變得不那么方便,所以通常情況下,即使最有用的選項(xiàng)也不會(huì)用了。

解決方案是為你的 ls 命令添加別名,以便在使用它時(shí),你可以獲得最關(guān)心的信息。

要在 Bash shell 中為命令創(chuàng)建別名,請(qǐng)?jiān)谥髂夸浿袆?chuàng)建名為 .bash_aliases 的文件(必須在開(kāi)頭包含 .)。 在此文件中,列出要?jiǎng)?chuàng)建的別名,然后是要為其創(chuàng)建別名的命令。例如:

  1. alias ls='ls -A -F -B --human --color'

這一行導(dǎo)致你的 Bash shell 將 ls 命令解釋為 ls -A -F -B --human --color

你不必僅限于重新定義現(xiàn)有命令,還可以創(chuàng)建自己的別名:

  1. alias ll='ls -l'
  2. alias la='ls -A'
  3. alias lh='ls -h'

要使別名起作用,shell 必須知道 .bash_aliases 配置文件存在。在編輯器中打開(kāi) .bashrc 文件(如果它不存在則創(chuàng)建它),并包含以下代碼塊:

  1. if [ -e $HOME/.bash_aliases ]; then
  2.     source $HOME/.bash_aliases
  3. fi

每次加載 .bashrc(這是一個(gè)新的 Bash shell 啟動(dòng)的時(shí)候),Bash 會(huì)將 .bash_aliases 加載到你的環(huán)境中。你可以關(guān)閉并重新啟動(dòng) Bash 會(huì)話,或者直接強(qiáng)制它執(zhí)行此操作:

  1. $ source ~/.bashrc

如果你忘了你是否有別名命令,which 命令可以告訴你:

  1. $ which ls
  2. alias ls='ls -A -F -B --human --color'
  3.         /usr/bin/ls

如果你將 ls 命令別名為帶有選項(xiàng)的 ls 命令,則可以通過(guò)將反斜杠前綴到 ls 前來(lái)覆蓋你的別名。例如,在示例別名中,使用 -B 選項(xiàng)隱藏備份文件,這意味著無(wú)法使用 ls 命令顯示備份文件。 可以覆蓋該別名以查看備份文件:

  1. $ ls
  2. bar  baz  foo
  3. $ \ls
  4. bar  baz  baz~  foo

做一件事,把它做好

ls 命令有很多選項(xiàng),其中許多是特定用途的或高度依賴于你所使用的終端。在 GNU 系統(tǒng)上查看 info ls,或在 GNU 或 BSD 系統(tǒng)上查看 man ls 以了解更多選項(xiàng)。

你可能會(huì)覺(jué)得奇怪的是,一個(gè)以每個(gè)工具“做一件事,把它做好”的前提而聞名的系統(tǒng)會(huì)讓其最常見(jiàn)的命令背負(fù) 50 個(gè)選項(xiàng)。但是 ls 只做一件事:它列出文件,而這 50 個(gè)選項(xiàng)允許你控制接收列表的方式,ls 的這項(xiàng)工作做得非常、非常好。

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2020-12-21 10:55:41

Linux系統(tǒng)ls命令

2009-09-28 11:21:17

Linux教程ls命令Linux

2013-12-03 09:12:37

Linux命令kill命令

2023-10-09 07:33:50

Linuxls 命令

2017-12-27 10:20:01

Linux ls命令實(shí)用范例

2015-03-25 10:36:57

lsLinux

2020-09-13 09:22:51

Linuxls命令

2018-04-27 14:58:09

Linuxkill命令

2022-05-05 21:47:32

Linuxls 命令

2020-12-07 10:48:31

Linuxls命令stat命令

2021-05-17 11:30:08

Linuxls命令

2021-06-03 08:45:44

Linuxls命令

2018-10-22 10:00:05

Linux命令ls

2017-03-10 11:35:16

Linuxsort命令

2018-04-17 09:20:35

Linux命令crypt

2023-12-16 22:21:42

Linux網(wǎng)絡(luò)命令

2018-02-24 16:30:49

LinuxUnixBash

2020-12-17 08:14:30

Linuxrsync備份

2020-10-13 08:10:33

Exa命令工具

2023-08-19 21:32:28

ls 命令顏色
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)