Вы вызываете sed из bash, поэтому вы можете использовать bash, чтобы избежать повторения классов символов. Все внутри двойных кавычек расширяется:
rwx='\([r-]\)\([w-]\)\([x-]\)'
ls -la | sed "s/^\([d-]\)$rwx$rwx$rwx/`echo -e \"$EMG\1$EMY\2\3\4$EMR\5\6\7$EMC\8\9\10$NONE\"`/"
Но я не думаю, что поиск drwx совершенно прав. Что делать, если файл является символической ссылкой? Это начнется с l. И если это «липкий» каталог (например, /tmp), это закончится с t вместо x и т. Д.
Почему бы просто
ls -la | sed "s/^\(.\)\(...\)\(...\)\(...\)/`echo -e \"$EMG\1$EMY\2$EMR\3$EMC\4$NONE\"`/""
Наконец, если вы измените способ объявления своих цветов, вам не понадобится echo -e:
domagic() {
local NONE=$'\033[0m' # unsets color to term's fg color
# regular colors
local K=$'\033[0;30m' # black
local R=$'\033[0;31m' # red
local G=$'\033[0;32m' # green
local Y=$'\033[0;33m' # yellow
local B=$'\033[0;34m' # blue
local M=$'\033[0;35m' # magenta
local C=$'\033[0;36m' # cyan
local W=$'\033[0;37m' # white
# emphasized (bolded) colors
local EMK=$'\033[1;30m'
local EMR=$'\033[1;31m'
local EMG=$'\033[1;32m'
local EMY=$'\033[1;33m'
local EMB=$'\033[1;34m'
local EMM=$'\033[1;35m'
local EMC=$'\033[1;36m'
local EMW=$'\033[1;37m'
# background colors
local BGK=$'\033[40m'
local BGR=$'\033[41m'
local BGG=$'\033[42m'
local BGY=$'\033[43m'
local BGB=$'\033[44m'
local BGM=$'\033[45m'
local BGC=$'\033[46m'
local BGW=$'\033[47m'
#do magic here
ls -la | sed "s/^\(.\)\(...\)\(...\)\(...\)/$EMG\1$EMY\2$EMR\3$EMC\4$NONE/"
}
Эти инструкции выглядят точными: http://www.webupd8.org/2016/08/how-to-install-and-configure-bumblebee.html
В моем случае, потому что я уже было в основном работает, я сделал это:
sudo add-apt-repository ppa:bumblebee/testing
sudo apt-get update
Использовать Synaptic для обновления Bumblebee, сохраняя мою существующую / etc / bumblebee /bumblebee.conf Добавьте следующие строки в /etc/bumblebee/bumblebee.conf # Xorg binary to run
XorgBinary=/usr/lib/xorg/Xorg
Сразу после строк # Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d
Затем сохраните и закройте. Перезагрузите компьютер, на всякий случай. Убедитесь, что все действительно работает с помощью optirun glxinfo
И видя, что он выводит что-то отличное от предыдущего, даже если он используется дважды в строке Заключение этого отчета об ошибке было тем, что привело меня к что это было правильное решение на данный момент: http://www.webupd8.org/2016/08/how-to-install-and-configure-bumblebee.html
У PPA есть довольно устрашающий предупреждающий знак:
Если вы не разработчик, маловероятно, чтобы вы хотите использовать этот PPA. Используйте ppa: bumblebee / stable, если вы просто обычный пользователь. В этом PPA может нарушить работу вашей системы.Однако, похоже, Xenial (16.04) у шмеля / стабильного нет, поэтому это не вариант.
Как вы сказали в своем собственном ответе, вы можете добавить тестирование ppa. Второй способ - просто удалить xserver-xorg-legacy и использовать стабильный ppa:
Сначала удалите xserver-xorg-legacy, не касаясь зависимых пакетов:
sudo dpkg -r --force-depends xserver-xorg-legacy
Allright - Шмель снова работает. Но apt даст вам ошибки из-за отсутствия зависимостей. Это можно устранить, создав фиктивный пакет для xserver-xorg-legacy, используя equivs. Сначала мы создаем файл конфигурации с помощью equivs-control:
equivs-control xserver-xorg-legacy
Это создаст конфигурационный файл для нового пакета в текущем каталоге. Вы можете использовать nano для редактирования этого:
nano xserver-xorg-legacy
Содержимое файла должно выглядеть так:
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2
Package: xserver-xorg-legacy
Version: 2:1.18.4-1ubuntu0.2
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Multi-Arch: <one of: foreign|same|allowed>
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
# <more pairs, if there's more than one file to include. Notice the starting space>
Description: Dummy package for nvidia-375.66 update
This Package does nothing... it just exists...
Важно, что на данный момент это имя пакета:
Package: xserver-xorg-legacy
И что вам нужно поставить версию, так что 2: 1.18.4-0ubuntu0.2 становится 2: 1.18.4-1ubuntu0.2
Если вы закончили с config вам нужно создать пакет из вашего config:
equivs-build xserver-xorg-legacy
Это создаст файл пакета с указанным именем и версией. В моем случае это был xserver-xorg-legacy_1.18.4-1ubuntu0.2_all.deb
Хорошо, давайте его установим с помощью dpkg:
sudo dpkg -i xserver-xorg-legacy_1.18.4-1ubuntu0.2_all.deb
Thats it ...
xserver-xorg-legacy больше ничего не делает, и apt довольна отсутствующими зависимостями.
Удача; -)
Эти инструкции выглядят точными: http://www.webupd8.org/2016/08/how-to-install-and-configure-bumblebee.html
В моем случае, потому что я уже было в основном работает, я сделал это:
sudo add-apt-repository ppa:bumblebee/testing
sudo apt-get update
Использовать Synaptic для обновления Bumblebee, сохраняя мою существующую / etc / bumblebee /bumblebee.conf Добавьте следующие строки в /etc/bumblebee/bumblebee.conf # Xorg binary to run
XorgBinary=/usr/lib/xorg/Xorg
Сразу после строк # Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d
Затем сохраните и закройте. Перезагрузите компьютер, на всякий случай. Убедитесь, что все действительно работает с помощью optirun glxinfo
И видя, что он выводит что-то отличное от предыдущего, даже если он используется дважды в строке Заключение этого отчета об ошибке было тем, что привело меня к что это было правильное решение на данный момент: http://www.webupd8.org/2016/08/how-to-install-and-configure-bumblebee.html
У PPA есть довольно устрашающий предупреждающий знак:
Если вы не разработчик, маловероятно, чтобы вы хотите использовать этот PPA. Используйте ppa: bumblebee / stable, если вы просто обычный пользователь. В этом PPA может нарушить работу вашей системы.Однако, похоже, Xenial (16.04) у шмеля / стабильного нет, поэтому это не вариант.
Как вы сказали в своем собственном ответе, вы можете добавить тестирование ppa. Второй способ - просто удалить xserver-xorg-legacy и использовать стабильный ppa:
Сначала удалите xserver-xorg-legacy, не касаясь зависимых пакетов:
sudo dpkg -r --force-depends xserver-xorg-legacy
Allright - Шмель снова работает. Но apt даст вам ошибки из-за отсутствия зависимостей. Это можно устранить, создав фиктивный пакет для xserver-xorg-legacy, используя equivs. Сначала мы создаем файл конфигурации с помощью equivs-control:
equivs-control xserver-xorg-legacy
Это создаст конфигурационный файл для нового пакета в текущем каталоге. Вы можете использовать nano для редактирования этого:
nano xserver-xorg-legacy
Содержимое файла должно выглядеть так:
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2
Package: xserver-xorg-legacy
Version: 2:1.18.4-1ubuntu0.2
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Multi-Arch: <one of: foreign|same|allowed>
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
# <more pairs, if there's more than one file to include. Notice the starting space>
Description: Dummy package for nvidia-375.66 update
This Package does nothing... it just exists...
Важно, что на данный момент это имя пакета:
Package: xserver-xorg-legacy
И что вам нужно поставить версию, так что 2: 1.18.4-0ubuntu0.2 становится 2: 1.18.4-1ubuntu0.2
Если вы закончили с config вам нужно создать пакет из вашего config:
equivs-build xserver-xorg-legacy
Это создаст файл пакета с указанным именем и версией. В моем случае это был xserver-xorg-legacy_1.18.4-1ubuntu0.2_all.deb
Хорошо, давайте его установим с помощью dpkg:
sudo dpkg -i xserver-xorg-legacy_1.18.4-1ubuntu0.2_all.deb
Thats it ...
xserver-xorg-legacy больше ничего не делает, и apt довольна отсутствующими зависимостями.
Удача; -)