2

我正在运行以下命令来列出服务器上安装的软件包。

$> dpkg -l

这很好,但是当我这样做时

$> dpkg -l > list_of_packages_installed

我只得到 106 列数据,其余的被截断。所以所有的行都在那里,但不是所有的数据列。我在这里一定有一些简单的东西吗?

4

1 回答 1

1

变量 COLUMN 确实对此负责。dpkg(8) 的联机帮助页包含在“环境”部分下:

   COLUMNS
         Sets  the number of columns dpkg should use when display-
         ing formatted text. Currently only used by -l.

如果在您的环境中设置了 COLUMNS,则 dpkg 将使用它。您可以使用以下命令进行检查:

env | grep ^COLUMNS=

如果该命令输出类似

COLUMNS=80

那么你知道这个变量是在你的环境中设置的。请注意,此命令:

echo $COLUMNS

不会告诉您它是环境变量还是 shell 变量。COLUMNS 可以设置为 shell 变量,而无需导出到环境中。使用此命令:

COLUMNS=$COLUMNS dpkg -l > k

您明确地将变量放在 dpkg 的环境中。如果它不在您的环境中,那么它将仅用于此命令。另请注意,dpkg 在这方面的行为在 ubuntu 和 debian 之间是不同的,并且还取决于版本。有一些关于这个主题的错误报告。例如,squeeze 中的 dpkg 将设置列宽,以便如果环境中未设置 COLUMNS 并且输出不是 tty,则可以完整显示所有包名称和版本。

问候

于 2011-11-17T12:19:48.377 回答