linux命令 ls_掌握Linux ls命令

linux命令 ls

ls命令列出POSIX系统上的文件。 这是一个简单的命令,经常被低估,不是因为它可以做什么(因为它实际上只做一件事),而是在于如何优化使用它。

在要了解的10个最重要的终端命令中,最卑鄙的ls命令位于前三名,因为ls 不仅列出文件,还告诉您有关文件的重要信息。 它会告诉您诸如谁拥有文件或目录,何时丢失或修改每个文件,甚至是哪种文件等信息。 然后,它具有附带功能,可以让您了解自己的位置,附近有什么物体,以及可以使用它们做什么。

如果您对ls的经验仅限于您的发行版在.bashrc中将其别名的内容,那么您可能会错过。

是GNU还是BSD?

在查看ls的隐藏功能之前,必须确定正在运行的ls命令。 最受欢迎的两个版本是GNU coreutils软件包中包含的GNU版本和BSD版本。 如果您正在运行Linux,则可能已安装了ls 。 如果您正在运行BSD或MacOS,则您具有BSD版本。 本文解释了这些差异。

您可以使用--version选项找出计算机上的版本

 $  ls --version 

如果这返回有关GNU coreutils的信息,则您具有GNU版本。 如果返回错误,则说明您可能正在运行BSD版本(请确保运行man ls | head )。

您还应该调查您的发行版可能有哪些预设。 终端命令的自定义通常放在$ HOME / .bashrc$ HOME / .bash_aliases$ HOME / .profile中 ,并且可以通过将ls别名为更复杂的ls命令来完成。 例如:

 alias ls = 'ls --color' 

发行版提供的预设非常有用,但是它们确实使您很难辨别ls自己做什么以及它提供的其他选项。 如果您想运行ls而不是别名,则可以使用反斜杠“转义”命令:

 $  \ ls 

分类

ls可以独立运行,它只是在终端中尽可能多地列出文件:


   
   
$ ls ~ / example
bunko        jdk-10.0.2
chapterize   otf2ttf.ff
despacer     overtar.sh
estimate.sh  pandoc-2.7.1
fop- 2.3      safe_yaml
games        tt

这是有用的信息,但是所有这些文件看起来都基本相同,没有图标的便利,无法快速传达目录,文本文件或图像等。

使用-F (或GNU上的--classify )在每个条目之后显示标识文件类型的指示符:


   
   
$ ls ~ / example
bunko         jdk-10.0.2 /
chapterize *   otf2ttf.ff *
despacer *     overtar.sh *
estimate.sh   pandoc @
fop- 2.3 /      pandoc-2.7.1 /
games /        tt *

使用此选项,可以使用以下缩写按文件类型对终端中列出的项目进行分类:

  • 斜杠( / )表示目录(或“文件夹”)。
  • 星号( * )表示可执行文件。 这包括二进制文件(编译后的代码)以及脚本(具有可执行权限的文本文件)。
  • at符号( @ )表示符号链接(或“别名”)。
  • 等号( = )表示套接字。
  • 在BSD上,百分号( )表示泛白(某些文件系统上的文件删除方法)。
  • 在GNU上,尖括号( > )表示一扇门( Illumos和Solaris上的进程间通信)。
  • 竖线( | )表示FIFO

此选项的更简单版本是-p ,它仅将文件与目录区分开。

长名单

ls获取“长列表”非常普遍,以至于许多发行版将ll别名为ls -l 。 长列表格式提供了许多重要的文件属性,例如权限,拥有每个文件的用户,文件所属的组,文件大小(以字节为单位)以及文件的最后更改日期:


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

如果您不以字节为单位考虑,请添加-h标志(或GNU中的--human )以将文件大小转换为更人性化的表示法:


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

通过仅显示-o的所有者列或-g的组列,您可以看到的信息要少一些:


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

合并两个选项均不显示。

时间和日期格式

ls的长列表格式通常如下所示:


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

月份的名称不容易排序,无论是通过计算还是通过识别(取决于您的大脑是倾向于字符串还是整数)(取决于您的大脑)。 您可以使用--time-style选项加​​上格式名称来更改时间戳的格式。 可用格式为:

  • 全ISO(1970-01-01 21:12:00)
  • 长期iso(1970-01-01 21:12)
  • iso(01-01 21:12)
  • 语言环境(使用您的语言环境设置)
  • posix-STYLE(用语言环境定义替换STYLE)

您还可以使用date命令的正式符号创建自定义样式。

按时间排序

通常, ls命令按字母顺序排序。 您可以使用-t选项根据最近更改过的文件(最新列出的是最先列出的文件)进行排序。

例如:


   
   
$ touch foo bar baz
$ ls
bar  baz  foo
$ touch foo
$ ls -t
foo bar baz

清单类型

ls的标准输出平衡了可读性和空间效率,但是有时您希望文件列表采用特定的排列方式。

对于以逗号分隔的文件列表,请使用-m


   
   
ls -m ~ / example
bar, baz, foo

