Принятый awk
ответ Alan хорош, но здесь является универсальным использованием решения xargs
и bc
. Идея состоит в том, чтобы генерировать список чисел в некотором роде, использовать xargs
присоединиться к ним всем на одной строке, разделенной пробелами и затем использовать sed
изменить пробелы на +
символы (tr
работал бы также). канал это в до н.э.
Тот же метод может использоваться, чтобы создать regexp из списка strings/regexps, просто изменить пробелы на |
(расширенный regexp) или \|
(основной regexp) вместо +
:
for i in mydoc/* ; do pdfinfo $i ; done | \
awk '/^Pages/ {print $2}' | xargs | sed -e 's/ /+/g' | bc
Примечание: если существует много тысяч сгенерированных чисел, превышая предел длины командной строки оболочки, xargs может генерировать несколько строк. Начиная с вывода bc
квалифицирует, поскольку "генерируют список чисел в некотором роде", решение состоит в том, чтобы передать вывод по каналу bc
в xargs | sed -e 's/ /+/g' | bc
снова.
for i in mydoc/* ; do pdfinfo $i ; done | \
awk '/^Pages/ {print $2}' | xargs | sed -e 's/ /+/g' | bc | \
xargs | sed -e 's/ /+/g' | bc
xargs | sed -e 's/ /+/g' | bc | xargs | sed -e 's/ /+/g' | bc
может, конечно, быть помещен в сценарий оболочки, функцию или псевдоним.
и вот пример построения regexp, использующего этот метод. Если search.txt содержит нечто, панель, baz, quux (одно слово на строку) затем:
$ cat search.txt | xargs | sed -e 's/ /|/g'
foo|bar|baz|quux
useless-use-of-cat является заполнителем для этого примера - заменяют любым конвейером, который генерирует список слов или regexp шаблонов.
Если какой-либо из шаблонов поиска содержит пробелы, необходимо будет изменить их на что-то еще (выберите что-то вряд ли, чтобы быть во входе), временно, прежде, чем передать по каналу в xargs
и затем возвратите их снова после sed
. например, если строка 'панели' search.txt имеет конечный пробел:
$ cat search.txt | sed -e 's/ /XXX_SPACE_CHARACTER_XXX/g' | xargs | sed -e 's/ /|/g' -e 's/XXX_SPACE_CHARACTER_XXX/ /g'
foo|bar |baz|quux
Можно получить "startx" путем установки xinit:
$ zypper install xinit
Затем удостоверьтесь, что xinit настроен в Вашем $HOME/.xinitrc так, чтобы startx загрузил корицу. Что-то вроде этого:
.xinitrc:
#!/bin/sh
#exec gnome-session
exec gnome-session –session=cinnamon
Сделайте ‘.xinitrc’ исполняемым файлом файла.
$ chmod a+x .xinitrc
Вы можете в следующий раз понимать это путем поиска:
$ zypper search --provides /usr/bin/startx
Или при помощи "команды, не найденной" утилита, которую я пропущу здесь.
С другой стороны, можно запустить полный графический менеджер входа в систему:
$ systemctl start xdm.service
Или можно запустить цель вместо сервиса только:
$ systemctl list-units --type=target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
...
graphical.target loaded active active Graphical Interface
...
Затем
$ systemctl запускают graphical.target
При использовании менеджера по входу в систему необходимо смочь выбрать Корицу из списка сессии.
Можно использовать "состояние" вместо запуска для наблюдения, почему это перестало работать в случае, если X не запускается.