对于某些目录,为什么 ls 不会显示多列输出?

对于某些目录,为什么 ls 不会显示多列输出?

ls关于颜色以及如何使用选项调整颜色,该命令和 ntfs 文件系统已经进行了广泛的讨论dircolors。然而,似乎还有更多问题,这是我最近从 14.04 更新到 16.04 后才开始遇到的。

在 ntfs 文件夹中,我可以关闭颜色选项,但是 ls 似乎会显示一列文件,而不是其他文件夹中默认的列视图。此外,即使强制使用选项等-x,也-c只会显示相同的一列。

我对颜色没有问题,因为我可以编辑dircolors选项,但我似乎无法更改这个单列视图。

所以我想问一下,是否有可能消除这些可执行文件依赖问题,包括颜色和单列视图,这些都依赖于文件和目录的可执行权限(常见于 ntfs 分区)?我直到 14.04 才有这个功能,我想恢复它。我以前目录是用颜色编码的,没问题。

答案1

正如您可能已经发现的那样sududus 提到--color=never阻止彩色输出。但是,这是否或如何与显示的列数相关并不明显。

您提到尝试-c。该标志指定排序顺序,与多列打印无关。按列打印的标志是-C(即首都 C)。如果您还没有尝试过,您可能想尝试一下,但我认为在这种特殊情况下它不会有帮助。

通常,当你无法获取ls多列目录中的内容时,这是因为至少有一个文件的名称太长同时允许在您的终端上显示第二个正确对齐的列。

通常你不会在这种情况下,会显示多列。这样输出就没什么意义了。

如果发生这种情况,那么您可以通过以下方式列出多列中的文件:

  • 增加终端的宽度。如果您使用的是图形终端仿真器,则几乎只需将窗口放大并ls再次运行即可。这通常甚至通过 SSH 也可以工作。
  • 仅列出部分文件。例如,也许您只需要查看以 结尾的文件.txt,而名称很长的文件没有该后缀。那么您可以使用ls *.txt

如果您已尝试了所有这些方法,并确定问题不是由上述原因导致的,而是由您在配置 所使用的颜色时所做的更改导致的ls,则需要更多信息。具体来说,您必须指定所做的更改,显示进行更改的所有文件(或至少相关部分),并提供 的输出type -a ls

答案2

man ls

Using color to distinguish file types is disabled both by default
and with --color=never. With --color=auto, ls emits color codes
only when standard output is connected to a terminal. The LS_COLORS
environment variable can change the settings. Use the dircolors
command to set it.

因此别名~/.bashrc应该可以做到这一点(source ~/.bashrc在已经打开的终端窗口中运行后并在新的终端窗口中自动运行)

alias ls='ls --color=never'

您可以在其他别名附近添加该行。

相关内容