“ls”命令仅显示单个列

“ls”命令仅显示单个列

我正在使用 Windows 终端通过 SSH 连接到 Ubuntu 虚拟机。当我发出ls命令时,输出是一列,类似于ls -al但没有额外的信息。我希望输出以通常的默认格式显示,其中目录和文件在终端中水平显示。

我查看了我的~/.bashrc文件,但没有看到任何会导致此默认行为的内容。

您知道为什么会发生这种情况吗?我上次登录时(几个月前),它按预期工作。

答案1

在问题的评论中,您说受影响的目录中有一个很长的名称。该ls实用程序将调整列的宽度以容纳最长的文件名。如果一个文件名真的很长,这可能会产生ls选择在单列中显示所有内容的效果,具体取决于终端窗口的宽度(或COLUMNS环境变量的值)。

例子

短文件名:

$ touch {1..20}
$ ls
1       11      13      15      17      19      20      4       6       8
10      12      14      16      18      2       3       5       7       9

添加长名称会扩展全部容纳该长度名称的列:

$ touch longerfilename
$ ls
1               14              19              5               longerfilename
10              15              2               6
11              16              20              7
12              17              3               8
13              18              4               9

如果文件名对于两列来说太长,则ls在单列中显示输出。该实用程序将始终输出相同宽度的列。

$ touch really-really-really-long-name-of-a-file
$ ls
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9
longerfilename
really-really-really-long-name-of-a-file

相关内容