如何在Unix/Linux中使用'ls -l'命令显示列标题?

56

当我在Unix/Linux的Bash shell中输入ls -l命令时,我希望显示所有列标题。

当我们在命令提示符上输入ls -ltr时,我们会得到类似以下的内容。

-r--r--r--  2   makerpm   root   1898   Jan 28 14:52   sample3
-r--r--r--  2   makerpm   root   1898   Jan 28 14:52   sample1

我想知道的是,ls 是否有任何选项可以显示列标题:

File_Permissions  Owner Group   Size   Modified_Time  Name
-r--r--r--  2  makerpm   root   1898   Jan 28 14:52   sample3
-r--r--r--  2  makerpm   root   1898   Jan 28 14:52   sample1

将结果管道传输到 awk - Maroun
6
Stack Overflow是用于与编程有关的问题,而关于使用Linux/Unix的问题则是不合适的话题。这个问题更适合于Unix and LinuxSuper User或者Ask Ubuntu(如果您正在运行Ubuntu)。您还应该澄清您对所需输出的描述。 - Anthony Geoghegan
你能给一个你想要的输出类型的例子吗? - Vorsprung
1
值得注意的是:当您在/dev/中运行ls -l时,groupsize之间有一个额外的列。该列指示与每个设备关联的主要编号。 - Alex Jansen
3个回答

33

exals的替代/增强版。如果你使用-lh参数来运行exa,它将打印一行头部信息,包括列名:

exa -lh

示例输出:

Permissions Size User     Date Modified Name
.rwx------    19 username 29 Sep 11:25  dont_cra.sh
drw-r-----     - username 29 Sep 11:26  f1
.rw-r--r--@ 811k username 29 Sep 11:25  row_count.dat
.rw-r--r--    54 username 29 Sep 11:25  some_text.txt

您可以在 .bashrc 中设置别名,将 ls 替换为 exa。


7
通常我会避免像“谢谢!”,“太棒了!”等这样的评论。但是这里我要例外一下。'exa'程序恰好就是我正在寻找的。实际上,它比我的期望还要好。我强烈建议“stackoverflowers”看一看这个链接。如果管理员允许的话,感谢提供链接,这个程序非常棒! :) - 点赞! - Almir Campos
在CentOS中没有Exa。如何安装它? - Scott Chu
请注意,如果需要“group”列,则需要使用选项“-g”。 - laoyb
2
字面上不是被要求的内容 - Johnny Bigoode
1
@JohnnyBigoode 而且,它提供了比那些只字不差回答问题更好的答案。 - undefined
@hatfinch 这个回答可能对某些人来说有用的信息,但是对于一个没有被问到的问题来说,回答关于其他事情的内容本身就不是一个合适的答案,而且将其称为“更好”的答案只是一种逻辑谬误。“手动挡汽车是如何工作的?”-> “自动挡车是手动挡的现代替代品,所以应该使用它们”并不是对所问问题的“更好”答案。 - undefined

7

之前使用 sed 的方法很好,但遗憾的是,如果你的输出中添加了颜色(大多数人都会这样做),它将移除所有颜色。我想提出更好的方式,而且具有讽刺意味的是,更简单。

首先,我的 .bashrc 文件曾经包含以下内容:

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
fi

alias ls='ls -AFhls --color --group-directories-first'

说实话,您不需要dircolors部分,那只是我使用的一个小额外功能,您可以简单地使用以下内容:
alias ls='ls --color=auto'

我也想要列头信息,于是搜索了一下,最终来到了这里。但是当我尝试了前一个用户建议的方法后,使用 sed 命令发现所有内容都变成了白色,连带着我的颜色也消失了。
后来我尝试在我的 .bashrc 文件中做了一些不同的尝试,并且成功了。
只需要给 ls 命令设置别名,先输入 echo 命令,然后加上分号,再输入你的 ls 命令即可。我的 .bashrc 文件现在有如下一行:
alias ls='echo "Dir Size|Perms|Link Count|Owner|Group|Size|Mod. Time|Name"; ls -AFhls --color --group-directories-first'

使用echo而不是sed的方式,可以保持所有颜色的正常工作。


5

我不确定这是否只适用于我的终端输出,但这对我有效。

在此输入图像描述

这是它产生的输出。如您所见,使用此方法可以保留颜色。只需确保将${1}变量放在双引号中,以便文件和目录名带有空格不会导致错误。

在此输入图像描述

这是代码,您可以复制并粘贴进行测试。

long_ls() {

local VAR="Permissions|Owner|Group|Size|Modified|Name"

if [ ! "${1}" ]; then
   echo -e "$VAR" | column -t -s"|" && ls -l
else
   echo -e "$VAR" | column -t -s"|" && ls -l "${1}"
fi

}

alias lls=$"long_ls ${1}"

我该如何执行这个程序?它是否在某个脚本文件中?这些设置是否在你的自定义终端中? - Jared Eddy
这个 shell 脚本被保存在 /bin 文件夹中,并且赋予了 777 权限。 - Sayan Dasgupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接