Узнайте то, что управляет, чтобы я в последний раз работал, который запускает определенный путь?

locate -e0 '*/pg_type.h' | xargs -r0 cat

locate pg_type.h нашел бы все файлы с pg_type.h в их пути (так, например, если был a rpg_type.horn каталог, Вы закончили бы тем, что отобразили все файлы там).

Без -0 вывод locate не может быть выполнен последующую обработку, потому что файлы разделяются символами новой строки, в то время как новая строка является совершенно допустимым символом в имени файла.

cat без аргументов пишет в stdout, что это читает из stdin, таким образом, locate | cat совпал бы с locate, cat просто передал бы вывод locate вперед. То, в чем Вы нуждаетесь, должно передать список файлов как аргументы cat.

Это что xargs обычно для: преобразуйте поток данных в список аргументов. -r не должен звонить cat если нет никакого входа. Без -0 (который как -r не является стандартным, но не найден на многих реализациях, по крайней мере, они, где xargs полезен для чего-либо), xargs просто искал бы слова в его входе для преобразования в аргументы, где слова являются разделенным пробелом и где обратная косая черта, одинарные и двойные кавычки могут использоваться для выхода из тех разделителей, так обычно не формат locate использование к именам дисплейного файла.

Вот почему мы используем -0 опция для обоих locate и xargs который использует символ NUL (который является единственным символом, не позволенным в пути к файлу) разделить имена файлов.

Также отметьте это locate не стандартная команда, и там существуйте большое количество различных реализаций с различными версиями этого и различными вариантами и поведениями. Код выше применяется, по крайней мере, к относительно последним версиям GNU locate и mlocate реализации, которые наиболее распространены в основанных на Linux операционных системах, по крайней мере.

8
12.03.2014, 01:36
7 ответов
[114007] Если искать в истории по [114400]Ctrl[114401]+[114402]r[114403] и набрать несколько букв команды и [114404]не[114405] нажимая [114406] Enter[114407] а нажимая [114408]→[114409], то команда появится и не будет выполнена. Другая альтернатива:

Этот чит-лист [114410]хороший[114411] истории также может помочь.[114010].

18
27.01.2020, 20:08
[114011] Вы можете показать последний запуск команды, добавив [114412]:p[114413] к [114414]!![114415]:

  1. Если вы хотите показать последний запуск команды с определенным именем, используйте одно восклицание:
9
27.01.2020, 20:08
[114322]Каждый ответ здесь, насколько я могу судить, не переносится. Для портативного варианта рассмотрим POSIX-гарантированный [114803]fc[114804]:[12156]-e[12157] editor Для редактирования команд используйте редактор с именем [12158] editor[12159]. Строка редактора - это имя утилиты, в которой можно осуществлять поиск по переменной [12160]PATH[12161]... Значение в переменной [12162]FCEDIT[12163]должно использоваться по умолчанию, когда [12164]-e[12165]не указано. Если [12166]FCEDIT[12167] является нулевым или неустановленным, в качестве редактора используется [114979]ed[114980].[12168]-l[12169](The letter ell.)[114984] Перечислите команды, а не вызывайте по ним редактор. Команды должны записываться в последовательности, указанной первым и последним операндами, на которые влияет [12170]-r[12171], причем каждой команде предшествует номер команды.[12172]-n[12173]-подавление номеров команд при перечислении с помощью [12174]-l[12175]. [12176]-r[12177] Поменять порядок следования команд, перечисленных [114993](с помощью [115057]-l[115058])[114994] или отредактированных [114995](ни с помощью [115059]-l[115060], ни с помощью [115061]-s[115062])[114996]. [12178]-s[12179]-s[Повторное выполнение команды без обращения к редактору.[12180]OPERANDS[12181]first[12182], [12183]last[12184]Select the commands to list or edit. Количество предыдущих команд, к которым можно получить доступ, должно определяться значением переменной [12185]HISTSIZE[12186]. Значение первой или последней или обеих должно быть одним из следующих:[114818]. [114819][115007][115073][+или-] номер[12187] положительное [115009](или [115075] отрицательное[115076])[115010], представляющее номер команды; номера команд могут отображаться с помощью опции [12188]-l[12189].... Например, [12190]-1 - это непосредственно предшествующая команда[12191].... [12192] Когда для перечисления команд используется вариант [12193]-l[12194], формат каждой команды в списке должен быть следующим:[12195] Если указаны оба варианта [12196]-l[12197] и [12198]-n[12199], то формат каждой команды должен быть следующим: [12200] Если [12201] состоит из нескольких строк, строки после первой будут отображаться как:[12202], но не забудьте использовать [12203]-l[12204]или [12205]-e[12206], если вы [12207]ТОЛЬКО [12208]хотите видеть/редактировать свои команды. По умолчанию [114833]fc[114834] откроет список команд, запрошенных в [12209]FCEDIT[12210] (обратите внимание, что он отличается от вашей переменной окружения [115031]EDITOR[115032])[114838], и когда [12211]FCEDIT[12212] выйдет из команды, [114841]fc[114842] выполнит отредактированные команды. В любом случае, ответом на этот вопрос может быть:[12214]Или без номеров строк:[12215]Или последние пять команд в обратном порядке:[12216]На пейджере:[12217]Для последнего вызова [114843]fc[114844]:[12218]
4
27.01.2020, 20:08
[114015] нажмите [114416] Ctrl
  • r[114419] и начните вводить команду, которую хотите видеть. bash будет постепенно завершен. Когда вы будете удовлетворены, нажмите [114420]Enter[114421] для повторного запуска или [114422]Ctrl
  • g[114425] для прерывания.[114016].
  • 2
    27.01.2020, 20:08
    [114062] Если вы хотите, чтобы последняя команда использовала:

    Если вы хотите иметь возможность делать это несколько раз, поместите пробел перед [114486] историей [114487] или используйте:

    Если вы просто хотите увидеть последнюю команду, начинающуюся с шаблона [114488]xyz[114489]:

    Но это не сработает, если шаблон будет исходными символами "истории", и тогда вам понадобится что-то вроде:

    2
    27.01.2020, 20:08

    А затем можно ввести какой-нибудь текст, а затем [114534]Alt-p[114535] для поиска последних команд, которые начинают те же самые (и [114536]Alt-p[114537], [114538]Alt-n[114539] для их циклического прохождения туда-сюда).

    (По умолчанию эти клавиши привязываются к аналогичным виджетам в [114540]zsh[114541])[114101]

    .
    1
    27.01.2020, 20:08
    [114184] Добавьте эти строки в файл [114660]~/.inputrc[114661]:

    Затем [114662] источник ~/.inputrc[114663] в оболочку (или просто перезапустите оболочку).

    Теперь Вы можете набрать несколько букв команды, а затем использовать стрелки вверх/вниз для перемещения по командам, которые начинаются с этих нескольких букв. [114189]

    0
    27.01.2020, 20:08

    Теги

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