Linux ls 命令具有数量惊人的选项,可以提供有关文件的重要信息。
——赛斯(作者)
ls 命令可以列出 POSIX 系统上的文件。 这是一个简单的命令,但它经常被低估,不是它做了什么(因为它实际上只做了一件事),而是如何优化它的使用。
要知道,在前 10 个终端命令中,这个简单的 ls 命令可以排在前三名,因为 ls 不仅仅列出文件,它还告诉你有关它们的重要信息。 它会告诉您诸如谁拥有该文件或目录、每个文件被修改的时间图片文件扩展名大小写怎么改,甚至文件的类型等信息。 它配备的功能可以让您知道您在哪里、附近有什么以及您可以用它做什么。
如果您使用 ls 的经验仅限于您的发行版的 . 别名,那么您可能会错过它。
GNU 还是 BSD?
在了解 ls 的隐藏功能之前,您必须确定您正在运行哪个 ls 命令。 有两个最流行的版本:GNU 软件包中包含的 GNU 版本和 BSD 版本。 如果您运行的是 Linux,则很可能安装了 GNU 版本的 ls。 如果您运行的是 BSD 或 MacOS,则您拥有的是 BSD 版本。 本文解释了它们有何不同。
您可以使用 -- 选项查找计算机上的版本:
$ ls --version
如果它返回有关 GNU 的信息,则您拥有 GNU 版本。 如果它返回错误,则您可能正在运行 BSD 版本(请运行 man ls | head 来确定)。
您还应该调查您的发行版可能有哪些预设选项。 终端命令的定制通常放在$HOME/中。 或 $HOME/. 或 $HOME/. 它们是通过将 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 上的长选项)在每个条目后显示一个标识文件类型的指示符:
$ 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*
使用此选项,终端中列出的项目将使用速记符号按文件类型进行分类:
(LCTT 注释:在支持颜色的终端上,使用 --color 选项以不同颜色区分文件类型,但要注意,如果将输出导入到管道中,颜色将会消失。)
长名单
从 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 选项和格式名称更改时间戳的格式。 可用的格式有:
您还可以使用 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 或 --- 隐藏常见的备份格式(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 的部分优点在于它的简单性:两个字符和一个返回键,并且您可以准确地知道自己在哪里以及附近有什么。 如果您必须停下来思考(更不用说键入)几个不同的选项,那就不太方便了,所以通常情况下,即使是最有用的选项也不起作用。
解决方案是为 ls 命令添加别名图片文件扩展名大小写怎么改,以便在使用它时获得您最关心的信息。
要为 Bash shell 中的命令创建别名,请创建一个名为 . 在您的主目录中(必须包含 . 开头)。 在此文件中,列出要创建的别名,后跟要为其创建别名的命令。 例如:
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'
为了使别名发挥作用,shell 必须知道 . 文件存在。 在编辑器中打开 .file(如果不存在则创建它),并包含以下代码块:
if [ -e $HOME/.bash_aliases ]; then source $HOME/.bash_aliases fi
每次加载时。 (当一个新的 Bash shell 启动时),Bash 将加载 . 进入你的环境。 您可以关闭并重新启动 Bash 会话,或者只是强制它执行此操作:
$ source ~/.bashrc
如果您忘记是否有别名命令,which 命令可以告诉您:
$ which ls alias ls='ls -A -F -B --human --color' /usr/bin/ls
如果您将 ls 命令别名为带选项的 ls 命令,则可以通过在 ls 前面加上反斜杠来覆盖别名。 例如,在示例别名中,使用 -B 选项隐藏备份文件,这意味着无法使用 ls 命令显示备份文件。 可以覆盖此别名以查看备份文件:
$ ls bar baz foo $ \ls bar baz baz~ foo
做一件事并把它做好
ls 命令有许多选项,其中许多选项是特定用途的或高度依赖于您所使用的终端。 有关更多选项,请参阅 GNU 系统上的 info ls 或 GNU 或 BSD 系统上的 man ls。
您可能会发现奇怪的是,一个以每个工具“只做一件事,做好它”为前提的系统会搭载具有 50 个选项的最常用命令。 但 ls 做了一件事:它列出了文件,这 50 个选项允许您控制接收列表的方式,并且 ls 非常非常好地完成这项工作。
通过:
作者:Seth 题目:译者:wxy 校对:wxy
本文由 LCTT 原创编译,Linux China Honor 发布
图片文件扩展名大小写怎么改 精通Linux ls命令相关下载
- 查看详情 k歌伴侣PC版 v14.6 简体中文 2023-08-20
- 查看详情 易我剪辑大师 v1.6.3 简体中文 2023-08-20
- 查看详情 迅捷视频转换器电脑版 v2.7.0 简体中文 2023-08-20