Результат compgen содержит цветовые коды терминалов, потому что вы поместили их туда. Вы должны использовать alias ls='ls --color=auto'
, чтобы получить цвета только тогда, когда ls
печатает на терминал, а не когда вывод используется другой командой.
Но и без псевдонима compgen -W "$(ls /someDir/)"
не работает. Он вызывает ls
для создания списка имен файлов, но вывод команды представляет собой строку, а не список. compgen
разбивает вывод ls
на пробелы, что не удается, если какое-либо из имен файлов содержит символ пробела. Вместо этого вам нужно создать список имен файлов и удалить префикс каталога. Не проверено:
files=(/someDir/*)
if [[ -e ${files[0]} -o -L ${files[0]} ]]; then
for f in "${files[@]}"; do
compgen -- "${f#/someDir/}"
done
fi
Вы не получите цвета. Я не думаю, что bash способен раскрашивать завершения. Система завершения должна контролировать ее отображение на терминале, вы не можете прокрасться управляющими символами в то, что отображается, и надеяться не запутать систему завершения. Если вам нужна оболочка с приятными функциями , такими как цветные дополнения, используйте zsh(или fish , если вам не нравится конфигурируемость ).
Файлы перевода хранятся в скомпилированной форме(.mo
)в папке /usr/share/locale
. Те, что для немецкого языка, находятся в /usr/share/locale/de/LC_MESSAGES
.
Эти файлы не предназначены для прямого изменения. Вы можете декомпилировать и перекомпилировать их с помощью инструментов gettext
msgunfmt
и msgfmt
. Еще лучше, если вы загрузите исходный код для любого компонента GNOME, в котором отсутствует ваше сообщение, отредактируете соответствующий файл .po
и пересоберете файл .mo
, вы также сможете отправить исправление и, возможно, включить свой перевод. в будущих версиях...