對我來說執行列印非常困難,因為印表機對話框充滿了數百個自動添加的印表機,所以我找不到我想要使用的印表機,請參見下面的螢幕截圖。
這些印表機來自我的工作網絡,顯然很多人(我猜包括學生)都在「共用」他們的家用印表機,然後我的筆記型電腦會自動拾取這些印表機。 (巧合的是,我有時會在工作中停用 avahi-daemon,只是因為它使用了大量的 CPU)。
當我訪問 時http://localhost:631/printers/
,它顯示有 131 台印表機,並且它們的品牌和型號均為「本地原始印表機」。但有兩個例外: 1 是我手動設定的正在工作的網路印表機。另一個是我父母的網路印表機,它也是自動添加的,我現在與它位於同一網路上。但其餘的只是我真正想避免的垃圾。有關如何做到這一點的提示將不勝感激。
不過,我暫時不會回到工作地點,所以現在,我只想刪除這些印表機(即 129/130 自動新增的印表機)。有沒有辦法做到這一點?我想我可以透過點擊 cups Web 介面來完成,但對於 129 台印表機來說,這有點多了。因此,我正在尋找有關如何使用某種腳本來實現它的單一命令或提示。
答案1
使用此命令:lpstat -a
我們可以查看已安裝的印表機並確定要保留的所需印表機的名稱,我們也可以使用該grep
命令來過濾結果,如下所示:lpstat -a | grep <probable_name_of_printer>
。
那麼這個小腳本可以提供幫助:
執行此命令以檢查所需的印表機是否未列出:
lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
這應該不返回任何內容,因為它執行以下操作:
lpstat -a
:列出已安裝的印表機cut -d" " -f1
:僅傳回印表機的名稱sed -E '/<NAME_OF_PRINTER>/d'
:從先前命令的輸出中刪除要保留的印表機名稱grep <NAME_OF_PRINTER>
:確保所需的印表機不在清單中
如果以上檢查成立;然後運行此命令以刪除您不需要的所有其他印表機:
sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'