Построение команд grep с find, как и в ответе Занны, является очень надежным, универсальным и переносимым способом (см. также ответ sudodus) , И muru опубликовал отличный подход к использованию опции grep --include. Но если вы хотите использовать только команду grep и вашу оболочку, есть другой способ сделать это: вы можете заставить оболочку выполнить необходимую рекурсию:
shopt -s globstar # you can skip this if you already have globstar turned on
grep -H 'pattern' **/file.txt
-H flag grep показывает имя файла, даже если найден только один соответствующий файл. Вы можете передать флаги -a, -i и -n (из вашего примера) на grep, если это то, что вам нужно. Но не используйте -r или -R при использовании этого метода. Это оболочка, которая рекурсирует каталоги при расширении шаблона glob, содержащего **, а не grep.
Эти инструкции относятся к оболочке Bash. Bash - это стандартная пользовательская оболочка в Ubuntu (и большинство других операционных систем GNU / Linux), поэтому, если вы находитесь на Ubuntu и не знаете, что такое ваша оболочка, это почти наверняка Bash. Хотя популярные оболочки обычно поддерживают перемещение по каталогам **, они не всегда работают одинаково. Для получения дополнительной информации см. Отличный ответ Стефана Хазеласа «Результаты ls *, ls ** и ls *** на Unix.SE.
Включение Построить команды grep с помощью find, как и в ответе Zanna's bash shell, делает пути соответствия **, содержащие разделитель каталогов (/). Это, таким образом, рекурсивный глобус. В частности, как ответ sudodus объясняет:
Когда опция оболочки globstar включена, а * используется в контексте расширения пути, два соседних * s, используемые как один шаблон, будут соответствовать все файлы и ноль или более каталогов и подкаталогов. Если за ним следует /, два смежных * s будут соответствовать только каталогам и подкаталогам.Вы должны быть осторожны с этим, так как вы можете запускать команды, которые изменяют или удаляют гораздо больше файлов, чем вы планируете, особенно если вы пишете **, когда хотите писать *. (Это безопасно в этой команде, которая не меняет никаких iles.) [F24] отключает опцию оболочки globstar.
find гораздо более универсален, чем globstar. Все, что вы можете сделать с globstar, вы можете сделать с помощью команды find. Мне нравится globstar, и иногда это более удобно, но globstar не является альтернативой shell для find.
Вышеуказанный метод не входит в каталоги, чьи имена начинаются с [F29]. Иногда вы не хотите переписывать такие папки, но иногда это происходит.
Как и в обычном glob, оболочка строит список всех совпадающих путей и передает их в качестве аргументов вашей команды (grep ) вместо самого глоба. Если у вас так много файлов с именем file.txt, что результирующая команда будет слишком длинной для выполнения системы, тогда вышеописанный метод завершится с ошибкой. На практике вам понадобится (по крайней мере) тысячи таких файлов, но это может произойти.
Методы, которые используют find, не подлежат этому ограничению, потому что:
Способ Zanna строит и запускает команду grep с потенциально многими аргументами пути. Но если найдено больше файлов, чем может быть указано в одном пути, действие + -terminated -exec запускает команду с некоторыми из путей, затем запускает ее снова с несколькими путями и так далее. В случае grep для строки в нескольких файлах это приводит к правильному поведению. Подобно описанному здесь методу globstar, он печатает все соответствующие строки, причем пути к ним добавляются. Способ sudodus запускает grep отдельно для каждого найденного file.txt. Если файлов много, это может быть медленнее, чем некоторые другие методы, но это работает. Этот метод находит файлы и печатает их пути, за которыми следуют соответствующие строки, если они есть. Это другой формат вывода из формата, созданного моим методом, Zanna's и muru's.. Одна из непосредственных преимуществ использования globstar - по умолчанию на Ubuntu grep будет выдавать цветной вывод. Но вы можете заставить оболочку выполнить необходимую рекурсию .
Учетные записи пользователей в Ubuntu создаются с помощью опции shell , которая делает grep действительно запущенным [ f43] (запустите alias grep, чтобы увидеть). Хорошо, что псевдонимы muru опубликовали отличный подход к использованию опции grep --include , но это означает, что если вы хотите, чтобы find вызывал grep с помощью [ f47], вам придется писать его явно. Например:
find . -name file.txt -exec grep --color=auto -H 'pattern' {} +
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!
Похоже, вы тоже разместили это на форумах Ubuntu ... Я не уверен, есть ли правильное решение этого вопроса. Очевидно одно, что нам нужно поработать с файлами конфигурации lightdm в / etc / lightdm, чтобы сделать это, по крайней мере, до некоторой степени.
Я пробовал возиться с файлом users.conf, но пока не повезло в этом. Я пробовал это с гостем, но может быть вам повезет с другими пользователями, особенно если у этого пользователя, которого вы хотите иметь по умолчанию, больше прав и доступа, чем у других.
Я сделал это :
Вот так выглядел мой оригинальный файл users.conf:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then #LightDMwill
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
#
[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin
Я попытался изменить его на что-то вроде этого:
# User accounts configuration
#
# NOTE: If you have AccountsService installed on your system, then LightDM will
# use this instead and these settings will be ignored
#
# minimum-uid = Minimum UID required to be shown in greeter
# hidden-users = Users that are not shown to the user
# hidden-shells = Shells that indicate a user cannot login
[UserAccounts]
uid < 1001
IncludeAll = true
Include = myuserhere
hidden-users=guest Guest
UID для моей учетной записи был 1000, поэтому я использовал там 1001 ...
Вы можете использовать команду
id
, чтобы проверить свой собственный uid, и, возможно, вы можете установить настройки в файле тоже такие:
uid=1000
Я не уверен, сработает ли это.
Однако вышеприведенная конфигурация не сработала. Я думаю, что нам нужно немного подправить, чтобы получить то, что вы хотите. Пожалуйста, посмотрите на этот вопрос, чтобы получить представление о том, как настроить эти файлы: Как я могу изменить пользователя по умолчанию, показанного на экране входа в систему?
Приведенный выше вопрос касается gdm, а не Lightdm, но настройки должны быть очень похожи. Итак, вы сами после этого. Перед изменением см. Это руководство: http://people.ubuntu.com/~robert-ancell/lightdm/reference/
Кроме того, обязательно сделайте резервную копию из этих файлов conf, потому что работа с lightdm иногда убивает ваше время лучше, чем что-либо еще. Убедитесь, что вы изменили CLI, используя Alt + F2 / F1 и т. Д., И восстановите резервную копию, если вы все сломаете.
Удачи!