重定向运算符限制列

时间:2011-10-04 13:33:19

标签: bash ubuntu-10.04 dpkg

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

$> dpkg -l

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

$> dpkg -l > list_of_packages_installed

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

1 个答案:

答案 0 :(得分: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也取决于版本。有几个 有关此主题的错误报告。例如,挤压中的dpkg将设置 列宽,以便可以完整显示所有包名称和版本 如果未在环境中设置COLUMNS且输出不是tty。

此致