Почему abiword говорит пользователям получить жизнь?

grep usa expresiones regulares , no shell globs .

La expresión regular 0000:00:*.0/usb1/authorized_defaultcoincide con la cadena 0000:00+ cero o más dos puntos + cualquier carácter + 0/usb1/authorized_default.

Si intercambia el *y el ., coincidirá con cualquier cadena que contenga 0000:00seguida de 0/usb1/authorized_default.(.*coincide con cualquier número(*)de cualquier carácter(.).)

Del mismo modo, usb*/coincidirá con us/, usb/, usbbb/, etc., pero no con usb1.


En realidad, también está el problema de que el *sin comillas en el argumento de grepes tomado como un carácter global por el shell , incluso antes de que greplo vea. Entonces, si hay archivos que coincidirían con 0000\:00\:*.0/usb*/authorized_defaultcomo un patrón global, eso afectaría la cadena que va a grep. Múltiples coincidencias irían como múltiples argumentos, y greptomaría las que siguen a la primera como nombres de archivo.

Ponga comillas alrededor de cualquier expresión regular en la línea de comando para evitar eso.


En cualquier caso, ni siquiera necesita el grepaquí, como dice @Kusalananda. La opción -namea findse puede usar para hacer coincidir los nombres de archivo con un patrón global. Al menos algunas implementaciones findtambién tienen la opción -regexpara comparar nombres de archivo con expresiones regulares.


También hay una serie de variantes de expresiones regulares, consulte:¿Por qué mi expresión regular funciona en X pero no en Y?

2
23.05.2019, 15:43
1 ответ

AbiWord использует программные библиотеки с именами Clutter , GTK+ и Clutter -GTK. Последняя библиотека склеивает две предыдущие вместе. Одной из его необходимых частей является вызов функции с именем gtk_clutter_init(). Это возвращает код ошибки, если инициализация не удалась, как и в случае отсутствия дисплея.

Программы, которые игнорируют результат вызова этой функции и продолжают работу независимо от потенциальной ошибки, при компиляции выдают предупреждения компилятора. Программисты решают эту проблему по-разному. Колин Уотсон заставил GNOME Shell выдать довольно мягкое сообщение о фатальной ошибке . Юбер Фигьер заставил AbiWord передать сообщение, которое вы видите перед собой. Ни одно из сообщений не является действительно полезным для конечного пользователя, которому действительно нужно сообщить, что существует какая-то проблема с инициализацией графического интерфейса, и, вероятно, он не будет знать, на что ссылается «Беспорядок».

Интересно, что согласно вашему сообщению об ошибке код результата равен нулю. Согласно документу результатом ошибки должно быть не -нулевое отрицательное целое число. На самом деле существует недокументированное «неизвестное» состояние ошибки, которое не является ни успехом (, имеющим значение 1 ), ни кодом ошибки с отрицательным числом; который возникает из-за того, что библиотечная функцияgtk_init_check()не может инициализировать графический интерфейс.

7
27.01.2020, 21:53

Теги

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