要每行强制使用一个文件,请使用-1选项(即数字1,而不是小写的L):


   
   
$ ls -1 ~ / bin /
bar
baz
foo

要按文件扩展名而不是文件名对条目进行排序,请使用-X (大写的X):


   
   
$ ls
bar.xfc  baz.txt  foo.asc
$ ls -X
foo.asc  baz.txt  bar.xfc

隐藏混乱

在某些ls列表中有一些您可能不需要关心的条目。 例如,元字符..分别代表“这里”和“后一级”。 如果您熟悉在终端中导航,则可能已经知道每个目录都将自己称为 并以..为其父项,因此使用-a选项显示隐藏文件时,无需经常提醒它。

要显示几乎所有隐藏的文件( ..除外),请使用-A选项:


   
   
$ ls -a
.
..
.android
.atom
.bash_aliases
[ ... ]
$ ls -A
.android
.atom
.bash_aliases
[ ... ]

使用许多优秀的Unix工具,就有保存备份文件的传统,即在要保存的文件名后附加一些特殊字符。 例如,在Vim中,备份时会在名称后附加字符。

这类备份文件曾几次使我免于愚蠢的错误,但是经过多年享受它们提供的安全感之后,我觉得不需要有直观的证据来证明它们的存在。 我相信Linux应用程序可以生成备份文件(如果他们声称这样做的话),并且我很高兴相信它们的存在。

要从视图中隐藏备份文件,请使用-B--ignore-backups隐藏常见的备份格式(此选项在BSD ls中不可用):


   
   
$ ls
bar.xfc  baz.txt  foo.asc~  foo.asc
$ ls -B
bar.xfc  baz.txt  foo.asc

当然,备份文件仍然存在。 它只是被过滤掉,因此您不必查看它。

GNU Emacs使用文件名( #file# )的开头和结尾使用哈希字符( )保存备份文件(除非另行配置)。 其他应用程序可能使用其他样式。 使用哪种模式都没有关系,因为您可以使用--hide选项创建自己的排除项:


   
   
$ ls
bar.xfc  baz.txt   #foo.asc#  foo.asc
$ ls --hide = "#*#"
bar.xfc  baz.txt  foo.asc

列出具有递归的目录

ls命令不会列出目录的内容,除非您在该目录上专门运行ls


   
   
$ ls -F
example /  quux *  xyz.txt
$ ls -R
quux  xyz.txt

. / example:
bar.xfc  baz.txt   #foo.asc#  foo.asc

使用别名使其永久

ls命令可能是在任何给定的Shell会话期间最常使用的命令。 它是您的眼睛和耳朵,可为您提供上下文并确认命令的结果。 尽管有很多选择很有用,但ls的优点在于它的简洁:两个字符和Return键,您可以确切地知道自己在哪里以及附近在哪里。 如果您不得不停止考虑(少得多的类型)几个不同的选项,它将变得不那么方便,因此通常即使是最有用的选项也会被忽略。

解决方案是为ls命令添加别名,以便在使用它时获得最在意的信息。

要在Bash Shell中为命令创建别名,请在主目录中创建一个名为.bash_aliases的文件(必须在开头包含点)。 在此文件中,列出要为其创建别名的命令,然后列出要创建的别名。 例如:

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

这行代码使您的Bash shell将ls命令解释为ls -A -F -B --human --color

您不仅限于重新定义现有命令。 您可以创建自己的别名:


   
   
alias ll = 'ls -l'
alias la = 'ls -A'
alias lh = 'ls -h'

为了使别名起作用,您的外壳程序必须知道.bash_aliases配置文件存在。 在编辑器中打开.bashrc文件(或创建它,如果它不存在),并包括以下代码块:


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

每次加载.bashrc时 (这是启动新的Bash shell的任何时间),Bash都会将.bash_aliases加载到您的环境中。 您可以关闭并重新启动您的Bash会话,或者立即强制它执行此操作:

 $  source ~ / .bashrc 

如果忘记了是否为命令加上别名,那么which命令将告诉您:


   
   
$ which ls
alias ls = 'ls -A -F -B --human --color'
        / usr / bin / ls

如果您使用选项为ls命令加上别名,则可以通过在ls前面加上反斜杠来随时覆盖自己的别名。 例如,在示例别名中,使用-B选项隐藏了备份文件,这意味着无法使用ls命令备份文件。 覆盖别名以查看备份文件:


   
   
$ ls
bar  baz  foo
$ \ ls
bar  baz  baz~  foo

一件事做好

ls命令具有数量惊人的选项,其中许多选项很小,或者高度依赖于所使用的终端。 看看上GNU或BSD系统更多的选择GNU系统或人为LS 信息LS。

您可能会发现奇怪的是,一个以每个工具“都能做一件事并且做得很好”为前提的著名系统会以50个选项权衡其最常见的命令。 但是ls只做一件事:它列出文件。 ls有50个选项可让您控制如何接收该列表,因此ls非常非常好地完成了它的一项工作。

翻译自: https://opensource.com/article/19/7/master-ls-command

linux命令 ls

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值