Наконец я решил проблему сам.
Я оставлю инструкции, что я сделал.
Проблема состоит из двух частей:
1-е проблемное решение:
Настоящая проблема была, что мой диспетчер Windows был запущен от lxdm, который по некоторым причинам не делает файлов конфигурации слияний от /etc/X11/xinit/xinitrc.d
за исключением lxde сессии (в LXDE dbus работы, в потрясающем wm не делает). В этой папке существует названный файл 30-dbus
со следующим содержанием:
#!/bin/bash
# launches a session dbus instance
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && type dbus-launch >/dev/null; then
eval $(dbus-launch --sh-syntax --exit-with-session)
fi
Эта часть кода определяет $DBUS_SESSION_BUS_ADDRESS
переменная, которая определяет dbus порт для использования для различных приложений. echo $DBUS_SESSION_BUS_ADDRESS
может использоваться в качестве простой проверки работоспособности, чтобы видеть, существует ли dbus сессия (она должна возвратить dbus файл сессии).
Файлы конфигурации от этой папки могут быть объединены с простым сценарием оболочки на сессии, запускаются (код, взятый от .xinitrc
):
#!/bin/bash
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
2-е проблемное решение:
В то время как выполнение dbus и доступно другим программам, все еще требуется больше доступа для уведомлений для работы правильно, таким образом, я должен был выполнить polkit агент, потому что Потрясающий WM не имеет того. Я выбрал lxpolkit
, потому что у меня уже была почти полная lxde среда. В моем случае, просто добавленном к моему ~/.config/awesome/rc.lua
файл: awful.util.spawn_with_shell("dex /etc/xdg/autostart/lxpolkit.desktop")
, по некоторым причинам без этой строки это отказалось запускаться по умолчанию с lxdm.
Я думаю, что гном polkit агент должен хорошо работать также.
Я думаю, что вам нужно использовать beginfile вместо начала и endfile вместо того, чтобы заканчиваться для начала и конца для печати в файл.
, по крайней мере, это работает на Cygwin.
Rob@Rob-PC /cygdrive/c/tmp
$ awk --version
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
Rob@Rob-PC /cygdrive/c/tmp
$ echo "11 aa
22 bb" > test
Rob@Rob-PC /cygdrive/c/tmp
$ awk -i inplace 'BEGINFILE{print "begin"} $1=="11"{print "111" $2; next} 1; ENDFILE{print "end" >> "test"}' test
Rob@Rob-PC /cygdrive/c/tmp
$ cat test
begin
111aa
22 bb
end
Как говорили другие, у Bourne Shell нет массивов true .
Однако в зависимости от того, что необходимо сделать, разделенных последовательностей должно быть достаточно:
sentence="I don't need arrays because I can use delimited strings"
for word in $sentence
do
printf '%s\n' "$word"
done
Если обычных разделителей (космос, tab и newline) недостаточно, можно установить для IFS
любой разделитель, который требуется перед циклом.
И если нужно построить массив программно, можно просто построить разделенную последовательность.
-121--15526-Я понимаю, что сетевые принтеры используют протокол RAW (или Jetdirect), верно ли это?
Да. Существует два сетевых протокола для заданий печати, которые по-прежнему актуальны сегодня: LPD , запущенный на TCP-порте 515, и JetDirect , запущенный на TCP-порте 9100. LPD был разработан Беркли для BSD UNIX в старые времена. Сейчас он практически устарел, но по-прежнему доступен на многих принтерах, предположительно для совместимости со старыми серверами. JetDirect был разработан компанией HP в начале 1990-х годов, и он проще и несколько быстрее, чем LPD. Вероятно, вам следует использовать JetDirect, когда это возможно.
У меня есть RS/6000 с AIX 5, который находит и работает с любым видом «собственного» сетевого принтера. И я хотел бы выставить в сети USB-принтер как сетевой принтер (автономное устройство), используя для этого Linux (предпочтительно Debian).
Установите CUPS на машину Linux и подключите к ней принтер. Вам даже не нужна полная машина для этого, Raspberry Pi или подобный, или домашний маршрутизатор с USB-портом и под управлением OpenWRT или DD-WRT, будет работать просто нормально.
-121--55159- Циклы BEGIN
и END
выполняются до обработки файла и после его полной обработки. Функция -i inplace
имеет смысл только во время обработки файла. Я не могу быть уверен без проверки исходного кода, но поэтому кажется разумным, что BEGIN
и END
не будут работать здесь.
Как уже было предложено, для этого используются BEGINFILE
и ENDFILE
. Если они не работают в вашей настройке, вам придется использовать обходные пути. При простом совпадении первой строки (, если (NR = = 1) {print «begin»}
), совпадение последней строки немного сложнее. Некоторые приемы можно использовать:
Добавьте начальную и конечную строки с помощью другого инструмента:
perl -i -007ne 'print «begin\n $ {_} end\n»' file & &
awk -i inplace '$1 = = «11» {print «111» $2; следующий файл} 1; '
или
printf «begin\n% s\nend» «$ (cat-файл)»
Используйте awk
для «begin» и добавьте «end» позже:
awk -i inplace 'NR = 1 {print «begin»} $1 = «11» {print «111» $2; следующий} 1; 'файл & &
echo «end» > > файл
Сделайте все это с помощью инструмента, который может понять это
. Переключатель Perl's -a
выполняет функцию awk
: разделит поля в пробельном пространстве на массив @ F
. Точно как awk
, -Переключатель F
позволяет установить разделитель полей. Переключатель -i
редактирует файл по месту:
perl -i -lane '$. = = 1 & & print «begin»; eof & & print «конец»;
если ($ F [0] = «11») {print «111 $ F [0] $ F [1]»; следующий} файл печати; '