削除されたパッケージのリストを印刷するスクリプトを作成しています。
#!/bin/bash
declare -a LIST_OF_PACKAGES=("php5" "nginx")
for i in "${LIST_OF_PACKAGES[@]}"
do
PACKAGE_STATUS=`dpkg-query -W -f='${Status} ${Version}\n' $i | grep --line-buffered -v "install ok"`
ECHO=`echo $i * $PACKAGE_STATUS * $i`
done
forループに次の行を含めようとしています。
echo $ECHO | awk -F "*" '{print $1}' | sed '/^\s*$/d'
デフォルトでは、インストールされていないパッケージをgrepしようとしています。だから、「*」に基づいてリストを切り取ります。
現在の出力:
unknown ok not-installed
希望の出力:
nginx * unknown ok not-installed
インストールされたパッケージを無視したいです。
答え1
aptitudeを直接使用して、削除されたパッケージを一覧表示できます。
aptitude search "!(~i)"
より明確ですが、同等の形式を使用することもできます。
aptitude search "?not(?installed)"
パッケージ名のみを印刷するには、フォーマットオプションを追加するだけです。
aptitude -F "%p" search "?not(?installed)"
読む適性でのクエリメモ、とても便利です。