Кнопка «Добавить» в Gnome Printers неактивна

Если вывод pwdсодержит пробел или другой символ пробела, то это разделит выражение sedкак минимум на две части. Первая часть будет неполной командой s, а вторая часть будет восприниматься как имя файла.

Это происходит потому, что подстановка команды (назад -с галочкойpwd)не заключена в кавычки, т. е. происходит вне любой одинарной или двойной кавычки.

Чтобы исправить это, заключите подстановку команды в двойные кавычки:

sed 's?^?'"$(pwd)"'/VOCdevkit/VOC2012/JPEGImages/?; s?$?.jpg?' test.txt

Вы также можете использовать переменную $PWD:

sed 's?^?'"$PWD"'/VOCdevkit/VOC2012/JPEGImages/?; s?$?.jpg?' test.txt

Однако это выглядит так, как будто вы просто добавляете имя пути и добавляете суффикс имени файла к каждой строке файла.

Это можно сделать безопаснее, используяawk:

awk '{ printf("%s/VOCdevkit/VOC2012/JPEGImages/%s.jpg\n", ENVIRON["PWD"], $0) }' test.txt

Это будет работать, даже если $PWDили строки, прочитанные из test.txt, содержат ?, пробелы или строки, которые можно интерпретировать как регулярные выражения.

Тестирование:

$ pwd
/tmp/shell-yash.Oeo3joN3
$ cat test.txt
hello world
sunny afternoon
bumbling bees
$ awk '{ printf("%s/VOCdevkit/VOC2012/JPEGImages/%s.jpg\n", ENVIRON["PWD"], $0) }' test.txt
/tmp/shell-yash.Oeo3joN3/VOCdevkit/VOC2012/JPEGImages/hello world.jpg
/tmp/shell-yash.Oeo3joN3/VOCdevkit/VOC2012/JPEGImages/sunny afternoon.jpg
/tmp/shell-yash.Oeo3joN3/VOCdevkit/VOC2012/JPEGImages/bumbling bees.jpg
0
10.01.2020, 01:11
1 ответ

Решение:Удаление ServerNameиз файла ~/.cups/client.conf.

Подробности:Я установил ServerName <URL>в ~/.cups/client.conf для обычного пользователя. Итак, для моего обычного пользователя (не root )клиент CUPS (, который предоставляет доступные принтеры, например. to Gnome Printers )пытался получить принтеры с сервера CUPS, работающего на <URL>. Не с моего локального сервера CUPS, который предоставлял принтер, который я добавил через веб-интерфейс CUPS.

0
28.01.2020, 02:57

Теги

Похожие вопросы