Я думаю, что проблема возникает из-за того, что оболочка (в терминале), в которой вы запускаете поставщик, не является оболочкой входа. Сделайте его оболочкой входа в систему следующим образом:
bash --loginUPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки [ f20] применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции regex locate и расширения имени файла оболочки в отношении аргументов locate ...
UPDATE Когда вы вводите locate /bin/b* (обратите внимание, что есть нет кавычек), происходит несколько вещей.
Во-первых, shell-имя-расширение расширяет расширение оболочки charecter * (это потому, что * незащищен, т. е. нет «двойных кавычек»). Результатом этого расширения является список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки. locate затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выводит совпадения.Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Это соответствует только вашим аргументам против полных имен файлов в его базе данных. [D7] Это означает, что он будет соответствовать как /bin/bash, так и /home/user/bin/brackets. У вас есть определенная степень контроля таким образом, но регулярное выражение locate поиск предлагает больше; как и некоторые другие варианты локации.
и Когда вы вводите locate -r "/bin/b.*", происходят разные вещи, чем с простыми args .. ( полностью квалифицированные просто список простых аргументов)
Во-первых, расширение файла shell расширяет расширение charecter оболочки оболочки * (это потому, что * не защищено, т. е. нет «двойных кавычек», ) Кавычки защищают * от расширения файла оболочки. Это означает, что * и точка. теперь shell имя_файла-расширение . В результате это расширение представляет собой список имен файлов. который, возможно, очень длинный ... Этот список передается в locate как много отдельных команд командной строки.Сводка: «расширение оболочки оболочки» совершенно отличается от «regex»
Теперь вернемся к исходному сообщению:
locate обычно перечисляет всю базу данных в stdout, поэтому, чтобы ограничить ее конкретным каталогом, вам необходимо ее отфильтровать ... Вы можете сделать это с помощью опций локализации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... (locate /dir/myfile* - это подшивка оболочки) ...
Из информации locate: -r, --regex
«... (regex) совпадения выполняются против всего имени пути, и поэтому по умолчанию путь будет сопоставлен, если какая-либо его часть совпадает с указанным регулярным выражением. используйте ^ или $ для привязки соответствия в начале или конце пути. "примечание: -i = игнорировать кейс. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но не забудьте оставить параметр regex вне кавычек: ~/my\ regex или -/"my regex"
например. locate -ir ~/".*"la\ bella\ vita - это то же самое, что и locate -ir ~/".*la bella vita", и будет искать весь домашний каталог для «La Bella Vita», происходящий где угодно.
Вы также можете ограничить поиск только файлом '\' , но с помощью -b или --basename .. в этом случае регулярное начало строки ^ применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Locate настолько быстр, что я никогда не использовал find ... и я не использовал nautilus search (слишком медленно)
С помощью «locate», если вы ищете что-то новое, просто запустите sudo updatedb, чтобы обновить базу данных locate ... ( но если вы его недавно добавили, вы, вероятно, знаете, где это:) ....
UPDATE: примечание об использовании опции регулярного выражения locate vs расширение имени файла оболочки в отношении аргументов locate ...
РАСШИРЕНИЕ SHELL FILENAME Когда вы набираете locate / bin / b *
(обратите внимание, что нет кавычек), происходит несколько вещей.
локализовать
столько же аргументов командной строки. найдите
, затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выдает совпадения. Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Он только соответствует вашим аргументам против полностью квалифицированных имен файлов в своей базе данных. Это означает, что он будет соответствовать как / bin / bash
, так и / home / user / bin / brackets
. У вас определенная степень контроля таким образом, но поиск регулярного выражения предлагает больше; как и некоторые другие варианты локации.
ВАРИАНТ REGEX LOCATE Когда вы набираете locate -r "/bin/b.*"
, происходят разные вещи, чем с простыми args .. ( shell-extended-args - всего лишь список простых аргументов)
-r
сообщает найти для обработки вашего аргумента как шаблона регулярного выражения , locate -r "^ / bin / b. *"
создает имена файлов, начинающиеся с / bin / b ... eg2. locate -r ~ / "bin / b. *"
создает имена файлов, начинающиеся с / home / user / bin / b .. Обратите внимание, что ~ / не защищено «кавычками» и поэтому подлежит shell tilde-expansion , который преобразует ~ / в / home / user / Резюме: «расширение оболочки оболочки» совершенно отличается от «regex» [ ! d47]
Вернемся к исходному сообщению:
locate
обычно перечисляет всю базу данных в stdout, поэтому для ограничения ее на конкретный каталог, который вам нужен отфильтруйте его ... Вы можете сделать это через опции локации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... ( locate / dir / myfile *
- это оболочка) ...
Из info locate : -r
, - regex
примечание: -i = игнорировать регистр. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но обязательно оставите ~ / вне кавычек: ~ / my \regex
или - / "мое регулярное выражение"
locate -ir ~ /".* "la \ bella \ vita
- это то же самое, что найти -ir ~ /".* la bella vita"
и будет искать ваш дом каталог для «La Bella Vita», встречающийся где угодно. Вы также можете ограничить поиск только именем файла, но с помощью -b
или - basename
.. в этом случае запуск регулярного выражения, строка ^
применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Найти
так быстро, что я никогда не использовал find
... и не использовал поиск nautilus (слишком медленно)
С помощью 'locate ', если вы ищете что-то новое, просто запустите sudo updatedb
, чтобы обновить базу данных локации ... (но если вы ее недавно добавили, вы, вероятно, знаете, где это :). ...
UPDATE: примечание об использовании опции регулярного выражения locate vs расширение имени файла оболочки в отношении аргументов locate ...
РАСШИРЕНИЕ SHELL FILENAME Когда вы набираете locate / bin / b *
(обратите внимание, что нет кавычек), происходит несколько вещей.
локализовать
столько же аргументов командной строки. найдите
, затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выдает совпадения. Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Он только соответствует вашим аргументам против полностью квалифицированных имен файлов в своей базе данных. Это означает, что он будет соответствовать как / bin / bash
, так и / home / user / bin / brackets
. У вас определенная степень контроля таким образом, но поиск регулярного выражения предлагает больше; как и некоторые другие варианты локации.
ВАРИАНТ REGEX LOCATE Когда вы набираете locate -r "/bin/b.*"
, происходят разные вещи, чем с простыми args .. ( shell-extended-args - всего лишь список простых аргументов)
-r
сообщает найти для обработки вашего аргумента как шаблона регулярного выражения , locate -r "^ / bin / b. *"
создает имена файлов, начинающиеся с / bin / b ... eg2. locate -r ~ / "bin / b. *"
создает имена файлов, начинающиеся с / home / user / bin / b .. Обратите внимание, что ~ / не защищено «кавычками» и поэтому подлежит shell tilde-expansion , который преобразует ~ / в / home / user / Резюме: «расширение оболочки оболочки» совершенно отличается от «regex» [ ! d47]
Вернемся к исходному сообщению:
locate
обычно перечисляет всю базу данных в stdout, поэтому для ограничения ее на конкретный каталог, который вам нужен отфильтруйте его ... Вы можете сделать это через опции локации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... ( locate / dir / myfile *
- это оболочка) ...
Из info locate : -r
, - regex
примечание: -i = игнорировать регистр. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но обязательно оставите ~ / вне кавычек: ~ / my \regex
или - / "мое регулярное выражение"
locate -ir ~ /".* "la \ bella \ vita
- это то же самое, что найти -ir ~ /".* la bella vita"
и будет искать ваш дом каталог для «La Bella Vita», встречающийся где угодно. Вы также можете ограничить поиск только именем файла, но с помощью -b
или - basename
.. в этом случае запуск регулярного выражения, строка ^
применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Найти
так быстро, что я никогда не использовал find
... и не использовал поиск nautilus (слишком медленно)
С помощью 'locate ', если вы ищете что-то новое, просто запустите sudo updatedb
, чтобы обновить базу данных локации ... (но если вы ее недавно добавили, вы, вероятно, знаете, где это :). ...
UPDATE: примечание об использовании опции регулярного выражения locate vs расширение имени файла оболочки в отношении аргументов locate ...
РАСШИРЕНИЕ SHELL FILENAME Когда вы набираете locate / bin / b *
(обратите внимание, что нет кавычек), происходит несколько вещей.
локализовать
столько же аргументов командной строки. найдите
, затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выдает совпадения. Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Он только соответствует вашим аргументам против полностью квалифицированных имен файлов в своей базе данных. Это означает, что он будет соответствовать как / bin / bash
, так и / home / user / bin / brackets
. У вас определенная степень контроля таким образом, но поиск регулярного выражения предлагает больше; как и некоторые другие варианты локации.
ВАРИАНТ REGEX LOCATE Когда вы набираете locate -r "/bin/b.*"
, происходят разные вещи, чем с простыми args .. ( shell-extended-args - всего лишь список простых аргументов)
-r
сообщает найти для обработки вашего аргумента как шаблона регулярного выражения , locate -r "^ / bin / b. *"
создает имена файлов, начинающиеся с / bin / b ... eg2. locate -r ~ / "bin / b. *"
создает имена файлов, начинающиеся с / home / user / bin / b .. Обратите внимание, что ~ / не защищено «кавычками» и поэтому подлежит shell tilde-expansion , который преобразует ~ / в / home / user / Резюме: «расширение оболочки оболочки» совершенно отличается от «regex» [ ! d47]
Вернемся к исходному сообщению:
locate
обычно перечисляет всю базу данных в stdout, поэтому для ограничения ее на конкретный каталог, который вам нужен отфильтруйте его ... Вы можете сделать это через опции локации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... ( locate / dir / myfile *
- это оболочка) ...
Из info locate : -r
, - regex
примечание: -i = игнорировать регистр. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но обязательно оставите ~ / вне кавычек: ~ / my \regex
или - / "мое регулярное выражение"
locate -ir ~ /".* "la \ bella \ vita
- это то же самое, что найти -ir ~ /".* la bella vita"
и будет искать ваш дом каталог для «La Bella Vita», встречающийся где угодно. Вы также можете ограничить поиск только именем файла, но с помощью -b
или - basename
.. в этом случае запуск регулярного выражения, строка ^
применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Найти
так быстро, что я никогда не использовал find
... и не использовал поиск nautilus (слишком медленно)
С помощью 'locate ', если вы ищете что-то новое, просто запустите sudo updatedb
, чтобы обновить базу данных локации ... (но если вы ее недавно добавили, вы, вероятно, знаете, где это :). ...
UPDATE: примечание об использовании опции регулярного выражения locate vs расширение имени файла оболочки в отношении аргументов locate ...
РАСШИРЕНИЕ SHELL FILENAME Когда вы набираете locate / bin / b *
(обратите внимание, что нет кавычек), происходит несколько вещей.
локализовать
столько же аргументов командной строки. найдите
, затем проверяет каждый из этих аргументов на каждый из файлов в своей базе данных и выдает совпадения. Обратите внимание, что «locate» не имеет понятия текущего рабочего каталога. Он только соответствует вашим аргументам против полностью квалифицированных имен файлов в своей базе данных. Это означает, что он будет соответствовать как / bin / bash
, так и / home / user / bin / brackets
. У вас определенная степень контроля таким образом, но поиск регулярного выражения предлагает больше; как и некоторые другие варианты локации.
ВАРИАНТ REGEX LOCATE Когда вы набираете locate -r "/bin/b.*"
, происходят разные вещи, чем с простыми args .. ( shell-extended-args - всего лишь список простых аргументов)
-r
сообщает найти для обработки вашего аргумента как шаблона регулярного выражения , locate -r "^ / bin / b. *"
создает имена файлов, начинающиеся с / bin / b ... eg2. locate -r ~ / "bin / b. *"
создает имена файлов, начинающиеся с / home / user / bin / b .. Обратите внимание, что ~ / не защищено «кавычками» и поэтому подлежит shell tilde-expansion , который преобразует ~ / в / home / user / Резюме: «расширение оболочки оболочки» совершенно отличается от «regex» [ ! d47]
Вернемся к исходному сообщению:
locate
обычно перечисляет всю базу данных в stdout, поэтому для ограничения ее на конкретный каталог, который вам нужен отфильтруйте его ... Вы можете сделать это через опции локации.
Вы можете использовать возможность регулярного выражения locate, а не просто shell-globbing ... ( locate / dir / myfile *
- это оболочка) ...
Из info locate : -r
, - regex
примечание: -i = игнорировать регистр. , , , , -r = регулярное выражение. , , , , ~ / будет расширяться оболочкой в / home / user (когда ~ / не находится в кавычках). , , , , '\' (baskslash + space, no quotes) - буквальное пространство (чтобы избежать расширения оболочки). Вы можете поместить строку в кавычки, но обязательно оставите ~ / вне кавычек: ~ / my \regex
или - / "мое регулярное выражение"
locate -ir ~ /".* "la \ bella \ vita
- это то же самое, что найти -ir ~ /".* la bella vita"
и будет искать ваш дом каталог для «La Bella Vita», встречающийся где угодно. Вы также можете ограничить поиск только именем файла, но с помощью -b
или - basename
.. в этом случае запуск регулярного выражения, строка ^
применяется только к базовому имени ...
Я чаще всего использую locate -bir
PS .. Найти
так быстро, что я никогда не использовал find
... и не использовал поиск nautilus (слишком медленно)
С помощью 'locate ', если вы ищете что-то новое, просто запустите sudo updatedb
, чтобы обновить базу данных локации ... (но если вы ее недавно добавили, вы, вероятно, знаете, где это :). ...
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless
Изменить: другой ответ лучше, я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec. Я раньше не пробовал, но он работает. Для вашего примера это будет locate /home/tim/science/*math*
Возможно, вам захочется посмотреть на команду find, а не на locate для такого поведения. Синтаксис будет find rootforsearch -name filenamepattern -print. В этом случае ваш пример потребует find /home/tim/science -name *math* -print. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Вы можете использовать locate /rootpath/*filenamespec
.I раньше не пробовал, но он работает. Для вашего примера это будет locate / home / tim / science / * math *
Возможно, вы захотите посмотреть на команду find
чем найти
для такого поведения. Синтаксисом будет find rootforsearch -name filenamepattern -print
. В этом случае ваш пример потребует find / home / tim / science -name * math * -print
. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ найдите меньше | grep ^ / bin / bin / bzless / bin / less / bin / lessecho / bin / lessfile / bin / lesskey / bin / lesspipe / bin / zless
Изменить: другой ответ лучше , Я не знал, что вы можете передать шаблон для поиска.
Вы можете использовать locate /rootpath/*filenamespec
.I раньше не пробовал, но он работает. Для вашего примера это будет locate / home / tim / science / * math *
Возможно, вы захотите посмотреть на команду find
чем найти
для такого поведения. Синтаксисом будет find rootforsearch -name filenamepattern -print
. В этом случае ваш пример потребует find / home / tim / science -name * math * -print
. Не так быстро, как найти, поскольку нет базы данных для поиска ... она фактически ищет файловую систему. Существует множество опций, которые вы можете использовать, кроме печати, если вы собираетесь на самом деле что-то делать с файлом.
Протяните его через grep, как это
$ найдите меньше | grep ^ / bin / bin / bzless / bin / less / bin / lessecho / bin / lessfile / bin / lesskey / bin / lesspipe / bin / zless
Изменить: другой ответ лучше , Я не знал, что вы можете передать шаблон для поиска.
Протяните его через grep, как это
$ найдите меньше | grep ^ / bin / bin / bzless / bin / less / bin / lessecho / bin / lessfile / bin / lesskey / bin / lesspipe / bin / zless
Изменить: другой ответ лучше , Я не знал, что вы можете передать шаблон для поиска.